Bläddra i källkod

feat:
1. 调整线下销售单的旧机回收逻辑
2. 销售退货单增加旧机信息(列表、新增、编辑、详情、审核)

Moss 1 år sedan
förälder
incheckning
35d1127c2e

+ 29 - 7
src/views/mallManagement/order/offline_order_list/index.vue

@@ -16,7 +16,7 @@
 			</template-page>
 			<div v-if="~['add', 'edit'].indexOf(activeKey)" style="box-sizing: border-box;padding: 16px;">
 
-				<el-form ref="formRef" :model="formData" :rules="formRules" label-position="left" label-width="90px">
+				<el-form ref="formRef" :model="formData" :rules="formRules" label-position="left" label-width="100px">
 
           <div style="font-weight: 500;">客户信息</div>
           <el-divider></el-divider>
@@ -61,7 +61,7 @@
                 <el-input v-model="formData.recePhone" autocomplete="off" placeholder="请输入客户电话"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="12">
+            <el-col :span="6">
               <el-form-item label="支付方式" prop="payType">
                 <el-radio-group v-model="formData.payType">
                   <el-radio label="WECHAT">微信支付</el-radio>
@@ -70,6 +70,14 @@
                 </el-radio-group>
               </el-form-item>
             </el-col>
+            <el-col :span="6">
+              <el-form-item label="是否以旧换新" prop="isOld">
+                <el-radio-group v-model="formData.isOld" @change="() => {formTabs = 'a'}">
+                  <el-radio label="YES">是</el-radio>
+                  <el-radio label="NO">否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
             <el-col :span="24">
               <el-form-item label="客户地址" prop="province" :required="true">
                 <el-row>
@@ -147,13 +155,13 @@
 
         <el-tabs v-model="formTabs">
           <el-tab-pane label="商品信息" name="a"></el-tab-pane>
-          <el-tab-pane label="旧机信息" name="b"></el-tab-pane>
+          <el-tab-pane label="旧机信息" name="b" v-if="formData.isOld == 'YES'"></el-tab-pane>
         </el-tabs>
 
         <div v-show="formTabs == 'a'">
           <div style="margin-top: 30px;">
-            <el-button type="primary" size="small" @click="addGoods(1)">添加商品</el-button>
-            <el-button type="primary" size="small" @click="addGoods(2)">添加物料</el-button>
+            <el-button type="primary" size="small" @click="addGoods(1)" :disabled="formData.isOld == 'YES' && goodsList.length > 0">添加商品</el-button>
+            <el-button type="primary" size="small" @click="addGoods(2)" :disabled="formData.isOld == 'YES' && goodsList.length > 0">添加物料</el-button>
           </div>
           <el-table
             class="specTable"
@@ -693,6 +701,7 @@ export default {
         receUserName: '', // 客户名称
         recePhone: '', // 客户电话
         payType: 'WECHAT', // 支付方式
+        isOld: 'NO',
         lng: '',
         lat: '',
         province: '',
@@ -906,6 +915,7 @@ export default {
       	}
       })
     },
+
     formCancel() {
       this.formVisible = false
       this.$refs?.formRef?.resetFields()
@@ -923,9 +933,16 @@ export default {
       this.oldList = [];
       this.$data.formRef = this.$options.data().formRef
     },
+
     formConfirm(cancel) {
       this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
         if (valid) {
+          if(this.goodsList.length < 1) return this.$errorMsg('请添加商品信息');
+          if(this.formData.isOld == 'YES') {
+            if(this.goodsList.length > 1) return this.$errorMsg('以旧换新只可添加一个商品信息');
+            if(this.oldList.length < 1) return this.$errorMsg('以旧换新需要添加旧机信息');
+          }
+
           let orderSmallTypeText = this.orderTypeList.find(o => o.id == this.formData.orderSmallType).orderSmallTypeText;
           let oldList = this.oldList.map(item => {
             return {
@@ -936,7 +953,12 @@ export default {
             }
           })
 
-          offlineOrderSave({...this.formData, orderSmallTypeText, orderDetails: this.goodsList, orderOldProductAdds: oldList}).then(res => {
+          offlineOrderSave({
+            ...this.formData,
+            orderSmallTypeText,
+            orderDetails: this.goodsList,
+            orderOldProductAdds: this.formData.isOld == 'YES' ? oldList : []
+          }).then(res => {
             if(this.formData.payType == 'WECHAT' && this.formDialogType == 0) {
               offlineOrderExamine({
                 orderId: res.data,
@@ -1420,7 +1442,7 @@ export default {
       this.oldList.push(item);
     },
 
-    // 删除规格
+    // 删除旧机
     deleteOld(index) {
       this.oldList.splice(index, 1);
     },

+ 2 - 2
src/views/mallManagement/order/order_detail/index.vue

@@ -134,8 +134,8 @@
     <div class="order-detail" v-if="orderDetail.orderOldProductDTOList && orderDetail.orderOldProductDTOList.length > 0" style="margin-bottom: 20px;">
       <!-- 回收 -->
       <el-table :data="orderDetail.orderOldProductDTOList" style="width: 100%;" size="small" border>
-        <el-table-column prop="bigName" label="大类" align="center"></el-table-column>
-        <el-table-column prop="mainName" label="小类" align="center"></el-table-column>
+        <el-table-column prop="mainName" label="大类" align="center"></el-table-column>
+        <el-table-column prop="smallName" label="小类" align="center"></el-table-column>
         <el-table-column prop="specName" label="型号" align="center"></el-table-column>
         <el-table-column prop="itemList" label="属性" align="center">
           <template slot-scope="scope">

+ 110 - 28
src/views/mallManagement/order/sales_return_order_list/index.vue

@@ -109,12 +109,21 @@
             </el-col>
           </el-row>
 
-          <el-tabs v-model="curTabs">
+          <el-tabs v-model="formTabs">
             <el-tab-pane label="商品信息" name="a"></el-tab-pane>
             <el-tab-pane label="条码信息" name="b" v-if="joinCode"></el-tab-pane>
+            <el-tab-pane label="旧机信息" name="c" v-if="formData.isReturnOld === 'YES'"></el-tab-pane>
           </el-tabs>
 
-          <div v-show="curTabs == 'a'">
+          <div v-show="formTabs == 'a'">
+            <div style="margin-top: 10px;" v-if="formData.isOld == 'YES'">
+              <el-form-item label="是否退旧机" label-width="100px" prop="isReturnOld">
+                <el-radio-group v-model="formData.isReturnOld">
+                  <el-radio label="YES">是</el-radio>
+                  <el-radio label="NO">否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </div>
             <el-table
               class="specTable"
               :data="goodsList"
@@ -168,7 +177,7 @@
               </el-table-column>
             </el-table>
           </div>
-          <div v-show="curTabs == 'b'">
+          <div v-show="formTabs == 'b'">
             <el-table
               class="specTable"
               :data="codeList"
@@ -201,7 +210,30 @@
 
             </el-table>
           </div>
-          
+          <div v-show="formTabs == 'c'">
+            <el-table
+              class="specTable"
+              :data="oldList"
+              element-loading-text="Loading"
+              border
+              highlight-current-row
+              stripe
+              style="margin-top: 20px">
+              <el-table-column align="center" label="大类" prop="mainName" min-width="160"></el-table-column>
+              <el-table-column align="center" label="小类" prop="smallName" min-width="160"></el-table-column>
+              <el-table-column align="center" label="规格型号" prop="specName" min-width="160"></el-table-column>
+              <el-table-column align="center" label="属性" prop="attrId" min-width="160">
+                <template slot-scope="scope">
+                  {{scope.row.itemList.map(o => o.dictName).join('、')}}
+                </template>
+              </el-table-column>
+              <el-table-column align="center" label="单位" min-width="120">
+                <template>台</template>
+              </el-table-column>
+              <el-table-column align="center" label="数量" prop="num" min-width="120"></el-table-column>
+              <el-table-column align="center" label="金额" prop="payAmount" min-width="120"></el-table-column>
+            </el-table>
+          </div>
           
         </el-form>
 				<div slot="footer" class="dialog-footer" style="margin-top: 20px;">
@@ -262,12 +294,13 @@
           </el-descriptions-item>
         </el-descriptions>
 
-        <el-tabs v-model="curTabs">
+        <el-tabs v-model="detailTabs">
           <el-tab-pane label="商品信息" name="a"></el-tab-pane>
           <el-tab-pane label="条码信息" name="b" v-if="joinCode"></el-tab-pane>
+          <el-tab-pane label="旧机信息" name="c" v-if="detailData.isOld == 'YES'"></el-tab-pane>
         </el-tabs>
 
-        <div v-show="curTabs == 'a'">
+        <div v-show="detailTabs == 'a'">
           <el-table
             class="specTable"
             :data="detailData.orderOfflineRefundItems"
@@ -305,7 +338,7 @@
             <el-table-column align="center" label="订单金额" prop="payAmount" min-width="120"></el-table-column>
           </el-table>
         </div>
-        <div v-show="curTabs == 'b'">
+        <div v-show="detailTabs == 'b'">
           <el-table
             class="specTable"
             :data="detailData.orderOfflineItemCodes"
@@ -331,6 +364,30 @@
 
           </el-table>
         </div>
+        <div v-show="detailTabs == 'c'">
+          <el-table
+              class="specTable"
+              :data="detailData.orderOldProductDTOList"
+              element-loading-text="Loading"
+              border
+              highlight-current-row
+              stripe
+              style="margin-top: 20px">
+              <el-table-column align="center" label="大类" prop="mainName" min-width="160"></el-table-column>
+              <el-table-column align="center" label="小类" prop="smallName" min-width="160"></el-table-column>
+              <el-table-column align="center" label="规格型号" prop="specName" min-width="160"></el-table-column>
+              <el-table-column align="center" label="属性" prop="attrId" min-width="160">
+                <template slot-scope="scope">
+                  {{scope.row.itemList.map(o => o.dictName).join('、')}}
+                </template>
+              </el-table-column>
+              <el-table-column align="center" label="单位" min-width="120">
+                <template>台</template>
+              </el-table-column>
+              <el-table-column align="center" label="数量" prop="num" min-width="120"></el-table-column>
+              <el-table-column align="center" label="金额" prop="payAmount" min-width="120"></el-table-column>
+            </el-table>
+        </div>
 
 				<div slot="footer" class="dialog-footer" style="margin-top: 20px;">
 				  <el-button size="mini" @click="data.removeTab()">关 闭</el-button>
@@ -535,8 +592,13 @@ export default {
 
         remark: '', // 备注
         fileUrl: '', // 附件
+
+        isOld: 'NO',
+        isReturnOld: '',
+      },
+      formRules: {
+        isReturnOld: [{ required: true, message: '请选择是否退旧机', trigger: 'change' }],
       },
-      formRules: {},
       formType: 'add',
       formVisible: false,
 
@@ -544,7 +606,9 @@ export default {
       orderTypeList: [],
       goodsList: [],
       codeList: [],
-      curTabs: 'a',
+      oldList: [],
+      formTabs: 'a',
+      detailTabs: 'a',
 
       detailData: {},
 
@@ -598,6 +662,7 @@ export default {
         getOrderDetail({ orderId: this.$route.query.orderId }).then((res) => {
           const data = res.data;
           this.formData.orderId = data.orderId;
+          this.formData.isOld = data.isOld;
           this.formData.saleType = data.saleType;
           this.formData.saleName = data.saleName;
           this.formData.saleMobile = data.saleMobile;
@@ -610,6 +675,7 @@ export default {
             item.waitRefundPrice = item.price;
           })
           this.goodsList = data.orderDetails;
+          this.oldList = data.orderOldProductDTOList;
         })
         getOrderCodeList({orderId: this.$route.query.orderId}).then(res => {
           this.codeList = res.data;
@@ -692,6 +758,7 @@ export default {
             // this.getOrderTypeList();
       			this.formType = type
       			this.formVisible = true
+            this.formTabs = 'a';
             if (type == 'add') {
       				this.formDialogType = 0
               this.formData.companyWechatName = this.name;
@@ -723,6 +790,9 @@ export default {
                 this.goodsList = data.orderOfflineRefundItems;
                 this.codeList = data.orderOfflineItemCodes;
       				  // Object.assign(this.formData, res.data)
+
+                this.formData.isReturnOld = data.isOld;
+                this.oldList = data.orderOldProductDTOList;
       				})
       			}
       		})
@@ -758,7 +828,9 @@ export default {
                 refundAmount: item.waitRefundPrice,
               }
             }),
-            orderOfflineItemCodes: this.joinCode ? this.codeList : []
+            orderOfflineItemCodes: this.joinCode ? this.codeList : [],
+            isOld: this.formData.isReturnOld,
+            ids: this.oldList.map(o => o.id),
           }).then(res => {
             this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
             cancel('list')
@@ -781,6 +853,7 @@ export default {
           this.pageType = type;
       		this.formCancel()
       		this.$nextTick(()=>{
+            this.detailTabs = 'a';
             if (type == 'detail') {
       				this.formDialogType = 0
       			} else if(type == 'examine'){
@@ -884,26 +957,30 @@ export default {
       if(this.waitChooseOrder.length > 1) {
         return this.$errorMsg('最多选择一个订单');
       }
-      const data = this.waitChooseOrder[0];
-      this.formData.orderId = data.orderId;
-      this.formData.saleType = data.saleType;
-      this.formData.saleName = data.saleName;
-      this.formData.saleMobile = data.saleMobile;
-      this.formData.createTime = data.createTime;
-      this.formData.receUserName = data.receUserName;
-      this.formData.recePhone = data.recePhone;
-      this.formData.receAddress = data.receAddress;
-      data.orderDetails.forEach(item => {
-        item.waitRefundNum = item.num;
-        item.waitRefundPrice = item.price;
-      })
-      this.goodsList = data.orderDetails;
+      getOrderDetail({ orderId: this.waitChooseOrder[0].orderId }).then((res) => {
+        const data = res.data;
+        this.formData.orderId = data.orderId;
+        this.formData.isOld = data.isOld;
+        this.formData.saleType = data.saleType;
+        this.formData.saleName = data.saleName;
+        this.formData.saleMobile = data.saleMobile;
+        this.formData.createTime = data.createTime;
+        this.formData.receUserName = data.receUserName;
+        this.formData.recePhone = data.recePhone;
+        this.formData.receAddress = data.receAddress;
+        data.orderDetails.forEach(item => {
+          item.waitRefundNum = item.num;
+          item.waitRefundPrice = item.price;
+        })
+        this.goodsList = data.orderDetails;
+        this.oldList = data.orderOldProductDTOList;
 
-      getOrderCodeList({orderId: data.orderId}).then(res => {
-        this.codeList = res.data;
-      })
+        getOrderCodeList({orderId: data.orderId}).then(res => {
+          this.codeList = res.data;
+        })
 
-      this.isShowOrderDialog = false;
+        this.isShowOrderDialog = false;
+      })
     },
 
     // 删除商品
@@ -916,6 +993,11 @@ export default {
       this.codeList.splice(index, 1);
     },
 
+    // 删除旧机
+    deleteOld(index) {
+      this.oldList.splice(index, 1);
+    },
+
     // 获取工单类型列表
     getOrderTypeList() {
       getOrderTypeList({