ソースを参照

【新增】预留单

莫绍宝 3 年 前
コミット
18e698b2aa

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

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 获取列表
 export function getList(params) {
   return request({
-    url: '/ship/list',
+    url: '/reserve/list',
     method: 'get',
     params
   })
@@ -12,7 +12,25 @@ export function getList(params) {
 // 获取详情
 export function getDetail(params) {
   return request({
-    url: '/ship/detail',
+    url: '/reserve/detail',
+    method: 'get',
+    params
+  })
+}
+
+// 关闭
+export function closeData(params) {
+  return request({
+    url: '/reserve/update',
+    method: 'post',
+    params
+  })
+}
+
+// 获取产品列表
+export function getGoodsList(params) {
+  return request({
+    url: '/retail/list',
     method: 'get',
     params
   })

+ 9 - 0
src/api/supply/retail.js

@@ -125,3 +125,12 @@ export function adjustDeliver(params) {
     data: params
   })
 }
+
+// 直调完成
+export function finishData(params) {
+  return request({
+    url: '/retail/transfer/over',
+    method: 'post',
+    params
+  })
+}

+ 1 - 10
src/views/setting/role.vue

@@ -54,9 +54,6 @@
         <el-form-item label="角色名" prop="name">
           <el-input v-model="addForm.name" autocomplete="off" placeholder="请输入角色名"></el-input>
         </el-form-item>
-        <el-form-item label="上传文件" prop="fileUrl">
-          <fileUpload :fileList="fileList" />
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="cancelAddForm">取 消</el-button>
@@ -69,7 +66,7 @@
       <el-tree
         :data="menuRoleList"
         show-checkbox
-        :check-strictly="true"
+        :check-strictly="false"
         :default-expand-all="true"
         node-key="moduleId"
         ref="tree"
@@ -88,12 +85,8 @@
 <script>
 import { mapGetters } from 'vuex'
 import { getRoleList, addRole, editRole, getRoleDetail, deleteRole, getMenuList, getMenuRoleIds, setMenuRole } from '@/api/setting'
-import fileUpload from '@/components/Common/file-upload.vue'
 
 export default {
-  components: {
-    fileUpload
-  },
   data() {
     return {
       imageURL: this.$imageUrl,
@@ -122,8 +115,6 @@ export default {
         children: 'children',
         label: 'moduleName'
       },
-
-      fileList: [],
     }
   },
   computed: {

+ 39 - 71
src/views/supply/reserve/components/reserve_detail.vue

@@ -9,104 +9,63 @@
 
       <div class="diy-table-1">
         <el-row>
-          <el-col :span="24" class="item">
-            <div class="label">关联单据:</div>
-            <div class="value">{{detailData.billNo}}</div>
-          </el-col>
           <el-col :span="6" class="item">
             <div class="label">单据编号:</div>
-            <div class="value">{{detailData.billNo}}</div>
+            <div class="value">{{detailData.id}}</div>
           </el-col>
           <el-col :span="6" class="item">
             <div class="label">单据日期:</div>
-            <div class="value">{{detailData.fdate}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">货品名称:</div>
-            <div class="value">{{detailData.srcStockId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">类型:</div>
-            <div class="value">{{detailData.destStockId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">货品编码:</div>
-            <div class="value">{{detailData.approveDate}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">规格型号:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">计量单位:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">状态:</div>
-            <div class="value">{{detailData.approverId}}</div>
+            <div class="value">{{detailData.orderTime}}</div>
           </el-col>
           <el-col :span="6" class="item">
             <div class="label">制单人:</div>
-            <div class="value">{{detailData.approverId}}</div>
+            <div class="value">{{detailData.createBy}}</div>
           </el-col>
           <el-col :span="6" class="item">
             <div class="label">制单日期:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">修改人:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">修改日期:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">审核人:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">审核日期:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">关闭人:</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">关闭日期:</div>
-            <div class="value">{{detailData.approverId}}</div>
+            <div class="value">{{detailData.createTime}}</div>
           </el-col>
           <el-col :span="24" class="item">
             <div class="label">备注:</div>
-            <div class="value">{{detailData.approverId}}</div>
+            <div class="value">{{detailData.remark}}</div>
           </el-col>
         </el-row>
       </div>
 
       <div class="table" style="margin-top: 20px">
-        <el-table :data="detailData.kingDeeTransferItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+        <el-table :data="detailData.reservedOrderItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
           <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="物料编号" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="物料名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="规格型号" prop="model" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="主计量单位" prop="baseUnitId" 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="consignPrice" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="金额" prop="consignAmount" 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="theTime" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="经销商编码" prop="customerId" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="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="reservedRemark" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="修改人" prop="updateBy" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="修改时间" prop="updateTime" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="关闭人" prop="closureBy" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="关闭时间" prop="closureTime" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="状态" prop="status" min-width="100" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.status | statusFilter}}
+            </template>
+          </el-table-column>
         </el-table>
       </div>
       
     </div>
     
-    <!-- <div class="page-footer">
+    <div class="page-footer">
       <div class="footer" :class="classObj">
-        <el-button  type="primary" icon="el-icon-printer" v-print="printObj">打 印</el-button>
-        <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
-          <el-button slot="reference">关 闭</el-button>
-        </el-popconfirm>
+        <el-button @click="goBack">关 闭</el-button>
       </div>
-    </div> -->
+    </div>
 
   </div>
 </template>
@@ -122,6 +81,15 @@ export default {
   directives: {
     print
   },
+  filters: {
+    statusFilter(val) {
+      const MAP = {
+        0: '已关闭',
+        1: '执行中',
+      }
+      return MAP[val];
+    }
+  },
   data() {
     return {
       printObj: {

+ 303 - 60
src/views/supply/reserve/components/reserve_form.vue

@@ -9,24 +9,14 @@
     <el-form ref="mainForm" :model="mainForm" label-width="70px" size="small" label-position="left">
       <el-row :gutter="20">
         <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="关联单据" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入关联单据"></el-input>
-          </el-form-item>
-        </el-col>
-        <!-- <el-col :xs="24" :sm="12" :lg="6">
-          <el-button size="small" type="primary" @click="getDeliverList">确定</el-button>
-        </el-col> -->
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="单据编号" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入单据编号"></el-input>
+          <el-form-item label="单据编号" prop="orderNum">
+            <el-input v-model="mainForm.orderNum" placeholder="系统自动生成" readonly></el-input>
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="12" :lg="6" style="height: 51px;">
-          <el-form-item label="单据日期" prop="date">
+          <el-form-item label="单据日期" prop="orderDate">
             <el-date-picker
-              v-model="mainForm.date"
+              v-model="mainForm.orderDate"
               type="date"
               value-format="yyyy-MM-dd"
               style="width: 100%;"
@@ -35,62 +25,48 @@
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="货品名称" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入货品名称"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="类型" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入类型"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="货品编码" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入货品编码"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="规格型号" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入规格型号"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="计量单位" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入计量单位"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="备注" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入备注"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :xs="24" :sm="12" :lg="6">
-          <el-form-item label="制单人" prop="warehouse">
-            <el-input v-model="mainForm.remark" placeholder="请输入制单人"></el-input>
+          <el-form-item label="制单人" prop="createMan">
+            <el-input v-model="mainForm.createMan" placeholder="请输入制单人" readonly></el-input>
           </el-form-item>
         </el-col>
         <el-col :xs="24" :sm="12" :lg="6" style="height: 51px;">
-          <el-form-item label="制单日期" prop="date">
+          <el-form-item label="制单日期" prop="createDate">
             <el-date-picker
-              v-model="mainForm.date"
-              type="date"
-              value-format="yyyy-MM-dd"
+              v-model="mainForm.createDate"
+              readonly
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
               style="width: 100%;"
               placeholder="选择日期">
             </el-date-picker>
           </el-form-item>
         </el-col>
+        <el-col :xs="24" :sm="24" :lg="24">
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="mainForm.remark" placeholder="请输入备注"></el-input>
+          </el-form-item>
+        </el-col>
       </el-row>
     </el-form>
 
+    <div style="margin-top: 20px">
+      <el-button type="primary" size="small" icon="el-icon-plus" @click="openDialog">添加引用</el-button>
+    </div>
     <div class="table" style="margin-top: 20px">
-      <el-table :data="detailData.kingDeeTransferItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+      <el-table :data="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="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="经销商名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="预留数量" prop="model" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="开单数量" prop="baseUnitId" 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="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-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="reservedRemark" min-width="160" show-overflow-tooltip></el-table-column>
       </el-table>
     </div>
     
@@ -104,11 +80,108 @@
       </div>
     </div>
 
+    <el-dialog title="添加引用" :visible.sync="isShowDialog" width="80%">
+      <el-form ref="screenForm" :model="screenForm" size="small" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="12" :sm="6" :lg="4">
+            <el-form-item prop="jxsNum">
+              <el-input v-model="screenForm.jxsNum" 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>
+          </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-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>
+          </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>
+          </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>
+          </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>
+          </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-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>
+          </el-col>
+          <el-col :xs="12" :sm="6" :lg="4" 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="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="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="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>
+        <div class="pagination clearfix" style="margin-top: 10px">
+          <div class="fr">
+            <el-pagination
+              @current-change="handleTableCurrentChange"
+              :current-page="currentPage"
+              :page-size="10"
+              background
+              layout="prev, pager, next"
+              :total="listTotal">
+            </el-pagination>
+          </div>
+        </div>
+      </div>
+      
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDialog">取 消</el-button>
+        <el-button type="primary" @click="submitAddGoods">确 定</el-button>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
-import { getDetail } from "@/api/supply/reserve";
+import { getDetail, getGoodsList } from "@/api/supply/reserve";
 
 export default {
   name: 'ReserveForm',
@@ -116,10 +189,27 @@ export default {
   props: ['listItem'],
   data() {
     return {
-      detailData: {},
       mainForm: {
+        orderNum: '',
+        orderDate: '',
+        createMan: '',
+        createDate: '',
+        remark: '',
+      },
+      goodsList: [],
 
+      isShowDialog: false,
+      screenForm: {
+        warehouse: '',
+        type: '',
+        orderNum: '',
       },
+      currentPage: 1,
+      listTotal: 0,
+      typeList: [],
+      
+      tableGoodsList: [],
+      tableSelection: [],
     }
   },
 
@@ -136,10 +226,31 @@ export default {
   },
 
   created() {
-    this.getDetail();
+    if(this.listItem) {
+      this.getDetail();
+    }else {
+      this.mainForm.createMan = JSON.parse(localStorage.getItem("supply_user")).nickName;
+      this.mainForm.createDate = this.getDate();
+    }
   },
 
   methods: {
+    getDate() {
+      var date = new Date();
+      var seperator1 = "-";
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+          month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+          strDate = "0" + strDate;
+      }
+      var currentdate = year + seperator1 + month + seperator1 + strDate;
+      return currentdate;
+    },
+
     // 返回列表
     goBack() {
       this.$emit('backListFormDetail');
@@ -148,10 +259,142 @@ export default {
     // 获取详情
     getDetail() {
       getDetail({id: this.listItem.id}).then(res => {
-        this.detailData = res.data;
+        let data = res.data;
+        this.mainForm.orderNum = data.id;
+        this.mainForm.orderDate = data.orderTime;
+        this.mainForm.createMan = data.createBy;
+        this.mainForm.createDate = data.createTime;
+        this.mainForm.remark = data.remark;
+        this.goodsList = data.reservedOrderItems;
       })
     },
 
+    // 获取商品列表
+    getGoodsList() {
+      getGoodsList({
+        pageNum: this.currentPage,
+        pageSize: 10,
+        stockId: this.screenForm.warehouse,
+        mainId: this.screenForm.type,
+        id: this.screenForm.orderNum,
+        examineStatus: 'OK',
+        type: 1,
+      }).then(res => {
+        let oldGoodsList = this.goodsList;
+        let newGoodsList = res.data.records;
+        for(let i = 0; i < oldGoodsList.length; i++) {
+          let oldItem = oldGoodsList[i]
+          for(let j = 0; j < newGoodsList.length; j++) {
+            let newItem = newGoodsList[j]
+            if(newItem.materialId === oldItem.materialId){
+              newGoodsList[j].selected = true;
+              break;
+            }
+          }
+        }
+        this.tableGoodsList = newGoodsList;
+        this.listTotal = res.data.total;
+      })
+    },
+
+    // 查询重复值并禁选
+    checkboxSelect(row, rowIndex) {
+      if (row.selected) {
+        return false // 禁用
+      }else{
+        return true // 不禁用
+      }
+    },
+
+    // 点击 选择商品
+    openDialog() {
+      this.isShowDialog = true;
+      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() {
 
     },

+ 74 - 54
src/views/supply/reserve/reserve_list.vue

@@ -5,26 +5,14 @@
       <div class="screen-container">
         <el-form ref="screenForm" :model="screenForm" label-width="90px" 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-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="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="orderNum">
-                <el-input v-model="screenForm.orderNum" 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">
@@ -38,7 +26,7 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="单据日期" prop="date">
+              <el-form-item label="预留日期" prop="date">
                 <el-date-picker
                   v-model="screenForm.date"
                   type="datetimerange"
@@ -51,17 +39,27 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="制表人" prop="chName">
-                <el-input v-model="screenForm.chName" placeholder="请输入制表人"></el-input>
+              <el-form-item label="制表人" prop="createMan">
+                <el-input v-model="screenForm.createMan" placeholder="请输入制表人"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :lg="6">
+              <el-form-item label="修改人" prop="updateMan">
+                <el-input v-model="screenForm.updateMan" 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="orderNum">
+                <el-input v-model="screenForm.orderNum" placeholder="请输入预留单号"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :lg="6">
+              <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" class="tr">
+            <el-col :xs="24" :sm="12" :lg="18" class="tr">
               <el-form-item label="">
                 <el-button size="small" @click="resetScreenForm">清空</el-button>
                 <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
@@ -82,35 +80,38 @@
         </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="stockName" 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="status" min-width="100" show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{scope.row.status | statusFilter}}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="预留单号" prop="id" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="预留日期" prop="orderTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="销售订单号" prop="orderId" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单日期" prop="theTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品大类" prop="mainName" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="计量单位" prop="unit" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="预留数量" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="开单数量" prop="number" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="预留数量" prop="reservedNum" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="订单数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="备注" prop="remark" min-width="160" 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="customerId" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip></el-table-column>
-            <el-table-column align="center" label="产品名称" prop="productName" 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="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="200" 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="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="updateBy" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="修改日期" prop="updateTime" min-width="160" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="关闭人" prop="closureBy" min-width="100" show-overflow-tooltip></el-table-column>
+            <el-table-column align="center" label="关闭日期" prop="closureTime" min-width="160" show-overflow-tooltip></el-table-column>
             <el-table-column align="center" label="操作" width="160" fixed="right">
               <template slot-scope="scope">
                 <el-button type="text" @click="toForm(scope.row)">编辑</el-button>
                 <el-button type="text" @click="toDetail(scope.row)">详情</el-button>
-                <el-popconfirm v-if="scope.row.status" style="margin-left: 10px;" title="确定删除吗?" @onConfirm="handleDelete(scope.row.id)" >
-                  <el-button slot="reference" type="text">删除</el-button>
+                <el-popconfirm style="margin-left: 10px;" title="确定关闭吗?" @onConfirm="handleClose(scope.row.itemId)" >
+                  <el-button slot="reference" type="text">关闭</el-button>
                 </el-popconfirm>
               </template>
             </el-table-column>
@@ -139,7 +140,7 @@
 </template>
 
 <script>
-import { getList } from "@/api/supply/reserve";
+import { getList, closeData } from "@/api/supply/reserve";
 import ReserveDetail from "@/views/supply/reserve/components/reserve_detail";
 import ReserveForm from "@/views/supply/reserve/components/reserve_form";
 
@@ -148,6 +149,15 @@ export default {
     ReserveDetail,
     ReserveForm,
   },
+  filters: {
+    statusFilter(val) {
+      const MAP = {
+        0: '已关闭',
+        1: '执行中',
+      }
+      return MAP[val];
+    }
+  },
   data() {
     return {
       currentPage: 1, // 当前页码
@@ -156,13 +166,16 @@ export default {
       dataList: null, // 列表数据
       listLoading: false, // 列表加载loading
       screenForm: { // 筛选表单数据
+        goodsName: '',
+        goodsNum: '',
         orderNum: '',
         jxsName: '',
-        chName: '',
-        model: '',
-        date: '',
         jxsNum: '',
-        status: '',
+        date: '',
+        createMan: '',
+        updateMan: '',
+        orderNum: '',
+        saleNum: '',
       },
 
       queryItem: {},
@@ -207,14 +220,16 @@ export default {
       let params = {
         pageNum: this.currentPage,
         pageSize: this.pageSize,
-        retreatOrderNo: this.screenForm.orderNum,
+        materialName: this.screenForm.goodsName,
+        materialCode: this.screenForm.goodsNum,
         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:工程发货单
+        createBy: this.screenForm.createMan,
+        updateBy: this.screenForm.updateMan,
+        id: this.screenForm.orderNum,
+        orderId: this.screenForm.saleNum,
       };
       getList(params).then((res) => {
         this.dataList = res.data.records;
@@ -267,8 +282,13 @@ export default {
       this.isShowForm = false;
     },
 
-    handleDelete(id) {
 
+    // 关闭
+    handleClose(id) {
+      closeData({itemId: id}).then(res => {
+        this.$successMsg();
+        this.getList();
+      })
     }
   }
 }

+ 18 - 1
src/views/supply/retail/components/retail_detail.vue

@@ -119,6 +119,7 @@
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button type="primary" @click="openDeliverDialog" :disabled="detailData.examineStatus !== 'OK'">直调发货</el-button>
+        <el-button type="primary" @click="handleFinish" :disabled="detailData.examineStatus !== 'OK'">直调完成</el-button>
         <el-button @click="goBack">关 闭</el-button>
       </div>
     </div>
@@ -186,7 +187,7 @@
 </template>
 
 <script>
-import { getDetail, getWarehouseList, adjustDeliver } from "@/api/supply/retail";
+import { getDetail, getWarehouseList, adjustDeliver, finishData } from "@/api/supply/retail";
 
 export default {
   name: 'RetailDetail',
@@ -325,6 +326,22 @@ export default {
       })
     },
 
+    // 直调完成
+    handleFinish() {
+      this.$confirm('此操作将直调完成, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        finishData({
+          id: this.listItem.id
+        }).then(res => {
+          this.$successMsg();
+          this.getDetail();
+        })
+      }).catch(() => {});
+    },
+
   }
 }
 </script>

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

@@ -124,11 +124,11 @@
             <el-checkbox v-model="scope.row.isDirectTransfer"></el-checkbox>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="直调数量" prop="directTransferQty" min-width="100">
+        <!-- <el-table-column align="center" label="直调数量" prop="directTransferQty" min-width="100">
           <template slot-scope="scope">
             <el-input v-model="scope.row.directTransferQty" size="small"></el-input>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column align="center" label="备注" prop="remark" min-width="160">
           <template slot-scope="scope">
             <el-input v-model="scope.row.remark" size="small"></el-input>