Преглед изворни кода

【修改】
1.预留单
2.仓库库存管理

莫绍宝 пре 3 година
родитељ
комит
cde3fe5239

+ 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
   })
-}
+}

+ 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
+  })
 }

+ 8 - 0
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: '', // 确认密码
       },
@@ -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;

+ 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;
       })

+ 70 - 18
src/views/stock/stock_list.vue

@@ -6,37 +6,58 @@
         <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-select v-model="screenForm.warehouse" placeholder="请选择仓库" @change="changeWarehouse">
                 <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>
             </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="请选择仓位">
+                <el-option label="全部" value=""></el-option>
+                <el-option :label="item.name" :value="item.name" 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-form-item label="类" prop="type">
+              <el-select v-model="screenForm.type" placeholder="全部" @change="changeType">
                 <el-option label="全部" value=""></el-option>
                 <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="全部">
+                <el-option label="全部" value=""></el-option>
+                <el-option v-for="item in smallList" :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="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 +75,19 @@
       </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="categoryName" 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="aaa" 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="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="stockQty" 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="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="aaa" min-width="140" show-overflow-tooltip></el-table-column>
         </el-table>
       </div>
     </div>
@@ -84,7 +110,7 @@
 
 <script>
 import { getStockList, getWarehouseList } from "@/api/stock";
-import { getDictList } from '@/api/common'
+import { getDictList, getSmallList } from '@/api/common'
 
 export default {
   data() {
@@ -96,13 +122,18 @@ export default {
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
         warehouse: '',
-        name: '',
-        code: '',
+        position: '',
+        goodsName: '',
+        goodsNum: '',
+        goodsCode: '',
         model: '',
         type: '',
+        smallType: '',
       },
       warehouseList: [],
+      positionList: [],
       typeList: [],
+      smallList: [],
     }
   },
 
@@ -144,12 +175,33 @@ 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 = '';
+      this.getSmallList();
+    },
+
+    // 更改仓库
+    changeWarehouse() {
+      this.screenForm.position = '';
+      let obj = this.warehouseList.find(o => o.name == this.screenForm.warehouse);
+      this.positionList = obj.kingDeeStocks;
+    },
+
     // 查询列表
     getList() {
       this.listLoading = true;
@@ -158,8 +210,8 @@ export default {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
         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,
       };

+ 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;

+ 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();
+            })
+          }
+        }
+      })
     },
   }
 }