Commit 1de3211f597969db25ce6b679c563fab791f5dab
1 parent
0c34aba8
Exists in
master
app-wx(v0.1.0 build 15)
1.F 短信接口审核成功,配置参数
Showing
30 changed files
with
1043 additions
and
495 deletions
Show diff stats
app-wx/config/params.php
1 | <?php | 1 | <?php |
2 | return [ | 2 | return [ |
3 | 'adminEmail' => 'admin@example.com', | 3 | 'adminEmail' => 'admin@example.com', |
4 | - 'VERSION' => 'v0.1.0 build 14', // 当前发布版本号: v0.1.0 是版本号 | build 1 是编译次数 | 4 | + 'testLoginPhones' => ['13900139001'], |
5 | + 'VERSION' => 'v0.1.0 build 15', // 当前发布版本号: v0.1.0 是版本号 | build 1 是编译次数 | ||
5 | ]; | 6 | ]; |
app-wx/controllers/BaseController.php
@@ -3,19 +3,6 @@ | @@ -3,19 +3,6 @@ | ||
3 | namespace app\wx\controllers; | 3 | namespace app\wx\controllers; |
4 | 4 | ||
5 | use Yii; | 5 | use Yii; |
6 | -use yii\helpers\Url; | ||
7 | -use yii\web\BadRequestHttpException; | ||
8 | -use yii\db\Query; | ||
9 | -use app\wx\models\Engineer; | ||
10 | -use common\helpers\WxHelper; | ||
11 | -use common\helpers\ImageManager; | ||
12 | -use common\exts\wechat\Log as WxLog; | ||
13 | -use common\helpers\Log as AppLog; | ||
14 | -use common\helpers\PerformanceUtils; | ||
15 | -use common\models\SysSetting; | ||
16 | -use domain\engineer\EngineerRole; | ||
17 | -use domain\engineer\EngineerStatus; | ||
18 | -use domain\engineer\EngineerSkillTagsRepository; | ||
19 | use stdClass; | 6 | use stdClass; |
20 | use function header; | 7 | use function header; |
21 | use function in_array; | 8 | use function in_array; |
@@ -25,12 +12,8 @@ use function urlencode; | @@ -25,12 +12,8 @@ use function urlencode; | ||
25 | 12 | ||
26 | 13 | ||
27 | /** | 14 | /** |
28 | - * 只有通过 微信 OAuth 验证后才能访问整个App, | ||
29 | - * 这是所有应用控制器的基类 | ||
30 | * Class BaseController | 15 | * Class BaseController |
31 | * @package app\wx\controllers | 16 | * @package app\wx\controllers |
32 | - * @author lee.li <34923862@qq.com> | ||
33 | - * @date 2015/07/01 | ||
34 | */ | 17 | */ |
35 | class BaseController extends AppController | 18 | class BaseController extends AppController |
36 | { | 19 | { |
@@ -168,6 +151,7 @@ class BaseController extends AppController | @@ -168,6 +151,7 @@ class BaseController extends AppController | ||
168 | $this->site->timestamp = time(); | 151 | $this->site->timestamp = time(); |
169 | $this->site->noncestr = 'noncestr'; | 152 | $this->site->noncestr = 'noncestr'; |
170 | $this->site->signature = 'signature'; | 153 | $this->site->signature = 'signature'; |
154 | + $this->site->servicePhone = Yii::$app->params['SERVICE_PHONE']; | ||
171 | } | 155 | } |
172 | 156 | ||
173 | /** | 157 | /** |
app-wx/models/UserIdentity.php
@@ -159,19 +159,28 @@ class UserIdentity extends UserModel | @@ -159,19 +159,28 @@ class UserIdentity extends UserModel | ||
159 | return $e; | 159 | return $e; |
160 | } | 160 | } |
161 | $code = PhoneCodeHelper::getLoginCode($mobile); | 161 | $code = PhoneCodeHelper::getLoginCode($mobile); |
162 | + $testPhones = Yii::$app->params['testLoginPhones']; | ||
162 | $sms = new SmsMessage(); | 163 | $sms = new SmsMessage(); |
163 | if ($code) { | 164 | if ($code) { |
164 | // 发送短信 | 165 | // 发送短信 |
165 | - $sms->sendLoginCode($mobile, $code); | 166 | + if (!in_array($mobile, $testPhones)) { |
167 | + $sms->sendLoginCode($mobile, $code); | ||
168 | + } | ||
166 | $e->message = '您的登录码已经发送,请注意查收短信!'; | 169 | $e->message = '您的登录码已经发送,请注意查收短信!'; |
167 | } else { | 170 | } else { |
168 | $code = PhoneCodeHelper::setLoginCode($mobile); | 171 | $code = PhoneCodeHelper::setLoginCode($mobile); |
169 | // 发送短信 | 172 | // 发送短信 |
170 | - $sms->sendLoginCode($mobile, $code); | 173 | + if (!in_array($mobile, $testPhones)) { |
174 | + $sms->sendLoginCode($mobile, $code); | ||
175 | + } | ||
171 | $e->message = '您的登录码已经发送,请注意查收短信!'; | 176 | $e->message = '您的登录码已经发送,请注意查收短信!'; |
172 | } | 177 | } |
178 | + if (!in_array($mobile, $testPhones)) { | ||
179 | + $e->code = ''; | ||
180 | + } else { | ||
181 | + $e->code = $code; | ||
182 | + } | ||
173 | $e->success = true; | 183 | $e->success = true; |
174 | - $e->code = $code; | ||
175 | 184 | ||
176 | return $e; | 185 | return $e; |
177 | } | 186 | } |
@@ -213,6 +222,7 @@ class UserIdentity extends UserModel | @@ -213,6 +222,7 @@ class UserIdentity extends UserModel | ||
213 | 'user_id' => $userEntity->id, | 222 | 'user_id' => $userEntity->id, |
214 | 'emergency_contact' => $rData['emergencyContact'], | 223 | 'emergency_contact' => $rData['emergencyContact'], |
215 | 'emergency_person' => $rData['emergencyPerson'], | 224 | 'emergency_person' => $rData['emergencyPerson'], |
225 | + 'address' => $rData['address'] | ||
216 | ]; | 226 | ]; |
217 | $userProfile = UserProfile::create($pData); | 227 | $userProfile = UserProfile::create($pData); |
218 | PhoneCodeHelper::removeRegisterCode($mobile); | 228 | PhoneCodeHelper::removeRegisterCode($mobile); |
@@ -228,6 +238,8 @@ class UserIdentity extends UserModel | @@ -228,6 +238,8 @@ class UserIdentity extends UserModel | ||
228 | $userProfile->qa_charge_pic = $QAChargePicImage[0].$QAChargePicImage[1]; | 238 | $userProfile->qa_charge_pic = $QAChargePicImage[0].$QAChargePicImage[1]; |
229 | $userProfile->save(); | 239 | $userProfile->save(); |
230 | $tran->commit(); | 240 | $tran->commit(); |
241 | + // 因为注册完成之后要审核,必须把已经登录的退出去 | ||
242 | + Yii::$app->user->logout(); | ||
231 | $e->success = true; | 243 | $e->success = true; |
232 | $e->message = '注册完成,账号审核通过后即可使用'; | 244 | $e->message = '注册完成,账号审核通过后即可使用'; |
233 | } catch (Exception $ex) { | 245 | } catch (Exception $ex) { |
@@ -248,6 +260,7 @@ class UserIdentity extends UserModel | @@ -248,6 +260,7 @@ class UserIdentity extends UserModel | ||
248 | $e = new stdClass(); | 260 | $e = new stdClass(); |
249 | $e->success = false; | 261 | $e->success = false; |
250 | $e->message = ''; | 262 | $e->message = ''; |
263 | + $e->code = ''; | ||
251 | $userModel = UserModel::findOne(['mobile' => $mobile]); | 264 | $userModel = UserModel::findOne(['mobile' => $mobile]); |
252 | $sms = new SmsMessage(); | 265 | $sms = new SmsMessage(); |
253 | if ($userModel) { | 266 | if ($userModel) { |
@@ -261,14 +274,15 @@ class UserIdentity extends UserModel | @@ -261,14 +274,15 @@ class UserIdentity extends UserModel | ||
261 | //发送短信 | 274 | //发送短信 |
262 | $sms->sendRegCode($mobile, $code); | 275 | $sms->sendRegCode($mobile, $code); |
263 | $e->message = '您的注册码已经发送,请注意查收短信!'; | 276 | $e->message = '您的注册码已经发送,请注意查收短信!'; |
264 | - $e->code = $code; | 277 | + |
265 | } else { | 278 | } else { |
266 | $code = PhoneCodeHelper::setRegisterCode($mobile); | 279 | $code = PhoneCodeHelper::setRegisterCode($mobile); |
267 | //发送短信 | 280 | //发送短信 |
268 | $sms->sendRegCode($mobile, $code); | 281 | $sms->sendRegCode($mobile, $code); |
269 | $e->message = '您的注册码已经发送,请注意查收短信!'; | 282 | $e->message = '您的注册码已经发送,请注意查收短信!'; |
270 | - $e->code = $code; | ||
271 | } | 283 | } |
284 | + $e->code = ''; | ||
285 | + $e->success = true; | ||
272 | 286 | ||
273 | return $e; | 287 | return $e; |
274 | } | 288 | } |
app-wx/modules/order/controllers/CustomerController.php
@@ -2,12 +2,11 @@ | @@ -2,12 +2,11 @@ | ||
2 | 2 | ||
3 | namespace app\wx\modules\order\controllers; | 3 | namespace app\wx\modules\order\controllers; |
4 | 4 | ||
5 | +use Yii; | ||
6 | +use common\helpers\ImageManager; | ||
5 | use common\helpers\Utils; | 7 | use common\helpers\Utils; |
6 | use domain\order\RepairOrderRate; | 8 | use domain\order\RepairOrderRate; |
7 | use domain\order\RepairOrderRateRepository; | 9 | use domain\order\RepairOrderRateRepository; |
8 | -use Yii; | ||
9 | - | ||
10 | - | ||
11 | use domain\order\RepairOrderRepository; | 10 | use domain\order\RepairOrderRepository; |
12 | use domain\order\RepairOrderStatus; | 11 | use domain\order\RepairOrderStatus; |
13 | 12 | ||
@@ -48,7 +47,10 @@ class CustomerController extends CustomerBaseController | @@ -48,7 +47,10 @@ class CustomerController extends CustomerBaseController | ||
48 | $brokenImages = []; | 47 | $brokenImages = []; |
49 | $baseURL = Yii::$app->request->getHostInfo(); | 48 | $baseURL = Yii::$app->request->getHostInfo(); |
50 | foreach($brokenImageModels as $k => $v) { | 49 | foreach($brokenImageModels as $k => $v) { |
51 | - $brokenImages[] = $baseURL.'/'.$v->image_path; | 50 | + $brokenImages[] = [ |
51 | + 'url' => ImageManager::getUrl($v->image_path), | ||
52 | + 'thumb' => ImageManager::getUrl($v->image_path, 'min') | ||
53 | + ]; | ||
52 | } | 54 | } |
53 | $totalPrice = $orderModel->order_price; | 55 | $totalPrice = $orderModel->order_price; |
54 | $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderId]); | 56 | $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderId]); |
@@ -59,7 +61,10 @@ class CustomerController extends CustomerBaseController | @@ -59,7 +61,10 @@ class CustomerController extends CustomerBaseController | ||
59 | $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderId]); | 61 | $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderId]); |
60 | $finishImages = []; | 62 | $finishImages = []; |
61 | foreach($fImages as $k => $image) { | 63 | foreach($fImages as $k => $image) { |
62 | - $finishImages[] = $baseURL.'/'.$image['image_path']; | 64 | + $finishImages[] = [ |
65 | + 'url' => ImageManager::getUrl($image['image_path']), | ||
66 | + 'thumb' => ImageManager::getUrl($image['image_path'], 'min') | ||
67 | + ]; | ||
63 | } | 68 | } |
64 | $comments = []; | 69 | $comments = []; |
65 | $hasComment = false; | 70 | $hasComment = false; |
app-wx/modules/order/controllers/DefaultController.php
@@ -7,6 +7,7 @@ use yii\helpers\HtmlPurifier; | @@ -7,6 +7,7 @@ use yii\helpers\HtmlPurifier; | ||
7 | use yii\base\Exception; | 7 | use yii\base\Exception; |
8 | use yii\log\Logger; | 8 | use yii\log\Logger; |
9 | 9 | ||
10 | +use common\helpers\ImageManager; | ||
10 | use domain\order\RepairOrder; | 11 | use domain\order\RepairOrder; |
11 | use domain\order\RepairOrderImages; | 12 | use domain\order\RepairOrderImages; |
12 | use domain\order\RepairOrderRepository; | 13 | use domain\order\RepairOrderRepository; |
@@ -17,8 +18,7 @@ use domain\order\RepairOrderRate; | @@ -17,8 +18,7 @@ use domain\order\RepairOrderRate; | ||
17 | use domain\order\RepairOrderRateRepository; | 18 | use domain\order\RepairOrderRateRepository; |
18 | use domain\order\CarModelRepository; | 19 | use domain\order\CarModelRepository; |
19 | use domain\system\SmsMessage; | 20 | use domain\system\SmsMessage; |
20 | -use domain\user\models\UserProfile as UserProfileModel; | ||
21 | -use domain\user\UserProfile; | 21 | +use domain\user\UserRepository; |
22 | 22 | ||
23 | use stdClass; | 23 | use stdClass; |
24 | 24 | ||
@@ -38,30 +38,6 @@ class DefaultController extends BaseController | @@ -38,30 +38,6 @@ class DefaultController extends BaseController | ||
38 | /** | 38 | /** |
39 | * @return string | 39 | * @return string |
40 | */ | 40 | */ |
41 | - public function actionSubmit() | ||
42 | - { | ||
43 | - $e = new stdClass(); | ||
44 | - $e->success = false; | ||
45 | - $e->message = 'ok'; | ||
46 | - $e->address = ''; | ||
47 | - $userId = $this->getUserId(); | ||
48 | - $userProfile = UserProfileModel::findOne(['user_id' => $userId]); | ||
49 | - if ($userProfile) { | ||
50 | - if (!empty($userProfile->address)) { | ||
51 | - $e->address = $userProfile->address; | ||
52 | - } | ||
53 | - $e->success = true; | ||
54 | - } else { | ||
55 | - | ||
56 | - $e->message = '找不到维修厂信息'; | ||
57 | - } | ||
58 | - | ||
59 | - return $this->renderJson($e); | ||
60 | - } | ||
61 | - | ||
62 | - /** | ||
63 | - * @return string | ||
64 | - */ | ||
65 | public function actionDoSubmit() | 41 | public function actionDoSubmit() |
66 | { | 42 | { |
67 | $e = new stdClass(); | 43 | $e = new stdClass(); |
@@ -76,7 +52,6 @@ class DefaultController extends BaseController | @@ -76,7 +52,6 @@ class DefaultController extends BaseController | ||
76 | $preRepair = HtmlPurifier::process($req->post('preRepair'), ['HTML.Allowed' => '']); | 52 | $preRepair = HtmlPurifier::process($req->post('preRepair'), ['HTML.Allowed' => '']); |
77 | $predictPrice = HtmlPurifier::process($req->post('repairPrice'), ['HTML.Allowed' => '']); | 53 | $predictPrice = HtmlPurifier::process($req->post('repairPrice'), ['HTML.Allowed' => '']); |
78 | $finishDate = HtmlPurifier::process($req->post('finishDate'), ['HTML.Allowed' => '']); | 54 | $finishDate = HtmlPurifier::process($req->post('finishDate'), ['HTML.Allowed' => '']); |
79 | - $address = HtmlPurifier::process($req->post('address'), ['HTML.Allowed' => '']); | ||
80 | $images = $req->post('images'); | 55 | $images = $req->post('images'); |
81 | 56 | ||
82 | if (empty($carNo)) { | 57 | if (empty($carNo)) { |
@@ -98,10 +73,17 @@ class DefaultController extends BaseController | @@ -98,10 +73,17 @@ class DefaultController extends BaseController | ||
98 | } else { | 73 | } else { |
99 | $predict_finish_time = strtotime($finishDate.':00:00'); | 74 | $predict_finish_time = strtotime($finishDate.':00:00'); |
100 | } | 75 | } |
101 | - if (empty($address)) { | ||
102 | - $e->message = '维修厂地址必填'; | ||
103 | - return $this->renderJson($e); | 76 | + $address = ''; |
77 | + $maintainer = ''; | ||
78 | + $tel = ''; | ||
79 | + $userModel = UserRepository::findOne(['id' => $userId]); | ||
80 | + if ($userModel) { | ||
81 | + $maintainer = $userModel->name; | ||
82 | + $tel = $userModel->mobile; | ||
83 | + $profileModel = $userModel->profile; | ||
84 | + $address = isset($profileModel)?$profileModel->address:''; | ||
104 | } | 85 | } |
86 | + | ||
105 | $data = [ | 87 | $data = [ |
106 | 'user_id' => $userId, | 88 | 'user_id' => $userId, |
107 | 'car_no' => $carNo, | 89 | 'car_no' => $carNo, |
@@ -111,6 +93,8 @@ class DefaultController extends BaseController | @@ -111,6 +93,8 @@ class DefaultController extends BaseController | ||
111 | 'predict_fault' => $preRepair, | 93 | 'predict_fault' => $preRepair, |
112 | 'predict_price' => $predictPrice, | 94 | 'predict_price' => $predictPrice, |
113 | 'maintainer_address' => $address, | 95 | 'maintainer_address' => $address, |
96 | + 'maintainer_tel' => $tel, | ||
97 | + 'maintainer_name' => $maintainer, | ||
114 | 'predict_finish_time' => $predict_finish_time, | 98 | 'predict_finish_time' => $predict_finish_time, |
115 | 'status' => RepairOrderStatus::WORKING, | 99 | 'status' => RepairOrderStatus::WORKING, |
116 | ]; | 100 | ]; |
@@ -119,11 +103,10 @@ class DefaultController extends BaseController | @@ -119,11 +103,10 @@ class DefaultController extends BaseController | ||
119 | $repairOrder = RepairOrder::create($data); | 103 | $repairOrder = RepairOrder::create($data); |
120 | $uuid = $repairOrder->uuid; | 104 | $uuid = $repairOrder->uuid; |
121 | RepairOrderImages::createBrokenImages($repairOrder->id, $uuid, $images); | 105 | RepairOrderImages::createBrokenImages($repairOrder->id, $uuid, $images); |
122 | - UserProfile::updateAddress($userId, $address); | ||
123 | $tran->commit(); | 106 | $tran->commit(); |
124 | RepairOrderImages::mvBrokenImages($uuid, $images); | 107 | RepairOrderImages::mvBrokenImages($uuid, $images); |
125 | - //$sms = new SmsMessage(); | ||
126 | - //$sms->sendSubmitInfo($phone, $finishDate); | 108 | + |
109 | + $this->sendSubmitSMS($repairOrder, $userId); | ||
127 | $e->orderId = $uuid; | 110 | $e->orderId = $uuid; |
128 | $e->success = true; | 111 | $e->success = true; |
129 | } catch(Exception $ex) { | 112 | } catch(Exception $ex) { |
@@ -138,6 +121,59 @@ class DefaultController extends BaseController | @@ -138,6 +121,59 @@ class DefaultController extends BaseController | ||
138 | } | 121 | } |
139 | 122 | ||
140 | /** | 123 | /** |
124 | + * 下维修单短信 | ||
125 | + * @param $orderModel | ||
126 | + * @param $userId | ||
127 | + * @return array | ||
128 | + */ | ||
129 | + private function sendSubmitSMS($orderModel, $userId) | ||
130 | + { | ||
131 | + /* | ||
132 | + 您好,维修厂${maintainer}已进行维修,预计完成时间${dateTime},预估维修内容${repairPlan},预估维修费用${repairPrice},维修厂地址:${address},联系电话:${tel} | ||
133 | + * */ | ||
134 | + $smsVars = ['maintainer' => '', 'tel' => '', 'address' => '', 'dateTime' => '', 'repairPlan' => '', 'repairPrice' => '']; | ||
135 | + $smsVars['maintainer'] = $orderModel->maintainer_name; | ||
136 | + $smsVars['tel'] = $orderModel->maintainer_tel; | ||
137 | + $smsVars['address'] = $orderModel->maintainer_address; | ||
138 | + $smsVars['dateTime'] = date('Y年m月d日 H点', $orderModel->predict_finish_time); | ||
139 | + $smsVars['repairPlan'] = $orderModel->predict_fault; | ||
140 | + $smsVars['repairPrice'] = $orderModel->predict_price; | ||
141 | + $phone = $orderModel->contact_mobile; | ||
142 | + $sms = new SmsMessage(); | ||
143 | + return $sms->sendSubmitInfo($phone, $smsVars); | ||
144 | + } | ||
145 | + | ||
146 | + /** | ||
147 | + * @param $orderModel | ||
148 | + * @param $userId | ||
149 | + */ | ||
150 | + private function sendFinishSMS($orderModel, $userId) | ||
151 | + { | ||
152 | + /* | ||
153 | + 您好,${maintainer}已对您的车维修完成,点击http://gkauto.jiwork.com/site/t?o=${code}可以给本次服务评分。如有意见请拨打投诉热线:${tel} | ||
154 | + * */ | ||
155 | + | ||
156 | + $smsVars = ['maintainer' => '', 'code' => '', 'tel' => '']; | ||
157 | + | ||
158 | + $smsVars['tel'] = Yii::$app->params['SERVICE_PHONE']; | ||
159 | + $smsVars['maintainer'] = $orderModel->maintainer_name; | ||
160 | + $smsVars['code'] = $orderModel->short_uuid; | ||
161 | + $phone = $orderModel->contact_mobile; | ||
162 | + $sms = new SmsMessage(); | ||
163 | + return $sms->sendFinishInfo($phone, $smsVars); | ||
164 | + | ||
165 | + } | ||
166 | + | ||
167 | + public function actionSms() | ||
168 | + { | ||
169 | + $userId = $this->getUserId(); | ||
170 | + $orderModel = RepairOrderRepository::findOne(['id' => 12]); | ||
171 | + //$result = $this->sendSubmitSMS($orderModel, $userId); | ||
172 | + //var_dump($result); | ||
173 | + //$this->sendFinishSMS($orderModel, $userId); | ||
174 | + } | ||
175 | + | ||
176 | + /** | ||
141 | * @return string | 177 | * @return string |
142 | */ | 178 | */ |
143 | public function actionOrderList() | 179 | public function actionOrderList() |
@@ -218,7 +254,10 @@ class DefaultController extends BaseController | @@ -218,7 +254,10 @@ class DefaultController extends BaseController | ||
218 | $brokenImages = []; | 254 | $brokenImages = []; |
219 | $baseURL = Yii::$app->request->getHostInfo(); | 255 | $baseURL = Yii::$app->request->getHostInfo(); |
220 | foreach($brokenImageModels as $k => $v) { | 256 | foreach($brokenImageModels as $k => $v) { |
221 | - $brokenImages[] = $baseURL.'/'.$v->image_path; | 257 | + $brokenImages[] = [ |
258 | + 'url' => ImageManager::getUrl($v->image_path), | ||
259 | + 'thumb' => ImageManager::getUrl($v->image_path, 'min') | ||
260 | + ]; | ||
222 | } | 261 | } |
223 | $totalPrice = $orderModel->order_price; | 262 | $totalPrice = $orderModel->order_price; |
224 | $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderId]); | 263 | $rPlans = RepairOrderRepository::findOrderPlansAll(['repair_order_id' => $orderId]); |
@@ -229,7 +268,10 @@ class DefaultController extends BaseController | @@ -229,7 +268,10 @@ class DefaultController extends BaseController | ||
229 | $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderId]); | 268 | $fImages = RepairOrderRepository::findOrderFinishImageAll(['repair_order_id' => $orderId]); |
230 | $finishImages = []; | 269 | $finishImages = []; |
231 | foreach($fImages as $k => $image) { | 270 | foreach($fImages as $k => $image) { |
232 | - $finishImages[] = $baseURL.'/'.$image['image_path']; | 271 | + $finishImages[] = [ |
272 | + 'url' => ImageManager::getUrl($image['image_path']), | ||
273 | + 'thumb' => ImageManager::getUrl($image['image_path'], 'min') | ||
274 | + ]; | ||
233 | } | 275 | } |
234 | $hasComment = false; | 276 | $hasComment = false; |
235 | $comments = []; | 277 | $comments = []; |
@@ -316,8 +358,8 @@ class DefaultController extends BaseController | @@ -316,8 +358,8 @@ class DefaultController extends BaseController | ||
316 | $orderModel->save(); | 358 | $orderModel->save(); |
317 | $tran->commit(); | 359 | $tran->commit(); |
318 | RepairFinishImages::mvFinishImages($orderModel->uuid, $images); | 360 | RepairFinishImages::mvFinishImages($orderModel->uuid, $images); |
319 | - //$sms = new SmsMessage(); | ||
320 | - //$sms->sendFinishInfo($phone, $finishDate); | 361 | + $this->sendFinishSMS($orderModel, $userId); |
362 | + | ||
321 | $e->success = true; | 363 | $e->success = true; |
322 | } catch (Exception $ex) { | 364 | } catch (Exception $ex) { |
323 | $tran->rollBack(); | 365 | $tran->rollBack(); |
app-wx/modules/order/views/default/pages/customer-order-template.php
@@ -6,6 +6,7 @@ $baseUrl = Url::base(true); | @@ -6,6 +6,7 @@ $baseUrl = Url::base(true); | ||
6 | body,div,p,span,input,ul,li{padding: 0;margin: 0} | 6 | body,div,p,span,input,ul,li{padding: 0;margin: 0} |
7 | input{-webkit-appearance: none;} | 7 | input{-webkit-appearance: none;} |
8 | ul,li{list-style: none } | 8 | ul,li{list-style: none } |
9 | + .navbar-inner{background-color:#ff7b24} | ||
9 | #customer-order .content-div { width:100%; background: #fff; display:inline-flex;padding-top: 1rem} | 10 | #customer-order .content-div { width:100%; background: #fff; display:inline-flex;padding-top: 1rem} |
10 | #customer-order .left-title-div {width:33%; font-size:1rem; font-weight:400; color:rgba(0,0,0,1); line-height:1.81rem;} | 11 | #customer-order .left-title-div {width:33%; font-size:1rem; font-weight:400; color:rgba(0,0,0,1); line-height:1.81rem;} |
11 | #customer-order .center-content-div {width:47%; font-size:1rem; font-weight:400; color:rgba(118,118,118,1); line-height:1.81rem;} | 12 | #customer-order .center-content-div {width:47%; font-size:1rem; font-weight:400; color:rgba(118,118,118,1); line-height:1.81rem;} |
@@ -66,14 +67,14 @@ $baseUrl = Url::base(true); | @@ -66,14 +67,14 @@ $baseUrl = Url::base(true); | ||
66 | #customer-order .content-wrapper .rate-btn-cls{color:#fff;border-radius: 1.5rem;padding:0.6rem 0.8rem;text-align: center;background:#FF8728;width:4rem;} | 67 | #customer-order .content-wrapper .rate-btn-cls{color:#fff;border-radius: 1.5rem;padding:0.6rem 0.8rem;text-align: center;background:#FF8728;width:4rem;} |
67 | #customer-order .content-wrapper .comment-txt-cls{color:#000;font-size: 1rem;line-height: 1.5rem} | 68 | #customer-order .content-wrapper .comment-txt-cls{color:#000;font-size: 1rem;line-height: 1.5rem} |
68 | 69 | ||
69 | - #customer-order #warranty-wrapper{position: absolute;top: 0;bottom: 0;width: 100%;z-index: 2;padding:3rem 2rem;box-sizing: border-box;background: rgba(0,0,0,0.3);} | 70 | + #customer-order #warranty-wrapper{position: absolute;top: 0;bottom: 0;width: 100%;z-index: 2;padding:3rem 1rem;box-sizing: border-box;background: rgba(0,0,0,0.3);} |
70 | #customer-order #warranty-wrapper .warranty-wrapper-inner{width:100%;background: #fff;height:100%;position: relative} | 71 | #customer-order #warranty-wrapper .warranty-wrapper-inner{width:100%;background: #fff;height:100%;position: relative} |
71 | #customer-order #warranty-wrapper .paragraph-cls{width:100%;padding:0.5rem 1rem;box-sizing: border-box;margin:0.25rem 0 ;} | 72 | #customer-order #warranty-wrapper .paragraph-cls{width:100%;padding:0.5rem 1rem;box-sizing: border-box;margin:0.25rem 0 ;} |
72 | 73 | ||
73 | #customer-order #warranty-wrapper .agree-btn{position: absolute;bottom:0;right:0;width:100%;color:#FF8728;background: #fff;padding:0.8rem 0.5rem;box-sizing: border-box;text-align: center} | 74 | #customer-order #warranty-wrapper .agree-btn{position: absolute;bottom:0;right:0;width:100%;color:#FF8728;background: #fff;padding:0.8rem 0.5rem;box-sizing: border-box;text-align: center} |
74 | 75 | ||
75 | - #customer-order #warranty-wrapper h2{font-size: 1.0rem;font-weight: bold;} | ||
76 | - #customer-order #warranty-wrapper p{line-height: 1.5rem;padding:0;margin: 0;} | 76 | + #customer-order #warranty-wrapper h2{font-size: 0.875rem;font-weight: bold;color:#000} |
77 | + #customer-order #warranty-wrapper p{line-height: 1.5rem;padding:0;margin: 0;color:#000} | ||
77 | </style> | 78 | </style> |
78 | <script id="customer-order-template" type="text/template"> | 79 | <script id="customer-order-template" type="text/template"> |
79 | <div class="pages"> | 80 | <div class="pages"> |
@@ -142,13 +143,13 @@ $baseUrl = Url::base(true); | @@ -142,13 +143,13 @@ $baseUrl = Url::base(true); | ||
142 | </div> | 143 | </div> |
143 | 144 | ||
144 | <div class="pic-image-div"> | 145 | <div class="pic-image-div"> |
145 | - <div class="pic-image-list"> | 146 | + <ul class="pic-image-list"> |
146 | {{#each item.brokenImages}} | 147 | {{#each item.brokenImages}} |
147 | - <div class="img-cls"> | ||
148 | - <div class="pic-class view-img-cls" data-url="{{this}}" style="background-image: url({{this}})"></div> | ||
149 | - </div> | 148 | + <li class="img-cls"> |
149 | + <div class="pic-class view-img-cls" data-index="{{@index}}" data-url="{{this.url}}" style="background-image: url({{this.thumb}})"></div> | ||
150 | + </li> | ||
150 | {{/each}} | 151 | {{/each}} |
151 | - </div> | 152 | + </ul> |
152 | </div> | 153 | </div> |
153 | </div> | 154 | </div> |
154 | 155 | ||
@@ -176,7 +177,7 @@ $baseUrl = Url::base(true); | @@ -176,7 +177,7 @@ $baseUrl = Url::base(true); | ||
176 | <ul class="finish-image-ul"> | 177 | <ul class="finish-image-ul"> |
177 | {{#each this.item.finishImages}} | 178 | {{#each this.item.finishImages}} |
178 | <li class="finish-image-li"> | 179 | <li class="finish-image-li"> |
179 | - <div class="finishImage view-img-cls" data-url="{{this}}" style="background-image:url('{{this}}')"> </div></li> | 180 | + <div class="finishImage view-img-cls" data-index="{{@index}}" data-url="{{this.url}}" style="background-image:url('{{this.thumb}}')"> </div></li> |
180 | {{/each}} | 181 | {{/each}} |
181 | </ul> | 182 | </ul> |
182 | </div> | 183 | </div> |
@@ -222,8 +223,15 @@ $baseUrl = Url::base(true); | @@ -222,8 +223,15 @@ $baseUrl = Url::base(true); | ||
222 | <div class="warranty-wrapper-inner"> | 223 | <div class="warranty-wrapper-inner"> |
223 | <div class="agree-btn">确定</div> | 224 | <div class="agree-btn">确定</div> |
224 | <div class="warranty-list-div" style="width:100%;height:calc(100% - 50px);;overflow-y: scroll"> | 225 | <div class="warranty-list-div" style="width:100%;height:calc(100% - 50px);;overflow-y: scroll"> |
226 | + <div style="padding:0 1rem;box-sizing: border-box"> | ||
227 | + <h1 style="color:#f85a5a;font-size:1.25rem;text-align: center">维修厂质量保修承诺书</h1> | ||
228 | + <div style="width: 100%;text-align: center;font-size: 0.65rem;margin-bottom: 0.5rem;">GK车管家发[2020] 001号</div> | ||
229 | + <div style="width: 100%;display: block;background: #f85a5a;height: 0.125rem;"></div> | ||
230 | + </div> | ||
225 | <div class="paragraph-cls"> | 231 | <div class="paragraph-cls"> |
226 | - <h2>维修厂质量保修承诺书</h2> | 232 | + <p style="line-height: 1.85rem">各位车主:<br> |
233 | + 维修厂对维修质保做以下条款承诺 | ||
234 | + </p> | ||
227 | <p>一、更换的配件保证期为6个月或两万公里(超出其中一项即为超出保证期)。</p> | 235 | <p>一、更换的配件保证期为6个月或两万公里(超出其中一项即为超出保证期)。</p> |
228 | <p>二、在保证期内,凡属于更换的配件质量,维修工艺,装配调整等质量缺陷而引起车辆(或零部件)损坏,本店应予以免费保修。</p> | 236 | <p>二、在保证期内,凡属于更换的配件质量,维修工艺,装配调整等质量缺陷而引起车辆(或零部件)损坏,本店应予以免费保修。</p> |
229 | <p>三、特殊零部件的保修承诺<br/> | 237 | <p>三、特殊零部件的保修承诺<br/> |
@@ -235,7 +243,7 @@ $baseUrl = Url::base(true); | @@ -235,7 +243,7 @@ $baseUrl = Url::base(true); | ||
235 | <p>四、钣金喷漆质保期终身(腻子开裂,漆面失光,变色)本店予以免费维修。如有外力导致脱漆或开裂,本店不予以保修!</p> | 243 | <p>四、钣金喷漆质保期终身(腻子开裂,漆面失光,变色)本店予以免费维修。如有外力导致脱漆或开裂,本店不予以保修!</p> |
236 | 244 | ||
237 | </div> | 245 | </div> |
238 | - | 246 | + <div style="color:#000;text-align: right;padding:0 1rem;box-sizing: border-box"> 2020年1月</div> |
239 | </div> | 247 | </div> |
240 | </div> | 248 | </div> |
241 | </div> | 249 | </div> |
app-wx/modules/order/views/default/pages/order-details-template.php
@@ -6,6 +6,7 @@ $baseUrl = Url::base(true); | @@ -6,6 +6,7 @@ $baseUrl = Url::base(true); | ||
6 | body,div,p,span,input{padding: 0;margin: 0} | 6 | body,div,p,span,input{padding: 0;margin: 0} |
7 | input{-webkit-appearance: none;} | 7 | input{-webkit-appearance: none;} |
8 | ul,li{list-style: none } | 8 | ul,li{list-style: none } |
9 | + .navbar-inner{background-color:#ff7b24} | ||
9 | #order-details .content-div { width:100%; background: #fff; display:inline-flex;padding-top: 1rem} | 10 | #order-details .content-div { width:100%; background: #fff; display:inline-flex;padding-top: 1rem} |
10 | #order-details .left-title-div {width:33%; font-size:1rem; font-weight:400; color:rgba(0,0,0,1); line-height:1.81rem;} | 11 | #order-details .left-title-div {width:33%; font-size:1rem; font-weight:400; color:rgba(0,0,0,1); line-height:1.81rem;} |
11 | #order-details .center-content-div {width:47%; font-size:1rem; font-weight:400; color:rgba(118,118,118,1); line-height:1.81rem;} | 12 | #order-details .center-content-div {width:47%; font-size:1rem; font-weight:400; color:rgba(118,118,118,1); line-height:1.81rem;} |
@@ -35,7 +36,7 @@ $baseUrl = Url::base(true); | @@ -35,7 +36,7 @@ $baseUrl = Url::base(true); | ||
35 | } | 36 | } |
36 | #order-details .pic-image-list .img-cls{width:25%;box-sizing: border-box;float:left;padding-top:0.3rem;padding-right:0.3rem;} | 37 | #order-details .pic-image-list .img-cls{width:25%;box-sizing: border-box;float:left;padding-top:0.3rem;padding-right:0.3rem;} |
37 | 38 | ||
38 | - #order-details .pic-class { margin-right: 0.5rem width:100%;height:0;padding-bottom: 100%;overflow:hidden; | 39 | + #order-details .pic-class { margin-right: 0.5rem; width:100%;height:0;padding-bottom: 100%;overflow:hidden; |
39 | background-position: center center; | 40 | background-position: center center; |
40 | background-repeat: no-repeat; | 41 | background-repeat: no-repeat; |
41 | -webkit-background-size:cover; | 42 | -webkit-background-size:cover; |
@@ -132,13 +133,13 @@ $baseUrl = Url::base(true); | @@ -132,13 +133,13 @@ $baseUrl = Url::base(true); | ||
132 | <div class="left-title-div"><span class="padding-left-1rem">车损照片</span></div> | 133 | <div class="left-title-div"><span class="padding-left-1rem">车损照片</span></div> |
133 | </div> | 134 | </div> |
134 | <div class="pic-image-div"> | 135 | <div class="pic-image-div"> |
135 | - <div class="pic-image-list"> | 136 | + <ul class="pic-image-list"> |
136 | {{#each item.brokenImages}} | 137 | {{#each item.brokenImages}} |
137 | - <div class="img-cls"> | ||
138 | - <div class="pic-class view-img-cls" data-url="{{this}}" style="background-image: url({{this}})"></div> | ||
139 | - </div> | 138 | + <li class="img-cls"> |
139 | + <div class="pic-class view-img-cls" data-index="{{@index}}" data-url="{{this.url}}" style="background-image: url({{this.thumb}})"></div> | ||
140 | + </li> | ||
140 | {{/each}} | 141 | {{/each}} |
141 | - </div> | 142 | + </ul> |
142 | </div> | 143 | </div> |
143 | </div> | 144 | </div> |
144 | {{#js_compare "'working' == this.item.status"}} | 145 | {{#js_compare "'working' == this.item.status"}} |
@@ -168,7 +169,7 @@ $baseUrl = Url::base(true); | @@ -168,7 +169,7 @@ $baseUrl = Url::base(true); | ||
168 | <ul class="finish-image-ul"> | 169 | <ul class="finish-image-ul"> |
169 | {{#each this.item.finishImages}} | 170 | {{#each this.item.finishImages}} |
170 | <li class="finish-image-li"> | 171 | <li class="finish-image-li"> |
171 | - <div class="finishImage view-img-cls" data-url="{{this}}" style="background-image:url('{{this}}')"> </div></li> | 172 | + <div class="finishImage view-img-cls" data-index="{{@index}}" data-url="{{this.url}}" style="background-image:url('{{this.thumb}}')"> </div></li> |
172 | {{/each}} | 173 | {{/each}} |
173 | </ul> | 174 | </ul> |
174 | </div> | 175 | </div> |
@@ -207,4 +208,4 @@ $baseUrl = Url::base(true); | @@ -207,4 +208,4 @@ $baseUrl = Url::base(true); | ||
207 | </div> | 208 | </div> |
208 | </div> | 209 | </div> |
209 | </div> | 210 | </div> |
210 | -</script> | ||
211 | \ No newline at end of file | 211 | \ No newline at end of file |
212 | +</script> |
app-wx/modules/order/views/default/pages/rate-template.php
@@ -4,17 +4,17 @@ $baseUrl = Url::base(true); | @@ -4,17 +4,17 @@ $baseUrl = Url::base(true); | ||
4 | ?> | 4 | ?> |
5 | <style> | 5 | <style> |
6 | body,div,p,span,input{padding: 0;margin: 0} | 6 | body,div,p,span,input{padding: 0;margin: 0} |
7 | - input{-webkit-appearance: none;} | 7 | + input,textarea{-webkit-appearance: none;} |
8 | #rate .content-div { background: #fff; height: auto;padding: 1rem} | 8 | #rate .content-div { background: #fff; height: auto;padding: 1rem} |
9 | - #rate .page-content{ background-color: #ECF0F2 }#rate .upload-box .upload-title | 9 | + #rate .page-content{ background-color: #ECF0F2 } |
10 | 10 | ||
11 | - #rate .rate-title { height:1.06rem; font-size:1.06rem; font-weight:400; color:rgba(9,9,9,1); line-height:0.75rem;margin-right:1rem;} | 11 | + #rate .rate-title{ height:1.06rem; font-size:1.06rem; font-weight:400; color:rgba(9,9,9,1); line-height:0.75rem;margin-right:1rem;} |
12 | #rate .rate-title-two { height:1.06rem; font-size:1.06rem; font-weight:400; color:rgba(9,9,9,1); line-height:0.75rem; padding-top: 1rem;} | 12 | #rate .rate-title-two { height:1.06rem; font-size:1.06rem; font-weight:400; color:rgba(9,9,9,1); line-height:0.75rem; padding-top: 1rem;} |
13 | #rate .comment-div {margin-top: 0.3rem;display: flex;border:1px solid #DDD;line-height: 1.06rem} | 13 | #rate .comment-div {margin-top: 0.3rem;display: flex;border:1px solid #DDD;line-height: 1.06rem} |
14 | #rate .star-row{display:flex;align-items: center;margin-bottom:0.4rem} | 14 | #rate .star-row{display:flex;align-items: center;margin-bottom:0.4rem} |
15 | #rate .img-star {width: 1.4rem; height: 1.4rem; float: left; vertical-align: middle; margin-right: 0.8rem;background-image:url(<?= $baseUrl . "/i/order/rate/rate_no_select.png"?>);background-repeat: no-repeat;background-size: 1.4rem auto;} | 15 | #rate .img-star {width: 1.4rem; height: 1.4rem; float: left; vertical-align: middle; margin-right: 0.8rem;background-image:url(<?= $baseUrl . "/i/order/rate/rate_no_select.png"?>);background-repeat: no-repeat;background-size: 1.4rem auto;} |
16 | #rate .star-on{background-image:url(<?= $baseUrl . "/i/order/rate/rate_star.png"?>);} | 16 | #rate .star-on{background-image:url(<?= $baseUrl . "/i/order/rate/rate_star.png"?>);} |
17 | - #rate .text-content {width: 100%;height: 7.5rem; resize: none;line-height:inherit;padding: 0.5rem;font-size: 1rem} | 17 | + #rate .text-content {width: 100%;height: 7.5rem;border:0; resize: none;line-height:inherit;padding: 0.5rem;font-size: 1rem} |
18 | #rate .btn-box{width:100%;display: block;padding:1rem;box-sizing: border-box;margin-top:2rem;} | 18 | #rate .btn-box{width:100%;display: block;padding:1rem;box-sizing: border-box;margin-top:2rem;} |
19 | #rate .rate-text { font-size:0.94rem; font-weight:400; color:rgba(0,0,0,1); line-height:1.75rem;} | 19 | #rate .rate-text { font-size:0.94rem; font-weight:400; color:rgba(0,0,0,1); line-height:1.75rem;} |
20 | 20 | ||
@@ -37,8 +37,6 @@ $baseUrl = Url::base(true); | @@ -37,8 +37,6 @@ $baseUrl = Url::base(true); | ||
37 | 37 | ||
38 | #rate .submit-cls{background:#FF8728;color:#fff;border-radius: 1.2rem;box-sizing: border-box;padding:0.8rem 1rem;width:80%;margin: 0 auto;text-align: center} | 38 | #rate .submit-cls{background:#FF8728;color:#fff;border-radius: 1.2rem;box-sizing: border-box;padding:0.8rem 1rem;width:80%;margin: 0 auto;text-align: center} |
39 | 39 | ||
40 | - | ||
41 | - | ||
42 | </style> | 40 | </style> |
43 | <script id="rate-template" type="text/template"> | 41 | <script id="rate-template" type="text/template"> |
44 | <div class="pages"> | 42 | <div class="pages"> |
@@ -97,6 +95,7 @@ $baseUrl = Url::base(true); | @@ -97,6 +95,7 @@ $baseUrl = Url::base(true); | ||
97 | </ul> | 95 | </ul> |
98 | </div> | 96 | </div> |
99 | </div> | 97 | </div> |
98 | + <div style="display: block;padding:0.5rem 0;box-sizing: border-box">投诉监督电话:{{servicePhone}}</div> | ||
100 | </div> | 99 | </div> |
101 | 100 | ||
102 | <div class="btn-box"> | 101 | <div class="btn-box"> |
app-wx/modules/order/views/default/pages/submit-template.php
@@ -99,7 +99,7 @@ $baseUrl = Url::base(true); | @@ -99,7 +99,7 @@ $baseUrl = Url::base(true); | ||
99 | </li> | 99 | </li> |
100 | <li class="s-li-item"> | 100 | <li class="s-li-item"> |
101 | <div class="s-li-div"> | 101 | <div class="s-li-div"> |
102 | - <label class="s-li-label">预估维修内容</label> | 102 | + <label class="s-li-label">预估维修内容<span class="require-cls">*</span></label> |
103 | <div class="s-li-div-input-box"> | 103 | <div class="s-li-div-input-box"> |
104 | <input class="s-li-div-input preRepair" type="text" value="" placeholder="请填写预估维修内容" /> | 104 | <input class="s-li-div-input preRepair" type="text" value="" placeholder="请填写预估维修内容" /> |
105 | </div> | 105 | </div> |
@@ -107,7 +107,7 @@ $baseUrl = Url::base(true); | @@ -107,7 +107,7 @@ $baseUrl = Url::base(true); | ||
107 | </li> | 107 | </li> |
108 | <li class="s-li-item"> | 108 | <li class="s-li-item"> |
109 | <div class="s-li-div"> | 109 | <div class="s-li-div"> |
110 | - <label class="s-li-label">预估维修费用</label> | 110 | + <label class="s-li-label">预估维修费用<span class="require-cls">*</span></label> |
111 | <div class="s-li-div-input-box" style="position: relative"> | 111 | <div class="s-li-div-input-box" style="position: relative"> |
112 | <input class="s-li-div-input repairPrice" type="number" value="" placeholder="请填写预估维修费用" /> | 112 | <input class="s-li-div-input repairPrice" type="number" value="" placeholder="请填写预估维修费用" /> |
113 | <span class="price-union-cls">元</span> | 113 | <span class="price-union-cls">元</span> |
@@ -123,14 +123,7 @@ $baseUrl = Url::base(true); | @@ -123,14 +123,7 @@ $baseUrl = Url::base(true); | ||
123 | </div> | 123 | </div> |
124 | </div> | 124 | </div> |
125 | </li> | 125 | </li> |
126 | - <li class="s-li-item"> | ||
127 | - <div class="s-li-div"> | ||
128 | - <label class="s-li-label">维修厂地址<span class="require-cls">*</span></label> | ||
129 | - <div class="s-li-div-input-box"> | ||
130 | - <input class="s-li-div-input maintainerAddress" type="text" value="" placeholder="请填写维修厂地址" /> | ||
131 | - </div> | ||
132 | - </div> | ||
133 | - </li> | 126 | + |
134 | </ul> | 127 | </ul> |
135 | </div> | 128 | </div> |
136 | 129 |
app-wx/modules/user/controllers/DefaultController.php
@@ -33,19 +33,34 @@ class DefaultController extends BaseController | @@ -33,19 +33,34 @@ class DefaultController extends BaseController | ||
33 | $e->message = 'ok'; | 33 | $e->message = 'ok'; |
34 | $userId = 0; | 34 | $userId = 0; |
35 | 35 | ||
36 | + if (isset($_POST["uploadType"]) && 'base64' == $_POST["uploadType"]) { | ||
37 | + $e = $this->uploadFileStr(); | ||
38 | + } else { | ||
39 | + $e = $this->uploadFile(); | ||
40 | + } | ||
41 | + return $this->renderJson($e); | ||
42 | + } | ||
43 | + | ||
44 | + private function uploadFile() | ||
45 | + { | ||
46 | + $e = new stdClass(); | ||
47 | + $e->success = false; | ||
48 | + $e->message = 'ok'; | ||
49 | + | ||
36 | if (empty($_FILES["file"])) { | 50 | if (empty($_FILES["file"])) { |
37 | $e->message = '文件为空'; | 51 | $e->message = '文件为空'; |
38 | - return $this->renderJson($e); | 52 | + return $e; |
39 | } | 53 | } |
54 | + | ||
40 | if (empty($_FILES["file"]['tmp_name'])) { | 55 | if (empty($_FILES["file"]['tmp_name'])) { |
41 | $e->message = '文件为空'; | 56 | $e->message = '文件为空'; |
42 | - return $this->renderJson($e); | 57 | + return $e; |
43 | } | 58 | } |
44 | $type = $_FILES["file"]["type"]; | 59 | $type = $_FILES["file"]["type"]; |
45 | $typeArr = explode('/', $type); | 60 | $typeArr = explode('/', $type); |
46 | if ('image' !== $typeArr[0]) { | 61 | if ('image' !== $typeArr[0]) { |
47 | $e->message = '只能上传 png, jpg 等文件'; | 62 | $e->message = '只能上传 png, jpg 等文件'; |
48 | - return $this->renderJson($e); | 63 | + return $e; |
49 | } | 64 | } |
50 | 65 | ||
51 | $uploadInfo = ImageManager::uploadImg($_FILES["file"]); | 66 | $uploadInfo = ImageManager::uploadImg($_FILES["file"]); |
@@ -59,7 +74,33 @@ class DefaultController extends BaseController | @@ -59,7 +74,33 @@ class DefaultController extends BaseController | ||
59 | $e->tmpUrl = $tmpUrl; | 74 | $e->tmpUrl = $tmpUrl; |
60 | $e->message = 'ok'; | 75 | $e->message = 'ok'; |
61 | 76 | ||
62 | - return $this->renderJson($e); | 77 | + return $e; |
63 | } | 78 | } |
64 | 79 | ||
80 | + private function uploadFileStr() | ||
81 | + { | ||
82 | + $e = new stdClass(); | ||
83 | + $e->success = false; | ||
84 | + $e->message = 'fail'; | ||
85 | + $e->tmpFile = ''; | ||
86 | + $e->tmpMinUrl = ''; | ||
87 | + $e->tmpUrl = ''; | ||
88 | + $imgData = $this->request->post("file"); | ||
89 | + $imgData = str_replace('data:image/jpeg;base64,', '', $imgData); | ||
90 | + $imageStr = base64_decode($imgData); | ||
91 | + if ($imageStr) { | ||
92 | + $uploadInfo = ImageManager::saveBase64ImgFileToLocal($imageStr); | ||
93 | + $filename = $uploadInfo[0]; | ||
94 | + $tmpUrl = $this->site->base_url.'/'.$uploadInfo[2]; | ||
95 | + $tmpMinFile = $this->site->base_url.'/'.$uploadInfo[3]; | ||
96 | + | ||
97 | + $e->success = true; | ||
98 | + $e->tmpFile = $filename; | ||
99 | + $e->tmpMinUrl = $tmpMinFile; | ||
100 | + $e->tmpUrl = $tmpUrl; | ||
101 | + $e->message = 'ok'; | ||
102 | + } | ||
103 | + | ||
104 | + return $e; | ||
105 | + } | ||
65 | } | 106 | } |
66 | \ No newline at end of file | 107 | \ No newline at end of file |
app-wx/modules/user/controllers/LoginController.php
@@ -42,8 +42,7 @@ class LoginController extends BaseController | @@ -42,8 +42,7 @@ class LoginController extends BaseController | ||
42 | $code = $codeRe->code; | 42 | $code = $codeRe->code; |
43 | } | 43 | } |
44 | 44 | ||
45 | - $e->success = true; | ||
46 | - // 测试用 | 45 | + // 测试用 - 正式启用的时候这里要关闭了 |
47 | $e->testCode = $code; | 46 | $e->testCode = $code; |
48 | 47 | ||
49 | return $this->renderJson($e); | 48 | return $this->renderJson($e); |
@@ -67,6 +66,7 @@ class LoginController extends BaseController | @@ -67,6 +66,7 @@ class LoginController extends BaseController | ||
67 | $QAChargePic = $this->request->post('QAChargePic'); | 66 | $QAChargePic = $this->request->post('QAChargePic'); |
68 | $emergencyContact = $this->request->post('emergencyContact'); | 67 | $emergencyContact = $this->request->post('emergencyContact'); |
69 | $emergencyPerson = $this->request->post('emergencyPerson'); | 68 | $emergencyPerson = $this->request->post('emergencyPerson'); |
69 | + $address = $this->request->post('address'); | ||
70 | 70 | ||
71 | if (empty($name)) { | 71 | if (empty($name)) { |
72 | $e->message = '车厂名称必填'; | 72 | $e->message = '车厂名称必填'; |
@@ -91,7 +91,10 @@ class LoginController extends BaseController | @@ -91,7 +91,10 @@ class LoginController extends BaseController | ||
91 | $e->message = '紧急联系电话必填'; | 91 | $e->message = '紧急联系电话必填'; |
92 | return $this->renderJson($e); | 92 | return $this->renderJson($e); |
93 | } | 93 | } |
94 | - | 94 | + if (empty($address)) { |
95 | + $e->message = '维修厂地址必填'; | ||
96 | + return $this->renderJson($e); | ||
97 | + } | ||
95 | if (empty($licensePic)) { | 98 | if (empty($licensePic)) { |
96 | $e->message = '请上传营业执照'; | 99 | $e->message = '请上传营业执照'; |
97 | return $this->renderJson($e); | 100 | return $this->renderJson($e); |
@@ -122,7 +125,7 @@ class LoginController extends BaseController | @@ -122,7 +125,7 @@ class LoginController extends BaseController | ||
122 | } | 125 | } |
123 | 126 | ||
124 | $rData = [ | 127 | $rData = [ |
125 | - 'name' => $name, 'emergencyContact' => $emergencyContact, 'emergencyPerson' => $emergencyPerson, | 128 | + 'name' => $name, 'emergencyContact' => $emergencyContact, 'emergencyPerson' => $emergencyPerson, 'address' => $address, |
126 | 'licensePic' => $licensePic, 'headPic' => $headPic, 'techChargePic' => $techChargePic ,'QAChargePic' => $QAChargePic | 129 | 'licensePic' => $licensePic, 'headPic' => $headPic, 'techChargePic' => $techChargePic ,'QAChargePic' => $QAChargePic |
127 | ]; | 130 | ]; |
128 | $regResult = UserIdentity::register($mobile, $rData); | 131 | $regResult = UserIdentity::register($mobile, $rData); |
app-wx/modules/user/views/default/pages/register-template.php
@@ -17,7 +17,7 @@ $baseUrl = Url::base(true); | @@ -17,7 +17,7 @@ $baseUrl = Url::base(true); | ||
17 | #register .input-list .validation-code{display:flex;align-items: center} | 17 | #register .input-list .validation-code{display:flex;align-items: center} |
18 | #register .input-list .get-code-cls{width: 10rem;font-size: 1rem;display: flex;align-items: center;justify-content:center;color:#FF8728;padding:0.302rem 0.3rem;box-sizing: border-box;border-left:0;} | 18 | #register .input-list .get-code-cls{width: 10rem;font-size: 1rem;display: flex;align-items: center;justify-content:center;color:#FF8728;padding:0.302rem 0.3rem;box-sizing: border-box;border-left:0;} |
19 | #register .upload-box{padding:0 2rem 1rem 2rem;box-sizing: border-box;overflow: hidden} | 19 | #register .upload-box{padding:0 2rem 1rem 2rem;box-sizing: border-box;overflow: hidden} |
20 | - #register .upload-box .upload-section{width:50%;margin-bottom:0.5rem;float:left} | 20 | + #register .upload-box .upload-section{width:50%;margin-bottom:0.5rem;float:left;display: flex;justify-content: center;flex-direction: column;align-items: center} |
21 | #register .upload-box .upload-title{line-height: 1.5rem;color:#BCBCBC;margin-bottom:0;} | 21 | #register .upload-box .upload-title{line-height: 1.5rem;color:#BCBCBC;margin-bottom:0;} |
22 | #register .upload-box .upload-img-box{display: block;width: 50%;} | 22 | #register .upload-box .upload-img-box{display: block;width: 50%;} |
23 | #register .upload-box .upload-item{width:100%;height:0;padding-bottom: 100%;overflow:hidden; | 23 | #register .upload-box .upload-item{width:100%;height:0;padding-bottom: 100%;overflow:hidden; |
@@ -37,7 +37,7 @@ $baseUrl = Url::base(true); | @@ -37,7 +37,7 @@ $baseUrl = Url::base(true); | ||
37 | #register input::input-placeholder{ | 37 | #register input::input-placeholder{ |
38 | color:#BCBCBC | 38 | color:#BCBCBC |
39 | } | 39 | } |
40 | - #register .legal-agreement{padding:0.2rem 2rem;width: 100%;box-sizing: border-box;display:flex;align-items: center} | 40 | + #register .legal-agreement{padding:0.2rem 2rem;width: 100%;box-sizing: border-box;display:flex;align-items: center;justify-content: center} |
41 | #register .check-agreement{width:1rem;height: 1rem;display: block;border:1px solid #ccc;border-radius: 1rem;} | 41 | #register .check-agreement{width:1rem;height: 1rem;display: block;border:1px solid #ccc;border-radius: 1rem;} |
42 | #register .legal-agreement .checked-active{border:1px solid #FF8728;background: #FF8728;position: relative} | 42 | #register .legal-agreement .checked-active{border:1px solid #FF8728;background: #FF8728;position: relative} |
43 | #register .legal-agreement .checked-active:after{content: '';position: absolute;top: 4px;left: 3px;width: 0.50rem;height: 0.2rem;border-top: 0.125rem solid #fff;border-right: 0.125rem solid #fff;transform: rotate(135deg);} | 43 | #register .legal-agreement .checked-active:after{content: '';position: absolute;top: 4px;left: 3px;width: 0.50rem;height: 0.2rem;border-top: 0.125rem solid #fff;border-right: 0.125rem solid #fff;transform: rotate(135deg);} |
@@ -46,14 +46,14 @@ $baseUrl = Url::base(true); | @@ -46,14 +46,14 @@ $baseUrl = Url::base(true); | ||
46 | #register .agreement-cls:active, | 46 | #register .agreement-cls:active, |
47 | #register .agreement-cls:visited{color:#FF8728;font-size:0.8rem;} | 47 | #register .agreement-cls:visited{color:#FF8728;font-size:0.8rem;} |
48 | 48 | ||
49 | - #register #agreement-wrapper{position: absolute;top: 0;bottom: 0;width: 100%;z-index: 2;padding:3rem 2rem;box-sizing: border-box;background: rgba(0,0,0,0.3);} | 49 | + #register #agreement-wrapper{position: absolute;top: 0;bottom: 0;width: 100%;z-index: 2;padding:3rem 1rem;box-sizing: border-box;background: rgba(0,0,0,0.3);} |
50 | #register #agreement-wrapper .agreement-wrapper-inner{width:100%;background: #fff;height:100%;position: relative} | 50 | #register #agreement-wrapper .agreement-wrapper-inner{width:100%;background: #fff;height:100%;position: relative} |
51 | #register #agreement-wrapper .paragraph-cls{width:100%;padding:0.5rem 1rem;box-sizing: border-box;margin:0.25rem 0 ;} | 51 | #register #agreement-wrapper .paragraph-cls{width:100%;padding:0.5rem 1rem;box-sizing: border-box;margin:0.25rem 0 ;} |
52 | 52 | ||
53 | #register #agreement-wrapper .agree-btn{position: absolute;bottom:0;right:0;width:100%;color:#FF8728;background: #fff;padding:0.8rem 0.5rem;box-sizing: border-box;text-align: center} | 53 | #register #agreement-wrapper .agree-btn{position: absolute;bottom:0;right:0;width:100%;color:#FF8728;background: #fff;padding:0.8rem 0.5rem;box-sizing: border-box;text-align: center} |
54 | 54 | ||
55 | - #register #agreement-wrapper h2{font-size: 1.0rem;font-weight: bold;} | ||
56 | - #register #agreement-wrapper p{line-height: 1.5rem;padding:0;margin: 0;} | 55 | + #register #agreement-wrapper h2{font-size: 0.9rem;font-weight: bol;color:#000} |
56 | + #register #agreement-wrapper p{line-height: 1.5rem;padding:0;margin: 0;color:#000} | ||
57 | </style> | 57 | </style> |
58 | <script id="register-template" type="text/template"> | 58 | <script id="register-template" type="text/template"> |
59 | <div class="pages"> | 59 | <div class="pages"> |
@@ -86,6 +86,10 @@ $baseUrl = Url::base(true); | @@ -86,6 +86,10 @@ $baseUrl = Url::base(true); | ||
86 | <div class="input-row-cls"> | 86 | <div class="input-row-cls"> |
87 | <label class="input-label-cls"></label><div class="input-div"><input class="input-cls emergency_contact" type="number" placeholder="紧急联系电话" /></div> | 87 | <label class="input-label-cls"></label><div class="input-div"><input class="input-cls emergency_contact" type="number" placeholder="紧急联系电话" /></div> |
88 | </div> | 88 | </div> |
89 | + <div class="input-row-cls"> | ||
90 | + <label class="input-label-cls"></label><div class="input-div"><input class="input-cls address" type="text" placeholder="维修厂地址" /></div> | ||
91 | + </div> | ||
92 | + | ||
89 | </div> | 93 | </div> |
90 | <div class="upload-box"> | 94 | <div class="upload-box"> |
91 | <div class="upload-section"> | 95 | <div class="upload-section"> |
@@ -129,7 +133,7 @@ $baseUrl = Url::base(true); | @@ -129,7 +133,7 @@ $baseUrl = Url::base(true); | ||
129 | 133 | ||
130 | </div> | 134 | </div> |
131 | <div class="legal-agreement"> | 135 | <div class="legal-agreement"> |
132 | - <span class="check-agreement"></span> <a href="javascript:void(0)" class="agreement-cls">《平台车管家服务条款》</a> | 136 | + <span class="check-agreement"></span> <a href="javascript:void(0)" class="agreement-cls">《GK车管家服务条款》</a> |
133 | </div> | 137 | </div> |
134 | <div class="action-box"> | 138 | <div class="action-box"> |
135 | <div class="register-btn-cls register-btn">注册</div> | 139 | <div class="register-btn-cls register-btn">注册</div> |
@@ -144,6 +148,11 @@ $baseUrl = Url::base(true); | @@ -144,6 +148,11 @@ $baseUrl = Url::base(true); | ||
144 | <div class="agreement-wrapper-inner"> | 148 | <div class="agreement-wrapper-inner"> |
145 | <div class="agree-btn">我同意</div> | 149 | <div class="agree-btn">我同意</div> |
146 | <div class="agreement-list-div" style="width:100%;height:calc(100% - 50px);;overflow-y: scroll"> | 150 | <div class="agreement-list-div" style="width:100%;height:calc(100% - 50px);;overflow-y: scroll"> |
151 | + <div style="padding:0 1rem;box-sizing: border-box"> | ||
152 | + <h1 style="color:#f85a5a;font-size:1.25rem;text-align: center">平安车主服务维修流程标准</h1> | ||
153 | + <div style="width: 100%;text-align: center;font-size: 0.65rem;margin-bottom: 0.5rem;">GK车管家发[2020] 001号</div> | ||
154 | + <div style="width: 100%;display: block;background: #f85a5a;height: 0.125rem;"></div> | ||
155 | + </div> | ||
147 | <div class="paragraph-cls"> | 156 | <div class="paragraph-cls"> |
148 | <h2>平安车主服务中心合作维修厂钣金工艺标准流程</h2> | 157 | <h2>平安车主服务中心合作维修厂钣金工艺标准流程</h2> |
149 | <p>1.轻微钣金整形要求,板面平整,无明显坑洼,手感光滑,无高凸点,筋线流畅,车身左右对称标准无差异,板金件工作面需要作羽状边处理,裸露铁皮需要作磷化底漆处理。</p> | 158 | <p>1.轻微钣金整形要求,板面平整,无明显坑洼,手感光滑,无高凸点,筋线流畅,车身左右对称标准无差异,板金件工作面需要作羽状边处理,裸露铁皮需要作磷化底漆处理。</p> |
@@ -190,7 +199,7 @@ $baseUrl = Url::base(true); | @@ -190,7 +199,7 @@ $baseUrl = Url::base(true); | ||
190 | <p>2、中度,重度钣喷(3件以上),需要更换零部件,外部釆购零部件,添加机电维修项目等,根椐维修厂车间生产情况和客户要求协商确认交车时间,征得客户同意。</p> | 199 | <p>2、中度,重度钣喷(3件以上),需要更换零部件,外部釆购零部件,添加机电维修项目等,根椐维修厂车间生产情况和客户要求协商确认交车时间,征得客户同意。</p> |
191 | <p>3、超过时效未能完工交车的,需主动联系客户,征求客户意见和谅解,维修厂应免费提供客户代步车辆。</p> | 200 | <p>3、超过时效未能完工交车的,需主动联系客户,征求客户意见和谅解,维修厂应免费提供客户代步车辆。</p> |
192 | </div> | 201 | </div> |
193 | - | 202 | + <div style="color:#000;text-align: right;padding:0 1rem;box-sizing: border-box"> 2020年1月</div> |
194 | </div> | 203 | </div> |
195 | </div> | 204 | </div> |
196 | </div> | 205 | </div> |
app-wx/views/widgets/js-site.php
@@ -10,5 +10,6 @@ window.$site = { | @@ -10,5 +10,6 @@ window.$site = { | ||
10 | noncestr: '<?=$site->noncestr?>',//noncestr | 10 | noncestr: '<?=$site->noncestr?>',//noncestr |
11 | signature: '<?=$site->signature?>',//signature | 11 | signature: '<?=$site->signature?>',//signature |
12 | user_bridge_url: '<?=$site->user_bridge_url?>', | 12 | user_bridge_url: '<?=$site->user_bridge_url?>', |
13 | - sn: '<?=$site->sn ?>' | 13 | + sn: '<?=$site->sn ?>', |
14 | + servicePhone: '<?=$site->servicePhone?>' | ||
14 | } | 15 | } |
15 | \ No newline at end of file | 16 | \ No newline at end of file |
common/helpers/FileHelper.php
@@ -133,7 +133,7 @@ class FileHelper | @@ -133,7 +133,7 @@ class FileHelper | ||
133 | $tmpPastePath = 'tmp/'; | 133 | $tmpPastePath = 'tmp/'; |
134 | } | 134 | } |
135 | 135 | ||
136 | - $somePath = Yii::getAlias('@app/wx') . "/web/".$tmpPastePath; | 136 | + $somePath = $dir = Yii::getAlias('@site') . "/".$tmpPastePath; |
137 | if (!is_dir($somePath)) { | 137 | if (!is_dir($somePath)) { |
138 | mkdir($somePath, 0777, true); | 138 | mkdir($somePath, 0777, true); |
139 | } | 139 | } |
common/helpers/ImageManager.php
@@ -122,4 +122,36 @@ class ImageManager | @@ -122,4 +122,36 @@ class ImageManager | ||
122 | 122 | ||
123 | return [$filename, $minFileName, $tmpUrl, $tmpMinFile]; | 123 | return [$filename, $minFileName, $tmpUrl, $tmpMinFile]; |
124 | } | 124 | } |
125 | + | ||
126 | + /** | ||
127 | + * @param $imageStr | ||
128 | + * @param string $tmpPath | ||
129 | + * @return array | ||
130 | + */ | ||
131 | + public static function saveBase64ImgFileToLocal($imageStr) | ||
132 | + { | ||
133 | + $somePath = $dir = Yii::getAlias('@site') . "/tmp"; | ||
134 | + if (!is_dir($somePath)) { | ||
135 | + mkdir($somePath, 0777, true); | ||
136 | + } | ||
137 | + if (!is_writable($somePath)) { | ||
138 | + chmod($somePath, 0777); | ||
139 | + } | ||
140 | + $tt = time(); | ||
141 | + $image = imagecreatefromstring($imageStr); | ||
142 | + $fileNameId = 'auto_'.$tt.md5(date('YmdHis').'_'.mt_rand(100000, 999999)); | ||
143 | + $minFileName = $fileNameId.'_min.jpg'; | ||
144 | + $filename = $fileNameId.'.jpg'; | ||
145 | + $saveFilePath = $somePath."/" .$filename; | ||
146 | + imagejpeg($image, $saveFilePath); | ||
147 | + | ||
148 | + $tmpUrl = $tmpMinFile = 'tmp/'.$filename; | ||
149 | + $imgSource = self::_imageCreateFromPath($saveFilePath); | ||
150 | + if ($imgSource) { | ||
151 | + ImageUtils::resizeImage($imgSource, 100, 100, $dir.'/'.$minFileName); | ||
152 | + $tmpMinFile = 'tmp/'.$minFileName; | ||
153 | + } | ||
154 | + | ||
155 | + return [$filename, $minFileName, $tmpUrl, $tmpMinFile]; | ||
156 | + } | ||
125 | } | 157 | } |
126 | \ No newline at end of file | 158 | \ No newline at end of file |
composer.json
@@ -18,7 +18,8 @@ | @@ -18,7 +18,8 @@ | ||
18 | "yiisoft/yii2": "~2.0.6", | 18 | "yiisoft/yii2": "~2.0.6", |
19 | "yiisoft/yii2-bootstrap": "~2.0.0", | 19 | "yiisoft/yii2-bootstrap": "~2.0.0", |
20 | "yiisoft/yii2-swiftmailer": "~2.0.0", | 20 | "yiisoft/yii2-swiftmailer": "~2.0.0", |
21 | - "php-amqplib/php-amqplib": "^2.9" | 21 | + "php-amqplib/php-amqplib": "^2.9", |
22 | + "alibabacloud/client": "^1.5" | ||
22 | }, | 23 | }, |
23 | "require-dev": { | 24 | "require-dev": { |
24 | "yiisoft/yii2-debug": "~2.0.0", | 25 | "yiisoft/yii2-debug": "~2.0.0", |
composer.lock
@@ -4,9 +4,139 @@ | @@ -4,9 +4,139 @@ | ||
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", |
5 | "This file is @generated automatically" | 5 | "This file is @generated automatically" |
6 | ], | 6 | ], |
7 | - "content-hash": "a48067fb03d4d29e121ae6c52d934bc1", | 7 | + "content-hash": "446deeded6c58ced6c733ef16c4f2f6c", |
8 | "packages": [ | 8 | "packages": [ |
9 | { | 9 | { |
10 | + "name": "adbario/php-dot-notation", | ||
11 | + "version": "2.2.0", | ||
12 | + "source": { | ||
13 | + "type": "git", | ||
14 | + "url": "https://github.com/adbario/php-dot-notation.git", | ||
15 | + "reference": "eee4fc81296531e6aafba4c2bbccfc5adab1676e" | ||
16 | + }, | ||
17 | + "dist": { | ||
18 | + "type": "zip", | ||
19 | + "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/eee4fc81296531e6aafba4c2bbccfc5adab1676e", | ||
20 | + "reference": "eee4fc81296531e6aafba4c2bbccfc5adab1676e", | ||
21 | + "shasum": "" | ||
22 | + }, | ||
23 | + "require": { | ||
24 | + "ext-json": "*", | ||
25 | + "php": ">=5.5" | ||
26 | + }, | ||
27 | + "require-dev": { | ||
28 | + "phpunit/phpunit": "^4.0|^5.0|^6.0", | ||
29 | + "squizlabs/php_codesniffer": "^3.0" | ||
30 | + }, | ||
31 | + "type": "library", | ||
32 | + "autoload": { | ||
33 | + "files": [ | ||
34 | + "src/helpers.php" | ||
35 | + ], | ||
36 | + "psr-4": { | ||
37 | + "Adbar\\": "src" | ||
38 | + } | ||
39 | + }, | ||
40 | + "notification-url": "https://packagist.org/downloads/", | ||
41 | + "license": [ | ||
42 | + "MIT" | ||
43 | + ], | ||
44 | + "authors": [ | ||
45 | + { | ||
46 | + "name": "Riku Särkinen", | ||
47 | + "email": "riku@adbar.io" | ||
48 | + } | ||
49 | + ], | ||
50 | + "description": "PHP dot notation access to arrays", | ||
51 | + "homepage": "https://github.com/adbario/php-dot-notation", | ||
52 | + "keywords": [ | ||
53 | + "ArrayAccess", | ||
54 | + "dotnotation" | ||
55 | + ], | ||
56 | + "time": "2019-01-01T23:59:15+00:00" | ||
57 | + }, | ||
58 | + { | ||
59 | + "name": "alibabacloud/client", | ||
60 | + "version": "1.5.20", | ||
61 | + "source": { | ||
62 | + "type": "git", | ||
63 | + "url": "https://github.com/aliyun/openapi-sdk-php-client.git", | ||
64 | + "reference": "e18c5d79072417250f6faf0c1c8ca8bd3fd73f2b" | ||
65 | + }, | ||
66 | + "dist": { | ||
67 | + "type": "zip", | ||
68 | + "url": "https://api.github.com/repos/aliyun/openapi-sdk-php-client/zipball/e18c5d79072417250f6faf0c1c8ca8bd3fd73f2b", | ||
69 | + "reference": "e18c5d79072417250f6faf0c1c8ca8bd3fd73f2b", | ||
70 | + "shasum": "" | ||
71 | + }, | ||
72 | + "require": { | ||
73 | + "adbario/php-dot-notation": "^2.2", | ||
74 | + "clagiordano/weblibs-configmanager": "^1.0", | ||
75 | + "danielstjules/stringy": "^3.1", | ||
76 | + "ext-curl": "*", | ||
77 | + "ext-json": "*", | ||
78 | + "ext-libxml": "*", | ||
79 | + "ext-mbstring": "*", | ||
80 | + "ext-openssl": "*", | ||
81 | + "ext-simplexml": "*", | ||
82 | + "ext-xmlwriter": "*", | ||
83 | + "guzzlehttp/guzzle": "^6.3", | ||
84 | + "mtdowling/jmespath.php": "^2.4", | ||
85 | + "php": ">=5.5" | ||
86 | + }, | ||
87 | + "require-dev": { | ||
88 | + "composer/composer": "^1.8", | ||
89 | + "drupal/coder": "^8.3", | ||
90 | + "ext-dom": "*", | ||
91 | + "ext-pcre": "*", | ||
92 | + "ext-sockets": "*", | ||
93 | + "ext-spl": "*", | ||
94 | + "league/climate": "^3.2.4", | ||
95 | + "mikey179/vfsstream": "^1.6", | ||
96 | + "monolog/monolog": "^1.24", | ||
97 | + "phpunit/phpunit": "^4.8.35|^5.4.3", | ||
98 | + "psr/cache": "^1.0", | ||
99 | + "symfony/dotenv": "^3.4", | ||
100 | + "symfony/var-dumper": "^3.4" | ||
101 | + }, | ||
102 | + "suggest": { | ||
103 | + "ext-sockets": "To use client-side monitoring" | ||
104 | + }, | ||
105 | + "type": "library", | ||
106 | + "autoload": { | ||
107 | + "psr-4": { | ||
108 | + "AlibabaCloud\\Client\\": "src" | ||
109 | + }, | ||
110 | + "files": [ | ||
111 | + "src/Functions.php" | ||
112 | + ] | ||
113 | + }, | ||
114 | + "notification-url": "https://packagist.org/downloads/", | ||
115 | + "license": [ | ||
116 | + "Apache-2.0" | ||
117 | + ], | ||
118 | + "authors": [ | ||
119 | + { | ||
120 | + "name": "Alibaba Cloud SDK", | ||
121 | + "email": "sdk-team@alibabacloud.com", | ||
122 | + "homepage": "http://www.alibabacloud.com" | ||
123 | + } | ||
124 | + ], | ||
125 | + "description": "Alibaba Cloud Client for PHP - Use Alibaba Cloud in your PHP project", | ||
126 | + "homepage": "https://www.alibabacloud.com/", | ||
127 | + "keywords": [ | ||
128 | + "alibaba", | ||
129 | + "alibabacloud", | ||
130 | + "aliyun", | ||
131 | + "client", | ||
132 | + "cloud", | ||
133 | + "library", | ||
134 | + "sdk", | ||
135 | + "tool" | ||
136 | + ], | ||
137 | + "time": "2019-12-30T01:59:20+00:00" | ||
138 | + }, | ||
139 | + { | ||
10 | "name": "bower-asset/bootstrap", | 140 | "name": "bower-asset/bootstrap", |
11 | "version": "v3.3.7", | 141 | "version": "v3.3.7", |
12 | "source": { | 142 | "source": { |
@@ -268,6 +398,110 @@ | @@ -268,6 +398,110 @@ | ||
268 | "time": "2016-09-14T20:40:20+00:00" | 398 | "time": "2016-09-14T20:40:20+00:00" |
269 | }, | 399 | }, |
270 | { | 400 | { |
401 | + "name": "clagiordano/weblibs-configmanager", | ||
402 | + "version": "v1.0.7", | ||
403 | + "source": { | ||
404 | + "type": "git", | ||
405 | + "url": "https://github.com/clagiordano/weblibs-configmanager.git", | ||
406 | + "reference": "6ef4c27354368deb2f54b39bbe06601da8c873a0" | ||
407 | + }, | ||
408 | + "dist": { | ||
409 | + "type": "zip", | ||
410 | + "url": "https://api.github.com/repos/clagiordano/weblibs-configmanager/zipball/6ef4c27354368deb2f54b39bbe06601da8c873a0", | ||
411 | + "reference": "6ef4c27354368deb2f54b39bbe06601da8c873a0", | ||
412 | + "shasum": "" | ||
413 | + }, | ||
414 | + "require": { | ||
415 | + "php": ">=5.4" | ||
416 | + }, | ||
417 | + "require-dev": { | ||
418 | + "clagiordano/phpunit-result-printer": "^1", | ||
419 | + "phpunit/phpunit": "^4.8" | ||
420 | + }, | ||
421 | + "type": "library", | ||
422 | + "autoload": { | ||
423 | + "psr-4": { | ||
424 | + "clagiordano\\weblibs\\configmanager\\": "src/" | ||
425 | + } | ||
426 | + }, | ||
427 | + "notification-url": "https://packagist.org/downloads/", | ||
428 | + "license": [ | ||
429 | + "LGPL-3.0-or-later" | ||
430 | + ], | ||
431 | + "authors": [ | ||
432 | + { | ||
433 | + "name": "Claudio Giordano", | ||
434 | + "email": "claudio.giordano@autistici.org", | ||
435 | + "role": "Developer" | ||
436 | + } | ||
437 | + ], | ||
438 | + "description": "weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object", | ||
439 | + "keywords": [ | ||
440 | + "clagiordano", | ||
441 | + "configuration", | ||
442 | + "manager", | ||
443 | + "tool", | ||
444 | + "weblibs" | ||
445 | + ], | ||
446 | + "time": "2019-09-25T22:10:10+00:00" | ||
447 | + }, | ||
448 | + { | ||
449 | + "name": "danielstjules/stringy", | ||
450 | + "version": "3.1.0", | ||
451 | + "source": { | ||
452 | + "type": "git", | ||
453 | + "url": "https://github.com/danielstjules/Stringy.git", | ||
454 | + "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e" | ||
455 | + }, | ||
456 | + "dist": { | ||
457 | + "type": "zip", | ||
458 | + "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", | ||
459 | + "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", | ||
460 | + "shasum": "" | ||
461 | + }, | ||
462 | + "require": { | ||
463 | + "php": ">=5.4.0", | ||
464 | + "symfony/polyfill-mbstring": "~1.1" | ||
465 | + }, | ||
466 | + "require-dev": { | ||
467 | + "phpunit/phpunit": "~4.0" | ||
468 | + }, | ||
469 | + "type": "library", | ||
470 | + "autoload": { | ||
471 | + "psr-4": { | ||
472 | + "Stringy\\": "src/" | ||
473 | + }, | ||
474 | + "files": [ | ||
475 | + "src/Create.php" | ||
476 | + ] | ||
477 | + }, | ||
478 | + "notification-url": "https://packagist.org/downloads/", | ||
479 | + "license": [ | ||
480 | + "MIT" | ||
481 | + ], | ||
482 | + "authors": [ | ||
483 | + { | ||
484 | + "name": "Daniel St. Jules", | ||
485 | + "email": "danielst.jules@gmail.com", | ||
486 | + "homepage": "http://www.danielstjules.com" | ||
487 | + } | ||
488 | + ], | ||
489 | + "description": "A string manipulation library with multibyte support", | ||
490 | + "homepage": "https://github.com/danielstjules/Stringy", | ||
491 | + "keywords": [ | ||
492 | + "UTF", | ||
493 | + "helpers", | ||
494 | + "manipulation", | ||
495 | + "methods", | ||
496 | + "multibyte", | ||
497 | + "string", | ||
498 | + "utf-8", | ||
499 | + "utility", | ||
500 | + "utils" | ||
501 | + ], | ||
502 | + "time": "2017-06-12T01:10:27+00:00" | ||
503 | + }, | ||
504 | + { | ||
271 | "name": "ezyang/htmlpurifier", | 505 | "name": "ezyang/htmlpurifier", |
272 | "version": "v4.9.3", | 506 | "version": "v4.9.3", |
273 | "source": { | 507 | "source": { |
@@ -315,62 +549,240 @@ | @@ -315,62 +549,240 @@ | ||
315 | "time": "2017-06-03T02:28:16+00:00" | 549 | "time": "2017-06-03T02:28:16+00:00" |
316 | }, | 550 | }, |
317 | { | 551 | { |
318 | - "name": "mdmsoft/yii2-admin", | ||
319 | - "version": "2.9", | 552 | + "name": "guzzlehttp/guzzle", |
553 | + "version": "6.3.3", | ||
320 | "source": { | 554 | "source": { |
321 | "type": "git", | 555 | "type": "git", |
322 | - "url": "https://github.com/mdmsoft/yii2-admin.git", | ||
323 | - "reference": "59e65542b1dc1abcf14c62588ea4ae128e08036c" | 556 | + "url": "https://github.com/guzzle/guzzle.git", |
557 | + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" | ||
324 | }, | 558 | }, |
325 | "dist": { | 559 | "dist": { |
326 | "type": "zip", | 560 | "type": "zip", |
327 | - "url": "https://api.github.com/repos/mdmsoft/yii2-admin/zipball/59e65542b1dc1abcf14c62588ea4ae128e08036c", | ||
328 | - "reference": "59e65542b1dc1abcf14c62588ea4ae128e08036c", | 561 | + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", |
562 | + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", | ||
329 | "shasum": "" | 563 | "shasum": "" |
330 | }, | 564 | }, |
331 | "require": { | 565 | "require": { |
332 | - "yiisoft/yii2": "~2.0.7" | 566 | + "guzzlehttp/promises": "^1.0", |
567 | + "guzzlehttp/psr7": "^1.4", | ||
568 | + "php": ">=5.5" | ||
333 | }, | 569 | }, |
334 | "require-dev": { | 570 | "require-dev": { |
335 | - "yiisoft/yii2-codeception": "~2.0" | 571 | + "ext-curl": "*", |
572 | + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", | ||
573 | + "psr/log": "^1.0" | ||
336 | }, | 574 | }, |
337 | "suggest": { | 575 | "suggest": { |
338 | - "yiisoft/yii2-bootstrap": "Used when using layout 'left-menu', 'right-menu' or 'top-menu'" | 576 | + "psr/log": "Required for using the Log middleware" |
339 | }, | 577 | }, |
340 | - "type": "yii2-extension", | 578 | + "type": "library", |
341 | "extra": { | 579 | "extra": { |
342 | "branch-alias": { | 580 | "branch-alias": { |
343 | - "dev-1.0.master": "1.0.x-dev", | ||
344 | - "dev-master": "2.x-dev" | 581 | + "dev-master": "6.3-dev" |
582 | + } | ||
583 | + }, | ||
584 | + "autoload": { | ||
585 | + "files": [ | ||
586 | + "src/functions_include.php" | ||
587 | + ], | ||
588 | + "psr-4": { | ||
589 | + "GuzzleHttp\\": "src/" | ||
590 | + } | ||
591 | + }, | ||
592 | + "notification-url": "https://packagist.org/downloads/", | ||
593 | + "license": [ | ||
594 | + "MIT" | ||
595 | + ], | ||
596 | + "authors": [ | ||
597 | + { | ||
598 | + "name": "Michael Dowling", | ||
599 | + "email": "mtdowling@gmail.com", | ||
600 | + "homepage": "https://github.com/mtdowling" | ||
601 | + } | ||
602 | + ], | ||
603 | + "description": "Guzzle is a PHP HTTP client library", | ||
604 | + "homepage": "http://guzzlephp.org/", | ||
605 | + "keywords": [ | ||
606 | + "client", | ||
607 | + "curl", | ||
608 | + "framework", | ||
609 | + "http", | ||
610 | + "http client", | ||
611 | + "rest", | ||
612 | + "web service" | ||
613 | + ], | ||
614 | + "time": "2018-04-22T15:46:56+00:00" | ||
615 | + }, | ||
616 | + { | ||
617 | + "name": "guzzlehttp/promises", | ||
618 | + "version": "v1.3.1", | ||
619 | + "source": { | ||
620 | + "type": "git", | ||
621 | + "url": "https://github.com/guzzle/promises.git", | ||
622 | + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" | ||
623 | + }, | ||
624 | + "dist": { | ||
625 | + "type": "zip", | ||
626 | + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", | ||
627 | + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", | ||
628 | + "shasum": "" | ||
629 | + }, | ||
630 | + "require": { | ||
631 | + "php": ">=5.5.0" | ||
632 | + }, | ||
633 | + "require-dev": { | ||
634 | + "phpunit/phpunit": "^4.0" | ||
635 | + }, | ||
636 | + "type": "library", | ||
637 | + "extra": { | ||
638 | + "branch-alias": { | ||
639 | + "dev-master": "1.4-dev" | ||
640 | + } | ||
641 | + }, | ||
642 | + "autoload": { | ||
643 | + "psr-4": { | ||
644 | + "GuzzleHttp\\Promise\\": "src/" | ||
345 | }, | 645 | }, |
346 | - "asset-installer-paths": { | ||
347 | - "npm-asset-library": "vendor/npm", | ||
348 | - "bower-asset-library": "vendor/bower" | 646 | + "files": [ |
647 | + "src/functions_include.php" | ||
648 | + ] | ||
649 | + }, | ||
650 | + "notification-url": "https://packagist.org/downloads/", | ||
651 | + "license": [ | ||
652 | + "MIT" | ||
653 | + ], | ||
654 | + "authors": [ | ||
655 | + { | ||
656 | + "name": "Michael Dowling", | ||
657 | + "email": "mtdowling@gmail.com", | ||
658 | + "homepage": "https://github.com/mtdowling" | ||
659 | + } | ||
660 | + ], | ||
661 | + "description": "Guzzle promises library", | ||
662 | + "keywords": [ | ||
663 | + "promise" | ||
664 | + ], | ||
665 | + "time": "2016-12-20T10:07:11+00:00" | ||
666 | + }, | ||
667 | + { | ||
668 | + "name": "guzzlehttp/psr7", | ||
669 | + "version": "1.4.2", | ||
670 | + "source": { | ||
671 | + "type": "git", | ||
672 | + "url": "https://github.com/guzzle/psr7.git", | ||
673 | + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" | ||
674 | + }, | ||
675 | + "dist": { | ||
676 | + "type": "zip", | ||
677 | + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", | ||
678 | + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", | ||
679 | + "shasum": "" | ||
680 | + }, | ||
681 | + "require": { | ||
682 | + "php": ">=5.4.0", | ||
683 | + "psr/http-message": "~1.0" | ||
684 | + }, | ||
685 | + "provide": { | ||
686 | + "psr/http-message-implementation": "1.0" | ||
687 | + }, | ||
688 | + "require-dev": { | ||
689 | + "phpunit/phpunit": "~4.0" | ||
690 | + }, | ||
691 | + "type": "library", | ||
692 | + "extra": { | ||
693 | + "branch-alias": { | ||
694 | + "dev-master": "1.4-dev" | ||
349 | } | 695 | } |
350 | }, | 696 | }, |
351 | "autoload": { | 697 | "autoload": { |
352 | "psr-4": { | 698 | "psr-4": { |
353 | - "mdm\\admin\\": "" | 699 | + "GuzzleHttp\\Psr7\\": "src/" |
700 | + }, | ||
701 | + "files": [ | ||
702 | + "src/functions_include.php" | ||
703 | + ] | ||
704 | + }, | ||
705 | + "notification-url": "https://packagist.org/downloads/", | ||
706 | + "license": [ | ||
707 | + "MIT" | ||
708 | + ], | ||
709 | + "authors": [ | ||
710 | + { | ||
711 | + "name": "Michael Dowling", | ||
712 | + "email": "mtdowling@gmail.com", | ||
713 | + "homepage": "https://github.com/mtdowling" | ||
714 | + }, | ||
715 | + { | ||
716 | + "name": "Tobias Schultze", | ||
717 | + "homepage": "https://github.com/Tobion" | ||
718 | + } | ||
719 | + ], | ||
720 | + "description": "PSR-7 message implementation that also provides common utility methods", | ||
721 | + "keywords": [ | ||
722 | + "http", | ||
723 | + "message", | ||
724 | + "request", | ||
725 | + "response", | ||
726 | + "stream", | ||
727 | + "uri", | ||
728 | + "url" | ||
729 | + ], | ||
730 | + "time": "2017-03-20T17:10:46+00:00" | ||
731 | + }, | ||
732 | + { | ||
733 | + "name": "mtdowling/jmespath.php", | ||
734 | + "version": "2.4.0", | ||
735 | + "source": { | ||
736 | + "type": "git", | ||
737 | + "url": "https://github.com/jmespath/jmespath.php.git", | ||
738 | + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac" | ||
739 | + }, | ||
740 | + "dist": { | ||
741 | + "type": "zip", | ||
742 | + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/adcc9531682cf87dfda21e1fd5d0e7a41d292fac", | ||
743 | + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac", | ||
744 | + "shasum": "" | ||
745 | + }, | ||
746 | + "require": { | ||
747 | + "php": ">=5.4.0" | ||
748 | + }, | ||
749 | + "require-dev": { | ||
750 | + "phpunit/phpunit": "~4.0" | ||
751 | + }, | ||
752 | + "bin": [ | ||
753 | + "bin/jp.php" | ||
754 | + ], | ||
755 | + "type": "library", | ||
756 | + "extra": { | ||
757 | + "branch-alias": { | ||
758 | + "dev-master": "2.0-dev" | ||
354 | } | 759 | } |
355 | }, | 760 | }, |
761 | + "autoload": { | ||
762 | + "psr-4": { | ||
763 | + "JmesPath\\": "src/" | ||
764 | + }, | ||
765 | + "files": [ | ||
766 | + "src/JmesPath.php" | ||
767 | + ] | ||
768 | + }, | ||
356 | "notification-url": "https://packagist.org/downloads/", | 769 | "notification-url": "https://packagist.org/downloads/", |
357 | "license": [ | 770 | "license": [ |
358 | - "BSD-3-Clause" | 771 | + "MIT" |
359 | ], | 772 | ], |
360 | "authors": [ | 773 | "authors": [ |
361 | { | 774 | { |
362 | - "name": "Misbahul Munir", | ||
363 | - "email": "misbahuldmunir@gmail.com" | 775 | + "name": "Michael Dowling", |
776 | + "email": "mtdowling@gmail.com", | ||
777 | + "homepage": "https://github.com/mtdowling" | ||
364 | } | 778 | } |
365 | ], | 779 | ], |
366 | - "description": "RBAC Auth manager for Yii2 ", | 780 | + "description": "Declaratively specify how to extract elements from a JSON document", |
367 | "keywords": [ | 781 | "keywords": [ |
368 | - "admin", | ||
369 | - "auth", | ||
370 | - "rbac", | ||
371 | - "yii" | 782 | + "json", |
783 | + "jsonpath" | ||
372 | ], | 784 | ], |
373 | - "time": "2018-11-12T12:35:44+00:00" | 785 | + "time": "2016-12-03T22:08:25+00:00" |
374 | }, | 786 | }, |
375 | { | 787 | { |
376 | "name": "php-amqplib/php-amqplib", | 788 | "name": "php-amqplib/php-amqplib", |
@@ -412,7 +824,57 @@ | @@ -412,7 +824,57 @@ | ||
412 | "PhpAmqpLib\\": "PhpAmqpLib/" | 824 | "PhpAmqpLib\\": "PhpAmqpLib/" |
413 | } | 825 | } |
414 | }, | 826 | }, |
415 | - "notification-url": "https://packagist.org/downloads/" | 827 | + "notification-url": "https://packagist.org/downloads/" |
828 | + }, | ||
829 | + { | ||
830 | + "name": "psr/http-message", | ||
831 | + "version": "1.0.1", | ||
832 | + "source": { | ||
833 | + "type": "git", | ||
834 | + "url": "https://github.com/php-fig/http-message.git", | ||
835 | + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" | ||
836 | + }, | ||
837 | + "dist": { | ||
838 | + "type": "zip", | ||
839 | + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
840 | + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
841 | + "shasum": "" | ||
842 | + }, | ||
843 | + "require": { | ||
844 | + "php": ">=5.3.0" | ||
845 | + }, | ||
846 | + "type": "library", | ||
847 | + "extra": { | ||
848 | + "branch-alias": { | ||
849 | + "dev-master": "1.0.x-dev" | ||
850 | + } | ||
851 | + }, | ||
852 | + "autoload": { | ||
853 | + "psr-4": { | ||
854 | + "Psr\\Http\\Message\\": "src/" | ||
855 | + } | ||
856 | + }, | ||
857 | + "notification-url": "https://packagist.org/downloads/", | ||
858 | + "license": [ | ||
859 | + "MIT" | ||
860 | + ], | ||
861 | + "authors": [ | ||
862 | + { | ||
863 | + "name": "PHP-FIG", | ||
864 | + "homepage": "http://www.php-fig.org/" | ||
865 | + } | ||
866 | + ], | ||
867 | + "description": "Common interface for HTTP messages", | ||
868 | + "homepage": "https://github.com/php-fig/http-message", | ||
869 | + "keywords": [ | ||
870 | + "http", | ||
871 | + "http-message", | ||
872 | + "psr", | ||
873 | + "psr-7", | ||
874 | + "request", | ||
875 | + "response" | ||
876 | + ], | ||
877 | + "time": "2016-08-06T14:39:51+00:00" | ||
416 | }, | 878 | }, |
417 | { | 879 | { |
418 | "name": "swiftmailer/swiftmailer", | 880 | "name": "swiftmailer/swiftmailer", |
@@ -469,6 +931,65 @@ | @@ -469,6 +931,65 @@ | ||
469 | "time": "2017-05-01T15:54:03+00:00" | 931 | "time": "2017-05-01T15:54:03+00:00" |
470 | }, | 932 | }, |
471 | { | 933 | { |
934 | + "name": "symfony/polyfill-mbstring", | ||
935 | + "version": "v1.3.0", | ||
936 | + "source": { | ||
937 | + "type": "git", | ||
938 | + "url": "https://github.com/symfony/polyfill-mbstring.git", | ||
939 | + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" | ||
940 | + }, | ||
941 | + "dist": { | ||
942 | + "type": "zip", | ||
943 | + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", | ||
944 | + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", | ||
945 | + "shasum": "" | ||
946 | + }, | ||
947 | + "require": { | ||
948 | + "php": ">=5.3.3" | ||
949 | + }, | ||
950 | + "suggest": { | ||
951 | + "ext-mbstring": "For best performance" | ||
952 | + }, | ||
953 | + "type": "library", | ||
954 | + "extra": { | ||
955 | + "branch-alias": { | ||
956 | + "dev-master": "1.3-dev" | ||
957 | + } | ||
958 | + }, | ||
959 | + "autoload": { | ||
960 | + "psr-4": { | ||
961 | + "Symfony\\Polyfill\\Mbstring\\": "" | ||
962 | + }, | ||
963 | + "files": [ | ||
964 | + "bootstrap.php" | ||
965 | + ] | ||
966 | + }, | ||
967 | + "notification-url": "https://packagist.org/downloads/", | ||
968 | + "license": [ | ||
969 | + "MIT" | ||
970 | + ], | ||
971 | + "authors": [ | ||
972 | + { | ||
973 | + "name": "Nicolas Grekas", | ||
974 | + "email": "p@tchwork.com" | ||
975 | + }, | ||
976 | + { | ||
977 | + "name": "Symfony Community", | ||
978 | + "homepage": "https://symfony.com/contributors" | ||
979 | + } | ||
980 | + ], | ||
981 | + "description": "Symfony polyfill for the Mbstring extension", | ||
982 | + "homepage": "https://symfony.com", | ||
983 | + "keywords": [ | ||
984 | + "compatibility", | ||
985 | + "mbstring", | ||
986 | + "polyfill", | ||
987 | + "portable", | ||
988 | + "shim" | ||
989 | + ], | ||
990 | + "time": "2016-11-14T01:06:16+00:00" | ||
991 | + }, | ||
992 | + { | ||
472 | "name": "yiisoft/yii2", | 993 | "name": "yiisoft/yii2", |
473 | "version": "2.0.12", | 994 | "version": "2.0.12", |
474 | "source": { | 995 | "source": { |
@@ -1037,71 +1558,6 @@ | @@ -1037,71 +1558,6 @@ | ||
1037 | "time": "2016-04-29T12:21:54+00:00" | 1558 | "time": "2016-04-29T12:21:54+00:00" |
1038 | }, | 1559 | }, |
1039 | { | 1560 | { |
1040 | - "name": "guzzlehttp/psr7", | ||
1041 | - "version": "1.4.2", | ||
1042 | - "source": { | ||
1043 | - "type": "git", | ||
1044 | - "url": "https://github.com/guzzle/psr7.git", | ||
1045 | - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" | ||
1046 | - }, | ||
1047 | - "dist": { | ||
1048 | - "type": "zip", | ||
1049 | - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", | ||
1050 | - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", | ||
1051 | - "shasum": "" | ||
1052 | - }, | ||
1053 | - "require": { | ||
1054 | - "php": ">=5.4.0", | ||
1055 | - "psr/http-message": "~1.0" | ||
1056 | - }, | ||
1057 | - "provide": { | ||
1058 | - "psr/http-message-implementation": "1.0" | ||
1059 | - }, | ||
1060 | - "require-dev": { | ||
1061 | - "phpunit/phpunit": "~4.0" | ||
1062 | - }, | ||
1063 | - "type": "library", | ||
1064 | - "extra": { | ||
1065 | - "branch-alias": { | ||
1066 | - "dev-master": "1.4-dev" | ||
1067 | - } | ||
1068 | - }, | ||
1069 | - "autoload": { | ||
1070 | - "psr-4": { | ||
1071 | - "GuzzleHttp\\Psr7\\": "src/" | ||
1072 | - }, | ||
1073 | - "files": [ | ||
1074 | - "src/functions_include.php" | ||
1075 | - ] | ||
1076 | - }, | ||
1077 | - "notification-url": "https://packagist.org/downloads/", | ||
1078 | - "license": [ | ||
1079 | - "MIT" | ||
1080 | - ], | ||
1081 | - "authors": [ | ||
1082 | - { | ||
1083 | - "name": "Michael Dowling", | ||
1084 | - "email": "mtdowling@gmail.com", | ||
1085 | - "homepage": "https://github.com/mtdowling" | ||
1086 | - }, | ||
1087 | - { | ||
1088 | - "name": "Tobias Schultze", | ||
1089 | - "homepage": "https://github.com/Tobion" | ||
1090 | - } | ||
1091 | - ], | ||
1092 | - "description": "PSR-7 message implementation that also provides common utility methods", | ||
1093 | - "keywords": [ | ||
1094 | - "http", | ||
1095 | - "message", | ||
1096 | - "request", | ||
1097 | - "response", | ||
1098 | - "stream", | ||
1099 | - "uri", | ||
1100 | - "url" | ||
1101 | - ], | ||
1102 | - "time": "2017-03-20T17:10:46+00:00" | ||
1103 | - }, | ||
1104 | - { | ||
1105 | "name": "myclabs/deep-copy", | 1561 | "name": "myclabs/deep-copy", |
1106 | "version": "1.6.1", | 1562 | "version": "1.6.1", |
1107 | "source": { | 1563 | "source": { |
@@ -1782,56 +2238,6 @@ | @@ -1782,56 +2238,6 @@ | ||
1782 | "time": "2016-12-08T20:27:08+00:00" | 2238 | "time": "2016-12-08T20:27:08+00:00" |
1783 | }, | 2239 | }, |
1784 | { | 2240 | { |
1785 | - "name": "psr/http-message", | ||
1786 | - "version": "1.0.1", | ||
1787 | - "source": { | ||
1788 | - "type": "git", | ||
1789 | - "url": "https://github.com/php-fig/http-message.git", | ||
1790 | - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" | ||
1791 | - }, | ||
1792 | - "dist": { | ||
1793 | - "type": "zip", | ||
1794 | - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
1795 | - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
1796 | - "shasum": "" | ||
1797 | - }, | ||
1798 | - "require": { | ||
1799 | - "php": ">=5.3.0" | ||
1800 | - }, | ||
1801 | - "type": "library", | ||
1802 | - "extra": { | ||
1803 | - "branch-alias": { | ||
1804 | - "dev-master": "1.0.x-dev" | ||
1805 | - } | ||
1806 | - }, | ||
1807 | - "autoload": { | ||
1808 | - "psr-4": { | ||
1809 | - "Psr\\Http\\Message\\": "src/" | ||
1810 | - } | ||
1811 | - }, | ||
1812 | - "notification-url": "https://packagist.org/downloads/", | ||
1813 | - "license": [ | ||
1814 | - "MIT" | ||
1815 | - ], | ||
1816 | - "authors": [ | ||
1817 | - { | ||
1818 | - "name": "PHP-FIG", | ||
1819 | - "homepage": "http://www.php-fig.org/" | ||
1820 | - } | ||
1821 | - ], | ||
1822 | - "description": "Common interface for HTTP messages", | ||
1823 | - "homepage": "https://github.com/php-fig/http-message", | ||
1824 | - "keywords": [ | ||
1825 | - "http", | ||
1826 | - "http-message", | ||
1827 | - "psr", | ||
1828 | - "psr-7", | ||
1829 | - "request", | ||
1830 | - "response" | ||
1831 | - ], | ||
1832 | - "time": "2016-08-06T14:39:51+00:00" | ||
1833 | - }, | ||
1834 | - { | ||
1835 | "name": "psr/log", | 2241 | "name": "psr/log", |
1836 | "version": "1.0.2", | 2242 | "version": "1.0.2", |
1837 | "source": { | 2243 | "source": { |
@@ -2840,65 +3246,6 @@ | @@ -2840,65 +3246,6 @@ | ||
2840 | "time": "2017-06-01T21:01:25+00:00" | 3246 | "time": "2017-06-01T21:01:25+00:00" |
2841 | }, | 3247 | }, |
2842 | { | 3248 | { |
2843 | - "name": "symfony/polyfill-mbstring", | ||
2844 | - "version": "v1.3.0", | ||
2845 | - "source": { | ||
2846 | - "type": "git", | ||
2847 | - "url": "https://github.com/symfony/polyfill-mbstring.git", | ||
2848 | - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" | ||
2849 | - }, | ||
2850 | - "dist": { | ||
2851 | - "type": "zip", | ||
2852 | - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", | ||
2853 | - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", | ||
2854 | - "shasum": "" | ||
2855 | - }, | ||
2856 | - "require": { | ||
2857 | - "php": ">=5.3.3" | ||
2858 | - }, | ||
2859 | - "suggest": { | ||
2860 | - "ext-mbstring": "For best performance" | ||
2861 | - }, | ||
2862 | - "type": "library", | ||
2863 | - "extra": { | ||
2864 | - "branch-alias": { | ||
2865 | - "dev-master": "1.3-dev" | ||
2866 | - } | ||
2867 | - }, | ||
2868 | - "autoload": { | ||
2869 | - "psr-4": { | ||
2870 | - "Symfony\\Polyfill\\Mbstring\\": "" | ||
2871 | - }, | ||
2872 | - "files": [ | ||
2873 | - "bootstrap.php" | ||
2874 | - ] | ||
2875 | - }, | ||
2876 | - "notification-url": "https://packagist.org/downloads/", | ||
2877 | - "license": [ | ||
2878 | - "MIT" | ||
2879 | - ], | ||
2880 | - "authors": [ | ||
2881 | - { | ||
2882 | - "name": "Nicolas Grekas", | ||
2883 | - "email": "p@tchwork.com" | ||
2884 | - }, | ||
2885 | - { | ||
2886 | - "name": "Symfony Community", | ||
2887 | - "homepage": "https://symfony.com/contributors" | ||
2888 | - } | ||
2889 | - ], | ||
2890 | - "description": "Symfony polyfill for the Mbstring extension", | ||
2891 | - "homepage": "https://symfony.com", | ||
2892 | - "keywords": [ | ||
2893 | - "compatibility", | ||
2894 | - "mbstring", | ||
2895 | - "polyfill", | ||
2896 | - "portable", | ||
2897 | - "shim" | ||
2898 | - ], | ||
2899 | - "time": "2016-11-14T01:06:16+00:00" | ||
2900 | - }, | ||
2901 | - { | ||
2902 | "name": "symfony/yaml", | 3249 | "name": "symfony/yaml", |
2903 | "version": "v3.3.1", | 3250 | "version": "v3.3.1", |
2904 | "source": { | 3251 | "source": { |
domain/system/SmsMessage.php
@@ -37,7 +37,7 @@ class SmsMessage | @@ -37,7 +37,7 @@ class SmsMessage | ||
37 | } | 37 | } |
38 | 38 | ||
39 | $result = AlibabaCloud::rpc() | 39 | $result = AlibabaCloud::rpc() |
40 | - ->regionId("cn-hongkong") // 指定请求的区域,不指定则使用客户端区域、默认区域 | 40 | + ->regionId("cn-hangzhou") // 指定请求的区域,不指定则使用客户端区域、默认区域 |
41 | ->product('Dysmsapi') // 指定产品 | 41 | ->product('Dysmsapi') // 指定产品 |
42 | ->version('2017-05-25') // 指定产品版本 | 42 | ->version('2017-05-25') // 指定产品版本 |
43 | ->action('SendSms') // 指定产品接口 | 43 | ->action('SendSms') // 指定产品接口 |
@@ -55,53 +55,71 @@ class SmsMessage | @@ -55,53 +55,71 @@ class SmsMessage | ||
55 | 55 | ||
56 | } catch (ClientException $exception) { | 56 | } catch (ClientException $exception) { |
57 | AppLog::DEBUG('短信发送出错:' . $exception->getErrorMessage()); | 57 | AppLog::DEBUG('短信发送出错:' . $exception->getErrorMessage()); |
58 | + return false; | ||
58 | } catch (ServerException $exception) { | 59 | } catch (ServerException $exception) { |
59 | AppLog::DEBUG('短信发送出错:' . $exception->getErrorMessage()); | 60 | AppLog::DEBUG('短信发送出错:' . $exception->getErrorMessage()); |
61 | + return false; | ||
60 | } | 62 | } |
61 | } | 63 | } |
62 | 64 | ||
63 | /** | 65 | /** |
66 | + * @return string | ||
67 | + */ | ||
68 | + private function getSignName() | ||
69 | + { | ||
70 | + $smsConfig = Yii::$app->params['sms']; | ||
71 | + return isset($smsConfig['smsSignName'])?$smsConfig['smsSignName']:''; | ||
72 | + } | ||
73 | + /** | ||
64 | * 手机验证码 | 74 | * 手机验证码 |
65 | * 模版内容: 验证码${code},您正在注册成为新用户,感谢您的支持! | 75 | * 模版内容: 验证码${code},您正在注册成为新用户,感谢您的支持! |
66 | * 申请说明: 用户注册验证码 | 76 | * 申请说明: 用户注册验证码 |
67 | - * 模版CODE: SMS_179880510 | 77 | + * 模版CODE: SMS_181866843 |
68 | * @param $phone | 78 | * @param $phone |
69 | * @param $code | 79 | * @param $code |
70 | * @param $signName | 80 | * @param $signName |
71 | * @return mixed | 81 | * @return mixed |
72 | */ | 82 | */ |
73 | - public function sendRegCode($phone, $code, $signName = '科技') | 83 | + public function sendRegCode($phone, $code) |
74 | { | 84 | { |
75 | - //$this->send($phone, $signName, "SMS_179880510", ["code" => $code]); | ||
76 | - return true; | 85 | + //return true; |
86 | + $signName = $this->getSignName(); | ||
87 | + return $this->send($phone, $signName, "SMS_181866843", ["code" => $code]); | ||
77 | } | 88 | } |
78 | 89 | ||
79 | /** | 90 | /** |
80 | * 登录验证码 | 91 | * 登录验证码 |
81 | - * 模版内容: 模版CODE: SMS_180755775 | 92 | + * 模版内容: 模版CODE: SMS_181866846 |
82 | * 模版内容: 尊敬的用户,您的登录码为:${code},请勿泄漏于他人! | 93 | * 模版内容: 尊敬的用户,您的登录码为:${code},请勿泄漏于他人! |
83 | * @param $phone | 94 | * @param $phone |
84 | * @return mixed | 95 | * @return mixed |
85 | */ | 96 | */ |
86 | - public function sendLoginCode($phone, $code, $signName = '科技') | 97 | + public function sendLoginCode($phone, $code) |
87 | { | 98 | { |
88 | - //$this->send($phone, $signName, "SMS_180755775", ["code" => $code]); | ||
89 | - return true; | 99 | + //return true; |
100 | + $signName = $this->getSignName(); | ||
101 | + return $this->send($phone, $signName, "SMS_181866846", ["code" => $code]); | ||
90 | } | 102 | } |
91 | 103 | ||
92 | /* | 104 | /* |
93 | - * 【XX车管家】您好,xxxx厂已经进行维修,预计完成时间xxxx,预估维修内容xxxx,预估维修费用xxxx, 地址:XXXXXX, 联系电话;XXXXXXXX” | 105 | + * 模版CODE: SMS_181867814 |
106 | + * 您好,您的爱车已在${maintainer}维修厂维修,预计${dateTime}维修完成,预估维修内容:${repairPlan},预估维修费:${repairPrice},维修厂地址:${address},联系电话:${tel} | ||
94 | * */ | 107 | * */ |
95 | - public function sendSubmitInfo($maintainer, $maintainerPhone, $preFinish, $address, $phone) | 108 | + public function sendSubmitInfo($phone, $postData) |
96 | { | 109 | { |
97 | - return true; | 110 | + //return true; |
111 | + $signName = $this->getSignName(); | ||
112 | + return $this->send($phone, $signName, "SMS_181867814", $postData); | ||
98 | } | 113 | } |
99 | 114 | ||
100 | /* | 115 | /* |
116 | + * 模版CODE: SMS_181851842 | ||
101 | * 【XX车管家】您好,xxxx厂已对您的车维修完成,点击http://wwwwwww.com/xxx 可以给本次服务评分。如有意见请拨打投诉热线:4000xxxxxx” | 117 | * 【XX车管家】您好,xxxx厂已对您的车维修完成,点击http://wwwwwww.com/xxx 可以给本次服务评分。如有意见请拨打投诉热线:4000xxxxxx” |
102 | * */ | 118 | * */ |
103 | - public function sendFinishInfo($maintainer, $url, $phone) | 119 | + public function sendFinishInfo($phone, $postData) |
104 | { | 120 | { |
105 | - return true; | 121 | + //return true; |
122 | + $signName = $this->getSignName(); | ||
123 | + return $this->send($phone, $signName, "SMS_181851842", $postData); | ||
106 | } | 124 | } |
107 | } | 125 | } |
108 | \ No newline at end of file | 126 | \ No newline at end of file |
web/admin/favicon.ico
No preview for this file type
web/assets/d0eeab2b/js/cmpts/uploadjs/uploadjs.js
1 | -define([],function(){var e={};return e.uploadFile=function(e){var o={selector:e.selector||"",url:e.url||"",processAppendTo:e.processAppendTo||"",timeout:e.timeout||6e3,beforeSend:function(e,o){},success:function(o,r){e.success&&e.success(o,r)},complete:function(o,r){e.complete&&e.complete(o,r)},process:function(e){},ontimeout:function(e){},error:function(o,r){e.error&&e.error(o,r)}};o.beforeSend=function(r,t){if(e.beforeSend)e.beforeSend(r,t);else{var n='<div id="process-bar" style="width:100%;position: absolute;top:0;bottom: 0;z-index: 222;display: flex;justify-content: center;flex-direction: column;"><div style="width: 70%;margin: 0 auto;height:1.5rem;background: #dcdcdc;"><div style="height:1.5rem;width:0%;line-height: 1.5rem;background:#4ae637;text-align:center" id="pro-bar">0%</div></div></div>';if(""!=o.processAppendTo){var s=document.querySelector(o.processAppendTo);if(!s)return"";var i=s.querySelector("#process-bar");s&&i&&s.removeChild(i),s.insertAdjacentHTML("beforeend",n)}}},o.process=function(r){if(e.process)e.process(r);else if(""!=o.processAppendTo){var t=document.querySelector(o.processAppendTo);if(!t)return"";var n=t.querySelector("#pro-bar");if(n){var s=100*r.loaded/r.total,i=Math.floor(s)+"%";n.style.width=i,n.innerHTML=i}}},o.ontimeout=function(o){e.ontimeout?e.ontimeout(o):console.log("time out")};var r=document.querySelector(o.selector).files[0],t=new FormData,n=new XMLHttpRequest;n.timeout=o.timeout,n.onload=function(e){var r=JSON.parse(this.response);o.success(r,e)},n.onloadend=function(e){if(""!=o.processAppendTo){var r=document.querySelector(o.processAppendTo);if(r){var t=r.querySelector("#process-bar");r&&r.removeChild(t)}}var n=JSON.parse(this.response);o.complete(n,e)},n.onerror=function(e){var r=JSON.parse(this.response);o.error(r,e)},n.ontimeout=function(e){console.log("request timeout"),o.ontimeout(e)},n.addEventListener("loadstart",function(e){o.beforeSend(e)}),n.open("post",o.url,!0),n.upload.onprogress=function(e){e.lengthComputable&&o.process(e)},t.append("file",r),n.send(t)},e}); | ||
2 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +define([],function(){var e={};return e.uploadFile=function(e){function o(){var e='<div id="process-bar" style="width:100%;position: absolute;top:0;bottom: 0;z-index: 222;display: flex;justify-content: center;flex-direction: column;"><div style="width: 70%;margin: 0 auto;height:1.5rem;background: #dcdcdc;"><div style="height:1.5rem;width:0%;line-height: 1.5rem;background:#4ae637;text-align:center" id="pro-bar">0%</div></div></div>';if(""!=t.processAppendTo){var o=document.querySelector(t.processAppendTo);if(!o)return"";var r=o.querySelector("#process-bar");o&&r&&o.removeChild(r),o.insertAdjacentHTML("beforeend",e)}}var t={selector:e.selector||"",url:e.url||"",processAppendTo:e.processAppendTo||"",timeout:e.timeout||6e3,beforeSend:function(e,o){},success:function(o,t){e.success&&e.success(o,t)},complete:function(o,t){e.complete&&e.complete(o,t)},process:function(e){},ontimeout:function(e){},error:function(o,t){e.error&&e.error(o,t)}};t.beforeSend=function(t,r){e.beforeSend?e.beforeSend(t,r):o()},t.process=function(o){if(e.process)e.process(o);else if(""!=t.processAppendTo){var r=document.querySelector(t.processAppendTo);if(!r)return"";var n=r.querySelector("#pro-bar");if(n){var s=100*o.loaded/o.total,i=Math.floor(s)+"%";n.style.width=i,n.innerHTML=i}}},t.ontimeout=function(o){e.ontimeout?e.ontimeout(o):console.log("time out")};var r=document.querySelector(t.selector).files[0],n="",s=r.size/1024;t.uploadPost=function(e,o){var r=new FormData,n=new XMLHttpRequest;n.timeout=t.timeout,n.onload=function(e){var o=JSON.parse(""==this.response||null==this.response?"[]":this.response);t.success(o,e)},n.onloadend=function(e){if(""!=t.processAppendTo){var o=document.querySelector(t.processAppendTo);if(o){var r=o.querySelector("#process-bar");o&&o.removeChild(r)}}var n=JSON.parse(""==this.response||null==this.response?"[]":this.response);t.complete(n,e)},n.onerror=function(e){var o=JSON.parse(""==this.response||null==this.response?"[]":this.response);t.error(o,e)},n.ontimeout=function(e){console.log("request timeout"),t.ontimeout(e)},n.addEventListener("loadstart",function(e){t.beforeSend(e)}),n.open("post",t.url,!0),n.upload.onprogress=function(e){e.lengthComputable&&t.process(e)},r.append("uploadType",o),r.append("file",e),n.send(r)},t.compressAndUpload=function(e,r){var n=new FileReader,s=new Image,i=e,c=document.createElement("canvas"),a=c.getContext("2d");if(void 0!=i&&""!=i){if(0!=i.type.indexOf("image"))return!1;n.readAsDataURL(i),n.onload=function(e){s.src=e.target.result},o(),s.onload=function(){var e=this,o=((new Date).getTime(),e.width),n=e.height,s=1024,i=1024,u=o,d=n;(o>s||n>i)&&(o/n>s/i?(u=s,d=Math.round(s*(n/o))):(d=i,u=Math.round(i*(o/n)))),c.width=u,c.height=d,a.clearRect(0,0,u,d),a.drawImage(e,0,0,u,d);var p=c.toDataURL("image/jpeg",.7);t.uploadPost(p,r)}}},s<=1024?(n="file",t.uploadPost(r,n)):(n="base64",t.compressAndUpload(r,n))},e}); | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |
web/dist/js/cmpts/uploadjs/uploadjs.js
1 | -define([],function(){var e={};return e.uploadFile=function(e){var o={selector:e.selector||"",url:e.url||"",processAppendTo:e.processAppendTo||"",timeout:e.timeout||6e3,beforeSend:function(e,o){},success:function(o,r){e.success&&e.success(o,r)},complete:function(o,r){e.complete&&e.complete(o,r)},process:function(e){},ontimeout:function(e){},error:function(o,r){e.error&&e.error(o,r)}};o.beforeSend=function(r,t){if(e.beforeSend)e.beforeSend(r,t);else{var n='<div id="process-bar" style="width:100%;position: absolute;top:0;bottom: 0;z-index: 222;display: flex;justify-content: center;flex-direction: column;"><div style="width: 70%;margin: 0 auto;height:1.5rem;background: #dcdcdc;"><div style="height:1.5rem;width:0%;line-height: 1.5rem;background:#4ae637;text-align:center" id="pro-bar">0%</div></div></div>';if(""!=o.processAppendTo){var s=document.querySelector(o.processAppendTo);if(!s)return"";var i=s.querySelector("#process-bar");s&&i&&s.removeChild(i),s.insertAdjacentHTML("beforeend",n)}}},o.process=function(r){if(e.process)e.process(r);else if(""!=o.processAppendTo){var t=document.querySelector(o.processAppendTo);if(!t)return"";var n=t.querySelector("#pro-bar");if(n){var s=100*r.loaded/r.total,i=Math.floor(s)+"%";n.style.width=i,n.innerHTML=i}}},o.ontimeout=function(o){e.ontimeout?e.ontimeout(o):console.log("time out")};var r=document.querySelector(o.selector).files[0],t=new FormData,n=new XMLHttpRequest;n.timeout=o.timeout,n.onload=function(e){var r=JSON.parse(this.response);o.success(r,e)},n.onloadend=function(e){if(""!=o.processAppendTo){var r=document.querySelector(o.processAppendTo);if(r){var t=r.querySelector("#process-bar");r&&r.removeChild(t)}}var n=JSON.parse(this.response);o.complete(n,e)},n.onerror=function(e){var r=JSON.parse(this.response);o.error(r,e)},n.ontimeout=function(e){console.log("request timeout"),o.ontimeout(e)},n.addEventListener("loadstart",function(e){o.beforeSend(e)}),n.open("post",o.url,!0),n.upload.onprogress=function(e){e.lengthComputable&&o.process(e)},t.append("file",r),n.send(t)},e}); | ||
2 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +define([],function(){var e={};return e.uploadFile=function(e){function o(){var e='<div id="process-bar" style="width:100%;position: absolute;top:0;bottom: 0;z-index: 222;display: flex;justify-content: center;flex-direction: column;"><div style="width: 70%;margin: 0 auto;height:1.5rem;background: #dcdcdc;"><div style="height:1.5rem;width:0%;line-height: 1.5rem;background:#4ae637;text-align:center" id="pro-bar">0%</div></div></div>';if(""!=t.processAppendTo){var o=document.querySelector(t.processAppendTo);if(!o)return"";var r=o.querySelector("#process-bar");o&&r&&o.removeChild(r),o.insertAdjacentHTML("beforeend",e)}}var t={selector:e.selector||"",url:e.url||"",processAppendTo:e.processAppendTo||"",timeout:e.timeout||6e3,beforeSend:function(e,o){},success:function(o,t){e.success&&e.success(o,t)},complete:function(o,t){e.complete&&e.complete(o,t)},process:function(e){},ontimeout:function(e){},error:function(o,t){e.error&&e.error(o,t)}};t.beforeSend=function(t,r){e.beforeSend?e.beforeSend(t,r):o()},t.process=function(o){if(e.process)e.process(o);else if(""!=t.processAppendTo){var r=document.querySelector(t.processAppendTo);if(!r)return"";var n=r.querySelector("#pro-bar");if(n){var s=100*o.loaded/o.total,i=Math.floor(s)+"%";n.style.width=i,n.innerHTML=i}}},t.ontimeout=function(o){e.ontimeout?e.ontimeout(o):console.log("time out")};var r=document.querySelector(t.selector).files[0],n="",s=r.size/1024;t.uploadPost=function(e,o){var r=new FormData,n=new XMLHttpRequest;n.timeout=t.timeout,n.onload=function(e){var o=JSON.parse(""==this.response||null==this.response?"[]":this.response);t.success(o,e)},n.onloadend=function(e){if(""!=t.processAppendTo){var o=document.querySelector(t.processAppendTo);if(o){var r=o.querySelector("#process-bar");o&&o.removeChild(r)}}var n=JSON.parse(""==this.response||null==this.response?"[]":this.response);t.complete(n,e)},n.onerror=function(e){var o=JSON.parse(""==this.response||null==this.response?"[]":this.response);t.error(o,e)},n.ontimeout=function(e){console.log("request timeout"),t.ontimeout(e)},n.addEventListener("loadstart",function(e){t.beforeSend(e)}),n.open("post",t.url,!0),n.upload.onprogress=function(e){e.lengthComputable&&t.process(e)},r.append("uploadType",o),r.append("file",e),n.send(r)},t.compressAndUpload=function(e,r){var n=new FileReader,s=new Image,i=e,c=document.createElement("canvas"),a=c.getContext("2d");if(void 0!=i&&""!=i){if(0!=i.type.indexOf("image"))return!1;n.readAsDataURL(i),n.onload=function(e){s.src=e.target.result},o(),s.onload=function(){var e=this,o=((new Date).getTime(),e.width),n=e.height,s=1024,i=1024,u=o,d=n;(o>s||n>i)&&(o/n>s/i?(u=s,d=Math.round(s*(n/o))):(d=i,u=Math.round(i*(o/n)))),c.width=u,c.height=d,a.clearRect(0,0,u,d),a.drawImage(e,0,0,u,d);var p=c.toDataURL("image/jpeg",.7);t.uploadPost(p,r)}}},s<=1024?(n="file",t.uploadPost(r,n)):(n="base64",t.compressAndUpload(r,n))},e}); | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |
web/dist/js/order-app.js
1 | -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=""><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,a=Template7,t=new t,r="order/customer/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.success=!0,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.goToComment(),t.popupImageLayer(),t.agreementEvent()},t.beforeRender=function(){var t=this;console.log("beforeRender"),t.success||(this.view="customer-order-error")},t.loadPage=function(){var t=this,n=t.csrf({id:t.id});i.httpPost(e.to(r),n,function(e){var i=e;t.success=e.success,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.agreementEvent=function(){n("#customer-order").on("click",".warranty-btn",function(t){n("#warranty-wrapper").remove();var e=n("#customer-order"),i=n("script#warranty-template"),r=a.compile(i.html()),o=r({});e.append(o)}),n("#customer-order").on("click",".agree-btn",function(t){n("#warranty-wrapper").remove()})},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.success=!0,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.finishBtnEvent(),t.popupImageLayer()},t.beforeRender=function(){var t=this;console.log("beforeRender"),t.success||(t.view="order-details-error")},t.loadPage=function(){var t=this,n=t.csrf({id:t.id});i.httpPost(e.to(a),n,function(e){var i=e;t.success=e.success,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.agreementEvent=function(){},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();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","mk7/uploadjs"],function(t,e,i,n){var a=Dom7,t=(Template7,new t),r="order/customer/submit-rate",o="/user/default/upload-file";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.imgLimit=4,t.setPageTitle("评价"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.starClickEvent(),t.submitEvent(),t.uploadImgEvent()},t.loadPage=function(){var t=this;t.render()},t.starClickEvent=function(){a("#rate").on("click",".img-star",function(t){var e=a(this).attr("data-id"),i=a(this).parent(".star-div"),n=i.find(".img-star");a.each(n,function(t,n){var r=a(n).attr("data-id");if(1*r<=e){a(n).addClass("star-on");var o=i.find(".rate-text"),s=a(n).attr("data-txt");o.html(s)}else a(n).removeClass("star-on")})})},t.uploadImgEvent=function(){var t=this;a("#rate #upload-btn").change(function(){if(""!=a(this).val()&&null!=a(this).val()){var r=a(this).parents("li");n.uploadFile({selector:"#upload-btn",url:e.to(o),processAppendTo:"#rate",success:function(e,n){try{if(e.success){var o=e.tmpUrl;a('<li class="upload-li up-img"><div data="'+e.tmpFile+'" data-url="'+o+'" class="upload-item" style="background-image:url('+e.tmpMinUrl+')"></div><span class="del-img"></span></li>').insertBefore(r),t.imgLimit==a("#rate #image-list").find(".up-img").length&&a("#rate .upload-btn-li").hide()}else i.toast({content:e.message,closeDelay:5e3})}catch(s){console.log(s),i.toast({content:"出错",closeDelay:5e3})}}})}}),a("#rate #image-list").on("click",".del-img",function(e){a(this).parent().remove(),t.imgLimit>=a("#rate #image-list").find(".up-img").length&&a("#rate .upload-btn-li").show()})},t.getUploadImgs=function(){var t=a("#rate #image-list").find(".up-img"),e=[];return 0==t.length?[]:(a.each(t,function(t,i){var n=a(i).find(".upload-item");e.push(n.attr("data"))}),e)},t.submitEvent=function(){var t=this;a("#rate .submit-btn").click(function(n){var o=i.trim(a("#rate .text-content").val()),s=a("#rate .quality-box .img-star"),l=0;a.each(s,function(t,e){a(e).hasClass("star-on")&&l++});var c=a("#rate .effect-box .img-star"),d=0;a.each(c,function(t,e){a(e).hasClass("star-on")&&d++});var u=a("#rate .service-box .img-star"),m=0;a.each(u,function(t,e){a(e).hasClass("star-on")&&m++});var p=t.getUploadImgs(),v=t.csrf({comment:o,id:t.id,qualityStar:l,effectStar:d,serviceStar:m,images:p});i.httpPost(e.to(r),v,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,s=Template7,t=new t,l="/user/default/upload-file",c="/order/default/submit",d="/order/default/do-submit",u=!0,m="";return t.run=function(){var t=this;t.setPageTitle("录入维修单"),t.imgLimit=9,t.render(),t.loadInit()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.uploadImgEvent(),t.submitEvent(),t.selectDateEvent(),t.openCarModel(),t.searchCarModel(),t.carModelClick()},t.loadInit=function(){var t=this,e={id:t.id};n.httpGet(c,e,function(t){t.success&&t.address&&(o("#submit .maintainerAddress").val(t.address),o("#submit .maintainerAddress").attr("readonly",!0))},!0)},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(l),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){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()),l=n.trim(o("#submit .phone").val()),c=n.trim(o("#submit .preRepair").val()),m=n.trim(o("#submit .repairPrice").val()),p=n.trim(o("#submit .finishDate").val()),v=n.trim(o("#submit .maintainerAddress").val());if(0==u)return!1;if(""==a)return n.toast({content:"车牌号必填"}),!1;if(""==r)return n.toast({content:"车辆型号必填"}),!1;if(""==s)return n.toast({content:"客户名称必填"}),!1;if(""==l)return n.toast({content:"客联系电话必填"}),!1;if(!n.isMobile(l)&&!n.isTelephone(l))return n.toast({content:"客联系电话有误"}),!1;if(""==p)return n.toast({content:"预估完成时间必填"}),!1;if(""==v)return n.toast({content:"维修厂地址必填"}),!1;var f=t.getUploadImgs();if(0==f.length)return n.toast({content:"请上传车损照"}),!1;u=!1;var g=t.csrf({carNo:a,carModel:r,customer:s,phone:l,preRepair:c,repairPrice:m,finishDate:p,images:f,address:v});n.httpPost(d,g,function(t){return u=!0,t.success?void window.location.replace(e.to("order#order-details/"+t.orderId)):(n.toast({content:t.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("#submit .finish-date-input").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(),d=a.getHours(),u=s+"-"+(l+1)+"-"+c;if(""!=e&&null!=e&&void 0!==e){var p=e.split(" ");u=p[0],d=p[1]}var v=[];for(i=0;i<=r;i++){var f=new Date;f.setDate(a.getDate()+i);var g=f.getFullYear()+"-"+(f.getMonth()+1)+"-"+f.getDate();v.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:[u,d],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:v,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<v.length;r++){var o=v[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];m=i[0]+" "+n,o(t).val(m),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];m=i[0]+" "+n,o(t).val(m),h.destroy()})},t.openCarModel=function(){o("#submit").on("click",".carModel",function(t){o("#search-wrapper").remove();var e=o("#submit"),i=o("script#search-car-model-template"),n=s.compile(i.html()),a=n({keyword:""});e.append(a)})},t.renderCarModelItem=function(t){var e=o("#search-wrapper .model-list"),i=o("script#search-car-model-item-template"),n=s.compile(i.html()),a=n({items:t});e.html(a)},t.searchCarModel=function(){var t=this;o("#submit").on("click",".model-search-btn",function(e){t.ajaxSearch()}),o("#submit").on("submit","#search-form",function(e){return e.preventDefault(),t.ajaxSearch(),!1})},t.ajaxSearch=function(){var t=this,i={keyword:o("#search-wrapper .search-input").val()};o.ajax({method:"POST",url:e.to("order/default/search-model"),data:i,dataType:"json",beforeSend:function(){t.showIndicator()},success:function(e){e.success?t.renderCarModelItem(e.items):t.renderCarModelItem([])},error:function(t){},complete:function(e){t.hideIndicator()}})},t.carModelClick=function(){o("#submit").on("click",".model-div-btn",function(t){var e=o(this).attr("data-value");o("#submit .carModel").val(e),o("#search-wrapper").remove()}),o("#submit").on("click",".closeBtn",function(t){o("#search-wrapper").remove()})},t}); | ||
2 | \ No newline at end of file | 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=""><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 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});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","mk7/photo-browser"],function(t,e,i,n){var a=Dom7,r=Template7,t=new t,o="order/customer/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.success=!0,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.goToComment(),t.popupImageLayer(),t.agreementEvent()},t.beforeRender=function(){var t=this;console.log("beforeRender"),t.success||(this.view="customer-order-error")},t.loadPage=function(){var t=this,n=t.csrf({id:t.id});i.httpPost(e.to(o),n,function(e){var i=e;t.success=e.success,t.render(i)},!0)},t.goToComment=function(){var t=this;a("#customer-order .rate-btn-cls").click(function(i){window.location.replace(e.to("order/customer#rate/"+t.id+"/"+t.sn))})},t.agreementEvent=function(){a("#customer-order").on("click",".warranty-btn",function(t){a("#warranty-wrapper").remove();var e=a("#customer-order"),i=a("script#warranty-template"),n=r.compile(i.html()),o=n({});e.append(o)}),a("#customer-order").on("click",".agree-btn",function(t){a("#warranty-wrapper").remove()})},t.popupImageLayer=function(){var t=this;a("#customer-order").on("click",".view-img-cls",function(e){var i=a(this).parents("ul"),n=i.find(".view-img-cls"),r=[],o=a(this).attr("data-index");a.each(n,function(t,e){var i=a(e).attr("data-url");r.push(i)});var s=t.app.photoBrowser({photos:r,initialSlide:o});s.open()})},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","mk7/photo-browser"],function(t,e,i,n){var a=Dom7,t=(Template7,new t),r="order/default/order-details";return t.run=function(){var t=this;t.id=t.params.id,t.success=!0,t.setPageTitle("维修单"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.finishBtnEvent(),t.popupImageLayer()},t.beforeRender=function(){var t=this;console.log("beforeRender"),t.success||(t.view="order-details-error")},t.loadPage=function(){var t=this,n=t.csrf({id:t.id});i.httpPost(e.to(r),n,function(e){var i=e;t.success=e.success,t.render(i)},!0)},t.finishBtnEvent=function(){var t=this;a("#order-details .finish-submit").click(function(i){window.location.href=e.to("order/#cost-list/"+t.id)})},t.agreementEvent=function(){},t.popupImageLayer=function(){var t=this;a("#order-details").on("click",".view-img-cls",function(e){var i=a(this).parents("ul"),n=i.find(".view-img-cls"),r=[],o=a(this).attr("data-index");a.each(n,function(t,e){var i=a(e).attr("data-url");r.push(i)});var s=t.app.photoBrowser({photos:r,initialSlide:o});s.open()})},t}),define("order/rate-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs"],function(t,e,i,n){var a=Dom7,t=(Template7,new t),r="order/customer/submit-rate",o="/user/default/upload-file";return t.run=function(){var t=this;t.id=t.params.id,t.sn=t.params.sn,t.imgLimit=4,t.setPageTitle("评价"),t.loadPage()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.starClickEvent(),t.submitEvent(),t.uploadImgEvent()},t.loadPage=function(){var t=this;t.render({servicePhone:window.$site.servicePhone})},t.starClickEvent=function(){a("#rate").on("click",".img-star",function(t){var e=a(this).attr("data-id"),i=a(this).parent(".star-div"),n=i.find(".img-star");a.each(n,function(t,n){var r=a(n).attr("data-id");if(1*r<=e){a(n).addClass("star-on");var o=i.find(".rate-text"),s=a(n).attr("data-txt");o.html(s)}else a(n).removeClass("star-on")})})},t.uploadImgEvent=function(){var t=this;a("#rate #upload-btn").change(function(){if(""!=a(this).val()&&null!=a(this).val()){var r=a(this).parents("li");n.uploadFile({selector:"#upload-btn",url:e.to(o),processAppendTo:"#rate",success:function(e,n){try{if(e.success){var o=e.tmpUrl;a('<li class="upload-li up-img"><div data="'+e.tmpFile+'" data-url="'+o+'" class="upload-item" style="background-image:url('+e.tmpMinUrl+')"></div><span class="del-img"></span></li>').insertBefore(r),t.imgLimit==a("#rate #image-list").find(".up-img").length&&a("#rate .upload-btn-li").hide()}else i.toast({content:e.message,closeDelay:5e3})}catch(s){console.log(s),i.toast({content:"出错",closeDelay:5e3})}}})}}),a("#rate #image-list").on("click",".del-img",function(e){a(this).parent().remove(),t.imgLimit>=a("#rate #image-list").find(".up-img").length&&a("#rate .upload-btn-li").show()})},t.getUploadImgs=function(){var t=a("#rate #image-list").find(".up-img"),e=[];return 0==t.length?[]:(a.each(t,function(t,i){var n=a(i).find(".upload-item");e.push(n.attr("data"))}),e)},t.submitEvent=function(){var t=this;a("#rate .submit-btn").click(function(n){var o=i.trim(a("#rate .text-content").val()),s=a("#rate .quality-box .img-star"),l=0;a.each(s,function(t,e){a(e).hasClass("star-on")&&l++});var c=a("#rate .effect-box .img-star"),u=0;a.each(c,function(t,e){a(e).hasClass("star-on")&&u++});var d=a("#rate .service-box .img-star"),m=0;a.each(d,function(t,e){a(e).hasClass("star-on")&&m++});var p=t.getUploadImgs(),v=t.csrf({comment:o,id:t.id,qualityStar:l,effectStar:u,serviceStar:m,images:p});i.httpPost(e.to(r),v,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,s=Template7,t=new t,l="/user/default/upload-file",c="/order/default/do-submit",u=!0,d="";return t.run=function(){var t=this;t.setPageTitle("录入维修单"),t.imgLimit=9,t.render(),t.loadInit()},t.bindEvents=function(){var t=this;console.log("bindEvents"),t.uploadImgEvent(),t.submitEvent(),t.selectDateEvent(),t.openCarModel(),t.searchCarModel(),t.carModelClick()},t.loadInit=function(){var t=this;({id:t.id})},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(l),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){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()),l=n.trim(o("#submit .phone").val()),d=n.trim(o("#submit .preRepair").val()),m=n.trim(o("#submit .repairPrice").val()),p=n.trim(o("#submit .finishDate").val());if(0==u)return!1;if(""==a)return n.toast({content:"车牌号必填"}),!1;if(""==r)return n.toast({content:"车辆型号必填"}),!1;if(""==s)return n.toast({content:"客户名称必填"}),!1;if(""==l)return n.toast({content:"客联系电话必填"}),!1;if(!n.isMobile(l)&&!n.isTelephone(l))return n.toast({content:"客联系电话有误"}),!1;if(""==d)return n.toast({content:"预估维修内容必填"}),!1;if(""==m)return n.toast({content:"预估维修费用必填"}),!1;if(""==p)return n.toast({content:"预估完成时间必填"}),!1;var v=t.getUploadImgs();if(0==v.length)return n.toast({content:"请上传车损照"}),!1;u=!1;var f=t.csrf({carNo:a,carModel:r,customer:s,phone:l,preRepair:d,repairPrice:m,finishDate:p,images:v});n.httpPost(c,f,function(t){return u=!0,t.success?void window.location.replace(e.to("order#order-details/"+t.orderId)):(n.toast({content:t.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("#submit .finish-date-input").val();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 p=e.split(" ");m=p[0],u=p[1]}var v=[];for(i=0;i<=r;i++){var f=new Date;f.setDate(a.getDate()+i);var h=f.getFullYear()+"-"+(f.getMonth()+1)+"-"+f.getDate();v.push(h)}var g=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(),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,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:v,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<v.length;r++){var o=v[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(g){var i=g.value,n=i[1]<10?"0"+i[1]:i[1];d=i[0]+" "+n,o(t).val(d),g.destroy()}}});g.open(),o(".submit-confirm-picker").on("click",function(e){e.preventDefault();var i=g.value,n=i[1]<10?"0"+i[1]:i[1];d=i[0]+" "+n,o(t).val(d),g.destroy()})},t.openCarModel=function(){o("#submit").on("click",".carModel",function(t){o("#search-wrapper").remove();var e=o("#submit"),i=o("script#search-car-model-template"),n=s.compile(i.html()),a=n({keyword:""});e.append(a)})},t.renderCarModelItem=function(t){var e=o("#search-wrapper .model-list"),i=o("script#search-car-model-item-template"),n=s.compile(i.html()),a=n({items:t});e.html(a)},t.searchCarModel=function(){var t=this;o("#submit").on("click",".model-search-btn",function(e){t.ajaxSearch()}),o("#submit").on("submit","#search-form",function(e){return e.preventDefault(),t.ajaxSearch(),!1})},t.ajaxSearch=function(){var t=this,i={keyword:o("#search-wrapper .search-input").val()};o.ajax({method:"POST",url:e.to("order/default/search-model"),data:i,dataType:"json",beforeSend:function(){t.showIndicator()},success:function(e){e.success?t.renderCarModelItem(e.items):t.renderCarModelItem([])},error:function(t){},complete:function(e){t.hideIndicator()}})},t.carModelClick=function(){o("#submit").on("click",".model-div-btn",function(t){var e=o(this).attr("data-value");o("#submit .carModel").val(e),o("#search-wrapper").remove()}),o("#submit").on("click",".closeBtn",function(t){o("#search-wrapper").remove()})},t}); | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |
web/dist/js/user-app.js
1 | -define("user-app",["mk7/app"],function(e){var t=Dom7,n=function(){var e=t(".ui-loading-block");0==e.length&&(t(".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 e=document.getElementById("loader-inner"),t=document.createElement("p");t.className="notice",e&&(t.innerHTML='加载速度太慢?试试<a class="link" href="#" onclick="javascript:location.reload();return false;">重新加载</a>',e.appendChild(t))},window.waitingTime))},r=!0;return e.name="user",e.routes={index:function(){return r=!1,n(),e.runController("index")},register:function(){return r=!1,n(),e.runController("register")},login:function(){return r=!1,n(),e.runController("login")},"*":function(){return e.runController("index")}},e}),define("user/index-controller",["mk7/controller","mk7/url","mk7/utils"],function(e,t,n){var e=(Dom7,Template7,new e);return e.run=function(){var e=this;e.setPageTitle("首页"),e.hideAllNonBaseMenuItem(window.$site),e.render()},e.bindEvents=function(){console.log("bindEvents")},e}),define("user/login-controller",["mk7/controller","mk7/url","mk7/utils"],function(e,t,n){var r=Dom7,e=(Template7,new e),o="/user/login/get-code",i="/user/login/login",c=!0,s=!0,a=null;return e.run=function(){var e=this;return e.setPageTitle("登录"),e.codeDuration=60,isGuest?void e.render():(window.location.href=t.to("order/#index"),"")},e.bindEvents=function(){var e=this;console.log("bindEvents"),e.getCodeEvent(),e.gotoRegisterEvent(),e.loginEvent()},e.getCodeEvent=function(){var e=this;r("#login .get-code-cls").click(function(){var i=n.trim(r("#login .mobile").val());if(""==i)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(i))return n.toast({content:"手机号码不合格"}),!1;if(0==c)return!1;clearInterval(a),c=!1;var s=e.csrf({action:"login",mobile:i});n.httpGet(t.to(o),s,function(t){if(!t.success)return n.toast({content:t.message,closeDelay:3e3}),c=!0,!1;n.toast({content:t.message}),t.testCode&&r("#login .code").val(t.testCode);var o=t.codeDuration;e.codeDuration=o,a=setInterval(function(t){e.codeDuration--,0==e.codeDuration?(r("#login .get-code-cls").html("获取验证码"),clearInterval(a),e.codeDuration=o,c=!0):r("#login .get-code-cls").html('<span class="count-down-cls">'+e.codeDuration+"s后重新获取</span>")},1e3)})})},e.loginEvent=function(){var e=this;r("#login .login-btn").click(function(o){var c=n.trim(r("#login .mobile").val()),a=n.trim(r("#login .code").val());if(""==c)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(c))return n.toast({content:"手机号码不合格"}),!1;if(""==a)return n.toast({content:"验证码必填"}),!1;if(0==s)return!1;s=!1;var l=e.csrf({mobile:c,code:a});n.httpPost(t.to(i),l,function(e){return s=!0,e.success?void(window.location.href=t.to("order/#index")):(n.toast({content:e.message,closeDelay:3e3}),!1)})})},e.gotoRegisterEvent=function(){r("#login .register-btn").click(function(e){window.location.href=t.to("user/#register")})},e}),define("user/register-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs"],function(e,t,n,r){var o=Dom7,i=Template7,e=new e,c="/user/login/register",s="/user/default/upload-file",a="/user/login/get-code",l=!0,u=!0,d=null;return e.run=function(){var e=this;return e.setPageTitle("注册"),e.codeDuration=60,isGuest?void e.render():(window.location.href=t.to("order/#index"),"")},e.bindEvents=function(){var e=this;console.log("bindEvents"),e.uploadEvent(),e.getCodeEvent(),e.registerEvent(),e.gotoLoginEvent(),e.checkAgreement()},e.uploadEvent=function(){o("#register .upload-input-cls").change(function(){if(""!=o(this).val()&&null!=o(this).val()){var e=o(this).attr("id"),i=o(this).parent();r.uploadFile({selector:"#"+e,url:t.to(s),processAppendTo:"#register",success:function(e,t){try{if(e.success){var r=e.tmpUrl;i.css("background-image","url("+e.tmpMinUrl+")"),i.attr("data",e.tmpFile),i.attr("data-url",r)}else n.toast({content:e.message,closeDelay:5e3})}catch(o){n.toast({content:"出错",closeDelay:5e3})}}})}})},e.getCodeEvent=function(){var e=this;o("#register .get-code-cls").click(function(){var r=n.trim(o("#register .mobile").val());if(""==r)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(r))return n.toast({content:"手机号码不合格"}),!1;if(0==l)return!1;clearInterval(d),l=!1;var i=e.csrf({action:"register",mobile:r});n.httpGet(t.to(a),i,function(t){if(!t.success)return n.toast({content:t.message,closeDelay:3e3}),l=!0,!1;n.toast({content:t.message}),t.testCode&&o("#register .code").val(t.testCode);var r=t.codeDuration;e.codeDuration=r,d=setInterval(function(t){e.codeDuration--,0==e.codeDuration?(o("#register .get-code-cls").html("获取验证码"),clearInterval(d),e.codeDuration=r,l=!0):o("#register .get-code-cls").html('<span class="count-down-cls">'+e.codeDuration+"s后重新获取</span>")},1e3)})})},e.registerEvent=function(){var e=this;o("#register .register-btn").click(function(r){var i=n.trim(o("#register .name").val()),s=n.trim(o("#register .mobile").val()),a=n.trim(o("#register .code").val()),l=n.trim(o("#register .emergency_contact").val()),d=n.trim(o("#register .emergency_person").val());if(""==i)return n.toast({content:"车厂名称必填"}),!1;if(""==s)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(s))return n.toast({content:"手机号码不合格"}),!1;if(""==a)return n.toast({content:"验证码必填"}),!1;if(""==d)return n.toast({content:"紧急联系人必填"}),!1;if(""==l)return n.toast({content:"紧急联系电话必填"}),!1;if(!n.isMobile(l)&&!n.isTelephone(l))return n.toast({content:"紧急联系电话不合格"}),!1;if(l==s)return n.toast({content:"紧急联系电话不能和注册手机一样"}),!1;var g=o("#register .licensePic").attr("data");if(void 0===g||null==g)return n.toast({content:"请上传营业执照"}),!1;var v=o("#register .headPic").attr("data");if(void 0===v||null==v)return n.toast({content:"请上传维修厂门头照"}),!1;var f=o("#register .techChargePic").attr("data");if(void 0===f||null==f)return n.toast({content:"请上传维修技术负责人证书"}),!1;var m=o("#register .QAChargePic").attr("data");if(void 0===m||null==m)return n.toast({content:"请上传质检负责人证书"}),!1;if(!o("#register .check-agreement").hasClass("checked-active"))return n.toast({content:"请阅读同意《平台车管家服务条款》"}),!1;if(0==u)return!1;u=!1;var h=e.csrf({name:i,mobile:s,code:a,emergencyContact:l,emergencyPerson:d,licensePic:g,headPic:v,techChargePic:f,QAChargePic:m});n.httpPost(t.to(c),h,function(e){if(!e.success)return n.toast({content:e.message,closeDelay:3e3}),u=!0,!1;var r=3e3;n.toast({content:e.message,closeDelay:r}),setTimeout(function(){window.location.href=t.to("order/#index")},r)})})},e.gotoLoginEvent=function(){o("#register .login-btn").click(function(e){window.location.href=t.to("user/#login")})},e.checkAgreement=function(){o("#register .check-agreement").click(function(e){o(this).hasClass("checked-active")?o(this).removeClass("checked-active"):o(this).addClass("checked-active")}),o("#register .agreement-cls").click(function(e){o("#agreement-wrapper").remove();var t=o("#register"),n=o("script#agreement-template"),r=i.compile(n.html()),c=r({});t.append(c)}),o("#register").on("click",".agree-btn",function(e){o("#agreement-wrapper").remove();var t=o("#register .check-agreement");t.hasClass("checked-active")||t.addClass("checked-active")})},e}); | ||
2 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +define("user-app",["mk7/app"],function(e){var t=Dom7,n=function(){var e=t(".ui-loading-block");0==e.length&&(t(".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 e=document.getElementById("loader-inner"),t=document.createElement("p");t.className="notice",e&&(t.innerHTML='加载速度太慢?试试<a class="link" href="#" onclick="javascript:location.reload();return false;">重新加载</a>',e.appendChild(t))},window.waitingTime))},r=!0;return e.name="user",e.routes={index:function(){return r=!1,n(),e.runController("index")},register:function(){return r=!1,n(),e.runController("register")},login:function(){return r=!1,n(),e.runController("login")},"*":function(){return e.runController("index")}},e}),define("user/index-controller",["mk7/controller","mk7/url","mk7/utils"],function(e,t,n){var e=(Dom7,Template7,new e);return e.run=function(){var e=this;e.setPageTitle("首页"),e.hideAllNonBaseMenuItem(window.$site),e.render()},e.bindEvents=function(){console.log("bindEvents")},e}),define("user/login-controller",["mk7/controller","mk7/url","mk7/utils"],function(e,t,n){var r=Dom7,e=(Template7,new e),o="/user/login/get-code",i="/user/login/login",c=!0,s=!0,a=null;return e.run=function(){var e=this;e.setPageTitle("登录"),e.codeDuration=60,!isGuest,e.render();const t=new Promise(function(e,t){setTimeout(function(){e("foo")},300)});t.then(function(e){console.log(e)}),console.log(t)},e.bindEvents=function(){var e=this;console.log("bindEvents"),e.getCodeEvent(),e.gotoRegisterEvent(),e.loginEvent()},e.getCodeEvent=function(){var e=this;r("#login .get-code-cls").click(function(){var i=n.trim(r("#login .mobile").val());if(""==i)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(i))return n.toast({content:"手机号码不合格"}),!1;if(0==c)return!1;clearInterval(a),c=!1;var s=e.csrf({action:"login",mobile:i});n.httpGet(t.to(o),s,function(t){if(!t.success)return n.toast({content:t.message,closeDelay:3e3}),c=!0,!1;n.toast({content:t.message}),t.testCode&&r("#login .code").val(t.testCode);var o=t.codeDuration;e.codeDuration=o,a=setInterval(function(t){e.codeDuration--,0==e.codeDuration?(r("#login .get-code-cls").html("获取验证码"),clearInterval(a),e.codeDuration=o,c=!0):r("#login .get-code-cls").html('<span class="count-down-cls">'+e.codeDuration+"s后重新获取</span>")},1e3)})})},e.loginEvent=function(){var e=this;r("#login .login-btn").click(function(o){var c=n.trim(r("#login .mobile").val()),a=n.trim(r("#login .code").val());if(""==c)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(c))return n.toast({content:"手机号码不合格"}),!1;if(""==a)return n.toast({content:"验证码必填"}),!1;if(0==s)return!1;s=!1;var l=e.csrf({mobile:c,code:a});n.httpPost(t.to(i),l,function(e){return s=!0,e.success?void(window.location.href=t.to("order/#index")):(n.toast({content:e.message,closeDelay:3e3}),!1)})})},e.gotoRegisterEvent=function(){r("#login .register-btn").click(function(e){window.location.href=t.to("user/#register")})},e}),define("user/register-controller",["mk7/controller","mk7/url","mk7/utils","mk7/uploadjs"],function(e,t,n,r){var o=Dom7,i=Template7,e=new e,c="/user/login/register",s="/user/default/upload-file",a="/user/login/get-code",l=!0,u=!0,d=null,g=!1;return e.run=function(){var e=this;e.setPageTitle("注册"),e.codeDuration=60,!isGuest,e.render()},e.bindEvents=function(){var e=this;console.log("bindEvents"),e.uploadEvent(),e.getCodeEvent(),e.registerEvent(),e.gotoLoginEvent(),e.checkAgreement()},e.uploadEvent=function(){o("#register .upload-input-cls").change(function(e){if(""!=o(this).val()&&null!=o(this).val()){var i=e.target,c=(i.files[0],o(this).attr("id")),a=o(this).parent();r.uploadFile({selector:"#"+c,url:t.to(s),processAppendTo:"#register",success:function(e,t){try{if(e.success){var r=e.tmpUrl;a.css("background-image","url("+e.tmpMinUrl+")"),a.attr("data",e.tmpFile),a.attr("data-url",r)}else n.toast({content:e.message,closeDelay:5e3})}catch(o){n.toast({content:"出错",closeDelay:5e3})}}})}})},e.getCodeEvent=function(){var e=this;o("#register .get-code-cls").click(function(){var r=n.trim(o("#register .mobile").val());if(""==r)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(r))return n.toast({content:"手机号码不合格"}),!1;if(0==l)return!1;clearInterval(d),l=!1;var i=e.csrf({action:"register",mobile:r});n.httpGet(t.to(a),i,function(t){if(!t.success)return n.toast({content:t.message,closeDelay:3e3}),l=!0,!1;n.toast({content:t.message}),t.testCode&&o("#register .code").val(t.testCode);var r=t.codeDuration;e.codeDuration=r,d=setInterval(function(t){e.codeDuration--,0==e.codeDuration?(o("#register .get-code-cls").html("获取验证码"),clearInterval(d),e.codeDuration=r,l=!0):o("#register .get-code-cls").html('<span class="count-down-cls">'+e.codeDuration+"s后重新获取</span>")},1e3)})})},e.registerEvent=function(){var e=this;o("#register .register-btn").click(function(r){var i=n.trim(o("#register .name").val()),s=n.trim(o("#register .mobile").val()),a=n.trim(o("#register .code").val()),l=n.trim(o("#register .emergency_contact").val()),d=n.trim(o("#register .emergency_person").val()),g=n.trim(o("#register .address").val());if(""==i)return n.toast({content:"车厂名称必填"}),!1;if(""==s)return n.toast({content:"手机号码必填"}),!1;if(!n.isMobile(s))return n.toast({content:"手机号码不合格"}),!1;if(""==a)return n.toast({content:"验证码必填"}),!1;if(""==d)return n.toast({content:"紧急联系人必填"}),!1;if(""==l)return n.toast({content:"紧急联系电话必填"}),!1;if(!n.isMobile(l)&&!n.isTelephone(l))return n.toast({content:"紧急联系电话不合格"}),!1;if(l==s)return n.toast({content:"紧急联系电话不能和注册手机一样"}),!1;if(""==g)return n.toast({content:"维修厂地址必填"}),!1;var v=o("#register .licensePic").attr("data");if(void 0===v||null==v)return n.toast({content:"请上传营业执照"}),!1;var m=o("#register .headPic").attr("data");if(void 0===m||null==m)return n.toast({content:"请上传维修厂门头照"}),!1;var f=o("#register .techChargePic").attr("data");if(void 0===f||null==f)return n.toast({content:"请上传维修技术负责人证书"}),!1;var h=o("#register .QAChargePic").attr("data");if(void 0===h||null==h)return n.toast({content:"请上传质检负责人证书"}),!1;if(!o("#register .check-agreement").hasClass("checked-active"))return n.toast({content:"请阅读同意《平台车管家服务条款》"}),!1;if(0==u)return!1;u=!1;var p=e.csrf({name:i,mobile:s,code:a,emergencyContact:l,emergencyPerson:d,address:g,licensePic:v,headPic:m,techChargePic:f,QAChargePic:h});n.httpPost(t.to(c),p,function(e){if(!e.success)return n.toast({content:e.message,closeDelay:3e3}),u=!0,!1;var r=3e3;n.toast({content:e.message,closeDelay:r}),setTimeout(function(){window.location.href=t.to("order/#index")},r)})})},e.gotoLoginEvent=function(){o("#register .login-btn").click(function(e){window.location.href=t.to("user/#login")})},e.checkAgreement=function(){var e=this;o("#register .check-agreement").click(function(t){return 0==g?(e.showAgreement(),!1):void(o(this).hasClass("checked-active")?o(this).removeClass("checked-active"):o(this).addClass("checked-active"))}),o("#register .agreement-cls").click(function(t){e.showAgreement()}),o("#register").on("click",".agree-btn",function(e){o("#agreement-wrapper").remove(),g=!0;var t=o("#register .check-agreement");t.hasClass("checked-active")||t.addClass("checked-active")})},e.showAgreement=function(){o("#agreement-wrapper").remove();var e=o("#register"),t=o("script#agreement-template"),n=i.compile(t.html()),r=n({});e.append(r)},e}); | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |
web/src/js/order/customer-order-controller.js
@@ -7,9 +7,10 @@ define( | @@ -7,9 +7,10 @@ define( | ||
7 | 'mk7/controller', | 7 | 'mk7/controller', |
8 | 'mk7/url', | 8 | 'mk7/url', |
9 | 'mk7/utils', | 9 | 'mk7/utils', |
10 | + 'mk7/photo-browser' | ||
10 | ], | 11 | ], |
11 | 12 | ||
12 | - function(ctrl, url, utils) { | 13 | + function(ctrl, url, utils, photoBrowser) { |
13 | 14 | ||
14 | var $$ = Dom7; | 15 | var $$ = Dom7; |
15 | var t7 = Template7; | 16 | var t7 = Template7; |
@@ -73,31 +74,21 @@ define( | @@ -73,31 +74,21 @@ define( | ||
73 | }) | 74 | }) |
74 | } | 75 | } |
75 | ctrl.popupImageLayer = function() { | 76 | ctrl.popupImageLayer = function() { |
77 | + var me = this; | ||
76 | $$('#customer-order').on('click', '.view-img-cls', function(e) { | 78 | $$('#customer-order').on('click', '.view-img-cls', function(e) { |
77 | - var url = $$(this).attr('data-url'); | ||
78 | - $$('#img-mask').remove(); | ||
79 | - 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>'; | ||
80 | - $$('#customer-order').append(imgContent); | ||
81 | - }) | ||
82 | - | ||
83 | - $$('#customer-order').on('click', '#img-mask, #img-mask img', function(e) { | ||
84 | - e.preventDefault(); | ||
85 | - e.stopPropagation() | ||
86 | - | ||
87 | - var bh = document.body.clientHeight; | ||
88 | - var ih = $$('#img-mask img').height(); | ||
89 | - console.log(bh+'dddd'+ih) | ||
90 | - var interval = Math.abs(ih-bh); | ||
91 | - if (interval >=0 && interval <= 20) { | ||
92 | - $$('#img-mask').remove(); | ||
93 | - } else { | ||
94 | - var id = $$(e.target).attr('id'); | ||
95 | - if('img-mask' == id) { | ||
96 | - $$('#img-mask').remove(); | ||
97 | - } | ||
98 | - } | 79 | + var parent = $$(this).parents('ul'); |
80 | + var imagesT = parent.find('.view-img-cls'); | ||
81 | + var photoBrowserPhotos = []; | ||
82 | + var initialSlide = $$(this).attr('data-index'); | ||
83 | + $$.each(imagesT, function(i, n) { | ||
84 | + var nURL = $$(n).attr('data-url'); | ||
85 | + photoBrowserPhotos.push(nURL) | ||
86 | + }) | ||
99 | 87 | ||
88 | + var pBrowser = me.app.photoBrowser({photos:photoBrowserPhotos,initialSlide:initialSlide}); | ||
89 | + pBrowser.open(); | ||
100 | }) | 90 | }) |
91 | + | ||
101 | } | 92 | } |
102 | return ctrl; | 93 | return ctrl; |
103 | } | 94 | } |
web/src/js/order/order-details-controller.js
@@ -7,9 +7,10 @@ define( | @@ -7,9 +7,10 @@ define( | ||
7 | 'mk7/controller', | 7 | 'mk7/controller', |
8 | 'mk7/url', | 8 | 'mk7/url', |
9 | 'mk7/utils', | 9 | 'mk7/utils', |
10 | + 'mk7/photo-browser' | ||
10 | ], | 11 | ], |
11 | 12 | ||
12 | - function(ctrl, url, utils) { | 13 | + function(ctrl, url, utils, photoBrowser) { |
13 | 14 | ||
14 | var $$ = Dom7; | 15 | var $$ = Dom7; |
15 | var t7 = Template7; | 16 | var t7 = Template7; |
@@ -54,48 +55,22 @@ define( | @@ -54,48 +55,22 @@ define( | ||
54 | }) | 55 | }) |
55 | } | 56 | } |
56 | ctrl.agreementEvent = function() { | 57 | ctrl.agreementEvent = function() { |
57 | - //agreement-btn | ||
58 | - /* | ||
59 | - $$('#order-details .agreement-btn').click(function(e){ | ||
60 | - $$('#agreement-wrapper').remove(); | ||
61 | - var page = $$('#order-details'); | ||
62 | - var ele = $$('script#agreement-template'); | ||
63 | - var compiled = t7.compile(ele.html()); | ||
64 | - var doms = compiled({}); | ||
65 | - page.append(doms); | ||
66 | - }) | ||
67 | 58 | ||
68 | - $$('#order-details').on('click','.agree-btn', function(e){ | ||
69 | - $$('#agreement-wrapper').remove(); | ||
70 | - }) | ||
71 | - */ | ||
72 | } | 59 | } |
73 | - ctrl.popupImageLayer = function(){ | 60 | + ctrl.popupImageLayer = function() { |
61 | + var me = this; | ||
74 | $$('#order-details').on('click', '.view-img-cls', function(e) { | 62 | $$('#order-details').on('click', '.view-img-cls', function(e) { |
75 | - var url = $$(this).attr('data-url'); | ||
76 | - $$('#img-mask').remove(); | ||
77 | - 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>'; | ||
78 | - $$('#order-details').append(imgContent); | ||
79 | - }) | ||
80 | - | ||
81 | - $$('#order-details').on('click', '#img-mask, #img-mask img', function(e) { | ||
82 | - e.preventDefault(); | ||
83 | - e.stopPropagation() | ||
84 | - | ||
85 | - var bh = document.body.clientHeight; | ||
86 | - var ih = $$('#img-mask img').height(); | ||
87 | - console.log(bh+'dddd'+ih) | ||
88 | - var interval = Math.abs(ih-bh); | ||
89 | - if (interval >=0 && interval <= 20) { | ||
90 | - $$('#img-mask').remove(); | ||
91 | - | ||
92 | - } else { | ||
93 | - var id = $$(e.target).attr('id'); | ||
94 | - if('img-mask' == id) { | ||
95 | - $$('#img-mask').remove(); | ||
96 | - } | ||
97 | - } | 63 | + var parent = $$(this).parents('ul'); |
64 | + var imagesT = parent.find('.view-img-cls'); | ||
65 | + var photoBrowserPhotos = []; | ||
66 | + var initialSlide = $$(this).attr('data-index'); | ||
67 | + $$.each(imagesT, function(i, n) { | ||
68 | + var nURL = $$(n).attr('data-url'); | ||
69 | + photoBrowserPhotos.push(nURL) | ||
70 | + }) | ||
98 | 71 | ||
72 | + var pBrowser = me.app.photoBrowser({photos:photoBrowserPhotos,initialSlide:initialSlide}); | ||
73 | + pBrowser.open(); | ||
99 | }) | 74 | }) |
100 | } | 75 | } |
101 | 76 |
web/src/js/order/rate-controller.js
@@ -35,7 +35,7 @@ define( | @@ -35,7 +35,7 @@ define( | ||
35 | } | 35 | } |
36 | ctrl.loadPage = function(){ | 36 | ctrl.loadPage = function(){ |
37 | var me = this; | 37 | var me = this; |
38 | - me.render(); | 38 | + me.render({servicePhone:window.$site.servicePhone}); |
39 | } | 39 | } |
40 | ctrl.starClickEvent = function() { | 40 | ctrl.starClickEvent = function() { |
41 | $$('#rate').on('click', '.img-star',function(e) { | 41 | $$('#rate').on('click', '.img-star',function(e) { |
@@ -48,7 +48,6 @@ define( | @@ -48,7 +48,6 @@ define( | ||
48 | $$(n).addClass('star-on'); | 48 | $$(n).addClass('star-on'); |
49 | var rateText = parentBox.find('.rate-text'); | 49 | var rateText = parentBox.find('.rate-text'); |
50 | var txt = $$(n).attr('data-txt'); | 50 | var txt = $$(n).attr('data-txt'); |
51 | - | ||
52 | rateText.html(txt); | 51 | rateText.html(txt); |
53 | } else { | 52 | } else { |
54 | $$(n).removeClass('star-on'); | 53 | $$(n).removeClass('star-on'); |
web/src/js/order/submit-controller.js
@@ -43,14 +43,7 @@ define( | @@ -43,14 +43,7 @@ define( | ||
43 | ctrl.loadInit = function() { | 43 | ctrl.loadInit = function() { |
44 | var me = this; | 44 | var me = this; |
45 | var sData = {id:me.id} | 45 | var sData = {id:me.id} |
46 | - utils.httpGet(submitURL, sData, function(res) { | ||
47 | - if (res.success) { | ||
48 | - if (res.address) { | ||
49 | - $$('#submit .maintainerAddress').val(res.address); | ||
50 | - $$('#submit .maintainerAddress').attr('readonly', true); | ||
51 | - } | ||
52 | - } | ||
53 | - }, true); | 46 | + |
54 | } | 47 | } |
55 | ctrl.uploadImgEvent = function() { | 48 | ctrl.uploadImgEvent = function() { |
56 | var me = this; | 49 | var me = this; |
@@ -101,7 +94,7 @@ define( | @@ -101,7 +94,7 @@ define( | ||
101 | var preRepair = utils.trim($$('#submit .preRepair').val()); | 94 | var preRepair = utils.trim($$('#submit .preRepair').val()); |
102 | var repairPrice = utils.trim($$('#submit .repairPrice').val()); | 95 | var repairPrice = utils.trim($$('#submit .repairPrice').val()); |
103 | var finishDate = utils.trim($$('#submit .finishDate').val()); | 96 | var finishDate = utils.trim($$('#submit .finishDate').val()); |
104 | - var address = utils.trim($$('#submit .maintainerAddress').val()); | 97 | + |
105 | if (false == canSubmit) { | 98 | if (false == canSubmit) { |
106 | return false; | 99 | return false; |
107 | } | 100 | } |
@@ -125,7 +118,7 @@ define( | @@ -125,7 +118,7 @@ define( | ||
125 | utils.toast({content:'客联系电话有误'}); | 118 | utils.toast({content:'客联系电话有误'}); |
126 | return false; | 119 | return false; |
127 | } | 120 | } |
128 | - /* | 121 | + |
129 | if ('' == preRepair) { | 122 | if ('' == preRepair) { |
130 | utils.toast({content:'预估维修内容必填'}); | 123 | utils.toast({content:'预估维修内容必填'}); |
131 | return false; | 124 | return false; |
@@ -134,15 +127,12 @@ define( | @@ -134,15 +127,12 @@ define( | ||
134 | utils.toast({content:'预估维修费用必填'}); | 127 | utils.toast({content:'预估维修费用必填'}); |
135 | return false; | 128 | return false; |
136 | } | 129 | } |
137 | - */ | 130 | + |
138 | if ('' == finishDate) { | 131 | if ('' == finishDate) { |
139 | utils.toast({content:'预估完成时间必填'}); | 132 | utils.toast({content:'预估完成时间必填'}); |
140 | return false; | 133 | return false; |
141 | } | 134 | } |
142 | - if ('' == address) { | ||
143 | - utils.toast({content:'维修厂地址必填'}); | ||
144 | - return false; | ||
145 | - } | 135 | + |
146 | var imgs = me.getUploadImgs(); | 136 | var imgs = me.getUploadImgs(); |
147 | if (0 == imgs.length) { | 137 | if (0 == imgs.length) { |
148 | utils.toast({content:'请上传车损照'}); | 138 | utils.toast({content:'请上传车损照'}); |
@@ -151,8 +141,7 @@ define( | @@ -151,8 +141,7 @@ define( | ||
151 | canSubmit = false; | 141 | canSubmit = false; |
152 | var sData = me.csrf({ | 142 | var sData = me.csrf({ |
153 | carNo:carNo, carModel:carModel,customer:customer,phone:phone, | 143 | carNo:carNo, carModel:carModel,customer:customer,phone:phone, |
154 | - preRepair:preRepair, repairPrice:repairPrice,finishDate:finishDate, images:imgs, | ||
155 | - address:address | 144 | + preRepair:preRepair, repairPrice:repairPrice,finishDate:finishDate, images:imgs |
156 | }) | 145 | }) |
157 | utils.httpPost(doSubmitURL, sData, function(res) { | 146 | utils.httpPost(doSubmitURL, sData, function(res) { |
158 | canSubmit = true; | 147 | canSubmit = true; |
@@ -183,7 +172,7 @@ define( | @@ -183,7 +172,7 @@ define( | ||
183 | var me = this | 172 | var me = this |
184 | $$('#submit .finish-date-input').click(function(e) { | 173 | $$('#submit .finish-date-input').click(function(e) { |
185 | var cData = $$('#submit .finish-date-input').val(); | 174 | var cData = $$('#submit .finish-date-input').val(); |
186 | - console.log(cData) | 175 | + //console.log(cData) |
187 | me.dateTimeSelector('#submit .finish-date-input', cData); | 176 | me.dateTimeSelector('#submit .finish-date-input', cData); |
188 | }) | 177 | }) |
189 | } | 178 | } |
web/src/js/user/login-controller.js
@@ -24,8 +24,8 @@ define( | @@ -24,8 +24,8 @@ define( | ||
24 | me.setPageTitle("登录"); | 24 | me.setPageTitle("登录"); |
25 | me.codeDuration = 60; | 25 | me.codeDuration = 60; |
26 | if (!isGuest) { | 26 | if (!isGuest) { |
27 | - window.location.href = url.to('order/#index'); | ||
28 | - return ''; | 27 | + //window.location.href = url.to('order/#index'); |
28 | + //return ''; | ||
29 | } | 29 | } |
30 | me.render(); | 30 | me.render(); |
31 | } | 31 | } |
web/src/js/user/register-controller.js
@@ -23,14 +23,15 @@ define( | @@ -23,14 +23,15 @@ define( | ||
23 | var clickGetCode = true; | 23 | var clickGetCode = true; |
24 | var registerClick = true; | 24 | var registerClick = true; |
25 | var tt = null | 25 | var tt = null |
26 | + var hasCheckAgreement = false; | ||
26 | ctrl.run = function () { | 27 | ctrl.run = function () { |
27 | var me = this; | 28 | var me = this; |
28 | me.setPageTitle("注册"); | 29 | me.setPageTitle("注册"); |
29 | //me.hideAllNonBaseMenuItem(window.$site); | 30 | //me.hideAllNonBaseMenuItem(window.$site); |
30 | me.codeDuration = 60; | 31 | me.codeDuration = 60; |
31 | if (!isGuest) { | 32 | if (!isGuest) { |
32 | - window.location.href = url.to('order/#index'); | ||
33 | - return ''; | 33 | + //window.location.href = url.to('order/#index'); |
34 | + //return ''; | ||
34 | } | 35 | } |
35 | me.render(); | 36 | me.render(); |
36 | } | 37 | } |
@@ -44,10 +45,13 @@ define( | @@ -44,10 +45,13 @@ define( | ||
44 | me.checkAgreement(); | 45 | me.checkAgreement(); |
45 | } | 46 | } |
46 | ctrl.uploadEvent = function() { | 47 | ctrl.uploadEvent = function() { |
47 | - $$('#register .upload-input-cls').change(function() { | 48 | + $$('#register .upload-input-cls').change(function(e) { |
48 | if ('' == $$(this).val() || null == $$(this).val()) { | 49 | if ('' == $$(this).val() || null == $$(this).val()) { |
49 | return ; | 50 | return ; |
50 | } | 51 | } |
52 | + var target = e.target; | ||
53 | + var fileObject = target.files[0]; | ||
54 | + | ||
51 | var id = $$(this).attr('id'); | 55 | var id = $$(this).attr('id'); |
52 | var parent = $$(this).parent(); | 56 | var parent = $$(this).parent(); |
53 | uploadjs.uploadFile({ | 57 | uploadjs.uploadFile({ |
@@ -126,6 +130,7 @@ define( | @@ -126,6 +130,7 @@ define( | ||
126 | var code = utils.trim($$('#register .code').val()); | 130 | var code = utils.trim($$('#register .code').val()); |
127 | var emergencyContact = utils.trim($$('#register .emergency_contact').val()); | 131 | var emergencyContact = utils.trim($$('#register .emergency_contact').val()); |
128 | var emergencyPerson = utils.trim($$('#register .emergency_person').val()); | 132 | var emergencyPerson = utils.trim($$('#register .emergency_person').val()); |
133 | + var address = utils.trim($$('#register .address').val()); | ||
129 | 134 | ||
130 | if ('' == name) { | 135 | if ('' == name) { |
131 | utils.toast({content:'车厂名称必填'}) | 136 | utils.toast({content:'车厂名称必填'}) |
@@ -163,6 +168,11 @@ define( | @@ -163,6 +168,11 @@ define( | ||
163 | return false; | 168 | return false; |
164 | } | 169 | } |
165 | 170 | ||
171 | + if ('' == address) { | ||
172 | + utils.toast({content:'维修厂地址必填'}) | ||
173 | + return false; | ||
174 | + } | ||
175 | + | ||
166 | var licensePic = $$('#register .licensePic').attr('data'); | 176 | var licensePic = $$('#register .licensePic').attr('data'); |
167 | if (undefined === licensePic || null == licensePic) { | 177 | if (undefined === licensePic || null == licensePic) { |
168 | utils.toast({content:'请上传营业执照'}) | 178 | utils.toast({content:'请上传营业执照'}) |
@@ -196,6 +206,7 @@ define( | @@ -196,6 +206,7 @@ define( | ||
196 | var pData = me.csrf({ | 206 | var pData = me.csrf({ |
197 | name:name, mobile:mobile,code:code, | 207 | name:name, mobile:mobile,code:code, |
198 | emergencyContact:emergencyContact,emergencyPerson:emergencyPerson, | 208 | emergencyContact:emergencyContact,emergencyPerson:emergencyPerson, |
209 | + address:address, | ||
199 | licensePic:licensePic, | 210 | licensePic:licensePic, |
200 | headPic:headPic, | 211 | headPic:headPic, |
201 | techChargePic:techChargePic, | 212 | techChargePic:techChargePic, |
@@ -224,7 +235,12 @@ define( | @@ -224,7 +235,12 @@ define( | ||
224 | }) | 235 | }) |
225 | } | 236 | } |
226 | ctrl.checkAgreement = function() { | 237 | ctrl.checkAgreement = function() { |
238 | + var me = this; | ||
227 | $$('#register .check-agreement').click(function(e) { | 239 | $$('#register .check-agreement').click(function(e) { |
240 | + if (false == hasCheckAgreement) { | ||
241 | + me.showAgreement(); | ||
242 | + return false; | ||
243 | + } | ||
228 | if($$(this).hasClass('checked-active')) { | 244 | if($$(this).hasClass('checked-active')) { |
229 | $$(this).removeClass('checked-active'); | 245 | $$(this).removeClass('checked-active'); |
230 | } else { | 246 | } else { |
@@ -233,16 +249,12 @@ define( | @@ -233,16 +249,12 @@ define( | ||
233 | }) | 249 | }) |
234 | 250 | ||
235 | $$('#register .agreement-cls').click(function(e){ | 251 | $$('#register .agreement-cls').click(function(e){ |
236 | - $$('#agreement-wrapper').remove(); | ||
237 | - var page = $$('#register'); | ||
238 | - var ele = $$('script#agreement-template'); | ||
239 | - var compiled = t7.compile(ele.html()); | ||
240 | - var doms = compiled({}); | ||
241 | - page.append(doms); | 252 | + me.showAgreement(); |
242 | }) | 253 | }) |
243 | 254 | ||
244 | $$('#register').on('click','.agree-btn', function(e){ | 255 | $$('#register').on('click','.agree-btn', function(e){ |
245 | $$('#agreement-wrapper').remove(); | 256 | $$('#agreement-wrapper').remove(); |
257 | + hasCheckAgreement = true; | ||
246 | var checkAgreement = $$('#register .check-agreement'); | 258 | var checkAgreement = $$('#register .check-agreement'); |
247 | if(!checkAgreement.hasClass('checked-active')) { | 259 | if(!checkAgreement.hasClass('checked-active')) { |
248 | checkAgreement.addClass('checked-active'); | 260 | checkAgreement.addClass('checked-active'); |
@@ -250,6 +262,14 @@ define( | @@ -250,6 +262,14 @@ define( | ||
250 | 262 | ||
251 | }) | 263 | }) |
252 | } | 264 | } |
265 | + ctrl.showAgreement = function() { | ||
266 | + $$('#agreement-wrapper').remove(); | ||
267 | + var page = $$('#register'); | ||
268 | + var ele = $$('script#agreement-template'); | ||
269 | + var compiled = t7.compile(ele.html()); | ||
270 | + var doms = compiled({}); | ||
271 | + page.append(doms); | ||
272 | + } | ||
253 | return ctrl; | 273 | return ctrl; |
254 | } | 274 | } |
255 | ); | 275 | ); |
web/src/vendor/mk7/cmpts/uploadjs/uploadjs.js
@@ -15,23 +15,27 @@ define( | @@ -15,23 +15,27 @@ define( | ||
15 | ontimeout:function(e){}, | 15 | ontimeout:function(e){}, |
16 | error:function(res, e){if(options.error){options.error(res, e)}} | 16 | error:function(res, e){if(options.error){options.error(res, e)}} |
17 | } | 17 | } |
18 | + function appendProcess() { | ||
19 | + var preUpload = '<div id="process-bar" style="width:100%;position: absolute;top:0;bottom: 0;z-index: 222;display: flex;justify-content: center;flex-direction: column;"><div style="width: 70%;margin: 0 auto;height:1.5rem;background: #dcdcdc;"><div style="height:1.5rem;width:0%;line-height: 1.5rem;background:#4ae637;text-align:center" id="pro-bar">0%</div></div></div>'; | ||
20 | + if ('' != setting.processAppendTo) { | ||
21 | + var appendObj = document.querySelector(setting.processAppendTo); | ||
22 | + if (!appendObj) { | ||
23 | + return ''; | ||
24 | + } | ||
25 | + var processBar = appendObj.querySelector('#process-bar'); | ||
26 | + if (appendObj && processBar) { | ||
27 | + appendObj.removeChild(processBar); | ||
28 | + } | ||
29 | + | ||
30 | + appendObj.insertAdjacentHTML("beforeend", preUpload) | ||
31 | + } | ||
32 | + } | ||
33 | + | ||
18 | setting.beforeSend = function(res, e) { | 34 | setting.beforeSend = function(res, e) { |
19 | if(options.beforeSend) { | 35 | if(options.beforeSend) { |
20 | options.beforeSend(res, e) | 36 | options.beforeSend(res, e) |
21 | } else { | 37 | } else { |
22 | - var preUpload = '<div id="process-bar" style="width:100%;position: absolute;top:0;bottom: 0;z-index: 222;display: flex;justify-content: center;flex-direction: column;"><div style="width: 70%;margin: 0 auto;height:1.5rem;background: #dcdcdc;"><div style="height:1.5rem;width:0%;line-height: 1.5rem;background:#4ae637;text-align:center" id="pro-bar">0%</div></div></div>'; | ||
23 | - if ('' != setting.processAppendTo) { | ||
24 | - var appendObj = document.querySelector(setting.processAppendTo); | ||
25 | - if (!appendObj) { | ||
26 | - return ''; | ||
27 | - } | ||
28 | - var processBar = appendObj.querySelector('#process-bar'); | ||
29 | - if (appendObj && processBar) { | ||
30 | - appendObj.removeChild(processBar); | ||
31 | - } | ||
32 | - | ||
33 | - appendObj.insertAdjacentHTML("beforeend", preUpload) | ||
34 | - } | 38 | + appendProcess(); |
35 | 39 | ||
36 | } | 40 | } |
37 | } | 41 | } |
@@ -64,65 +68,136 @@ define( | @@ -64,65 +68,136 @@ define( | ||
64 | } | 68 | } |
65 | 69 | ||
66 | var fileObject = document.querySelector(setting.selector).files[0]; | 70 | var fileObject = document.querySelector(setting.selector).files[0]; |
67 | - var formData = new FormData(); | ||
68 | - var xhr = new XMLHttpRequest(); | ||
69 | - xhr.timeout = setting.timeout; | ||
70 | - xhr.onload = function(e) { | ||
71 | - //console.log(this.response); | ||
72 | - | ||
73 | - var response = JSON.parse(this.response); | ||
74 | - setting.success(response, e); | ||
75 | - }; | ||
76 | - xhr.onloadend = function(e) { | ||
77 | - //console.log('request loadend'); | ||
78 | - if ('' != setting.processAppendTo) { | ||
79 | - var appendObj = document.querySelector(setting.processAppendTo); | ||
80 | - if (appendObj) { | ||
81 | - var processBar = appendObj.querySelector('#process-bar'); | 71 | + var uploadType = ''; |
72 | + var fileSize = fileObject.size/1024; | ||
73 | + | ||
74 | + setting.uploadPost = function (fileObject, uploadType) { | ||
75 | + var formData = new FormData(); | ||
76 | + var xhr = new XMLHttpRequest(); | ||
77 | + xhr.timeout = setting.timeout; | ||
78 | + xhr.onload = function(e) { | ||
79 | + //console.log(this.response); | ||
80 | + | ||
81 | + var response = JSON.parse(('' == this.response || null == this.response)?"[]":this.response) | ||
82 | + setting.success(response, e); | ||
83 | + }; | ||
84 | + xhr.onloadend = function(e) { | ||
85 | + //console.log('request loadend'); | ||
86 | + if ('' != setting.processAppendTo) { | ||
87 | + var appendObj = document.querySelector(setting.processAppendTo); | ||
82 | if (appendObj) { | 88 | if (appendObj) { |
83 | - appendObj.removeChild(processBar); | 89 | + var processBar = appendObj.querySelector('#process-bar'); |
90 | + if (appendObj) { | ||
91 | + appendObj.removeChild(processBar); | ||
92 | + } | ||
84 | } | 93 | } |
85 | } | 94 | } |
95 | + | ||
96 | + var response = JSON.parse(('' == this.response || null == this.response)?"[]":this.response) | ||
97 | + setting.complete(response, e); | ||
98 | + }; | ||
99 | + xhr.onerror = function(e) { | ||
100 | + //console.log('request error'); | ||
101 | + var response = JSON.parse(('' == this.response || null == this.response)?"[]":this.response) | ||
102 | + setting.error(response, e); | ||
103 | + }; | ||
104 | + xhr.ontimeout = function(e) { | ||
105 | + console.log('request timeout'); | ||
106 | + setting.ontimeout(e); | ||
107 | + }; | ||
108 | + xhr.addEventListener('loadstart', function(e) { | ||
109 | + setting.beforeSend(e); | ||
110 | + }); | ||
111 | + | ||
112 | + xhr.open('post', setting.url, true) | ||
113 | + | ||
114 | + xhr.upload.onprogress = function (ex) { | ||
115 | + if (ex.lengthComputable) { | ||
116 | + setting.process(ex); | ||
117 | + } | ||
86 | } | 118 | } |
119 | + //console.log(uploadType) | ||
120 | + formData.append('uploadType', uploadType) | ||
121 | + formData.append('file', fileObject); | ||
122 | + xhr.send(formData); | ||
123 | + } | ||
87 | 124 | ||
88 | - var response = JSON.parse(this.response); | ||
89 | - setting.complete(response, e); | ||
90 | - }; | ||
91 | - xhr.onerror = function(e) { | ||
92 | - //console.log('request error'); | ||
93 | - var response = JSON.parse(this.response); | ||
94 | - setting.error(response, e); | ||
95 | - }; | ||
96 | - xhr.ontimeout = function(e) { | ||
97 | - console.log('request timeout'); | ||
98 | - setting.ontimeout(e); | ||
99 | - }; | ||
100 | - xhr.addEventListener('loadstart', function(e) { | ||
101 | - setting.beforeSend(e); | ||
102 | - }); | ||
103 | - | ||
104 | - xhr.open('post', setting.url, true) | ||
105 | - /* | ||
106 | - xhr.onreadystatechange = function () { | ||
107 | - if(this.readyState == 4) { | ||
108 | - stateChange(this.response); | ||
109 | - } else { | ||
110 | - var completeFun = arguments[3]; | ||
111 | - if (completeFun) { | ||
112 | - completeFun(this); | ||
113 | - } | ||
114 | - | ||
115 | - } | ||
116 | - } | ||
117 | - */ | ||
118 | - | ||
119 | - xhr.upload.onprogress = function (ex) { | ||
120 | - if (ex.lengthComputable) { | ||
121 | - setting.process(ex); | 125 | + setting.compressAndUpload = function(fileObject, uploadType) { |
126 | + | ||
127 | + // 压缩图片需要的一些元素和对象 | ||
128 | + var reader = new FileReader(), | ||
129 | + //创建一个img对象 | ||
130 | + img = new Image(); | ||
131 | + | ||
132 | + // 选择的文件对象 | ||
133 | + var file = fileObject; | ||
134 | + var newObj = null; | ||
135 | + | ||
136 | + // 缩放图片需要的canvas | ||
137 | + var canvas = document.createElement('canvas'); | ||
138 | + var context = canvas.getContext('2d'); | ||
139 | + | ||
140 | + if(file == undefined || file == '') { | ||
141 | + return ; | ||
122 | } | 142 | } |
143 | + // 选择的文件是图片 | ||
144 | + if(file.type.indexOf("image") == 0) { | ||
145 | + reader.readAsDataURL(file); | ||
146 | + } else { | ||
147 | + return false; | ||
148 | + } | ||
149 | + | ||
150 | + // 文件base64化,以便获知图片原始尺寸 | ||
151 | + reader.onload = function(onloadEvent) { | ||
152 | + img.src = onloadEvent.target.result; | ||
153 | + }; | ||
154 | + appendProcess(); | ||
155 | + // base64地址图片加载完毕后 | ||
156 | + img.onload = function() { | ||
157 | + | ||
158 | + var img = this; | ||
159 | + var time = new Date().getTime(); | ||
160 | + // 图片原始尺寸 | ||
161 | + var originWidth = img.width; | ||
162 | + var originHeight = img.height; | ||
163 | + // 最大尺寸限制,可通过设置宽高来实现图片压缩程度 | ||
164 | + var maxWidth = 1024, | ||
165 | + maxHeight = 1024; | ||
166 | + // 目标尺寸 | ||
167 | + var targetWidth = originWidth, | ||
168 | + targetHeight = originHeight; | ||
169 | + // 图片尺寸超过限制 | ||
170 | + if (originWidth > maxWidth || originHeight > maxHeight) { | ||
171 | + if (originWidth / originHeight > maxWidth / maxHeight) { | ||
172 | + // 更宽,按照宽度限定尺寸 | ||
173 | + targetWidth = maxWidth; | ||
174 | + targetHeight = Math.round(maxWidth * (originHeight / originWidth)); | ||
175 | + } else { | ||
176 | + targetHeight = maxHeight; | ||
177 | + targetWidth = Math.round(maxHeight * (originWidth / originHeight)); | ||
178 | + } | ||
179 | + } | ||
180 | + // canvas对图片进行缩放 | ||
181 | + canvas.width = targetWidth; | ||
182 | + canvas.height = targetHeight; | ||
183 | + // 清除画布 | ||
184 | + context.clearRect(0, 0, targetWidth, targetHeight); | ||
185 | + // 图片压缩 | ||
186 | + context.drawImage(img, 0, 0, targetWidth, targetHeight); | ||
187 | + var newImage = canvas.toDataURL('image/jpeg', 0.7); //base64 格式 | ||
188 | + | ||
189 | + setting.uploadPost(newImage, uploadType); | ||
190 | + } | ||
191 | + | ||
192 | + } | ||
193 | + | ||
194 | + if (fileSize <= 1024) { | ||
195 | + uploadType = 'file' | ||
196 | + setting.uploadPost(fileObject, uploadType); | ||
197 | + } else { | ||
198 | + uploadType = 'base64'; | ||
199 | + setting.compressAndUpload(fileObject, uploadType) | ||
123 | } | 200 | } |
124 | - formData.append('file', fileObject); | ||
125 | - xhr.send(formData); | ||
126 | 201 | ||
127 | } | 202 | } |
128 | return object; | 203 | return object; |