Просмотр исходного кода

feat(库存调拨): 添加客户和销售订单校筛选,库存台账增加客户和销售订单列,新增调拨判断必须是同客户同订单

liujt 5 месяцев назад
Родитель
Сommit
9c4ed25ef6

+ 7 - 0
src/views/warehouseManagement/inventoryAllocation/add.vue

@@ -1502,6 +1502,13 @@
               targetFactoriesId: this.params.targetFactoriesId,
             };
             console.log('params------------', params);
+            console.log('params.allotApplyAddPOBuilders------------', params);
+            const customerNames = params.allotApplyAddPOBuilders.map((item) => item.customerNames);
+            const saleOrderNos = params.allotApplyAddPOBuilders.map((item) => item.saleOrderNos);
+          
+            if (new Set(customerNames).size !== 1, new Set(saleOrderNos).size !== 1) {
+              return this.$message.error('不同客户,不同销售订单的产品不允许调拨');
+            } 
             storageApi.allotApplySave(params).then(() => {
               this.$message.success('保存成功');
               this.$router.go(-1);

+ 18 - 0
src/views/warehouseManagement/inventoryAllocation/components/inventory-search.vue

@@ -181,6 +181,24 @@
           </el-select>
         </el-form-item>
       </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="销售订单:" prop="saleOrderNo">
+          <el-input
+            clearable
+            v-model="where.saleOrderNo"
+            placeholder="请输入"
+          ></el-input>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="客户名称:" prop="customerName">
+          <el-input
+            clearable
+            v-model="where.customerName"
+            placeholder="请输入"
+          ></el-input>
+        </el-form-item>
+      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 18, md: 12 } : { span: 18 }">
         <div class="ele-form-actions">
           <el-button

+ 67 - 13
src/views/warehouseManagement/inventoryAllocation/components/print-template-bs-car.vue

@@ -7,6 +7,7 @@
   >
     <div
       id="printSection"
+      ref="printRef"
       style="
         display: flex;
         align-items: center;
@@ -48,7 +49,7 @@
           margin-bottom: 10px;
         "
       >
-        <span style="width: 40%">客户名称:</span>
+        <span style="width: 40%">客户名称:{{ infoData.customerNames }}</span>
         <span style="width: 40%"
           >发货单号:{{ infoData.allotCode }}</span
         >
@@ -63,8 +64,8 @@
       >
         <span style="width: 40%">发货日期:{{ infoData.createTime }}</span>
         <span style="width: 40%"
-          >收货联系人:
-        </span>
+          >收货联系人:{{ infoData.receiveContacts }} {{ infoData.receiveTels }}</span
+        >
       </div>
       <table
         cellspacing="0"
@@ -82,14 +83,14 @@
             <td style="padding: 5px; width: 35px"> 序号 </td>
             <td style="padding: 5px; width: 10%;"> 车型 </td>
             <td style="padding: 5px; width: 12%;"> 料号 </td>
-            <td style="padding: 5px; width: 20%;"> 零件名 </td>
+            <td style="padding: 5px; width: 18%;"> 零件名 </td>
             <td style="padding: 5px; width: 8%;"> 单位</td>
             <td style="padding: 5px; width: 8%;"> 交货数</td>
             <td style="padding: 5px; width: 8%;"> 实收数量</td>
             <td style="padding: 5px; width: 15%"> 客户订单号</td>
             <td style="padding: 5px; width: 8%;"> 重量</td>
             <td style="padding: 5px; width: 10%;"> 工艺</td>
-            <td style="padding: 5px; width: 10%;"> 备注</td>
+            <td style="padding: 5px; width: 12%;"> 备注</td>
           </tr>
 
           <tr align="center" v-for="(item, index) in detailList">
@@ -116,11 +117,44 @@
             <td style="border: 1px solid #000; padding: 8px; text-align: center;">{{ detailList.reduce((total, item) => total + Number(item.quantity || 0), 0) || ''}}</td>
             <td style="border: 1px solid #000; padding: 8px; text-align: center;">{{ detailList.reduce((total, item) => total + Number(item.quantity || 0), 0) || ''}}</td>
             <td style="border: 1px solid #000; padding: 8px; text-align: center;" colspan="4">
-              <div style="display: flex; align-items: center;">
-                <div style="flex: 1;">铁框:</div>
-                <div style="flex: 1;">托盘:</div>
-                <div style="flex: 1;">工装:</div>
-                <div style="flex: 1;">胶框:</div>
+              <div style="display: flex; align-items: center;" class="foot">
+                <div style="flex: 1; width: 25%; display: flex; align-items: center;">
+                  <span style="width: 50px;">铁框:</span>
+                  <el-input
+                    style="width: calc(100% - 50px); border: none;"
+                    placeholder=""
+                    v-model="query.tk"
+                    class="input-with-select"
+                  >
+                  </el-input>
+                </div>
+                <div style="flex: 1; width: 25%; display: flex; align-items: center;">
+                  <span style="width: 50px;">托盘:</span>
+                  <el-input
+                    style="width: calc(100% - 50px); border: none;"
+                    placeholder=""
+                    v-model="query.tp"
+                    class="input-with-select"
+                  ></el-input>
+                </div>
+                <div style="flex: 1; width: 25%; display: flex; align-items: center;">
+                  <span style="width: 50px;">工装:</span>
+                  <el-input
+                    style="width: calc(100% - 50px); border: none;"
+                    placeholder=""
+                    v-model="query.gz"
+                    class="input-with-select"
+                  ></el-input>
+                </div>
+                <div style="flex: 1; width: 25%; display: flex; align-items: center;">
+                  <span style="width: 50px;">胶框:</span>
+                  <el-input
+                    style="width: calc(100% - 50px); border: none;"
+                    placeholder=""
+                    v-model="query.jk"
+                    class="input-with-select"
+                  ></el-input>
+                </div>
               </div>
             </td>
           </tr>
@@ -156,6 +190,7 @@
 <script>
   import storageApi from '@/api/warehouseManagement/index.js';
   import { mapGetters } from 'vuex';
+  import { printElement } from 'ele-admin';
   export default {
     name: 'print',
     computed: {
@@ -174,11 +209,22 @@
         isPrintPrice: false,
         infoData: {},
         outBound: {},
-        detailList: []
+        detailList: [],
+        query: {
+          tp: '',
+          gz: '',
+          jk: '',
+          tk: '',
+        }
       };
     },
 
     methods: {
+      print() {
+          // 如果 ref 是组件可以用 this.$refs.printRef.$el
+          printElement(this.$refs.printRef);
+          //printElement(this.$refs.printRef, { });  // 参数二加更多参数同 printThis 方法
+      },
       async open(row) {
         this.row = row;
         this.getData();
@@ -215,7 +261,7 @@
         this.QRvisible = false;
       },
 
-      print() {
+      print1() {
         const printSection = document.getElementById('printSection');
         // 创建打印任务
         const printWindow = window.open('', '_blank');
@@ -236,4 +282,12 @@
   };
 </script>
 
-<style lang="scss"></style>
+<style lang="scss" scoped>
+ :deep(.foot) {
+    .el-input--medium .el-input__inner {
+      border: none;
+      padding-left: 0;
+      padding-right: 0;
+    }
+ }
+</style>

+ 3 - 3
src/views/warehouseManagement/inventoryAllocation/components/print-template-bs.vue

@@ -16,15 +16,15 @@
 
       <div style="margin-bottom: 15px; width: 100%;">
         <div style="display: flex; margin-bottom: 8px; width: 100%;">
-          <div style="flex: 1; text-align: left;">客户名称:</div>
+          <div style="flex: 1; text-align: left;">客户名称:{{ infoData.customerNames || '' }}</div>
           <div style="flex: 1; text-align: left;">发货单号:{{ infoData.allotCode || '' }}</div>
         </div>
         <div style="display: flex; margin-bottom: 8px;">
           <div style="flex: 1; text-align: left;">发货日期:{{ infoData.createTime || '' }}</div>
-          <div style="flex: 1; text-align: left;">联系人:</div>
+          <div style="flex: 1; text-align: left;">联系人:{{ infoData.receiveContacts || '' }}</div>
         </div>
         <div style="display: flex;">
-          <div style="flex: 1; text-align: left;">联系电话:</div>
+          <div style="flex: 1; text-align: left;">联系电话:{{ infoData.receiveTels || '' }}</div>
         </div>
       </div>
 

+ 22 - 0
src/views/warehouseManagement/stockLedger/components/item-list.vue

@@ -563,6 +563,28 @@
                 showOverflowTooltip: true
               }
             : '',
+          this.selectedDime == 3 || this.selectedDime == 2
+            ? {
+                prop: 'customerNames',
+                label: '客户名称',
+                showOverflowTooltip: true,
+                width: 120,
+                formatter: (row) => {
+                  return row.saleOrderInfo?.customerNames || '';
+                }
+              }
+            : '',
+          this.selectedDime == 3 || this.selectedDime == 2
+            ? {
+                prop: 'saleOrderNos',
+                label: '销售订单号',
+                showOverflowTooltip: true,
+                width: 120,
+                formatter: (row) => {
+                  return row.saleOrderInfo?.saleOrderNos || '';
+                }
+              }
+            : '',
           this.selectedDime == 3 || this.selectedDime == 4
             ? {
                 prop: 'engrave',

+ 18 - 0
src/views/warehouseManagement/stockLedger/components/item-search.vue

@@ -168,6 +168,24 @@
             ></el-input>
           </el-form-item>
         </el-col>
+        <!-- <el-col v-if="dimension == 3 || dimension == 2" :span="6">
+          <el-form-item label="销售订单号:" prop="saleOrderNos">
+            <el-input
+              clearable
+              v-model="params.saleOrderNos"
+              placeholder="请输入"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col v-if="dimension == 3 || dimension == 2" :span="6">
+          <el-form-item label="客户名称:" prop="customerNames">
+            <el-input
+              clearable
+              v-model="params.customerNames"
+              placeholder="请输入"
+            ></el-input>
+          </el-form-item>
+        </el-col> -->
         <!-- <el-col v-if="dimension == 3 || dimension == 4" :span="6">
           <el-form-item label="客户代号:" prop="clientCode">
             <el-input