Commit bb286f60958bdb433ee448a02cfc10932569c09d
1 parent
c0431852
Exists in
dev
fix:优化添加订单的功能逻辑
Showing
4 changed files
with
202 additions
and
79 deletions
Show diff stats
... | ... | @@ -0,0 +1,65 @@ |
1 | +export const sys_sf = { | |
2 | + Y: {code: '1', info: '是'}, | |
3 | + N: {code: '0', info: '否'} | |
4 | +}; | |
5 | + | |
6 | +/** | |
7 | + * 订单来源枚举 | |
8 | + */ | |
9 | +export const dd_ddly = { | |
10 | + XSXD: {code: '1', info: '线上下单'}, | |
11 | + WDPS: {code: '2', info: '无单配送'}, | |
12 | + BZXD: {code: '3', info: '帮助下单'} | |
13 | +}; | |
14 | + | |
15 | +/** | |
16 | + * 付款方式枚举 | |
17 | + */ | |
18 | +export const dd_fkfs = { | |
19 | + HDFK: {code: '1', info: '货到付款'}, | |
20 | + ZXZF: {code: '2', info: '在线支付'} | |
21 | +}; | |
22 | + | |
23 | +/** | |
24 | + * 配送方式枚举 | |
25 | + */ | |
26 | +export const dd_psfs = { | |
27 | + PS: {code: '1', info: '配送'}, | |
28 | + ZT: {code: '2', info: '自提'} | |
29 | +}; | |
30 | + | |
31 | + | |
32 | +/** | |
33 | + * 付款方式枚举 | |
34 | + */ | |
35 | +export const dd_zffs = { | |
36 | + CASH: {code: 'CASH', info: '现金支付'}, | |
37 | + WX_PAY: {code: 'WX_PAY', info: '微信支付'}, | |
38 | + ALI_PAY: {code: 'ALI_PAY', info: '支付宝支付'} | |
39 | +}; | |
40 | + | |
41 | + | |
42 | +/** | |
43 | + * 支付场景枚举 | |
44 | + */ | |
45 | +export const dd_zflx = { | |
46 | + APP: {code: 'APP', info: '移动应用内的支付场景'}, | |
47 | + NATIVE: {code: 'NATIVE', info: '线下消费场景'}, | |
48 | + JSAPI: {code: 'JSAPI', info: '公众号内或者微信内的网页支付'}, | |
49 | + MWEB: {code: 'MWEB', info: '手机浏览器中的支付场景'} | |
50 | +}; | |
51 | + | |
52 | + | |
53 | +export const dd_ddzt = { | |
54 | + CREATED: {code: '201', info: '待支付'}, | |
55 | + PAID: {code: '202', info: '待配送'}, | |
56 | + SHIPPED: {code: '203', info: '配送中'}, | |
57 | + COMPLETED: {code: '204', info: '已完成'}, | |
58 | + CANCELLED: {code: '205', info: '取消中'}, | |
59 | + REFUNDING: {code: '206', info: '退款中'}, | |
60 | + REFUNDED: {code: '207', info: '已取消'} | |
61 | +}; | |
62 | + | |
63 | + | |
64 | + | |
65 | + | ... | ... |
frontend/front/src/views/pages/newOrder/components/bxd.vue
1 | 1 | <template> |
2 | 2 | <div class="containerSty"> |
3 | - <el-row> | |
4 | - <el-col :span="24"> | |
5 | - <el-form :model="repairForm" label-width="73px" ref="repairForm" | |
6 | - class="demo-form-inline;"> | |
7 | - <div style="display:flex;"> | |
8 | - <el-form-item label="问题小类:"> | |
9 | - <el-select v-model="repairForm.wtxl" style="width: calc(100vw / 5);" placeholder="请选择问题小类"> | |
10 | - <el-option | |
11 | - v-for="item in bxxlOptions" | |
12 | - :key="item.value" | |
13 | - :label="item.label" | |
14 | - :value="item.value"> | |
15 | - </el-option> | |
16 | - </el-select> | |
17 | - </el-form-item> | |
18 | - <el-form-item label="报修类型:" label-width="100px"> | |
19 | - <el-select v-model="repairForm.bxlx" style="width: calc(100vw / 4.5);" placeholder="请选择报修类型"> | |
20 | - <el-option | |
21 | - v-for="item in bxlxOptions" | |
22 | - :key="item.label" | |
23 | - :label="item.label" | |
24 | - :value="item.label"> | |
25 | - </el-option> | |
26 | - </el-select> | |
27 | - </el-form-item> | |
28 | - </div> | |
29 | - <el-form-item label="问题类型:"> | |
30 | - <el-input v-model="repairForm.wtlx" type="textarea" :rows="2" clearable placeholder="请输入问题描述"></el-input> | |
31 | - </el-form-item> | |
32 | - <el-form-item label="图片:"> | |
33 | - <el-upload | |
34 | - :action="action" | |
35 | - accept=".jpg,.jpeg,.png" | |
36 | - list-type="picture-card" | |
37 | - :file-list="repairForm.fileList" | |
38 | - class="labUrlClass" | |
39 | - :on-success="handleImgSuccess" | |
40 | - :before-upload="beforeAvatarUpload" | |
41 | - :http-request="httpRequest" | |
42 | - multiple | |
43 | - > | |
44 | - <i slot="default" class="el-icon-plus"></i> | |
45 | - <span class="el-upload__text">选择照片</span> | |
46 | - <div slot="file" slot-scope="{ file }"> | |
47 | - | |
48 | - <img | |
49 | - class="el-upload-list__item-thumbnail" | |
50 | - :src="file.url" | |
51 | - alt="" | |
52 | - /> | |
53 | - <span class="el-upload-list__item-actions"> | |
3 | + <el-form :model="repairForm" :rules="repairFormRules" label-width="82px" ref="repairForm"> | |
4 | + <div style="display: flex;"> | |
5 | + <el-form-item label="问题小类:" prop="wtxl"> | |
6 | + <el-select v-model="repairForm.wtxl" style="width: calc(100vw / 5.2);" clearable placeholder="请选择问题小类"> | |
7 | + <el-option | |
8 | + v-for="item in bxxlOptions" | |
9 | + :key="item.value" | |
10 | + :label="item.label" | |
11 | + :value="item.value"> | |
12 | + </el-option> | |
13 | + </el-select> | |
14 | + </el-form-item> | |
15 | + <el-form-item label="报修类型:" label-width="100px" prop="bxlx"> | |
16 | + <el-select v-model="repairForm.bxlx" style="width: calc(100vw / 5.8);" clearable placeholder="请选择报修类型"> | |
17 | + <el-option | |
18 | + v-for="item in bxlxOptions" | |
19 | + :key="item.label" | |
20 | + :label="item.label" | |
21 | + :value="item.label"> | |
22 | + </el-option> | |
23 | + </el-select> | |
24 | + </el-form-item> | |
25 | + </div> | |
26 | + <el-form-item label="问题类型:" prop="wtlx"> | |
27 | + <el-input v-model="repairForm.wtlx" type="textarea" :rows="2" clearable placeholder="请输入问题描述"></el-input> | |
28 | + </el-form-item> | |
29 | + <el-form-item label="图片:"> | |
30 | + <el-upload | |
31 | + :action="action" | |
32 | + accept=".jpg,.jpeg,.png" | |
33 | + list-type="picture-card" | |
34 | + :file-list="repairForm.fileList" | |
35 | + class="labUrlClass" | |
36 | + :on-success="handleImgSuccess" | |
37 | + :before-upload="beforeAvatarUpload" | |
38 | + :http-request="httpRequest" | |
39 | + multiple | |
40 | + > | |
41 | + <i slot="default" class="el-icon-plus"></i> | |
42 | + <div style="position: absolute;top: 30px;left: 45px" class="el-upload__text">选择照片</div> | |
43 | + <div slot="file" slot-scope="{ file }"> | |
44 | + <img | |
45 | + class="el-upload-list__item-thumbnail" | |
46 | + :src="file.url" | |
47 | + alt="" | |
48 | + /> | |
49 | + <span class="el-upload-list__item-actions"> | |
54 | 50 | <span |
55 | 51 | class="el-upload-list__item-preview" |
56 | 52 | @click="handlePictureCardPreview(file)" |
... | ... | @@ -64,15 +60,13 @@ |
64 | 60 | <i class="el-icon-delete"></i> |
65 | 61 | </span> |
66 | 62 | </span> |
67 | - </div> | |
68 | - </el-upload> | |
69 | - </el-form-item> | |
70 | - </el-form> | |
71 | - </el-col> | |
72 | - <el-dialog :visible.sync="dialogVisible"> | |
73 | - <img width="100%" :src="dialogImageUrl" alt=""> | |
74 | - </el-dialog> | |
75 | - </el-row> | |
63 | + </div> | |
64 | + </el-upload> | |
65 | + </el-form-item> | |
66 | + </el-form> | |
67 | + <el-dialog :visible.sync="dialogVisible" width="400px" title="预览图片"> | |
68 | + <img width="100%" :src="dialogImageUrl" alt=""> | |
69 | + </el-dialog> | |
76 | 70 | </div> |
77 | 71 | </template> |
78 | 72 | |
... | ... | @@ -83,6 +77,17 @@ export default { |
83 | 77 | name: "bxd", |
84 | 78 | data(){ |
85 | 79 | return { |
80 | + repairFormRules:{ | |
81 | + wtxl:[ | |
82 | + {required:true,message:'请选择问题小类',trigger:'change'} | |
83 | + ], | |
84 | + bxlx:[ | |
85 | + {required:true,message:'请选择报修类型',trigger:'change'} | |
86 | + ], | |
87 | + wtlx:[ | |
88 | + {required:true,message:'请输入问题类型描述',trigger:'blur'} | |
89 | + ] | |
90 | + }, | |
86 | 91 | bxlxOptions:[ |
87 | 92 | { |
88 | 93 | value: '燃气泄漏', |
... | ... | @@ -148,6 +153,20 @@ export default { |
148 | 153 | ...this.repairForm |
149 | 154 | }; |
150 | 155 | }, |
156 | + onSubmit(){ | |
157 | + let validFlag = false; | |
158 | + this.$refs.repairForm.validate((valid) => { | |
159 | + if (valid) { | |
160 | + validFlag = true; | |
161 | + } else { | |
162 | + validFlag = false; | |
163 | + } | |
164 | + }); | |
165 | + return validFlag; | |
166 | + }, | |
167 | + onReset(){ | |
168 | + this.$refs.repairForm.resetFields(); | |
169 | + }, | |
151 | 170 | handlePictureCardRemove(file, fileList) { |
152 | 171 | console.log(file, this.repairForm.fileList); |
153 | 172 | const index = this.repairForm.fileList.findIndex((item) => { |
... | ... | @@ -199,9 +218,6 @@ export default { |
199 | 218 | // this.form.userId = this.$store.state.user.userInfo.user.userId |
200 | 219 | } |
201 | 220 | }, |
202 | - onSubmit(){ | |
203 | - console.log('打印是否触发这个事件') | |
204 | - }, | |
205 | 221 | handleRemove(){ |
206 | 222 | |
207 | 223 | }, |
... | ... | @@ -250,6 +266,11 @@ export default { |
250 | 266 | |
251 | 267 | <style lang="scss" scoped> |
252 | 268 | .containerSty{ |
269 | + height: 100%; | |
270 | + width: 100%; | |
271 | + ::v-deep.el-upload--picture-card{ | |
272 | + position: relative; | |
273 | + } | |
253 | 274 | |
254 | 275 | } |
255 | 276 | ... | ... |
frontend/front/src/views/pages/newOrder/components/dqd.vue
... | ... | @@ -37,12 +37,9 @@ |
37 | 37 | </div> |
38 | 38 | <el-row style="margin-top: 10px"> |
39 | 39 | <el-col :span="24"> |
40 | - <el-form :model="form" label-width="75px"> | |
41 | - <el-form-item label="订单备注:"> | |
42 | - <el-input v-model="form.bz" type="textarea" :rows="2" style="width: 100%" clearable placeholder="请输入订单备注"></el-input> | |
43 | - </el-form-item> | |
44 | - <el-form-item label="配送方式:"> | |
45 | - <el-select v-model="form.psfs" placeholder="请选择"> | |
40 | + <el-form :model="form" ref="form" :rules="formRules" label-width="82px"> | |
41 | + <el-form-item label="配送方式:" prop="psfs"> | |
42 | + <el-select v-model="form.psfs" style="width: 100%" clearable placeholder="请选择"> | |
46 | 43 | <el-option |
47 | 44 | v-for="item in psfsOptions" |
48 | 45 | :key="item.KEY_" |
... | ... | @@ -51,6 +48,9 @@ |
51 | 48 | </el-option> |
52 | 49 | </el-select> |
53 | 50 | </el-form-item> |
51 | + <el-form-item label="订单备注:"> | |
52 | + <el-input v-model="form.bz" type="textarea" :rows="2" style="width: 100%" clearable placeholder="请输入订单备注"></el-input> | |
53 | + </el-form-item> | |
54 | 54 | </el-form> |
55 | 55 | </el-col> |
56 | 56 | <el-col :span="24" style="border: 1px solid #dcdfe6;padding: 20px"> |
... | ... | @@ -103,6 +103,11 @@ export default { |
103 | 103 | name: "bxd", |
104 | 104 | data(){ |
105 | 105 | return { |
106 | + formRules:{ | |
107 | + psfs:[ | |
108 | + {required:true,message:'请选择配送方式',trigger:'change'} | |
109 | + ], | |
110 | + }, | |
106 | 111 | form:{ |
107 | 112 | qplxID:'', |
108 | 113 | spje:'', |
... | ... | @@ -178,9 +183,20 @@ export default { |
178 | 183 | console.log('打印gasStationImg', this.chooseProductList); |
179 | 184 | }) |
180 | 185 | }, |
181 | - onSubmit(val){ | |
186 | + onSubmit(){ | |
187 | + let validFlag = false; | |
188 | + this.$refs.form.validate((valid) => { | |
189 | + if (valid) { | |
190 | + validFlag = true; | |
191 | + } else { | |
192 | + validFlag = false; | |
193 | + } | |
194 | + }); | |
195 | + return validFlag; | |
196 | + }, | |
197 | + onReset(){ | |
198 | + this.$refs.form.resetFields(); | |
182 | 199 | }, |
183 | - | |
184 | 200 | handleChoseProduct(row,index,type){ |
185 | 201 | switch (type){ |
186 | 202 | case 'chooseProduct': | ... | ... |
frontend/front/src/views/pages/newOrder/index.vue
... | ... | @@ -89,19 +89,25 @@ |
89 | 89 | <el-col :span="24" style="height: calc(100% - 300px); overflow-y: auto"> |
90 | 90 | <el-table :data="memberOrderListData" style="margin-top: 10px;"> |
91 | 91 | <template v-if="tabs.activeName=='dqd'"> |
92 | - <el-table-column property="spmc" label="商品" > | |
92 | + <el-table-column min-width="130px" property="spmc" label="商品" > | |
93 | 93 | </el-table-column> |
94 | 94 | <el-table-column property="fDdzt" label="状态" > |
95 | + <template slot-scope="scope"> | |
96 | + {{ddDdzt.get(scope.row.fDdzt)}} | |
97 | + </template> | |
95 | 98 | </el-table-column> |
96 | 99 | <el-table-column property="fDdje" label="金额" ></el-table-column> |
97 | - <el-table-column property="fCjsj" label="时间" ></el-table-column> | |
100 | + <el-table-column property="fCjsj" min-width="150px" label="时间1" ></el-table-column> | |
98 | 101 | </template> |
99 | 102 | <template v-else> |
100 | 103 | <el-table-column property="fBxlx" label="问题类型" > |
101 | 104 | </el-table-column> |
102 | 105 | <el-table-column property="fZt" label="状态" > |
106 | + <template slot-scope="scope"> | |
107 | + <span>{{scope.row.fZt}}</span> | |
108 | + </template> | |
103 | 109 | </el-table-column> |
104 | - <el-table-column property="fXdsj" label="上报时间" ></el-table-column> | |
110 | + <el-table-column property="fXdsj" min-width="110px" label="上报时间" ></el-table-column> | |
105 | 111 | </template> |
106 | 112 | <!-- <el-table-column label="操作" align="center">--> |
107 | 113 | <!-- <template slot-scope="scope">--> |
... | ... | @@ -129,6 +135,7 @@ |
129 | 135 | </template> |
130 | 136 | |
131 | 137 | <script> |
138 | +import { dd_ddzt} from "@/utils/enums"; | |
132 | 139 | import {memberInfo,submitOrderPort,submitExpairPort,repairDataHistoryListPort,repairDataHistoryDetailPort,orderDataHistoryListPort} from '@/api/orderManage' |
133 | 140 | import { getDict } from '@/api/common.js' |
134 | 141 | import bxd from './components/bxd' |
... | ... | @@ -146,6 +153,7 @@ export default { |
146 | 153 | showMapDialog:false, |
147 | 154 | hylxOptions:[], |
148 | 155 | memberOrderListData:[], |
156 | + ddDdzt: new Map(Object.values(dd_ddzt).map(item => [item.code, item.info])), | |
149 | 157 | pageForm:{ |
150 | 158 | total:0, |
151 | 159 | size:10, |
... | ... | @@ -213,7 +221,6 @@ export default { |
213 | 221 | this.initData(); |
214 | 222 | }, |
215 | 223 | methods:{ |
216 | - | |
217 | 224 | async initData(){ |
218 | 225 | let query = [{ |
219 | 226 | key: 'NAME_', |
... | ... | @@ -360,8 +367,7 @@ export default { |
360 | 367 | } |
361 | 368 | }, |
362 | 369 | handleClick(){ |
363 | - console.log('打印this.$refs[this.tabs.activeName]',this.$refs[this.tabs.activeName][0].onSubmit()) | |
364 | - this.$refs[this.tabs.activeName][0].onSubmit(this.queryForm); | |
370 | + this.$refs[this.tabs.activeName][0].onReset(); | |
365 | 371 | switch (this.tabs.activeName){ |
366 | 372 | case "dqd": |
367 | 373 | if(this.memberForm.fUserid){ |
... | ... | @@ -419,6 +425,7 @@ export default { |
419 | 425 | let orderform = this.$refs[this.tabs.activeName][0].form |
420 | 426 | switch (this.tabs.activeName){ |
421 | 427 | case "dqd": |
428 | + console.log('打印',this.$refs); | |
422 | 429 | let params ={ |
423 | 430 | psfs:orderform.psfs, |
424 | 431 | khxx:{ |
... | ... | @@ -442,7 +449,14 @@ export default { |
442 | 449 | qplxID:this.dqdForm.qplxID |
443 | 450 | } |
444 | 451 | } |
445 | - this.submitDqdForm(params); | |
452 | + if(!this.dqdForm.qplxID){ | |
453 | + this.$message.warning('请先选择商品!'); | |
454 | + return false; | |
455 | + } | |
456 | + let validFlag = this.$refs.dqd[0].onSubmit(); | |
457 | + if(validFlag){ | |
458 | + this.submitDqdForm(params); | |
459 | + } | |
446 | 460 | break; |
447 | 461 | case 'bxd': |
448 | 462 | let repairform = this.$refs[this.tabs.activeName][0].repairForm; |
... | ... | @@ -450,6 +464,8 @@ export default { |
450 | 464 | if(repairform.fileList.length>0){ |
451 | 465 | let photoList = repairform.fileList.map(item => JSON.parse(item.fileObj)); |
452 | 466 | wttp = JSON.stringify(photoList); |
467 | + }else{ | |
468 | + wttp = null | |
453 | 469 | } |
454 | 470 | console.log('打印repairform',repairform,this.memberForm); |
455 | 471 | let bxdParams ={ |
... | ... | @@ -470,7 +486,10 @@ export default { |
470 | 486 | wttp:wttp, |
471 | 487 | hyxm:this.memberForm.fHync, |
472 | 488 | } |
473 | - this.submitBxdForm(bxdParams); | |
489 | + let bxdValidFlag = this.$refs.bxd[0].onSubmit(); | |
490 | + if(bxdValidFlag){ | |
491 | + this.submitBxdForm(bxdParams); | |
492 | + } | |
474 | 493 | break; |
475 | 494 | } |
476 | 495 | } else { |
... | ... | @@ -485,6 +504,7 @@ export default { |
485 | 504 | if(res.state == true){ |
486 | 505 | this.$message.success('提交成功!'); |
487 | 506 | this.$refs[this.tabs.activeName][0].resetForm(); |
507 | + this.$refs.dqd[0].onReset(); | |
488 | 508 | this.orderGasForm.zj = ''; |
489 | 509 | this.getOrderHistoryList(); |
490 | 510 | } |
... | ... | @@ -497,6 +517,7 @@ export default { |
497 | 517 | if(res.state == true){ |
498 | 518 | this.$message.success('提交成功!'); |
499 | 519 | this.$refs[this.tabs.activeName][0].resetForm(); |
520 | + this.$refs.bxd[0].onReset(); | |
500 | 521 | this.getRepairHistoryList(); |
501 | 522 | } |
502 | 523 | }) | ... | ... |