Bläddra i källkod

Merge branch 'feature/Feature-basic_data' of https://gogs.zfire.top/zfire-front/supply-front into feature/Feature-basic_data

chen 3 år sedan
förälder
incheckning
158a126759
41 ändrade filer med 4058 tillägg och 639 borttagningar
  1. 13 0
      src/api/basic_data/warehouse.js
  2. 75 3
      src/api/supply/displace.js
  3. 12 0
      src/api/supply/policy.js
  4. 18 0
      src/api/supply/return.js
  5. 1 1
      src/views/basic_data/logistics/logistics_list.vue
  6. 7 7
      src/views/basic_data/material/machine_list.vue
  7. 2 1
      src/views/basic_data/material/modify_list.vue
  8. 2 0
      src/views/basic_data/material/relation_list.vue
  9. 16 3
      src/views/basic_data/warehouse/components/warehouse_list-detail.vue
  10. 2 0
      src/views/basic_data/warehouse/warehouse_cost.vue
  11. 2 1
      src/views/basic_data/warehouse/warehouse_site.vue
  12. 63 30
      src/views/sales_policy/components/AddCondition.vue
  13. 1 1
      src/views/sales_policy/components/Examine.vue
  14. 4 1
      src/views/sales_policy/policy_list.vue
  15. 6 5
      src/views/sales_rebate/rebate_list.vue
  16. 4 6
      src/views/supply/apply/components/apply_form.vue
  17. 3 3
      src/views/supply/apply/components/engin_form.vue
  18. 100 66
      src/views/supply/displace/components/displace_detail.vue
  19. 317 0
      src/views/supply/displace/components/displace_examine.vue
  20. 787 62
      src/views/supply/displace/components/displace_form.vue
  21. 283 0
      src/views/supply/displace/components/displace_return.vue
  22. 147 51
      src/views/supply/displace/displace_list.vue
  23. 3 7
      src/views/supply/engin/components/engin_detail.vue
  24. 6 5
      src/views/supply/engin/components/engin_examine.vue
  25. 1 5
      src/views/supply/engin/components/engin_form.vue
  26. 3 3
      src/views/supply/engin/engin_list.vue
  27. 26 3
      src/views/supply/pickup/check.vue
  28. 9 9
      src/views/supply/pickup/components/pickup_form.vue
  29. 11 6
      src/views/supply/pickup/pickup_list.vue
  30. 7 3
      src/views/supply/pickup/sum_list.vue
  31. 472 146
      src/views/supply/policy/components/retail_detail.vue
  32. 0 2
      src/views/supply/policy/components/retail_form.vue
  33. 1258 0
      src/views/supply/policy/components/retail_form2.vue
  34. 12 4
      src/views/supply/policy/policy_list.vue
  35. 11 7
      src/views/supply/reserve/components/reserve_detail.vue
  36. 5 4
      src/views/supply/reserve/components/reserve_form.vue
  37. 8 4
      src/views/supply/reserve/reserve_list.vue
  38. 0 1
      src/views/supply/retail/components/retail_form.vue
  39. 33 81
      src/views/supply/return/components/return_detail.vue
  40. 298 75
      src/views/supply/return/components/return_form.vue
  41. 30 33
      src/views/supply/return/return_list.vue

+ 13 - 0
src/api/basic_data/warehouse.js

@@ -133,3 +133,16 @@ export function addReserve(params) {
     data:params
   })
 }
+
+
+
+
+
+
+export function setStock(params) {
+  return request({
+    url: '/stock/update',
+    method: 'get',
+    params
+  })
+}

+ 75 - 3
src/api/supply/displace.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 获取列表
 export function getList(params) {
   return request({
-    url: '/retreat/list',
+    url: '/displace-order/list',
     method: 'get',
     params
   })
@@ -12,8 +12,80 @@ export function getList(params) {
 // 获取详情
 export function getDetail(params) {
   return request({
-    url: '/retreat/detail',
+    url: '/displace-order/detail',
     method: 'get',
     params
   })
-}
+}
+
+// 查询引用单明细
+export function queryRefDetail(params) {
+  return request({
+    url: '/displace-order/query-ref-detail',
+    method: 'get',
+    params
+  })
+}
+
+// 新增
+export function addData(params) {
+  return request({
+    url: '/displace-order/add',
+    method: 'post',
+    data: params
+  })
+}
+
+// 编辑
+export function editData(params) {
+  return request({
+    url: '/displace-order/edit',
+    method: 'post',
+    data: params
+  })
+}
+
+// 提交审核
+export function submitData(params) {
+  return request({
+    url: '/displace-order/submit',
+    method: 'post',
+    params
+  })
+}
+
+// 撤回
+export function revokeOrder(params) {
+  return request({
+    url: '/displace-order/revoke',
+    method: 'post',
+    params
+  })
+}
+
+// 删除
+export function deleteOrder(params) {
+  return request({
+    url: '/displace-order/del',
+    method: 'post',
+    params
+  })
+}
+
+// 审批
+export function examineOrder(params) {
+  return request({
+    url: '/displace-order/examine',
+    method: 'post',
+    data: params
+  })
+}
+
+// 退订
+export function returnOrder(params) {
+  return request({
+    url: '/displace-order/refund',
+    method: 'post',
+    data: params
+  })
+}

+ 12 - 0
src/api/supply/policy.js

@@ -192,3 +192,15 @@ export function getConditionDetail(params) {
     params
   })
 }
+
+
+// 政策条件
+
+export function getPolicyConditionList(params) {
+  return request({
+    url: '/policy/condition/list',
+    method: 'get',
+    params
+  })
+}
+

+ 18 - 0
src/api/supply/return.js

@@ -16,4 +16,22 @@ export function getDetail(params) {
     method: 'get',
     params
   })
+}
+
+// 获取引用列表
+export function getGoodsList(params) {
+  return request({
+    url: '/retreat/listInvoice',
+    method: 'get',
+    params
+  })
+}
+
+// 新增
+export function addData(params) {
+  return request({
+    url: '/retreat/add',
+    method: 'post',
+    data: params
+  })
 }

+ 1 - 1
src/views/basic_data/logistics/logistics_list.vue

@@ -40,7 +40,7 @@
     <!-- 按钮 -->
     <div class="btn-group clearfix">
       <div class="fl">
-        <el-button type="primary" size="small" @click="hanleAdd"
+        <el-button type="primary" icon="el-icon-plus" size="small" @click="hanleAdd"
           >新增</el-button
         >
         <el-popconfirm

+ 7 - 7
src/views/basic_data/material/machine_list.vue

@@ -61,6 +61,7 @@
         <el-button
           type="primary"
           size="small"
+             icon="el-icon-plus"
           @click="(showDialogForm = true), (type = 1)"
           >新增</el-button
         >
@@ -76,6 +77,7 @@
           <el-button
             slot="reference"
             type="primary"
+               icon="el-icon-delete"
             size="small"
             class="textColor el-popover-left"
             >删除</el-button
@@ -127,13 +129,7 @@
             show-overflow-tooltip
           >
             <template slot-scope="scope">
-              {{
-                scope.row.type == "INNER"
-                  ? "内机"
-                  : scope.row.type == "OUTSIDE"
-                  ? "外机"
-                  : "配件"
-              }}
+              {{ findMachineType(scope.row.type) }}
             </template>
           </el-table-column>
           <el-table-column
@@ -495,6 +491,10 @@ export default {
         outsideMachineVolume: 2,
       };
     },
+    findMachineType(val) {
+      const obj = this.distList.find((value) => value.dictCode === val)
+      return obj ? obj.dictValue : ''
+    },
   },
 };
 </script>

+ 2 - 1
src/views/basic_data/material/modify_list.vue

@@ -61,7 +61,7 @@
       <!-- 按钮 -->
       <div class="btn-group clearfix">
         <div class="fl">
-          <el-button type="primary" size="small" @click="addFn">新增</el-button>
+          <el-button type="primary"   icon="el-icon-plus" size="small" @click="addFn">新增</el-button>
           <!-- <el-button type="primary" size="small">编辑</el-button> -->
           <el-popconfirm
             confirm-button-text="好的"
@@ -74,6 +74,7 @@
             <el-button
               type="primary"
               size="small"
+                icon="el-icon-delete"
               slot="reference"
               class="el-popover-left"
               >删除</el-button

+ 2 - 0
src/views/basic_data/material/relation_list.vue

@@ -117,6 +117,7 @@
       <div class="fl">
         <el-button
           type="primary"
+             icon="el-icon-plus"
           size="small"
           @click="(showDialogForm = true), (type = 1), hanleMachine()"
           >新增</el-button
@@ -133,6 +134,7 @@
           <el-button
             type="primary"
             size="small"
+               icon="el-icon-delete"
             slot="reference"
             class="el-popover-left"
             >删除</el-button

+ 16 - 3
src/views/basic_data/warehouse/components/warehouse_list-detail.vue

@@ -258,7 +258,7 @@
                        <el-col :span="12"
                       >
                     <el-form-item label="允许客户查询" size="small">
-                        <el-checkbox :readonly="isReadonly" v-model="detail.allowMinusQty" :label="true">{{''}}</el-checkbox>
+                        <el-checkbox :readonly="isReadonly" v-model="detail.inquire" :true-label="1" :false-label="0">{{''}}</el-checkbox>
                     </el-form-item>
 
                      </el-col>
@@ -300,7 +300,7 @@
                          <el-col :span="12"
                       >
                            <el-form-item label="虚拟仓" size="small">
-                        <el-checkbox :readonly="isReadonly" v-model="detail.stockType" :label="1" :value="1">{{''}}</el-checkbox>
+                        <el-checkbox :readonly="isReadonly" v-model="detail.stockType" :true-label="1" :false-label="0">{{''}}</el-checkbox>
                     </el-form-item>
 
                       </el-col>
@@ -352,13 +352,16 @@
             </el-col>
           </el-row>
         </div>
+        <el-button type="primary"  @click="setStock">保存</el-button>
+
       </el-card>
     </el-form>
   </div>
 </template>
 
 <script>
-import { type } from "os";
+
+import { setStock } from "@/api/basic_data/warehouse";
 
 export default {
   props: {
@@ -412,6 +415,16 @@ export default {
       console.log(this.$parent);
       this.$parent.isShow = true;
     },
+    setStock(){
+      setStock({
+        inquire:this.detail.inquire,
+        stockType:this.detail.stockType,
+        id:this.detail.id
+      }).then((res) => {
+        this.$successMsg('保存成功')
+         this.$parent.isShow = true;
+      })
+    }
   },
 };
 </script>

+ 2 - 0
src/views/basic_data/warehouse/warehouse_cost.vue

@@ -36,6 +36,7 @@
         <el-button
           type="primary"
           size="small"
+          icon="el-icon-plus"
           @click="(showDialog = true), (type = 1)"
           >新增</el-button
         >
@@ -51,6 +52,7 @@
           <el-button
             type="primary"
             size="small"
+            icon="el-icon-delete"
             slot="reference"
             class="el-popover-left"
             >批量删除</el-button

+ 2 - 1
src/views/basic_data/warehouse/warehouse_site.vue

@@ -41,7 +41,7 @@
     <!-- 按钮 -->
     <div class="btn-group clearfix">
       <div class="fl">
-        <el-button type="primary" size="small" @click="newData(), (type = 1)"
+        <el-button type="primary" icon="el-icon-plus" size="small" @click="newData(), (type = 1)"
           >新增</el-button
         >
   <el-popconfirm
@@ -55,6 +55,7 @@
                 <el-button
                   slot="reference"
                     type="primary"
+                        icon="el-icon-delete"
                    size="small"
                   class="textColor el-popover-left"
                   >批量删除</el-button

+ 63 - 30
src/views/sales_policy/components/AddCondition.vue

@@ -236,6 +236,7 @@
                         <el-table-column
                           type="selection"
                           width="55"
+                          :selectable="selectable"
                           align="center"
                         >
                         </el-table-column>
@@ -452,6 +453,8 @@ export default {
       arrIndex: 0,
       popArr: {},
       fang: false,
+      newConditionBox: [],
+      currentPage: 1,
     };
   },
   created() {
@@ -470,11 +473,26 @@ export default {
         this.$parent.isCondition = 0;
       }
     },
+    /**
+     * 根据条件禁用行复选框
+     * 函数返回值为false则禁用选择(反之亦然)
+     * @param {Object} row - 行数据
+     * @param {String} index - 索引值
+     * @return Boolean
+     */
+    selectable: function (row, index) {
+      // row.disabled == undefined 才能被选中
+      if (row.disabled == undefined) {
+        return true;
+      }
+      // 函数必须有返回值且是布尔值
+      // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
+      // 如果没有返回值则默认返回false(全部无法选中)
+    },
     getCommonApi() {
       if (this.id) {
         getConditionMaterialDetail({ id: this.policyId }).then((res) => {
           this.pop = res.data.pop;
-
           let pop = res.data.pop.split(":");
           for (let i = 0; i < pop.length; i++) {
             if (i == 0) {
@@ -541,15 +559,23 @@ export default {
       };
       addPoliyCondition(params).then((res) => {
         this.$successMsg("添加成功");
+
+        this.newConditionBox = this.conditList;
+        this.conditionBox = [[], []];
+        this.conditionBoxs = [];
+        this.limit = "";
+        this.pop = "";
+        this.popArr = {};
         this.$parent.isCondition = 0;
         this.$parent.isFlag = 1;
-        Object.assign(this.$data,this.$options.data())
+        // Object.assign(this.$data, this.$options.data());
         this.$emit("handleSubmitCon", this.comCode);
       });
     },
     handleSelectionChange(val) {
       this.multipleSelection = val;
     },
+
     // 筛选全部数据
     hanleSelectAll(selection, index) {
       this.arrIndex = index;
@@ -569,39 +595,48 @@ export default {
         }
       }
     },
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = 1;
+      this.getMaterialLists(this.arrIndex);
+    },
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val;
+      this.getMaterialLists(this.arrIndex);
+    },
+    // 更改列表当前页
+    handleTableCurrentChange(val) {
+      this.currentPage = val;
+      this.getMaterialLists(this.arrIndex);
+    },
     getMaterialLists(index) {
       this.arrIndex = index;
-      if (!this.fang) {
-        getMaterialList({
-          pageNum: this.currentPage,
-          pageSize: this.pageSize,
-          saleTypeCode: this.saleTypeCode,
-          policyId: this.comCode,
-        }).then((res) => {
-          this.conditList = res.data.records;
-          this.listTotal = res.data.total;
-          this.fang = true;
-        });
-      } else {
-        console.log('fang');
-
+      getMaterialList({
+        pageNum: this.currentPage,
+        pageSize: this.pageSize,
+        saleTypeCode: this.saleTypeCode,
+        policyId: this.comCode,
+      }).then((res) => {
         let datas = [];
-
-      for (let j = 0; j < this.conditionBox.length; j++) {
-            datas = [...datas, ...this.conditionBox[j]];
+        for (let j = 0; j < this.conditionBox.length; j++) {
+          datas = [...datas, ...this.conditionBox[j]];
         }
-        for (let i = 0; i < this.conditList.length; i++) {
-           if (datas.length) {
-              for (let k = 0; k < datas.length; k++) {
-                if (datas[k].id == this.conditList[i].id) {
-                  this.conditList.splice(i,1)
-
-                }
+        const newData = datas.length ? datas : this.newConditionBox;
+        console.log(newData, "newData");
+        if (newData.length) {
+          for (let i = 0; i < res.data.records.length; i++) {
+            for (let k = 0; k < newData.length; k++) {
+              if (newData[k].id == res.data.records[i].id) {
+                res.data.records[i].disabled = true;
               }
+            }
           }
         }
-         this.listTotal = this.conditList.length;
-      }
+        this.conditList = res.data.records;
+        this.listTotal = res.data.total;
+      });
     },
     handleSelectionAllChange(e) {
       this.leftData = e;
@@ -643,13 +678,11 @@ export default {
     handleDiaSubmit() {
       if (this.conditList2.length) {
         for (let i = 0; i < this.conditionBox.length; i++) {
-          console.log(this.conditionBox[i]);
           if (i == this.arrIndex) {
             this.$set(this.conditionBox, i, [
               ...this.conditList2,
               ...this.conditionBox[i],
             ]);
-            console.log(this.conditionBox);
           }
         }
         this.VisibleModle = false;

+ 1 - 1
src/views/sales_policy/components/Examine.vue

@@ -365,7 +365,7 @@ export default {
         examineRemark: this.remark,
       }).then((res) => {
         this.$successMsg("已提交审核");
-        this.isShow = 1;
+        this.$parent.isShow = 1;
         this.$parent.getList()
       });
     },

+ 4 - 1
src/views/sales_policy/policy_list.vue

@@ -153,7 +153,9 @@
     </div>
     <div class="btn-group">
       <el-row type="flex">
-        <el-button type="primary" class="btn" size="small" @click="hanlenewInfo"
+        <el-button  size="small"
+              type="primary"
+              icon="el-icon-plus"   @click="hanlenewInfo"
           >新增</el-button
         >
       </el-row>
@@ -414,6 +416,7 @@ listLoading:false,
       console.log(params,123);
       getList(params).then((res) => {
         this.dataList = res.data.records;
+        console.log(this.dataList);
         this.listTotal = res.data.total;
         this.listLoading = false
 

+ 6 - 5
src/views/sales_rebate/rebate_list.vue

@@ -167,25 +167,25 @@
             ></el-input>
           </el-form-item>
 
-          <el-form-item label="销售类型编码" prop="saleTypeCode">
+          <el-form-item label="销售类型名称" prop="saleTypeName">
             <el-select
               v-model="dialogForm.saleTypeCode"
               :disabled="type == 3"
               @change="handleChange"
-              placeholder="请选择类型编码"
+              placeholder="请选择销售类型编码"
             >
               <el-option
                 v-for="item in typeList"
                 :key="item.sysDictId"
-                :label="item.dictValue"
+                :label="item.saleName"
                 :value="item.saleCode"
               >
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="销售类型名称" prop="saleTypeName">
+          <el-form-item label="销售类型编码" prop="saleTypeCode">
             <el-input
-              v-model="dialogForm.saleTypeName"
+              v-model="dialogForm.saleTypeCode"
               :readonly="true"
             ></el-input>
           </el-form-item>
@@ -441,6 +441,7 @@ export default {
     hanelclose() {
       this.type = "";
       this.hanleReset();
+       this.$refs.dialogForm.resetFields();
     },
     handelInfo() {
       console.log(this.$refs.dialogForm);

+ 4 - 6
src/views/supply/apply/components/apply_form.vue

@@ -211,9 +211,7 @@ export default {
         createMan: '',
       },
       mainFormRules: {
-        date: [
-          { required: true, message: '请选择单据日期', trigger: 'change' }
-        ],
+        date: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
       },
       dealerList: [],
       fileList: [],
@@ -282,9 +280,9 @@ export default {
           url: data.fileUrl,
           name: data.fileName
         }] : [];
-        data.orders.forEach(item => {
-          item.orderId = item.id;
-        })
+        // data.orders.forEach(item => {
+        //   item.orderId = item.id;
+        // })
         this.goodsList = data.orders;
         this.screenForm.type = data.mainId;
       })

+ 3 - 3
src/views/supply/apply/components/engin_form.vue

@@ -423,9 +423,9 @@ export default {
           url: data.fileUrl,
           name: data.fileName,
         }] : [];
-        data.orders.forEach(item => {
-          item.orderId = item.id;
-        })
+        // data.orders.forEach(item => {
+        //   item.orderId = item.id;
+        // })
         this.goodsList = data.orders;
       })
     },

+ 100 - 66
src/views/supply/displace/components/displace_detail.vue

@@ -9,36 +9,52 @@
       <div class="diy-table-1">
         <el-row :gutter="0">
           <el-col :span="8" class="item">
-            <div class="label">单号</div>
-            <div class="value">{{detailData.retreatOrderNo}}</div>
+            <div class="label">置换单号</div>
+            <div class="value">{{detailData.displaceOrderId}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">订单日期</div>
-            <div class="value">{{detailData.retreatTime}}</div>
+            <div class="value">{{ detailData.orderDate ? detailData.orderDate.split(" ")[0] : '' }}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">单据状态</div>
-            <div class="value">{{detailData.aaa}}</div>
+            <div class="value">{{ $parent.findExamineStatus(detailData.examineStatus) }}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">原订单号</div>
-            <div class="value">{{detailData.salesType}}</div>
+            <div class="value">{{detailData.orderNo}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">订单类型</div>
-            <div class="value">{{detailData.orderNo}}</div>
+            <div class="value">{{ $parent.findOrderType(detailData.orderType) }}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">销售政策编号</div>
+            <div class="value">{{detailData.policyCode}}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">销售政策</div>
+            <div class="value">{{detailData.policyTitle}}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">销售政策说明</div>
+            <div class="value">{{detailData.policyRemark}}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">工程登录编码</div>
+            <div class="value">{{detailData.enginRecordNo}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">业务员</div>
-            <div class="value">{{detailData.billNumber}}</div>
+            <div class="value">{{detailData.serviceName}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">经销商编号</div>
-            <div class="value">{{detailData.clientName}}</div>
+            <div class="value">{{detailData.customerId}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">经销商名称</div>
-            <div class="value">{{detailData.salesDep}}</div>
+            <div class="value">{{detailData.customerName}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label"></div>
@@ -50,76 +66,92 @@
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">申请人</div>
-            <div class="value">{{detailData.salesDep}}</div>
+            <div class="value">{{detailData.createName}}</div>
           </el-col>
           <el-col :span="8" class="item">
             <div class="label">审核人</div>
-            <div class="value">{{detailData.salesDep}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">关闭人</div>
-            <div class="value">{{detailData.salesDep}}</div>
+            <div class="value">{{detailData.confirmName}}</div>
           </el-col>
         </el-row>
       </div>
 
       <div class="main-title">
-        <div class="title">货品信息</div>
+        <div class="title">原订单货品信息</div>
       </div>
       <div class="table">
-        <el-table :data="detailData.retreatDocumentOrder" element-loading-text="Loading" border fit highlight-current-row stripe>
+        <el-table :data="detailData.originItems" element-loading-text="Loading" border fit highlight-current-row stripe>
           <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="订单号" prop="orderNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="仓库名称" prop="stockName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品编号" prop="productNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品名称" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="主计量" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="数量" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="含税单价" prop="includedPrice" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="含税金额" prop="includedPrice" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.number * scope.row.includedPrice }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="无税单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="无税金额" prop="price" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.number * scope.row.price }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="价税合计" prop="totalPrice" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="税率(%)" prop="rate" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="退补标记" prop="refund" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="厂产品代码" prop="factoryNumber" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="原数量" prop="displaceQty" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="备注" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
         </el-table>
       </div>
     </div>
 
     <div class="main-title">
-        <div class="title">审批记录</div>
-      </div>
-      <div class="diy-table-1">
-        <el-row :gutter="0">
-          <el-col :span="8" class="item">
-            <div class="label">审批人</div>
-            <div class="value">{{detailData.salesDep}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">审批结果</div>
-            <div class="value">{{detailData.salesDep}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">审批时间</div>
-            <div class="value">{{detailData.salesDep}}</div>
-          </el-col>
-          <el-col :xs="24" :sm="24" :lg="24" class="item">
-            <div class="label">审批说明</div>
-            <div class="value">{{detailData.remark}}</div>
-          </el-col>
-        </el-row>
-      </div>
-    
+      <div class="title">置换货品信息</div>
+    </div>
+    <div class="table">
+      <el-table :data="detailData.items" element-loading-text="Loading" border fit highlight-current-row stripe>
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
+
+
+    <div class="main-title">
+      <div class="title">审批记录</div>
+    </div>
+    <div class="diy-table-1">
+      <el-row :gutter="0">
+        <el-col :span="8" class="item">
+          <div class="label">审批人</div>
+          <div class="value">{{detailData.salesDep}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">审批结果</div>
+          <div class="value">{{detailData.salesDep}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">审批时间</div>
+          <div class="value">{{detailData.salesDep}}</div>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="24" class="item">
+          <div class="label">审批说明</div>
+          <div class="value">{{detailData.remark}}</div>
+        </el-col>
+      </el-row>
+    </div>
+
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button  type="primary" icon="el-icon-printer" v-print="printObj">打 印</el-button>
@@ -139,7 +171,9 @@ import { getDetail } from "@/api/supply/displace";
 export default {
   name: 'DisplaceDetail',
   componentName: 'DisplaceDetail',
-  props: ['listItem'],
+  props: [
+    'listItem'
+  ],
   directives: {
     print
   },
@@ -176,10 +210,10 @@ export default {
 
     // 获取详情
     getDetail() {
-      getDetail({id: this.listItem.id}).then(res => {
+      getDetail({ id: this.listItem.displaceOrderId }).then(res => {
         this.detailData = res.data;
       })
-    },
+    }
   }
 }
 </script>
@@ -203,4 +237,4 @@ export default {
       padding-left: 10px;
     }
   }
-</style>
+</style>

+ 317 - 0
src/views/supply/displace/components/displace_examine.vue

@@ -0,0 +1,317 @@
+<template>
+  <div class="detail-container">
+    <el-page-header @back="goBack" content="审批"></el-page-header>
+
+    <div class="main-title">
+      <div class="title">订单信息</div>
+    </div>
+
+    <div class="diy-table-1">
+      <el-row>
+        <el-col :span="8" class="item">
+          <div class="label">置换单号</div>
+          <div class="value">{{detailData.displaceOrderId}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">订单日期</div>
+          <div class="value">{{ detailData.orderDate ? detailData.orderDate.split(" ")[0] : '' }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">单据状态</div>
+          <div class="value">{{ $parent.findExamineStatus(detailData.examineStatus) }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">原订单号</div>
+          <div class="value">{{detailData.orderNo}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">订单类型</div>
+          <div class="value">{{ $parent.findOrderType(detailData.orderType) }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">销售政策编号</div>
+          <div class="value">{{detailData.policyCode}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">销售政策</div>
+          <div class="value">{{detailData.policyTitle}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">销售政策说明</div>
+          <div class="value">{{detailData.policyRemark}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">工程登录编码</div>
+          <div class="value">{{detailData.enginRecordNo}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">业务员</div>
+          <div class="value">{{detailData.serviceName}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">经销商编号</div>
+          <div class="value">{{detailData.customerId}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">经销商名称</div>
+          <div class="value">{{detailData.customerName}}</div>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="24" class="item">
+          <div class="label">备注</div>
+          <div class="value">{{detailData.remark}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">申请人</div>
+          <div class="value">{{detailData.createName}}</div>
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="main-title">
+      <div class="title">原订单货品信息</div>
+    </div>
+    <div class="table">
+      <el-table :data="originGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe>
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="置换数量" prop="displaceQty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
+
+    <div class="main-title">
+      <div class="title">置换货品信息</div>
+    </div>
+
+    <div class="table" style="margin-top: 20px">
+      <el-table :data="goodsList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="200" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.price" size="small" type="number"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.qty" size="small" type="number"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="订单金额" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{(scope.row.price || 0) * (scope.row.qty || 0)}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.discAmount" size="small" type="number"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="200" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.remark" size="small"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="税率" prop="taxRate" min-width="100" show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
+
+    <div class="main-title">
+      <div class="title">审批信息</div>
+    </div>
+    <div class="diy-table-1">
+      <el-row :gutter="0">
+        <el-col :span="12" class="item">
+          <div class="label">审批人</div>
+          <div class="value">{{userName}}</div>
+        </el-col>
+        <el-col :span="12" class="item">
+          <div class="label">审批结果</div>
+          <div class="value">
+            <el-radio-group v-model="examineForm.examineResult">
+              <el-radio :label="true">通过</el-radio>
+              <el-radio :label="false">驳回</el-radio>
+            </el-radio-group>
+          </div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">审批说明</div>
+          <div class="value"><el-input v-model="examineForm.examineNote" placeholder="请输入内容"></el-input></div>
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="page-footer">
+      <div class="footer" :class="classObj">
+        <el-button type="primary" @click="clickSubmitForm" :loading="formLoading">{{ formLoading ? '提交中 ...' : '提 交' }}</el-button>
+        <el-popconfirm
+          title="确定关闭吗?"
+          @onConfirm="goBack"
+          style="margin-left: 10px;"
+        >
+          <el-button slot="reference">关 闭</el-button>
+        </el-popconfirm>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import {examineOrder, getDetail} from "@/api/supply/displace";
+
+export default {
+  name: 'DisplaceExamine',
+  componentName: 'DisplaceExamine',
+  props: ['listItem'],
+  data() {
+    return {
+      detailData: {},
+      goodsList: [],
+      originGoodsList: [],
+      userName: JSON.parse(localStorage.getItem("supply_user")).nickName,
+
+      formLoading: false,
+      examineForm: {
+        displaceOrderId: '',
+        orderType: '',
+        orderNo: '',
+        orderDate: '',
+        mainId: '',
+        mainName: '',
+        enginRecordNo: '',
+        projectNo: '',
+        projectName: '',
+        useUnit: '',
+        installAddress: '',
+        policyId: '',
+        policyCode: '',
+        policyTitle: '',
+        policyRemark: '',
+        serviceId: '',
+        serviceName: '',
+        takeDeposit: '',
+        remark: '',
+        examineStatus: '',
+        examineResult: true,
+        examineNote: '',
+      }
+    }
+  },
+
+  computed: {
+    sidebar() {
+      return this.$store.state.app.sidebar
+    },
+    classObj() {
+      return {
+        hideSidebar: !this.sidebar.opened,
+        openSidebar: this.sidebar.opened
+      }
+    },
+  },
+
+  created() {
+    this.getDetail();
+  },
+
+  methods: {
+    // 返回列表
+    goBack() {
+      this.$emit('backListFormDetail');
+    },
+
+    // 获取详情
+    getDetail() {
+      getDetail({id: this.listItem.displaceOrderId}).then(res => {
+        this.detailData = res.data;
+        this.goodsList = res.data.items;
+        this.originGoodsList = res.data.originItems;
+      })
+    },
+
+    clickSubmitForm() {
+      if (this.formLoading) {
+        return
+      }
+      this.formLoading = true;
+      examineOrder({
+        displaceOrderId: this.listItem.displaceOrderId,
+        examineResult: this.examineForm.examineResult,
+        examineNote: this.examineForm.examineNote,
+        originItems: this.originGoodsList,
+        items: this.goodsList,
+      }).then(res => {
+        this.$successMsg('审批成功');
+        this.$nextTick(() => {
+          this.goBack();
+          this.$parent.getList();
+        })
+      }).finally(res => {
+        this.formLoading = false;
+      })
+    },
+
+  }
+}
+</script>
+
+<style scoped lang="scss">
+  .detail-container {
+    width: 100%;
+    height: 100%;
+  }
+  .main-title {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: 20px;
+    height: 60px;
+    border-bottom: 1px solid #DCDFE6;
+    margin-bottom: 20px;
+    .title {
+      font-size: 16px;
+      font-weight: 600;
+      padding-left: 10px;
+    }
+  }
+
+  .add {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border: 1px solid #EBEEF5;
+    border-top: none;
+    height: 50px;
+  }
+
+  ::v-deep input::-webkit-outer-spin-button,
+  ::v-deep input::-webkit-inner-spin-button {
+    -webkit-appearance: none;
+  }
+  ::v-deep input[type='number'] {
+    -moz-appearance: textfield;
+  }
+</style>

+ 787 - 62
src/views/supply/displace/components/displace_form.vue

@@ -9,14 +9,18 @@
     <el-form ref="mainForm" :model="mainForm" label-width="100px" size="small" label-position="left">
       <el-row :gutter="20">
         <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="订单号" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入订单号"></el-input>
+          <el-form-item label="订单号" prop="orderNo">
+            <div  >
+              <el-input v-model="mainForm.orderNo" placeholder="请输入订单号" disabled>
+                <el-button slot="append" icon="el-icon-search" @click="openShareDetail" class="choose-order">选择</el-button>
+              </el-input>
+            </div>
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="12" :lg="8" style="height: 51px;">
-          <el-form-item label="单据日期" prop="date">
+          <el-form-item label="单据日期" prop="orderDate" :rules="{ required: true, message: '单据日期不能为空', trigger: 'blur' }">
             <el-date-picker
-              v-model="mainForm.date"
+              v-model="mainForm.orderDate"
               type="date"
               value-format="yyyy-MM-dd"
               style="width: 100%;"
@@ -25,42 +29,46 @@
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="品类" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入品类"></el-input>
+          <el-form-item label="品类" prop="mainName">
+            <el-input :value="mainForm.mainName" placeholder="品类" disabled></el-input>
           </el-form-item>
         </el-col>
+        <template v-if="mainForm.policyCode">
+          <el-col :xs="24" :sm="12" :lg="8">
+            <el-form-item label="销售政策编号" prop="policyCode">
+              <el-input :value="mainForm.policyCode" placeholder="销售政策编号" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="8">
+            <el-form-item label="销售政策" prop="policyTitle">
+              <el-input :value="mainForm.policyTitle" placeholder="销售政策" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="8">
+            <el-form-item label="销售政策说明" prop="policyRemark">
+              <el-input :value="mainForm.policyRemark" placeholder="销售政策说明" disabled></el-input>
+            </el-form-item>
+          </el-col>
+        </template>
+        <template v-if="mainForm.enginRecordNo">
+          <el-col :xs="24" :sm="12" :lg="8">
+            <el-form-item label="工程登录编码" prop="enginRecordNo">
+              <el-input :value="mainForm.enginRecordNo" placeholder="工程登录编码" disabled></el-input>
+            </el-form-item>
+          </el-col>
+        </template>
         <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="销售政策编号" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入销售政策编号"></el-input>
+          <el-form-item label="订单类型" prop="orderType">
+            <el-input :value="$parent.findOrderType(mainForm.orderType)"  placeholder="订单类型" disabled></el-input>
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="销售政策" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入销售政策"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="销售政策说明" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入销售政策说明"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="工程登录编码" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入工程登录编码"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="附件" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入附件"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="业务员" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入业务员"></el-input>
+          <el-form-item label="业务员" prop="serviceName">
+            <el-input :value="mainForm.serviceName" placeholder="业务员" disabled></el-input>
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="24">
-          <el-form-item label="备注" prop="warehouse">
+          <el-form-item label="备注" prop="remark">
             <el-input v-model="mainForm.remark" placeholder="请输入备注"></el-input>
           </el-form-item>
         </el-col>
@@ -68,62 +76,368 @@
     </el-form>
 
     <div class="main-title">
-      <div class="title">货品信息</div>
-      <div>
-        <el-button type="primary" size="small">检查库存</el-button>
-      </div>
-      
+      <div class="title">原订单货品信息</div>
     </div>
 
     <div class="table" style="margin-top: 20px">
-      <el-table :data="detailData.kingDeeTransferItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+      <el-table :data="originGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
         <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-        <el-table-column align="center" label="销售类型" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品编码" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品名称" prop="model" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="规格型号" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单位" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单价" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="订单金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="返利使用比例" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="返利金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="格力折扣" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="现金钱包" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="实付金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="原订单数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="备注" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="总仓库" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="仓库状态" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="原数量" prop="refundableQty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="置换数量" prop="displaceQty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
       </el-table>
     </div>
-    
+
+    <div class="main-title" v-if="mainForm.orderNo">
+      <div class="title">置换货品信息</div>
+      <div v-if="!listItem">
+        <el-select v-model="warehouseValue" placeholder="请选择发货仓库" size="small" style="margin-right: 10px">
+          <el-option :label="item.name" :value="item.id" v-for="(item, index) in warehouseList" :key="index"></el-option>
+        </el-select>
+        <el-button type="primary" size="small" icon="el-icon-search" @click="checkStock">检查库存</el-button>
+        <el-divider direction="vertical"></el-divider>
+        <el-button type="primary" size="small" icon="el-icon-plus" @click="openDialog">添加货品</el-button>
+      </div>
+    </div>
+    <div class="table" style="margin-top: 20px" v-if="mainForm.orderNo">
+      <el-table :data="goodsList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.qty" size="small"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="订单金额" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.price * scope.row.qty}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletId2" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-select v-model="scope.row.customerWalletId2" placeholder="选择返利类型" size="small" clearable @change="changeWallet(scope.$index)">
+              <el-option
+                v-for="item in flWalletList"
+                :key="item.customerWalletId"
+                :label="item.name"
+                :value="item.customerWalletId">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="使用返利金额" min-width="120" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{(scope.row.price * scope.row.qty * (scope.row.rebateRate * 100)) / 100}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="格力折扣" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.qty * scope.row.discAmount}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletId" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-select v-model="scope.row.customerWalletId" placeholder="选择现金钱包" size="small" clearable>
+              <el-option
+                v-for="item in xjWalletList"
+                :key="item.customerWalletId"
+                :label="item.name"
+                :value="item.customerWalletId">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{((scope.row.price * scope.row.qty) * 100 - ((scope.row.price * scope.row.qty * (scope.row.rebateRate * 100)) / 100) * 100 - ((scope.row.qty * (scope.row.discAmount * 100)) / 100) * 100) / 100}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="160">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.remark" size="small"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="总仓库" prop="status1" min-width="100" show-overflow-tooltip v-if="!listItem">
+          <template slot-scope="scope">
+            <div>{{ scope.row.status1 | status1Filter }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="仓库状态" prop="status2" min-width="100" show-overflow-tooltip v-if="!listItem">
+          <template slot-scope="scope">
+            <div>{{ status2Filter(scope.row) }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作" width="100" fixed="right">
+          <template slot-scope="scope">
+            <el-button type="text" @click="deleteItem(scope.$index)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button type="primary" @click="clickSubmitForm">保 存</el-button>
-        <el-button type="primary" @click="clickSubmitForm">提交审核</el-button>
         <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
           <el-button slot="reference">关 闭</el-button>
         </el-popconfirm>
       </div>
     </div>
 
+
+    <!-- 订单列表 -->
+    <el-dialog title="订单列表" :visible.sync="isShowOriginDialog" width="70%" :close-on-click-modal="false">
+      <el-form v-if="mainForm.examineStatus === ''" ref="screenOriginForm" :model="screenOriginForm" label-width="80px" size="small">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="8">
+            <el-form-item label="原订单号"
+                          prop="orderNo"
+                          :rules="{ required: true, message: '原订单号不能为空', trigger: 'blur' }"
+            >
+              <el-input v-model="screenOriginForm.orderNo" placeholder="原订单号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" class="tr">
+            <el-form-item label="">
+              <el-button size="small" type="primary" @click="submitScreenOriginForm">搜索</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div class="table" style="margin: 10px 0 20px;">
+        <el-table
+          ref="originOrderTable"
+          v-loading="dialogTable_listLoading"
+          :data="dialogTable_dataList"
+          element-loading-text="Loading"
+          tooltip-effect="dark"
+          style="width: 100%"
+          border
+          max-height="270">
+          <el-table-column type="selection" width="55"></el-table-column>
+          <el-table-column align="center" prop="orderType" label="订单类型" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ $parent.findOrderType(dialogTable_data.orderType) }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="saleTypeName" label="销售类型" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" prop="materialName" label="货品名称" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" prop="specification" label="规格型号" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" prop="unit" label="单位" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" prop="qty" label="数量" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" prop="refundableQty" label="可退单置换数" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" prop="displaceQty" label="退订置换数" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.displaceQty" size="small"></el-input>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="isShowOriginDialog = false">关 闭</el-button>
+        <el-button @click="chooseDetail">提 交</el-button>
+      </div>
+    </el-dialog>
+
+
+    <el-dialog title="添加产品" :visible.sync="isShowDialog" width="80%">
+      <el-form ref="screenForm" :model="screenForm" size="small" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="type">
+              <el-select v-model="mainForm.mainId" placeholder="选择品类" style="width: 100%" disabled>
+                <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="salesType">
+              <el-select v-model="screenForm.salesType" placeholder="选择销售类型" style="width: 100%" clearable>
+                <el-option v-for="item in salesTypeList" :key="item.id" :label="item.saleName" :value="item.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="proNum">
+              <el-input v-model="screenForm.proNum" placeholder="请输入产品编码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="proName">
+              <el-input v-model="screenForm.proName" placeholder="请输入产品名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="proModel">
+              <el-input v-model="screenForm.proModel" placeholder="请输入产品型号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="price1"  style="display: flex">
+              <el-input v-model="screenForm.price1" placeholder="请输入价格" style="width: 46%"></el-input>
+              <span> - </span>
+              <el-input v-model="screenForm.price2" placeholder="请输入价格" style="width: 46%"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="12" class="tr">
+            <el-form-item label="">
+              <el-button size="small" @click="resetScreenForm">清空</el-button>
+              <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <div class="tables">
+        <div class="table">
+          <el-table :data="leftGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe height="400" @selection-change="leftSelectionChange">
+            <el-table-column align="center" type="selection" width="55" :selectable='checkboxSelect'></el-table-column>
+            <el-table-column align="center" label="产品编码" prop="number" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="name" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品价格" prop="batchPrice" min-width="80" show-overflow-tooltip></el-table-column>
+          </el-table>
+          <div class="pagination clearfix" style="margin-top: 10px">
+            <div class="fr">
+              <el-pagination
+                @current-change="handleTableCurrentChange"
+                :current-page="currentPage"
+                :page-size="10"
+                background
+                layout="prev, pager, next"
+                :total="listTotal">
+              </el-pagination>
+            </div>
+          </div>
+        </div>
+        <div class="buttons">
+          <el-button size="small" type="primary" @click="addAllGoods">全部添加</el-button>
+          <el-button size="small" type="primary" @click="addGoods">添&emsp;加</el-button>
+          <el-button size="small" type="danger" @click="deleteGoods">删&emsp;除</el-button>
+          <el-button size="small" type="danger" @click="deleteAllGoods">全部删除</el-button>
+        </div>
+        <div class="table">
+          <el-table :data="rightGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe height="400" @selection-change="rightSelectionChange">
+            <el-table-column align="center" type="selection" width="55"></el-table-column>
+            <el-table-column align="center" label="产品编码" prop="number" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="name" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品价格" prop="batchPrice" min-width="80" show-overflow-tooltip></el-table-column>
+          </el-table>
+        </div>
+      </div>
+
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDialog">取 消</el-button>
+        <el-button type="primary" @click="submitAddGoods">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getDetail } from "@/api/supply/displace";
+import {getDetail, queryRefDetail, addData, editData} from "@/api/supply/displace";
+import {checkStock, getWalletList, getWarehouseList} from "@/api/supply/engin";
+import {getDictList, getTypeList} from "@/api/common";
+import {getGoodsList} from "@/api/supply/retail";
 
 export default {
   name: 'DisplaceForm',
   componentName: 'DisplaceForm',
   props: ['listItem'],
+  filters: {
+    status1Filter(val) {
+      if (val === '' || val === null || val === undefined) return '未检查';
+      else if (val === 0) return '无货';
+      else if (val > 0 && val <= 30) return val;
+      else if (val > 30 && val <= 1000) return '有货';
+      else if (val > 1000) return '充足';
+    },
+  },
   data() {
     return {
+      editId: '',
       detailData: {},
       mainForm: {
-
+        displaceOrderId: '',
+        orderType: '',
+        orderNo: '',
+        orderDate: '',
+        mainId: '',
+        mainName: '',
+        enginRecordNo: '',
+        projectNo: '',
+        projectName: '',
+        useUnit: '',
+        installAddress: '',
+        policyId: '',
+        policyCode: '',
+        policyTitle: '',
+        policyRemark: '',
+        serviceId: '',
+        serviceName: '',
+        takeDeposit: '',
+        remark: '',
+        examineStatus: ''
+      },
+      isShowOriginDialog: false,
+      isShowDialog: false,
+      dialogTable_data: null, // 列表订单数据
+      dialogTable_dataList: [],
+      dialogTable_listLoading: false, // 列表加载loading
+      screenOriginForm: {
+        orderNo: ''
       },
+      screenForm: {
+        type: '',
+        salesType: '',
+        proNum: '',
+        proName: '',
+        proModel: '',
+        price1: '',
+        price2: '',
+      },
+      currentPage: 1,
+      listTotal: 0,
+
+      salesTypeList: [],
+      typeList: [],
+      goodsList: [],
+      originGoodsList: [],
+      warehouseList: [],
+      warehouseValue: '',
+
+      leftGoodsList: [],
+      rightGoodsList: [],
+
+      leftSelection: [],
+      rightSelection: [],
+
+      xjWalletList: [],
+      flWalletList: []
     }
   },
 
@@ -140,7 +454,20 @@ export default {
   },
 
   created() {
-    this.getDetail();
+    this.getDictList();
+    this.getWalletList();
+    this.getSalesTypeList();
+    this.getWarehouseList();
+
+    if(this.listItem) {
+      this.editId = this.listItem.displaceOrderId;
+      this.getDetail();
+    } else {
+      this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerId;
+      this.mainForm.jxsName = JSON.parse(localStorage.getItem("supply_user")).customerName;
+      this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
+      this.mainForm.createDate = this.getDate();
+    }
   },
 
   methods: {
@@ -151,13 +478,390 @@ export default {
 
     // 获取详情
     getDetail() {
-      getDetail({id: this.listItem.id}).then(res => {
-        this.detailData = res.data;
+      getDetail({id: this.editId}).then(res => {
+        const data = res.data;
+        this.mainForm.displaceOrderId = data.displaceOrderId
+        this.mainForm.orderType = data.orderType
+        this.mainForm.orderNo = data.orderNo
+        this.mainForm.orderDate = data.orderDate
+        this.mainForm.mainId = data.mainId
+        this.mainForm.mainName = data.mainName
+        this.mainForm.enginRecordNo = data.enginRecordNo
+        this.mainForm.projectNo = data.projectNo
+        this.mainForm.projectName = data.projectName
+        this.mainForm.useUnit = data.useUnit
+        this.mainForm.installAddress = data.installAddress
+        this.mainForm.policyId = data.policyId
+        this.mainForm.policyCode = data.policyCode
+        this.mainForm.policyTitle = data.policyTitle
+        this.mainForm.policyRemark = data.policyRemark
+        this.mainForm.serviceId = data.serviceId
+        this.mainForm.serviceName = data.serviceName
+        this.mainForm.takeDeposit = data.takeDeposit
+        this.mainForm.examineStatus = data.examineStatus
+
+        this.originGoodsList = data.originItems
+        this.goodsList = data.items
       })
     },
+    // 原订单列表 - 打开弹窗
+    openShareDetail() {
+      this.isShowOriginDialog = true;
+      if (this.mainForm.examineStatus && this.originGoodsList.length > 0) {
+        this.screenOriginForm.orderNo = this.mainForm.orderNo
+        this.queryRefDetail()
+      }
+    },
+    submitScreenOriginForm() {
+      this.$refs['screenOriginForm'].validate((valid) => {
+        if (valid) {
+          this.queryRefDetail()
+        }
+      })
+    },
+    queryRefDetail() {
+      this.dialogTable_listLoading = true
+      queryRefDetail({
+        originOrderNo: this.screenOriginForm.orderNo
+      }).then(res => {
+        this.dialogTable_data = res.data;
+        this.dialogTable_dataList = this.dialogTable_data.originItems
+        if (this.mainForm.displaceOrderId) {
+          this.originAfterHandle(this.dialogTable_dataList)
+        }
+        this.dialogTable_listLoading = false;
+      }).catch(() => {
+        this.dialogTable_listLoading = false;
+      })
+    },
+    originAfterHandle() {
+      const data = this.dialogTable_dataList
+      // 历史选中的置换数回显
+      this.$nextTick(() => {
+        for (let i = 0; i < data.length; i++) {
+          this.originGoodsList.forEach(goods => {
+            if (goods.materialId === data[i].materialId) {
+              data[i].displaceQty = goods.displaceQty
+              this.$refs['originOrderTable'].toggleRowSelection(data[i], true)
+            }
+          })
+        }
+      })
+    },
+    chooseDetail() {
+      const tableData = this.$refs['originOrderTable'].selection
+      if (!tableData || tableData.length === 0) {
+        return this.$errorMsg('请选择订单明细')
+      }
+      for (let i = 0; i < tableData.length; i++) {
+        if (!tableData[i].displaceQty || tableData[i].displaceQty <= 0) {
+          return this.$errorMsg(tableData[i].materialName + ':置换数量不能少于0')
+        }
+        if (tableData[i].displaceQty > tableData[i].refundableQty) {
+          return this.$errorMsg(tableData[i].materialName + ':置换数量不能大于可退单置换数 ')
+        }
+      }
+      this.originGoodsList = tableData
 
+      this.mainForm.orderType = this.dialogTable_data.orderType
+      this.mainForm.orderNo = this.dialogTable_data.orderNo
+      this.mainForm.mainId = this.dialogTable_data.mainId
+      this.mainForm.mainName = this.dialogTable_data.mainName
+      this.mainForm.enginRecordNo = this.dialogTable_data.enginRecordNo
+      this.mainForm.projectNo = this.dialogTable_data.projectNo
+      this.mainForm.projectName = this.dialogTable_data.projectName
+      this.mainForm.useUnit = this.dialogTable_data.useUnit
+      this.mainForm.installAddress = this.dialogTable_data.installAddress
+      this.mainForm.policyId = this.dialogTable_data.policyId
+      this.mainForm.policyCode = this.dialogTable_data.policyCode
+      this.mainForm.policyTitle = this.dialogTable_data.policyTitle
+      this.mainForm.policyRemark = this.dialogTable_data.policyRemark
+      this.mainForm.serviceId = this.dialogTable_data.serviceId
+      this.mainForm.serviceName = this.dialogTable_data.serviceName
+      this.mainForm.takeDeposit = this.dialogTable_data.takeDeposit
+      this.isShowOriginDialog = false
+    },
     clickSubmitForm() {
+      this.$refs.mainForm.validate((valid) => {
+        if (valid) {
+          for(let i=0; i<this.goodsList.length; i++) {
+            if (!this.goodsList[i].qty || this.goodsList[i].qty <= 0) {
+              this.$errorMsg(this.goodsList[i].materialName + '数量不能小于0');
+              return;
+            }
+            if(!this.goodsList[i].customerWalletId) {
+              this.$errorMsg('请选择现金钱包');
+              return;
+            }
+          }
+          let params = {
+            orderDate: this.mainForm.orderDate + ' 00:00:00',
+            orderNo: this.mainForm.orderNo,
+            remark: this.mainForm.remark,
+            originItems: this.originGoodsList,
+            items: this.goodsList
+          }
+          if(this.listItem) {
+            params.displaceOrderId = this.editId;
+            editData(params).then(res => {
+              this.$successMsg('编辑成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }else {
+            addData(params).then(res => {
+              this.$successMsg('添加成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }
+        }
+      })
+    },
+    // 获取钱包列表
+    getWalletList() {
+      getWalletList({
+        customerId: JSON.parse(localStorage.getItem("supply_user")).customerId,
+        type: 'COMMONLY'
+      }).then(res => {
+        this.xjWalletList = res.data;
+      })
+      getWalletList({
+        customerId: JSON.parse(localStorage.getItem("supply_user")).customerId,
+        type: 'REBATE'
+      }).then(res => {
+        this.flWalletList = res.data;
+      })
+    },
 
+    // 获取产品大类列表
+    getDictList() {
+      getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
+        this.typeList = res.data;
+      })
+    },
+
+    // 获取销售类型列表
+    getSalesTypeList() {
+      getTypeList({
+        pageNum: 1,
+        pageSize: -1
+      }).then((res) => {
+        this.salesTypeList = res.data.records;
+      })
+    },
+
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      })
+    },
+    getDate() {
+      var date = new Date();
+      var seperator1 = "-";
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+        month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+        strDate = "0" + strDate;
+      }
+      return year + seperator1 + month + seperator1 + strDate;
+    },
+    // 检查库存
+    checkStock() {
+      if(!this.warehouseValue) {
+        return this.$errorMsg('请选择仓库');
+      }
+      if(!this.goodsList) {
+        return this.$errorMsg('请添加货品');
+      }
+      let ids = [];
+      this.goodsList.forEach(item => {
+        ids.push(item.materialId);
+      })
+      checkStock({
+        correspondId: this.warehouseValue,
+        materialId: ids.join(',')
+      }).then(res => {
+        if(res.data) {
+          this.goodsList.forEach((item, index) => {
+            item.status1 = res.data[index].allStockNum;
+            item.status2 = res.data[index].stockNum;
+          })
+        }
+      })
+    },
+    // 点击 选择商品
+    openDialog() {
+      this.getSalesTypeList();
+      this.getGoodsList();
+      this.isShowDialog = true;
+    },
+    // 关闭 弹窗
+    closeDialog() {
+      this.isShowDialog = false;
+    },
+
+    // 左侧列表选择
+    leftSelectionChange(val) {
+      this.leftSelection = val;
+    },
+
+    // 右侧列表选择
+    rightSelectionChange(val) {
+      this.rightSelection = val;
+    },
+
+    // 数组去重
+    delRepeat(arr1, arr2) {
+      let allArr = arr1.concat(arr2); // 两个数组对象合并
+      let newArr = []; // 存放去重后数据的新数组
+      for(let i=0; i<allArr.length; i++){  // 循环allArr数组对象的内容
+        let flag = true;  // 建立标记,判断数据是否重复,true为不重复
+        for(let j=0; j<newArr.length; j++){  // 循环新数组的内容
+          if(allArr[i].materialId == newArr[j].materialId){ // 让allArr数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
+            flag = false;
+          }
+        }
+        if(flag){ // 判断是否重复
+          newArr.push(allArr[i]); // 不重复的放入新数组。  新数组的内容会继续进行上边的循环。
+        }
+      }
+      return newArr;
+    },
+
+    // 全部添加
+    addAllGoods() {
+      this.rightGoodsList = this.delRepeat(this.leftGoodsList, this.rightGoodsList);
+    },
+
+    // 添加
+    addGoods() {
+      this.rightGoodsList = this.delRepeat(this.leftSelection, this.rightGoodsList);
+    },
+
+    // 删除
+    deleteGoods() {
+      let rightGoodsList = this.rightGoodsList;
+      let rightSelection = this.rightSelection;
+      for(let i = 0; i < rightGoodsList.length; i++) {
+        for(let j = 0; j < rightSelection.length; j++) {
+          if(rightSelection[j].materialId == rightGoodsList[i].materialId){
+            this.rightGoodsList.splice(i, 1);
+          }
+        }
+      }
+    },
+
+    // 全部删除
+    deleteAllGoods() {
+      this.rightGoodsList = [];
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      this.goodsList = this.delRepeat(this.rightGoodsList, this.goodsList);
+      this.isShowDialog = false;
+      this.leftGoodsList = [];
+      this.rightGoodsList = [];
+    },
+
+    // 查询重复值并禁选
+    checkboxSelect(row, rowIndex) {
+      if (row.selected) {
+        return false // 禁用
+      }else{
+        return true // 不禁用
+      }
+    },
+
+    // 删除产品
+    deleteItem(index) {
+      this.goodsList.splice(index, 1);
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1;
+      this.getGoodsList();
+    },
+
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.getGoodsList();
+    },
+
+    // 更改列表当前页
+    handleTableCurrentChange(val) {
+      this.currentPage = val;
+      this.getGoodsList();
+    },
+    // 修改返利钱包
+    changeWallet(index) {
+      if(this.goodsList[index].customerWalletId2) {
+        let obj = this.flWalletList.find(o => o.customerWalletId == this.goodsList[index].customerWalletId2);
+        this.goodsList[index].rebateRate = obj.rebateRate;
+      }else {
+        this.goodsList[index].rebateRate = '';
+      }
+    },
+    status2Filter(item) {
+      if (item.status2 === '' || item.status2 === null || item.status2 === undefined) return '未检查';
+      else if (item.status2 >= item.qty) return '可用';
+      else return '短缺';
+    },
+    // 获取商品列表
+    getGoodsList() {
+      getGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        mainId: this.mainForm.mainId,
+        saleId: this.screenForm.salesType,
+        materialCode: this.screenForm.proNum,
+        materialName: this.screenForm.proName,
+        specification: this.screenForm.proModel,
+        price1: this.screenForm.price1,
+        price2: this.screenForm.price2,
+      }).then(res => {
+        let oldGoodsList = this.goodsList;
+        let newGoodsList = res.data.records;
+        for(let i = 0; i < oldGoodsList.length; i++) {
+          let oldItem = oldGoodsList[i]
+          for(let j = 0; j < newGoodsList.length; j++) {
+            let newItem = newGoodsList[j]
+            if(newItem.materialId === oldItem.materialId){
+              newGoodsList[j].selected = true;
+              break;
+            }
+          }
+        }
+        res.data.records.forEach(item => {
+          item.materialName = item.name;
+          item.materialCode = item.number;
+          item.saleTypeName = item.saleName;
+          item.unit = item.baseUnit;
+          item.price = item.batchPrice;
+          item.tax = item.taxRate;
+          item.isDirectTransfer = false;
+          item.directTransferQty = '';
+          item.status1 = '';
+          item.status2 = '';
+          item.rebateAmount = '';
+          item.rebateRate = '';
+          item.productPriceId = item.id;
+        });
+        this.leftGoodsList = res.data.records;
+        this.listTotal = res.data.total;
+      })
     },
   }
 }
@@ -182,4 +886,25 @@ export default {
       padding-left: 10px;
     }
   }
-</style>
+  .tables {
+    display: flex;
+    margin-top: 10px;
+    .table {
+      width: 45%;
+    }
+    .buttons {
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      align-items: center;
+      padding: 0 10px;
+      button {
+        margin: 0;
+        margin-top: 10px;
+      }
+    }
+  }
+  .choose-order {
+
+  }
+</style>

+ 283 - 0
src/views/supply/displace/components/displace_return.vue

@@ -0,0 +1,283 @@
+<template>
+  <div class="detail-container">
+    <el-page-header @back="goBack" content="退订"></el-page-header>
+
+    <div class="main-title">
+      <div class="title">订单信息</div>
+    </div>
+
+    <div class="diy-table-1">
+      <el-row>
+        <el-col :span="8" class="item">
+          <div class="label">置换单号</div>
+          <div class="value">{{detailData.displaceOrderId}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">订单日期</div>
+          <div class="value">{{ detailData.orderDate ? detailData.orderDate.split(" ")[0] : '' }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">单据状态</div>
+          <div class="value">{{ $parent.findExamineStatus(detailData.examineStatus) }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">原订单号</div>
+          <div class="value">{{detailData.orderNo}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">订单类型</div>
+          <div class="value">{{ $parent.findOrderType(detailData.orderType) }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">销售政策编号</div>
+          <div class="value">{{detailData.policyCode}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">销售政策</div>
+          <div class="value">{{detailData.policyTitle}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">销售政策说明</div>
+          <div class="value">{{detailData.policyRemark}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">工程登录编码</div>
+          <div class="value">{{detailData.enginRecordNo}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">业务员</div>
+          <div class="value">{{detailData.serviceName}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">经销商编号</div>
+          <div class="value">{{detailData.customerId}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">经销商名称</div>
+          <div class="value">{{detailData.customerName}}</div>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="24" class="item">
+          <div class="label">备注</div>
+          <div class="value">{{detailData.remark}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">申请人</div>
+          <div class="value">{{detailData.createName}}</div>
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="main-title">
+      <div class="title">原订单货品信息</div>
+    </div>
+    <div class="table">
+      <el-table :data="detailData.originItems" element-loading-text="Loading" border fit highlight-current-row stripe>
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="置换数量" prop="displaceQty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
+
+    <div class="main-title">
+      <div class="title">货品信息</div>
+    </div>
+
+    <div class="table" style="margin-top: 20px">
+      <el-table :data="detailData.items" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品旧编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="可退数量" prop="refundableQty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="退订数量" prop="retiredQty" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.retiredQty" size="small"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
+
+    <div class="main-title">
+      <div class="title">退订信息</div>
+    </div>
+    <div class="diy-table-1">
+      <el-row :gutter="0">
+        <el-col :span="12" class="item">
+          <div class="label">退订人</div>
+          <div class="value">{{userName}}</div>
+        </el-col>
+        <el-col :span="12" class="item">
+          <div class="label">退订日期</div>
+          <div class="value">{{getDate()}}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">退订说明</div>
+          <div class="value"><el-input v-model="returnForm.remark" placeholder="请输入退订说明"></el-input></div>
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="page-footer">
+      <div class="footer" :class="classObj">
+        <el-button type="primary" @click="clickSubmitForm()">确定退订</el-button>
+        <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
+          <el-button slot="reference">关 闭</el-button>
+        </el-popconfirm>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import { getDetail, returnOrder } from "@/api/supply/displace";
+
+export default {
+  name: 'CommerceReturn',
+  componentName: 'CommerceReturn',
+  props: ['listItem'],
+  filters: {
+    statusFilter(val) {
+      const statusList = [
+        { label: '已保存', value: 'SAVE' },
+        { label: '待审核', value: 'WAIT' },
+        { label: '审核通过', value: 'OK' },
+        { label: '审核驳回', value: 'FAIL' },
+        { label: '已关闭', value: 'CLOSE' },
+      ];
+      let obj = statusList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    }
+  },
+  data() {
+    return {
+      userName: JSON.parse(localStorage.getItem("supply_user")).nickName,
+      detailData: {},
+
+      formLoading: false,
+      returnForm: {
+        remark: '',
+      }
+    }
+  },
+
+  computed: {
+    sidebar() {
+      return this.$store.state.app.sidebar
+    },
+    classObj() {
+      return {
+        hideSidebar: !this.sidebar.opened,
+        openSidebar: this.sidebar.opened
+      }
+    },
+  },
+
+  created() {
+    this.getDetail();
+  },
+
+  methods: {
+    getDate() {
+      var date = new Date();
+      var seperator1 = "-";
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+          month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+          strDate = "0" + strDate;
+      }
+      var currentdate = year + seperator1 + month + seperator1 + strDate;
+      return currentdate;
+    },
+
+    // 返回列表
+    goBack() {
+      this.$emit('backListFormDetail');
+    },
+
+    // 获取详情
+    getDetail() {
+      getDetail({ id: this.listItem.displaceOrderId }).then(res => {
+        this.detailData = res.data;
+        this.detailData.items.forEach(item => {
+          item.retiredQty = 0
+        })
+      })
+    },
+
+    // 退订
+    clickSubmitForm(val) {
+      this.$confirm('此操作将退订订单, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let params = {
+          displaceOrderId: this.detailData.displaceOrderId,
+          items: this.detailData.items,
+          refundNote: this.returnForm.remark
+        };
+        returnOrder(params).then(res => {
+          this.$successMsg();
+          this.goBack();
+          this.$parent.getList();
+        })
+      }).catch(() => {});
+    },
+
+  }
+}
+</script>
+
+<style scoped lang="scss">
+  .detail-container {
+    width: 100%;
+    height: 100%;
+  }
+  .main-title {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: 20px;
+    height: 60px;
+    border-bottom: 1px solid #DCDFE6;
+    margin-bottom: 20px;
+    .title {
+      font-size: 16px;
+      font-weight: 600;
+      padding-left: 10px;
+    }
+  }
+</style>

+ 147 - 51
src/views/supply/displace/displace_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div v-show="!isShowDetail && !isShowForm">
+    <div v-show="!isShowDetail && !isShowForm && !isShowExamine && !isShowReturn">
       <!-- 筛选条件 -->
       <div class="screen-container">
         <el-form ref="screenForm" :model="screenForm" label-width="100px" size="small" label-position="left">
@@ -11,18 +11,18 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="原销售订单号" prop="jxsNum">
-                <el-input v-model="screenForm.jxsNum" placeholder="请输入原销售订单号"></el-input>
+              <el-form-item label="原订单号" prop="originOrderNo">
+                <el-input v-model="screenForm.originOrderNo" placeholder="请输入原订单号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="经销商名称" prop="jxsName">
-                <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
+              <el-form-item label="经销商名称" prop="customerKeyword">
+                <el-input v-model="screenForm.customerKeyword" placeholder="请输入经销商名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="产品名称" prop="chName">
-                <el-input v-model="screenForm.chName" placeholder="请输入产品名称"></el-input>
+              <el-form-item label="产品名称" prop="productName">
+                <el-input v-model="screenForm.productName" placeholder="请输入产品名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
@@ -39,21 +39,24 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="申请人" prop="sqMan">
-                <el-input v-model="screenForm.sqMan" placeholder="请输入申请人"></el-input>
+              <el-form-item label="申请人" prop="createName">
+                <el-input v-model="screenForm.createName" placeholder="请输入申请人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="审核人" prop="shMan">
-                <el-input v-model="screenForm.shMan" placeholder="请输入审核人"></el-input>
+              <el-form-item label="审核人" prop="confirmName">
+                <el-input v-model="screenForm.confirmName" placeholder="请输入审核人"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="销售订单类型" prop="shMan">
-                <el-input v-model="screenForm.shMan" placeholder="请输入销售订单类型"></el-input>
+              <el-form-item label="订单类型" prop="orderType">
+                <el-select v-model="screenForm.orderType" placeholder="选择订单类型" style="width: 100%">
+                  <el-option label="全部" value="" />
+                  <el-option v-for="item in orderType" :key="item.val" :label="item.label" :value="item.val"></el-option>
+                </el-select>
               </el-form-item>
             </el-col>
-            
+
             <el-col :xs="24" :sm="24" :lg="24" class="tr">
               <el-form-item label="">
                 <el-button size="small" @click="resetScreenForm">清空</el-button>
@@ -75,26 +78,42 @@
         </div>
         <div class="table">
           <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
-            <el-table-column align="center" label="订单号" prop="retreatOrderNo" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="订单日期" prop="retreatTime" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="原订单号" prop="stockName" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="订单类型" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="经销商编号" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="经销商名称" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="产品编码" prop="totalPrice" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="产品名称" prop="price" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="规格型号" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="业务员" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="申请人" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="申请日期" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="审核人" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="审核日期" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="审核状态" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单号" prop="displaceOrderId" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单日期" prop="orderDate" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="原订单号" prop="orderNo" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单类型" min-width="160" show-overflow-tooltip>
+              <template slot-scope="{ row }">
+                {{ findOrderType(row.orderType) }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="经销商编号" prop="customerId" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="业务员" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="申请人" prop="createName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="申请日期" prop="createTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="审核人" prop="confirmName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="审核日期" prop="confirmTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="审核状态" min-width="100" show-overflow-tooltip>
+              <template slot-scope="{ row }">
+                {{ findExamineStatus(row.examineStatus) }}
+              </template>
+            </el-table-column>
             <el-table-column align="center" label="操作" width="160" fixed="right">
               <template slot-scope="scope">
-                <el-button type="text" @click="toForm(scope.row)">编辑</el-button>
+                <el-popconfirm style="margin-right: 10px;" title="确定撤回吗?" @onConfirm="handleWithdraw(scope.row.displaceOrderId)" v-if="scope.row.examineStatus === 'WAIT'" >
+                  <el-button slot="reference" type="text">撤回</el-button>
+                </el-popconfirm>
+                <el-button type="text" @click="toForm(scope.row)" v-if="scope.row.examineStatus === 'SAVE'">编辑</el-button>
+                <el-button type="text" @click="toExamine(scope.row)" v-if="scope.row.examineStatus === 'WAIT'">审批</el-button>
+                <el-button type="text" @click="toReturn(scope.row)" v-if="scope.row.examineStatus === 'OK'">退订</el-button>
                 <el-button type="text" @click="toDetail(scope.row)">详情</el-button>
-                <el-popconfirm v-if="scope.row.status" style="margin-left: 10px;" title="确定删除吗?" @onConfirm="handleDelete(scope.row.id)" >
+                <el-popconfirm style="margin-left: 10px;" title="确定提审吗?" @onConfirm="handleSubmit(scope.row.displaceOrderId)" v-if="scope.row.examineStatus === 'SAVE'" >
+                  <el-button slot="reference" type="text">提审</el-button>
+                </el-popconfirm>
+                <el-popconfirm style="margin-left: 10px;" title="确定删除吗?" @onConfirm="handleDelete(scope.row.displaceOrderId)" >
                   <el-button slot="reference" type="text">删除</el-button>
                 </el-popconfirm>
               </template>
@@ -116,22 +135,27 @@
         </div>
       </div>
     </div>
-    
+
     <DisplaceDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
     <DisplaceForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
-
+    <DisplaceExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
+    <DisplaceReturn :listItem="queryItem" v-if="isShowReturn" @backListFormDetail="backList" />
   </div>
 </template>
 
 <script>
-import { getList } from "@/api/supply/displace";
+import {deleteOrder, getList, revokeOrder, submitData} from "@/api/supply/displace";
 import DisplaceDetail from "@/views/supply/displace/components/displace_detail";
 import DisplaceForm from "@/views/supply/displace/components/displace_form";
+import DisplaceExamine from "@/views/supply/displace/components/displace_examine";
+import DisplaceReturn from "@/views/supply/displace/components/displace_return";
 
 export default {
   components: {
     DisplaceDetail,
     DisplaceForm,
+    DisplaceExamine,
+    DisplaceReturn
   },
   data() {
     return {
@@ -142,16 +166,33 @@ export default {
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
         orderNum: '',
-        jxsNum: '',
-        jxsName: '',
-        chName: '',
-        model: '',
+        originOrderNo: '',
+        customerKeyword: '',
+        productName: '',
         date: '',
+        createName: '',
+        confirmName: '',
+        orderType: '',
       },
-
       queryItem: {},
       isShowDetail: false,
       isShowForm: false,
+      isShowExamine: false,
+      isShowReturn: false,
+      orderType : [
+        { label: '商用工程', val: 'TRADE'},
+        { label: '家用工程', val: 'HOME'},
+        { label: '零售订单', val: 'RETAIL'},
+        { label: '销售政策单', val: 'RETAIL_POLICY'}
+      ],
+      examineStatus : [
+        { label: '保存', val: 'SAVE'},
+        { label: '待审核', val: 'WAIT'},
+        { label: '通过', val: 'OK'},
+        { label: '不通过', val: 'FAIL'},
+        { label: '关闭', val: 'CLOSE'}
+      ],
+
     }
   },
 
@@ -159,15 +200,14 @@ export default {
     exParams() {
       return {
         retreatOrderNo: this.screenForm.orderNum,
-        customerNumber: this.screenForm.jxsNum,
-        customerName: this.screenForm.jxsName,
+        customerKeyword: this.screenForm.jxsNum,
         productName: this.screenForm.chName,
         specification: this.screenForm.model,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
         status: 1, // 1:退货单,2:电商退货单
       }
-    },
+    }
   },
 
   created() {
@@ -191,14 +231,15 @@ export default {
       let params = {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
-        retreatOrderNo: this.screenForm.orderNum,
-        customerNumber: this.screenForm.jxsNum,
-        customerName: this.screenForm.jxsName,
-        productName: this.screenForm.chName,
-        specification: this.screenForm.model,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: 1, // 1:退货单,2:电商退货单
+        displaceOrderId: this.screenForm.orderNum,
+        originOrderNo: this.screenForm.originOrderNo,
+        customerKeyword: this.screenForm.customerKeyword,
+        productName: this.screenForm.productName,
+        createName: this.screenForm.createName,
+        confirmName: this.screenForm.confirmName,
+        orderType: this.screenForm.orderType,
+        startOrderTime: this.screenForm.date ? this.screenForm.date[0] : '',
+        endOrderTime: this.screenForm.date ? this.screenForm.date[1] : ''
       };
       getList(params).then((res) => {
         this.dataList = res.data.records;
@@ -232,27 +273,82 @@ export default {
       this.currentPage = val;
       this.getList();
     },
-
     // 进入表单
     toForm(item) {
       this.queryItem = item;
       this.isShowForm = true;
     },
 
+    // 进入审批
+    toExamine(item) {
+      this.queryItem = item;
+      this.isShowExamine = true;
+    },
+
     // 进入详情
     toDetail(item) {
       this.queryItem = item;
       this.isShowDetail = true;
     },
 
+    // 进入退订
+    toReturn(item) {
+      this.queryItem = item;
+      this.isShowReturn = true;
+    },
+
     backList() {
       this.queryItem = {};
       this.isShowDetail = false;
       this.isShowForm = false;
+      this.isShowExamine = false;
+      this.isShowReturn = false;
+    },
+    handleSubmit(id) {
+      submitData({id}).then(res => {
+        this.$successMsg();
+        this.getList();
+      })
+    },
+    // 撤回
+    handleWithdraw(id) {
+      revokeOrder({id}).then(res => {
+        this.$successMsg();
+        this.getList();
+      })
     },
 
+    // 删除
     handleDelete(id) {
+      deleteOrder({ids: id}).then(res => {
+        this.$successMsg();
+        this.getList();
+      })
+    },
 
+    // 批量删除
+    batchDelete() {
+      this.$confirm('此操作将永久删除, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let ids = this.multipleSelection.map(item => {
+          return item.parentId;
+        });
+        deleteOrder({ids: ids.join(',')}).then(res => {
+          this.$successMsg();
+          this.getList();
+        })
+      }).catch(() => {});
+    },
+    findOrderType(val) {
+      const obj = this.orderType.find((value) => value.val === val)
+      return obj ? obj.label : ''
+    },
+    findExamineStatus(val) {
+      const obj = this.examineStatus.find((value) => value.val === val)
+      return obj ? obj.label : ''
     }
   }
 }

+ 3 - 7
src/views/supply/engin/components/engin_detail.vue

@@ -17,10 +17,6 @@
           <div class="value">{{detailData.orderDate}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">单据状态</div>
-          <div class="value">{{detailData.examineStatus | statusFilter}}</div>
-        </el-col>
-        <el-col :span="8" class="item">
           <div class="label">经销商编码</div>
           <div class="value">{{detailData.customerId}}</div>
         </el-col>
@@ -74,7 +70,7 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">业务员</div>
-          <div class="value">{{detailData.serviceId}}</div>
+          <div class="value">{{detailData.serviceName}}</div>
         </el-col>
       </el-row>
     </div>
@@ -120,7 +116,7 @@
         </el-row>
       </div>
     </div>
-    
+
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button @click="goBack">关 闭</el-button>
@@ -211,4 +207,4 @@ export default {
       padding-left: 10px;
     }
   }
-</style>
+</style>

+ 6 - 5
src/views/supply/engin/components/engin_examine.vue

@@ -164,7 +164,7 @@
         <el-col :span="12" class="item">
           <div class="label">审批结果</div>
           <div class="value">
-            <el-radio-group v-model="examineForm.status">
+            <el-radio-group v-model="examineForm.examineResult">
               <el-radio :label="true">通过</el-radio>
               <el-radio :label="false">驳回</el-radio>
             </el-radio-group>
@@ -176,7 +176,7 @@
         </el-col>
       </el-row>
     </div>
-    
+
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button type="primary" @click="clickSubmitForm" :loading="formLoading">{{ formLoading ? '提交中 ...' : '提 交' }}</el-button>
@@ -222,7 +222,7 @@ export default {
 
       formLoading: false,
       examineForm: {
-        status: true,
+        examineResult: true,
         remark: '',
       },
 
@@ -320,7 +320,8 @@ export default {
       this.formLoading = true;
       examineEngin({
         enginInfoId: this.listItem.enginInfoId,
-        examineStatus: this.examineForm.status ? 'OK' : 'FAIL',
+        productCategoryId: this.listItem.productCategoryId,
+        examineResult: this.examineForm.examineResult,
         examineNote: this.examineForm.remark,
         contractExpireDate: this.detailData.contractExpireDate,
         items: this.goodsList,
@@ -373,4 +374,4 @@ export default {
   ::v-deep input[type='number'] {
     -moz-appearance: textfield;
   }
-</style>
+</style>

+ 1 - 5
src/views/supply/engin/components/engin_form.vue

@@ -151,11 +151,7 @@
         <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="120" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="规格型号" prop="specification" min-width="200" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="单位" prop="baseUnitId" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip>
-          <template slot-scope="scope">
-            <el-input v-model="scope.row.price" size="small" type="number"></el-input>
-          </template>
-        </el-table-column>
+        <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip>
           <template slot-scope="scope">
             <el-input v-model="scope.row.qty" size="small" type="number"></el-input>

+ 3 - 3
src/views/supply/engin/engin_list.vue

@@ -66,7 +66,7 @@
                 <el-input v-model="screenForm.examineMan" placeholder="请输入审核人"></el-input>
               </el-form-item>
             </el-col>
-            
+
             <el-col :xs="24" :sm="12" :lg="18" class="tr">
               <el-form-item label="">
                 <el-button size="small" @click="resetScreenForm">清空</el-button>
@@ -141,7 +141,7 @@
         </div>
       </div>
     </div>
-    
+
     <EnginDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
     <EnginForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
     <EnginExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
@@ -333,7 +333,7 @@ export default {
 
     // 删除
     handleDelete(id) {
-      deleteEngin({id}).then(res => {
+      deleteEngin({ids: id}).then(res => {
         this.$successMsg();
         this.getList();
       })

+ 26 - 3
src/views/supply/pickup/check.vue

@@ -65,7 +65,32 @@
               {{ scope.row.printNum ? '已打单':'未打单' }}
             </template>
           </el-table-column>
-          <el-table-column align="center" label="提货方式" prop="pickType" min-width="160" show-overflow-tooltip>
+          <el-table-column align="center" label="信息密钥" prop="informationKey" min-width="180" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="预约日期" prop="pickTime" min-width="120" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ scope.row.pickTime | dateToDayFilter }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="提货时段" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ scope.row.pickStatus == '1' ? '上午':'下午' }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="销售订单号" prop="mainOrderId" min-width="200" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="发货申请单号" prop="invoiceOrderId" min-width="180" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品大类" prop="mainName" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="使用返利金额" prop="payRebateAmount" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="格力折扣" prop="totalDiscAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="仓库" prop="correspondName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="提货方式" prop="pickType" min-width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               {{ scope.row.pickType == '1' ? '自提':'物流快递' }}
             </template>
@@ -75,8 +100,6 @@
               {{ scope.row.pickType == '1' ? scope.row.takerName:scope.row.pickLogistics }}
             </template>
           </el-table-column>
-          <el-table-column align="center" label="信息密钥" prop="informationKey" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="提货单号" prop="pickOrderNo" min-width="160" show-overflow-tooltip></el-table-column>
         </el-table>
       </div>
     </div>

+ 9 - 9
src/views/supply/pickup/components/pickup_form.vue

@@ -7,19 +7,19 @@
     <div>
       <el-form ref="mainForm" :model="mainForm" :rules="mainFormRules" label-width="80px" size="small" label-position="left">
         <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
+          <el-col :xs="24" :sm="12" :lg="8">
             <el-form-item label="选择仓库" prop="warehouse">
-              <el-select v-model="mainForm.warehouse" placeholder="请选择仓库">
+              <el-select v-model="mainForm.warehouse" placeholder="请选择仓库" style="width: 100%">
                 <el-option :label="item.name" :value="item.id" v-for="(item, index) in warehouseList" :key="index"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
+          <el-col :xs="24" :sm="12" :lg="8">
             <el-button size="small" type="primary" @click="getDeliverList">确定</el-button>
           </el-col>
         </el-row>
         <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6" style="height: 51px;">
+          <el-col :xs="24" :sm="12" :lg="8" style="height: 51px;">
             <el-form-item label="预约日期" prop="date">
               <el-date-picker
                 v-model="mainForm.date"
@@ -40,28 +40,28 @@
           </el-col>
         </el-row>
         <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
+          <el-col :xs="24" :sm="12" :lg="8">
             <el-form-item label="提货方式" prop="pickupWay">
               <el-radio-group v-model="mainForm.pickupWay">
                 <el-radio :label="item.dictCode" v-for="(item, index) in pickupWayList" :key="index">{{item.dictValue}}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
+          <el-col :xs="24" :sm="12" :lg="8">
             <el-form-item label="提货人" prop="pickupMan">
               <el-select v-model="mainForm.pickupMan" placeholder="全部" style="width: 100%">
                 <el-option :label="item.takerName" :value="item.id" v-for="(item, index) in pickupManList" :key="index"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :lg="6" v-if="mainForm.pickupWay == '1'">
+          <el-col :xs="24" :sm="12" :lg="8" v-if="mainForm.pickupWay == '1'">
             <el-form-item label="提货车辆" prop="pickupCar">
               <el-select v-model="mainForm.pickupCar" placeholder="全部" style="width: 100%">
                 <el-option :label="item.carBrand" :value="item.id" v-for="(item, index) in pickupCarList" :key="index"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :lg="6" v-if="mainForm.pickupWay == '2'">
+          <el-col :xs="24" :sm="12" :lg="8" v-if="mainForm.pickupWay == '2'">
             <el-form-item label="物流公司" prop="company">
               <el-select v-model="mainForm.company" placeholder="全部" style="width: 100%">
                 <el-option :label="item.logisticsCompany" :value="item.logisticsNumber" v-for="(item, index) in companyList" :key="index"></el-option>
@@ -277,7 +277,7 @@ export default {
           });
           let params = {
             stockName: this.mainForm.warehouse,
-            pickTime: this.mainForm.date,
+            pickTime: this.mainForm.date + ' 00:00:00',
             pickStatus: Number(this.mainForm.timeSlot),
             pickType: Number(this.mainForm.pickupWay),
             takerId: this.mainForm.pickupMan,

+ 11 - 6
src/views/supply/pickup/pickup_list.vue

@@ -50,12 +50,12 @@
             <el-button size="small" type="primary" icon="el-icon-plus" @click="toForm()">新增</el-button>
           </div>
           <div class="fr">
-            <ExportButton :exUrl="'admin/user/mch/export'" :exParams="exParams" />
+            <ExportButton :exUrl="'pick/export'" :exParams="exParams" />
           </div>
         </div>
         <div class="table">
           <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
-            <el-table-column align="center" label="状态" min-width="160" show-overflow-tooltip>
+            <el-table-column align="center" label="状态" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
                 {{ scope.row.printNum ? '已打单':'未打单' }}
               </template>
@@ -63,7 +63,11 @@
             <el-table-column align="center" label="打单日期" prop="createTime" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="信息密钥" prop="informationKey" min-width="180" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="发货申请单号" prop="invoiceOrderId" min-width="180" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="预约日期" prop="pickTime" min-width="120" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="预约日期" prop="pickTime" min-width="120" show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{ scope.row.pickTime | dateToDayFilter }}
+              </template>
+            </el-table-column>
             <el-table-column align="center" label="提货时段" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
                 {{ scope.row.pickStatus == '1' ? '上午':'下午' }}
@@ -80,10 +84,11 @@
                 {{ scope.row.orderTime | dateToDayFilter }}
               </template>
             </el-table-column>
-            <el-table-column align="center" label="销售订单号" prop="retailOrderId" min-width="180" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="销售订单号" prop="mainOrderId" min-width="180" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="工程编号" prop="enginOrderNo" min-width="180" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="产品编号" prop="productNumber" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="产品名称" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品编号" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="提货总数量" prop="number" min-width="100" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="备注" prop="remark" min-width="100" show-overflow-tooltip></el-table-column>

+ 7 - 3
src/views/supply/pickup/sum_list.vue

@@ -51,7 +51,7 @@
     <div class="mymain-container">
       <div class="table">
         <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
-          <el-table-column align="center" label="状态" min-width="160" show-overflow-tooltip>
+          <el-table-column align="center" label="状态" min-width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               {{ scope.row.printNum ? '已打单':'未打单' }}
             </template>
@@ -59,7 +59,11 @@
           <el-table-column align="center" label="打单日期" prop="createTime" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="信息密钥" prop="informationKey" min-width="180" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="发货申请单号" prop="invoiceOrderId" min-width="180" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="预约日期" prop="pickTime" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="预约日期" prop="pickTime" min-width="120" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ scope.row.pickTime | dateToDayFilter }}
+            </template>
+          </el-table-column>
           <el-table-column align="center" label="提货时段" min-width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               {{ scope.row.pickStatus == '1' ? '上午':'下午' }}
@@ -76,7 +80,7 @@
               {{ scope.row.orderTime | dateToDayFilter }}
             </template>
           </el-table-column>
-          <el-table-column align="center" label="销售订单号" prop="retailOrderId" min-width="180" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="销售订单号" prop="mainOrderId" min-width="180" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="工程编号" prop="enginOrderNo" min-width="180" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品编号" prop="productNumber" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品名称" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>

+ 472 - 146
src/views/supply/policy/components/retail_detail.vue

@@ -5,7 +5,11 @@
       <div class="title">提货进度</div>
     </div>
     <div class="progress-container">
-      <el-progress :text-inside="true" :stroke-width="26" :percentage="detailData.thjd ? (detailData.thjd * 1000 / 10) : 0"></el-progress>
+      <el-progress
+        :text-inside="true"
+        :stroke-width="26"
+        :percentage="detailData.thjd ? (detailData.thjd * 1000) / 10 : 0"
+      ></el-progress>
     </div>
 
     <div class="main-title">
@@ -16,47 +20,47 @@
       <el-row>
         <el-col :span="8" class="item">
           <div class="label">订单号</div>
-          <div class="value">{{detailData.id}}</div>
+          <div class="value">{{ detailData.id }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">订单日期</div>
-          <div class="value">{{detailData.theTime}}</div>
+          <div class="value">{{ detailData.theTime }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">单据状态</div>
-          <div class="value">{{detailData.examineStatus | statusFilter}}</div>
+          <div class="value">{{ detailData.examineStatus | statusFilter }}</div>
         </el-col>
         <el-col :span="16" class="item">
           <div class="label">备注</div>
-          <div class="value">{{detailData.remark}}</div>
+          <div class="value">{{ detailData.remark }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">业务员</div>
-          <div class="value">{{detailData.serviceName}}</div>
+          <div class="value">{{ detailData.serviceName }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">制单人</div>
-          <div class="value">{{detailData.createName}}</div>
+          <div class="value">{{ detailData.createName }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">制单日期</div>
-          <div class="value">{{detailData.createTime}}</div>
+          <div class="value">{{ detailData.createTime }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">审核人</div>
-          <div class="value">{{detailData.examineName}}</div>
+          <div class="value">{{ detailData.examineName }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">审核日期</div>
-          <div class="value">{{detailData.examineTime}}</div>
+          <div class="value">{{ detailData.examineTime }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">关闭人</div>
-          <div class="value">{{detailData.closeName}}</div>
+          <div class="value">{{ detailData.closeName }}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">关闭日期</div>
-          <div class="value">{{detailData.closeTime}}</div>
+          <div class="value">{{ detailData.closeTime }}</div>
         </el-col>
       </el-row>
     </div>
@@ -66,43 +70,177 @@
     </div>
 
     <div class="table" style="margin-top: 20px">
-      <el-table :data="detailData.retailOrderItemList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
-        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
-<el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="100" show-overflow-tooltip>
-                <template slot-scope="scope">
-
-                  <el-tag type="success" size="small"  v-if="scope.row.customerWalletName2">
-                      {{scope.row.customerWalletName2}}
-                  </el-tag>
-
-                </template>
-               </el-table-column>        <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="格力折扣" prop="discAmount" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="现金钱包" prop="customerWalletName" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="实付金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="是否直调" prop="isDirectTransfer" min-width="100" show-overflow-tooltip>
+      <el-table
+        :data="detailData.retailOrderItemList"
+        element-loading-text="Loading"
+        border
+        fit
+        highlight-current-row
+        stripe
+        max-height="400"
+      >
+        <el-table-column
+          align="center"
+          label="序号"
+          type="index"
+          width="50"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="销售类型"
+          prop="saleTypeName"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="产品编码"
+          prop="materialCode"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="产品名称"
+          prop="materialName"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="规格型号"
+          prop="specification"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="单位"
+          prop="unit"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="单价"
+          prop="price"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="数量"
+          prop="qty"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="订单金额"
+          prop="totalAmount"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="返利类型"
+          prop="customerWalletName2"
+          min-width="200"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            <el-tag
+              type="success"
+              size="small"
+              v-if="scope.row.customerWalletName2"
+            >
+              {{ scope.row.customerWalletName2 }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="返利金额"
+          prop="payRebateAmount"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="格力折扣"
+          prop="totalDiscAmount"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="现金钱包"
+          prop="customerWalletName"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="金额"
+          prop="payAmount"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="是否直调"
+          prop="isDirectTransfer"
+          min-width="100"
+          show-overflow-tooltip
+        >
           <template slot-scope="scope">
-            {{scope.row.isDirectTransfer ? '是':'否'}}
+            {{ scope.row.isDirectTransfer ? "是" : "否" }}
           </template>
         </el-table-column>
-        <el-table-column align="center" label="直调数量" prop="directTransferQty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="原订单数量" prop="oldQty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="税率" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column
+          align="center"
+          label="直调数量"
+          prop="directTransferQty"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="原订单数量"
+          prop="oldQty"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="备注"
+          prop="remark"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="税率"
+          prop="tax"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
       </el-table>
     </div>
-  <div class="page-footer">
+    <div class="page-footer">
       <div class="footer" :class="classObj">
-        <!-- <el-button type="primary" @click="openDeliverDialog" :disabled="detailData.examineStatus !== 'OK'">直调发货</el-button> -->
-        <el-button type="primary" @click="handleFinish" :disabled="detailData.examineStatus !== 'OK'">直调完成</el-button>
+        <el-button
+          type="primary"
+          @click="openDeliverDialog"
+          :disabled="detailData.examineStatus !== 'OK'"
+          >直调发货</el-button
+        >
+        <el-button
+          type="primary"
+          @click="handleFinish"
+          :disabled="detailData.examineStatus !== 'OK'"
+          >直调完成</el-button
+        >
         <!-- <el-button @click="goBack">关 闭</el-button> -->
       </div>
     </div>
@@ -114,20 +252,22 @@
         <el-row :gutter="0">
           <el-col :span="12" class="item">
             <div class="label">审批人</div>
-            <div class="value">{{detailData.examineName}}</div>
+            <div class="value">{{ detailData.examineName }}</div>
           </el-col>
           <el-col :span="12" class="item">
             <div class="label">审批结果</div>
-            <div class="value">{{detailData.examineStatus | statusFilter}}</div>
+            <div class="value">
+              {{ detailData.examineStatus | statusFilter }}
+            </div>
           </el-col>
           <el-col :span="24" class="item">
             <div class="label">审批说明</div>
-            <div class="value">{{detailData.examineRemark}}</div>
+            <div class="value">{{ detailData.examineRemark }}</div>
           </el-col>
         </el-row>
       </div>
     </div>
-<!--
+    <!--
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button type="primary" @click="openDeliverDialog">直调发货</el-button>
@@ -136,33 +276,59 @@
     </div> -->
 
     <el-dialog title="直调发货" :visible.sync="isShowDeliverDialog" width="80%">
-      <el-form ref="deliverForm" :model="deliverForm" label-width="70px" size="small" label-position="left">
+      <el-form
+        ref="deliverForm"
+        :model="deliverForm"
+        :rules="deliverFormRules"
+        label-width="80px"
+        size="small"
+        label-position="left"
+      >
         <el-row :gutter="20">
-          <el-col :xs="24" :sm="8" :lg="8">
-            <el-form-item label="工程订单" prop="orderNum">
-              <el-input v-model="deliverForm.orderNum" placeholder="请输入工程订单"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="8" :lg="8" style="height: 51px;">
+          <el-col :xs="8" :sm="8" :lg="8" style="height: 51px">
             <el-form-item label="发货日期" prop="date">
               <el-date-picker
                 v-model="deliverForm.date"
                 type="date"
                 value-format="yyyy-MM-dd"
-                style="width: 100%;"
-                placeholder="选择日期">
+                style="width: 100%"
+                placeholder="选择日期"
+              >
               </el-date-picker>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="8" :lg="8">
+          <el-col :xs="8" :sm="8" :lg="8">
             <el-form-item label="发货仓库" prop="warehouse">
-              <el-select v-model="deliverForm.warehouse" placeholder="请选择发货仓库">
+              <el-select
+                v-model="deliverForm.warehouse"
+                placeholder="请选择发货仓库"
+                style="width: 100%"
+                filterable
+                @change="changeWarehouse"
+              >
                 <el-option
                   v-for="item in warehouseList"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="8" :sm="8" :lg="8">
+            <el-form-item label="选择仓位" prop="position">
+              <el-select
+                v-model="deliverForm.position"
+                placeholder="请选择仓位"
+                style="width: 100%"
+                filterable
+              >
+                <el-option
+                  v-for="item in positionList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                ></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -170,30 +336,120 @@
       </el-form>
 
       <div class="table" style="margin-top: 20px">
-        <el-table :data="detailData.retailOrderItemList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
-          <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="订单金额" prop="totalAmount" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="返利类型" prop="walletRebateName" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="格力折扣" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="现金钱包" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="实付金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="是否直调" prop="isDirectTransfer" min-width="100" show-overflow-tooltip>
+        <el-table
+          :data="goodsList"
+          element-loading-text="Loading"
+          border
+          fit
+          highlight-current-row
+          stripe
+          max-height="400"
+        >
+          <el-table-column
+            align="center"
+            label="序号"
+            type="index"
+            width="50"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="销售类型"
+            prop="saleTypeName"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="产品编码"
+            prop="materialCode"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="产品名称"
+            prop="materialName"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="规格型号"
+            prop="specification"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="单位"
+            prop="unit"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="订单数量"
+            prop="qty"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="发货数量"
+            prop="hasSendQty"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="直调数量"
+            prop="adjustNum"
+            min-width="100"
+            show-overflow-tooltip
+          >
             <template slot-scope="scope">
-              {{scope.row.isDirectTransfer ? '是':'否'}}
+              <el-input
+                v-model="scope.row.adjustNum"
+                size="small"
+                type="number"
+              ></el-input>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="直调数量" prop="directTransferQty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="原订单数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="税率" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column
+            align="center"
+            label="单价"
+            prop="price"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="金额"
+            prop="totalAmount"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="返利"
+            prop="rebateAmount"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="实付金额"
+            prop="payAmount"
+            min-width="100"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="备注"
+            prop="remark"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
         </el-table>
       </div>
       <span slot="footer" class="dialog-footer">
@@ -201,28 +457,31 @@
         <el-button type="primary" @click="submitDeliverForm">确 定</el-button>
       </span>
     </el-dialog>
-
   </div>
 </template>
 
 <script>
 import { getDetail } from "@/api/supply/policy";
-
+import {
+  getWarehouseList,
+  adjustDeliver,
+  finishData,
+} from "@/api/supply/retail";
 export default {
-  name: 'RetailDetail',
-  componentName: 'RetailDetail',
-  props: ['listItem'],
+  name: "RetailDetail",
+  componentName: "RetailDetail",
+  props: ["listItem"],
   filters: {
     statusFilter(val) {
       const statusList = [
-        { label: '已保存', value: 'SAVE' },
-        { label: '待审核', value: 'WAIT' },
-        { label: '审核通过', value: 'OK' },
-        { label: '审核驳回', value: 'FAIL' },
+        { label: "已保存", value: "SAVE" },
+        { label: "待审核", value: "WAIT" },
+        { label: "审核通过", value: "OK" },
+        { label: "审核驳回", value: "FAIL" },
       ];
-      let obj = statusList.find(o => o.value == val);
-      return obj ? obj.label : ''
-    }
+      let obj = statusList.find((o) => o.value == val);
+      return obj ? obj.label : "";
+    },
   },
   data() {
     return {
@@ -230,30 +489,48 @@ export default {
 
       isShowDeliverDialog: false,
       deliverForm: {
-        orderNum: '',
-        date: '',
+        date: "",
+        warehouse: "",
+        position: "",
+      },
+      deliverFormRules: {
+        date: [
+          { required: true, message: "请选择发货日期", trigger: "change" },
+        ],
+        warehouse: [
+          { required: true, message: "请选择发货仓库", trigger: "change" },
+        ],
+        position: [
+          { required: true, message: "请选择仓位", trigger: "change" },
+        ],
       },
       warehouseList: [],
-    }
+      positionList: [],
+
+      goodsList: [],
+    };
   },
 
   computed: {
     sidebar() {
-      return this.$store.state.app.sidebar
+      return this.$store.state.app.sidebar;
     },
     classObj() {
       return {
         hideSidebar: !this.sidebar.opened,
-        openSidebar: this.sidebar.opened
-      }
+        openSidebar: this.sidebar.opened,
+      };
     },
     isExamine() {
-      return this.detailData.examineStatus === 'OK' || this.detailData.examineStatus === 'FAIL'
+      return (
+        this.detailData.examineStatus === "OK" ||
+        this.detailData.examineStatus === "FAIL"
+      );
     },
     progress() {
-      if(this.detailData.totalQty == 0) return 0;
+      if (this.detailData.totalQty == 0) return 0;
       return (this.detailData.takeQty * 100) / (this.detailData.totalQty * 100);
-    }
+    },
   },
 
   created() {
@@ -263,72 +540,121 @@ export default {
   methods: {
     // 返回列表
     goBack() {
-      this.$emit('backListFormDetail');
+      this.$emit("backListFormDetail");
     },
 
     // 获取详情
     getDetail() {
-      getDetail({id: this.listItem.id}).then(res => {
+      getDetail({ id: this.listItem.id }).then((res) => {
         this.detailData = res.data;
-      })
+      });
     },
- // 直调完成
+    // 直调完成
     handleFinish() {
-      this.$confirm('此操作将直调完成, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        finishData({
-          id: this.listItem.id
-        }).then(res => {
-          this.$successMsg();
-          this.getDetail();
+      this.$confirm("此操作将直调完成, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          finishData({
+            id: this.listItem.id,
+          }).then((res) => {
+            this.$successMsg();
+            this.getDetail();
+          });
         })
-      }).catch(() => {});
+        .catch(() => {});
+    },
+
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      });
     },
+    // 更改仓库
+    changeWarehouse() {
+      this.deliverForm.position = "";
+      let obj = this.warehouseList.find(
+        (o) => o.id == this.deliverForm.warehouse
+      );
+      this.positionList = obj.kingDeeStocks;
+    },
+
     // 打开 直调发货
     openDeliverDialog() {
       this.isShowDeliverDialog = true;
+      this.goodsList = this.detailData.retailOrderItemList;
+      this.getWarehouseList();
     },
 
     // 关闭 直调发货
     closeDeliverDialog() {
       this.isShowDeliverDialog = false;
     },
-
     // 提交 直调发货
     submitDeliverForm() {
-
+      this.$refs.deliverForm.validate((valid) => {
+        if (valid) {
+          for (let i = 0; i < this.goodsList.length; i++) {
+            if (!this.goodsList[i].adjustNum) {
+              this.$errorMsg("请输入直调数量");
+              return;
+            }
+          }
+          let goodsList = this.goodsList.map((item) => {
+            return {
+              itemId: item.id,
+              qty: item.adjustNum,
+            };
+          });
+          let params = {
+            orderNo: this.listItem.id,
+            orderDate: this.deliverForm.date + " 00:00:00",
+            correspondId: this.deliverForm.warehouse,
+            stockId: this.deliverForm.position,
+            directItems: goodsList,
+          };
+          adjustDeliver(params).then((res) => {
+            this.$successMsg();
+            this.isShowDeliverDialog = false;
+            this.getDetail();
+          });
+        }
+      });
     },
-
-  }
-}
+  },
+};
 </script>
 
 <style scoped lang="scss">
-  .detail-container {
-    width: 100%;
-    height: 100%;
-  }
-  .main-title {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-top: 20px;
-    height: 60px;
-    border-bottom: 1px solid #DCDFE6;
-    margin-bottom: 20px;
-    .title {
-      font-size: 16px;
-      font-weight: 600;
-      padding-left: 10px;
-    }
+.detail-container {
+  width: 100%;
+  height: 100%;
+  margin-bottom: 50px;
+}
+.main-title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 20px;
+  height: 60px;
+  border-bottom: 1px solid #dcdfe6;
+  margin-bottom: 20px;
+  .title {
+    font-size: 16px;
+    font-weight: 600;
+    padding-left: 10px;
   }
-  .progress-container {
-    display: flex;
-    .el-progress {
-      width: 500px;
-    }
+}
+.progress-container {
+  display: flex;
+  .el-progress {
+    width: 500px;
   }
+}
 </style>

+ 0 - 2
src/views/supply/policy/components/retail_form.vue

@@ -876,8 +876,6 @@ export default {
            })[0][val]
 
         }
-
-
       };
     },
       pickerOptions({ $props }) {

+ 1258 - 0
src/views/supply/policy/components/retail_form2.vue

@@ -0,0 +1,1258 @@
+<template>
+  <div class="detail-container">
+    <el-page-header
+      @back="goBack"
+      :content="listItem ? '编辑' : '新增'"
+    ></el-page-header>
+
+    <div class="main-title">
+      <div class="title">订单信息</div>
+    </div>
+
+    <el-form
+      ref="mainForm"
+      :model="mainForm"
+      :rules="mainFormRules"
+      label-width="120px"
+      size="small"
+      label-position="right"
+    >
+      <el-row :gutter="20">
+        <el-col
+          :xs="24"
+          :sm="12"
+          :lg="8"
+          v-if="!listItem"
+          @click.native="handleShow"
+        >
+          <el-form-item label="销售政策编号" prop="policyCode">
+            <el-input
+              v-model="policyId"
+              placeholder="销售政策编号"
+              readonly
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8" v-else>
+          <el-form-item label="销售政策编号" prop="policyCode">
+            <el-input
+              v-model="mainForm.policyCode"
+              placeholder="销售政策编号"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8" style="height: 51px">
+          <el-form-item label="单据日期" prop="date">
+            <el-date-picker
+              v-model="mainForm.date"
+              type="datetime"
+              :picker-options="pickerOptions"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              style="width: 100%"
+              placeholder="选择日期"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="产品大类" prop="type">
+            <el-select
+              v-model="mainForm.type"
+              placeholder="选择产品大类"
+              style="width: 100%"
+            >
+              <el-option
+                v-for="item in typeList"
+                :key="item.dictCode"
+                :label="item.dictValue"
+                :value="item.dictCode"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="16" :lg="16">
+          <el-form-item label="备注" prop="remark">
+            <el-input
+              v-model="mainForm.remark"
+              placeholder="请输入备注"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <div class="main-title">
+      <div class="title">货品信息</div>
+      <div v-if="!listItem">
+        <el-select
+          v-model="warehouseValue"
+          placeholder="请选择发货仓库"
+          size="small"
+          style="margin-right: 10px"
+        >
+          <el-option
+            :label="item.name"
+            :value="item.id"
+            v-for="(item, index) in warehouseList"
+            :key="index"
+          ></el-option>
+        </el-select>
+        <el-button
+          type="primary"
+          size="small"
+          icon="el-icon-search"
+          @click="checkStock"
+          >检查库存</el-button
+        >
+        <el-divider direction="vertical"></el-divider>
+      </div>
+    </div>
+    <div class="table" style="margin-top: 20px">
+      <el-table
+        :data="goodsList"
+        element-loading-text="Loading"
+        border
+        fit
+        highlight-current-row
+        stripe
+        max-height="400"
+      >
+        <el-table-column
+          align="center"
+          label="序号"
+          type="index"
+          width="50"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="销售类型"
+          prop="saleTypeName"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="存货编码"
+          prop="materialNumber"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="产品名称"
+          prop="materialName"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="规格型号"
+          prop="specification"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="单位"
+          prop="unit"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="单价"
+          prop="price"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="总数量"
+          prop="qty"
+          min-width="100"
+          show-overflow-tooltip
+        >
+          <!-- <template slot-scope="scope">
+            <el-input v-model="scope.row.qty" size="small"></el-input>
+          </template> -->
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="订单金额"
+          min-width="100"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            {{ scope.row.price * scope.row.qty }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="返利钱包"
+          prop="customerWalletId2"
+          min-width="160"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            <el-select
+              v-model="scope.row.customerWalletId2"
+              placeholder="选择返利钱包"
+              size="small"
+              @change="changeWallet(scope.$index)"
+            >
+              <el-option label="全部" value=""></el-option>
+              <el-option
+                v-for="item in scope.row.rebateWallets"
+                :key="item.customerWalletId"
+                :label="item.name"
+                :value="item.customerWalletId"
+              >
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="返利金额"
+          min-width="100"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            {{
+              (scope.row.price * scope.row.qty * (scope.row.rebateRate * 100)) /
+                100 || 0
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="格力折扣"
+          min-width="100"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            {{ scope.row.qty * scope.row.discAmount }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="现金钱包"
+          prop="customerWalletId"
+          min-width="160"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            <el-select
+              v-model="scope.row.customerWalletId"
+              placeholder="选择现金钱包"
+              size="small"
+            >
+              <el-option label="全部" value=""></el-option>
+              <el-option
+                v-for="item in scope.row.wallets"
+                :key="item.customerWalletId"
+                :label="item.name"
+                :value="item.customerWalletId"
+              >
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="实付金额"
+          prop="qty"
+          min-width="100"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            {{
+              (scope.row.price * scope.row.qty * 100 -
+                ((scope.row.price *
+                  scope.row.qty *
+                  (scope.row.rebateRate * 100)) /
+                  100) *
+                  100 -
+                ((scope.row.qty * (scope.row.discAmount * 100)) / 100) * 100) /
+                100 || 0
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="是否直调"
+          prop="isDirectTransfer"
+          min-width="100"
+        >
+          <template slot-scope="scope">
+            <el-checkbox v-model="scope.row.isDirectTransfer"></el-checkbox>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column
+          align="center"
+          label="直调数量"
+          prop="directTransferQty"
+          min-width="100"
+        >
+          <template slot-scope="scope">
+            <el-input
+              v-model="scope.row.directTransferQty"
+              size="small"
+            ></el-input>
+          </template>
+        </el-table-column> -->
+        <el-table-column
+          align="center"
+          label="备注"
+          prop="remark"
+          min-width="160"
+        >
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.remark" size="small"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="税率"
+          prop="tax"
+          min-width="100"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="总仓库"
+          prop="status1"
+          min-width="100"
+          show-overflow-tooltip
+          v-if="!listItem"
+        >
+          <template slot-scope="scope">
+            <div>{{ scope.row.status1 | status1Filter }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="仓库状态"
+          prop="status2"
+          min-width="100"
+          show-overflow-tooltip
+          v-if="!listItem"
+        >
+          <template slot-scope="scope">
+            <div>{{ status2Filter(scope.row) }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作" width="100" fixed="right">
+          <template slot-scope="scope">
+            <el-button type="text" @click="deleteItem(scope.$index)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <div class="page-footer">
+      <div class="footer" :class="classObj">
+        <el-button type="primary" @click="clickSubmitForm">保 存</el-button>
+        <el-popconfirm
+          title="确定关闭吗?"
+          @onConfirm="goBack"
+          style="margin-left: 10px"
+        >
+          <el-button slot="reference">关 闭</el-button>
+        </el-popconfirm>
+      </div>
+    </div>
+
+    <el-dialog
+      :visible.sync="isShowDialog"
+      @close="handleClose"
+      width="80%"
+      :close-on-click-modal="false"
+      title="引用销售政策"
+    >
+      <template>
+        <el-form
+          :model="screenForm"
+          ref="screenForm"
+          label-width="120px"
+          size="small"
+        >
+          <el-row :gutter="20">
+            <el-col :xs="24" :sm="6" :lg="6">
+              <el-form-item label="销售政策">
+                <el-select
+                  v-model="screenForm.policyId"
+                  placeholder="选择销售政策"
+                  @change="handlePolicy"
+                  filterable
+                  :disabled="goodsList.length ? true : false"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="(item, index) in policyList"
+                    :key="index"
+                    :label="item.title"
+                    :value="item.code"
+                  ></el-option>
+                </el-select> </el-form-item
+            ></el-col>
+            <el-col :xs="24" :sm="6" :lg="6">
+              <el-form-item label="条件">
+                <el-select
+                  v-model="screenForm.factorId"
+                  filterable
+                  @change="handleFactor"
+                  placeholder="选择条件"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="(item, index) in factor"
+                    :key="item.id"
+                    :label="'条件' + (index + 1)"
+                    :value="item.id"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="6" :lg="6">
+              <el-form-item label="销售类型">
+                <el-select
+                  v-model="screenForm.saleTypeCode"
+                  filterable
+                  placeholder="选择销售类型"
+                  style="width: 100%"
+                >
+                  <el-option label="全部" value=""></el-option>
+                  <el-option
+                    v-for="item in ztypeList"
+                    :key="item.id"
+                    :label="item.saleName"
+                    :value="item.saleCode"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+
+            <el-col :xs="24" :sm="6" :lg="6" class="tr">
+              <el-button
+                type="primary"
+                size="small"
+                @click="handlePolicyTypeList"
+                >查询</el-button
+              >
+            </el-col>
+          </el-row>
+        </el-form>
+        <el-row :gutter="20" style="margin: 10px 0">
+          {{cusIndex>0?'选择配提机型':'选择限定机型'}} {{'('+pop+')'}}
+        </el-row>
+        <el-table
+          v-loading="listLoading"
+          :data="popDataArr[cusIndex]"
+          element-loading-text="Loading"
+          border
+          fit
+          highlight-current-row
+          @selection-change="handleSelectionChange"
+          stripe
+        >
+          <el-table-column
+            align="center"
+            type="selection"
+            :selectable="selectable"
+            width="55"
+          >
+          </el-table-column>
+          <template v-for="col in columns">
+            <el-table-column
+              v-if="col.num"
+              align="center"
+              :label="col.lable"
+              :prop="col.prop"
+              :min-width="col.widht"
+              show-overflow-tooltip
+            >
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.qty" size="small"></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              v-else-if="col.jie"
+              align="center"
+              :label="col.lable"
+              :prop="col.prop"
+              :min-width="col.widht"
+              show-overflow-tooltip
+            >
+              <template slot-scope="scope">
+                {{ scope.row.qty * scope.row.price || 0 }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              v-else
+              align="center"
+              :label="col.lable"
+              :prop="col.prop"
+              :min-width="col.widht"
+              show-overflow-tooltip
+            >
+            </el-table-column>
+          </template>
+        </el-table>
+        <div style="margin: 10px 0">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[10]"
+            :page-size="10"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+          >
+          </el-pagination>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" v-if="cusIndex > 0" @click="handleShang"
+            >上一步</el-button
+          >
+          <el-button
+            type="primary"
+            @click="handleCondition"
+            v-if="popArr.length != cusIndex + 1"
+            >下一步</el-button
+          >
+          <el-button
+            type="primary"
+            @click="hanlePopData"
+            v-if="popArr.length == cusIndex + 1"
+            >完成</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getDetail,
+  addData,
+  editData,
+  getSalesTypeList,
+  getGoodsList,
+  getWalletList,
+  getWarehouseList,
+  policyList,
+  checkStock,
+  typeList,
+  getpolicyList,
+  getConditionList,
+  getConditionDetail,
+  getpolicyTypeList,
+  getPolicyConditionList,
+} from "@/api/supply/policy";
+import { getDictList } from "@/api/common";
+import { findElem } from "@/utils/util";
+
+export default {
+  name: "RetailForm",
+  componentName: "RetailForm",
+  props: ["listItem"],
+  filters: {
+    status1Filter(val) {
+      if (val === "" || val === null || val === undefined) return "未检查";
+      else if (val === 0) return "无货";
+      else if (val > 0 && val <= 30) return val;
+      else if (val > 30 && val <= 1000) return "有货";
+      else if (val > 1000) return "充足";
+    },
+  },
+  data() {
+    return {
+      tableData: [],
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+      cusIndex: 0,
+      total: 0,
+      radio: "",
+      pop: "",
+      factor: [],
+      popArr: [],
+      mainForm: {
+        id: "",
+        date: "",
+        type: "",
+        ztype: "",
+        remark: "",
+        policyCode: "",
+        policyRemark: "",
+        policyId: "",
+      },
+      mainFormRules: {
+        date: [
+          { required: true, message: "请选择单据日期", trigger: "change" },
+        ],
+        type: [{ required: true, message: "请选择品类", trigger: "change" }],
+      },
+      goodsList: [],
+      warehouseList: [],
+      warehouseValue: "",
+      isShowDialog: false,
+      screenForm: {
+        policyId: "",
+        saleTypeCode: "",
+        factorId: "",
+      },
+      currentPage: 1,
+      listTotal: 0,
+      salesTypeList: [],
+      typeList: [],
+      ztypeList: [],
+      leftGoodsList: [],
+      rightGoodsList: [],
+      leftSelection: [],
+      rightSelection: [],
+      policyList: [],
+      xjWalletList: [],
+      flWalletList: [],
+      dataList: [],
+      columns: [
+        {
+          prop: "saleTypeName",
+          lable: "销售类型",
+          widht: 160,
+        },
+        {
+          prop: "materialName",
+          lable: "货品名称",
+          widht: 160,
+        },
+        {
+          prop: "specification",
+          lable: "规格型号",
+          widht: 160,
+        },
+
+        {
+          prop: "qty",
+          lable: "数量",
+          widht: 160,
+          num: true,
+        },
+        {
+          prop: "price",
+          lable: "单价",
+          widht: 160,
+        },
+        {
+          prop: "zong",
+          lable: "金额",
+          jie: true,
+        },
+      ],
+      listLoading: false,
+      popDataArr: [],
+      radioObj: {},
+      step: 0,
+      policyId: "",
+      policyConditionId: "",
+      multipleSelection: [],
+      multipleData: [],
+    };
+  },
+
+  computed: {
+    sidebar() {
+      return this.$store.state.app.sidebar;
+    },
+    classObj() {
+      return {
+        hideSidebar: !this.sidebar.opened,
+        openSidebar: this.sidebar.opened,
+      };
+    },
+    comxjWalletList() {
+      return (c) => {
+        console.log(c, "现金钱包");
+        const walle = [];
+        const ovalVall = c == undefined || !c.length ? [] : c;
+        for (let i = 0; i < this.xjWalletList.length; i++) {
+          for (let j = 0; j < ovalVall.length; j++) {
+            if (this.xjWalletList[i].walletRebateId == ovalVall[j].walletId) {
+              walle.push(this.xjWalletList[i]);
+            }
+          }
+        }
+        return walle;
+      };
+    },
+    comText() {
+      return (val) => {
+        if (this.cusIndex - 1 == 0) {
+          const params = this.radio.split("&");
+          return this.dataList.filter((k) => {
+            return k.id == params[0];
+          })[0][val];
+        } else {
+          const params =
+            this.radioObj["radio" + (this.cusIndex - 1)].split("&");
+          return this.popDataArr[this.cusIndex - 2].filter((k) => {
+            return k.id == params[0];
+          })[0][val];
+        }
+      };
+    },
+    pickerOptions({ $props }) {
+      return {
+        disabledDate: (time) => {
+          return time.getTime() < Date.now() - 1 * 24 * 60 * 60 * 1000;
+        },
+      };
+    },
+  },
+
+  created() {
+    this.getDictList();
+    this.getWalletList();
+    this.getWarehouseList();
+    this.getTypeList();
+    if (this.listItem) {
+      this.getDetail();
+    }
+  },
+  beforeUpdate() {},
+  methods: {
+    // 返回列表
+    goBack() {
+      this.$emit("backListFormDetail");
+    },
+    // 选择销售政策获取政策条件列表
+    handlePolicy(e) {
+      this.factor = [];
+      this.popDataArr = []
+      this.total = 0
+      this.screenForm.factorId = "";
+      // 选择销售政策PolidcyId改变获取条件列表
+      getPolicyConditionList({ policyId: e }).then((res) => {
+        this.factor = res.data;
+      });
+    },
+    //获取条件相对应的比列
+    handleFactor(e) {
+      const data = this.factor.filter((k) => {
+        return k.id == e;
+      })[0];
+      console.log(data, "kkkk");
+      this.pop = data.pop;
+      this.popArr = data.pop.split(":");
+
+      this.screenForm.policyId = data.policyId;
+      this.policyConditionId = data.id;
+    },
+    //引用销售政策搜索
+    handlePolicyTypeList() {
+      if (this.screenForm.factorId) {
+        this.getConditionList(this.policyConditionId, this.cusIndex + 1);
+      } else {
+        this.$errorMsg("必须要条件");
+      }
+    },
+    // 获取某一个比例下的数据 ,查询popType 当前 this.cusIndex+1
+    getConditionList(policyConditionId, popType) {
+      getConditionList({
+        pageNum: this.currentPage,
+        pageSize: this.pageSize,
+        policyConditionId,
+        popType,
+      }).then((res) => {
+        const datas = res.data.records;
+        this.total = res.data.total;
+        console.log(this.goodsList.length, 223424);
+        if (this.goodsList.length) {
+          for (let p = 0; p < this.goodsList.length; p++) {
+            for (let q = 0; q < datas.length; q++) {
+              if (this.goodsList[p].id == datas[q].id) {
+                datas[q].disabled = true;
+              }
+            }
+          }
+        }
+        for (let i = 0; i < res.data.records.length; i++) {
+          res.data.records[i].qty = 1;
+        }
+        if (this.popDataArr.length) {
+          this.popDataArr.splice(this.cusIndex, 1);
+        }
+        if (this.cusIndex == 0) {
+          this.popDataArr = [];
+        }
+
+        this.popDataArr = [...this.popDataArr, datas];
+      });
+    },
+    // 下一步获取某个政策条件比例数据
+    handleCondition() {
+      if (this.multipleSelection.length) {
+        this.cusIndex += 1;
+        this.multipleData.push(this.multipleSelection);
+        console.log(this.multipleData, "push", this.cusIndex);
+        this.getConditionList(this.policyConditionId, this.cusIndex + 1);
+      } else {
+        this.$errorMsg("请选择");
+      }
+    },
+    /**
+     * 根据条件禁用行复选框
+     * 函数返回值为false则禁用选择(反之亦然)
+     * @param {Object} row - 行数据
+     * @param {String} index - 索引值
+     * @return Boolean
+     */
+    selectable: function (row, index) {
+      // row.disabled == undefined 才能被选中
+      if (row.disabled == undefined) {
+        return true;
+      }
+      // 函数必须有返回值且是布尔值
+      // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
+      // 如果没有返回值则默认返回false(全部无法选中)
+    },
+
+    // 上一步
+    handleShang() {
+      this.cusIndex -= 1;
+      this.multipleData.splice(this.cusIndex, 1);
+    },
+    // 条件数据多选
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+      console.log(this.multipleSelection);
+    },
+    hanlePopData() {
+      this.multipleData.push(this.multipleSelection);
+      if (this.multipleData.length) {
+        let arrData = [];
+        console.log(this.multipleData, "datga");
+        for (let i = 0; i < this.multipleData.length; i++) {
+          arrData = [...arrData, ...this.multipleData[i]];
+        }
+          if (this.goodsList.length) {
+            this.goodsList = [...this.goodsList,...arrData];
+          }else{
+            this.goodsList = arrData
+          }
+
+         console.log(this.goodsList,'jjjj');
+        this.goodsList.forEach((item) => {
+          this.$set(item, "status1", "");
+          this.$set(item, "status2", "");
+        });
+        this.cusIndex = 0;
+        this.total = 0;
+        this.popDataArr = [];
+        this.multipleData=[]
+        this.policyId = this.screenForm.policyId;
+        this.isShowDialog = false;
+      } else {
+        this.$errorMsg("请选择");
+      }
+    },
+    // 获取详情
+    getDetail() {
+      getDetail({ id: this.listItem.id }).then((res) => {
+        let data = res.data;
+        this.mainForm.date = data.theTime;
+        this.mainForm.type = data.mainId;
+        this.mainForm.remark = data.remark;
+        data.retailOrderItemList.forEach((item) => {
+          item.status1 = "";
+          item.status2 = "";
+        });
+        this.goodsList = data.retailOrderItemList;
+      });
+    },
+    // 获取销售政策
+    getPolicyList() {
+      policyList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then((res) => {
+        this.screenForm.policyId = res.data.records[0].code;
+        this.handlePolicy(this.screenForm.policyId);
+        this.policyList = res.data.records;
+        console.log(this.policyList, "policyList");
+      });
+    },
+    // 获取销售类型
+    getTypeList() {
+      const params = {
+        pageNum: 1,
+        pageSize: -1,
+        saleCode: "",
+        saleName: "",
+        status: "",
+      };
+      typeList(params).then((res) => {
+        this.ztypeList = res.data.records;
+        console.log(this.ztypeList, "type1111");
+      });
+    },
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      });
+    },
+    // 获取限定机型
+    getpolicyTypeList() {
+      getpolicyTypeList({
+        pageNum: 1,
+        pageSize: 10,
+        policyId: this.screenForm.policyId,
+        saleTypeCode: this.screenForm.saleTypeCode,
+      }).then((res) => {
+        for (let i = 0; i < res.data.records.length; i++) {
+          res.data.records[i].qty = 1;
+        }
+        this.dataList = res.data.records;
+        this.total = res.data.total;
+        console.log(this.dataList, "kkkk");
+      });
+    },
+    // 获取政策列表
+    getMaterialTypeList() {
+      getMaterialTypeList({
+        pageNum: 1,
+        pageSize: 10,
+        policyId: this.screenForm.policyId,
+        saleTypeCode: this.screenForm.saleTypeCode,
+      }).then((res) => {});
+    },
+
+    handleShow() {
+      this.isShowDialog = true;
+      this.getPolicyList();
+    },
+    // 获取钱包列表
+    getWalletList() {
+      getWalletList({
+        customerId: JSON.parse(localStorage.getItem("supply_user")).customerId,
+        type: "COMMONLY",
+      }).then((res) => {
+        this.xjWalletList = res.data;
+        console.log(res.data, "xxxxx");
+      });
+
+      getWalletList({
+        customerId: JSON.parse(localStorage.getItem("supply_user")).customerId,
+        type: "REBATE",
+      }).then((res) => {
+        this.flWalletList = res.data;
+        console.log(this.flWalletList, "xxccc");
+      });
+    },
+
+    // 获取销售类型列表
+    getSalesTypeList() {
+      getSalesTypeList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then((res) => {
+        this.salesTypeList = res.data.records;
+      });
+    },
+
+    getDictList() {
+      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
+        this.typeList = res.data;
+      });
+    },
+
+    // 获取商品列表
+    getGoodsList() {
+      getGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        mainId: this.screenForm.type,
+        saleId: this.screenForm.salesType,
+        materialCode: this.screenForm.proNum,
+        materialName: this.screenForm.proName,
+        specification: this.screenForm.proModel,
+        price1: this.screenForm.price1,
+        price2: this.screenForm.price2,
+      }).then((res) => {
+        let oldGoodsList = this.goodsList;
+        let newGoodsList = res.data.records;
+        for (let i = 0; i < oldGoodsList.length; i++) {
+          let oldItem = oldGoodsList[i];
+          for (let j = 0; j < newGoodsList.length; j++) {
+            let newItem = newGoodsList[j];
+            if (newItem.materialId === oldItem.materialId) {
+              newGoodsList[j].selected = true;
+              break;
+            }
+          }
+        }
+        res.data.records.forEach((item) => {
+          item.materialName = item.name;
+          item.materialCode = item.number;
+          item.saleTypeName = item.saleName;
+          item.unit = item.baseUnit;
+          item.price = item.batchPrice;
+          item.tax = item.taxRate;
+          item.isDirectTransfer = false;
+          item.directTransferQty = "";
+          item.status1 = "";
+          item.status2 = "";
+          item.rebateAmount = "";
+          item.rebateRate = "";
+          item.productPriceId = item.id;
+        });
+        this.leftGoodsList = res.data.records;
+        this.listTotal = res.data.total;
+      });
+    },
+
+    // 查询重复值并禁选
+    checkboxSelect(row, rowIndex) {
+      if (row.selected) {
+        return false; // 禁用
+      } else {
+        return true; // 不禁用
+      }
+    },
+
+    // 点击 选择商品
+    openDialog() {
+      this.getSalesTypeList();
+      this.getGoodsList();
+      this.isShowDialog = true;
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1;
+      this.getGoodsList();
+    },
+
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.getGoodsList();
+    },
+
+
+
+    // 关闭 弹窗
+    closeDialog() {
+      this.isShowDialog = false;
+    },
+
+    // 删除
+    deleteGoods() {
+      let rightGoodsList = this.rightGoodsList;
+      let rightSelection = this.rightSelection;
+      for (let i = 0; i < rightGoodsList.length; i++) {
+        for (let j = 0; j < rightSelection.length; j++) {
+          if (rightSelection[j].materialId == rightGoodsList[i].materialId) {
+            this.rightGoodsList.splice(i, 1);
+          }
+        }
+      }
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      if (this.radio) {
+        const params = this.radio.split("&");
+        this.screenForm.policyId = params[1];
+        this.mainForm.policyId = params[1];
+        this.cusIndex += 1;
+        getpolicyList({
+          materialId: params[2],
+          policyId: params[1],
+        }).then((res) => {
+          this.pop = res.data.pop;
+          this.popArr = res.data.pop.split(":");
+          this.popArr.splice(0, 1);
+          for (let i = 0; i < this.popArr.length; i++) {
+            this.$set(this.radioObj, "radio" + (i + 1), "");
+          }
+          this.step = this.cusIndex + 1;
+
+          this.getConditionList(params[3], this.step);
+        });
+      } else {
+        this.$errorMsg("请选择");
+      }
+    },
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = 1;
+      this.getConditionList(this.policyConditionId, this.cusIndex + 1);
+    },
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val;
+
+      this.getConditionList(this.policyConditionId, this.cusIndex + 1);
+    },
+ // 更改列表当前页
+    handleTableCurrentChange(val) {
+      this.currentPage = val;
+      this.getConditionList(this.policyConditionId, this.cusIndex + 1);
+    },
+    handleClose() {
+      this.cusIndex = 0;
+      this.radio = "";
+      this.dataList = [];
+      this.popDataArr = [];
+      this.screenForm.policyId = "";
+      this.screenForm.saleTypeCode = "";
+    },
+    // 删除产品
+    deleteItem(index) {
+      this.goodsList.splice(index, 1);
+      console.log(this.multipleData);
+      // this.popDataArr.splice(index,1)
+    },
+    // 修改返利钱包
+    changeWallet(index) {
+      if (this.goodsList[index].customerWalletId2) {
+        let obj = this.flWalletList.find(
+          (o) => o.customerWalletId == this.goodsList[index].customerWalletId2
+        );
+        this.goodsList[index].rebateRate = obj.rebateRate;
+      } else {
+        this.goodsList[index].rebateRate = "";
+      }
+    },
+
+    // 检查库存
+    checkStock() {
+      if (!this.warehouseValue) {
+        return this.$errorMsg("请选择仓库");
+      }
+      if (!this.goodsList) {
+        return this.$errorMsg("请添加货品");
+      }
+      let ids = [];
+      this.goodsList.forEach((item) => {
+        ids.push(item.materialId);
+      });
+      checkStock({
+        correspondId: this.warehouseValue,
+        materialId: ids.join(","),
+      }).then((res) => {
+        if (res.data) {
+          this.goodsList.forEach((item, index) => {
+            item.status1 = res.data[index].allStockNum;
+            item.status2 = res.data[index].stockNum;
+            console.log(item.status1, item.status2);
+          });
+        }
+      });
+    },
+    status2Filter(item) {
+      if (
+        item.status2 === "" ||
+        item.status2 === null ||
+        item.status2 === undefined
+      )
+        return "未检查";
+      else if (item.status2 >= item.qty) return "可用";
+      else return "短缺";
+    },
+    // 保存
+    clickSubmitForm() {
+      this.$refs.mainForm.validate((valid) => {
+        if (valid) {
+          let mainName =
+            this.typeList[
+              findElem(this.typeList, "dictCode", this.mainForm.type)
+            ].dictValue;
+          let params = {
+            theTime: this.mainForm.date + " 00:00:00",
+            mainId: this.mainForm.type,
+            mainName,
+            remark: this.mainForm.remark,
+            type: 2, // 1:普通零售单,2:政策零售单
+            retailOrderItemList: this.goodsList,
+            policyId: this.policyId,
+          };
+          if (this.listItem) {
+            params.id = this.listItem.id;
+            editData(params).then((res) => {
+              this.$successMsg("编辑成功");
+              this.goBack();
+              this.$parent.getList();
+            });
+          } else {
+            addData(params).then((res) => {
+              this.$successMsg("添加成功");
+              this.goBack();
+              this.$parent.getList();
+            });
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.fr {
+  margin: 10px;
+  overflow: hidden;
+}
+.detail-container {
+  width: 100%;
+  height: 100%;
+}
+.main-title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 20px;
+  height: 60px;
+  border-bottom: 1px solid #dcdfe6;
+  margin-bottom: 20px;
+  .title {
+    font-size: 16px;
+    font-weight: 600;
+    padding-left: 10px;
+  }
+}
+.tables {
+  display: flex;
+  margin-top: 10px;
+  .table {
+    width: 45%;
+  }
+  .buttons {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    padding: 0 10px;
+    button {
+      margin: 0;
+      margin-top: 10px;
+    }
+  }
+}
+.ellipsis {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+</style>

+ 12 - 4
src/views/supply/policy/policy_list.vue

@@ -238,7 +238,7 @@
             <el-table-column
               align="center"
               label="金额"
-              prop="totalAmount"
+              prop="payAmount"
               min-width="100"
               show-overflow-tooltip
             ></el-table-column>
@@ -262,8 +262,15 @@
 
             <el-table-column
               align="center"
-              label="返利"
-              prop="rebateAmount"
+              label="返利金额"
+              prop="payRebateAmount"
+              min-width="100"
+              show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              label="格力折扣"
+              prop="totalDiscAmount"
               min-width="100"
               show-overflow-tooltip
             ></el-table-column>
@@ -427,7 +434,7 @@ import {
   submitCancel,
 } from "@/api/supply/policy";
 import RetailDetail from "./components/retail_detail";
-import RetailForm from "./components/retail_form";
+import RetailForm from "./components/retail_form2";
 import RetailExamine from "./components/retail_examine";
 import RetailReturn from "./components/retail_return";
 
@@ -525,6 +532,7 @@ export default {
         startTime: this.screenForm.date ? this.screenForm.date[0] : "",
         endTime: this.screenForm.date ? this.screenForm.date[1] : "",
         createBy: this.screenForm.zbMan,
+        status: true,
         examineBy: this.screenForm.shMan,
         type: 2, // 1:普通零售单,2:政策零售单
       };

+ 11 - 7
src/views/supply/reserve/components/reserve_detail.vue

@@ -35,22 +35,26 @@
       <div class="table" style="margin-top: 20px">
         <el-table :data="detailData.reservedOrderItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
           <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="销售订单号" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="订单日期" prop="theTime" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="销售订单号" prop="orderId" min-width="180" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单日期" prop="orderTime" min-width="120" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.orderTime | dateToDayFilter}}
+            </template>
+          </el-table-column>
           <el-table-column align="center" label="经销商编码" prop="customerId" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="预留数量" prop="reservedNum" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="订单数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="预留数量" prop="reservedNum" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="备注" prop="reservedRemark" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="修改人" prop="updateBy" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="修改时间" prop="updateTime" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="修改时间" prop="updateTime" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="关闭人" prop="closureBy" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="关闭时间" prop="closureTime" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="关闭时间" prop="closureTime" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="状态" prop="status" min-width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               {{scope.row.status | statusFilter}}

+ 5 - 4
src/views/supply/reserve/components/reserve_form.vue

@@ -56,10 +56,10 @@
     <div class="table" style="margin-top: 20px">
       <el-table :data="goodsList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400" @selection-change="tableSelectionChange">
         <el-table-column align="center" type="selection" width="55"></el-table-column>
-        <el-table-column align="center" label="销售订单号" prop="orderId" min-width="180" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="订单日期" prop="orderDate" min-width="120" show-overflow-tooltip>
+        <el-table-column align="center" label="销售订单号" prop="orderId" min-width="200" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单日期" prop="orderTime" min-width="120" show-overflow-tooltip>
           <template slot-scope="scope">
-            {{scope.row.orderDate | dateToDayFilter}}
+            {{scope.row.orderTime | dateToDayFilter}}
           </template>
         </el-table-column>
         <el-table-column align="center" label="经销商编码" prop="customerId" min-width="120" show-overflow-tooltip></el-table-column>
@@ -67,7 +67,7 @@
         <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="规格型号" prop="specification" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="预留数量" prop="reservedNum" min-width="100" show-overflow-tooltip>
           <template slot-scope="scope">
@@ -409,6 +409,7 @@ export default {
 
     // 关闭 弹窗
     closeDialog() {
+      this.$refs.screenForm.resetFields();
       this.isShowDialog = false;
     },
 

+ 8 - 4
src/views/supply/reserve/reserve_list.vue

@@ -85,10 +85,14 @@
                 {{scope.row.status | statusFilter}}
               </template>
             </el-table-column>
-            <el-table-column align="center" label="预留单号" prop="id" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="预留日期" prop="orderTime" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="销售订单号" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="订单日期" prop="theTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="预留单号" prop="id" min-width="180" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="预留日期" prop="createTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="销售订单号" prop="orderId" min-width="200" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单日期" prop="orderTime" min-width="120" show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{scope.row.orderTime | dateToDayFilter}}
+              </template>
+            </el-table-column>
             <el-table-column align="center" label="产品大类" prop="mainName" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>

+ 0 - 1
src/views/supply/retail/components/retail_form.vue

@@ -75,7 +75,6 @@
             <el-input v-model="scope.row.qty" size="small"></el-input>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="订货待提数量" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="订单金额" min-width="100" show-overflow-tooltip>
           <template slot-scope="scope">
             {{scope.row.price * scope.row.qty}}

+ 33 - 81
src/views/supply/return/components/return_detail.vue

@@ -10,110 +10,62 @@
         <el-row :gutter="0">
           <el-col :span="8" class="item">
             <div class="label">退货单号</div>
-            <div class="value">{{detailData.retreatOrderNo}}</div>
+            <div class="value">{{detailData.id}}</div>
           </el-col>
           <el-col :span="8" class="item">
-            <div class="label">退货日期</div>
-            <div class="value">{{detailData.retreatTime}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">业务类型</div>
-            <div class="value">{{detailData.aaa}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">销售类型</div>
-            <div class="value">{{detailData.salesType}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">订单号</div>
-            <div class="value">{{detailData.orderNo}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">发票号</div>
-            <div class="value">{{detailData.billNumber}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">客户名称</div>
-            <div class="value">{{detailData.clientName}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">销售部门</div>
-            <div class="value">{{detailData.salesDep}}</div>
+            <div class="label">制单人</div>
+            <div class="value">{{detailData.createBy}}</div>
           </el-col>
           <el-col :span="8" class="item">
-            <div class="label">业务员</div>
-            <div class="value">{{detailData.salesman}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">工程编号</div>
-            <div class="value">{{detailData.projectNumber}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">币种</div>
-            <div class="value">{{detailData.currency}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">订单类型</div>
-            <div class="value">{{detailData.orderType}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">仓库</div>
-            <div class="value">{{detailData.stockName}}</div>
+            <div class="label">单据日期</div>
+            <div class="value">{{detailData.retreatTime}}</div>
           </el-col>
           <el-col :span="8" class="item">
-            <div class="label">发货单号</div>
-            <div class="value">{{detailData.invoiceOrderNo}}</div>
+            <div class="label">经销商编码</div>
+            <div class="value">{{detailData.customerNumber}}</div>
           </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">台账备注</div>
-            <div class="value">{{detailData.iedgerRemark}}</div>
+          <el-col :span="16" class="item">
+            <div class="label">经销商名称</div>
+            <div class="value">{{detailData.customerName}}</div>
           </el-col>
-          <el-col :xs="24" :sm="24" :lg="24" class="item">
+          <el-col :span="24" class="item">
             <div class="label">备注</div>
             <div class="value">{{detailData.remark}}</div>
           </el-col>
         </el-row>
       </div>
 
-      <div class="main-title">
-        <div class="title">货品信息</div>
-      </div>
-      <div class="table">
+      <div class="table" style="margin-top: 20px">
         <el-table :data="detailData.retreatDocumentOrder" element-loading-text="Loading" border fit highlight-current-row stripe>
           <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="订单号" prop="orderNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="仓库名称" prop="stockName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品编号" prop="productNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品名称" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单号" prop="mainOrderId" min-width="200" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="发货单号" prop="invoiceId" min-width="180" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="仓库名称" prop="correspondName" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品编号" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="主计量" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="数量" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="含税单价" prop="includedPrice" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="含税金额" prop="includedPrice" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.number * scope.row.includedPrice }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="无税单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="无税金额" prop="price" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.number * scope.row.price }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="价税合计" prop="totalPrice" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="税率(%)" prop="rate" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="退补标记" prop="refund" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="厂产品代码" prop="factoryNumber" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="数量" prop="num" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="含税单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="含税金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="无税单价" prop="afterTaxPrice" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="无税金额" prop="noTotalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="价税合计" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="税率(%)" prop="tax" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="使用返利金额" prop="payRebateAmount" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="折扣金额" prop="totalDiscAmount" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="退补标记" prop="status" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="厂产品代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="业务员" prop="serviceName" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
         </el-table>
       </div>
     </div>
     
     <div class="page-footer">
       <div class="footer" :class="classObj">
-        <el-button  type="primary" icon="el-icon-printer" v-print="printObj">打 印</el-button>
-        <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
-          <el-button slot="reference">关 闭</el-button>
-        </el-popconfirm>
+        <!-- <el-button  type="primary" icon="el-icon-printer" v-print="printObj">打 印</el-button> -->
+        <el-button @click="goBack">关 闭</el-button>
       </div>
     </div>
 

+ 298 - 75
src/views/supply/return/components/return_form.vue

@@ -5,100 +5,91 @@
     <div class="main-title">
       <div class="title">退货申请</div>
     </div>
-    <div class="diy-table-1">
-      <el-row :gutter="0">
-        <el-col :span="8" class="item">
-          <div class="label">发货申请单号</div>
-          <div class="value"><el-input v-model="mainForm.remark" placeholder="请输入发货申请单号"></el-input></div>
+    <el-form ref="mainForm" :model="mainForm" :rules="mainFormRules" label-width="90px" size="small" label-position="right">
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="退货单号" prop="orderNum">
+            <el-input v-model="mainForm.orderNum" placeholder="系统自动生成" readonly></el-input>
+          </el-form-item>
         </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">申请日期</div>
-          <div class="value">2022123233435342</div>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="制单人" prop="createMan">
+            <el-input v-model="mainForm.createMan" readonly></el-input>
+          </el-form-item>
         </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">单据状态</div>
-          <div class="value">2022123233435342</div>
+        <el-col :xs="24" :sm="12" :lg="8" style="height: 51px;">
+          <el-form-item label="单据日期" prop="date">
+            <el-date-picker
+              v-model="mainForm.date"
+              type="date"
+              value-format="yyyy-MM-dd"
+              style="width: 100%;"
+              placeholder="选择日期">
+            </el-date-picker>
+          </el-form-item>
         </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">经销商编号</div>
-          <div class="value">万豪仓</div>
+        
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="经销商编号" prop="jxsNum">
+            <el-input v-model="mainForm.jxsNum" readonly></el-input>
+          </el-form-item>
         </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">经销商名称</div>
-          <div class="value">2022123233435342</div>
+        <el-col :xs="24" :sm="12" :lg="16">
+          <el-form-item label="经销商名称" prop="jxsName">
+            <el-input v-model="mainForm.jxsName" readonly></el-input>
+          </el-form-item>
         </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">仓库</div>
-          <div class="value">广州格匠机电有限公司</div>
-        </el-col>
-        <el-col :xs="24" :sm="24" :lg="24" class="item">
-          <div class="label">备注</div>
-          <div class="value">2022123233435342</div>
-        </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">制单人</div>
-          <div class="value">广州格匠机电有限公司</div>
-        </el-col>
-        <el-col :span="16" class="item">
-          <div class="label">制表日期</div>
-          <div class="value">广州格匠机电有限公司</div>
+        <el-col :xs="24" :sm="24" :lg="24">
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="mainForm.remark" placeholder="请输入备注"></el-input>
+          </el-form-item>
         </el-col>
       </el-row>
-    </div>
+    </el-form>
 
     <div class="main-title">
-      <div class="title">货品信息</div>
+      <el-button type="primary" size="small" icon="el-icon-plus" @click="openDialog">添加引用</el-button>
     </div>
     <div class="table">
-      <el-table :data="detailData.retreatDocumentOrder" element-loading-text="Loading" border fit highlight-current-row stripe>
+      <el-table :data="goodsList" element-loading-text="Loading" border fit highlight-current-row stripe>
         <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-        <el-table-column align="center" label="销售类型" prop="salesType" min-width="160" show-overflow-tooltip>
+        <el-table-column align="center" label="发货单号" prop="id" min-width="200" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="发货仓库" prop="correspondName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="销售订单号" prop="mainOrderId" min-width="200" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="approvalNumber" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="出货状态" prop="shipStatus" min-width="100" show-overflow-tooltip>
           <template slot-scope="scope">
-            {{ scope.row.salesType }}
+            {{scope.row.shipStatus | chStatusFilter}}
           </template>
         </el-table-column>
-        <el-table-column align="center" label="发货仓库" prop="stockName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="销售订单号" prop="retreatTime" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品编码" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品名称" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="计量单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="数量" prop="number" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="是否退货" prop="isReturn" min-width="100" show-overflow-tooltip>
+        <el-table-column align="center" label="开票状态" prop="billStatus" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.billStatus | kpStatusFilter}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="是否退货" prop="isReturn" min-width="100">
           <template slot-scope="scope">
             <el-checkbox v-model="scope.row.isReturn"></el-checkbox>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="可退数量" prop="number" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="退货数量" prop="number" min-width="100" show-overflow-tooltip>
+        <el-table-column align="center" label="可退数量" prop="refundableQty" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="退货数量" prop="num" min-width="120" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.num" size="small" type="number"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip>
           <template slot-scope="scope">
-            <el-input v-model="scope.row.number" placeholder="请输入退货数量"></el-input>
+            <el-input v-model="scope.row.remark" size="small"></el-input>
           </template>
         </el-table-column>
       </el-table>
     </div>
-
-    <div class="main-title">
-      <div class="title">退货信息</div>
-    </div>
-    <div class="diy-table-1">
-      <el-row :gutter="0">
-        <el-col :span="12" class="item">
-          <div class="label">操作人</div>
-          <div class="value">2022123233435342</div>
-        </el-col>
-        <el-col :span="12" class="item">
-          <div class="label">退货日期</div>
-          <div class="value">2022123233435342</div>
-        </el-col>
-        <el-col :span="24" class="item">
-          <div class="label">退货说明</div>
-          <div class="value">
-            <el-input v-model="mainForm.remark" placeholder="请输入退货说明"></el-input>
-          </div>
-        </el-col>
-      </el-row>
-    </div>
     
     <div class="page-footer">
       <div class="footer" :class="classObj">
@@ -109,26 +100,119 @@
       </div>
     </div>
 
+    <el-dialog title="添加引用" :visible.sync="isShowDialog" width="80%">
+      <el-form ref="screenForm" :model="screenForm" size="small" label-position="left" label-width="70px">
+        <el-row :gutter="20">
+          <el-col :xs="12" :sm="12" :lg="12">
+            <el-form-item prop="orderNum" label="发货单号">
+              <el-input v-model="screenForm.orderNum" placeholder="请输入发货单号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item label="">
+              <el-button size="small" @click="resetScreenForm">清空</el-button>
+              <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <div class="table">
+        <el-table :data="tableGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe height="400" @selection-change="tableSelectionChange">
+          <el-table-column align="center" type="selection" width="55" :selectable='checkboxSelect'></el-table-column>
+          <el-table-column align="center" label="发货单号" prop="id" min-width="200" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="发货仓库" prop="correspondName" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="销售订单号" prop="mainOrderId" min-width="200" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="数量" prop="approvalNumber" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="出货状态" prop="shipStatus" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.shipStatus | chStatusFilter}}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="开票状态" prop="billStatus" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.billStatus | kpStatusFilter}}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="可退数量" prop="refundableQty" min-width="100" show-overflow-tooltip></el-table-column>
+        </el-table>
+        <div class="pagination clearfix" style="margin-top: 10px">
+          <div class="fr">
+            <el-pagination
+              @current-change="handleTableCurrentChange"
+              :current-page="currentPage"
+              :page-size="10"
+              background
+              layout="prev, pager, next"
+              :total="listTotal">
+            </el-pagination>
+          </div>
+        </div>
+      </div>
+      
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDialog">取 消</el-button>
+        <el-button type="primary" @click="submitAddGoods">确 定</el-button>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
-import { getDetail } from "@/api/supply/return";
+import { getDetail, getGoodsList, addData } from "@/api/supply/return";
 
 export default {
   name: 'ReturnForm',
   componentName: 'ReturnForm',
   props: ['listItem'],
+  filters: {
+    chStatusFilter(val) {
+      const MAP = {
+        0: '未出货',
+        1: '已出货',
+      }
+      return MAP[val];
+    },
+    kpStatusFilter(val) {
+      const MAP = {
+        0: '未开票',
+        1: '已开票',
+      }
+      return MAP[val];
+    }
+  },
   data() {
     return {
       detailData: {},
       formLoading: false,
       mainForm: {
+        orderNum: '',
+        createMan: '',
+        date: '',
+        jxsNum: '',
+        jxsName: '',
         remark: '',
       },
-      goodsList: [{
-        goodsId: 1,
-      }]
+      mainFormRules: {
+        date: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
+      },
+      goodsList: [],
+
+      isShowDialog: false,
+      screenForm: {
+        orderNum: '',
+      },
+      currentPage: 1,
+      listTotal: 0,
+      
+      tableGoodsList: [],
+      tableSelection: [],
     }
   },
 
@@ -145,7 +229,13 @@ export default {
   },
 
   created() {
-    this.getDetail();
+    if(this.listItem) {
+      this.getDetail();
+    }else {
+      this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerId;
+      this.mainForm.jxsName = JSON.parse(localStorage.getItem("supply_user")).customerName;
+      this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
+    }
   },
 
   methods: {
@@ -161,8 +251,141 @@ export default {
       })
     },
 
+    // 获取商品列表
+    getGoodsList() {
+      getGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        customerId: JSON.parse(localStorage.getItem("supply_user")).customerId,
+        id: this.screenForm.orderNum,
+      }).then(res => {
+        res.data.records.forEach(item => {
+          item.num = '';
+          item.remark = '';
+          item.isReturn = true;
+        });
+        let oldGoodsList = this.goodsList;
+        let newGoodsList = res.data.records;
+        for(let i = 0; i < oldGoodsList.length; i++) {
+          let oldItem = oldGoodsList[i]
+          for(let j = 0; j < newGoodsList.length; j++) {
+            let newItem = newGoodsList[j]
+            if(newItem.materialId === oldItem.materialId){
+              newGoodsList[j].selected = true;
+              break;
+            }
+          }
+        }
+
+        this.tableGoodsList = newGoodsList;
+        this.listTotal = res.data.total;
+      })
+    },
+
+    // 查询重复值并禁选
+    checkboxSelect(row, rowIndex) {
+      if (row.selected) {
+        return false // 禁用
+      }else{
+        return true // 不禁用
+      }
+    },
+
+    // 点击 选择商品
+    openDialog() {
+      this.isShowDialog = true;
+      if(this.screenForm.orderNum) {
+        this.getGoodsList();
+      }
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      if(!this.screenForm.orderNum) {
+        return this.$errorMsg('请填写发货申请单号');
+      }
+      this.currentPage = 1;
+      this.getGoodsList();
+    },
+
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.tableGoodsList = [];
+      // this.getGoodsList();
+    },
+
+    // 更改列表当前页
+    handleTableCurrentChange(val) {
+      if(this.tableSelection.length > 0) {
+        return this.$errorMsg('已选择产品不可切换');
+      }
+      this.currentPage = val;
+      this.getGoodsList();
+    },
+
+    // 关闭 弹窗
+    closeDialog() {
+      this.isShowDialog = false;
+    },
+
+    // 列表选择
+    tableSelectionChange(val) {
+      this.tableSelection = val;
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      this.goodsList = this.goodsList.concat(this.tableSelection);
+      this.isShowDialog = false;
+    },
+
+    // 删除产品
+    deleteItem(index) {
+      this.goodsList.splice(index, 1);
+    },
+
     clickSubmitForm() {
+      this.$refs.mainForm.validate((valid) => {
+        if (valid) {
+          if(this.goodsList.length < 1) {
+            return this.$errorMsg('请添加引用');
+          }
+          for(let i=0; i<this.goodsList.length; i++) {
+            if(!this.goodsList[i].num) {
+              this.$errorMsg('请输入退货数量');
+              return;
+            }
+            if(this.goodsList[i].num > this.goodsList[i].refundableQty) {
+              this.$errorMsg('退货数量不能大于可退数量');
+              return;
+            }
+          }
+
+          let goodsList = this.goodsList.filter(item => {
+            return item.isReturn;
+          })
+          goodsList = goodsList.map(item => {
+            return {
+              invoiceOrderId: item.invoiceOrderId,
+              num: item.num,
+              remark: item.remark
+            }
+          })
+          let params = {
+            retreatTime: this.mainForm.date + ' 00:00:00',
+            remark: this.mainForm.remark,
+            retreatDocumentOrder: goodsList,
+          }
+          addData(params).then(res => {
+            this.$successMsg('添加成功');
+            this.goBack();
+            this.$parent.getList();
+          })
 
+        }
+      })
     },
   }
 }

+ 30 - 33
src/views/supply/return/return_list.vue

@@ -21,8 +21,8 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="存货名称" prop="chName">
-                <el-input v-model="screenForm.chName" placeholder="请输入存货名称"></el-input>
+              <el-form-item label="产品名称" prop="goodsName">
+                <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
@@ -56,31 +56,29 @@
 
       <div class="mymain-container">
         <div class="btn-group clearfix">
+          <div class="fl">
+            <el-button size="small" type="primary" icon="el-icon-plus" @click="toForm()">退货</el-button>
+          </div>
           <div class="fr">
-            <ExportButton :exUrl="'admin/user/mch/export'" :exParams="exParams" />
+            <ExportButton :exUrl="'retreat/export'" :exParams="exParams" />
           </div>
         </div>
         <div class="table">
           <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
-            <el-table-column align="center" label="退换单号" prop="retreatOrderNo" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="退换单号" prop="id" min-width="180" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="退货日期" prop="retreatTime" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="仓库" prop="stockName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="仓库" prop="correspondName" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="经销商" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="产品名称" prop="productName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="价税合计" prop="totalPrice" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="无税金额" prop="price" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.number * scope.row.price }}
-              </template>
-            </el-table-column>
-            <el-table-column align="center" label="无税单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="数量" prop="number" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="价税合计" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="无税金额" prop="noTotalAmount" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="无税单价" prop="afterTaxPrice" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="数量" prop="num" min-width="100" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="备注" prop="remark" min-width="200" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="操作" width="120" fixed="right">
+            <el-table-column align="center" label="操作" width="100" fixed="right">
               <template slot-scope="scope">
-                <el-button type="text" @click="toDetail('detail', scope.row)">详情</el-button>
-                <el-button type="text" @click="toDetail('form', scope.row)">退货</el-button>
+                <el-button type="text" @click="toDetail(scope.row)">详情</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -108,7 +106,6 @@
 </template>
 
 <script>
-import { COMMON_SELECT } from '@/utils/select_data'
 import { getList } from "@/api/supply/return";
 import ReturnDetail from "@/views/supply/return/components/return_detail";
 import ReturnForm from "@/views/supply/return/components/return_form";
@@ -129,13 +126,14 @@ export default {
         orderNum: '',
         jxsNum: '',
         jxsName: '',
-        chName: '',
+        goodsName: '',
         model: '',
         date: '',
       },
 
-      jumpType: '',
       queryItem: {},
+      isShowDetail: false,
+      isShowForm: false,
     }
   },
 
@@ -145,19 +143,12 @@ export default {
         retreatOrderNo: this.screenForm.orderNum,
         customerNumber: this.screenForm.jxsNum,
         customerName: this.screenForm.jxsName,
-        productName: this.screenForm.chName,
+        materialName: this.screenForm.goodsName,
         specification: this.screenForm.model,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: 1, // 1:退货单,2:电商退货单
       }
     },
-    isShowDetail() {
-      return this.queryItem.hasOwnProperty('id') && this.jumpType == 'detail';
-    },
-    isShowForm() {
-      return this.queryItem.hasOwnProperty('id') && this.jumpType == 'form';
-    },
   },
 
   created() {
@@ -184,11 +175,10 @@ export default {
         retreatOrderNo: this.screenForm.orderNum,
         customerNumber: this.screenForm.jxsNum,
         customerName: this.screenForm.jxsName,
-        productName: this.screenForm.chName,
+        materialName: this.screenForm.goodsName,
         specification: this.screenForm.model,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: 1, // 1:退货单,2:电商退货单
       };
       getList(params).then((res) => {
         this.dataList = res.data.records;
@@ -224,14 +214,21 @@ export default {
     },
 
     // 进入详情
-    toDetail(type, item) {
-      this.jumpType = type;
+    toDetail(item) {
+      this.queryItem = item;
+      this.isShowDetail = true;
+    },
+    
+    // 进入表单
+    toForm(item) {
       this.queryItem = item;
+      this.isShowForm = true;
     },
 
     backList() {
-      this.jumpType = '';
       this.queryItem = {};
+      this.isShowForm = false;
+      this.isShowDetail = false;
     },
   }
 }