Quellcode durchsuchen

Merge remote-tracking branch 'origin/develop' into develop

FengChaoYu vor 3 Jahren
Ursprung
Commit
ce223d7fae
35 geänderte Dateien mit 3018 neuen und 21805 gelöschten Zeilen
  1. 1 21046
      package-lock.json
  2. 234 209
      src/api/setting.js
  3. 19 0
      src/api/supply/apply.js
  4. 1 1
      src/api/supply/engin.js
  5. 1 1
      src/api/supply/retail.js
  6. 36 0
      src/api/supply/sales.js
  7. 31 31
      src/views/basic_data/material/components/modify_list-apply.vue
  8. 0 1
      src/views/basic_data/material/modify_list.vue
  9. 2 2
      src/views/basic_data/material/price_list.vue
  10. 178 2
      src/views/engin_deposit/components/deposit-apply-surrender.vue
  11. 3 3
      src/views/engin_deposit/components/deposit_list-detail.vue
  12. 58 274
      src/views/engin_deposit/components/refund_list-detail.vue
  13. 1 1
      src/views/engin_deposit/deposit_list.vue
  14. 24 131
      src/views/engin_deposit/refund_list.vue
  15. 389 0
      src/views/setting/sub_account.vue
  16. 82 14
      src/views/supply/apply/apply_list.vue
  17. 13 9
      src/views/supply/apply/components/apply_form.vue
  18. 521 0
      src/views/supply/apply/components/apply_return_form.vue
  19. 1 1
      src/views/supply/apply/components/engin_form.vue
  20. 761 0
      src/views/supply/apply/components/engin_return_form.vue
  21. 54 7
      src/views/supply/apply/engin_list.vue
  22. 8 4
      src/views/supply/engin/components/commerce_detail.vue
  23. 8 4
      src/views/supply/engin/components/commerce_examine.vue
  24. 3 6
      src/views/supply/engin/components/commerce_form.vue
  25. 4 4
      src/views/supply/engin/components/commerce_return.vue
  26. 8 4
      src/views/supply/engin/components/home_detail.vue
  27. 8 4
      src/views/supply/engin/components/home_examine.vue
  28. 7 6
      src/views/supply/engin/components/home_form.vue
  29. 4 4
      src/views/supply/engin/components/home_return.vue
  30. 0 1
      src/views/supply/engin/home_list.vue
  31. 5 1
      src/views/supply/pickup/check.vue
  32. 32 31
      src/views/supply/policy/components/retail_form.vue
  33. 2 2
      src/views/supply/retail/components/retail_form.vue
  34. 506 0
      src/views/supply/sales/components/sales_return_form.vue
  35. 13 1
      src/views/supply/sales/sales_list.vue

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 21046
package-lock.json


+ 234 - 209
src/api/setting.js

@@ -1,469 +1,494 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 获取个人信息
 export function getUserInfo(params) {
   return request({
-    url: '/admin/user/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 修改密码
 export function changePassword(params) {
   return request({
-    url: '/admin/user/password/update',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/password/update",
+    method: "post",
+    params,
+  });
 }
 
 // 获取账户列表
 export function getAccountList(params) {
   return request({
-    url: '/admin/user/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取角色列表
 export function getRoleList(params) {
   return request({
-    url: '/admin/role/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/role/list",
+    method: "get",
+    params,
+  });
 }
 
 // 重置密码
 export function resetPassword(params) {
   return request({
-    url: '/admin/user/password/reset',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/password/reset",
+    method: "post",
+    params,
+  });
 }
 
 // 更改账户状态
 export function changeAccountStatus(params) {
   return request({
-    url: '/admin/user/status/update',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/status/update",
+    method: "post",
+    params,
+  });
 }
 
 // 新增账户
 export function addAccount(params) {
   return request({
-    url: '/admin/user/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/user/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑账户
 export function editAccount(params) {
   return request({
-    url: '/admin/user/user/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/user/user/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取账户详情
 export function getAccountDetail(params) {
   return request({
-    url: '/admin/user/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取字段列表
 export function getFieldList(params) {
   return request({
-    url: '/sys/dict/list/page',
-    method: 'get',
-    params
-  })
+    url: "/sys/dict/list/page",
+    method: "get",
+    params,
+  });
 }
 
 // 更改字段状态
 export function changeFieldStatus(params) {
   return request({
-    url: '/sys/dict/status/update',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/status/update",
+    method: "post",
+    params,
+  });
 }
 
 // 删除字段
 export function deleteField(params) {
   return request({
-    url: '/sys/dict/delete',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 新增字段
 export function addField(params) {
   return request({
-    url: '/sys/dict/add',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/add",
+    method: "post",
+    params,
+  });
 }
 
 // 编辑字段
 export function editField(params) {
   return request({
-    url: '/sys/dict/update',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/update",
+    method: "post",
+    params,
+  });
 }
 
 // 获取字段详情
 export function getFieldDetail(params) {
   return request({
-    url: '/sys/dict/detail',
-    method: 'get',
-    params
-  })
+    url: "/sys/dict/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取操作日志列表
 export function getOplogList(params) {
   return request({
-    url: '/admin/operation/log/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/operation/log/list",
+    method: "get",
+    params,
+  });
 }
 
 // 检查工程机帐号是否有效
 export function checkEngineAccount() {
   return request({
-    url: '/admin/user/engin/checkuser',
-    method: 'post'
-  })
+    url: "/admin/user/engin/checkuser",
+    method: "post",
+  });
 }
 
 // 绑定工程机帐号
 export function bindEngineAccount(params) {
   return request({
-    url: '/admin/user/engin/bind',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/engin/bind",
+    method: "post",
+    params,
+  });
 }
 
 // 删除工程机帐号
 export function delEngineAccount(params) {
   return request({
-    url: '/admin/user/engin/account/del',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/engin/account/del",
+    method: "post",
+    params,
+  });
 }
 
 // 更改轮播图状态
 export function changeBannerStatus(params) {
   return request({
-    url: '/carouselMap/state/update',
-    method: 'post',
-    params
-  })
+    url: "/carouselMap/state/update",
+    method: "post",
+    params,
+  });
 }
 
 // 删除轮播图
 export function deleteBanner(params) {
   return request({
-    url: '/carouselMap/delete',
-    method: 'post',
-    params
-  })
+    url: "/carouselMap/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 新增轮播图
 export function addBanner(params) {
   return request({
-    url: '/carouselMap/add',
-    method: 'post',
-    data: params
-  })
+    url: "/carouselMap/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑轮播图
 export function editBanner(params) {
   return request({
-    url: '/carouselMap/update',
-    method: 'post',
-    data: params
-  })
+    url: "/carouselMap/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取轮播图详情
 export function getBannerDetail(params) {
   return request({
-    url: '/carouselMap/detail',
-    method: 'get',
-    params
-  })
+    url: "/carouselMap/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 新增角色
 export function addRole(params) {
   return request({
-    url: '/admin/role/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/role/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑角色
 export function editRole(params) {
   return request({
-    url: '/admin/role/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/role/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 删除角色
 export function deleteRole(params) {
   return request({
-    url: '/admin/role/delete',
-    method: 'post',
-    params
-  })
+    url: "/admin/role/delete",
+    method: "post",
+    params,
+  });
 }
 
-
 // 获取角色详情
 export function getRoleDetail(params) {
   return request({
-    url: '/admin/role/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/role/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取权限列表
 export function getMenuRoleList(params) {
   return request({
-    url: '/admin/user/module/all',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/module/all",
+    method: "get",
+    params,
+  });
 }
 
 // 获取已选权限数组
 export function getMenuRoleIds(params) {
   return request({
-    url: '/admin/user/module/id/checked',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/module/id/checked",
+    method: "get",
+    params,
+  });
 }
 
 // 提交设置权限
 export function setMenuRole(params) {
   return request({
-    url: '/admin/user/module/grant',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/module/grant",
+    method: "post",
+    params,
+  });
 }
 
 // 获取商品列表
 export function getGoodsList(params) {
   return request({
-    url: '/carouselMap/list/goods',
-    method: 'get',
-    params
-  })
+    url: "/carouselMap/list/goods",
+    method: "get",
+    params,
+  });
 }
 
 // 批量删除轮播图
 export function batchDeleteBanner(params) {
   return request({
-    url: '/carouselMap/batch/delete',
-    method: 'post',
-    data: params
-  })
+    url: "/carouselMap/batch/delete",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取通告
 export function getNotice(params) {
   return request({
-    url: '/notice/mini/select',
-    method: 'get',
-    params
-  })
+    url: "/notice/mini/select",
+    method: "get",
+    params,
+  });
 }
 
 // 新增通告
 export function addNotice(params) {
   return request({
-    url: '/notice/mini/add',
-    method: 'post',
-    data: params
-  })
+    url: "/notice/mini/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑通告
 export function editNotice(params) {
   return request({
-    url: '/notice/mini/update',
-    method: 'post',
-    data: params
-  })
+    url: "/notice/mini/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取菜单列表
 export function getMenuList(params) {
   return request({
-    url: '/admin/user/module/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/module/list",
+    method: "get",
+    params,
+  });
 }
 
 // 添加菜单
 export function addMenu(params) {
   return request({
-    url: '/admin/module/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/module/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑菜单
 export function editMenu(params) {
   return request({
-    url: '/admin/module/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/module/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 删除菜单
 export function deleteMenu(params) {
   return request({
-    url: '/admin/module/delete',
-    method: 'post',
-    params
-  })
+    url: "/admin/module/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 获取菜单详情
 export function getMenuDetail(params) {
   return request({
-    url: '/admin/module/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/module/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取商户列表
 export function getMerchantList(params) {
   return request({
-    url: '/admin/user/mch/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/mch/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取经销商列表
 export function getDealerList(params) {
   return request({
-    url: '/customer/list',
-    method: 'get',
-    params
-  })
+    url: "/customer/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取用户协议
 export function getAgreement(params) {
   return request({
-    url: '/admin/company/other/getOne',
-    method: 'get',
-    params
-  })
+    url: "/admin/company/other/getOne",
+    method: "get",
+    params,
+  });
 }
 
 // 更新用户协议
 export function editAgreement(params) {
   return request({
-    url: '/admin/company/other/update',
-    method: 'post',
-    params
-  })
+    url: "/admin/company/other/update",
+    method: "post",
+    params,
+  });
 }
 
 // 获取部门列表
 export function getDepartmentList(params) {
   return request({
-    url: '/admin/websit/tree',
-    method: 'get',
-    params
-  })
+    url: "/admin/websit/tree",
+    method: "get",
+    params,
+  });
 }
 
 // 添加部门
 export function addDepartment(params) {
   return request({
-    url: '/admin/websit/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/websit/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 修改部门
 export function editDepartment(params) {
   return request({
-    url: '/admin/websit/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/websit/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 删除部门
 export function deleteDepartment(params) {
   return request({
-    url: '/admin/websit/delete',
-    method: 'post',
-    params
-  })
+    url: "/admin/websit/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 获取部门详情
 export function getDepartmentDetail(params) {
   return request({
-    url: '/admin/websit/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/websit/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取接口状态列表
 export function getApiList(params) {
   return request({
-    url: '/common/interface/list',
-    method: 'get',
-    params
-  })
+    url: "/common/interface/list",
+    method: "get",
+    params,
+  });
 }
 
 // 仓库仓位对应关系列表
 export function getStockListStock(params) {
   return request({
-    url: '/stock/listStock',
-    method: 'get',
-    params
-  })
+    url: "/stock/listStock",
+    method: "get",
+    params,
+  });
+}
+
+// 新建经销商子账号
+export function addSubAccount(params) {
+  return request({
+    url: "/admin/user/user/child/add",
+    method: "post",
+    params,
+  });
+}
+// 新建经销商子账号
+export function editSubAccount(params) {
+  return request({
+    url: "/admin/user/user/child/update",
+    method: "post",
+    params,
+  });
+}
+
+// 新建经销商子账号
+export function getRoleChecked(params) {
+  return request({
+    url: "/admin/user/user/child/module/checked",
+    method: "get",
+    params,
+  });
 }

+ 19 - 0
src/api/supply/apply.js

@@ -207,4 +207,23 @@ export function deleteEngin(params) {
     method: 'post',
     params
   })
+}
+
+
+// 零售退货申请单 - 新增
+export function addApplyReturn(params) {
+  return request({
+    url: '/invoice/refund/add',
+    method: 'post',
+    data: params
+  })
+}
+
+// 零售退货申请单 - 获取产品列表
+export function getSalesGoodsList(params) {
+  return request({
+    url: '/invoice/refund/list',
+    method: 'get',
+    params
+  })
 }

+ 1 - 1
src/api/supply/engin.js

@@ -183,7 +183,7 @@ export function overOrder(params) {
 // 工程订单 - 直调发货
 export function deliverOrder(params) {
   return request({
-    url: '/engin-order/direct-transfer',
+    url: '/invoice/rak/addProjectRak',
     method: 'post',
     data: params
   })

+ 1 - 1
src/api/supply/retail.js

@@ -155,7 +155,7 @@ export function checkStock(params) {
 // 直调发货
 export function adjustDeliver(params) {
   return request({
-    url: "/retail/direct/deliver",
+    url: "/invoice/rak/addRak",
     method: "post",
     data: params,
   });

+ 36 - 0
src/api/supply/sales.js

@@ -52,4 +52,40 @@ export function examineBatch(params) {
     method: 'post',
     params
   })
+}
+
+// 获取仓库列表
+export function getWarehouseList(params) {
+  return request({
+    url: '/stock/manager/listStock',
+    method: 'get',
+    params
+  })
+}
+
+// 获取产品列表
+export function getSalesGoodsList(params) {
+  return request({
+    url: '/saleRetreat/order/listSales',
+    method: 'get',
+    params
+  })
+}
+
+// 获取经销商列表
+export function getDealerList(params) {
+  return request({
+    url: '/customer/list',
+    method: 'get',
+    params
+  })
+}
+
+// 新增退货申请
+export function addReturn(params) {
+  return request({
+    url: '/saleRetreat/order/add',
+    method: 'post',
+    data: params
+  })
 }

+ 31 - 31
src/views/basic_data/material/components/modify_list-apply.vue

@@ -806,9 +806,9 @@
             @select-all="handleSelectionAllChange"
             @selection-change="handleSelectionChange"
           >
+<!--            :selectable="selectable"-->
             <el-table-column
               align="center"
-              :selectable="selectable"
               type="selection"
               width="55"
             />
@@ -1347,17 +1347,17 @@ export default {
      * @param {String} index - 索引值
      * @return Boolean
      */
-    selectable: function(row, index) {
-      // row.disabled == undefined 才能被选中
-      if (row.disabled == undefined || row.disabled == false) {
-        return true
-      } else {
-        return false
-      }
-      // 函数必须有返回值且是布尔值
-      // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
-      // 如果没有返回值则默认返回false(全部无法选中)
-    },
+    // selectable: function(row, index) {
+    //   // row.disabled == undefined 才能被选中
+    //   if (row.disabled == undefined || row.disabled == false) {
+    //     return true
+    //   } else {
+    //     return false
+    //   }
+    //   // 函数必须有返回值且是布尔值
+    //   // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
+    //   // 如果没有返回值则默认返回false(全部无法选中)
+    // },
     hanleSbumit() {
       this.filterWallets(this.items)
       const params = {
@@ -1507,28 +1507,28 @@ export default {
           result.data[i].rebateList = rebateList
           result.data[i].fang = false
         }
-        if (this.dataList.length) {
-          for (let j = 0; j < result.data.length; j++) {
-            for (let k = 0; k < this.dataList.length; k++) {
-              if (result.data[j].materialId === this.dataList[k].id) {
-                this.dataList[k].disabled = true
-              }
-            }
-          }
-        }
+        // if (this.dataList.length) {
+        //   for (let j = 0; j < result.data.length; j++) {
+        //     for (let k = 0; k < this.dataList.length; k++) {
+        //       if (result.data[j].materialId === this.dataList[k].id) {
+        //         this.dataList[k].disabled = true
+        //       }
+        //     }
+        //   }
+        // }
 
 
+        // this.items = [...this.items,...result.data]
+        // let newArr = [];
+        // let obj = {};
+        // for (var i = 0; i < this.items.length; i++) {
+        //   if (!obj[this.items[i].materialId]) {
+        //     newArr.push(this.items[i])
+        //     obj[this.items[i].materialId] = true
+        //   }
+        // }
+        // console.log(newArr,454 ,obj)
         this.items = [...this.items,...result.data]
-        let newArr = [];
-        let obj = {};
-        for (var i = 0; i < this.items.length; i++) {
-          if (!obj[this.items[i].key]) {
-            newArr.push(this.items[i])
-            obj[this.items[i].key] = true
-          }
-        }
-        console.log(newArr,454)
-        this.items = newArr
         // console.log(resArrs(result.data,this.dataList),'55555')
 
       } else {

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

@@ -285,7 +285,6 @@
               <template slot-scope="scope">
                 <template v-for="(item, index) in scope.row.wallets">
                      <template v-if="item.type === 'REBATE'">
-
                         <el-tag
                   type="success"
                   style="margin: 0 10px"

+ 2 - 2
src/views/basic_data/material/price_list.vue

@@ -114,7 +114,7 @@
     <!-- 按钮 -->
     <div class="btn-group clearfix">
       <div class="fr">
-        <el-button type="primary" size="small">导出</el-button>
+<!--        <el-button type="primary" size="small">导出</el-button>-->
         <!-- <el-button type="primary" size="small">打印</el-button> -->
       </div>
     </div>
@@ -129,7 +129,7 @@
           fit
           stripe
         >
-          <el-table-column type="selection" align="center" />
+<!--          <el-table-column type="selection" align="center" />-->
           <!-- <el-table-column
             align="center"
             label="产品品类"

+ 178 - 2
src/views/engin_deposit/components/deposit-apply-surrender.vue

@@ -222,6 +222,117 @@
               <imageUpload :file-list="fileList" :multiple="true" :start-restricting="true" :restrict-filename="restrictFilename" />
             </el-form-item>
           </el-col>
+          <el-col :xs="24" :sm="12" :lg="24" v-if="details.dataList && details.dataList.length">
+            <!-- 列表 -->
+            <div class="mymain-container">
+              <div class="table">
+                <el-table
+                  v-loading="listLoading"
+                  :data="details.dataList"
+                  element-loading-text="Loading"
+                  border
+                  fit
+                  highlight-current-row
+                  stripe
+                >
+                  <el-table-column
+                    align="center"
+                    label="资料描述"
+                    prop="dataDescribe"
+                    min-width="160"
+                    show-overflow-tooltip
+                  />
+                  <el-table-column
+                    align="center"
+                    label="原文件名"
+                    prop="fileName"
+                    min-width="160"
+                    show-overflow-tooltip
+                  />
+                  <el-table-column
+                    align="center"
+                    label="缩略图"
+                    prop="fileUrl"
+                    min-width="160"
+                    show-overflow-tooltip
+                  >
+                    <template slot-scope="scope">
+                      <el-image
+                        v-if="checkFileType(scope.row.fileUrl) == 'image'"
+                        ref="img"
+                        :src="imageURL + scope.row.fileUrl"
+                        style="width: 120px; height: 120px"
+                        fit="cover"
+                        :preview-src-list="[imageURL + scope.row.fileUrl]"
+                      />
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'word'"
+                        class="file"
+                        src="@/assets/common/word.png"
+                      >
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'excel'"
+                        class="file"
+                        src="@/assets/common/excel.png"
+                      >
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'ppt'"
+                        class="file"
+                        src="@/assets/common/ppt.png"
+                      >
+
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'pdf'"
+                        class="file"
+                        style="cursor: pointer;"
+                        src="@/assets/common/pdf.png"
+                        @click="openPdf(scope.row.fileUrl)"
+                      >
+
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'file'"
+                        class="file aaa"
+                        src="@/assets/common/zip.jpeg"
+                      >
+                    </template>
+                  </el-table-column>
+                  <el-table-column
+                    align="center"
+                    label="下载文件名称"
+                    prop="fileName"
+                    min-width="160"
+                    show-overflow-tooltip
+                  >
+                    <template slot-scope="scope">
+                      {{ "资料_" + scope.row.fileName }}
+                    </template>
+                  </el-table-column>
+                  <el-table-column
+                    align="center"
+                    label="操作"
+                    min-width="160"
+                    show-overflow-tooltip
+                  >
+                    <template slot-scope="scope">
+                      <el-button
+                        type="text"
+                        class="textColor"
+                        @click="downLoadFn(scope.row.fileUrl,scope.row.fileName)"
+                      >下载</el-button>
+                      <el-popconfirm
+                        style="margin-left: 10px"
+                        title="这是一段内容确定删除吗?"
+                        @onConfirm="delFile(scope.$index)"
+                      >
+                        <el-button type="text" slot="reference">删除</el-button>
+                      </el-popconfirm>
+
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </div>
+            </div>
+          </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
             <el-form-item label="申请人" prop="submitBy">
               <el-input
@@ -279,6 +390,9 @@
 import { applyDeposit, geDetail } from '@/api/engin_deposit.js'
 
 import imageUpload from '@/components/Common/image-upload.vue'
+import { downloadFiles, downloadPdf } from '@/utils/util'
+
+import { getFileUrl } from '@/api/common'
 
 export default {
   components: {
@@ -286,6 +400,7 @@ export default {
   },
   data() {
     return {
+      isDis: true,
       listLoading: false,
       baseURL: process.env.VUE_APP_BASE_API,
       fileList: [],
@@ -314,7 +429,17 @@ export default {
         this.$errorMsg('请选择安装时间')
         return
       }
-      this.fileList.forEach(el => {
+      this.fileList.forEach((el) => {
+         console.log(this.details.dataList.length)
+        if (this.details.dataList.length){
+          this.details.dataList.forEach((i,e)=>{
+            console.log(i.fileName==el.name)
+            if (el.name === i.fileName){
+              this.details.dataList.splice(e,1)
+            }
+          })
+        }
+
         this.details.dataList.push({
           dataDescribe: el.name,
           enginOrderNo: this.details.refProjectNo,
@@ -329,14 +454,65 @@ export default {
         this.$parent.getList()
       })
     },
+    delFile(index){
+      this.details.dataList.splice(index,1)
+      this.$successMsg('删除成功')
+    },
     handleReset() {
       this.$refs.form.resetFields()
-    }
+    },
+    // 批量下载
+    async batchDownloadFn() {
+      downloadFiles('/deposit-manage/downZip', { parentId: this.$parent.depositManageId })
+    },
+    // 下载
+    downLoadFn(v, fileName) {
+      if (this.checkFileType(v) === 'pdf') {
+        downloadPdf(this.$imageUrl + v, fileName)
+        return
+      }
+      getFileUrl({ key: v }).then((res) => {
+        window.open(res.data)
+      })
+    },
+    openPdf(pdfUrl) {
+      window.open(this.$imageUrl + pdfUrl)
+    },
+    // 检查文件类型
+    checkFileType(url) {
+      if (!url) return ''
+      const fileSuffix = url.substring(url.lastIndexOf('.') + 1)
+
+      if (['jpg', 'jpeg', 'png'].includes(fileSuffix)) {
+        return 'image'
+      } else if (['doc', 'docx', 'dot', 'wps', 'wpt'].includes(fileSuffix)) {
+        return 'word'
+      } else if (['xls', 'xlsx', 'xlt', 'et', 'ett'].includes(fileSuffix)) {
+        return 'excel'
+      } else if (
+        ['ppt', 'pptx', 'dps', 'dpt', 'pot', 'pps'].includes(fileSuffix)
+      ) {
+        return 'ppt'
+      } else if (['pdf'].includes(fileSuffix)) {
+        return 'pdf'
+      } else if (['zip', 'rar', 'gz', 'apk'].includes(fileSuffix)) {
+        return 'file'
+      } else {
+        return ''
+      }
+    },
   }
 }
 </script>
 
 <style lang="scss" scoped>
+.aaa {
+  height: 64px;
+  width: 64px;
+}
+.gdzl {
+  display: inline-block;
+}
 ::v-deep .textareaStyle {
   .el-textarea__inner {
     resize: none;

+ 3 - 3
src/views/engin_deposit/components/deposit_list-detail.vue

@@ -220,7 +220,7 @@
       <el-divider />
 
       <!-- 列表 -->
-      <div class="mymain-container">
+      <div class="mymain-container" >
         <div class="table">
           <el-table
             v-loading="listLoading"
@@ -332,11 +332,11 @@
         <el-row :gutter="0">
           <el-col :xs="12" :sm="12" :lg="12" class="item">
             <div class="label">申请人</div>
-            <div class="value">{{ details.submitName }}</div>
+            <div class="value">{{ details.createBy }}</div>
           </el-col>
           <el-col :xs="12" :sm="12" :lg="12" class="item">
             <div class="label">申请日期</div>
-            <div class="value">{{ details.submitTime }}</div>
+            <div class="value">{{ details.createTime }}</div>
           </el-col>
           <el-col :xs="24" :sm="24" :lg="24" class="item">
             <div class="label">申请退押金</div>

+ 58 - 274
src/views/engin_deposit/components/refund_list-detail.vue

@@ -30,7 +30,7 @@
         <el-col :xs="12" :sm="24" :lg="8" class="item">
           <div class="label">行业类别</div>
           <div class="value">
-            {{ detailList.refPromiseStatus }}
+            {{ detailList.refTradeCategory }}
           </div>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="8" class="item">
@@ -113,25 +113,20 @@
           <div class="value">{{ detailList.customerNumber }}</div>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="8" class="item">
-          <div class="label">安装时间</div>
-          <div class="value">
-            <el-date-picker
-              prefix-icon="''"
-              placeholder="请选择安装时间"
-              :disabled="title == '详情'"
-              class="selectStyle"
-              v-model="detailList.installDate"
-              type="datetime"
-              default-time="00:00:00"
-              value-format="yyyy-MM-dd HH:mm:ss"
-            >
-            </el-date-picker>
-          </div>
+          <div class="label">押金总额</div>
+          <div class="value">{{ detailList.depositAmount }}</div>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="16" class="item">
           <div class="label">安装地址</div>
           <div class="value">{{ detailList.refInstallAddress }}</div>
         </el-col>
+        <el-col :xs="24" :sm="24" :lg="8" class="item">
+          <div class="label">安装时间</div>
+          <div class="value">
+            <el-date-picker prefix-icon="''" placeholder="请选择安装时间" :disabled="title == '详情'" class="selectStyle" v-model="detailList.installDate" type="datetime" default-time="00:00:00" value-format="yyyy-MM-dd HH:mm:ss">
+            </el-date-picker>
+          </div>
+        </el-col>
         <!-- <el-col :xs="24" :sm="24" :lg="8" class="item">
           <div class="label">工程订单号</div>
           <div class="value">{{ detailList.customerName }}</div>
@@ -189,122 +184,36 @@
     <!-- 列表 -->
     <div class="mymain-container">
       <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="detailList.items"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-          show-summary
-          :summary-method="$getSummaries"
-        >
-          <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="right"
-            label="单价"
-            prop="price"
-            min-width="160"
-            show-overflow-tooltip
-          >
+        <el-table v-loading="listLoading" :data="detailList.items" element-loading-text="Loading" border fit highlight-current-row stripe show-summary :summary-method="$getSummaries">
+          <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="right" label="单价" prop="price" min-width="160" show-overflow-tooltip>
             <template slot-scope="scope">
               {{ scope.row.price | numToFixed }}
             </template>
           </el-table-column>
-          <el-table-column
-            align="right"
-            label="数量"
-            prop="qty"
-            min-width="160"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="right"
-            label="金额"
-            prop="totalAmount"
-            min-width="160"
-            show-overflow-tooltip
-          >
+          <el-table-column align="right" label="数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="right" label="金额" prop="totalAmount" min-width="160" show-overflow-tooltip>
             <template slot-scope="scope">
               {{ scope.row.totalAmount | numToFixed }}
             </template>
           </el-table-column>
-          <el-table-column
-            align="right"
-            label="发货数量"
-            prop="hasSendQty"
-            min-width="160"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="right"
-            label="上传资料"
-            prop="dataQty"
-            min-width="160"
-            show-overflow-tooltip
-            v-if="detailList.examineStatus !== 'WAIT'"
-          >
+          <el-table-column align="right" label="发货数量" prop="hasSendQty" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="right" label="上传资料" prop="dataQty" min-width="160" show-overflow-tooltip v-if="detailList.examineStatus !== 'WAIT'">
           </el-table-column>
-          <el-table-column
-            align="right"
-            label="上传资料"
-            prop="dataQty"
-            min-width="160"
-            show-overflow-tooltip
-            v-if="detailList.examineStatus == 'WAIT'"
-          >
+          <el-table-column align="right" label="上传资料" prop="dataQty" min-width="160" show-overflow-tooltip v-if="detailList.examineStatus == 'WAIT'">
             <template slot-scope="scope">
               <el-input v-model="scope.row.dataQty"></el-input>
             </template>
           </el-table-column>
-          <el-table-column
-            align="right"
-            label="收差金额"
-            prop="diffAmount"
-            min-width="160"
-            show-overflow-tooltip
-            v-if="detailList.examineStatus !== 'WAIT'"
-          >
+          <el-table-column align="right" label="收差金额" prop="diffAmount" min-width="160" show-overflow-tooltip v-if="detailList.examineStatus !== 'WAIT'">
             <template slot-scope="scope">
               {{ scope.row.diffAmount | numToFixed }}
             </template>
           </el-table-column>
-          <el-table-column
-            align="right"
-            label="收差金额"
-            prop="diffAmount"
-            min-width="160"
-            show-overflow-tooltip
-            v-if="detailList.examineStatus == 'WAIT'"
-          >
+          <el-table-column align="right" label="收差金额" prop="diffAmount" min-width="160" show-overflow-tooltip v-if="detailList.examineStatus == 'WAIT'">
             <template slot-scope="scope">
               <el-input v-model="scope.row.diffAmount"></el-input>
             </template>
@@ -314,111 +223,35 @@
     </div>
 
     <h3 class="gdzl">工程资料</h3>
-    <el-button
-      :disabled="isDis"
-      class="batchDownload"
-      type="primary"
-      size="small"
-      @click="batchDownloadFn"
-      >批量下载</el-button
-    >
+    <el-button :disabled="isDis" class="batchDownload" type="primary" size="small" @click="batchDownloadFn">批量下载</el-button>
 
     <el-divider></el-divider>
 
     <!-- 列表 -->
     <div class="mymain-container">
       <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="detailList.dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column
-            align="center"
-            label="资料描述"
-            prop="dataDescribe"
-            min-width="160"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="center"
-            label="原文件名"
-            prop="fileName"
-            min-width="160"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="center"
-            label="缩略图"
-            prop="fileUrl"
-            min-width="160"
-            show-overflow-tooltip
-          >
+        <el-table v-loading="listLoading" :data="detailList.dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
+          <el-table-column align="center" label="资料描述" prop="dataDescribe" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="原文件名" prop="fileName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="缩略图" prop="fileUrl" min-width="160" show-overflow-tooltip>
             <template slot-scope="scope">
-              <el-image
-                ref="img"
-                :src="imageURL + scope.row.fileUrl"
-                v-if="checkFileType(scope.row.fileUrl) == 'image'"
-                style="width: 120px; height: 120px"
-                fit="cover"
-                :preview-src-list="[imageURL + scope.row.fileUrl]"
-              >
+              <el-image ref="img" :src="imageURL + scope.row.fileUrl" v-if="checkFileType(scope.row.fileUrl) == 'image'" style="width: 120px; height: 120px" fit="cover" :preview-src-list="[imageURL + scope.row.fileUrl]">
               </el-image>
-              <img
-                class="file"
-                src="@/assets/common/word.png"
-                v-if="checkFileType(scope.row.fileUrl) == 'word'"
-              />
-              <img
-                class="file"
-                src="@/assets/common/excel.png"
-                v-if="checkFileType(scope.row.fileUrl) == 'excel'"
-              />
-              <img
-                class="file"
-                src="@/assets/common/ppt.png"
-                v-if="checkFileType(scope.row.fileUrl) == 'ppt'"
-              />
-              <img
-                class="file"
-                src="@/assets/common/pdf.png"
-                v-if="checkFileType(scope.row.fileUrl) == 'pdf'"
-              />
-              <img
-                v-if="checkFileType(scope.row.fileUrl) == 'file'"
-                class="file aaa"
-                src="@/assets/common/zip.jpeg"
-              />
+              <img class="file" src="@/assets/common/word.png" v-if="checkFileType(scope.row.fileUrl) == 'word'" />
+              <img class="file" src="@/assets/common/excel.png" v-if="checkFileType(scope.row.fileUrl) == 'excel'" />
+              <img class="file" src="@/assets/common/ppt.png" v-if="checkFileType(scope.row.fileUrl) == 'ppt'" />
+              <img class="file" src="@/assets/common/pdf.png" v-if="checkFileType(scope.row.fileUrl) == 'pdf'" />
+              <img v-if="checkFileType(scope.row.fileUrl) == 'file'" class="file aaa" src="@/assets/common/zip.jpeg" />
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            label="下载文件名称"
-            prop="fileName"
-            min-width="160"
-            show-overflow-tooltip
-          >
+          <el-table-column align="center" label="下载文件名称" prop="fileName" min-width="160" show-overflow-tooltip>
             <template slot-scope="scope">
               {{ "资料_" + scope.row.fileName }}
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            label="操作"
-            min-width="160"
-            show-overflow-tooltip
-          >
+          <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
             <template slot-scope="scope">
-              <el-button
-                type="text"
-                class="textColor"
-                @click="downLoadFn(scope.row.fileUrl)"
-                >下载</el-button
-              >
+              <el-button type="text" class="textColor" @click="downLoadFn(scope.row.fileUrl)">下载</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -441,22 +274,18 @@
         </el-col>
       </el-row>
     </div>
-    <h3
-      v-if="
+    <h3 v-if="
         detailList.examineStatus == 'WAIT' ||
         detailList.examineStatus == 'FAIL' ||
         detailList.examineStatus == 'OK'
-      "
-    >
+      ">
       审批
     </h3>
-    <el-divider
-      v-if="
+    <el-divider v-if="
         detailList.examineStatus == 'WAIT' ||
         detailList.examineStatus == 'FAIL' ||
         detailList.examineStatus == 'OK'
-      "
-    ></el-divider>
+      "></el-divider>
     <div v-if="detailList.examineStatus == 'WAIT'" class="diy-table-1">
       <el-row :gutter="0">
         <el-col :xs="12" :sm="12" :lg="12" class="item">
@@ -466,15 +295,7 @@
         <el-col :xs="12" :sm="12" :lg="12" class="item dateS">
           <div class="label">验收日期</div>
           <div class="value">
-            <el-date-picker
-              disabled
-              prefix-icon="''"
-              class="selectStyle"
-              type="datetime"
-              placeholder="系统自动生成"
-              default-time="00:00:00"
-              value-format="yyyy-MM-dd HH:mm:ss"
-            >
+            <el-date-picker disabled prefix-icon="''" class="selectStyle" type="datetime" placeholder="系统自动生成" default-time="00:00:00" value-format="yyyy-MM-dd HH:mm:ss">
             </el-date-picker>
           </div>
         </el-col>
@@ -496,12 +317,9 @@
       </el-row>
     </div>
 
-    <div
-      v-if="
+    <div v-if="
         detailList.examineStatus == 'OK' || detailList.examineStatus == 'FAIL'
-      "
-      class="diy-table-1"
-    >
+      " class="diy-table-1">
       <el-row :gutter="0">
         <el-col :xs="12" :sm="12" :lg="12" class="item">
           <div class="label">验收人</div>
@@ -510,16 +328,7 @@
         <el-col :xs="12" :sm="12" :lg="12" class="item dateS">
           <div class="label">验收日期</div>
           <div class="value">
-            <el-date-picker
-              disabled
-              prefix-icon="''"
-              class="selectStyle"
-              v-model="detailList.checkDate"
-              type="datetime"
-              placeholder=""
-              default-time="00:00:00"
-              value-format="yyyy-MM-dd HH:mm:ss"
-            >
+            <el-date-picker disabled prefix-icon="''" class="selectStyle" v-model="detailList.checkDate" type="datetime" placeholder="" default-time="00:00:00" value-format="yyyy-MM-dd HH:mm:ss">
             </el-date-picker>
           </div>
         </el-col>
@@ -535,20 +344,13 @@
         <el-col :xs="12" :sm="24" :lg="24" class="item dateS">
           <div class="label">验收说明</div>
           <div class="value">
-            <el-input
-              disabled
-              v-model="detailList.checkNote"
-              placeholder="请输入内容"
-            ></el-input>
+            <el-input disabled v-model="detailList.checkNote" placeholder="请输入内容"></el-input>
           </div>
         </el-col>
         <el-col :xs="12" :sm="24" :lg="24" class="item dateS">
           <div class="label">审批通过后备注</div>
           <div class="value">
-            <el-input
-              v-model="detailList.examineAfterRemark"
-              placeholder="请输入内容"
-            ></el-input>
+            <el-input v-model="detailList.examineAfterRemark" placeholder="请输入内容"></el-input>
           </div>
         </el-col>
       </el-row>
@@ -558,27 +360,9 @@
     <!-- detailList.examineStatus != 'OK' || detailList.examineStatus != 'FAIL' -->
     <div class="btn-group clearfix">
       <div class="fl">
-        <el-button
-          v-if="detailList.examineStatus == 'WAIT'"
-          type="primary"
-          size="small"
-          @click="adoptFn"
-          >审批通过</el-button
-        >
-        <el-button
-          v-if="detailList.examineStatus == 'WAIT'"
-          type="primary"
-          size="small"
-          @click="rejectFn"
-          >审批驳回</el-button
-        >
-        <el-button
-          v-if="detailList.examineStatus == 'OK'"
-          type="primary"
-          size="small"
-          @click="saveFn"
-          >保存</el-button
-        >
+        <el-button v-if="detailList.examineStatus == 'WAIT'" type="primary" size="small" @click="adoptFn">审批通过</el-button>
+        <el-button v-if="detailList.examineStatus == 'WAIT'" type="primary" size="small" @click="rejectFn">审批驳回</el-button>
+        <el-button v-if="detailList.examineStatus == 'OK'" type="primary" size="small" @click="saveFn">保存</el-button>
       </div>
     </div>
   </div>
@@ -677,10 +461,10 @@ export default {
         type: "warning",
       })
         .then(() => {
-          // if (!this.detailList.installDate) {
-          //   this.$message.error("请选择安装时间");
-          //   return;
-          // }
+          if (!this.detailList.installDate) {
+            this.$message.error("请选择安装时间");
+            return;
+          }
           let data = {
             ...this.detailList,
             checkBy: this.checkBy,
@@ -738,10 +522,10 @@ export default {
         type: "warning",
       })
         .then(() => {
-          // if (!this.detailList.installDate) {
-          //   this.$message.error("请选择安装时间");
-          //   return;
-          // }
+          if (!this.detailList.installDate) {
+            this.$message.error("请选择安装时间");
+            return;
+          }
           let data = {
             ...this.detailList,
             checkBy: this.checkBy,

+ 1 - 1
src/views/engin_deposit/deposit_list.vue

@@ -136,7 +136,7 @@
             <el-table-column
               align="center"
               label="经销商编码"
-              prop="customerId"
+              prop="customerNumber"
               min-width="160"
               show-overflow-tooltip
             />

+ 24 - 131
src/views/engin_deposit/refund_list.vue

@@ -11,28 +11,16 @@
       <br /><br />
       <!-- 筛选条件 -->
       <div>
-        <el-form
-          ref="searchForm"
-          :model="searchForm"
-          label-width="160px"
-          size="small"
-          label-position="left"
-        >
+        <el-form ref="searchForm" :model="searchForm" label-width="160px" size="small" label-position="left">
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="工程登录(信息)编号" prop="refEnginRecordNo">
-                <el-input
-                  v-model="searchForm.refEnginRecordNo"
-                  placeholder="请输入"
-                ></el-input>
+                <el-input v-model="searchForm.refEnginRecordNo" placeholder="请输入"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="经销商编码" prop="customerKeyword">
-                <el-input
-                  v-model="searchForm.customerKeyword"
-                  placeholder="请输入"
-                ></el-input>
+                <el-input v-model="searchForm.customerKeyword" placeholder="请输入"></el-input>
               </el-form-item>
             </el-col>
             <!-- <el-col :xs="24" :sm="12" :lg="6">
@@ -45,10 +33,7 @@
             </el-col> -->
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="工程名称" prop="refProjectName">
-                <el-input
-                  v-model="searchForm.refProjectName"
-                  placeholder="请输入"
-                ></el-input>
+                <el-input v-model="searchForm.refProjectName" placeholder="请输入"></el-input>
               </el-form-item>
             </el-col>
             <!-- <el-col :xs="24" :sm="12" :lg="6">
@@ -91,9 +76,7 @@
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="" class="fr">
                 <el-button size="small" @click="resetFn">清空</el-button>
-                <el-button size="small" type="primary" @click="searchFn"
-                  >搜索</el-button
-                >
+                <el-button size="small" type="primary" @click="searchFn">搜索</el-button>
               </el-form-item>
             </el-col>
           </el-row>
@@ -102,26 +85,14 @@
       <!-- 按钮 -->
       <div class="btn-group clearfix">
         <div class="fl">
-          <el-radio-group
-            @change="changeEnginOrderTypeFn"
-            v-model="enginOrderType"
-            size=""
-          >
+          <el-radio-group @change="changeEnginOrderTypeFn" v-model="enginOrderType" size="">
             <el-radio-button label="HOME">家用工程</el-radio-button>
             <el-radio-button label="TRADE">商用工程</el-radio-button>
           </el-radio-group>
         </div>
         <div class="fr">
-          <el-button type="primary" size="small" @click="exportFn"
-            >导出</el-button
-          >
-          <el-upload
-            class="import-btn"
-            action=""
-            :http-request="handleImport"
-            :file-list="importFileList"
-            :show-file-list="false"
-          >
+          <el-button type="primary" size="small" @click="exportFn">导出</el-button>
+          <el-upload class="import-btn" action="" :http-request="handleImport" :file-list="importFileList" :show-file-list="false">
             <el-button type="primary" size="small">导入</el-button>
           </el-upload>
         </div>
@@ -129,124 +100,46 @@
       <!-- 列表 -->
       <div class="mymain-container">
         <div class="table">
-          <el-table
-            v-loading="listLoading"
-            :data="dataList"
-            element-loading-text="Loading"
-            border
-            fit
-            highlight-current-row
-            stripe
-            @selection-change="handleSelectionChange"
-            show-summary
-            :summary-method="$getSummaries"
-          >
+          <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe @selection-change="handleSelectionChange" show-summary :summary-method="$getSummaries">
             >
             <el-table-column type="selection" align="center" width="55">
             </el-table-column>
-            <el-table-column
-              align="center"
-              label="工程登录编码"
-              prop="refEnginRecordNo"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="center"
-              label="工程名称"
-              prop="refProjectName"
-              min-width="160"
-              show-overflow-tooltip
-            ></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="right"
-              label="押金金额"
-              prop="depositAmount"
-              min-width="160"
-              show-overflow-tooltip
-            >
+            <el-table-column align="center" label="工程登录编码" prop="refEnginRecordNo" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="工程名称" prop="refProjectName" min-width="160" show-overflow-tooltip></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="right" label="押金金额" prop="depositAmount" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">
                 {{ scope.row.depositAmount | numToFixed }}
               </template>
             </el-table-column>
-            <el-table-column
-              align="center"
-              label="状态"
-              prop=""
-              min-width="160"
-              show-overflow-tooltip
-            >
+            <el-table-column align="center" label="状态" prop="" min-width="160" show-overflow-tooltip>
               <template v-slot="{ row }">
                 <el-tag v-show="row.examineStatus == 'SAVE'">保存</el-tag>
-                <el-tag v-show="row.examineStatus == 'WAIT'" type="warning"
-                  >待审核</el-tag
-                >
-                <el-tag v-show="row.examineStatus == 'OK'" type="success"
-                  >通过</el-tag
-                >
-                <el-tag v-show="row.examineStatus == 'FAIL'" type="danger"
-                  >不通过</el-tag
-                >
+                <el-tag v-show="row.examineStatus == 'WAIT'" type="warning">待审核</el-tag>
+                <el-tag v-show="row.examineStatus == 'OK'" type="success">通过</el-tag>
+                <el-tag v-show="row.examineStatus == 'FAIL'" type="danger">不通过</el-tag>
               </template>
             </el-table-column>
-            <el-table-column
-              align="center"
-              label="操作"
-              min-width="160"
-              show-overflow-tooltip
-            >
+            <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">
-                <el-button
-                  type="text"
-                  class="textColor"
-                  v-if="
+                <el-button type="text" class="textColor" v-if="
                     scope.row.examineStatus == 'WAIT' &&
                     $checkBtnRole('examine', $route.meta.roles)
-                  "
-                  @click="examineFn(scope.row.depositManageId)"
-                  >审批</el-button
-                >
+                  " @click="examineFn(scope.row.depositManageId)">审批</el-button>
 
-                <el-button
-                  type="text"
-                  class="textColor"
-                  v-if="
+                <el-button type="text" class="textColor" v-if="
                     scope.row.examineStatus == 'SAVE' ||
                     scope.row.examineStatus == 'OK' ||
                     scope.row.examineStatus == 'FAIL'
-                  "
-                  @click="infoFn(scope.row.depositManageId)"
-                  >详情</el-button
-                >
+                  " @click="infoFn(scope.row.depositManageId)">详情</el-button>
               </template>
             </el-table-column>
           </el-table>
         </div>
         <!-- 分页 -->
         <div class="fr">
-          <el-pagination
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 50]"
-            :page-size="pageSize"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-          >
+          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 50]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="listTotal">
           </el-pagination>
         </div>
       </div>

+ 389 - 0
src/views/setting/sub_account.vue

@@ -0,0 +1,389 @@
+<template>
+  <div class="app-container">
+    <div class="setting_title">子账号</div>
+    <el-divider />
+
+    <div class="mymain-container">
+      <div class="btn-group clearfix">
+        <div class="fl">
+          <el-button v-if="checkBtnRole('add')" size="small" type="primary" icon="el-icon-plus" @click="addOrEdit('add')">新增账号</el-button>
+        </div>
+        <!--        <div class="fr">-->
+        <!--          <ImportButton :im-url="'stock/importToll'" @importSuccess="getList" />-->
+        <!--        </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="序号" type="index" width="50" />
+          <el-table-column align="center" label="账号" prop="userName" />
+          <el-table-column align="center" label="创建时间" prop="createTime" />
+          <el-table-column align="center" label="最后登录时间" prop="lastLoginTime" />
+          <el-table-column align="center" label="主帐号" prop="isMaster">
+            <template slot-scope="scope">
+
+              <el-tag v-if="scope.row.isMaster" type="success">是</el-tag>
+              <el-tag v-else type="danger">否</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="操作" width="180">
+            <template slot-scope="scope">
+              <el-button type="text" @click="addOrEdit('edit',scope.row)">修改</el-button>
+              <el-button v-if="checkBtnRole('detail')" type="text" @click="setMenuRole(scope.row.adminUserId,'role')">设置权限</el-button>
+
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <div class="pagination clearfix">
+        <div class="fr">
+          <el-pagination
+            :current-page="currentPage"
+            :page-sizes="[10, 20, 30, 50]"
+            :page-size="10"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="listTotal"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+      </div>
+    </div>
+
+    <!-- 设置权限 -->
+    <el-dialog title="设置权限" :visible.sync="roleFormVisible" :show-close="false" width="40%" :close-on-click-modal="false" custom-class="tree-dialog" top="50px">
+      <el-tree
+        ref="tree"
+        :data="menuRoleList"
+        show-checkbox
+        :check-strictly="true"
+        :default-expand-all="true"
+        :expand-on-click-node="false"
+        node-key="moduleId"
+        highlight-current
+        :props="defaultProps"
+      >
+        <span slot-scope="{ node, data }" class="custom-tree-node">
+          <span>{{ node.label }}</span>
+          <span v-if="data.type < 3">
+            <el-button type="text" size="mini" @click="() => quickSelection(data)">一键全选</el-button>
+            <el-button type="text" size="mini" style="color: #f56c6c" @click="() => quickCancel(data)">一键取消</el-button>
+          </span>
+        </span>
+      </el-tree>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="roleFormVisible = false">{{ editId != 1 ? '取 消':'关 闭' }}</el-button>
+        <el-button v-if="editId != 1" type="primary" @click="submitRoleForm('role')">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      width="45%"
+      :title="'add'===addFormType?'新增':'修改'"
+      @close="cancelAddForm"
+    >
+      <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
+        <el-form-item v-if="addFormType!=='edit'" label="账号" prop="account">
+          <el-input v-model="ruleForm.account" type="text" autocomplete="off" />
+        </el-form-item>
+        <el-form-item label="密码" prop="password">
+          <el-input v-model="ruleForm.password" type="password" autocomplete="off" />
+        </el-form-item>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <!--        <el-button type="primary" style="float: left;" @click="setMenuRole">设置权限</el-button>-->
+        <el-button @click="cancelAddForm">取 消</el-button>
+        <el-button type="primary" @click="submitAddForm">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import {
+  addSubAccount,
+  deleteRole,
+  editRole,
+  editSubAccount,
+  getAccountList,
+  getMenuList,
+  getRoleChecked,
+  setMenuRole
+} from '@/api/setting'
+
+export default {
+  data() {
+    return {
+      imageURL: this.$imageUrl,
+      dataList: null, // 列表数据
+      listLoading: true, // 列表加载loading
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+
+      editId: null,
+      addFormType: 'add',
+      addFormVisible: false,
+      addForm: {
+        name: '' // 角色名
+      },
+      addFormRules: {
+        name: [
+          { required: true, message: '请输入角色名', trigger: 'blur' }
+        ]
+      },
+
+      roleFormVisible: false,
+
+      menuRoleList: [],
+      defaultProps: {
+        children: 'children',
+        label: 'moduleName'
+      },
+      dialogVisible: false,
+      ruleForm: {
+        account: '',
+        password: ''
+      },
+      rules: {
+        account: [
+          { required: true, message: '请输入账号', trigger: 'blur' }
+        ],
+        password: [
+          { required: true, message: '请输入密码', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'userid',
+      'name',
+      'customerId'
+    ])
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    // 查询按钮权限
+    checkBtnRole(value) {
+      // let btnRole = this.$route.meta.roles;
+      // if(!btnRole) {return true}
+      // let index = btnRole.indexOf(value);
+      // return index >= 0 ? true : false;
+      return true
+    },
+
+    getList() {
+      this.listLoading = true
+      const params = {
+        pageNum: this.currentPage,
+        pageSize: this.pageSize,
+        customerId: this.customerId
+      }
+      getAccountList(params).then(res => {
+        this.dataList = res.data.records
+        this.listTotal = res.data.total
+        this.listLoading = false
+      })
+    },
+
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val
+      this.currentPage = 1
+      this.getList()
+    },
+
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val
+      this.getList()
+    },
+
+    // 操作 - 删除
+    handleDelete(id) {
+      deleteRole({ adminRoleId: id }).then(res => {
+        this.getList()
+        this.$successMsg()
+      })
+    },
+
+    // 新增编辑
+    addOrEdit(type, row) {
+      this.addFormType = type
+      this.dialogVisible = true
+      if (type === 'edit') {
+        this.$nextTick(() => {
+          this.ruleForm = {
+            account: row.userName,
+            password: '',
+            adminUserId: row.adminUserId
+          }
+        })
+      }
+    },
+
+    // 取消 新增编辑
+    cancelAddForm() {
+      this.dialogVisible = false
+      this.$nextTick(() => {
+        this.$refs.tree.setCheckedKeys([])
+      })
+      this.$refs.ruleForm.resetFields()
+    },
+
+    // 提交 新增编辑
+    submitAddForm() {
+      this.$refs.ruleForm.validate((valid) => {
+        const params = {
+          userName: this.ruleForm.account,
+          password: this.ruleForm.password,
+          adminModuleIds: ''
+          // adminModuleIds:this.$refs.tree ? this.$refs.tree.getCheckedKeys().join(',') :
+        }
+        if (valid) {
+          if (this.addFormType === 'edit') {
+            params.adminUserId = this.ruleForm.adminUserId
+            editSubAccount(params).then(res => {
+              this.cancelAddForm()
+              this.getList()
+              this.$successMsg('编辑成功')
+            })
+          } else {
+            addSubAccount(params).then(res => {
+              this.cancelAddForm()
+              this.getList()
+              this.$successMsg('新增成功')
+            })
+          }
+        }
+      })
+    },
+
+    // 设置权限 - 获取列表
+    setMenuRole(id, type) {
+      this.roleFormVisible = true
+      this.editId = id
+      getMenuList({ adminUserId: this.userid }).then(res => {
+        this.menuRoleList = res.data
+      })
+      getRoleChecked({ adminUserId: id }).then(res => {
+        this.$refs.tree.setCheckedKeys(res.data)
+      })
+    },
+
+    // 设置权限 - 提交数据
+    submitRoleForm(type) {
+      const params = {
+        adminModuleIds: this.$refs.tree.getCheckedKeys().join(','),
+        adminRoleId: this.editId
+      }
+      setMenuRole(params).then(res => {
+        this.getList()
+        this.$successMsg()
+      })
+
+      this.roleFormVisible = false
+    },
+
+    // 一键全选
+    quickSelection(data) {
+      const nowChecked = this.$refs.tree.getCheckedKeys()
+      const thisId = data.moduleId
+      let childId = []
+      if (data.children.length) {
+        childId = this.familyTree(data.children)
+      }
+
+      const setChecked = nowChecked.concat([thisId]).concat(childId)
+
+      this.$refs.tree.setCheckedKeys(setChecked)
+    },
+
+    // 一键取消
+    quickCancel(data) {
+      const nowChecked = this.$refs.tree.getCheckedKeys()
+      const thisId = data.moduleId
+      let childId = []
+      if (data.children.length) {
+        childId = this.familyTree(data.children)
+      }
+
+      const setChecked = nowChecked
+      if (setChecked.indexOf(thisId) >= 0) {
+        setChecked.splice(setChecked.indexOf(thisId), 1)
+      }
+
+      if (childId.length) {
+        for (var i = 0; i < childId.length; i++) {
+          if (setChecked.indexOf(childId[i]) >= 0) {
+            setChecked.splice(setChecked.indexOf(childId[i]), 1)
+          }
+        }
+      }
+
+      this.$refs.tree.setCheckedKeys(setChecked)
+    },
+
+    // 递归子id
+    familyTree(arr) {
+      var temp = []
+      var forFn = function(list) {
+        for (var i = 0; i < list.length; i++) {
+          var item = list[i]
+          if (item.children) {
+            temp.push(item.moduleId)
+            forFn(item.children)
+          }
+        }
+      }
+      forFn(arr)
+      return temp
+    },
+
+    changeStatus(id, status) {
+      editRole({
+        adminRoleId: id,
+        visitSysStatus: status
+      }).then(res => {
+        this.getList()
+        this.$successMsg('编辑成功')
+      })
+    }
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .tree-dialog {
+  .el-dialog__body {
+    padding: 20px;
+    .el-tree {
+      max-height: calc(100vh - 140px - 54px - 70px);
+      overflow-y: scroll;
+      padding: 0 30px;
+      >.el-tree-node {
+        padding: 15px 0;
+        border: 1px dashed #ddd;
+        margin-bottom: 15px;
+        border-radius: 10px;
+      }
+    }
+  }
+}
+::v-deep .custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
+</style>

+ 82 - 14
src/views/supply/apply/apply_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div v-show="!isShowDetail && !isShowExamine && !isShowForm">
+    <div v-show="!isShowDetail && !isShowExamine && !isShowForm && !isShowReturnForm">
       <!-- 筛选条件 -->
       <div class="screen-container">
         <el-form ref="screenForm" :model="screenForm" label-width="100px" size="small" label-position="left">
@@ -56,8 +56,32 @@
                 <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
               </el-form-item>
             </el-col>
+            <el-col :xs="24" :sm="12" :lg="6">
+              <el-form-item label="业务员" prop="salesMan">
+                <el-select v-model="screenForm.salesMan" placeholder="选择业务员" size="small" clearable filterable style="width: 100%">
+                  <el-option
+                    v-for="item in salesmanList"
+                    :key="item.adminUserId"
+                    :label="item.nickName"
+                    :value="item.adminUserId">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :lg="6">
+              <el-form-item label="订单类型" prop="orderType">
+                <el-select v-model="screenForm.orderType" placeholder="请选择" clearable>
+                  <el-option
+                    v-for="item in orderTypeList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             
-            <el-col :xs="24" :sm="12" :lg="6" class="tr">
+            <el-col :xs="24" :sm="12" :lg="18" class="tr">
               <el-form-item label="">
                 <el-button size="small" @click="resetScreenForm">清空</el-button>
                 <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
@@ -71,6 +95,7 @@
         <div class="btn-group clearfix">
           <div class="fl">
             <el-button size="small" type="primary" icon="el-icon-plus" @click="toForm()" v-if="$checkBtnRole('add', $route.meta.roles)">发货申请</el-button>
+            <el-button size="small" type="primary" icon="el-icon-plus" @click="toReturnForm()" v-if="$checkBtnRole('add', $route.meta.roles)">退货申请</el-button>
           </div>
           <div class="fr">
             <ExportButton :exUrl="'invoice/listExport'" :exParams="exParams" />
@@ -87,7 +112,12 @@
             stripe
             show-summary
             :summary-method="$getSummaries">
-            <el-table-column align="center" label="发货申请单" prop="id" min-width="180" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单类型" prop="type" min-width="100" show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{scope.row.type | orderTypeFilter}}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="发货申请单" prop="id" min-width="140" 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="correspondName" min-width="120" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="订单号" prop="mainOrderId" min-width="140" show-overflow-tooltip></el-table-column>
@@ -151,7 +181,13 @@
                 <el-button 
                   type="text" 
                   @click="toForm(scope.row)" 
-                  v-if="$checkBtnRole('edit', $route.meta.roles) && (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL')">
+                  v-if="$checkBtnRole('edit', $route.meta.roles) && (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') && scope.row.type === 1">
+                  编辑
+                </el-button>
+                <el-button 
+                  type="text" 
+                  @click="toReturnForm(scope.row)" 
+                  v-if="$checkBtnRole('edit', $route.meta.roles) && (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') && scope.row.type === 2">
                   编辑
                 </el-button>
                 <el-button 
@@ -195,28 +231,36 @@
     <ApplyDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
     <ApplyExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
     <ApplyForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
+    <ApplyReturnForm :listItem="queryItem" v-if="isShowReturnForm" @backListFormDetail="backList" />
 
   </div>
 </template>
 
 <script>
 import { getApplyList, submitApply, deleteApply, abandonApply } from "@/api/supply/apply";
+import { getSalesmanList } from '@/api/common'
 import ApplyDetail from "@/views/supply/apply/components/apply_detail";
 import ApplyExamine from "@/views/supply/apply/components/apply_examine";
 import ApplyForm from "@/views/supply/apply/components/apply_form";
+import ApplyReturnForm from "@/views/supply/apply/components/apply_return_form";
 
 let that
 export default {
   components: {
     ApplyDetail,
     ApplyExamine,
-    ApplyForm
+    ApplyForm,
+    ApplyReturnForm
   },
   filters: {
     statusFilter(val) {
       let obj = that.statusList.find(o => o.value == val);
       return obj ? obj.label : ''
-    }
+    },
+    orderTypeFilter(val) {
+      let obj = that.orderTypeList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    },
   },
   data() {
     return {
@@ -226,6 +270,7 @@ export default {
       dataList: null, // 列表数据
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
+        status: '',
         orderNum: '',
         warehouse: '',
         jxsNum: '',
@@ -233,7 +278,8 @@ export default {
         date: '',
         chName: '',
         model: '',
-        status: '',
+        salesMan: '',
+        orderType: '',
       },
       statusList: [
         { label: '已保存', value: 'SAVE' },
@@ -242,11 +288,18 @@ export default {
         { label: '审核驳回', value: 'FAIL' },
         { label: '已关闭', value: 'CLOSE' },
       ],
+      orderTypeList: [
+        { label: '发货申请单', value: 1 },
+        { label: '退货申请单', value: 2 },
+        { label: '直调发货单', value: 3 },
+      ],
+      salesmanList: [],
 
       queryItem: {},
       isShowDetail: false,
       isShowExamine: false,
       isShowForm: false,
+      isShowReturnForm: false,
     }
   },
 
@@ -262,6 +315,8 @@ export default {
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
         examineStatus: this.screenForm.status,
+        serviceId: this.screenForm.salesMan,
+        type: this.screenForm.orderType,
       }
     },
   },
@@ -271,17 +326,21 @@ export default {
   },
 
   created() {
+    this.getSalesmanList();
     this.getList();
   },
 
   methods: {
-    // 查询按钮权限
-    checkBtnRole(value) {
-      // let btnRole = this.$route.meta.roles;
-      // if(!btnRole) {return true}
-      // let index = btnRole.indexOf(value);
-      // return index >= 0;
-      return true
+    // 获取业务员列表
+    getSalesmanList() {
+      getSalesmanList({
+        pageNum: 1,
+        pageSize: -1,
+        isCustomer: 0,
+        status: true,
+      }).then(res => {
+        this.salesmanList = res.data.records;
+      })
     },
 
     // 查询列表
@@ -300,6 +359,8 @@ export default {
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
         examineStatus: this.screenForm.status,
+        serviceId: this.screenForm.salesMan,
+        type: this.screenForm.orderType,
       };
       getApplyList(params).then((res) => {
         res.data.records.forEach(item => {
@@ -344,6 +405,12 @@ export default {
       this.isShowForm = true;
     },
 
+    // 进入表单
+    toReturnForm(item) {
+      this.queryItem = item;
+      this.isShowReturnForm = true;
+    },
+
     // 进入审批
     toExamine(item) {
       this.queryItem = item;
@@ -361,6 +428,7 @@ export default {
       this.isShowDetail = false;
       this.isShowExamine = false;
       this.isShowForm = false;
+      this.isShowReturnForm = false;
     },
 
     handleDelete(id) {

+ 13 - 9
src/views/supply/apply/components/apply_form.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="detail-container">
-    <el-page-header @back="goBack" :content="listItem ? '编辑':'新增'"></el-page-header>
+    <el-page-header @back="goBack" :content="listItem ? '编辑-发货申请':'新增-发货申请'"></el-page-header>
 
     <div class="main-title">
       <div class="title">发货申请单信息</div>
@@ -118,6 +118,13 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="type" label="存货类别">
+              <el-select v-model="screenForm.type" placeholder="选择存货类别" style="width: 100%" clearable :disabled="goodsList.length > 0">
+                <el-option v-for="item in categoryList" :key="item.name" :label="item.name" :value="item.name"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <!-- <el-col :xs="12" :sm="6" :lg="6">
             <el-form-item prop="type" label="产品大类">
               <el-select v-model="screenForm.type" placeholder="选择产品大类" style="width: 100%" :disabled="goodsList.length > 0 || tableSelection.length > 0">
@@ -131,13 +138,6 @@
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="6" :lg="6">
-            <el-form-item prop="type" label="存货类别">
-              <el-select v-model="screenForm.type" placeholder="选择存货类别" style="width: 100%">
-                <el-option v-for="item in categoryList" :key="item.name" :label="item.name" :value="item.name"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="12" :sm="6" :lg="6">
             <el-form-item label="规格型号" prop="model">
               <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
             </el-form-item>
@@ -153,8 +153,9 @@
 
       <div class="table">
         <el-table :data="tableGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe height="400">
-          <el-table-column align="center" label="订单号" prop="mainOrderId" min-width="200" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单号" prop="mainOrderId" min-width="140" 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="categoryName" 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="80" show-overflow-tooltip></el-table-column>
@@ -394,6 +395,9 @@ export default {
       if(!this.screenForm.warehouse) {
         return this.$errorMsg('请选择仓库');
       }
+      if(!this.screenForm.type) {
+        return this.$errorMsg('请选择存货类别');
+      }
       this.currentPage = 1;
       this.getGoodsList();
     },

+ 521 - 0
src/views/supply/apply/components/apply_return_form.vue

@@ -0,0 +1,521 @@
+<template>
+  <div class="detail-container">
+    <el-page-header @back="goBack" :content="listItem ? '编辑-退货申请':'新增-退货申请'"></el-page-header>
+
+    <div class="main-title">
+      <div class="title">退货申请单信息</div>
+    </div>
+
+    <div style="font-size: 12px; color: #333; margin-bottom: 20px;">注:退货申请时,库存数量为实时数量,请选择完成选择后及时保存提交,否则数量可能有变,被其他商家开单而导致库存不足。</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="系统自动生成" disabled></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"
+              disabled
+              type="date"
+              value-format="yyyy-MM-dd"
+              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="createMan">
+            <el-input v-model="mainForm.createMan" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="经销商编号" prop="jxsNum">
+            <el-input v-model="mainForm.jxsNum" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="16">
+          <el-form-item label="经销商名称" prop="jxsName">
+            <el-input v-model="mainForm.jxsName" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <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-col :xs="24" :sm="8" :lg="8">
+          <el-form-item label="附件" prop="fileUrl">
+            <fileUpload :fileList="fileList" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <div class="main-title">
+      <div class="title">货品信息</div>
+      <div>
+        <!-- <span style="font-size: 14px; margin-right: 10px">仓库</span>
+        <el-select v-model="screenForm.warehouse" placeholder="请选择发货仓库" size="small" filterable clearable :disabled="goodsList.length > 0">
+          <el-option :label="item.name" :value="item.id" v-for="(item, index) in warehouseList" :key="index"></el-option>
+        </el-select>
+        <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">
+      <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="orderId" min-width="180" 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="materialCode" 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="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="refundableQty" min-width="80" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="申请数量" prop="invoiceNum" min-width="110" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.invoiceNum" 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.remark" size="small"></el-input>
+          </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">
+        <el-button type="primary" @click="clickSubmitForm('SAVE')">保 存</el-button>
+        <el-button type="primary" @click="clickSubmitForm('WAIT')">提交审核</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="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="6" :lg="6">
+            <el-form-item prop="warehouse" label="选择仓库">
+              <el-select v-model="screenForm.warehouse" placeholder="请选择仓库" size="small" filterable clearable :disabled="goodsList.length > 0" 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="12" :sm="6" :lg="6">
+            <el-form-item prop="type" label="存货类别">
+              <el-select v-model="screenForm.type" placeholder="选择存货类别" style="width: 100%" clearable :disabled="goodsList.length > 0">
+                <el-option v-for="item in categoryList" :key="item.name" :label="item.name" :value="item.name"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="type" label="产品大类">
+              <el-select v-model="screenForm.type" placeholder="选择产品大类" style="width: 100%" :disabled="goodsList.length > 0 || tableSelection.length > 0">
+                <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="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="规格型号" prop="model">
+              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
+            </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>
+              <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">
+          <el-table-column align="center" label="订单号" prop="mainOrderId" min-width="140" 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="categoryName" 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="80" 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="invoiceNum" min-width="110" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.invoiceNum" size="small" type="number" :disabled="scope.row.selected"></el-input>
+            </template>
+          </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 { getApplyDetail, addApplyReturn, editApply, getSalesGoodsList, getWarehouseList, getDealerList } from "@/api/supply/apply";
+import { getDictList, getCategoryList } from '@/api/common'
+import { findElem } from '@/utils/util'
+import fileUpload from '@/components/Common/file-upload.vue'
+
+export default {
+  components: {
+    fileUpload
+  },
+  name: 'ApplyReturnForm',
+  componentName: 'ApplyReturnForm',
+  props: ['listItem'],
+  data() {
+    return {
+      mainForm: {
+        orderNum: '',
+        date: '',
+        jxsNum: '',
+        jxsName: '',
+        remark: '',
+        createMan: '',
+      },
+      mainFormRules: {
+        // date: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
+      },
+      dealerList: [],
+      fileList: [],
+      goodsList: [],
+
+      warehouseList: [],
+      isShowDialog: false,
+      screenForm: {
+        warehouse: '',
+        type: '',
+        orderNum: '',
+        model: '',
+      },
+      currentPage: 1,
+      listTotal: 0,
+      // typeList: [],
+      stockList: [],
+      categoryList: [],
+      
+      tableGoodsList: [],
+    }
+  },
+
+  created() {
+    this.getDictList();
+    this.getWarehouseList();
+    this.getDealerList();
+    this.getCategoryList();
+    if(this.listItem) {
+      this.getDetail();
+    }else {
+      this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerNumber;
+      this.mainForm.jxsName = JSON.parse(localStorage.getItem("supply_user")).customerName;
+      this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
+    }
+  },
+
+  methods: {
+    // 返回列表
+    goBack() {
+      this.$emit('backListFormDetail');
+    },
+
+    // 获取详情
+    getDetail() {
+      getApplyDetail({id: this.listItem.id}).then(res => {
+        let data = res.data;
+        this.mainForm.orderNum = data.id;
+        this.mainForm.date = data.orderTime;
+        this.mainForm.jxsNum = data.customerNumber;
+        this.mainForm.jxsName = data.customerName;
+        this.mainForm.createMan = data.createBy;
+        this.mainForm.remark = data.remark;
+        this.screenForm.warehouse = data.correspondId;
+        this.fileList = data.fileUrl ? [{
+          url: data.fileUrl,
+          name: data.fileName
+        }] : [];
+        // data.orders.forEach(item => {
+        //   item.orderId = item.id;
+        // })
+        this.goodsList = data.orders;
+        // this.screenForm.type = data.mainId;
+      })
+    },
+
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      })
+    },
+
+    getDictList() {
+      // getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
+      //   this.typeList = res.data;
+      // })
+      getDictList({sysDictEnum: 'STOCK_ORDER'}).then(res => {
+        this.stockList = res.data;
+      })
+    },
+
+    // 获取经销商列表
+    getDealerList() {
+      getDealerList({
+        pageNum: 1,
+        pageSize: -1,
+        bindUser: false
+      }).then(res => {
+        this.dealerList = res.data.records;
+      })
+    },
+
+    // 获取存货类别列表
+    getCategoryList() {
+      getCategoryList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then(res => {
+        this.categoryList = res.data.records;
+      })
+    },
+    
+    // 库存字段
+    stockFilter(item, type) {
+      let STOCK_ORDER_INVOICE = this.stockList.find(o => o.dictCode == 'STOCK_ORDER_INVOICE').dictValue;
+      if(type === 1) {
+        return item.stockAdequate > STOCK_ORDER_INVOICE ? '充足' : item.stockAdequate;
+      }
+      if(type === 2) {
+        return item.stockCorrespond > STOCK_ORDER_INVOICE ? '充足' : item.stockCorrespond;
+      }
+    },
+
+    // 获取商品列表
+    getSalesGoodsList() {
+      getSalesGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        correspondId: this.screenForm.warehouse,
+        categoryName: this.screenForm.type,
+        id: this.screenForm.orderNum,
+        specification: this.screenForm.model,
+        saleType: 1, // 1零售,2工程
+      }).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.salesOrderItemId === oldItem.salesOrderItemId){
+              newGoodsList[j].selected = true;
+              newGoodsList[j].invoiceNum = oldGoodsList[i].invoiceNum;
+              break;
+            }
+          }
+        }
+        // newGoodsList.forEach(item => {
+        //   item.salesMainOrderId = item.id;
+        // })
+
+        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.warehouse) {
+        this.getSalesGoodsList();
+      // }
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      // if(!this.screenForm.warehouse) {
+      //   return this.$errorMsg('请选择仓库');
+      // }
+      if(!this.screenForm.type) {
+        return this.$errorMsg('请选择存货类别');
+      }
+      this.currentPage = 1;
+      this.getSalesGoodsList();
+    },
+
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.tableGoodsList = [];
+      // this.getSalesGoodsList();
+    },
+
+    // 更改列表当前页
+    handleTableCurrentChange(val) {
+      this.currentPage = val;
+      this.getSalesGoodsList();
+    },
+
+    // 关闭 弹窗
+    closeDialog() {
+      this.isShowDialog = false;
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      let tableSelection = [];
+      this.tableGoodsList.forEach(item => {
+        if((item.invoiceNum || item.invoiceNum === 0) && !item.selected) {
+          tableSelection.push(item);
+        }
+      });
+
+      for(let i=0; i<tableSelection.length; i++) {
+        if(Number(tableSelection[i].invoiceNum) > 0) {
+          this.$errorMsg('申请数量需为负数');
+          return;
+        }
+      }
+
+      this.isShowDialog = false;
+      this.tableGoodsList = [];
+
+      this.goodsList = this.goodsList.concat(tableSelection);
+    },
+
+    // 删除产品
+    deleteItem(index) {
+      this.goodsList.splice(index, 1);
+    },
+
+    // 保存
+    clickSubmitForm(status) {
+      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].invoiceNum) {
+              this.$errorMsg('请输入申请数量');
+              return;
+            }
+            if(Number(this.goodsList[i].invoiceNum) > 0) {
+              this.$errorMsg('申请数量需为负数');
+              return;
+            }
+          }
+          // if(!this.screenForm.warehouse) {
+          //   return this.$errorMsg('请选择仓库');
+          // }
+          let goodsList = this.goodsList.map(item => {
+            return {
+              correspondId: item.correspondId,
+              refundableQty: item.invoiceNum,
+              remark: item.remark,
+              salesOrderId: item.id,
+              salesOrderItemId: item.salesOrderItemId
+            }
+          })
+
+          // let correspondName = this.warehouseList[findElem(this.warehouseList, 'id', this.screenForm.warehouse)].name;
+          let params = {
+            remark: this.mainForm.remark,
+            fileUrl: this.fileList && this.fileList.length > 0 ? this.fileList[0].url : '',
+            fileName: this.fileList && this.fileList.length > 0 ? this.fileList[0].name : '',
+            correspondId: this.goodsList[0].correspondId,
+            correspondName: this.goodsList[0].correspondName,
+            salesOrderId: this.goodsList[0].id,
+            orders: goodsList,
+            examineStatus: status,
+          }
+          if(this.listItem) {
+            params.id = this.listItem.id;
+            editApply(params).then(res => {
+              this.$successMsg('编辑成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }else {
+            addApplyReturn(params).then(res => {
+              this.$successMsg('添加成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }
+        }
+      })
+    },
+  }
+}
+</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>

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

@@ -1,6 +1,6 @@
 <template>
   <div class="detail-container">
-    <el-page-header @back="goBack" :content="listItem ? '编辑':'新增'"></el-page-header>
+    <el-page-header @back="goBack" :content="listItem ? '编辑-发货申请':'新增-发货申请'"></el-page-header>
 
     <div class="main-title">
       <div class="title">工程发货申请单信息</div>

+ 761 - 0
src/views/supply/apply/components/engin_return_form.vue

@@ -0,0 +1,761 @@
+<template>
+  <div class="detail-container">
+    <el-page-header @back="goBack" :content="listItem ? '编辑-退货申请':'新增-退货申请'"></el-page-header>
+
+    <div class="main-title">
+      <div class="title">工程退货申请单信息</div>
+    </div>
+
+    <div style="font-size: 12px; color: #333; margin-bottom: 20px;">注:退货申请时,库存数量为实时数量,请选择完成选择后及时保存提交,否则数量可能有变,被其他商家开单而导致库存不足。</div>
+
+    <el-form ref="mainForm" :model="mainForm" :rules="mainFormRules" label-width="100px" 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="系统自动生成" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8" style="height: 51px;">
+          <el-form-item label="单据日期" prop="orderDate">
+            <el-date-picker
+              v-model="mainForm.orderDate"
+              disabled
+              type="date"
+              value-format="yyyy-MM-dd"
+              style="width: 100%;"
+              placeholder="选择日期">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="经销商编号" prop="jxsNum">
+            <el-input v-model="mainForm.jxsNum" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="16">
+          <el-form-item label="经销商名称" prop="jxsName">
+            <el-input v-model="mainForm.jxsName" disabled></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="工程登录编号" prop="loginNum">
+            <div style="display: flex;">
+              <el-input v-model="mainForm.loginNum" placeholder="请输入工程登录编号"></el-input>
+              <el-button style="margin-left: 10px;" @click="openDialog">引用</el-button>
+            </div>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="工程项目名称" prop="enginName">
+            <el-input v-model="mainForm.enginName" placeholder="请输入工程项目名称"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="工程登录类型" prop="loginType">
+            <el-input v-model="mainForm.loginType" placeholder="请输入工程登录类型"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="厂工程编号" prop="factoryNum">
+            <el-input v-model="mainForm.factoryNum" placeholder="请输入厂工程编号"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="使用单位" prop="company">
+            <el-input v-model="mainForm.company" placeholder="请输入使用单位"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="联系人" prop="contactMan">
+            <el-input v-model="mainForm.contactMan" placeholder="请输入联系人" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="固定电话" prop="tel">
+            <el-input v-model="mainForm.tel" placeholder="请输入固定电话" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="移动电话" prop="phone">
+            <el-input v-model="mainForm.phone" placeholder="请输入移动电话" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="24">
+          <el-form-item label="安装地址" prop="address">
+            <el-input v-model="mainForm.address" placeholder="请输入安装地址"></el-input>
+          </el-form-item>
+        </el-col>
+        <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>
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="8" :lg="8">
+          <el-form-item label="附件" prop="fileUrl">
+            <fileUpload :fileList="fileList" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="制单人" prop="createMan">
+            <el-input v-model="mainForm.createMan" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8" style="height: 51px;">
+          <el-form-item label="制单日期" prop="createDate">
+            <el-date-picker
+              v-model="mainForm.createDate"
+              disabled
+              type="datetime"
+              value-format="yyyy-MM-dd hh:mm:ss"
+              style="width: 100%;"
+              placeholder="选择日期">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <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="enginOrderNo" min-width="180" 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="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="物料编码" prop="materialCode" 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="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="invoiceNum" min-width="110" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.invoiceNum" size="small"></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.remark" size="small"></el-input>
+          </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('SAVE')">保 存</el-button>
+        <el-button type="primary" @click="clickSubmitForm('WAIT')">提交审核</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="isShowDialog" width="80%">
+      <el-form ref="screenForm" :model="screenForm" size="small" label-position="left" label-width="100px">
+        <el-row :gutter="20">
+          <el-col :xs="12" :sm="12" :lg="6">
+            <el-form-item prop="loginNum" label="工程登录编号">
+              <el-input v-model="screenForm.loginNum" placeholder="请输入工程登录编号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="6">
+            <el-form-item prop="enginName" label="工程名称">
+              <el-input v-model="screenForm.enginName" placeholder="请输入工程名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="6">
+            <el-form-item prop="model" label="规格型号">
+              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="6">
+            <el-form-item label="发货申请日期" prop="date">
+              <el-date-picker
+                v-model="screenForm.date"
+                type="datetimerange"
+                range-separator="至"
+                style="width: 100%; height: 33px"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="6">
+            <el-form-item prop="warehouse" label="选择仓库">
+              <el-select v-model="screenForm.warehouse" placeholder="请选择仓库" size="small" filterable clearable :disabled="goodsList.length > 0 || tableSelection.length > 0" 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="12" :sm="6" :lg="6">
+            <el-form-item prop="type" label="存货类别">
+              <el-select v-model="screenForm.type" placeholder="选择存货类别" style="width: 100%" :disabled="goodsList.length > 0">
+                <el-option v-for="item in categoryList" :key="item.name" :label="item.name" :value="item.name"></el-option>
+              </el-select>
+            </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="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="orderType" min-width="180" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.orderType | orderTypeFilter}}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="工程登录编号" prop="refEnginRecordNo" 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="materialCode" 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="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="80" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单数量" prop="qty" min-width="80" show-overflow-tooltip></el-table-column>
+          <!-- <el-table-column align="center" label="已申请数量" prop="alreadyInvoiceNum" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="已申请未出货数量" prop="sendQty" 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="invoiceNum" min-width="110" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.invoiceNum" size="small" type="number"></el-input>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column align="center" label="总库存数量" prop="stockAdequate" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{stockFilter(scope.row, 1)}}
+            </template>
+          </el-table-column> -->
+          <!-- <el-table-column align="center" label="对应库存数量" prop="stockCorrespond" min-width="110" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{stockFilter(scope.row, 2)}}
+            </template>
+          </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 { getEnginDetail, addApplyReturn, editEngin, getSalesGoodsList, getWarehouseList, getDealerList, getEnginGoodsDetail } from "@/api/supply/apply";
+import { getDictList, getCategoryList } from '@/api/common'
+import { findElem } from '@/utils/util'
+import fileUpload from '@/components/Common/file-upload.vue'
+
+export default {
+  components: {
+    fileUpload
+  },
+  name: 'EnginForm',
+  componentName: 'EnginForm',
+  props: ['listItem'],
+  filters: {
+    orderTypeFilter(val) {
+      const MAP = {
+        TRADE: '商用',
+        HOME: '家用',
+        RETAIL: '零售单',
+        RETAIL_POLICY: '销售政策单',
+        PERMU_HOME: '置换单家用',
+        PERMU_TRADE: '置换商用',
+        PERMU_RETAIL: '置换零售',
+        PERMU_RETAIL_POLICY: '置换销售政策单',
+      }
+      return MAP[val];
+    },
+  },
+  data() {
+    return {
+      mainForm: {
+        orderNum: '',
+        orderDate: '',
+        jxsNum: '',
+        jxsName: '',
+        loginNum: '',
+        enginName: '',
+        loginType: '',
+        factoryNum: '',
+        company: '',
+        contactMan: '',
+        tel: '',
+        phone: '',
+        address: '',
+        remark: '',
+        createMan: '',
+        createDate: '',
+      },
+      mainFormRules: {
+        // orderDate: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
+      },
+      dealerList: [],
+      fileList: [],
+      goodsList: [],
+
+      warehouseList: [],
+      isShowDialog: false,
+      screenForm: {
+        loginNum: '',
+        enginName: '',
+        model: '',
+        date: '',
+        warehouse: '',
+        type: '',
+      },
+      currentPage: 1,
+      listTotal: 0,
+      typeList: [],
+      stockList: [],
+      categoryList: [],
+      
+      tableGoodsList: [],
+      tableSelection: [],
+    }
+  },
+
+  computed: {
+    sidebar() {
+      return this.$store.state.app.sidebar
+    },
+    classObj() {
+      return {
+        hideSidebar: !this.sidebar.opened,
+        openSidebar: this.sidebar.opened
+      }
+    },
+  },
+
+  created() {
+    this.getDictList();
+    this.getWarehouseList();
+    this.getDealerList();
+    this.getCategoryList();
+    if(this.listItem) {
+      this.getDetail();
+    }else {
+      this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerNumber;
+      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: {
+    // 返回列表
+    goBack() {
+      this.$emit('backListFormDetail');
+    },
+
+    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;
+    },
+
+    // 获取详情
+    getDetail() {
+      getEnginDetail({id: this.listItem.id}).then(res => {
+        let data = res.data;
+        this.mainForm.orderNum = data.id;
+        this.mainForm.orderDate = data.orderTime.slice(0, 10);
+        this.mainForm.jxsNum = data.customerNumber;
+        this.mainForm.jxsName = data.customerName;
+        this.mainForm.loginNum = data.enginOrderNo;
+        this.mainForm.enginName = data.refProjectName;
+        this.mainForm.loginType = data.enginOrderType;
+        this.mainForm.factoryNum = data.refFactoryNo;
+        this.mainForm.company = data.refUseUnit;
+        this.mainForm.saleType = data.saleTypeId;
+        this.mainForm.contactMan = data.refLinkman;
+        this.mainForm.tel = data.refTel;
+        this.mainForm.phone = data.refPhone;
+        this.mainForm.address = data.refInstallAddress;
+        this.mainForm.createMan = data.createBy;
+        this.mainForm.createDate = data.createTime;
+        this.mainForm.remark = data.remark;
+        this.screenForm.warehouse = data.correspondId;
+        this.fileList = data.fileUrl ? [{
+          url: data.fileUrl,
+          name: data.fileName,
+        }] : [];
+        // data.orders.forEach(item => {
+        //   item.orderId = item.id;
+        // })
+        this.goodsList = data.orders;
+      })
+    },
+
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      })
+    },
+
+    getDictList() {
+      getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
+        this.typeList = res.data;
+      })
+      getDictList({sysDictEnum: 'STOCK_ORDER'}).then(res => {
+        this.stockList = res.data;
+      })
+    },
+
+    // 获取经销商列表
+    getDealerList() {
+      getDealerList({
+        pageNum: 1,
+        pageSize: -1,
+        bindUser: false
+      }).then(res => {
+        this.dealerList = res.data.records;
+      })
+    },
+
+    // 获取存货类别列表
+    getCategoryList() {
+      getCategoryList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then(res => {
+        this.categoryList = res.data.records;
+      })
+    },
+
+    // 库存字段
+    stockFilter(item, type) {
+      let STOCK_ORDER_INVOICE = this.stockList.find(o => o.dictCode == 'STOCK_ORDER_INVOICE').dictValue;
+      if(type === 1) {
+        return item.stockAdequate > STOCK_ORDER_INVOICE ? '充足' : item.stockAdequate;
+      }
+      if(type === 2) {
+        return item.stockCorrespond > STOCK_ORDER_INVOICE ? '充足' : item.stockCorrespond;
+      }
+    },
+
+    // 获取商品列表
+    getGoodsList() {
+      getSalesGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        refEnginRecordNo: this.screenForm.loginNum,
+        refProjectName: this.screenForm.enginName,
+        specification: this.screenForm.model,
+        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
+        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
+        correspondId: this.screenForm.warehouse,
+        categoryName: this.screenForm.type,
+        saleType: 2, // 1零售,2工程
+      }).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.orderId === oldItem.orderId){
+              newGoodsList[j].selected = true;
+              break;
+            }
+          }
+        }
+        newGoodsList.forEach(item => {
+          item.invoiceNum = item.refundableQty;
+        });
+
+        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.warehouse) {
+        this.getGoodsList();
+      // }
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      // if(!this.screenForm.warehouse) {
+      //   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;
+    },
+
+    // 数组去重
+    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].orderId == newArr[j].orderId){ // 让allArr数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
+            flag = false;
+          }
+        }
+        if(flag){ // 判断是否重复
+          newArr.push(allArr[i]); // 不重复的放入新数组。  新数组的内容会继续进行上边的循环。
+        }
+      }
+      return newArr;
+    },
+
+    // 检查是否一致
+    isAllEqual(array) {
+      if (array.length > 0) {
+        return !array.some(function(item, index) {
+          return item.enginOrderNo !== array[0].enginOrderNo;
+        });
+      } else {
+        return true;
+      }
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      let list = this.goodsList.concat(this.tableSelection);
+      if(!this.isAllEqual(list)) {
+        return this.$errorMsg('只能选择同一个工程编号的订单');
+      }
+
+      for(let i=0; i<this.tableSelection.length; i++) {
+        if(Number(this.tableSelection[i].invoiceNum) > 0) {
+          this.$errorMsg('申请数量需为负数');
+          return;
+        }
+      }
+
+      // let allList = this.tableGoodsList;
+      // let selectList = this.tableSelection;
+      // let submitList = [];
+
+      // for(let i = 0; i < allList.length; i++) {
+      //   for(let j = 0; j < selectList.length; j++) {
+      //     if(selectList[j].enginOrderNo == allList[i].enginOrderNo){
+      //       submitList.push(allList[i]);
+      //     }
+      //   }
+      // }
+
+      // this.goodsList = this.delRepeat(submitList, this.goodsList);
+      this.isShowDialog = false;
+      this.tableGoodsList = [];
+
+
+      this.goodsList = this.goodsList.concat(this.tableSelection);
+
+      this.getEnginGoodsDetail(this.tableSelection[0].enginOrderNo);
+      // this.getEnginGoodsDetail(submitList[0].enginOrderNo);
+    },
+
+    getEnginGoodsDetail(enginOrderNo) {
+      getEnginGoodsDetail({enginOrderNo}).then(res => {
+        let data = res.data;
+        this.mainForm.loginNum = data.refEnginRecordNo;
+        this.mainForm.enginName = data.refProjectName;
+        this.mainForm.loginType = data.refPromiseStatus;
+        this.mainForm.factoryNum = data.refFactoryNo;
+        this.mainForm.company = data.refUseUnit;
+        this.mainForm.saleType = data.saleTypeId;
+        this.mainForm.contactMan = data.refLinkman;
+        this.mainForm.tel = data.refTel;
+        this.mainForm.phone = data.refPhone;
+        this.mainForm.address = data.refInstallAddress;
+        this.mainForm.remark = data.remark;
+      })
+    },
+
+    // 删除产品
+    deleteItem(index) {
+      this.goodsList.splice(index, 1);
+      // this.goodsList = this.goodsList.filter((item) => {
+      //   return item.orderId != id
+      // })
+    },
+
+    // 保存
+    clickSubmitForm(status) {
+      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].invoiceNum) {
+              this.$errorMsg('请输入申请数量');
+              return;
+            }
+            if(Number(this.goodsList[i].invoiceNum) > 0) {
+              this.$errorMsg('申请数量需为负数');
+              return;
+            }
+          }
+          // if(!this.screenForm.warehouse) {
+          //   return this.$errorMsg('请选择仓库');
+          // }
+          let goodsList = this.goodsList.map(item => {
+            return {
+              correspondId: item.correspondId,
+              refundableQty: item.invoiceNum,
+              remark: item.remark,
+              salesOrderId: item.id,
+              salesOrderItemId: item.salesOrderItemId
+            }
+          })
+
+          let params = {
+            remark: this.mainForm.remark,
+            enginOrderNo: this.mainForm.loginNum,
+            refProjectName: this.mainForm.enginName,
+            enginOrderType: this.mainForm.loginType,
+            refFactoryNo: this.mainForm.factoryNum,
+            refUseUnit: this.mainForm.company,
+            refLinkman: this.mainForm.contactMan,
+            refTel: this.mainForm.tel,
+            refPhone: this.mainForm.phone,
+            refInstallAddress: this.mainForm.address,
+            remark: this.mainForm.remark,
+            fileUrl: this.fileList && this.fileList.length > 0 ? this.fileList[0].url : '',
+            fileName: this.fileList && this.fileList.length > 0 ? this.fileList[0].name : '',
+            correspondId: this.goodsList[0].correspondId,
+            correspondName: this.goodsList[0].correspondName,
+            salesOrderId: this.goodsList[0].id,
+            orders: goodsList,
+            examineStatus: status,
+          }
+          if(this.listItem) {
+            params.id = this.listItem.id;
+            editEngin(params).then(res => {
+              this.$successMsg('编辑成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }else {
+            addApplyReturn(params).then(res => {
+              this.$successMsg('添加成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }
+        }
+      })
+    },
+  }
+}
+</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>

+ 54 - 7
src/views/supply/apply/engin_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div v-show="!isShowDetail && !isShowExamine && !isShowForm">
+    <div v-show="!isShowDetail && !isShowExamine && !isShowForm && !isShowReturnForm">
       <!-- 筛选条件 -->
       <div class="screen-container">
         <el-form ref="screenForm" :model="screenForm" label-width="100px" size="small" label-position="left">
@@ -68,8 +68,20 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :xs="24" :sm="12" :lg="6">
+              <el-form-item label="订单类型" prop="orderType">
+                <el-select v-model="screenForm.orderType" placeholder="请选择" clearable>
+                  <el-option
+                    v-for="item in orderTypeList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             
-            <el-col :xs="24" :sm="24" :lg="24" class="tr">
+            <el-col :xs="24" :sm="12" :lg="18" class="tr">
               <el-form-item label="">
                 <el-button size="small" @click="resetScreenForm">清空</el-button>
                 <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
@@ -83,6 +95,7 @@
         <div class="btn-group clearfix">
           <div class="fl">
             <el-button size="small" type="primary" icon="el-icon-plus" @click="toForm()" v-if="$checkBtnRole('add', $route.meta.roles)">发货申请</el-button>
+            <el-button size="small" type="primary" icon="el-icon-plus" @click="toReturnForm()" v-if="$checkBtnRole('add', $route.meta.roles)">退货申请</el-button>
           </div>
           <div class="fr">
             <ExportButton :exUrl="'invoice/listProjectExport'" :exParams="exParams" />
@@ -99,7 +112,12 @@
             stripe
             show-summary
             :summary-method="$getSummaries">
-            <el-table-column align="center" label="发货申请单" prop="id" min-width="180" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单类型" prop="type" min-width="100" show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{scope.row.type | orderTypeFilter}}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="发货申请单" prop="id" min-width="140" 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="correspondName" min-width="120" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="订单号" prop="enginOrderNo" min-width="140" show-overflow-tooltip></el-table-column>
@@ -165,7 +183,13 @@
                 <el-button 
                   type="text" 
                   @click="toForm(scope.row)" 
-                  v-if="$checkBtnRole('edit', $route.meta.roles) && (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL')">
+                  v-if="$checkBtnRole('edit', $route.meta.roles) && (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') && scope.row.type === 1">
+                  编辑
+                </el-button>
+                <el-button 
+                  type="text" 
+                  @click="toReturnForm(scope.row)" 
+                  v-if="$checkBtnRole('edit', $route.meta.roles) && (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') && scope.row.type === 2">
                   编辑
                 </el-button>
                 <el-button 
@@ -209,6 +233,7 @@
     <EnginDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
     <EnginExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
     <EnginForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
+    <EnginReturnForm :listItem="queryItem" v-if="isShowReturnForm" @backListFormDetail="backList" />
 
   </div>
 </template>
@@ -219,19 +244,25 @@ import { getSalesmanList } from '@/api/common'
 import EnginDetail from "@/views/supply/apply/components/engin_detail";
 import EnginExamine from "@/views/supply/apply/components/engin_examine";
 import EnginForm from "@/views/supply/apply/components/engin_form";
+import EnginReturnForm from "@/views/supply/apply/components/engin_return_form";
 
 let that
 export default {
   components: {
     EnginDetail,
     EnginExamine,
-    EnginForm
+    EnginForm,
+    EnginReturnForm,
   },
   filters: {
     statusFilter(val) {
       let obj = that.statusList.find(o => o.value == val);
       return obj ? obj.label : ''
-    }
+    },
+    orderTypeFilter(val) {
+      let obj = that.orderTypeList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    },
   },
   data() {
     return {
@@ -241,6 +272,7 @@ export default {
       dataList: null, // 列表数据
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
+        status: '',
         orderNum: '',
         warehouse: '',
         jxsNum: '',
@@ -249,7 +281,7 @@ export default {
         chName: '',
         model: '',
         salesMan: '',
-        status: '',
+        orderType: '',
       },
       statusList: [
         { label: '已保存', value: 'SAVE' },
@@ -258,12 +290,18 @@ export default {
         { label: '审核驳回', value: 'FAIL' },
         { label: '已关闭', value: 'CLOSE' },
       ],
+      orderTypeList: [
+        { label: '发货申请单', value: 1 },
+        { label: '退货申请单', value: 2 },
+        { label: '直调发货单', value: 3 },
+      ],
       salesmanList: [],
 
       queryItem: {},
       isShowDetail: false,
       isShowExamine: false,
       isShowForm: false,
+      isShowReturnForm: false,
     }
   },
 
@@ -280,6 +318,7 @@ export default {
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
         examineStatus: this.screenForm.status,
         serviceId: this.screenForm.salesMan,
+        type: this.screenForm.orderType,
       }
     },
   },
@@ -323,6 +362,7 @@ export default {
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
         examineStatus: this.screenForm.status,
         serviceId: this.screenForm.salesMan,
+        type: this.screenForm.orderType,
       };
       getEnginList(params).then((res) => {
         res.data.records.forEach(item => {
@@ -367,6 +407,12 @@ export default {
       this.isShowForm = true;
     },
 
+    // 进入表单
+    toReturnForm(item) {
+      this.queryItem = item;
+      this.isShowReturnForm = true;
+    },
+
     // 进入审批
     toExamine(item) {
       this.queryItem = item;
@@ -384,6 +430,7 @@ export default {
       this.isShowDetail = false;
       this.isShowExamine = false;
       this.isShowForm = false;
+      this.isShowReturnForm = false;
     },
 
     handleDelete(id) {

+ 8 - 4
src/views/supply/engin/components/commerce_detail.vue

@@ -42,7 +42,7 @@
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">行业类别</div>
-              <div class="value">{{detailData.refPromiseStatus}}</div>
+              <div class="value">{{detailData.refTradeCategory}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">跨区厂编号</div>
@@ -58,15 +58,19 @@
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">联系人</div>
-              <div class="value">{{detailData.aaa}}</div>
+              <div class="value">{{detailData.refLinkman}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">固定电话</div>
-              <div class="value">{{detailData.aaa}}</div>
+              <div class="value">{{detailData.refTel}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">移动电话</div>
-              <div class="value">{{detailData.aaa}}</div>
+              <div class="value">{{detailData.refPhone}}</div>
+            </el-col>
+            <el-col :span="24" class="item">
+              <div class="label">安装地址</div>
+              <div class="value">{{detailData.refInstallAddress}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">不扣押金</div>

+ 8 - 4
src/views/supply/engin/components/commerce_examine.vue

@@ -38,7 +38,7 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">行业类别</div>
-          <div class="value">{{detailData.refPromiseStatus}}</div>
+          <div class="value">{{detailData.refTradeCategory}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">跨区厂编号</div>
@@ -54,15 +54,19 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">联系人</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refLinkman}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">固定电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refTel}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">移动电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refPhone}}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">安装地址</div>
+          <div class="value">{{detailData.refInstallAddress}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">不扣押金</div>

+ 3 - 6
src/views/supply/engin/components/commerce_form.vue

@@ -398,7 +398,6 @@ export default {
         createDate: '',
         fileNum: '',
         salesMan: '',
-        tradeCategory: ''
       },
       mainFormRules: {
         // orderDate: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
@@ -568,7 +567,7 @@ export default {
         this.mainForm.jxsName = data.customerName;
         this.mainForm.enginNum = data.refEnginRecordNo;
         this.mainForm.enginName = data.refProjectName;
-        this.mainForm.loginType = data.refPromiseStatus;
+        this.mainForm.loginType = data.refTradeCategory;
         this.mainForm.factoryNum = data.refFactoryNo;
         this.mainForm.company = data.refUseUnit;
         this.mainForm.saleType = data.saleTypeId;
@@ -653,14 +652,13 @@ export default {
         // this.mainForm.type = data.mainId;
         this.mainForm.enginNum = data.enginInfoNo;
         this.mainForm.enginName = data.projectName;
-        this.mainForm.loginType = data.enginSignType;
+        this.mainForm.loginType = data.tradeCategory;
         this.mainForm.company = data.useUnit;
         this.mainForm.contactMan = data.linkman;
         this.mainForm.tel = data.tel;
         this.mainForm.phone = data.phone;
         this.mainForm.address = data.installAddress;
         this.mainForm.salesMan = data.serviceId;
-        this.mainForm.tradeCategory = data.tradeCategory;
 
         this.goodsList = data.items.map(item => {
           return {
@@ -799,9 +797,8 @@ export default {
             // mainId: this.mainForm.type || '',
             refEnginRecordNo: this.mainForm.enginNum || '',
             refProjectName: this.mainForm.enginName || '',
-            refPromiseStatus: this.mainForm.loginType || '',
+            refTradeCategory: this.mainForm.loginType || '',
             refFactoryNo: this.mainForm.factoryNum || '',
-            refTradeCategory: this.mainForm.tradeCategory || '',
             refUseUnit: this.mainForm.company || '',
             refLinkman: this.mainForm.contactMan || '',
             refTel: this.mainForm.tel || '',

+ 4 - 4
src/views/supply/engin/components/commerce_return.vue

@@ -38,7 +38,7 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">行业类别</div>
-          <div class="value">{{detailData.refPromiseStatus}}</div>
+          <div class="value">{{detailData.refTradeCategory}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">跨区厂编号</div>
@@ -54,15 +54,15 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">联系人</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refLinkman}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">固定电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refTel}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">移动电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refPhone}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">不扣押金</div>

+ 8 - 4
src/views/supply/engin/components/home_detail.vue

@@ -42,7 +42,7 @@
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">行业类别</div>
-              <div class="value">{{detailData.refPromiseStatus}}</div>
+              <div class="value">{{detailData.refTradeCategory}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">跨区厂编号</div>
@@ -58,15 +58,19 @@
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">联系人</div>
-              <div class="value">{{detailData.aaa}}</div>
+              <div class="value">{{detailData.refLinkman}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">固定电话</div>
-              <div class="value">{{detailData.aaa}}</div>
+              <div class="value">{{detailData.refTel}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">移动电话</div>
-              <div class="value">{{detailData.aaa}}</div>
+              <div class="value">{{detailData.refPhone}}</div>
+            </el-col>
+            <el-col :span="24" class="item">
+              <div class="label">安装地址</div>
+              <div class="value">{{detailData.refInstallAddress}}</div>
             </el-col>
             <el-col :span="8" class="item">
               <div class="label">不扣押金</div>

+ 8 - 4
src/views/supply/engin/components/home_examine.vue

@@ -38,7 +38,7 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">行业类别</div>
-          <div class="value">{{detailData.refPromiseStatus}}</div>
+          <div class="value">{{detailData.refTradeCategory}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">跨区厂编号</div>
@@ -58,15 +58,19 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">联系人</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refLinkman}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">固定电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refTel}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">移动电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refPhone}}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">安装地址</div>
+          <div class="value">{{detailData.refInstallAddress}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">不扣押金</div>

+ 7 - 6
src/views/supply/engin/components/home_form.vue

@@ -488,6 +488,7 @@ export default {
         loginNum: '',
         enginName: '',
         loginType: '',
+        promiseStatus: '',
         factoryNum: '',
         company: '',
         saleType: '',
@@ -506,7 +507,6 @@ export default {
         salesMan: '',
         projectRemark: '',
         projectType: '',
-        tradeCategory: ''
       },
       mainFormRules: {
         // orderDate: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
@@ -758,7 +758,8 @@ export default {
         // this.mainForm.saleType = '';
         this.mainForm.loginNum = data.recordNo;
         this.mainForm.enginName = data.projectName;
-        this.mainForm.loginType = data.promiseStatus;
+        this.mainForm.loginType = data.tradeCategory;
+        this.mainForm.promiseStatus = data.promiseStatus;
         this.mainForm.company = data.useUnit;
         this.mainForm.contactMan = data.buyUnitCallMen;
         this.mainForm.tel = data.buyUnitTel;
@@ -767,7 +768,6 @@ export default {
         this.mainForm.declareNo = data.declareNo;
         this.mainForm.projectRemark = data.buChonShuoMing;
         this.mainForm.projectType = data.govBuyType;
-        this.mainForm.tradeCategory = data.tradeCategory;
 
         let saleTypeItem = this.salesTypeList.find(o => o.id == this.mainForm.saleType);
 
@@ -863,7 +863,8 @@ export default {
         this.mainForm.jxsName = data.customerName;
         this.mainForm.loginNum = data.refEnginRecordNo;
         this.mainForm.enginName = data.refProjectName;
-        this.mainForm.loginType = data.refPromiseStatus;
+        this.mainForm.loginType = data.refTradeCategory;
+        this.mainForm.promiseStatus = data.refPromiseStatus;
         this.mainForm.factoryNum = data.refFactoryNo;
         this.mainForm.company = data.refUseUnit;
         this.mainForm.saleType = data.saleTypeId;
@@ -1109,7 +1110,8 @@ export default {
             loginUserId: this.mainForm.loginUserId,
             refEnginRecordNo: this.mainForm.loginNum || '',
             refProjectName: this.mainForm.enginName || '',
-            refPromiseStatus: this.mainForm.loginType || '',
+            refTradeCategory: this.mainForm.loginType || '',
+            refPromiseStatus: this.mainForm.promiseStatus || '',
             refFactoryNo: this.mainForm.factoryNum || '',
             refUseUnit: this.mainForm.company || '',
             refLinkman: this.mainForm.contactMan || '',
@@ -1128,7 +1130,6 @@ export default {
             serviceName: saleManItem.nickName,
             refProjectNote: this.mainForm.projectRemark,
             refProjectType: this.mainForm.projectType,
-            refTradeCategory: this.mainForm.tradeCategory,
             items: goodsList,
           }
 

+ 4 - 4
src/views/supply/engin/components/home_return.vue

@@ -38,7 +38,7 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">行业类别</div>
-          <div class="value">{{detailData.refPromiseStatus}}</div>
+          <div class="value">{{detailData.refTradeCategory}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">跨区厂编号</div>
@@ -54,15 +54,15 @@
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">联系人</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refLinkman}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">固定电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refTel}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">移动电话</div>
-          <div class="value">{{detailData.aaa}}</div>
+          <div class="value">{{detailData.refPhone}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">不扣押金</div>

+ 0 - 1
src/views/supply/engin/home_list.vue

@@ -120,7 +120,6 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column align="center" label="工程编码" prop="refProjectNo" min-width="120" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="工程登录单号" prop="refEnginRecordNo" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="订单类型" prop="enginOrderType" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">

+ 5 - 1
src/views/supply/pickup/check.vue

@@ -85,7 +85,11 @@
                 {{ 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="mainOrderId" min-width="200" show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{ scope.row.orderType == 'HOME' ? scope.row.mainOrderId : scope.row.enginOrderNo }}
+              </template>
+            </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="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> -->

+ 32 - 31
src/views/supply/policy/components/retail_form.vue

@@ -68,7 +68,7 @@
             <el-select
               v-model="mainForm.k3ServiceName"
               placeholder="选择业务员"
-              disabled
+
               style="width: 100%"
               @change="handleUser"
             >
@@ -264,32 +264,32 @@
             </el-select>
           </template>
         </el-table-column>
-        <el-table-column
-          align="center"
-          label="业务员"
-          prop="retiredQty"
-          min-width="160"
-          show-overflow-tooltip
-        >
-          <template slot-scope="scope">
-            <el-select
-              v-model="scope.row.serviceName"
-              size="small"
-              disabled
-              placeholder="选择业务员"
-
-              style="width: 100%"
-              @change="handleUser2($event,scope.row)"
-            >
-              <el-option
-                v-for="item in scope.row.userList"
-                :key="item.adminUserId"
-                :label="item.nickName"
-                :value="item.adminUserId"
-              />
-            </el-select>
-          </template>
-        </el-table-column>
+<!--        <el-table-column-->
+<!--          align="center"-->
+<!--          label="业务员"-->
+<!--          prop="retiredQty"-->
+<!--          min-width="160"-->
+<!--          show-overflow-tooltip-->
+<!--        >-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-select-->
+<!--              v-model="scope.row.serviceName"-->
+<!--              size="small"-->
+<!--              disabled-->
+<!--              placeholder="选择业务员"-->
+
+<!--              style="width: 100%"-->
+<!--              @change="handleUser2($event,scope.row)"-->
+<!--            >-->
+<!--              <el-option-->
+<!--                v-for="item in scope.row.userList"-->
+<!--                :key="item.adminUserId"-->
+<!--                :label="item.nickName"-->
+<!--                :value="item.adminUserId"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
         <el-table-column
           align="center"
           label="实付金额"
@@ -385,7 +385,7 @@
         </el-table-column>
       </el-table>
     </div>
-    
+
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button type="primary" @click="clickSubmitForm">保 存</el-button>
@@ -1399,9 +1399,10 @@ export default {
           this.mainForm.remark = data.remark
           this.mainForm.policyId = data.policyId
           this.policyId = data.policyId
-
-          this.mainForm.k3ServiceName = data.retailOrderItemList[0].wallets[0].serviceName
-          this.mainForm.k3ServiceId = data.retailOrderItemList[0].wallets[0].serviceId
+          this.mainForm.k3ServiceName = data.k3ServiceName
+          this.mainForm.k3ServiceId = data.k3ServiceId
+          // this.mainForm.k3ServiceName = data.retailOrderItemList[0].wallets[0].serviceName
+          // this.mainForm.k3ServiceId = data.retailOrderItemList[0].wallets[0].serviceId
           data.retailOrderItemList.forEach((item) => {
             item.status1 = ''
             item.status2 = ''

+ 2 - 2
src/views/supply/retail/components/retail_form.vue

@@ -150,11 +150,11 @@
           </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">
+        <!-- <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> -->
         <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>

+ 506 - 0
src/views/supply/sales/components/sales_return_form.vue

@@ -0,0 +1,506 @@
+<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="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="系统自动生成" disabled></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"
+              disabled
+              type="date"
+              value-format="yyyy-MM-dd"
+              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="createMan">
+            <el-input v-model="mainForm.createMan" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="经销商编号" prop="jxsNum">
+            <el-input v-model="mainForm.jxsNum" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="16">
+          <el-form-item label="经销商名称" prop="jxsName">
+            <el-input v-model="mainForm.jxsName" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <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-col :xs="24" :sm="8" :lg="8">
+          <el-form-item label="附件" prop="fileUrl">
+            <fileUpload :fileList="fileList" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <div class="main-title">
+      <div class="title">货品信息</div>
+      <div>
+        <!-- <span style="font-size: 14px; margin-right: 10px">仓库</span>
+        <el-select v-model="screenForm.warehouse" placeholder="请选择发货仓库" size="small" filterable clearable :disabled="goodsList.length > 0">
+          <el-option :label="item.name" :value="item.id" v-for="(item, index) in warehouseList" :key="index"></el-option>
+        </el-select>
+        <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">
+      <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="orderId" min-width="180" 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="materialCode" 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="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="refundableQty" min-width="80" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="申请数量" prop="invoiceNum" min-width="110" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.invoiceNum" 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.remark" size="small"></el-input>
+          </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">
+        <el-button type="primary" @click="clickSubmitForm('SAVE')">保 存</el-button>
+        <el-button type="primary" @click="clickSubmitForm('WAIT')">提交审核</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="isShowDialog" width="80%">
+      <el-form ref="screenForm" :model="screenForm" size="small" label-position="left" label-width="90px">
+        <el-row :gutter="20">
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="warehouse" label="选择仓库">
+              <el-select v-model="screenForm.warehouse" placeholder="请选择仓库" size="small" filterable clearable :disabled="goodsList.length > 0" 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="12" :sm="6" :lg="6">
+            <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 prop="dealer" label="经销商">
+              <el-input v-model="screenForm.dealer" placeholder="请输入经销商"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="goodsName" label="产品名称">
+              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item label="规格型号" prop="model">
+              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="18" :lg="18" 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="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="orderNo" min-width="140" 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="correspondName" 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>
+        <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 { addReturn, getSalesGoodsList, getWarehouseList, getDealerList } from "@/api/supply/sales";
+import { getDictList, getCategoryList } from '@/api/common'
+import { findElem } from '@/utils/util'
+import fileUpload from '@/components/Common/file-upload.vue'
+
+export default {
+  components: {
+    fileUpload
+  },
+  name: 'SalesReturnForm',
+  componentName: 'SalesReturnForm',
+  props: ['listItem'],
+  data() {
+    return {
+      mainForm: {
+        orderNum: '',
+        date: '',
+        jxsNum: '',
+        jxsName: '',
+        remark: '',
+        createMan: '',
+      },
+      mainFormRules: {
+        // date: [{ required: true, message: '请选择单据日期', trigger: 'change' }],
+      },
+      dealerList: [],
+      fileList: [],
+      goodsList: [],
+
+      warehouseList: [],
+      isShowDialog: false,
+      screenForm: {
+        warehouse: '',
+        orderNum: '',
+        dealer: '',
+        goodsName: '',
+        model: '',
+      },
+      currentPage: 1,
+      listTotal: 0,
+      // typeList: [],
+      stockList: [],
+      categoryList: [],
+      
+      tableGoodsList: [],
+      tableSelection: [],
+    }
+  },
+
+  created() {
+    this.getDictList();
+    this.getWarehouseList();
+    this.getDealerList();
+    this.getCategoryList();
+    if(this.listItem) {
+      this.getDetail();
+    }else {
+      this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerNumber;
+      this.mainForm.jxsName = JSON.parse(localStorage.getItem("supply_user")).customerName;
+      this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
+    }
+  },
+
+  methods: {
+    // 返回列表
+    goBack() {
+      this.$emit('backListFormDetail');
+    },
+
+    // 获取详情
+    getDetail() {
+      getApplyDetail({id: this.listItem.id}).then(res => {
+        let data = res.data;
+        this.mainForm.orderNum = data.id;
+        this.mainForm.date = data.orderTime;
+        this.mainForm.jxsNum = data.customerNumber;
+        this.mainForm.jxsName = data.customerName;
+        this.mainForm.createMan = data.createBy;
+        this.mainForm.remark = data.remark;
+        this.screenForm.warehouse = data.correspondId;
+        this.fileList = data.fileUrl ? [{
+          url: data.fileUrl,
+          name: data.fileName
+        }] : [];
+        // data.orders.forEach(item => {
+        //   item.orderId = item.id;
+        // })
+        this.goodsList = data.orders;
+        // this.screenForm.type = data.mainId;
+      })
+    },
+
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      })
+    },
+
+    getDictList() {
+      // getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
+      //   this.typeList = res.data;
+      // })
+      getDictList({sysDictEnum: 'STOCK_ORDER'}).then(res => {
+        this.stockList = res.data;
+      })
+    },
+
+    // 获取经销商列表
+    getDealerList() {
+      getDealerList({
+        pageNum: 1,
+        pageSize: -1,
+        bindUser: false
+      }).then(res => {
+        this.dealerList = res.data.records;
+      })
+    },
+
+    // 获取存货类别列表
+    getCategoryList() {
+      getCategoryList({
+        pageNum: 1,
+        pageSize: -1,
+      }).then(res => {
+        this.categoryList = res.data.records;
+      })
+    },
+    
+    // 库存字段
+    stockFilter(item, type) {
+      let STOCK_ORDER_INVOICE = this.stockList.find(o => o.dictCode == 'STOCK_ORDER_INVOICE').dictValue;
+      if(type === 1) {
+        return item.stockAdequate > STOCK_ORDER_INVOICE ? '充足' : item.stockAdequate;
+      }
+      if(type === 2) {
+        return item.stockCorrespond > STOCK_ORDER_INVOICE ? '充足' : item.stockCorrespond;
+      }
+    },
+
+    // 获取商品列表
+    getSalesGoodsList() {
+      getSalesGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        correspondId: this.screenForm.warehouse,
+        orderNo: this.screenForm.orderNum,
+        customerName: this.screenForm.dealer,
+        materialName: this.screenForm.goodsName,
+        specification: this.screenForm.model,
+      }).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.orderId === oldItem.orderId){
+              newGoodsList[j].selected = true;
+              newGoodsList[j].invoiceNum = oldGoodsList[i].invoiceNum;
+              break;
+            }
+          }
+        }
+        // newGoodsList.forEach(item => {
+        //   item.salesMainOrderId = item.id;
+        // })
+
+        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.warehouse) {
+        this.getSalesGoodsList();
+      // }
+    },
+
+    // 列表选择
+    tableSelectionChange(val) {
+      this.tableSelection = val;
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      // if(!this.screenForm.warehouse) {
+      //   return this.$errorMsg('请选择仓库');
+      // }
+      this.currentPage = 1;
+      this.getSalesGoodsList();
+    },
+
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.tableGoodsList = [];
+      // this.getSalesGoodsList();
+    },
+
+    // 更改列表当前页
+    handleTableCurrentChange(val) {
+      this.currentPage = val;
+      this.getSalesGoodsList();
+    },
+
+    // 关闭 弹窗
+    closeDialog() {
+      this.isShowDialog = false;
+    },
+
+    // 检查是否一致
+    isAllEqual(array) {
+      if (array.length > 0) {
+        return !array.some(function(item, index) {
+          return item.id !== array[0].id;
+        });
+      } else {
+        return true;
+      }
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      let list = this.goodsList.concat(this.tableSelection);
+      if(!this.isAllEqual(list)) {
+        return this.$errorMsg('只能选择同一个销售出库单');
+      }
+
+      this.isShowDialog = false;
+      this.tableGoodsList = [];
+
+      this.goodsList = this.goodsList.concat(this.tableSelection);
+    },
+
+    // 删除产品
+    deleteItem(index) {
+      this.goodsList.splice(index, 1);
+    },
+
+    // 保存
+    clickSubmitForm(status) {
+      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].invoiceNum) {
+              this.$errorMsg('请输入申请数量');
+              return;
+            }
+            if(Number(this.goodsList[i].invoiceNum) > 0) {
+              this.$errorMsg('申请数量需为负数');
+              return;
+            }
+          }
+          // if(!this.screenForm.warehouse) {
+          //   return this.$errorMsg('请选择仓库');
+          // }
+
+          let params = {
+            // id: this.listItem ? this.listItem.id : '',
+            // orderTime: this.mainForm.date + ' 00:00:00',
+            remark: this.mainForm.remark,
+            fileUrl: this.fileList && this.fileList.length > 0 ? this.fileList[0].url : '',
+            fileName: this.fileList && this.fileList.length > 0 ? this.fileList[0].name : '',
+            correspondId: this.goodsList[0].correspondId,
+            correspondName: this.goodsList[0].correspondName,
+            id: this.goodsList[0].id,
+            saleOrderData: this.goodsList,
+            examineStatus: status,
+          }
+          if(this.listItem) {
+            editApply(params).then(res => {
+              this.$successMsg('编辑成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }else {
+            addReturn(params).then(res => {
+              this.$successMsg('添加成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }
+        }
+      })
+    },
+  }
+}
+</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>

+ 13 - 1
src/views/supply/sales/sales_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div v-show="!isShowDetail && !isShowExamine">
+    <div v-show="!isShowDetail && !isShowExamine && !isShowReturnForm">
       <!-- 筛选条件 -->
       <div class="screen-container">
         <el-form ref="screenForm" :model="screenForm" label-width="90px" size="small" label-position="left">
@@ -75,6 +75,7 @@
       <div class="mymain-container">
         <div class="btn-group clearfix">
           <div class="fl">
+            <el-button size="small" type="primary" icon="el-icon-plus" @click="toReturnForm()" v-if="$checkBtnRole('add', $route.meta.roles)">退货申请</el-button>
             <el-button size="small" type="warning" icon="el-icon-finished" @click="batchExamine" :disabled="multipleSelection.length < 1" v-if="$checkBtnRole('examine', $route.meta.roles)">批量审批</el-button>
           </div>
           <div class="fr">
@@ -159,6 +160,7 @@
     
     <SalesDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
     <SalesExamine :listItem="queryItem" v-if="isShowExamine" @backListFormExamine="backList" />
+    <SalesReturnForm :listItem="queryItem" v-if="isShowReturnForm" @backListFormDetail="backList" />
 
   </div>
 </template>
@@ -167,6 +169,7 @@
 import { getList, examineJudge, examineBatch, abandonData } from "@/api/supply/sales";
 import SalesDetail from "@/views/supply/sales/components/sales_detail";
 import SalesExamine from "@/views/supply/sales/components/sales_examine";
+import SalesReturnForm from "@/views/supply/sales/components/sales_return_form";
 import ExamineDialog from "@/components/Common/examine-dialog";
 
 let that
@@ -174,6 +177,7 @@ export default {
   components: {
     SalesDetail,
     SalesExamine,
+    SalesReturnForm,
     ExamineDialog,
   },
   filters: {
@@ -217,6 +221,7 @@ export default {
       queryItem: {},
       isShowDetail: false,
       isShowExamine: false,
+      isShowReturnForm: false,
 
       multipleSelection: [],
       isShowExamineDialog: false,
@@ -321,6 +326,12 @@ export default {
       return result;
     },
 
+    // 进入表单
+    toReturnForm(item) {
+      this.queryItem = item;
+      this.isShowReturnForm = true;
+    },
+
     // 进入详情
     toDetail(item) {
       this.queryItem = item;
@@ -341,6 +352,7 @@ export default {
       this.queryItem = {};
       this.isShowDetail = false;
       this.isShowExamine = false;
+      this.isShowReturnForm = false;
     },
 
     handleSelectionChange(val) {

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.