From 1ab4af2a04a4be4a2b885f0a5ef9c1681ba686b4 Mon Sep 17 00:00:00 2001
From: xzg <4727863@qq.com>
Date: Mon, 21 Oct 2024 09:43:19 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=8C=85=E5=A2=9E=E5=8A=A0=E6=8F=90?=
 =?UTF-8?q?=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../delivery/distributionStockArticle.vue     | 462 +++++++++---------
 1 file changed, 234 insertions(+), 228 deletions(-)

diff --git a/src/views/distribution/inventory/delivery/distributionStockArticle.vue b/src/views/distribution/inventory/delivery/distributionStockArticle.vue
index 61c60ea7..dde9b721 100644
--- a/src/views/distribution/inventory/delivery/distributionStockArticle.vue
+++ b/src/views/distribution/inventory/delivery/distributionStockArticle.vue
@@ -157,8 +157,17 @@
             <el-text @click="handleView(slotProps.scope)"> 查看 </el-text>
             <el-text @click="handleCallDeliveryOwn(slotProps.scope)"> 修改客户信息 </el-text>
             <el-text @click="handleGoLogs(slotProps.scope)"> 日志 </el-text>
-            <el-text @click="Splittheorder(slotProps.scope.row)" v-if="slotProps.scope.row.isZero ==0 && permissionList.distributionStockList_unpack"> 拆单 </el-text>
-            <el-text @click="zeroSplittheorder(slotProps.scope.row)"  v-if="slotProps.scope.row.isZero ==1" >零担拆单</el-text>
+            <el-text
+              @click="Splittheorder(slotProps.scope.row)"
+              v-if="slotProps.scope.row.isZero == 0 && permissionList.distributionStockList_unpack"
+            >
+              拆单
+            </el-text>
+            <el-text
+              @click="zeroSplittheorder(slotProps.scope.row)"
+              v-if="slotProps.scope.row.isZero == 1"
+              >零担拆单</el-text
+            >
           </template>
         </template>
       </tablecmt>
@@ -406,183 +415,176 @@
     </div>
     <!-- 零担拆单 -->
     <el-dialog
-    v-model="zerodialogTableVisible"
-    width="65%"
-    title="运单信息"
-    :show-close="false"
-    :lock-scroll="false"
-    :align-center="true"
-  >
-    <div class="topbox">
-      <div class="titlxbx">
-        <div>
-          <div>运单号</div>
-          <div>{{ rowobj.waybillNumber }}</div>
-        </div>
-        <div>
-          <div>品牌</div>
-          <div>{{ rowobj.brand }}</div>
-        </div>
-        <div>
-          <div></div>
-          <div></div>
-        </div>
-      </div>
-      <div class="titlxbx">
-        <div>
-          <div>发货单位</div>
-          <div>{{ rowobj.shipper }}</div>
-        </div>
-        <div>
-          <div>发货人</div>
-          <div>{{ rowobj.shipperName }}</div>
-        </div>
-        <div>
-          <div>发货方电话</div>
-          <div>{{ rowobj.shipperMobile }}</div>
-        </div>
-      </div>
-      <div class="titlxbx">
-        <div>
-          <div>发货方地址</div>
-          <div>{{ rowobj.shipperAddress }}</div>
-        </div>
-        <div>
-          <div></div>
-          <div></div>
-        </div>
-        <div>
-          <div></div>
-          <div></div>
-        </div>
-      </div>
-      <div class="titlxbx">
-        <div>
-          <div>收货单位</div>
-          <div>{{ rowobj.consignee }}</div>
-        </div>
-        <div>
-          <div>收货人</div>
-          <div>{{ rowobj.consigneeName }}</div>
-        </div>
-        <div>
-          <div>收货电话</div>
-          <div>{{ rowobj.consigneeMobile }}</div>
-        </div>
-      </div>
-      <div class="titlxbx">
-        <div>
-          <div>收货地址</div>
-          <div>{{ rowobj.consigneeAddress }}</div>
+      v-model="zerodialogTableVisible"
+      width="65%"
+      title="运单信息"
+      :show-close="false"
+      :lock-scroll="false"
+      :align-center="true"
+    >
+      <div class="topbox">
+        <div class="titlxbx">
+          <div>
+            <div>运单号</div>
+            <div>{{ rowobj.waybillNumber }}</div>
+          </div>
+          <div>
+            <div>品牌</div>
+            <div>{{ rowobj.brand }}</div>
+          </div>
+          <div>
+            <div></div>
+            <div></div>
+          </div>
         </div>
-        <div>
-          <div></div>
-          <div></div>
+        <div class="titlxbx">
+          <div>
+            <div>发货单位</div>
+            <div>{{ rowobj.shipper }}</div>
+          </div>
+          <div>
+            <div>发货人</div>
+            <div>{{ rowobj.shipperName }}</div>
+          </div>
+          <div>
+            <div>发货方电话</div>
+            <div>{{ rowobj.shipperMobile }}</div>
+          </div>
         </div>
-        <div>
-          <div>运单总件数</div>
-          <div>{{ rowobj.totalCount }}</div>
+        <div class="titlxbx">
+          <div>
+            <div>发货方地址</div>
+            <div>{{ rowobj.shipperAddress }}</div>
+          </div>
+          <div>
+            <div></div>
+            <div></div>
+          </div>
+          <div>
+            <div></div>
+            <div></div>
+          </div>
         </div>
-
- 
-      </div>
-      <div class="titlxbx">
-        <div>
-          <div>货物类型</div>
-          <div>{{ rowobj.goodsName }}</div>
+        <div class="titlxbx">
+          <div>
+            <div>收货单位</div>
+            <div>{{ rowobj.consignee }}</div>
+          </div>
+          <div>
+            <div>收货人</div>
+            <div>{{ rowobj.consigneeName }}</div>
+          </div>
+          <div>
+            <div>收货电话</div>
+            <div>{{ rowobj.consigneeMobile }}</div>
+          </div>
         </div>
-        <div>
-          <div>订单总件数</div>
-          <div>{{ rowobj.totalNumber }}</div>
+        <div class="titlxbx">
+          <div>
+            <div>收货地址</div>
+            <div>{{ rowobj.consigneeAddress }}</div>
+          </div>
+          <div>
+            <div></div>
+            <div></div>
+          </div>
+          <div>
+            <div>运单总件数</div>
+            <div>{{ rowobj.totalCount }}</div>
+          </div>
         </div>
+        <div class="titlxbx">
+          <div>
+            <div>货物类型</div>
+            <div>{{ rowobj.goodsName }}</div>
+          </div>
+          <div>
+            <div>订单总件数</div>
+            <div>{{ rowobj.totalNumber }}</div>
+          </div>
 
-        <div>
-          <div>剩余件数</div>
-          <div>{{ rowobj.handQuantity }}</div>
-        </div>
-      </div>
-    </div>
-    <div class="maxitembxlist"  v-loading="zeroload"
-    element-loading-text="Loading...">
-      <div class="items" v-for="(item, index) in orderlist" :key="item">
-        <div class="titltophead">
-          <div>订单{{ index + 1 }}</div>
           <div>
-            <el-icon class="icons" @click="addorder"><CirclePlusFilled /></el-icon>
-            <el-icon v-if="orderlist.length > 1" class="icons" @click="rmvorder(index)"
-              ><RemoveFilled
-            /></el-icon>
+            <div>剩余件数</div>
+            <div>{{ rowobj.handQuantity }}</div>
           </div>
         </div>
-        <div class="contbx">
-          <div class="tabitem">
-            <div>货物名称</div>
-            
-            <div>可用件数</div>
-            <div>分配数量</div>
-          </div>
-          <div class="contentitem" v-for="itemlimit in item.goods" :key="itemlimit">
+      </div>
+      <div class="maxitembxlist" v-loading="zeroload" element-loading-text="Loading...">
+        <div class="items" v-for="(item, index) in orderlist" :key="item">
+          <div class="titltophead">
+            <div>订单{{ index + 1 }}</div>
             <div>
-              {{ itemlimit.productName }}
-            </div>
-            <div class="numbinput">
-              <el-input-number
-                class="w100"
-                v-model="itemlimit.quantity"
-                disabled
-              />
-            </div>
-            <div class="numbinput">
-              <el-input-number
-                class="w100"
-                :min="0"
-                :max="itemlimit.quantity"
-                :value-on-clear="0"
-                v-model="itemlimit.splitNum"
-                :controls="false"
-                :precision="0"
-                placeholder="请输入数量"
-              />
+              <el-icon class="icons" @click="addorder"><CirclePlusFilled /></el-icon>
+              <el-icon v-if="orderlist.length > 1" class="icons" @click="rmvorder(index)"
+                ><RemoveFilled
+              /></el-icon>
             </div>
           </div>
-        </div>
-        <div class="editinput">
-          <div class="inputitem">
-            <div class="inpts">
-              <span>收货人:</span>
-              <div>
-                <el-input v-model="item.name" placeholder="请输入收货人" />
-              </div>
+          <div class="contbx">
+            <div class="tabitem">
+              <div>货物名称</div>
+
+              <div>可用件数</div>
+              <div>分配数量</div>
             </div>
-            <div class="inpts">
-              <span>收货人电话:</span>
+            <div class="contentitem" v-for="itemlimit in item.goods" :key="itemlimit">
               <div>
-                <el-input v-model="item.phone" placeholder="请输入收货人电话" />
+                {{ itemlimit.productName }}
+              </div>
+              <div class="numbinput">
+                <el-input-number class="w100" v-model="itemlimit.quantity" disabled />
+              </div>
+              <div class="numbinput">
+                <el-input-number
+                  class="w100"
+                  :min="0"
+                  :max="itemlimit.quantity"
+                  :value-on-clear="0"
+                  v-model="itemlimit.splitNum"
+                  :controls="false"
+                  :precision="0"
+                  placeholder="请输入数量"
+                />
               </div>
             </div>
           </div>
-          <div class="inputitem">
-            <div class="inpts">
-              <span>收货人地址:</span>
-              <div>
-                <el-input v-model="item.addres" placeholder="请输入收货人地址" />
+          <div class="editinput">
+            <div class="inputitem">
+              <div class="inpts">
+                <span>收货人:</span>
+                <div>
+                  <el-input v-model="item.name" placeholder="请输入收货人" />
+                </div>
+              </div>
+              <div class="inpts">
+                <span>收货人电话:</span>
+                <div>
+                  <el-input v-model="item.phone" placeholder="请输入收货人电话" />
+                </div>
               </div>
             </div>
-            <div class="inpts">
-              <span>备注:</span>
-              <div>
-                <el-input v-model="item.rak" type="textarea" placeholder="请输入备注" />
+            <div class="inputitem">
+              <div class="inpts">
+                <span>收货人地址:</span>
+                <div>
+                  <el-input v-model="item.addres" placeholder="请输入收货人地址" />
+                </div>
+              </div>
+              <div class="inpts">
+                <span>备注:</span>
+                <div>
+                  <el-input v-model="item.rak" type="textarea" placeholder="请输入备注" />
+                </div>
               </div>
             </div>
           </div>
         </div>
       </div>
-    </div>
-    <div class="btsbx">
-      <el-button @click="zerodialogTableVisible=false">取消</el-button>
-      <el-button :disabled="zeroload" type="primary" @click="hidedial">确认</el-button>
-    </div>
-  </el-dialog>
+      <div class="btsbx">
+        <el-button @click="zerodialogTableVisible = false">取消</el-button>
+        <el-button :disabled="zeroload" type="primary" @click="hidedial">确认</el-button>
+      </div>
+    </el-dialog>
     <!-- 拆单弹窗 -->
     <el-dialog v-model="dialogSplitthe" title="新增拆单任务">
       <el-button type="primary" @click="newadd">新增</el-button>
@@ -689,7 +691,7 @@ import { getDictionaryBiz } from '@/api/system/dict';
 import dayjs from 'dayjs';
 import { exportBlob } from '@/api/common';
 import { getToken } from '@/utils/auth';
-import { downloadXls, getObjType, handleClearTableQuery,isNumber } from '@/utils/util';
+import { downloadXls, getObjType, handleClearTableQuery, isNumber } from '@/utils/util';
 import { columnList } from '@/option/distribution/distributionStockArticleSelf';
 import { deepClone, setNodeHeight, hanleTextLineFeed } from '@/utils/util.js';
 import { ElMessage, ElMessageBox } from 'element-plus';
@@ -701,9 +703,9 @@ export default {
       excelForm: {},
       excelBox: false,
       tcloading: false,
-      rowobj:{},
-      zeroload:false,
-      parcelList:[],
+      rowobj: {},
+      zeroload: false,
+      parcelList: [],
       orderobj: {
         name: '',
         phone: '',
@@ -730,7 +732,7 @@ export default {
           ],
         },
       ],
-      zerodialogTableVisible:false,
+      zerodialogTableVisible: false,
       Totalnumbersplitorders: 0,
       dataRwo: {},
       ruleForm: {
@@ -896,13 +898,16 @@ export default {
   computed: {
     ...mapGetters(['permission']),
     permissionList() {
-      console.log(this.permission,'this.permission');
+      console.log(this.permission, 'this.permission');
       return {
         addBtn: this.validData(this.permission.basicdataBrandCategory_add, false),
         viewBtn: this.validData(this.permission.basicdataBrandCategory_view, false),
         delBtn: this.validData(this.permission.basicdataBrandCategory_delete, false),
         editBtn: this.validData(this.permission.basicdataBrandCategory_edit, false),
-        distributionStockList_unpack: this.validData(this.permission.distributionStockList_unpack, false),
+        distributionStockList_unpack: this.validData(
+          this.permission.distributionStockList_unpack,
+          false
+        ),
       };
     },
     ids() {
@@ -1458,17 +1463,17 @@ export default {
                 type: 'warning',
               });
             } else {
-              this.Splittheform.PackageList=[
-              {
-              stockArticleId: '', //被拆订单ID
-              orderCode: '', //被拆订单
-              mallName: '', //商场名称
-              taskNumber: '', //任务拆单数量
-              customerName: '', //新的客户姓名
-              customerTelephone: '', //新的客户联系方式
-              customerAddress: '', //新的客户地址
-              },
-              ]
+              this.Splittheform.PackageList = [
+                {
+                  stockArticleId: '', //被拆订单ID
+                  orderCode: '', //被拆订单
+                  mallName: '', //商场名称
+                  taskNumber: '', //任务拆单数量
+                  customerName: '', //新的客户姓名
+                  customerTelephone: '', //新的客户联系方式
+                  customerAddress: '', //新的客户地址
+                },
+              ];
               this.dialogSplitthe = true;
             }
           }
@@ -1481,40 +1486,40 @@ export default {
         });
     },
     // 零担拆单
-   async zeroSplittheorder(row){
+    async zeroSplittheorder(row) {
       console.log(row);
-      
-      this.zerodialogTableVisible=true
-      let _data={
-        orderId:row.id
-      }
-      let res=    await  $_zeroetail(_data)
-      console.log(res,'res');
-      const {code , data } = res.data
-      if(code !=200){
-        return
-      }
-      let _obj ={
-        ...data.orderInfo,...data.waybillEntity
+
+      this.zerodialogTableVisible = true;
+      let _data = {
+        orderId: row.id,
+      };
+      let res = await $_zeroetail(_data);
+      console.log(res, 'res');
+      const { code, data } = res.data;
+      if (code != 200) {
+        return;
       }
-      console.log(data.orderInfo,'data.orderInfo');
-      
-      console.log(data.waybillEntity,'data.waybillEntity');
-      
-      console.log( _obj,' _obj');
-      
-      let Name = data.parcelList.map(res=>res.firsts).join(',')
-      this.rowobj=_obj
+      let _obj = {
+        ...data.orderInfo,
+        ...data.waybillEntity,
+      };
+      console.log(data.orderInfo, 'data.orderInfo');
+
+      console.log(data.waybillEntity, 'data.waybillEntity');
+
+      console.log(_obj, ' _obj');
+
+      let Name = data.parcelList.map(res => res.firsts).join(',');
+      this.rowobj = _obj;
       this.orderlist.splice(1);
-      this.parcelList=data.parcelList;
-      
-// 使用数组来批量设置属性
-['addres', 'name', 'phone', 'rak'].forEach(prop => {
-  this.orderlist[0][prop] = '';
-});
-      this.orderlist[0].goods = this.splitName(Name,data.parcelList);
-      console.log(this.orderlist[0],'this.orderlist[0]');
-      
+      this.parcelList = data.parcelList;
+
+      // 使用数组来批量设置属性
+      ['addres', 'name', 'phone', 'rak'].forEach(prop => {
+        this.orderlist[0][prop] = '';
+      });
+      this.orderlist[0].goods = this.splitName(Name, data.parcelList);
+      console.log(this.orderlist[0], 'this.orderlist[0]');
     },
     addorder() {
       // 实现对对象内包含的元素进行copy
@@ -1522,17 +1527,17 @@ export default {
       obsj.goods = this.splitName(this.rowobj.goodsName, this.parcelList);
       this.orderlist.push(obsj);
     },
-    splitName(goodName,data) {
-      console.log(goodName,'goodName');
-      
+    splitName(goodName, data) {
+      console.log(goodName, 'goodName');
+
       var t = goodName.split(',');
       var arr = [];
       for (let i = 0; i < t.length; i++) {
         var proN = t[i];
-        var o = {}; 
+        var o = {};
         o.productName = proN;
         o.splitNum = 0;
-        o.quantity=data[i].quantity;
+        o.quantity = data[i].quantity;
         arr[i] = o;
       }
       return arr;
@@ -1545,7 +1550,7 @@ export default {
       this.orderlist.splice(index, 1);
     },
     async hidedial() {
-      this.zeroload=true
+      this.zeroload = true;
       try {
         let _arr = [];
         let totalNum = 0;
@@ -1556,7 +1561,7 @@ export default {
           let _flag = false;
           for (let i = 0; i < value.goods.length; i++) {
             const item = value.goods[i];
- 
+
             console.log('item :>> ', item);
             if (isNumber(item.splitNum) && item.splitNum > 0) _flag = true;
             totalNum += item.splitNum;
@@ -1572,15 +1577,15 @@ export default {
           };
           _arr.push(obj);
         }
-        console.log(this.rowobj,'this.rowobj');
-        
+        console.log(this.rowobj, 'this.rowobj');
+
         console.log('_arr :>> ', _arr);
-  
+
         if (_arr.length === 0) return this.$message.error('请选择需要拆单的数据');
         if (totalNum > this.rowobj.handQuantity) return this.$message.error('总数大于可用数量');
         this.dialogTableVisible = false;
         console.log(_arr);
-        this.zeroload=true
+        this.zeroload = true;
         const res = await $_splitOrder(_arr);
 
         const { code, data } = res.data;
@@ -1590,7 +1595,7 @@ export default {
 
         this.page.currentPage = 1;
         this.onLoad(this.page);
-        this.zerodialogTableVisible=false
+        this.zerodialogTableVisible = false;
         // splitOrder(row).then(res => {
         //   const data = res.data.data;
         //   this.page.total = data.total;
@@ -1603,11 +1608,10 @@ export default {
         console.log('error :>> ', error);
       } finally {
         console.log('111 :>> ', 111);
-        this.zeroload=false
+        this.zeroload = false;
       }
     },
 
-
     // 拆单总数统计
     changeTaskNumber() {
       this.Totalnumbersplitorders = this.Splittheform.PackageList.reduce(
@@ -1647,12 +1651,11 @@ export default {
           let taskNumberState = this.Splittheform.PackageList.find(item => item.taskNumber == 0);
           if (taskNumberState) {
             this.$message({
-              message: '存在拆单数量能为0的任务',
+              message: '存在拆单数量为0的任务',
               type: 'warning',
             });
             return;
           }
-          console.log(this.Splittheform.PackageList);
           let sum = this.Splittheform.PackageList.reduce((accumulator, currentValue) => {
             if (!currentValue || currentValue.taskNumber == null) {
               return accumulator;
@@ -1693,9 +1696,9 @@ export default {
                   if (res.data.code == 200) {
                     this.dialogSplitthe = false;
                     ElMessage({
-                    message: res.data.msg,
-                    type: 'success',
-                   })
+                      message: res.data.msg,
+                      type: 'success',
+                    });
                     this.onLoad(this.page);
                   }
                 })
@@ -1707,6 +1710,11 @@ export default {
                 });
             })
             .catch(() => {});
+        } else {
+          ElMessage({
+            message: '信息未填写完整或填写格式不正确!',
+            type: 'warning',
+          });
         }
       });
     },
@@ -1921,9 +1929,8 @@ export default {
         this.getAllOrderInfo();
         const [res] = await Promise.all([
           getList(page.currentPage, page.pageSize, Object.assign(params, this.query)),
-      
         ]);
-     
+
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
@@ -2193,7 +2200,7 @@ export default {
   }
 }
 .numbinput {
-  .el-input-number{
+  .el-input-number {
     width: 100%;
   }
 }
@@ -2295,8 +2302,7 @@ export default {
           input {
             font-size: 12px !important;
           }
-          .el-input{
-            
+          .el-input {
             width: 100%;
           }
           textarea {