Commit f3ed8f51763de3e6a2442d646d63a5f361637904

Authored by xu
1 parent 3a892ee0
Exists in master

app-wx(v0.1.0 build 8)

F 添加评论问题
app-wx/config/params.php
1 1 <?php
2 2 return [
3 3 'adminEmail' => 'admin@example.com',
4   - 'VERSION' => 'v0.1.0 build 7', // 当前发布版本号: v0.1.0 是版本号 | build 1 是编译次数
  4 + 'VERSION' => 'v0.1.0 build 8', // 当前发布版本号: v0.1.0 是版本号 | build 1 是编译次数
5 5 ];
... ...
app-wx/controllers/BaseController.php
... ... @@ -80,11 +80,11 @@ class BaseController extends AppController
80 80 private function getWxArray()
81 81 {
82 82 $wxArray = [
83   - 'name' => '配件维修',
84   - 'intro' => '报修',
  83 + 'name' => '汽车维修店系统',
  84 + 'intro' => '汽车维修店系统',
85 85 'logo_path' => '',
86   - 'subscribe_title' => '报修',
87   - 'subscribe_desc' => '报修',
  86 + 'subscribe_title' => '汽车维修店系统',
  87 + 'subscribe_desc' => '汽车维修店系统',
88 88 'subscribe_img' => '',
89 89 'subscribe_url' => '',
90 90 'appid' => 'appid',
... ...
app-wx/modules/order/controllers/CustomerController.php
... ... @@ -2,6 +2,9 @@
2 2  
3 3 namespace app\wx\modules\order\controllers;
4 4  
  5 +use common\helpers\Utils;
  6 +use domain\order\RepairOrderRate;
  7 +use domain\order\RepairOrderRateRepository;
5 8 use Yii;
6 9  
7 10  
... ... @@ -34,29 +37,36 @@ class CustomerController extends CustomerBaseController
34 37 $orderUUId = $this->request->post('id');
35 38 $md5Mobile = $this->request->post('sn');
36 39  
37   - $orderModel = RepairOrderRepository::findOne(['uuid' => $orderUUId]);
  40 + $orderModel = RepairOrderRepository::findOne(['short_uuid' => $orderUUId]);
38 41 if (empty($orderModel)) {
39 42 $e->message = '找不到该订单';
40 43 return $this->renderJson($e);
41 44 }
42   - $brokenImageModels = RepairOrderRepository::findOrderImageAll(['repair_order_id' => $orderModel->id]);
  45 + $orderId = $orderModel->id;
  46 + $brokenImageModels = RepairOrderRepository::findOrderImageAll(['repair_order_id' => $orderId]);
43 47 $brokenImages = [];
44 48 $baseURL = Yii::$app->request->getHostInfo();
45 49 foreach($brokenImageModels as $k => $v) {
46 50 $brokenImages[] = $baseURL.'/'.$v->image_path;
47 51 }
48 52 $totalPrice = $orderModel->order_price;
49   - $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderModel->id]);
  53 + $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderId]);
50 54 $repairPlans = [];
51 55 foreach($rPlans as $k => $plan) {
52 56 $repairPlans[] = ['plan' => $plan['repair_plan'] ,'price' => $plan['price']];
53 57 }
54   - $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderModel->id]);
  58 + $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderId]);
55 59 $finishImages = [];
56 60 foreach($fImages as $k => $image) {
57 61 $finishImages[] = $baseURL.'/'.$image['image_path'];
58 62 }
  63 + $comments = [];
59 64 $hasComment = false;
  65 + $rateModel = RepairOrderRateRepository::findOne(['repair_order_id' => $orderId]);
  66 + if ($rateModel) {
  67 + $hasComment = true;
  68 + $comments = ['starTxt' => RepairOrderRate::starLabel($rateModel->star_count), 'comment' => $rateModel->comment];
  69 + }
60 70  
61 71 $e->success = true;
62 72 $e->item = [
... ... @@ -70,6 +80,7 @@ class CustomerController extends CustomerBaseController
70 80 'orderDateTime' => date('Y-m-d H:00', $orderModel->created_at),
71 81 'status' => RepairOrderStatus::getEnLabel($orderModel->status),
72 82 'hasComment' => $hasComment,
  83 + 'comments' => $comments,
73 84 'brokenImages' => $brokenImages,
74 85 'repairPlans' => $repairPlans,
75 86 'totalPrice' => $totalPrice,
... ... @@ -88,10 +99,47 @@ class CustomerController extends CustomerBaseController
88 99 $e->success = false;
89 100 $e->message = 'ok';
90 101 $star = $this->request->post('star');
  102 + $orderUUId = $this->request->post('id');
91 103 $comment = $this->request->post('comment');
  104 + $userId = $this->getUserId();
  105 + $orderModel = RepairOrderRepository::findOne(['short_uuid' => $orderUUId]);
  106 + if (empty($orderModel)) {
  107 + $e->message = '找不到订单';
  108 + return $this->renderJson($e);
  109 + }
  110 + if (RepairOrderStatus::WORKING == $orderModel->status) {
  111 + $e->message = '订单还在维修中';
  112 + return $this->renderJson($e);
  113 + }
  114 +
  115 + if(mb_strlen($comment) > 200) {
  116 + $e->message = '评论只能200字内';
  117 + return $this->renderJson($e);
  118 + }
  119 + $rateModel = RepairOrderRateRepository::findOne(['repair_order_id' => $orderModel->id]);
  120 + if ($rateModel) {
  121 + $e->message = '已经评价过了';
  122 + return $this->renderJson($e);
  123 + }
  124 + if ($userId > 0) {
  125 + $e->message = '维修厂人员不能评论';
  126 + return $this->renderJson($e);
  127 + }
  128 + $items = [
  129 + 'ip_address' => Utils::clientIp(),
  130 + 'user_id' => 0,
  131 + 'star_count' => $star,
  132 + 'repair_order_id' => $orderModel->id,
  133 + 'comment' => $comment,
  134 + ];
  135 + $rateModel = RepairOrderRate::create($items);
  136 + if($rateModel) {
  137 + $e->success = false;
  138 + $e->message = '提交成功';
  139 + } else {
  140 + $e->message = '提交评论失败';
  141 + }
92 142  
93   - //echo $star.'_'.$comment;
94   - $e->success = true;
95 143 return $this->renderJson($e);
96 144 }
97 145  
... ...
app-wx/modules/order/controllers/DefaultController.php
... ... @@ -2,6 +2,8 @@
2 2  
3 3 namespace app\wx\modules\order\controllers;
4 4  
  5 +use domain\order\RepairOrderRate;
  6 +use domain\order\RepairOrderRateRepository;
5 7 use Yii;
6 8 use yii\helpers\HtmlPurifier;
7 9 use yii\base\Exception;
... ... @@ -71,7 +73,7 @@ class DefaultController extends BaseController
71 73 'predict_fault' => $preRepair,
72 74 'predict_price' => $predictPrice,
73 75 'predict_finish_time' => strtotime($finishDate.':00:00'),
74   - 'status' => RepairOrderStatus::REPAIRING,
  76 + 'status' => RepairOrderStatus::WORKING,
75 77 ];
76 78 $tran = Yii::$app->db->beginTransaction();
77 79 try {
... ... @@ -110,13 +112,13 @@ class DefaultController extends BaseController
110 112 }
111 113 $allItemList = [0, 0, 0];
112 114 if ('working' == $status || '' == $status) {
113   - $allItemList = $this->getOrderList($page, 1);
  115 + $allItemList = $this->getOrderList($page, RepairOrderStatus::WORKING);
114 116 } else {
115   - $allItemList = $this->getOrderList($page, 0);
  117 + $allItemList = $this->getOrderList($page, RepairOrderStatus::FINISH);
116 118 }
117 119  
118 120 $e->page_count = $allItemList[1];
119   - $e->page = $page ;
  121 + $e->page = $page;
120 122 $e->items = $allItemList[2];
121 123 $e->success = true;
122 124  
... ... @@ -129,18 +131,24 @@ class DefaultController extends BaseController
129 131 */
130 132 private function getOrderList($page, $status)
131 133 {
132   - $pageSize = 5 ;
  134 + $pageSize = 8 ;
133 135 $pager_offset = ($page -1) * $pageSize;
134 136 $limitPage = $pageSize;
135   - $count = 15;
  137 + $userId = $this->getUserId();
  138 + $where = ['status' => $status, 'user_id' => $userId];
  139 + $list = RepairOrderRepository::getList($pager_offset, $limitPage, $where);
  140 + $count = RepairOrderRepository::getListCount($where);
136 141 $items = [];
137 142 $pageCount = ceil(($count*1) / $pageSize);
138   - $carModelList = ['宝马X3','宝马X4','宝马X5','宝马X6','奔驰c200l','奔驰E260','奔驰E260','奔驰E300'];
139   - $customerList = ['张先生','李先生','王先生','赵先生','刘先生','宝先生','好先生','费先生'];
140   - for ($i = $pager_offset; $i < ($pager_offset+$limitPage); $i++ ) {
141   - $carModel = $carModelList[mt_rand(0,7)];
142   - $customer = $customerList[mt_rand(0,7)];
143   - $items[] = ['id'=> $i ,'carNo' => 'XA'.mt_rand(10000,99999), 'carModel' => $carModel, 'status' => $status, 'customer' => $customer ,'createdTime' => date('Y-m-d H:i')];
  143 +
  144 + foreach($list as $k => $item) {
  145 +
  146 + $items[] = [
  147 + 'id'=> $item['uuid'] ,'carNo' => $item['car_no'],
  148 + 'carModel' => $item['car_model'],
  149 + 'status' => $item['status'],
  150 + 'customer' => $item['customer'] ,'createdTime' => date('Y-m-d H:i', $item['created_at'])
  151 + ];
144 152 }
145 153  
146 154 return [$count, $pageCount, $items];
... ... @@ -161,24 +169,31 @@ class DefaultController extends BaseController
161 169 $e->message = '找不到该订单';
162 170 return $this->renderJson($e);
163 171 }
164   - $brokenImageModels = RepairOrderRepository::findOrderImageAll(['repair_order_id' => $orderModel->id]);
  172 + $orderId = $orderModel->id;
  173 + $brokenImageModels = RepairOrderRepository::findOrderImageAll(['repair_order_id' => $orderId]);
165 174 $brokenImages = [];
166 175 $baseURL = Yii::$app->request->getHostInfo();
167 176 foreach($brokenImageModels as $k => $v) {
168 177 $brokenImages[] = $baseURL.'/'.$v->image_path;
169 178 }
170 179 $totalPrice = $orderModel->order_price;
171   - $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderModel->id]);
  180 + $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderId]);
172 181 $repairPlans = [];
173 182 foreach($rPlans as $k => $plan) {
174 183 $repairPlans[] = ['plan' => $plan['repair_plan'] ,'price' => $plan['price']];
175 184 }
176   - $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderModel->id]);
  185 + $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderId]);
177 186 $finishImages = [];
178 187 foreach($fImages as $k => $image) {
179 188 $finishImages[] = $baseURL.'/'.$image['image_path'];
180 189 }
181 190 $hasComment = false;
  191 + $comments = [];
  192 + $rateModel = RepairOrderRateRepository::findOne(['repair_order_id' => $orderId]);
  193 + if ($rateModel) {
  194 + $hasComment = true;
  195 + $comments = ['starTxt' => RepairOrderRate::starLabel($rateModel->star_count), 'comment' => $rateModel->comment];
  196 + }
182 197  
183 198 $e->success = true;
184 199 $e->item = [
... ... @@ -192,6 +207,7 @@ class DefaultController extends BaseController
192 207 'orderDateTime' => date('Y-m-d H:00', $orderModel->created_at),
193 208 'status' => RepairOrderStatus::getEnLabel($orderModel->status),
194 209 'hasComment' => $hasComment,
  210 + 'comments' => $comments,
195 211 'brokenImages' => $brokenImages,
196 212 'repairPlans' => $repairPlans,
197 213 'totalPrice' => $totalPrice,
... ...
app-wx/modules/order/views/default/pages/customer-order-template.php
... ... @@ -135,15 +135,13 @@ $baseUrl = Url::base(true);
135 135 <div class="pic-image-list">
136 136 {{#each item.brokenImages}}
137 137 <div class="img-cls">
138   - <div class="pic-class" style="background-image: url({{this}})"></div>
  138 + <div class="pic-class view-img-cls" data-url="{{this}}" style="background-image: url({{this}})"></div>
139 139 </div>
140 140 {{/each}}
141 141 </div>
142 142 </div>
143 143 </div>
144   - {{#js_compare "'working' == this.item.status"}}
145   - <div class="finish-submit btn-submit-cls"> 完成维修 </div>
146   - {{/js_compare}}
  144 +
147 145 {{#js_compare "'finish' == this.item.status"}}
148 146 <div class="content-wrapper">
149 147 <div class="content-title">维修费用清单</div>
... ... @@ -168,7 +166,7 @@ $baseUrl = Url::base(true);
168 166 <ul class="finish-image-ul">
169 167 {{#each this.item.finishImages}}
170 168 <li class="finish-image-li">
171   - <div class="finishImage" style="background-image:url('{{this}}')"> </div></li>
  169 + <div class="finishImage view-img-cls" data-url="{{this}}" style="background-image:url('{{this}}')"> </div></li>
172 170 {{/each}}
173 171 </ul>
174 172 </div>
... ... @@ -179,19 +177,19 @@ $baseUrl = Url::base(true);
179 177 GK车管家 <span style="color:#FF8728">《质保承诺》</span>
180 178 </div>
181 179  
  180 + {{#js_compare "'finish' == this.item.status"}}
182 181 <div class="content-wrapper">
183   - {{#js_compare "this.item.hasComment"}}
  182 + {{#js_compare "this.item.comments.length > 0"}}
184 183 <div class="content-title" style="padding-bottom: 0.5rem">评价</div>
185   - <div class="comment-txt-cls">服务评价:超赞</div>
186   - <div class="comment-txt-cls">这次修车体验很好,服务满意!</div>
  184 + <div class="comment-txt-cls">服务评价:{{this.item.comments.starTxt}}</div>
  185 + <div class="comment-txt-cls">{{this.item.comments.comment}}</div>
187 186 {{else}}
188   -
189 187 <div class="comment-box"><div>您对此次维修服务体验如何?</div>
190 188 <div class="rate-btn-cls">去评价</div>
191 189 </div>
192   -
193 190 {{/js_compare}}
194 191 </div>
  192 + {{/js_compare}}
195 193 {{/js_compare}}
196 194 </div>
197 195 </div>
... ...
app-wx/modules/order/views/default/pages/index-template.php
... ... @@ -60,7 +60,7 @@ $baseUrl = Url::base(true);
60 60 </script>
61 61 <script id="order-item-template" type="text/template">
62 62 {{#each list}}
63   - <div class="order-item">
  63 + <div class="order-item" data-id="{{id}}">
64 64 <div class="order-item-content">
65 65 <span class="title-left">车牌号码:{{carNo}}</span>
66 66  
... ...
app-wx/modules/order/views/default/pages/order-details-template.php
... ... @@ -135,7 +135,7 @@ $baseUrl = Url::base(true);
135 135 <div class="pic-image-list">
136 136 {{#each item.brokenImages}}
137 137 <div class="img-cls">
138   - <div class="pic-class" style="background-image: url({{this}})"></div>
  138 + <div class="pic-class view-img-cls" data-url="{{this}}" style="background-image: url({{this}})"></div>
139 139 </div>
140 140 {{/each}}
141 141 </div>
... ... @@ -168,7 +168,7 @@ $baseUrl = Url::base(true);
168 168 <ul class="finish-image-ul">
169 169 {{#each this.item.finishImages}}
170 170 <li class="finish-image-li">
171   - <div class="finishImage" style="background-image:url('{{this}}')"> </div></li>
  171 + <div class="finishImage view-img-cls" data-url="{{this}}" style="background-image:url('{{this}}')"> </div></li>
172 172 {{/each}}
173 173 </ul>
174 174 </div>
... ... @@ -180,17 +180,12 @@ $baseUrl = Url::base(true);
180 180 </div>
181 181  
182 182 <div class="content-wrapper">
183   - {{#js_compare "this.item.hasComment"}}
  183 + {{#js_compare "this.item.comments.length > 0"}}
184 184 <div class="content-title" style="padding-bottom: 0.5rem">评价</div>
185   - <div class="comment-txt-cls">服务评价:超赞</div>
186   - <div class="comment-txt-cls">这次修车体验很好,服务满意!</div>
  185 + <div class="comment-txt-cls">服务评价:{{this.item.comments.starTxt}}</div>
  186 + <div class="comment-txt-cls">{{this.item.comments.comment}}</div>
187 187 {{else}}
188   - <div class="comment-box">车主暂未评价</div>
189   - <!--
190   - <div class="comment-box"><div>您对此次维修服务体验如何?</div>
191   - <div class="rate-btn-cls">去评价</div>
192   - </div>
193   - -->
  188 + <div class="comment-box">车主暂未评价</div>
194 189 {{/js_compare}}
195 190 </div>
196 191 {{/js_compare}}
... ...
app-wx/modules/order/views/default/pages/submit-template.php
... ... @@ -30,7 +30,7 @@ $baseUrl = Url::base(true);
30 30 background-repeat: no-repeat;
31 31 -webkit-background-size:cover;
32 32 -moz-background-size:cover;background-size:cover;position: relative}
33   - #submit .upload-box .upload-item{background-image:url('<?=$baseUrl?>/i/order/upload-convert.png');background-repeat: no-repeat;background-position: 1px 1px;}
  33 + #submit .upload-box .upload-item{background-image:url('<?=$baseUrl?>/i/order/upload-convert.png');background-repeat: no-repeat;background-position: 0px 0px;}
34 34 #submit .upload-box .upload-input-cls{width: 100%;display: block;background: rgba(0,0,0,0);opacity: 0;height: 0;padding-bottom: 100%;}
35 35 #submit .upload-box .upload-btn-cls{background-size: 5rem auto;}
36 36 #submit .upload-box .del-img{position: absolute;top: 0;left: 0;width: 0.8rem;height: 0.9rem;background-image:url('<?=$baseUrl?>/i/order/trash.png');background-repeat: no-repeat;background-size: 0.8rem auto;background-color:#fff;border-radius: 0.2rem;}
... ...
app-wx/modules/user/views/default/pages/register-template.php
... ... @@ -25,7 +25,7 @@ $baseUrl = Url::base(true);
25 25 background-repeat: no-repeat;
26 26 -webkit-background-size:cover;
27 27 -moz-background-size:cover;background-size:cover;position: relative}
28   - #register .upload-box .upload-item{background-image:url('<?=$baseUrl?>/i/user/upload-convert.png');background-size: 4.7rem auto;background-repeat: no-repeat;background-position: 1px 1px;}
  28 + #register .upload-box .upload-item{background-image:url('<?=$baseUrl?>/i/user/upload-convert.png');background-repeat: no-repeat;background-position: 0 0}
29 29 #register .upload-box .upload-input-cls{width: 100%;display: block;background: rgba(0,0,0,0);opacity: 0;height: 0;padding-bottom: 100%;}
30 30 #register .action-box{padding:1rem;box-sizing:border-box;padding-top:3rem;}
31 31 #register .register-btn-cls{width:80%;border-radius: 2rem; padding:0.8rem 1rem;text-align:center;box-sizing: border-box;color:#fff;background:#FF8728;margin: 0 auto;font-size:1.13rem}
... ...
domain/order/RepairFinishImages.php
... ... @@ -60,6 +60,9 @@ class RepairFinishImages
60 60 */
61 61 static function mvFinishImages($orderUUId, $images)
62 62 {
  63 + if (empty($images)) {
  64 + return null;
  65 + }
63 66 foreach($images as $k => $v) {
64 67 ImageManager::mvUploadImage($v, $orderUUId, ImageManager::$ORDER_FINISH_PATH);
65 68 }
... ...
domain/order/RepairOrderRate.php 0 → 100644
... ... @@ -0,0 +1,63 @@
  1 +<?php
  2 +
  3 +namespace domain\order;
  4 +
  5 +use Yii;
  6 +use domain\order\models\RepairOrderRate as RepairOrderRateModel;
  7 +/**
  8 + * 评价
  9 + */
  10 +class RepairOrderRate
  11 +{
  12 +
  13 + /**
  14 + * @param $star
  15 + * @return string
  16 + */
  17 + static function starLabel($star)
  18 + {
  19 + $arr = [
  20 + 1 => '很差',
  21 + 2 => '差',
  22 + 3 => '一般',
  23 + 4 => '满意',
  24 + 5 => '很满意',
  25 + ];
  26 + if ($arr[$star]) {
  27 + return $arr[$star];
  28 + } else {
  29 + return '';
  30 + }
  31 + }
  32 + /**
  33 + * @param $sItems
  34 + * @return null
  35 + */
  36 + static function create($sItems)
  37 + {
  38 + if (empty($sItems)) {
  39 + return null;
  40 + }
  41 + $classData = [
  42 + 'class' => RepairOrderRateModel::className()
  43 + ];
  44 + foreach($sItems as $k => $v) {
  45 + $classData[$k] = $v;
  46 + }
  47 + $userModel = Yii::createObject($classData);
  48 + if($userModel->save()) {
  49 + return $userModel;
  50 + } else {
  51 + return null;
  52 + }
  53 + }
  54 +
  55 + /**
  56 + * @param $condition
  57 + * @return static
  58 + */
  59 + static function findOne($condition)
  60 + {
  61 + return RepairOrderRateModel::findOne($condition);
  62 + }
  63 +}
0 64 \ No newline at end of file
... ...
domain/order/RepairOrderRateRepository.php 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +<?php
  2 +
  3 +namespace domain\order;
  4 +
  5 +use Yii;
  6 +use domain\order\models\RepairOrderRate as RepairOrderRateModel;
  7 +/**
  8 + * 评价
  9 + */
  10 +class RepairOrderRateRepository
  11 +{
  12 + /**
  13 + * @param $condition
  14 + * @return static
  15 + */
  16 + static function findOne($condition)
  17 + {
  18 + return RepairOrderRateModel::findOne($condition);
  19 + }
  20 +}
0 21 \ No newline at end of file
... ...
domain/order/RepairOrderRepository.php
... ... @@ -23,6 +23,40 @@ class RepairOrderRepository
23 23 }
24 24  
25 25 /**
  26 + * 获取列表数据
  27 + * @param $offset
  28 + * @param $limit
  29 + * @param $map
  30 + * @return array|\yii\db\ActiveRecord[]
  31 + */
  32 + public static function getList($offset, $limit, $map, $orderDesc = '')
  33 + {
  34 + $order = RepairOrderModel::tableName();
  35 + $orderFind = RepairOrderModel::find();
  36 + $orderFind->select([$order.".*"]);
  37 + $orderFind->where($map);
  38 + if (empty($orderDesc)) {
  39 + $orderDesc = "{$order}.created_at desc";
  40 + }
  41 + $orderFind->orderBy($orderDesc);
  42 +
  43 + return $orderFind->offset($offset)->limit($limit)->asArray()->all();
  44 + }
  45 +
  46 + /**
  47 + * 获取总记录数
  48 + * @param $map
  49 + * @return int|string
  50 + */
  51 + public static function getListCount($map)
  52 + {
  53 + $order = RepairOrderModel::tableName();
  54 + $orderFind = RepairOrderModel::find();
  55 + $orderFind->where($map);
  56 + return $orderFind->count();
  57 + }
  58 +
  59 + /**
26 60 * @param $condition
27 61 * @return array|null|\yii\db\ActiveRecord[]
28 62 */
... ...
domain/order/RepairOrderStatus.php
... ... @@ -10,7 +10,7 @@ use domain\order\models\RepairOrder as RepairOrderModel;
10 10 */
11 11 class RepairOrderStatus
12 12 {
13   - const REPAIRING = 1; //维修中
  13 + const WORKING = 1; //维修中
14 14 const FINISH = 2; // 维修完成
15 15  
16 16 /**
... ... @@ -20,7 +20,7 @@ class RepairOrderStatus
20 20 static function getEnLabel($index = '')
21 21 {
22 22 $arr = [
23   - self::REPAIRING => "working",
  23 + self::WORKING => "working",
24 24 self::FINISH => "finish",
25 25 ];
26 26 if ('' === $index) {
... ...
domain/order/models/RepairOrder.php
... ... @@ -51,6 +51,8 @@ class RepairOrder extends ActiveRecord
51 51 */
52 52 public function onBeforeInsert()
53 53 {
54   - $this->uuid = Utils::genUUID();
  54 + $uuid = Utils::genUUID();
  55 + $this->uuid = $uuid;
  56 + $this->short_uuid = substr(md5($uuid), 8,16);
55 57 }
56 58 }
57 59 \ No newline at end of file
... ...
web/dist/js/order-app.js
1   -define("order-app",["mk7/app"],function(t){var e=Dom7,n=function(){var t=e(".ui-loading-block");0==t.length&&(e(".view-main").html('<div class="ui-loading-block" id="ui-loading"><div class="ui-loading-cnt"><div class="spinner"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div><div id="loader-inner"><p></p></div> </div> </div>'),window.waitingTime=1e4,window.loaderTimer&&clearTimeout(window.loaderTimer),window.loaderTimer=setTimeout(function(){var t=document.getElementById("loader-inner"),e=document.createElement("p");e.className="notice",t&&(e.innerHTML='加载速度太慢?试试<a class="link" href="#" onclick="javascript:location.reload();return false;">重新加载</a>',t.appendChild(e))},window.waitingTime))},i=!0;return t.name="order",t.routes={index:function(){return i=!1,n(),t.runController("index")},"index/:tab":function(e){i=!1,n();var a={tab:e};return t.runController("index",a)},submit:function(){return i=!1,n(),t.runController("submit")},"order-details/:id":function(e){i=!1,n();var a={id:e};return t.runController("order-details",a)},"customer-order/:id/:sn":function(e,a){i=!1,n();var r={id:e,sn:a};return t.runController("customer-order",r)},"rate/:id/:sn":function(e,a){i=!1,n();var r={id:e,sn:a};return t.runController("rate",r)},"cost-list/:id":function(e){i=!1,n();var a={id:e};return t.runController("cost-list",a)},"*":function(){return t.runController("index")}},t}),define("order/cost-list-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs"],function(t,e,n,i){var a=Dom7,t=(Template7,new t),r="/user/default/upload-file",o="/order/default/submit-repair-plans";return t.run=function(){var t=this;t.setPageTitle("费用列表"),t.id=t.params.id,t.imgLimit=9,t.canSubmit=!0,t.render()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.addEvent(),t.uploadImgEvent(),t.delPlanEvent(),t.inputPriceChangeEvent(),t.submitEvent()},t.addEvent=function(){var t=this;a("#cost-list .add-repair-plan").click(function(e){var n=a("#cost-list .cost-list-div"),i=t.planTpl(n.length+1);a(i).insertBefore(a("#cost-list .cost-total-list-div"))})},t.delPlanEvent=function(){var t=this;a("#cost-list").on("click",".del-plan",function(e){console.log("del plan event"),a(this).parents(".cost-list-div").remove(),a("#cost-list .total-plan-price").html(t.computedPrice())})},t.planTpl=function(t){var e='<div class="cost-list-div"><p class="item-title">第'+t+'项</p><div class="repair-item-cls"><input type="text" class="input-left input-cls" placeholder="填写维修内容" value=""><input type="number" class="input-right input-cls" placeholder="填写价格" value="0"><span class="del-plan"></span></div></div>';return e},t.inputPriceChangeEvent=function(){var t=this;a("#cost-list").on("input propertychange",".input-cls",function(){var e=t.computedPrice();a("#cost-list .total-plan-price").html(e)})},t.computedPrice=function(){var t=a("#cost-list .input-right"),e=0;return a.each(t,function(t,n){e+=1*a(n).val()}),Math.round(e,2)},t.uploadImgEvent=function(){var t=this;a("#cost-list #upload-btn").change(function(){if(""!=a(this).val()&&null!=a(this).val()){var o=a(this).parents("li");i.uploadFile({selector:"#upload-btn",url:e.to(r),processAppendTo:"#cost-list",success:function(e,i){try{if(e.success){var r=e.tmpUrl;a('<li class="upload-li up-img"><div data="'+e.tmpFile+'" data-url="'+r+'" class="upload-item" style="background-image:url('+e.tmpMinUrl+')"></div><span class="del-img"></span></li>').insertBefore(o),t.imgLimit==a("#cost-list #image-list").find(".up-img").length&&a("#cost-list .upload-btn-li").hide()}else n.toast({content:e.message,closeDelay:5e3})}catch(s){console.log(s),n.toast({content:"出错",closeDelay:5e3})}}})}}),a("#cost-list #image-list").on("click",".del-img",function(e){a(this).parent().remove(),t.imgLimit>=a("#cost-list #image-list").find(".up-img").length&&a("#cost-list .upload-btn-li").show()})},t.submitEvent=function(){var t=this;a("#cost-list .btn-submit").click(function(i){var r=a("#cost-list .content-div").find(".repair-item-cls"),s=[],l=!0,c=!0;if(a.each(r,function(t,e){var i=n.trim(a(e).find(".input-left").val()),r=n.trim(a(e).find(".input-right").val());""==i&&(l=!1),""!=r&&0!=r||(c=!1),s.push({content:i,price:r})}),!l)return n.toast({content:"维修清单有部分未填内容"}),!1;if(!c)return n.toast({content:"维修清单有部分未填价格"}),!1;var u=a("#cost-list #image-list").find(".upload-item"),d=[];if(a.each(u,function(t,e){d.push(a(e).attr("data"))}),!t.canSubmit)return!1;t.canSubmit=!1;var m=t.csrf({images:d,plans:s,id:t.id});n.httpPost(o,m,function(i){t.canSubmit=!0,i.success?window.location.replace(e.to("order#order-details/"+t.id)):n.toast({content:i.message})},!0)})},t}),define("order/customer-order-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,n){var i=Dom7,t=(Template7,new t),a="order/customer/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.goToComment()},t.loadPage=function(){var t=this,i=t.csrf({id:t.id});n.httpPost(e.to(a),i,function(e){var n=e;t.render(n)},!0)},t.goToComment=function(){var t=this;i("#customer-order .rate-btn-cls").click(function(n){window.location.replace(e.to("order/customer#rate/"+t.id+"/"+t.sn))})},t}),define("order/index-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,n){var i=Dom7,a=Template7,t=new t,r="order/default/order-list";return t.run=function(){var t=this;t.setPageTitle("订单列表"),t.tab=t.params.tab,t.page=0,t.nodata="",t.loading=!1,t.pageCount=1,t.render({tab:t.tab}),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.tabEvent(),t.bindScrollEvent(),t.addEvent()},t.tabEvent=function(){i(".tab-cls").click(function(t){var e=i(this).attr("data-href");window.location.replace(e)})},t.handleNodata=function(){var t=this;t.nodata="没有数据了";var e=i(".nodata");0==e.length&&i("#index .order-list").append('<div class="nodata">'+t.nodata+"</div>"),t.app.detachInfiniteScroll(".infinite-scroll"),i("#index .infinite-scroll-preloader").remove()},t.loadPage=function(){var t=this;if(t.loading=!0,t.page>=t.pageCount)return void t.handleNodata();var a={status:t.tab};a.page=t.page+1,a=t.csrf(a),i.ajax({method:"GET",url:e.to(r),data:a,dataType:"json",beforeSend:function(){t.showIndicator()},success:function(e){1==e.success&&(n.isDefined(e.page)&&(t.page=parseInt(e.page)),n.isDefined(e.page_count)&&(t.pageCount=parseInt(e.page_count)),t.renderItems(e.items,!0))},error:function(t){},complete:function(e){t.hideIndicator(),t.loading=!1}})},t.bindScrollEvent=function(){var t=this;t.app.attachInfiniteScroll("#index .infinite-scroll"),i("#index .infinite-scroll").on("infinite",function(){t.loading||t.nodata||t.loadPage()})},t.renderItems=function(t,e){var n=i("#index .order-list"),r=i("script#order-item-template"),o=a.compile(r.html()),s=o({list:t});0==e&&(n.html(""),n.append(s)),n.append(s)},t.addEvent=function(){i("#index .add-btn-cls").click(function(t){window.location.href=e.to("order/#submit")})},t}),define("order/order-details-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,n){var i=Dom7,t=(Template7,new t),a="order/default/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.finishBtnEvent(),t.goToComment()},t.loadPage=function(){var t=this,i=t.csrf({id:t.id});n.httpPost(e.to(a),i,function(e){var n=e;t.render(n)},!0)},t.finishBtnEvent=function(){var t=this;i("#order-details .finish-submit").click(function(n){window.location.href=e.to("order/#cost-list/"+t.id)})},t.goToComment=function(){var t=this;i("#order-details .rate-btn-cls").click(function(n){window.location.href=e.to("order/#rate/"+t.id)})},t}),define("order/rate-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,n){var i=Dom7,t=(Template7,new t),a="order/customer/submit-rate";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.setPageTitle("评价"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.starClickEvent(),t.submitEvent()},t.loadPage=function(){var t=this;t.render()},t.starClickEvent=function(){i("#rate").on("click",".quality-box .img-star",function(t){var e=i(this).attr("data-id"),n=i("#rate .quality-box .img-star");i.each(n,function(t,n){var a=i(n).attr("data-id");if(1*a<=e){i(n).addClass("star-on");var r=i("#rate .quality-box").find(".rate-text"),o=i(n).attr("data-txt");r.html(o)}else i(n).removeClass("star-on")})})},t.submitEvent=function(){var t=this;i("#rate .submit-btn").click(function(r){var o=n.trim(i("#rate .text-content").val()),s=i("#rate .img-star"),l=0;i.each(s,function(t,e){i(e).hasClass("star-on")&&l++});var c=t.csrf({star:l,comment:o});n.httpPost(e.to(a),c,function(i){i.success?window.location.replace(e.to("order/customer#customer-order/"+t.id+"/"+t.sn)):n.toast({content:i.message})},!0)})},t}),define("order/submit-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs","mk7/picker"],function(t,e,n,a,r){var o=Dom7,t=(Template7,new t),s="/user/default/upload-file",l="/order/default/submit",c=!0,u="";return t.run=function(){var t=this;t.setPageTitle("录入维修单"),t.imgLimit=9,t.render()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.uploadImgEvent(),t.submitEvent(),t.selectDateEvent()},t.uploadImgEvent=function(){var t=this;o("#submit #upload-btn").change(function(){if(""!=o(this).val()&&null!=o(this).val()){var i=o(this).parents("li");a.uploadFile({selector:"#upload-btn",url:e.to(s),processAppendTo:"#submit",success:function(e,a){try{if(e.success){var r=e.tmpUrl;o('<li class="upload-li up-img"><div data="'+e.tmpFile+'" data-url="'+r+'" class="upload-item" style="background-image:url('+e.tmpMinUrl+')"></div><span class="del-img"></span></li>').insertBefore(i),t.imgLimit==o("#submit #image-list").find(".up-img").length&&o("#submit .upload-btn-li").hide()}else n.toast({content:e.message,closeDelay:5e3})}catch(s){console.log(s),n.toast({content:"出错",closeDelay:5e3})}}})}}),o("#submit #image-list").on("click",".del-img",function(e){o(this).parent().remove(),t.imgLimit>=o("#submit #image-list").find(".up-img").length&&o("#submit .upload-btn-li").show()})},t.submitEvent=function(){var t=this;o("#submit .submit-btn-cls").click(function(i){var a=n.trim(o("#submit .carNo").val()),r=n.trim(o("#submit .carModel").val()),s=n.trim(o("#submit .customer").val()),u=n.trim(o("#submit .phone").val()),d=n.trim(o("#submit .preRepair").val()),m=n.trim(o("#submit .repairPrice").val()),v=n.trim(o("#submit .finishDate").val());if(0==c)return!1;if(""==a)return n.toast({content:"车牌号必填"}),!1;if(""==r)return n.toast({content:"车辆型号必填"}),!1;if(""==s)return n.toast({content:"客户名称必填"}),!1;if(""==u)return n.toast({content:"客联系电话必填"}),!1;if(!n.isMobile(u)&&!uitls.isTelephone(u))return n.toast({content:"客联系电话有误"}),!1;if(""==d)return n.toast({content:"预估维修内容必填"}),!1;if(""==m)return n.toast({content:"预估维修费用必填"}),!1;if(""==v)return n.toast({content:"预估完成时间必填"}),!1;var p=t.getUploadImgs();if(0==p.length)return n.toast({content:"请上传车损照"}),!1;c=!1;var f=t.csrf({carNo:a,carModel:r,customer:s,phone:u,preRepair:d,repairPrice:m,finishDate:v,images:p});n.httpPost(l,f,function(t){return c=!0,t.success?void window.location.replace(e.to("order#order-details/"+t.orderId)):(n.toast({content:message}),!1)},!0)})},t.getUploadImgs=function(){var t=o("#submit #image-list").find(".up-img"),e=[];return 0==t.length?[]:(o.each(t,function(t,n){var i=o(n).find(".upload-item");e.push(i.attr("data"))}),e)},t.selectDateEvent=function(){var t=this;o("#submit .finish-date-input").click(function(e){var n=o(this).val();console.log(n),t.dateTimeSelector("#submit .finish-date-input",n)})},t.dateTimeSelector=function(t,e){var n=this,a=new Date,r=30,s=a.getFullYear(),l=a.getMonth(),c=a.getDate(),d=a.getHours(),m=s+"-"+(l+1)+"-"+c;if(""!=e&&null!=e&&void 0!==e){var v=e.split(" ");m=v[0],d=v[1]}var p=[];for(i=0;i<=r;i++){var f=new Date;f.setDate(a.getDate()+i);var g=f.getFullYear()+"-"+(f.getMonth()+1)+"-"+f.getDate();p.push(g)}var h=n.app.picker({input:t,toolbarTemplate:'<div class="toolbar"><div class="toolbar-inner"><div class="left">请选择用工时间</div><div class="right"><a href="javascript:void(0);" class="link submit-confirm-picker">确定</a></div></div></div>',value:[m,d],onChange:function(t,e,n){var i,a,r;if(e[0]instanceof Date)i=e[0].getFullYear(),a=e[0].getMonth(),r=e[0].getDate();else{var o=e[0].split("-");i=o[0],a=o[1]-1,r=o[2]}var s=new Date(i,a,r,e[1],0),l=new Date((new Date).getTime()+36e5);if(s<l){if(void 0===t.cols[0])return!1;var c=l.getHours(),u=l.getFullYear()+"-"+(l.getMonth()+1)+"-"+l.getDate(),d=new Date(l.getFullYear(),l.getMonth(),l.getDate(),l.getHours(),0);if(d-new Date<9e5){var m=new Date(d.getTime()+36e5);c=m.getHours(),u=m.getFullYear()+"-"+(m.getMonth()+1)+"-"+m.getDate()}t.cols[0].setValue(u),t.cols[2].setValue(c)}},formatValue:function(t,e,n){var i="";i=e[0]instanceof Date?e[0].getFullYear()+"-"+(e[0].getMonth()+1)+"-"+e[0].getDate():e[0];var a=i+" "+e[1];return a},cols:[{values:p,displayValues:function(){var t=[],e=new Date,n=e.getFullYear(),i=e.getMonth()+1,a=e.getDate();e.setDate(e.getDate()+1);for(var r=0;r<p.length;r++){var o=p[r],s=o.split("-"),l=s[1]+"月"+s[2]+"日";n==s[0]&&1*i==s[1]&&1*a==s[2]&&(l+="(今天)"),1*e.getFullYear()==s[0]&&1*e.getMonth()+1==s[1]&&1*e.getDate()==s[2]&&(l+="(明天)"),t.push(l)}return t}()},{divider:!0,content:" "},{values:function(){for(var t=[],e=0;e<=23;e++)t.push(e);return t}(),displayValues:function(){for(var t=[],e=0;e<=23;e++)t.push(e<10?"0"+e+"时":e+"时");return t}()},{divider:!0,content:" "}],onClose:function(e){if(h){var n=h.value,i=n[1]<10?"0"+n[1]:n[1];u=n[0]+" "+i,o(t).val(u),h.destroy()}}});h.open(),o(".submit-confirm-picker").on("click",function(e){e.preventDefault();var n=h.value,i=n[1]<10?"0"+n[1]:n[1];u=n[0]+" "+i,o(t).val(u),h.destroy()})},t});
2 1 \ No newline at end of file
  2 +define("order-app",["mk7/app"],function(t){var e=Dom7,i=function(){var t=e(".ui-loading-block");0==t.length&&(e(".view-main").html('<div class="ui-loading-block" id="ui-loading"><div class="ui-loading-cnt"><div class="spinner"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div><div id="loader-inner"><p></p></div> </div> </div>'),window.waitingTime=1e4,window.loaderTimer&&clearTimeout(window.loaderTimer),window.loaderTimer=setTimeout(function(){var t=document.getElementById("loader-inner"),e=document.createElement("p");e.className="notice",t&&(e.innerHTML='加载速度太慢?试试<a class="link" href="#" onclick="javascript:location.reload();return false;">重新加载</a>',t.appendChild(e))},window.waitingTime))},n=!0;return t.name="order",t.routes={index:function(){return n=!1,i(),t.runController("index")},"index/:tab":function(e){n=!1,i();var a={tab:e};return t.runController("index",a)},submit:function(){return n=!1,i(),t.runController("submit")},"order-details/:id":function(e){n=!1,i();var a={id:e};return t.runController("order-details",a)},"customer-order/:id/:sn":function(e,a){n=!1,i();var r={id:e,sn:a};return t.runController("customer-order",r)},"rate/:id/:sn":function(e,a){n=!1,i();var r={id:e,sn:a};return t.runController("rate",r)},"cost-list/:id":function(e){n=!1,i();var a={id:e};return t.runController("cost-list",a)},"*":function(){return t.runController("index")}},t}),define("order/cost-list-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs"],function(t,e,i,n){var a=Dom7,t=(Template7,new t),r="/user/default/upload-file",o="/order/default/submit-repair-plans";return t.run=function(){var t=this;t.setPageTitle("费用列表"),t.id=t.params.id,t.imgLimit=9,t.canSubmit=!0,t.render()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.addEvent(),t.uploadImgEvent(),t.delPlanEvent(),t.inputPriceChangeEvent(),t.submitEvent()},t.addEvent=function(){var t=this;a("#cost-list .add-repair-plan").click(function(e){var i=a("#cost-list .cost-list-div"),n=t.planTpl(i.length+1);a(n).insertBefore(a("#cost-list .cost-total-list-div"))})},t.delPlanEvent=function(){var t=this;a("#cost-list").on("click",".del-plan",function(e){console.log("del plan event"),a(this).parents(".cost-list-div").remove(),a("#cost-list .total-plan-price").html(t.computedPrice())})},t.planTpl=function(t){var e='<div class="cost-list-div"><p class="item-title">第'+t+'项</p><div class="repair-item-cls"><input type="text" class="input-left input-cls" placeholder="填写维修内容" value=""><input type="number" class="input-right input-cls" placeholder="填写价格" value="0"><span class="del-plan"></span></div></div>';return e},t.inputPriceChangeEvent=function(){var t=this;a("#cost-list").on("input propertychange",".input-cls",function(){var e=t.computedPrice();a("#cost-list .total-plan-price").html(e)})},t.computedPrice=function(){var t=a("#cost-list .input-right"),e=0;return a.each(t,function(t,i){e+=1*a(i).val()}),Math.round(e,2)},t.uploadImgEvent=function(){var t=this;a("#cost-list #upload-btn").change(function(){if(""!=a(this).val()&&null!=a(this).val()){var o=a(this).parents("li");n.uploadFile({selector:"#upload-btn",url:e.to(r),processAppendTo:"#cost-list",success:function(e,n){try{if(e.success){var r=e.tmpUrl;a('<li class="upload-li up-img"><div data="'+e.tmpFile+'" data-url="'+r+'" class="upload-item" style="background-image:url('+e.tmpMinUrl+')"></div><span class="del-img"></span></li>').insertBefore(o),t.imgLimit==a("#cost-list #image-list").find(".up-img").length&&a("#cost-list .upload-btn-li").hide()}else i.toast({content:e.message,closeDelay:5e3})}catch(s){console.log(s),i.toast({content:"出错",closeDelay:5e3})}}})}}),a("#cost-list #image-list").on("click",".del-img",function(e){a(this).parent().remove(),t.imgLimit>=a("#cost-list #image-list").find(".up-img").length&&a("#cost-list .upload-btn-li").show()})},t.submitEvent=function(){var t=this;a("#cost-list .btn-submit").click(function(n){var r=a("#cost-list .content-div").find(".repair-item-cls"),s=[],l=!0,c=!0;if(a.each(r,function(t,e){var n=i.trim(a(e).find(".input-left").val()),r=i.trim(a(e).find(".input-right").val());""==n&&(l=!1),""!=r&&0!=r||(c=!1),s.push({content:n,price:r})}),!l)return i.toast({content:"维修清单有部分未填内容"}),!1;if(!c)return i.toast({content:"维修清单有部分未填价格"}),!1;var d=a("#cost-list #image-list").find(".upload-item"),u=[];if(a.each(d,function(t,e){u.push(a(e).attr("data"))}),!t.canSubmit)return!1;t.canSubmit=!1;var m=t.csrf({images:u,plans:s,id:t.id});i.httpPost(o,m,function(n){t.canSubmit=!0,n.success?window.location.replace(e.to("order#order-details/"+t.id)):i.toast({content:n.message})},!0)})},t}),define("order/customer-order-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,i){var n=Dom7,t=(Template7,new t),a="order/customer/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.goToComment(),t.popupImageLayer()},t.loadPage=function(){var t=this,n=t.csrf({id:t.id});i.httpPost(e.to(a),n,function(e){var i=e;t.render(i)},!0)},t.goToComment=function(){var t=this;n("#customer-order .rate-btn-cls").click(function(i){window.location.replace(e.to("order/customer#rate/"+t.id+"/"+t.sn))})},t.popupImageLayer=function(){n("#customer-order").on("click",".view-img-cls",function(t){var e=n(this).attr("data-url");n("#img-mask").remove();var i='<div id="img-mask" style="z-index:2;background:#000;justify-content:center;position: absolute;bottom:0;top:0;width:100%;display:flex;flex-direction: column;align-items: center"><div style="width:100%;"> <img width="100%" src="'+e+'" /></div></div>';n("#customer-order").append(i)}),n("#customer-order").on("click","#img-mask, #img-mask img",function(t){t.preventDefault(),t.stopPropagation();var e=document.body.clientHeight,i=n("#img-mask img").height();console.log(e+"dddd"+i);var a=Math.abs(i-e);if(a>=0&&a<=20)n("#img-mask").remove();else{var r=n(t.target).attr("id");"img-mask"==r&&n("#img-mask").remove()}})},t}),define("order/index-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,i){var n=Dom7,a=Template7,t=new t,r="order/default/order-list";return t.run=function(){var t=this;t.setPageTitle("订单列表"),t.tab=t.params.tab,t.page=0,t.nodata="",t.loading=!1,t.pageCount=1,t.render({tab:t.tab}),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.tabEvent(),t.bindScrollEvent(),t.addEvent(),t.orderClickEvent()},t.tabEvent=function(){n(".tab-cls").click(function(t){var e=n(this).attr("data-href");window.location.replace(e)})},t.handleNodata=function(){var t=this;t.nodata="没有数据了";var e=n(".nodata");0==e.length&&n("#index .order-list").append('<div class="nodata">'+t.nodata+"</div>"),t.app.detachInfiniteScroll(".infinite-scroll"),n("#index .infinite-scroll-preloader").remove()},t.loadPage=function(){var t=this;if(t.loading=!0,t.page>=t.pageCount)return void t.handleNodata();var a={status:t.tab};a.page=t.page+1,a=t.csrf(a),n.ajax({method:"GET",url:e.to(r),data:a,dataType:"json",beforeSend:function(){t.showIndicator()},success:function(e){if(1==e.success&&(i.isDefined(e.page)&&(t.page=parseInt(e.page)),i.isDefined(e.page_count)&&(t.pageCount=parseInt(e.page_count)),t.renderItems(e.items,!0),t.page>=t.pageCount))return void t.handleNodata()},error:function(t){},complete:function(e){t.hideIndicator(),t.loading=!1}})},t.bindScrollEvent=function(){var t=this;t.app.attachInfiniteScroll("#index .infinite-scroll"),n("#index .infinite-scroll").on("infinite",function(){t.loading||t.nodata||t.loadPage()})},t.renderItems=function(t,e){var i=n("#index .order-list"),r=n("script#order-item-template"),o=a.compile(r.html()),s=o({list:t});0==e&&(i.html(""),i.append(s)),i.append(s)},t.addEvent=function(){n("#index .add-btn-cls").click(function(t){window.location.href=e.to("order/#submit")})},t.orderClickEvent=function(){n("#index").on("click",".order-item",function(t){var i=n(this).attr("data-id");window.location.href=e.to("order#order-details/"+i)})},t}),define("order/order-details-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,i){var n=Dom7,t=(Template7,new t),a="order/default/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.finishBtnEvent(),t.popupImageLayer()},t.loadPage=function(){var t=this,n=t.csrf({id:t.id});i.httpPost(e.to(a),n,function(e){var i=e;t.render(i)},!0)},t.finishBtnEvent=function(){var t=this;n("#order-details .finish-submit").click(function(i){window.location.href=e.to("order/#cost-list/"+t.id)})},t.popupImageLayer=function(){n("#order-details").on("click",".view-img-cls",function(t){var e=n(this).attr("data-url");n("#img-mask").remove();var i='<div id="img-mask" style="z-index:2;background:#000;justify-content:center;position: absolute;bottom:0;top:0;width:100%;display:flex;flex-direction: column;align-items: center"><div style="width:100%;"> <img width="100%" src="'+e+'" /></div></div>';n("#order-details").append(i)}),n("#order-details").on("click","#img-mask, #img-mask img",function(t){t.preventDefault(),t.stopPropagation();var e=document.body.clientHeight,i=n("#img-mask img").height();console.log(e+"dddd"+i);var a=Math.abs(i-e);if(a>=0&&a<=20)n("#img-mask").remove(),console.log("dddd");else{var r=n(t.target).attr("id");"img-mask"==r&&n("#img-mask").remove()}})},t}),define("order/rate-controller",["mk7/controller","mk7/url","mk7/utils"],function(t,e,i){var n=Dom7,t=(Template7,new t),a="order/customer/submit-rate";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.setPageTitle("评价"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.starClickEvent(),t.submitEvent()},t.loadPage=function(){var t=this;t.render()},t.starClickEvent=function(){n("#rate").on("click",".quality-box .img-star",function(t){var e=n(this).attr("data-id"),i=n("#rate .quality-box .img-star");n.each(i,function(t,i){var a=n(i).attr("data-id");if(1*a<=e){n(i).addClass("star-on");var r=n("#rate .quality-box").find(".rate-text"),o=n(i).attr("data-txt");r.html(o)}else n(i).removeClass("star-on")})})},t.submitEvent=function(){var t=this;n("#rate .submit-btn").click(function(r){var o=i.trim(n("#rate .text-content").val()),s=n("#rate .img-star"),l=0;n.each(s,function(t,e){n(e).hasClass("star-on")&&l++});var c=t.csrf({star:l,comment:o,id:t.id});i.httpPost(e.to(a),c,function(n){n.success?window.location.replace(e.to("order/customer#customer-order/"+t.id+"/"+t.sn)):i.toast({content:n.message})},!0)})},t}),define("order/submit-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs","mk7/picker"],function(t,e,n,a,r){var o=Dom7,t=(Template7,new t),s="/user/default/upload-file",l="/order/default/submit",c=!0,d="";return t.run=function(){var t=this;t.setPageTitle("录入维修单"),t.imgLimit=9,t.render()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.uploadImgEvent(),t.submitEvent(),t.selectDateEvent()},t.uploadImgEvent=function(){var t=this;o("#submit #upload-btn").change(function(){if(""!=o(this).val()&&null!=o(this).val()){var i=o(this).parents("li");a.uploadFile({selector:"#upload-btn",url:e.to(s),processAppendTo:"#submit",success:function(e,a){try{if(e.success){var r=e.tmpUrl;o('<li class="upload-li up-img"><div data="'+e.tmpFile+'" data-url="'+r+'" class="upload-item" style="background-image:url('+e.tmpMinUrl+')"></div><span class="del-img"></span></li>').insertBefore(i),t.imgLimit==o("#submit #image-list").find(".up-img").length&&o("#submit .upload-btn-li").hide()}else n.toast({content:e.message,closeDelay:5e3})}catch(s){console.log(s),n.toast({content:"出错",closeDelay:5e3})}}})}}),o("#submit #image-list").on("click",".del-img",function(e){o(this).parent().remove(),t.imgLimit>=o("#submit #image-list").find(".up-img").length&&o("#submit .upload-btn-li").show()})},t.submitEvent=function(){var t=this;o("#submit .submit-btn-cls").click(function(i){var a=n.trim(o("#submit .carNo").val()),r=n.trim(o("#submit .carModel").val()),s=n.trim(o("#submit .customer").val()),d=n.trim(o("#submit .phone").val()),u=n.trim(o("#submit .preRepair").val()),m=n.trim(o("#submit .repairPrice").val()),v=n.trim(o("#submit .finishDate").val());if(0==c)return!1;if(""==a)return n.toast({content:"车牌号必填"}),!1;if(""==r)return n.toast({content:"车辆型号必填"}),!1;if(""==s)return n.toast({content:"客户名称必填"}),!1;if(""==d)return n.toast({content:"客联系电话必填"}),!1;if(!n.isMobile(d)&&!uitls.isTelephone(d))return n.toast({content:"客联系电话有误"}),!1;if(""==u)return n.toast({content:"预估维修内容必填"}),!1;if(""==m)return n.toast({content:"预估维修费用必填"}),!1;if(""==v)return n.toast({content:"预估完成时间必填"}),!1;var p=t.getUploadImgs();if(0==p.length)return n.toast({content:"请上传车损照"}),!1;c=!1;var f=t.csrf({carNo:a,carModel:r,customer:s,phone:d,preRepair:u,repairPrice:m,finishDate:v,images:p});n.httpPost(l,f,function(t){return c=!0,t.success?void window.location.replace(e.to("order#order-details/"+t.orderId)):(n.toast({content:message}),!1)},!0)})},t.getUploadImgs=function(){var t=o("#submit #image-list").find(".up-img"),e=[];return 0==t.length?[]:(o.each(t,function(t,i){var n=o(i).find(".upload-item");e.push(n.attr("data"))}),e)},t.selectDateEvent=function(){var t=this;o("#submit .finish-date-input").click(function(e){var i=o(this).val();console.log(i),t.dateTimeSelector("#submit .finish-date-input",i)})},t.dateTimeSelector=function(t,e){var n=this,a=new Date,r=30,s=a.getFullYear(),l=a.getMonth(),c=a.getDate(),u=a.getHours(),m=s+"-"+(l+1)+"-"+c;if(""!=e&&null!=e&&void 0!==e){var v=e.split(" ");m=v[0],u=v[1]}var p=[];for(i=0;i<=r;i++){var f=new Date;f.setDate(a.getDate()+i);var g=f.getFullYear()+"-"+(f.getMonth()+1)+"-"+f.getDate();p.push(g)}var h=n.app.picker({input:t,toolbarTemplate:'<div class="toolbar"><div class="toolbar-inner"><div class="left">请选择用工时间</div><div class="right"><a href="javascript:void(0);" class="link submit-confirm-picker">确定</a></div></div></div>',value:[m,u],onChange:function(t,e,i){var n,a,r;if(e[0]instanceof Date)n=e[0].getFullYear(),a=e[0].getMonth(),r=e[0].getDate();else{var o=e[0].split("-");n=o[0],a=o[1]-1,r=o[2]}var s=new Date(n,a,r,e[1],0),l=new Date((new Date).getTime()+36e5);if(s<l){if(void 0===t.cols[0])return!1;var c=l.getHours(),d=l.getFullYear()+"-"+(l.getMonth()+1)+"-"+l.getDate(),u=new Date(l.getFullYear(),l.getMonth(),l.getDate(),l.getHours(),0);if(u-new Date<9e5){var m=new Date(u.getTime()+36e5);c=m.getHours(),d=m.getFullYear()+"-"+(m.getMonth()+1)+"-"+m.getDate()}t.cols[0].setValue(d),t.cols[2].setValue(c)}},formatValue:function(t,e,i){var n="";n=e[0]instanceof Date?e[0].getFullYear()+"-"+(e[0].getMonth()+1)+"-"+e[0].getDate():e[0];var a=n+" "+e[1];return a},cols:[{values:p,displayValues:function(){var t=[],e=new Date,i=e.getFullYear(),n=e.getMonth()+1,a=e.getDate();e.setDate(e.getDate()+1);for(var r=0;r<p.length;r++){var o=p[r],s=o.split("-"),l=s[1]+"月"+s[2]+"日";i==s[0]&&1*n==s[1]&&1*a==s[2]&&(l+="(今天)"),1*e.getFullYear()==s[0]&&1*e.getMonth()+1==s[1]&&1*e.getDate()==s[2]&&(l+="(明天)"),t.push(l)}return t}()},{divider:!0,content:" "},{values:function(){for(var t=[],e=0;e<=23;e++)t.push(e);return t}(),displayValues:function(){for(var t=[],e=0;e<=23;e++)t.push(e<10?"0"+e+"时":e+"时");return t}()},{divider:!0,content:" "}],onClose:function(e){if(h){var i=h.value,n=i[1]<10?"0"+i[1]:i[1];d=i[0]+" "+n,o(t).val(d),h.destroy()}}});h.open(),o(".submit-confirm-picker").on("click",function(e){e.preventDefault();var i=h.value,n=i[1]<10?"0"+i[1]:i[1];d=i[0]+" "+n,o(t).val(d),h.destroy()})},t});
3 3 \ No newline at end of file
... ...
web/src/js/order/cost-list-controller.js
... ... @@ -152,7 +152,7 @@ define(
152 152 return false;
153 153 }
154 154 me.canSubmit = false;
155   - var pData = me.csrf({images:images, plans: repairPlan, id:me.id});
  155 + var pData = me.csrf({images:images, plans: repairPlan, id: me.id});
156 156 utils.httpPost(submitURL,pData, function(res){
157 157 me.canSubmit = true;
158 158 if (res.success) {
... ...
web/src/js/order/customer-order-controller.js
... ... @@ -27,6 +27,7 @@ define(
27 27 var me = this;
28 28 console.log("bindEvents");
29 29 me.goToComment();
  30 + me.popupImageLayer();
30 31 }
31 32 ctrl.loadPage = function() {
32 33 var me = this
... ... @@ -45,6 +46,33 @@ define(
45 46 })
46 47  
47 48 }
  49 + ctrl.popupImageLayer = function(){
  50 + $$('#customer-order').on('click', '.view-img-cls', function(e) {
  51 + var url = $$(this).attr('data-url');
  52 + $$('#img-mask').remove();
  53 + var imgContent = '<div id="img-mask" style="z-index:2;background:#000;justify-content:center;position: absolute;bottom:0;top:0;width:100%;display:flex;flex-direction: column;align-items: center"><div style="width:100%;"> <img width="100%" src="'+url+'" /></div></div>';
  54 + $$('#customer-order').append(imgContent);
  55 + })
  56 +
  57 + $$('#customer-order').on('click', '#img-mask, #img-mask img', function(e) {
  58 + e.preventDefault();
  59 + e.stopPropagation()
  60 +
  61 + var bh = document.body.clientHeight;
  62 + var ih = $$('#img-mask img').height();
  63 + console.log(bh+'dddd'+ih)
  64 + var interval = Math.abs(ih-bh);
  65 + if (interval >=0 && interval <= 20) {
  66 + $$('#img-mask').remove();
  67 + } else {
  68 + var id = $$(e.target).attr('id');
  69 + if('img-mask' == id) {
  70 + $$('#img-mask').remove();
  71 + }
  72 + }
  73 +
  74 + })
  75 + }
48 76 return ctrl;
49 77 }
50 78 );
... ...
web/src/js/order/index-controller.js
... ... @@ -34,6 +34,7 @@ define(
34 34 me.tabEvent();
35 35 me.bindScrollEvent();
36 36 me.addEvent();
  37 + me.orderClickEvent();
37 38 }
38 39  
39 40 ctrl.tabEvent = function() {
... ... @@ -46,7 +47,7 @@ define(
46 47 var me = this;
47 48 me.nodata = '没有数据了';
48 49 var e = $$('.nodata');
49   - if(0 == e.length){
  50 + if(0 == e.length) {
50 51 $$('#index .order-list').append('<div class="nodata">'+me.nodata+'</div>');
51 52 }
52 53 me.app.detachInfiniteScroll('.infinite-scroll');
... ... @@ -81,6 +82,10 @@ define(
81 82 me.pageCount = parseInt(e.page_count);
82 83 }
83 84 me.renderItems(e.items, true);
  85 + if (me.page >= me.pageCount){
  86 + me.handleNodata();
  87 + return ;
  88 + }
84 89 }
85 90 },
86 91 error : function(e){},
... ... @@ -124,6 +129,12 @@ define(
124 129 window.location.href = url.to('order/#submit');
125 130 })
126 131 }
  132 + ctrl.orderClickEvent = function() {
  133 + $$('#index').on('click', '.order-item', function(e){
  134 + var id = $$(this).attr('data-id')
  135 + window.location.href = url.to('order#order-details/'+id)
  136 + })
  137 + }
127 138 return ctrl;
128 139 }
129 140 );
... ...
web/src/js/order/order-details-controller.js
... ... @@ -26,7 +26,7 @@ define(
26 26 var me = this;
27 27 console.log("bindEvents");
28 28 me.finishBtnEvent();
29   - me.goToComment();
  29 + me.popupImageLayer();
30 30 }
31 31 ctrl.loadPage = function() {
32 32 var me = this
... ... @@ -43,13 +43,36 @@ define(
43 43 window.location.href = url.to('order/#cost-list/'+me.id);
44 44 })
45 45 }
46   - ctrl.goToComment = function() {
47   - var me = this;
48   - $$('#order-details .rate-btn-cls').click(function(e){
49   - window.location.href = url.to('order/#rate/'+me.id)
  46 +
  47 + ctrl.popupImageLayer = function(){
  48 + $$('#order-details').on('click', '.view-img-cls', function(e) {
  49 + var url = $$(this).attr('data-url');
  50 + $$('#img-mask').remove();
  51 + var imgContent = '<div id="img-mask" style="z-index:2;background:#000;justify-content:center;position: absolute;bottom:0;top:0;width:100%;display:flex;flex-direction: column;align-items: center"><div style="width:100%;"> <img width="100%" src="'+url+'" /></div></div>';
  52 + $$('#order-details').append(imgContent);
50 53 })
51 54  
  55 + $$('#order-details').on('click', '#img-mask, #img-mask img', function(e) {
  56 + e.preventDefault();
  57 + e.stopPropagation()
  58 +
  59 + var bh = document.body.clientHeight;
  60 + var ih = $$('#img-mask img').height();
  61 + console.log(bh+'dddd'+ih)
  62 + var interval = Math.abs(ih-bh);
  63 + if (interval >=0 && interval <= 20) {
  64 + $$('#img-mask').remove();
  65 + console.log('dddd')
  66 + } else {
  67 + var id = $$(e.target).attr('id');
  68 + if('img-mask' == id) {
  69 + $$('#img-mask').remove();
  70 + }
  71 + }
  72 +
  73 + })
52 74 }
  75 +
53 76 return ctrl;
54 77 }
55 78 );
... ...
web/src/js/order/rate-controller.js
... ... @@ -63,7 +63,7 @@ define(
63 63 }
64 64 })
65 65  
66   - var pData = me.csrf({star:star,comment:comment});
  66 + var pData = me.csrf({star:star,comment:comment,id:me.id});
67 67 utils.httpPost(url.to(submitURL), pData, function(res) {
68 68 if (res.success) {
69 69 window.location.replace(url.to('order/customer#customer-order/'+me.id+'/'+me.sn));
... ...