Commit bb286f60958bdb433ee448a02cfc10932569c09d

Authored by 郭娟
1 parent c0431852
Exists in dev

fix:优化添加订单的功能逻辑

frontend/front/src/utils/enums.js 0 → 100644
... ... @@ -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 })
... ...