소스 검색

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

chen 3 년 전
부모
커밋
d06fdaa76a
29개의 변경된 파일1420개의 추가작업 그리고 363개의 파일을 삭제
  1. 9 0
      src/api/common.js
  2. 2 2
      src/api/stock.js
  3. 20 9
      src/api/supply/apply.js
  4. 1 1
      src/api/supply/implement.js
  5. 20 2
      src/api/supply/reserve.js
  6. 9 1
      src/views/basic_data/material/classify_list.vue
  7. 41 41
      src/views/basic_data/material/components/modify_list-apply.vue
  8. 2 1
      src/views/basic_data/material/components/modify_list-approval.vue
  9. 9 2
      src/views/basic_data/material/material_list.vue
  10. 9 9
      src/views/basic_data/material/modify_list.vue
  11. 4 4
      src/views/basic_data/material/price_list.vue
  12. 2 1
      src/views/basic_data/warehouse/warehouse_site.vue
  13. 15 3
      src/views/sales_policy/codealer_list.vue
  14. 0 1
      src/views/sales_policy/components/AddCondition.vue
  15. 3 2
      src/views/sales_policy/components/Distributor.vue
  16. 5 7
      src/views/sales_rebate/rebate_list.vue
  17. 9 1
      src/views/setting/account.vue
  18. 1 0
      src/views/setting/department.vue
  19. 2 1
      src/views/setting/menu.vue
  20. 32 18
      src/views/stock/reserved_stock.vue
  21. 88 27
      src/views/stock/stock_list.vue
  22. 20 29
      src/views/supply/apply/components/apply_form.vue
  23. 525 0
      src/views/supply/apply/components/engin_form.vue
  24. 97 52
      src/views/supply/apply/engin_list.vue
  25. 87 40
      src/views/supply/implement/implement_list.vue
  26. 216 0
      src/views/supply/policy/components/Untitled-1.json
  27. 25 17
      src/views/supply/policy/components/retail_form.vue
  28. 166 91
      src/views/supply/reserve/components/reserve_form.vue
  29. 1 1
      src/views/supply/retail/retail_list.vue

+ 9 - 0
src/api/common.js

@@ -34,4 +34,13 @@ export function getFileUrl(params) {
     method: 'get',
     params
   })
+}
+
+// 获取产品小类列表
+export function getSmallList(params) {
+  return request({
+    url: '/product-category/sub-list',
+    method: 'get',
+    params
+  })
 }

+ 2 - 2
src/api/stock.js

@@ -12,7 +12,7 @@ export function getStockList(params) {
 // 获取仓库列表
 export function getWarehouseList(params) {
   return request({
-    url: '/stock/list',
+    url: '/stock/listStock',
     method: 'get',
     params
   })
@@ -34,4 +34,4 @@ export function getReservedList(params) {
     method: 'get',
     params
   })
-}
+}

+ 20 - 9
src/api/supply/apply.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 获取列表
+// 零售发货申请单 - 获取列表
 export function getApplyList(params) {
   return request({
     url: '/invoice/list',
@@ -9,7 +9,7 @@ export function getApplyList(params) {
   })
 }
 
-// 获取详情
+// 零售发货申请单 - 获取详情
 export function getApplyDetail(params) {
   return request({
     url: '/invoice/detail',
@@ -18,7 +18,7 @@ export function getApplyDetail(params) {
   })
 }
 
-// 审批
+// 零售发货申请单 - 审批
 export function examineApply(params) {
   return request({
     url: '/invoice/approvalInvoice',
@@ -45,7 +45,7 @@ export function checkStock(params) {
   })
 }
 
-// 申请/撤回
+// 零售发货申请单 - 申请/撤回
 export function submitApply(params) {
   return request({
     url: '/invoice/submit',
@@ -54,7 +54,7 @@ export function submitApply(params) {
   })
 }
 
-// 删除
+// 零售发货申请单 - 删除
 export function deleteApply(params) {
   return request({
     url: '/invoice/delete',
@@ -63,7 +63,7 @@ export function deleteApply(params) {
   })
 }
 
-// 新增
+// 零售发货申请单 - 新增
 export function addApply(params) {
   return request({
     url: '/invoice/add',
@@ -72,7 +72,7 @@ export function addApply(params) {
   })
 }
 
-// 编辑
+// 零售发货申请单 - 编辑
 export function editApply(params) {
   return request({
     url: '/invoice/update',
@@ -90,10 +90,10 @@ export function getWarehouseList(params) {
   })
 }
 
-// 获取产品列表
+// 零售发货申请单 - 获取产品列表
 export function getGoodsList(params) {
   return request({
-    url: '/retail/list',
+    url: '/invoice/listOrder',
     method: 'get',
     params
   })
@@ -106,4 +106,15 @@ export function getDealerList(params) {
     method: 'get',
     params
   })
+}
+
+
+
+// 工程发货申请单 - 获取列表
+export function getEnginList(params) {
+  return request({
+    url: '/invoice/listProject',
+    method: 'get',
+    params
+  })
 }

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

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 获取列表
 export function getList(params) {
   return request({
-    url: '/transfer/list',
+    url: '/retail/exec/list',
     method: 'get',
     params
   })

+ 20 - 2
src/api/supply/reserve.js

@@ -21,7 +21,7 @@ export function getDetail(params) {
 // 关闭
 export function closeData(params) {
   return request({
-    url: '/reserve/update',
+    url: '/reserve/close',
     method: 'post',
     params
   })
@@ -30,8 +30,26 @@ export function closeData(params) {
 // 获取产品列表
 export function getGoodsList(params) {
   return request({
-    url: '/retail/list',
+    url: '/reserve/listOrder',
     method: 'get',
     params
   })
+}
+
+// 新增
+export function addData(params) {
+  return request({
+    url: '/reserve/add',
+    method: 'post',
+    data: params
+  })
+}
+
+// 编辑
+export function editData(params) {
+  return request({
+    url: '/reserve/updateReserved',
+    method: 'post',
+    data: params
+  })
 }

+ 9 - 1
src/views/basic_data/material/classify_list.vue

@@ -177,7 +177,15 @@
             autocomplete="off"
             v-model="addGroupForm.productCategoryNumber"
             placeholder="请输入"
+            v-if="addGroupFormType == 'add' "
           ></el-input>
+            <el-input v-else
+              autocomplete="off"
+              v-model="addGroupForm.productCategoryNumber"
+              placeholder="请输入"
+              v-else disabled='disabled'
+            ></el-input>
+
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -474,4 +482,4 @@ export default {
     }
   }
 }
-</style>
+</style>

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

@@ -21,47 +21,47 @@
               ></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="调价业务员">
-              <el-select
-                placeholder="请选择调价业务员"
-                filterable
-                @change="handleUser"
-                v-model="serviceId"
-              >
-                <el-option
-                  v-for="(item, index) in userList"
-                  :label="item.nickName"
-                  :value="item.roleId"
-                  :key="index"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="调价部门">
-              <el-input
-                placeholder="调价部门"
-                disabled
-                v-model="adminCompanyName"
-              ></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="销售类型">
-              <el-select
-                placeholder="请选择销售类型"
-                filterable
-                v-model="saleTypeId"
-              >
-                <el-option
-                  v-for="item in typeList"
-                  :label="item.saleName"
-                  :value="item.id"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+<!--          <el-col :xs="24" :sm="12" :lg="6">-->
+<!--            <el-form-item label="调价业务员">-->
+<!--              <el-select-->
+<!--                placeholder="请选择调价业务员"-->
+<!--                filterable-->
+<!--                @change="handleUser"-->
+<!--                v-model="serviceId"-->
+<!--              >-->
+<!--                <el-option-->
+<!--                  v-for="(item, index) in userList"-->
+<!--                  :label="item.nickName"-->
+<!--                  :value="item.roleId"-->
+<!--                  :key="index"-->
+<!--                ></el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :xs="24" :sm="12" :lg="6">-->
+<!--            <el-form-item label="调价部门">-->
+<!--              <el-input-->
+<!--                placeholder="调价部门"-->
+<!--                disabled-->
+<!--                v-model="adminCompanyName"-->
+<!--              ></el-input>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :xs="24" :sm="12" :lg="6">-->
+<!--            <el-form-item label="销售类型">-->
+<!--              <el-select-->
+<!--                placeholder="请选择销售类型"-->
+<!--                filterable-->
+<!--                v-model="saleTypeId"-->
+<!--              >-->
+<!--                <el-option-->
+<!--                  v-for="item in typeList"-->
+<!--                  :label="item.saleName"-->
+<!--                  :value="item.id"-->
+<!--                ></el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
           <el-col :xs="24" :sm="12" :lg="6">
             <el-form-item label="文件编码">
               <el-input placeholder="请输入" v-model="base.remark"></el-input>

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

@@ -295,9 +295,10 @@ export default {
     onSubmit() {
 
       const params = {
-        ...this.detail
+        ...this.detail,
 
       };
+        params.examineResult = params.examineResult == "通过" ? true : false ;
       getProductRriceConfirm(params).then((res) => {
         this.$successMsg("已提交审核");
       });

+ 9 - 2
src/views/basic_data/material/material_list.vue

@@ -92,13 +92,20 @@
               label="是否维护商城资料"
               prop="maintainData"
               min-width="100"
-            ></el-table-column>
+            >
+
+            </el-table-column>
             <el-table-column
               align="center"
               label="是否维护内外机档案"
               prop="maintainFiles"
               min-width="100"
-            ></el-table-column>
+            >
+              <template slot-scope="scope">
+                <el-tag type="success" v-if="scope.row.isSheath==true">是</el-tag>
+                <el-tag type="danger" v-else>否</el-tag>
+              </template>
+            </el-table-column>
             <el-table-column
               align="center"
               label="基本单位"

+ 9 - 9
src/views/basic_data/material/modify_list.vue

@@ -108,7 +108,7 @@
             <el-table-column
               align="center"
               label="单据号"
-              prop="billId"
+              prop="updPriceBillId"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
@@ -130,14 +130,14 @@
             <el-table-column
               align="center"
               label="产品品类"
-              prop="productCategory"
+              prop="mainName"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
               align="center"
               label="存货编码"
-              prop="billId"
+              prop="materialNumber"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
@@ -158,7 +158,7 @@
             <el-table-column
               align="center"
               label="计量单位"
-              prop="baseUnitId"
+              prop="unit"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
@@ -220,21 +220,21 @@
             <el-table-column
               align="center"
               label="调价部门"
-              prop="modifyPriceDepartment"
+              prop="adminWebsitName"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
               align="center"
               label="调价业务员"
-              prop="operatorName"
+              prop="serviceName"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
               align="center"
               label="制单日期"
-              prop="preparationDate"
+              prop="createTime"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
@@ -291,13 +291,13 @@
                 <el-button
                   type="text"
                   class="textColor"
-                  @click="approvalFn(scope.row.id)"
+                  @click="approvalFn(scope.row.updPriceBillId)"
                   >审批</el-button
                 >
                 <el-button
                   type="text"
                   class="textColor"
-                  @click="detailFn(scope.row.id)"
+                  @click="detailFn(scope.row.updPriceBillId)"
                   >详情</el-button
                 >
               </template>

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

@@ -119,14 +119,14 @@
           <el-table-column
             align="center"
             label="存货编码"
-            prop="number"
+            prop="materialNumber"
             min-width="160"
             show-overflow-tooltip
           ></el-table-column>
           <el-table-column
             align="center"
             label="存货名称"
-            prop="name"
+            prop="materialName"
             min-width="160"
             show-overflow-tooltip
           ></el-table-column>
@@ -140,14 +140,14 @@
           <el-table-column
             align="center"
             label="销售类型"
-            prop="saleTypeId"
+            prop="saleTypeName"
             min-width="160"
             show-overflow-tooltip
           ></el-table-column>
           <el-table-column
             align="center"
             label="主计量单位名称"
-            prop="company"
+            prop="unit"
             min-width="160"
             show-overflow-tooltip
           ></el-table-column>

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

@@ -54,7 +54,8 @@
               >
                 <el-button
                   slot="reference"
-                  type="text"
+                    type="primary"
+                   size="small"
                   class="textColor el-popover-left"
                   >批量删除</el-button
                 >

+ 15 - 3
src/views/sales_policy/codealer_list.vue

@@ -52,7 +52,12 @@
       <el-table :data="dataList" border style="width: 100%">
         <el-table-column prop="name" label="操作" width="120" align="center">
           <template slot-scope="scope">
-            <el-button type="text" size="small" @click=" id = scope.row.id ,isShow=false">详情</el-button>
+            <el-button
+              type="text"
+              size="small"
+              @click="(id = scope.row.id), (isShow = false)"
+              >详情</el-button
+            >
           </template>
         </el-table-column>
         <el-table-column prop="status" label="状态" width="120" align="center">
@@ -77,7 +82,12 @@
           align="center"
         >
         </el-table-column>
-        <el-table-column prop="title" label="表头备注" width="200" align="center">
+        <el-table-column
+          prop="title"
+          label="表头备注"
+          width="200"
+          align="center"
+        >
         </el-table-column>
         <el-table-column
           prop="customerCount"
@@ -110,7 +120,7 @@
       </el-pagination>
     </div>
   </el-container>
-  <Distributor v-else :cid='id' />
+  <Distributor v-else :cid="id" />
 </template>
 
 <script>
@@ -146,9 +156,11 @@ export default {
       getCustomerlist(params).then((res) => {
         console.log(res);
         this.dataList = res.data.records;
+        this.listTotal = res.data.total
         this.listLoading = false;
       });
 
+
     },
   },
   components: {

+ 0 - 1
src/views/sales_policy/components/AddCondition.vue

@@ -147,7 +147,6 @@
               v-for="(len, index) in conditionBoxs.length - 1"
             >
               <el-form-item :label="'配提' + (index + 1) + '比例'">
-              {{index}}
                 <el-input
                   size="small"
                   :readonly="!id?false:true"

+ 3 - 2
src/views/sales_policy/components/Distributor.vue

@@ -142,13 +142,13 @@
         >
         </el-table-column>
         <el-table-column
-          v-if="!$store.getters.customerId"
           fixed="right"
           label="操作"
           align="center"
           width="200"
         >
-          <template slot-scope="scope">
+          <!--  v-if="!$store.getters.customerId"-->
+          <template slot-scope="scope" >
             <el-button
               type="text"
               size="small"
@@ -164,6 +164,7 @@
             >
             <!-- <el-button type="text" size="small">删除</el-button> -->
           </template>
+
         </el-table-column>
       </el-table>
       <!-- 分页 -->

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

@@ -192,9 +192,7 @@
           <el-form-item label="产品使用品类" prop="mainName">
             <el-input v-model="dialogForm.mainName" :readonly="true"></el-input>
           </el-form-item>
-          <el-form-item label="产品使用品类" prop="mainName">
-            <el-input v-model="dialogForm.mainName" :readonly="true"></el-input>
-          </el-form-item>
+
           <el-form-item label="返利折扣比例" prop="rebateRate">
 
            <el-input
@@ -273,14 +271,14 @@ export default {
           lable: "销售类型名称",
           widht: 160,
         },
-          {
+        {
           prop: "mainName",
           lable: "产品大类",
           widht: 160,
         },
         {
           prop: "name",
-          lable: "返利使用钱包",
+          lable: "返利类型",
           widht: 160,
         },
         {
@@ -320,11 +318,11 @@ export default {
           label: "状态",
         },
         {
-          value: true,
+          value: 1,
           label: "已启用",
         },
         {
-          value: false,
+          value: 0,
           label: "已停用",
         },
       ],

+ 9 - 1
src/views/setting/account.vue

@@ -163,6 +163,11 @@
             <el-radio :label="true">是</el-radio>
           </el-radio-group>
         </el-form-item>
+        <el-form-item label="所属集团" prop="company" v-show="roleObj.type === 0 && roleObj.name === '经销商' && !AccountForm.isGroup">
+          <el-select v-model="AccountForm.company" placeholder="请选择所属集团" style="width: 100%;">
+            <el-option :label="item.name" :value="item.id" v-for="(item, index) in dealerList" :key="index"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="密码" prop="newPassword">
           <el-input v-model="AccountForm.newPassword" ref="password1" autocomplete="off" placeholder="请输入密码" :type="passwordType1"></el-input>
           <span class="show-pwd" @click="showPwd(1)">
@@ -279,6 +284,7 @@ export default {
         dealer: '', //经销商
         role: '', // 角色组
         isGroup: false,
+        company: '',
         newPassword: '', // 新密码
         confirmPassword: '', // 确认密码
       },
@@ -429,7 +435,7 @@ export default {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
         adminWebsitId: this.selectDepartment ? this.selectDepartment.adminWebsitId : '',
-        keyword: this.screenForm.name
+        userName: this.screenForm.name
       };
 
       getAccountList(params).then(res => {
@@ -514,6 +520,7 @@ export default {
           this.AccountForm.merchant = res.data.companyWechatId;
           this.AccountForm.dealer = res.data.customerId;
           this.AccountForm.isGroup = res.data.isGroupCompany;
+          this.AccountForm.company = res.data.parentCustomerId;
           this.$refs.tree.setCheckedKeys(res.data.adminWebsitIds || []);
         })
       }
@@ -542,6 +549,7 @@ export default {
             if(this.roleObj.name === '经销商') {
               params.customerId = this.AccountForm.dealer;
               params.isGroupCompany = this.AccountForm.isGroup;
+              params.parentCustomerId = this.AccountForm.company;
             }
           }else {
             params.adminCompanyId = this.AccountForm.merchant;

+ 1 - 0
src/views/setting/department.vue

@@ -134,6 +134,7 @@ export default {
     getList() {
       getDepartmentList().then(res => {
         this.dataList = res.data;
+        this.listTotal = res.data.length;
       })
     },
 

+ 2 - 1
src/views/setting/menu.vue

@@ -518,7 +518,8 @@ export default {
     getList() {
       this.listLoading = true;
       getMenuList({
-        adminUserId: this.userid
+        adminUserId: this.userid,
+        flag: 'menu',
       }).then(res => {
         this.dataList = res.data;
       })

+ 32 - 18
src/views/stock/reserved_stock.vue

@@ -2,24 +2,23 @@
   <div class="app-container">
     <!-- 筛选条件 -->
     <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="70px" size="small" label-position="left">
+      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="small" label-position="left">
         <el-row :gutter="20">
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="全部">
-                <el-option label="全部" value=""></el-option>
+            <el-form-item label="产品大类" prop="type">
+              <el-select v-model="screenForm.type" placeholder="请选择产品大类" clearable>
                 <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="name">
-              <el-input v-model="screenForm.name" placeholder="请输入产品名称"></el-input>
+            <el-form-item label="产品名称" prop="goodsName">
+              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="code">
-              <el-input v-model="screenForm.code" placeholder="请输入产品编码"></el-input>
+            <el-form-item label="产品编码" prop="goodsNum">
+              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
@@ -27,8 +26,18 @@
               <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="jxsNum">
+              <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="经销商名称" prop="jxsName">
+              <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
+            </el-form-item>
+          </el-col>
           
-          <el-col :xs="24" :sm="24" :lg="24" class="tr">
+          <el-col :xs="24" :sm="24" :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>
@@ -89,9 +98,11 @@ export default {
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
         type: '',
-        name: '',
-        code: '',
+        goodsName: '',
+        goodsNum: '',
         model: '',
+        jxsName: '',
+        jxsNum: '',
       },
       typeList: [],
     }
@@ -100,11 +111,12 @@ export default {
   computed: {
     exParams() {
       return {
-        name: this.screenForm.warehouse,
-        materialName: this.screenForm.name,
-        materialNumber: this.screenForm.code,
+        materialName: this.screenForm.goodsName,
+        materialNumber: this.screenForm.goodsNum,
         specification: this.screenForm.model,
-        categoryName: this.screenForm.type,
+        mainNumber: this.screenForm.type,
+        customerName: this.screenForm.jxsName,
+        customerNumber: this.screenForm.jxsNum,
       }
     },
   },
@@ -137,10 +149,12 @@ export default {
       let params = {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
-        materialName: this.screenForm.name,
-        materialNumber: this.screenForm.code,
+        materialName: this.screenForm.goodsName,
+        materialNumber: this.screenForm.goodsNum,
         specification: this.screenForm.model,
-        categoryName: this.screenForm.type,
+        mainNumber: this.screenForm.type,
+        customerName: this.screenForm.jxsName,
+        customerNumber: this.screenForm.jxsNum,
       };
       getReservedList(params).then((res) => {
         this.dataList = res.data.records;

+ 88 - 27
src/views/stock/stock_list.vue

@@ -6,37 +6,54 @@
         <el-row :gutter="20">
           <el-col :xs="24" :sm="12" :lg="6">
             <el-form-item label="仓库" prop="warehouse">
-              <el-select v-model="screenForm.warehouse" placeholder="请选择仓库">
-                <el-option label="全部" value=""></el-option>
-                <el-option :label="item.name" :value="item.name" v-for="(item, index) in warehouseList" :key="index"></el-option>
+              <el-select v-model="screenForm.warehouse" placeholder="请选择仓库" @change="changeWarehouse" clearable>
+                <el-option :label="item.name" :value="item.id" v-for="(item, index) in warehouseList" :key="index"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="name">
-              <el-input v-model="screenForm.name" placeholder="请输入产品名称"></el-input>
+            <el-form-item label="仓位" prop="position">
+              <el-select v-model="screenForm.position" placeholder="请选择仓位" clearable>
+                <el-option :label="item.name" :value="item.id" v-for="(item, index) in positionList" :key="index"></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="code">
-              <el-input v-model="screenForm.code" placeholder="请输入产品编码"></el-input>
+            <el-form-item label="物料代码" prop="goodsCode">
+              <el-input v-model="screenForm.goodsCode" placeholder="请输入物料代码"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="规格型号" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
+            <el-form-item label="产品名称" prop="goodsName">
+              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="全部">
-                <el-option label="全部" value=""></el-option>
+            <el-form-item label="产品大类" prop="type">
+              <el-select v-model="screenForm.type" placeholder="请选择产品大类" @change="changeType" clearable>
                 <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          
-          <el-col :xs="24" :sm="12" :lg="18" class="tr">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="产品类别" prop="smallType">
+              <el-select v-model="screenForm.smallType" placeholder="请选择产品类别" clearable>
+                <el-option v-for="item in smallList" :key="item.kingDeeCategoryId" :label="item.kingDeeCategoryName" :value="item.kingDeeCategoryId"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="产品编码" prop="goodsNum">
+              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :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>
@@ -54,14 +71,18 @@
       </div>
       <div class="table">
         <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
-          <el-table-column align="center" label="产品品类" prop="categoryName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品大类" prop="mainName" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品类别" prop="categoryName" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="单位" prop="baseUnitId" min-width="100" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="总库存数量" prop="stockQty" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="可用库数" prop="stockAdequate" min-width="120" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="经销商预留库存" prop="reservedNum" min-width="140" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="经销商暂扣库存" prop="temporaryNum" min-width="140" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="仓库" prop="name" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="开单未提数量" prop="num" min-width="140" show-overflow-tooltip></el-table-column>
         </el-table>
       </div>
     </div>
@@ -84,7 +105,7 @@
 
 <script>
 import { getStockList, getWarehouseList } from "@/api/stock";
-import { getDictList } from '@/api/common'
+import { getDictList, getSmallList } from '@/api/common'
 
 export default {
   data() {
@@ -96,24 +117,32 @@ export default {
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
         warehouse: '',
-        name: '',
-        code: '',
+        position: '',
+        goodsName: '',
+        goodsNum: '',
+        goodsCode: '',
         model: '',
         type: '',
+        smallType: '',
       },
       warehouseList: [],
+      positionList: [],
       typeList: [],
+      smallList: [],
     }
   },
 
   computed: {
     exParams() {
       return {
-        name: this.screenForm.warehouse,
-        materialName: this.screenForm.name,
-        materialNumber: this.screenForm.code,
+        correspondId: this.screenForm.warehouse,
+        stockId: this.screenForm.position,
+        materialName: this.screenForm.goodsName,
+        materialNumber: this.screenForm.goodsNum,
+        materialOldNumber: this.screenForm.goodsCode,
         specification: this.screenForm.model,
-        categoryName: this.screenForm.type,
+        mainNumber: this.screenForm.type,
+        categoryId: this.screenForm.smallType,
       }
     },
   },
@@ -144,12 +173,41 @@ export default {
       })
     },
 
+    // 获取产品大类列表
     getDictList() {
       getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
         this.typeList = res.data;
       })
     },
 
+    // 获取产品小类列表
+    getSmallList() {
+      getSmallList({id: this.screenForm.type}).then(res => {
+        this.smallList = res.data;
+      })
+    },
+
+    // 更改大类
+    changeType() {
+      this.screenForm.smallType = '';
+      if(this.screenForm.type) {
+        this.getSmallList();
+      }else {
+        this.smallList = [];
+      }
+    },
+
+    // 更改仓库
+    changeWarehouse() {
+      this.screenForm.position = '';
+      if(this.screenForm.warehouse) {
+        let obj = this.warehouseList.find(o => o.id == this.screenForm.warehouse);
+        this.positionList = obj.kingDeeStocks;
+      }else {
+        this.positionList = [];
+      }
+    },
+
     // 查询列表
     getList() {
       this.listLoading = true;
@@ -157,11 +215,14 @@ export default {
       let params = {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
-        name: this.screenForm.warehouse,
-        materialName: this.screenForm.name,
-        materialNumber: this.screenForm.code,
+        correspondId: this.screenForm.warehouse,
+        stockId: this.screenForm.position,
+        materialName: this.screenForm.goodsName,
+        materialNumber: this.screenForm.goodsNum,
+        materialOldNumber: this.screenForm.goodsCode,
         specification: this.screenForm.model,
-        categoryName: this.screenForm.type,
+        mainNumber: this.screenForm.type,
+        categoryId: this.screenForm.smallType,
       };
       getStockList(params).then((res) => {
         this.dataList = res.data.records;

+ 20 - 29
src/views/supply/apply/components/apply_form.vue

@@ -6,6 +6,8 @@
       <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">
@@ -29,16 +31,19 @@
             <el-input v-model="mainForm.createMan" readonly></el-input>
           </el-form-item>
         </el-col>
-        <el-col :xs="24" :sm="24" :lg="16">
-          <el-form-item label="备注" prop="remark">
-            <el-input v-model="mainForm.remark" placeholder="请输入备注"></el-input>
+        <el-col :xs="24" :sm="12" :lg="8">
+          <el-form-item label="经销商编号" prop="jxsNum">
+            <el-input v-model="mainForm.jxsNum" readonly></el-input>
           </el-form-item>
         </el-col>
-        <el-col :xs="24" :sm="12" :lg="8">
-          <el-form-item label="经销商" prop="jxsNum">
-            <el-select v-model="mainForm.jxsNum" placeholder="请选择经销商" style="width: 100%;" disabled>
-              <el-option :label="item.name" :value="item.id" v-for="(item, index) in dealerList" :key="index"></el-option>
-            </el-select>
+        <el-col :xs="24" :sm="12" :lg="16">
+          <el-form-item label="经销商名称" prop="jxsName">
+            <el-input v-model="mainForm.jxsName" readonly></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :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">
@@ -205,6 +210,7 @@ export default {
         orderNum: '',
         date: '',
         jxsNum: '',
+        jxsName: '',
         remark: '',
         createMan: '',
       },
@@ -253,6 +259,7 @@ export default {
       this.getDetail();
     }else {
       this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerId;
+      this.mainForm.jxsName = JSON.parse(localStorage.getItem("supply_user")).customerName;
       this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
     }
   },
@@ -270,6 +277,7 @@ export default {
         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;
@@ -316,34 +324,17 @@ export default {
       getGoodsList({
         pageNum: this.currentPage,
         pageSize: 10,
-        stockId: this.screenForm.warehouse,
+        correspondId: this.screenForm.warehouse,
         mainId: this.screenForm.type,
         id: this.screenForm.orderNum,
-        examineStatus: 'OK',
-        type: 1,
       }).then(res => {
-        let goodsList = [];
         res.data.records.forEach(item => {
-          goodsList.push({
-            orderId: item.id,
-            retailId: item.retailId,
-            saleTypeName: item.saleTypeName,
-            materialId: item.materialId,
-            materialCode: item.materialCode,
-            materialName: item.materialName,
-            specification: item.specification,
-            unit: item.unit,
-            qty: item.qty,
-            invoiceNum: item.invoiceNum,
-            alreadyInvoiceNum: item.alreadyInvoiceNum,
-            refundableQty: item.refundableQty,
-            stockAdequate: item.stockAdequate,
-            stockCorrespond: item.stockCorrespond,
-          })
+          item.mainOrderId = item.id;
+          delete item.id;
         });
 
         let oldGoodsList = this.goodsList;
-        let newGoodsList = 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++) {

+ 525 - 0
src/views/supply/apply/components/engin_form.vue

@@ -0,0 +1,525 @@
+<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="id">
+            <el-input v-model="mainForm.orderNum" placeholder="系统自动生成" readonly></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :sm="12" :lg="8" style="height: 51px;">
+          <el-form-item label="单据日期" prop="date">
+            <el-date-picker
+              v-model="mainForm.date"
+              type="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" readonly></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" readonly></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" readonly></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="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="数量" prop="qty" min-width="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"></el-input>
+          </template>
+        </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="refundableQty" min-width="100" show-overflow-tooltip> </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="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 || tableSelection.length > 0">
+                <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 || 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" 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="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="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="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="alreadyInvoiceNum" 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="stockAdequate" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.stockAdequate | stockFilter}}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="对应库存数量" prop="stockCorrespond" min-width="110" 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 { getApplyDetail, addApply, editApply, getGoodsList, getWarehouseList, getDealerList } from "@/api/supply/apply";
+import { getDictList } from '@/api/common'
+import { findElem } from '@/utils/util'
+import fileUpload from '@/components/Common/file-upload.vue'
+
+export default {
+  components: {
+    fileUpload
+  },
+  name: 'ApplyForm',
+  componentName: 'ApplyForm',
+  props: ['listItem'],
+  filters: {
+    stockFilter(val) {
+      const MAP = {
+        0: '不充足',
+        1: '充足'
+      }
+      return MAP[val]
+    }
+  },
+  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: '',
+      },
+      currentPage: 1,
+      listTotal: 0,
+      typeList: [],
+      
+      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();
+    if(this.listItem) {
+      this.getDetail();
+    }else {
+      this.mainForm.jxsNum = JSON.parse(localStorage.getItem("supply_user")).customerId;
+      this.mainForm.jxsName = JSON.parse(localStorage.getItem("supply_user")).customerName;
+      this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
+    }
+  },
+
+  methods: {
+    // 返回列表
+    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;
+      })
+    },
+
+    // 获取仓库列表
+    getWarehouseList() {
+      getWarehouseList({
+        pageNum: 1,
+        pageSize: -1
+      }).then((res) => {
+        this.warehouseList = res.data.records;
+      })
+    },
+
+    getDictList() {
+      getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
+        this.typeList = res.data;
+      })
+    },
+
+    // 获取经销商列表
+    getDealerList() {
+      getDealerList({
+        pageNum: 1,
+        pageSize: -1,
+        bindUser: false
+      }).then(res => {
+        this.dealerList = res.data.records;
+      })
+    },
+
+    // 获取商品列表
+    getGoodsList() {
+      getGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        correspondId: this.screenForm.warehouse,
+        mainId: this.screenForm.type,
+        id: this.screenForm.orderNum,
+      }).then(res => {
+        res.data.records.forEach(item => {
+          item.mainOrderId = item.id;
+          delete item.id;
+        });
+
+        let oldGoodsList = this.goodsList;
+        let newGoodsList = res.data.records;
+        for(let i = 0; i < oldGoodsList.length; i++) {
+          let oldItem = oldGoodsList[i]
+          for(let j = 0; j < newGoodsList.length; j++) {
+            let newItem = newGoodsList[j]
+            if(newItem.materialId === oldItem.materialId){
+              newGoodsList[j].selected = true;
+              break;
+            }
+          }
+        }
+
+        this.tableGoodsList = newGoodsList;
+        this.listTotal = res.data.total;
+      })
+    },
+
+    // 查询重复值并禁选
+    checkboxSelect(row, rowIndex) {
+      if (row.selected) {
+        return false // 禁用
+      }else{
+        return true // 不禁用
+      }
+    },
+
+    // 点击 选择商品
+    openDialog() {
+      if(!this.screenForm.warehouse) {
+        return this.$errorMsg('请选择仓库');
+      }
+      this.isShowDialog = true;
+      if(this.screenForm.warehouse && this.screenForm.type) {
+        this.getGoodsList();
+      }
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      if(!this.screenForm.warehouse || !this.screenForm.type) {
+        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].materialId == newArr[j].materialId){ // 让allArr数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
+            flag = false;
+          }
+        }
+        if(flag){ // 判断是否重复
+          newArr.push(allArr[i]); // 不重复的放入新数组。  新数组的内容会继续进行上边的循环。
+        }
+      }
+      return newArr;
+    },
+
+    // 确定 添加产品
+    submitAddGoods() {
+      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].orderId == allList[i].orderId){
+            submitList.push(allList[i]);
+          }
+        }
+      }
+      // this.goodsList = this.goodsList.concat(submitList);
+
+      this.goodsList = this.delRepeat(submitList, this.goodsList);
+      this.isShowDialog = false;
+      this.tableGoodsList = [];
+    },
+
+    // 删除产品
+    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) {
+          for(let i=0; i<this.goodsList.length; i++) {
+            if(!this.goodsList[i].invoiceNum) {
+              this.$errorMsg('请输入申请数量');
+              return;
+            }
+          }
+          for(let i=0; i<this.goodsList.length; i++) {
+            if(this.goodsList[i].invoiceNum > this.goodsList[i].qty) {
+              this.$errorMsg('申请数量不能大于总数量');
+              return;
+            }
+          }
+
+          let correspondName = this.warehouseList[findElem(this.warehouseList, 'id', this.screenForm.warehouse)].name;
+          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 : '',
+            orderType: 1, // 1零售单 2家用工程 3商用工程
+            correspondId: this.screenForm.warehouse,
+            correspondName,
+            orders: this.goodsList,
+            examineStatus: status,
+          }
+          if(this.listItem) {
+            editApply(params).then(res => {
+              this.$successMsg('编辑成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }else {
+            addApply(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>

+ 97 - 52
src/views/supply/apply/engin_list.vue

@@ -1,19 +1,15 @@
 <template>
   <div class="app-container">
-    <div v-show="!isShowDetail && !isShowReturn && !isShowExamine">
+    <div v-show="!isShowDetail && !isShowExamine && !isShowForm">
       <!-- 筛选条件 -->
       <div class="screen-container">
         <el-form ref="screenForm" :model="screenForm" label-width="100px" size="small" label-position="left">
           <el-row :gutter="20">
             <el-col :xs="24" :sm="24" :lg="24">
-              <el-form-item prop="orderNum" label-width="0">
-                <el-radio-group v-model="screenForm.status" size="medium">
-                  <el-radio-button label="1">全部</el-radio-button>
-                  <el-radio-button label="2">已保存</el-radio-button>
-                  <el-radio-button label="3">待审核</el-radio-button>
-                  <el-radio-button label="3">审核通过</el-radio-button>
-                  <el-radio-button label="3">审核驳回</el-radio-button>
-                  <el-radio-button label="3">已退单</el-radio-button>
+              <el-form-item prop="status" label-width="0">
+                <el-radio-group v-model="screenForm.status" size="medium" @change="getList()">
+                  <el-radio-button label="">全部</el-radio-button>
+                  <el-radio-button v-for="(item, index) in statusList" :key="index" :label="item.value">{{item.label}}</el-radio-button>
                 </el-radio-group>
               </el-form-item>
             </el-col>
@@ -23,18 +19,18 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="仓库" prop="orderNum">
-                <el-input v-model="screenForm.orderNum" placeholder="请输入仓库"></el-input>
+              <el-form-item label="仓库" prop="warehouse">
+                <el-input v-model="screenForm.warehouse" placeholder="请输入仓库"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="经销商编码" prop="jxsName">
-                <el-input v-model="screenForm.jxsName" placeholder="请输入经销商编码"></el-input>
+              <el-form-item label="经销商编码" prop="jxsNum">
+                <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编码"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="经销商名称" prop="jxsNum">
-                <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商名称"></el-input>
+              <el-form-item label="经销商名称" prop="jxsName">
+                <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
@@ -73,35 +69,51 @@
 
       <div class="mymain-container">
         <div class="btn-group clearfix">
+          <div class="fl">
+            <el-button size="small" type="primary" icon="el-icon-plus" @click="toForm()">发货申请</el-button>
+          </div>
           <div class="fr">
             <ExportButton :exUrl="'admin/user/mch/export'" :exParams="exParams" />
           </div>
         </div>
         <div class="table">
           <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
-            <el-table-column align="center" label="发货申请单" prop="shipOrderNo" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="发货申请日期" prop="shipTime" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="仓库" prop="shipTime" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="工程登录编码" prop="projectNumber" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="工程名称" prop="projectName" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="使用单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="经销商编码" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="经销商名称" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="货品名称" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="规格型号" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="计量单位" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="数量" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="备注信息" prop="createBy" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="制单人" prop="createTime" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="制单日期" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="审核人" prop="aaa" min-width="200" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="审核日期" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="审核状态" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="操作" width="160" fixed="right">
+            <el-table-column align="center" label="发货申请单" prop="id" min-width="180" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="发货申请日期" prop="createTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="仓库" prop="correspondName" min-width="120" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="工程登录编码" prop="aaa" min-width="120" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="工程名称" prop="aaa" min-width="120" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="使用单位" prop="aaa" min-width="120" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="经销商编码" prop="customerNumber" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="计量单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="备注信息" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="制单人" prop="createBy" min-width="100" 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="approvalName" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="审核日期" prop="approvalTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="审核状态" prop="examineStatus" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
-                <el-button type="text" @click="toReturn(scope.row)">退货</el-button>
-                <el-button type="text" @click="toExamine(scope.row)">审批</el-button>
+                {{scope.row.examineStatus | statusFilter}}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="操作" width="180" fixed="right">
+              <template slot-scope="scope">
+                <el-popconfirm style="margin-right: 10px;" title="确定申请吗?" @onConfirm="handleSubmit(scope.row.id, 'WAIT')" v-if="scope.row.examineStatus === 'SAVE'" >
+                  <el-button slot="reference" type="text">申请</el-button>
+                </el-popconfirm>
+                <el-popconfirm style="margin-right: 10px;" title="确定撤回吗?" @onConfirm="handleSubmit(scope.row.id, 'SAVE')" v-if="scope.row.examineStatus === 'WAIT'" >
+                  <el-button slot="reference" type="text">撤回</el-button>
+                </el-popconfirm>
+                <el-button type="text" @click="toForm(scope.row)" v-if="scope.row.examineStatus === 'SAVE'">编辑</el-button>
+                <el-button type="text" @click="toExamine(scope.row)" v-if="scope.row.examineStatus === 'WAIT'">审单</el-button>
                 <el-button type="text" @click="toDetail(scope.row)">详情</el-button>
+                <el-popconfirm style="margin-left: 10px;" title="确定删除吗?" @onConfirm="handleDelete(scope.row.id)" >
+                  <el-button slot="reference" type="text">删除</el-button>
+                </el-popconfirm>
               </template>
             </el-table-column>
           </el-table>
@@ -123,23 +135,30 @@
     </div>
     
     <EnginDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
-    <EnginReturn :listItem="queryItem" v-if="isShowReturn" @backListFormDetail="backList" />
     <EnginExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
+    <EnginForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
 
   </div>
 </template>
 
 <script>
-import { getList } from "@/api/supply/apply";
+import { getEnginList, submitEngin, deleteEngin } from "@/api/supply/apply";
 import EnginDetail from "@/views/supply/apply/components/engin_detail";
-import EnginReturn from "@/views/supply/apply/components/engin_return";
 import EnginExamine from "@/views/supply/apply/components/engin_examine";
+import EnginForm from "@/views/supply/apply/components/engin_form";
 
+let that
 export default {
   components: {
     EnginDetail,
-    EnginReturn,
     EnginExamine,
+    EnginForm
+  },
+  filters: {
+    statusFilter(val) {
+      let obj = that.statusList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    }
   },
   data() {
     return {
@@ -150,36 +169,49 @@ export default {
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
         orderNum: '',
+        warehouse: '',
+        jxsNum: '',
         jxsName: '',
+        date: '',
         chName: '',
         model: '',
-        date: '',
-        jxsNum: '',
         status: '',
       },
+      statusList: [
+        { label: '已保存', value: 'SAVE' },
+        { label: '待审核', value: 'WAIT' },
+        { label: '审核通过', value: 'OK' },
+        { label: '审核驳回', value: 'FAIL' },
+        { label: '已关闭', value: 'CLOSE' },
+      ],
 
       queryItem: {},
       isShowDetail: false,
-      isShowReturn: false,
       isShowExamine: false,
+      isShowForm: false,
     }
   },
 
   computed: {
     exParams() {
       return {
-        retreatOrderNo: this.screenForm.orderNum,
+        id: this.screenForm.orderNum,
+        correspondId: this.screenForm.warehouse,
         customerNumber: this.screenForm.jxsNum,
         customerName: this.screenForm.jxsName,
         productName: this.screenForm.chName,
         specification: this.screenForm.model,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: 2, // 1:发货单,2:工程发货单
+        examineStatus: this.screenForm.status,
       }
     },
   },
 
+  beforeCreate() {
+    that = this;
+  },
+
   created() {
     this.getList();
   },
@@ -201,16 +233,17 @@ export default {
       let params = {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
-        retreatOrderNo: this.screenForm.orderNum,
+        id: this.screenForm.orderNum,
+        correspondId: this.screenForm.warehouse,
         customerNumber: this.screenForm.jxsNum,
         customerName: this.screenForm.jxsName,
         productName: this.screenForm.chName,
         specification: this.screenForm.model,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: 2, // 1:发货单,2:工程发货单
+        examineStatus: this.screenForm.status,
       };
-      getList(params).then((res) => {
+      getEnginList(params).then((res) => {
         this.dataList = res.data.records;
         this.listTotal = res.data.total;
         this.listLoading = false;
@@ -243,14 +276,14 @@ export default {
       this.getList();
     },
 
-    // 进入退
+    // 进入
     toForm(item) {
       this.queryItem = item;
-      this.isShowReturn = true;
+      this.isShowForm = true;
     },
 
     // 进入审批
-    toForm(item) {
+    toExamine(item) {
       this.queryItem = item;
       this.isShowExamine = true;
     },
@@ -264,12 +297,24 @@ export default {
     backList() {
       this.queryItem = {};
       this.isShowDetail = false;
+      this.isShowExamine = false;
       this.isShowForm = false;
     },
 
     handleDelete(id) {
+      deleteEngin({id}).then(res => {
+        this.$successMsg();
+        this.getList();
+      })
+    },
 
-    }
+    // 申请/撤回
+    handleSubmit(id, examineStatus) {
+      submitEngin({id, examineStatus}).then(res => {
+        this.$successMsg();
+        this.getList();
+      })
+    },
   }
 }
 </script>

+ 87 - 40
src/views/supply/implement/implement_list.vue

@@ -3,26 +3,33 @@
     <div>
       <!-- 筛选条件 -->
       <div class="screen-container">
-        <el-form ref="screenForm" :model="screenForm" label-width="90px" size="small" label-position="left">
+        <el-form ref="screenForm" :model="screenForm" label-width="100px" size="small" label-position="left">
           <el-row :gutter="20">
+            <el-col :xs="24" :sm="24" :lg="24">
+              <el-form-item prop="status" label-width="0">
+                <el-radio-group v-model="screenForm.status" size="medium" @change="getList()">
+                  <el-radio-button v-for="(item, index) in statusList" :key="index" :label="item.value">{{item.label}}</el-radio-button>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="厂产品代码" prop="orderNum">
-                <el-input v-model="screenForm.orderNum" placeholder="请输入厂产品代码"></el-input>
+              <el-form-item label="物料代码" prop="goodsCode">
+                <el-input v-model="screenForm.goodsCode" placeholder="请输入物料代码"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="销售订单" prop="wlName">
-                <el-input v-model="screenForm.wlName" placeholder="请输入销售订单"></el-input>
+              <el-form-item label="销售订单" prop="saleNum">
+                <el-input v-model="screenForm.saleNum" placeholder="请输入销售订单"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="经销商" prop="orderNum">
-                <el-input v-model="screenForm.orderNum" placeholder="请输入经销商"></el-input>
+              <el-form-item label="经销商" prop="dealer">
+                <el-input v-model="screenForm.dealer" placeholder="请输入经销商"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="存货名称" prop="wlName">
-                <el-input v-model="screenForm.wlName" placeholder="请输入存货名称"></el-input>
+              <el-form-item label="产品名称" prop="goodsName">
+                <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
@@ -39,17 +46,22 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="业务员" prop="orderNum">
-                <el-input v-model="screenForm.orderNum" placeholder="请输入业务员"></el-input>
+              <el-form-item label="业务员" prop="saleMan">
+                <el-input v-model="screenForm.saleMan" placeholder="请输入业务员"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :lg="6">
+              <el-form-item label="项目名称" prop="enginName">
+                <el-input v-model="screenForm.enginName" placeholder="请输入项目名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="项目名称" prop="wlName">
-                <el-input v-model="screenForm.wlName" placeholder="请输入项目名称"></el-input>
+              <el-form-item label="工程登录编号" prop="loginNum">
+                <el-input v-model="screenForm.loginNum" placeholder="请输入工程登录编号"></el-input>
               </el-form-item>
             </el-col>
             
-            <el-col :xs="24" :sm="12" :lg="6" class="tr">
+            <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>
@@ -63,26 +75,26 @@
         <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>
-            <el-table-column align="center" label="厂产品代码" prop="aaa" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="下单日期" prop="aaa" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="受订日期" prop="aaa" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="销售订单" prop="aaa" min-width="120" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="经销商编码" prop="aaa" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="经销商名称" prop="aaa" min-width="240" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="销售类型" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="存货名称" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="存货编码" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="规格型号" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="订单未发货数量" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="总数量" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="退货数量" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="订单金额" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="订单返利金额" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="发货金额" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="发货数量" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="直调数量" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="退货金额" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="业务员" prop="aaa" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="厂产品代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="下单日期" prop="createTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="受订日期" prop="theTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="销售订单" prop="id" min-width="180" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="经销商编码" prop="customerNumber" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="销售类型" prop="saleTypeName" 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="materialCode" 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="refundableQty" min-width="120" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="总数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="退货数量" prop="retiredQty" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单返利金额" prop="payRebateAmount" min-width="110" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="发货金额" prop="hasSendAmount" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="发货数量" prop="hasSendQty" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="直调数量" prop="directTransferQty" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="退货金额" prop="retiredAmount" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="业务员" prop="serviceName" min-width="100" show-overflow-tooltip></el-table-column>
           </el-table>
         </div>
       </div>
@@ -107,7 +119,14 @@
 <script>
 import { getList } from "@/api/supply/implement";
 
+let that
 export default {
+  filters: {
+    statusFilter(val) {
+      let obj = that.statusList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    }
+  },
   data() {
     return {
       currentPage: 1, // 当前页码
@@ -116,24 +135,46 @@ export default {
       dataList: null, // 列表数据
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
-        orderNum: '',
-        wlName: '',
+        status: '2',
+        goodsCode: '',
+        saleNum: '',
+        dealer: '',
+        goodsName: '',
         date: '',
+        saleMan: '',
+        enginName: '',
+        loginNum: '',
       },
+      statusList: [
+        { label: '政策零售订单', value: '2' },
+        { label: '零售订单', value: '1' },
+        { label: '家用工程订单', value: 'HOME' },
+        { label: '商用工程订单', value: 'TRADE' },
+      ],
     }
   },
 
   computed: {
     exParams() {
       return {
-        billNo: this.screenForm.orderNum,
-        materialName: this.screenForm.wlName,
+        type: this.screenForm.status,
+        materialOldNumber: this.screenForm.goodsCode,
+        id: this.screenForm.saleNum,
+        customerName: this.screenForm.dealer,
+        materialName: this.screenForm.goodsName,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
+        serviceName: this.screenForm.saleMan,
+        projectName: this.screenForm.enginName,
+        enginRecordNo: this.screenForm.orderNum,
       }
     },
   },
 
+  beforeCreate() {
+    that = this;
+  },
+
   created() {
     this.getList();
   },
@@ -155,10 +196,16 @@ export default {
       let params = {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
-        billNo: this.screenForm.orderNum,
-        materialName: this.screenForm.wlName,
+        type: this.screenForm.status,
+        materialOldNumber: this.screenForm.goodsCode,
+        id: this.screenForm.saleNum,
+        customerName: this.screenForm.dealer,
+        materialName: this.screenForm.goodsName,
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
+        serviceName: this.screenForm.saleMan,
+        projectName: this.screenForm.enginName,
+        enginRecordNo: this.screenForm.orderNum,
       };
       getList(params).then((res) => {
         this.dataList = res.data.records;

+ 216 - 0
src/views/supply/policy/components/Untitled-1.json

@@ -0,0 +1,216 @@
+{
+  "code": 1,
+  "msg": "操作成功",
+  "time": 1656664932,
+  "data": [
+    {
+      "id": 413749,
+      "belong_company_id": 2,
+      "belong_company": "S9219801",
+      "websit_number": "S2106770",
+      "worker_order_no": "2220220609135011878913",
+      "order_product_id": 238993,
+      "worker_id": 32087,
+      "worker_name": "罗世奇",
+      "worker_number": "S21067700116",
+      "worker_phone": "16626205908",
+      "wxgid": 6113138,
+      "inside_code": "18899758682TT",
+      "inside_code2": "",
+      "inside_password": "",
+      "inside_password2": "",
+      "out_code": "19998875682XC",
+      "out_password": "",
+      "source": "mobile",
+      "type": "insideAndOut",
+      "inside_picture": "uploads\/signwater\/2022-06-09\/202206091351344549307779035495.png",
+      "inside2_picture": "",
+      "out_picture": "uploads\/signwater\/2022-06-09\/202206091352082964314481740076.png",
+      "machine_picture": "",
+      "other_picture": null,
+      "vacuo_picture": "",
+      "safety_picture": "",
+      "switch_picture": "",
+      "bracket": "",
+      "pipe": "",
+      "switch_flag": "",
+      "high_altitude": "",
+      "hole": "",
+      "remark": "",
+      "video": "",
+      "status": "1",
+      "temp_save_remark": "",
+      "firsttime": 1654753958,
+      "createtime": "2022-06-09 13:50:11",
+      "updatetime": "2022-06-09 13:52:38",
+      "deletetime": null,
+      "onwall_picture": "",
+      "assist_remark": "",
+      "running_water_tds": "",
+      "machine_running_tds": "",
+      "water_pressure": "",
+      "in_style": "",
+      "in_number": "",
+      "in_style2": "",
+      "in_number2": "",
+      "out_style": "",
+      "out_number": "",
+      "main_number": "101",
+      "small_number": "1104",
+      "main_id": 101,
+      "small_id": 125,
+      "series_id": 0,
+      "product_id": 633678,
+      "province": "广东省",
+      "city": "广州市",
+      "area": "天河区",
+      "street": "华景西街",
+      "lat": "23.135519",
+      "lng": "113.35693",
+      "gps_address": "广东省广州市天河区华景西街",
+      "is_sync": "0",
+      "main_area": "",
+      "tmguid": "",
+      "clearing": 0,
+      "clearing_amount": 0,
+      "clearing_time": 0,
+      "business_id": 0,
+      "sales_type": "",
+      "main_name": "家用空调",
+      "small_name": "变频挂机",
+      "series_name": "",
+      "pname": "KFR-35GW\/(35518)FNhAa-B1(WIFI)(含管) 顶(珊瑚玉)",
+      "clearing_wid": 0,
+      "clearing_wname": "",
+      "sales_wid": 0,
+      "code_index": 1,
+      "detail_id": "202206091351583465596187437781",
+      "inside_num": 1,
+      "out_num": 1,
+      "old_websit_number": "",
+      "settle_old_websit_number": "",
+      "pgguid": "98125116633360DA7593C5373F883B45",
+      "pgwcmxid": "628ba2dbe7b811ec82a700163e09459f",
+      "detail_source": 1,
+      "cj_send_flag": 1,
+      "wg_send_flag": 1,
+      "pgmxid": "",
+      "push_settle_system_status": 0,
+      "push_settle_system_num": 0,
+      "operator_account": "",
+      "operator_name": "",
+      "operator_websit_number": "",
+      "operator_websit_name": "",
+      "main_responsible_number": "S21067700116",
+      "main_responsible_name": "罗世奇",
+      "main_settle_ratio": "60.00",
+      "assist_responsible_number": "S21067700117",
+      "assist_responsible_name": "邹今长",
+      "assist_settle_ratio": "40.00",
+      "reset_password_num": 0,
+      "is_install_engineer": 0,
+      "is_system_vacuum": 0,
+      "is_decode": 0,
+      "is_test": 0,
+      "order_install_detail_append": [
+        {
+          "id": 638259,
+          "belong_company_id": 2,
+          "belong_company": "S9219801",
+          "websit_number": "S2106770",
+          "worker_order_no": "2220220609135011878913",
+          "detail_id": "202206091351583465596187437781",
+          "name": "外机",
+          "type": 1,
+          "remark": "",
+          "path": "uploads\/signwater\/2022-06-09\/202206091352082964314481740076.png",
+          "append_index": 0,
+          "createtime": "2022-06-09 13:52:38",
+          "updatetime": "2022-06-09 13:52:42",
+          "pgguid": "98125116633360DA7593C5373F883B45",
+          "pgwcmxid": "628ba2dbe7b811ec82a700163e09459f",
+          "gree_image_id": "1_p_220609_S2106770_6qzGGSv5q2gC8LAG8mnZ5d.png",
+          "attempts_gree": 1,
+          "fjguid": "628c6ca8e7b811ec82a700163e09459f",
+          "type_text": "out_picture",
+          "path_url": "https:\/\/aliyunoss.zfire.top\/uploads\/signwater\/2022-06-09\/202206091352082964314481740076.png?OSSAccessKeyId=LTAI4G3XTLh8G8DiTpXHpWgt&Expires=1656669600&Signature=deSwTgvsMp47pYEdPbGYvbsJcDc%3D"
+        },
+        {
+          "id": 638260,
+          "belong_company_id": 2,
+          "belong_company": "S9219801",
+          "websit_number": "S2106770",
+          "worker_order_no": "2220220609135011878913",
+          "detail_id": "202206091351583465596187437781",
+          "name": "内机",
+          "type": 0,
+          "remark": "",
+          "path": "uploads\/signwater\/2022-06-09\/202206091351344549307779035495.png",
+          "append_index": 0,
+          "createtime": "2022-06-09 13:52:38",
+          "updatetime": "2022-06-09 13:52:42",
+          "pgguid": "98125116633360DA7593C5373F883B45",
+          "pgwcmxid": "628ba2dbe7b811ec82a700163e09459f",
+          "gree_image_id": "1_p_220609_S2106770_MjO5iJx~tXsChKkSM0a077.png",
+          "attempts_gree": 1,
+          "fjguid": "628ca877e7b811ec82a700163e09459f",
+          "type_text": "inside_picture",
+          "path_url": "https:\/\/aliyunoss.zfire.top\/uploads\/signwater\/2022-06-09\/202206091351344549307779035495.png?OSSAccessKeyId=LTAI4G3XTLh8G8DiTpXHpWgt&Expires=1656669600&Signature=zJLwBSkAu0OaRd%2Flwmawory9lsA%3D"
+        },
+        {
+          "id": 638261,
+          "belong_company_id": 2,
+          "belong_company": "S9219801",
+          "websit_number": "S2106770",
+          "worker_order_no": "2220220609135011878913",
+          "detail_id": "202206091351583465596187437781",
+          "name": "上墙",
+          "type": 7,
+          "remark": "",
+          "path": "uploads\/signwater\/2022-06-09\/202206091351407681921520646404.png",
+          "append_index": 0,
+          "createtime": "2022-06-09 13:52:38",
+          "updatetime": "2022-06-09 13:52:42",
+          "pgguid": "98125116633360DA7593C5373F883B45",
+          "pgwcmxid": "628ba2dbe7b811ec82a700163e09459f",
+          "gree_image_id": "1_p_220609_S2106770_H6ASyn00qSSAPm~G2-vMd0.png",
+          "attempts_gree": 1,
+          "fjguid": "628cd3e0e7b811ec82a700163e09459f",
+          "type_text": "onwall_picture",
+          "path_url": "https:\/\/aliyunoss.zfire.top\/uploads\/signwater\/2022-06-09\/202206091351407681921520646404.png?OSSAccessKeyId=LTAI4G3XTLh8G8DiTpXHpWgt&Expires=1656669600&Signature=W3CtkhYhjDC%2B7Y1%2FX7est%2BrVUtQ%3D"
+        },
+        {
+          "id": 638262,
+          "belong_company_id": 2,
+          "belong_company": "S9219801",
+          "websit_number": "S2106770",
+          "worker_order_no": "2220220609135011878913",
+          "detail_id": "202206091351583465596187437781",
+          "name": "外机其它",
+          "type": 5,
+          "remark": "",
+          "path": "uploads\/signwater\/2022-06-09\/202206091352131314372691101322.png",
+          "append_index": 0,
+          "createtime": "2022-06-09 13:52:38",
+          "updatetime": "2022-06-09 13:52:42",
+          "pgguid": "98125116633360DA7593C5373F883B45",
+          "pgwcmxid": "628ba2dbe7b811ec82a700163e09459f",
+          "gree_image_id": "1_p_220609_S2106770_QrCocPJTtZ0Y775pygzIb8.png",
+          "attempts_gree": 1,
+          "fjguid": "628cfc35e7b811ec82a700163e09459f",
+          "type_text": "out_other_picture",
+          "path_url": "https:\/\/aliyunoss.zfire.top\/uploads\/signwater\/2022-06-09\/202206091352131314372691101322.png?OSSAccessKeyId=LTAI4G3XTLh8G8DiTpXHpWgt&Expires=1656669600&Signature=GK6jlt8h%2F%2BNVRQS91KXCxFVYC6c%3D"
+        }
+      ],
+      "order_install_detail_code": [],
+      "type_text": "一内一外",
+      "status_text": "已采集",
+      "detail_source_text": "广佛系统",
+      "is_sync_text": "Is_sync 0",
+      "clearing_time_text": "1970-01-01 08:00:00",
+      "responsible_text": "罗世奇\/邹今长",
+      "is_system_vacuum_text": "已完成真空保存",
+      "firsttime_text": "2022-06-09 13:52:38"
+    }
+  ]
+}

+ 25 - 17
src/views/supply/policy/components/retail_form.vue

@@ -439,11 +439,13 @@
                   <el-select
                     v-model="screenForm.policyId"
                     placeholder="选择销售政策"
+                    filterable
                     style="width: 100%"
                   >
+                  <el-option label="不使用" value=""></el-option>
                     <el-option
-                      v-for="item in policyList"
-                      :key="item.code"
+                      v-for="(item,index) in policyList"
+                      :key="index"
                       :label="item.title"
                       :value="item.code"
                     ></el-option>
@@ -462,7 +464,7 @@
                       v-for="item in ztypeList"
                       :key="item.id"
                       :label="item.saleName"
-                      :value="item.id"
+                      :value="item.saleCode"
                     ></el-option>
                   </el-select>
                 </el-form-item>
@@ -546,10 +548,10 @@
               @size-change="handleSizeChange"
               @current-change="handleCurrentChange"
               :current-page="currentPage"
-              :page-sizes="[10, 20, 30, 50]"
+              :page-sizes="[10]"
               :page-size="10"
               layout="total, sizes, prev, pager, next, jumper"
-              :total="listTotal"
+              :total="dataList.length"
             >
             </el-pagination>
           </div>
@@ -570,12 +572,12 @@
                   <el-select
                     v-model="screenForm.policyId"
                     placeholder="选择销售政策"
-                    disabled
+                    filterable
                     style="width: 100%"
                   >
                     <el-option
-                      v-for="item in policyList"
-                      :key="item.code"
+                      v-for="(item,index) in policyList"
+                      :key="index"
                       :label="item.title"
                       :value="item.code"
                     ></el-option>
@@ -587,7 +589,7 @@
                 <el-form-item label="销售类型">
                   <el-select
                     filterable
-                    v-model="screenForm.type"
+                    v-model="screenForm.saleTypeCode"
                     placeholder="选择销售类型"
                     style="width: 100%"
                   >
@@ -596,7 +598,7 @@
                       v-for="item in ztypeList"
                       :key="item.id"
                       :label="item.saleName"
-                      :value="item.id"
+                      :value="item.saleCode"
                     ></el-option>
                   </el-select>
                 </el-form-item>
@@ -675,10 +677,10 @@
                 @size-change="handleSizeChange"
                 @current-change="handleCurrentChange"
                 :current-page="currentPage"
-                :page-sizes="[10, 20, 30, 50]"
+                :page-sizes="[10]"
                 :page-size="10"
                 layout="total, sizes, prev, pager, next, jumper"
-                :total="listTotal"
+                :total="popDataArr[cusIndex - 1].length"
               >
               </el-pagination>
             </div>
@@ -823,6 +825,7 @@
         listLoading: false,
         popDataArr: [],
         radioObj: {},
+        step:0,
       };
     },
 
@@ -902,6 +905,7 @@
         };
         typeList(params).then((res) => {
           this.ztypeList = res.data.records;
+          console.log(this.ztypeList,'type1111');
         });
       },
       handleSelectiontAllChange(e) {
@@ -1085,7 +1089,8 @@
         if (Object.values(this.radioObj)[this.cusIndex - 1] !== "") {
           this.popArr.length >= this.cusIndex ? (this.cusIndex += 1) : "";
           const params = this.radio.split("&");
-          this.getConditionList(params[3], this.cusIndex);
+          this.step = this.cusIndex+1
+          this.getConditionList(params[3], this.step);
           return;
         } else {
           this.$errorMsg("请选择");
@@ -1109,8 +1114,9 @@
             for (let i = 0; i < this.popArr.length; i++) {
               this.$set(this.radioObj, "radio" + (i + 1), "");
             }
-            console.log(this.radioObj);
-            this.getConditionList(params[3], this.cusIndex);
+            this.step = this.cusIndex+1
+
+            this.getConditionList(params[3], this.step );
           });
         } else {
           this.$errorMsg("请选择");
@@ -1121,13 +1127,15 @@
       this.pageSize = val;
       this.currentPage = 1;
         const params = this.radio.split("&");
-       this.getConditionList(params[3], this.cusIndex);
+         this.step = this.cusIndex+1
+       this.getConditionList(params[3], this.step);
     },
     // 更改当前页
     handleCurrentChange(val) {
       this.currentPage = val;
         const params = this.radio.split("&");
-       this.getConditionList(params[3], this.cusIndex);
+         this.step = this.cusIndex+1
+       this.getConditionList(params[3], this.step);
     },
       getConditionList(policyConditionId, popType) {
         getConditionList({

+ 166 - 91
src/views/supply/reserve/components/reserve_form.vue

@@ -51,29 +51,46 @@
 
     <div style="margin-top: 20px">
       <el-button type="primary" size="small" icon="el-icon-plus" @click="openDialog">添加引用</el-button>
+      <el-button type="danger" size="small" icon="el-icon-minus" @click="deleteGoods" :disabled="tableSelection.length < 1">批量删除</el-button>
     </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="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="订单日期" prop="aaa" 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 :data="goodsList" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400" @selection-change="tableSelectionChange">
+        <el-table-column align="center" type="selection" width="55"></el-table-column>
+        <el-table-column align="center" label="销售订单号" prop="orderId" min-width="180" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单日期" prop="orderDate" min-width="120" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.orderDate | dateToDayFilter}}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="经销商编码" prop="customerId" min-width="120" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="产品编码" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="预留数量" prop="reservedNum" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="订单数量" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="预留数量" prop="reservedNum" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
         <el-table-column align="center" label="备注" prop="reservedRemark" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="状态" prop="status" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{scope.row.status ? '执行中':'已关闭'}}
+          </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)" v-if="!listItem">删除</el-button>
+
+            <el-button type="text" @click="changeItem(scope.$index, 0)" v-if="listItem && scope.row.status === 1">关闭</el-button>
+            <el-button type="text" @click="changeItem(scope.$index, 1)" v-if="listItem && scope.row.status === 0">开启</el-button>
+          </template>
+        </el-table-column>
       </el-table>
     </div>
     
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button type="primary" @click="clickSubmitForm">保 存</el-button>
-        <el-button type="primary" @click="clickSubmitForm">提交审核</el-button>
         <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
           <el-button slot="reference">关 闭</el-button>
         </el-popconfirm>
@@ -96,43 +113,43 @@
           <el-col :xs="12" :sm="6" :lg="4">
             <el-form-item prop="type">
               <el-select v-model="screenForm.type" placeholder="产品大类" style="width: 100%">
-                <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
+                <el-option v-for="item in typeList" :key="item.dictValue" :label="item.dictValue" :value="item.dictValue"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="6" :lg="4">
-            <el-form-item prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="产品编码"></el-input>
+            <el-form-item prop="goodsNum">
+              <el-input v-model="screenForm.goodsNum" placeholder="产品编码"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="6" :lg="4">
-            <el-form-item prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="物料代码"></el-input>
+            <el-form-item prop="goodsCode">
+              <el-input v-model="screenForm.goodsCode" placeholder="物料代码"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="6" :lg="4">
-            <el-form-item prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="产品名称"></el-input>
+            <el-form-item prop="goodsName">
+              <el-input v-model="screenForm.goodsName" placeholder="产品名称"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="6" :lg="4">
-            <el-form-item prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="规格型号"></el-input>
+            <el-form-item prop="model">
+              <el-input v-model="screenForm.model" placeholder="规格型号"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="6" :lg="4">
-            <el-form-item prop="type">
-              <el-select v-model="screenForm.type" placeholder="订单类型" style="width: 100%">
-                <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
+            <el-form-item prop="orderType">
+              <el-select v-model="screenForm.orderType" placeholder="订单类型" style="width: 100%">
+                <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="12" :sm="6" :lg="4">
-            <el-form-item prop="orderNum">
-              <el-input v-model="screenForm.orderNum" placeholder="销售订单号"></el-input>
+            <el-form-item prop="saleNum">
+              <el-input v-model="screenForm.saleNum" placeholder="销售订单号"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="12" :sm="6" :lg="4" class="tr">
+          <el-col :xs="12" :sm="18" :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>
@@ -142,16 +159,24 @@
       </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 :data="dialogGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe height="400" @selection-change="dialogSelectionChange">
           <el-table-column align="center" type="selection" width="55" :selectable='checkboxSelect'></el-table-column>
-          <el-table-column align="center" label="经销商编码" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="经销商名称" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="订单日期" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="订单类型" prop="orderId" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="订单号" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="经销商编码" prop="customerId" min-width="120" 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="orderDate" min-width="120" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.orderDate | dateToDayFilter}}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="订单类型" prop="orderType" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.orderType | orderTypeFilter}}
+            </template>
+          </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="materialName" 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="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
@@ -181,12 +206,20 @@
 </template>
 
 <script>
-import { getDetail, getGoodsList } from "@/api/supply/reserve";
+import { getDetail, getGoodsList, addData, editData } from "@/api/supply/reserve";
+import { getDictList } from '@/api/common'
 
+let that
 export default {
   name: 'ReserveForm',
   componentName: 'ReserveForm',
   props: ['listItem'],
+  filters: {
+    orderTypeFilter(val) {
+      let obj = that.orderTypeList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    }
+  },
   data() {
     return {
       mainForm: {
@@ -197,19 +230,36 @@ export default {
         remark: '',
       },
       goodsList: [],
+      tableSelection: [],
 
+      typeList: [],
+      orderTypeList: [
+        { label: '商用单', value: 'TRADE' },
+        { label: '家用单', value: 'HOME' },
+        { label: '零售单', value: 'RETAIL' },
+        { label: '销售政策单', value: 'RETAIL_POLICY' },
+        { label: '置换家用单', value: 'PERMU_HOME' },
+        { label: '置换商用单', value: 'PERMU_TRADE' },
+        { label: '置换零售单', value: 'PERMU_RETAIL' },
+        { label: '置换销售政策单', value: 'PERMU_RETAIL_POLICY' },
+      ],
       isShowDialog: false,
       screenForm: {
-        warehouse: '',
+        jxsNum: '',
+        jxsName: '',
         type: '',
-        orderNum: '',
+        goodsNum: '',
+        goodsCode: '',
+        goodsName: '',
+        model: '',
+        orderType: '',
+        saleNum: '',
       },
       currentPage: 1,
       listTotal: 0,
-      typeList: [],
       
-      tableGoodsList: [],
-      tableSelection: [],
+      dialogGoodsList: [],
+      dialogSelection: [],
     }
   },
 
@@ -225,6 +275,10 @@ export default {
     },
   },
 
+  beforeCreate() {
+    that = this;
+  },
+
   created() {
     if(this.listItem) {
       this.getDetail();
@@ -251,6 +305,12 @@ export default {
       return currentdate;
     },
 
+    getDictList() {
+      getDictList({sysDictEnum: 'PRODUCT_TYPE'}).then(res => {
+        this.typeList = res.data;
+      })
+    },
+
     // 返回列表
     goBack() {
       this.$emit('backListFormDetail');
@@ -274,25 +334,32 @@ export default {
       getGoodsList({
         pageNum: this.currentPage,
         pageSize: 10,
-        stockId: this.screenForm.warehouse,
-        mainId: this.screenForm.type,
-        id: this.screenForm.orderNum,
-        examineStatus: 'OK',
-        type: 1,
+        customerNumber: this.screenForm.jxsNum,
+        customerName: this.screenForm.jxsName,
+        mainName: this.screenForm.type,
+        materialCode: this.screenForm.goodsNum,
+        materialOldNumber: this.screenForm.goodsCode,
+        materialName: this.screenForm.goodsName,
+        specification: this.screenForm.model,
+        orderType: this.screenForm.orderType,
+        orderId: this.screenForm.saleNum,
       }).then(res => {
+        res.data.records.forEach(item => {
+          item.status = 1;
+        });
         let oldGoodsList = this.goodsList;
         let newGoodsList = res.data.records;
         for(let i = 0; i < oldGoodsList.length; i++) {
           let oldItem = oldGoodsList[i]
           for(let j = 0; j < newGoodsList.length; j++) {
             let newItem = newGoodsList[j]
-            if(newItem.materialId === oldItem.materialId){
+            if(newItem.orderId === oldItem.orderId){
               newGoodsList[j].selected = true;
               break;
             }
           }
         }
-        this.tableGoodsList = newGoodsList;
+        this.dialogGoodsList = newGoodsList;
         this.listTotal = res.data.total;
       })
     },
@@ -309,14 +376,12 @@ export default {
     // 点击 选择商品
     openDialog() {
       this.isShowDialog = true;
+      this.getDictList();
       this.getGoodsList();
     },
 
     // 提交筛选表单
     submitScreenForm() {
-      if(!this.screenForm.warehouse || !this.screenForm.type) {
-        return this.$errorMsg('请选择仓库和产品大类');
-      }
       this.currentPage = 1;
       this.getGoodsList();
     },
@@ -325,13 +390,13 @@ export default {
     resetScreenForm() {
       this.$refs.screenForm.resetFields();
       this.currentPage = 1;
-      this.tableGoodsList = [];
-      // this.getGoodsList();
+      this.dialogGoodsList = [];
+      this.getGoodsList();
     },
 
     // 更改列表当前页
     handleTableCurrentChange(val) {
-      if(this.tableSelection.length > 0) {
+      if(this.dialogSelection.length > 0) {
         return this.$errorMsg('已选择产品不可切换');
       }
       this.currentPage = val;
@@ -344,59 +409,69 @@ export default {
     },
 
     // 列表选择
-    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].materialId == newArr[j].materialId){ // 让allArr数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
-            flag = false;
-          }
-        }
-        if(flag){ // 判断是否重复
-          newArr.push(allArr[i]); // 不重复的放入新数组。  新数组的内容会继续进行上边的循环。
-        }
-      }
-      return newArr;
+    dialogSelectionChange(val) {
+      this.dialogSelection = val;
     },
 
     // 确定 添加产品
     submitAddGoods() {
-      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].orderId == allList[i].orderId){
-            submitList.push(allList[i]);
-          }
-        }
-      }
-      // this.goodsList = this.goodsList.concat(submitList);
-
-      this.goodsList = this.delRepeat(submitList, this.goodsList);
+      this.goodsList = this.goodsList.concat(this.dialogSelection);
       this.isShowDialog = false;
-      this.tableGoodsList = [];
+      this.dialogGoodsList = [];
     },
 
     // 删除产品
     deleteItem(index) {
       this.goodsList.splice(index, 1);
-      // this.goodsList = this.goodsList.filter((item) => {
-      //   return item.orderId != id
-      // })
     },
 
+    // 修改状态
+    changeItem(index, status) {
+      this.goodsList[index].status = status;
+    },
 
-    clickSubmitForm() {
+    tableSelectionChange(val) {
+      this.tableSelection = val;
+    },
+
+    // 批量删除
+    deleteGoods() {
+      let goodsList = this.goodsList;
+      let tableSelection = this.tableSelection;
+      for(let i = 0; i < goodsList.length; i++) {
+        for(let j = 0; j < tableSelection.length; j++) {
+          if(tableSelection[j].orderId == goodsList[i].orderId){
+            this.goodsList.splice(i, 1);
+          }
+        }
+      }
+    },
 
+    // 提交
+    clickSubmitForm() {
+      this.$refs.mainForm.validate((valid) => {
+        if (valid) {
+          let params = {
+            orderTime: this.mainForm.orderDate + ' 00:00:00',
+            remark: this.mainForm.remark,
+            reservedOrderItems: this.goodsList,
+          }
+          if(this.listItem) {
+            params.id = this.listItem.id;
+            editData(params).then(res => {
+              this.$successMsg('编辑成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }else {
+            addData(params).then(res => {
+              this.$successMsg('添加成功');
+              this.goBack();
+              this.$parent.getList();
+            })
+          }
+        }
+      })
     },
   }
 }

+ 1 - 1
src/views/supply/retail/retail_list.vue

@@ -113,7 +113,7 @@
             <el-table-column align="center" label="出库数量" prop="hasSendQty" min-width="100" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="单价" prop="price" min-width="100" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="金额" prop="payAmount" min-width="100" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="返利使用比例" prop="rebateRate" min-width="110" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="返利类型" prop="customerWalletName2" min-width="120" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="返利金额" prop="rebateAmount" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
                 <div>{{scope.row.rebateAmount}}</div>