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

复核-大件单、活动单优化

zhaohuanhuan пре 8 месеци
родитељ
комит
3f5bba3eb0

+ 22 - 7
src/views/outbound/check/activity/index.vue

@@ -21,8 +21,8 @@
       <div class="scan-barcode">
       <div class="scan-barcode">
         <van-field v-model.lazy="scanBarcode"  label-align="left" placeholder="请扫描商品条码/SKU" label="商品条码:"
         <van-field v-model.lazy="scanBarcode"  label-align="left" placeholder="请扫描商品条码/SKU" label="商品条码:"
                    class="input-barcode" autocomplete="off" @keydown.enter="_handlerScan(scanBarcode)"  />
                    class="input-barcode" autocomplete="off" @keydown.enter="_handlerScan(scanBarcode)"  />
-        <van-field  v-model.lazy="totalWeight" ref="weightRef" label-align="left" required placeholder="请输入商品重量kg" label="重&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量:"
-                    autocomplete="off" type="number"  >
+        <van-field  v-model.lazy="totalWeight" ref="weightRef" label-align="left" required placeholder="请输入商品重量KG" label="重&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量:"
+                    autocomplete="off" type="number"  @click.enter.prevent="endCheck()"  >
           <template #button>
           <template #button>
             <div>KG</div>
             <div>KG</div>
           </template>
           </template>
@@ -31,11 +31,14 @@
       </div>
       </div>
       <div class="order-detail">
       <div class="order-detail">
         <div class="picking-no">
         <div class="picking-no">
-          <div class="picking-code"><van-icon name="stop-circle-o" /><span style="padding-left: 5px">{{ orderDetail.pickingDetailCode }}</span></div>
+          <div class="picking-code">
+            <div><van-icon name="stop-circle-o" /></div>
+            <div style="flex: 1"><van-notice-bar :background="'none'" color="#419bff" :speed="50" :text="orderDetail.pickingCode||'--'" /></div>
+          </div>
           <div>{{ orderDetail.carrierName || '--' }}</div>
           <div>{{ orderDetail.carrierName || '--' }}</div>
         </div>
         </div>
         <div class="picking-container ">
         <div class="picking-container ">
-          <div class="container-item"><span style="color:#666">拣货容器号:</span><div style="flex:1"> <van-notice-bar :background="'none'" color="#000" :speed="50" :text="orderDetail.pickingDetailContainer" /></div></div>
+          <div class="container-item"><span style="color:#666">拣货容器号:</span><div style="flex:1"> <van-notice-bar :background="'none'" color="#000" :speed="50" :text="orderDetail.pickingContainer||'--'" /></div></div>
           <div class="container-item"><span style="color:#666">返拣容器:</span>{{ reversePickingContainerNo || '--' }}</div>
           <div class="container-item"><span style="color:#666">返拣容器:</span>{{ reversePickingContainerNo || '--' }}</div>
           <div class="picking-order-count ">
           <div class="picking-order-count ">
             <div>待复核单:
             <div>待复核单:
@@ -304,12 +307,16 @@ const endCheck=()=>{
     }
     }
   }
   }
   packingRequests(0,lastNumber)
   packingRequests(0,lastNumber)
+  successNumber.value=0
+  errorNumber.value=0
 }
 }
 //装箱
 //装箱
+const successNumber=ref(0)
+const errorNumber=ref(0)
 const reversePickingRef=ref(null)
 const reversePickingRef=ref(null)
 const packingRequests = async (startIndex = 0, lastNumber) => {
 const packingRequests = async (startIndex = 0, lastNumber) => {
   if(startIndex>=lastNumber){
   if(startIndex>=lastNumber){
-    reversePickingRef.value.show(startIndex,0,orderMap.value.cancelGroup)
+    reversePickingRef.value.show(successNumber,errorNumber,orderMap.value.cancelGroup,orderMap.value.freezeGroup)
     return
     return
   }
   }
   try {
   try {
@@ -334,11 +341,16 @@ const packingRequests = async (startIndex = 0, lastNumber) => {
       closeLoading()
       closeLoading()
       if (res) {
       if (res) {
         await packingRequests(startIndex + 1, lastNumber)
         await packingRequests(startIndex + 1, lastNumber)
+        if (res.data && res.data != '0000'  && res.data != '1111'){
+          successNumber.value+=1
+        }else {
+          errorNumber.value+=1
+        }
       }
       }
   } catch (error) {
   } catch (error) {
     tips.value=error.message
     tips.value=error.message
     if(startIndex>0){
     if(startIndex>0){
-      reversePickingRef.value.show(startIndex,lastNumber-startIndex,orderMap.value.cancelGroup)
+      reversePickingRef.value.show(startIndex,lastNumber-startIndex,orderMap.value.cancelGroup,orderMap.value.freezeGroup)
     }
     }
     scanError()
     scanError()
   } finally {
   } finally {
@@ -455,7 +467,7 @@ onUnmounted(() => {
   closeListener()
   closeListener()
 })
 })
 
 
-window.onRefresh = loadData
+// window.onRefresh = loadData
 </script>
 </script>
 
 
 <style scoped lang="sass">
 <style scoped lang="sass">
@@ -503,6 +515,9 @@ window.onRefresh = loadData
         padding: 8px 0
         padding: 8px 0
         border-bottom: 1px solid #eaeaeb
         border-bottom: 1px solid #eaeaeb
         .picking-code
         .picking-code
+          flex: 1
+          display: flex
+          align-items: center
           color: #419bff
           color: #419bff
       .picking-container
       .picking-container
         padding: 0 15px
         padding: 0 15px

+ 4 - 3
src/views/outbound/check/components/BatchPacking.vue

@@ -83,9 +83,8 @@ const recursiveRequest = async (index, dataList, item) => {
     }
     }
     showLoading()
     showLoading()
     const res = await packingReview(data)
     const res = await packingReview(data)
-    if (res.data && res.data != '0000') {
+    if (res.data && res.data != '0000'  && res.data != '1111') {
       showNotify({ type: 'success', duration: 3000, message: res.data + '装箱成功' })
       showNotify({ type: 'success', duration: 3000, message: res.data + '装箱成功' })
-      await recursiveRequest(index + 1, dataList, item)
       // 是否需要打印面单
       // 是否需要打印面单
       if (res.data.includes('#')) {
       if (res.data.includes('#')) {
         showNotify({ type: 'success', duration: 3000, message: res.data + '已设置不获取新面单' })
         showNotify({ type: 'success', duration: 3000, message: res.data + '已设置不获取新面单' })
@@ -94,8 +93,10 @@ const recursiveRequest = async (index, dataList, item) => {
       } else {
       } else {
         emit('print', 'PRINT_WAYBILL', res.data)
         emit('print', 'PRINT_WAYBILL', res.data)
       }
       }
+      await recursiveRequest(index + 1, dataList, item)
       closeLoading()
       closeLoading()
     } else {
     } else {
+      this.batchPackingTrueFalseBy = false
       emit('loadData')
       emit('loadData')
       //取消单
       //取消单
     }
     }
@@ -103,8 +104,8 @@ const recursiveRequest = async (index, dataList, item) => {
     closeLoading()
     closeLoading()
     if (index != 0) {
     if (index != 0) {
       emit('loadData')
       emit('loadData')
-      this.batchPackingTrueFalseBy = false
     }
     }
+    this.batchPackingTrueFalseBy = false
     scanError()
     scanError()
     showNotify({ type: 'danger', duration: 3000, message: `第 ${index} 箱,装箱失败` })
     showNotify({ type: 'danger', duration: 3000, message: `第 ${index} 箱,装箱失败` })
     console.error(`请求第 ${index} 箱失败:`, error)
     console.error(`请求第 ${index} 箱失败:`, error)

+ 5 - 5
src/views/outbound/check/components/CheckPacking.vue

@@ -70,17 +70,15 @@ const setPacking = () => {
   showLoading()
   showLoading()
   packingReview(data).then(res => {
   packingReview(data).then(res => {
     if(res.data=='0000'){
     if(res.data=='0000'){
-      scanError()
       // 订单取消
       // 订单取消
      emit('cancelOrder',orderDetail.value,'erp')
      emit('cancelOrder',orderDetail.value,'erp')
+    }else if(res.data=='1111'){
+      // 冻结
+      emit('cancelOrder',orderDetail.value,'release')
     }else {
     }else {
       showNotify({ type: 'success', duration: 3000, message: res.data + '装箱成功'})
       showNotify({ type: 'success', duration: 3000, message: res.data + '装箱成功'})
       scanSuccess()
       scanSuccess()
       emit('resetPackingStatus')
       emit('resetPackingStatus')
-      // packingList.value.forEach((item) => {
-      //   item.quantity=0
-      //   delete item.isPacking
-      // })
       const qty=groupDetailList.reduce((sum, item) => sum + Number(item.qty), 0)
       const qty=groupDetailList.reduce((sum, item) => sum + Number(item.qty), 0)
       const packingItem={ orderNo:orderDetail.value.orderNo, traceId:res.data, qty }
       const packingItem={ orderNo:orderDetail.value.orderNo, traceId:res.data, qty }
       orderDetail.value.orderPacking.unshift(packingItem)
       orderDetail.value.orderPacking.unshift(packingItem)
@@ -93,6 +91,8 @@ const setPacking = () => {
         emit('print','PRINT_WAYBILL',res.data)
         emit('print','PRINT_WAYBILL',res.data)
       }
       }
     }
     }
+  }).catch(err=>{
+    scanError()
   }).finally(f=>{
   }).finally(f=>{
     closeLoading()
     closeLoading()
   })
   })

+ 9 - 4
src/views/outbound/check/components/ReversePicking.vue

@@ -8,6 +8,7 @@
         <span>已成功:{{ successCount }}单</span>
         <span>已成功:{{ successCount }}单</span>
         <span v-if="errorCount > 0">,已失败:{{ errorCount }}单</span>
         <span v-if="errorCount > 0">,已失败:{{ errorCount }}单</span>
         <span v-if="cancelCount > 0">,已取消:{{ cancelCount }}单</span>
         <span v-if="cancelCount > 0">,已取消:{{ cancelCount }}单</span>
+        <span v-if="freezeCount > 0">,已冻结:{{ freezeCount }}单</span>
       </div>
       </div>
       <div v-if="cancelCount > 0" class="cancel-list">
       <div v-if="cancelCount > 0" class="cancel-list">
         <div>取消单: <span v-for="(value, key) in cancelMap" :key="key">{{ key }},</span>请进行返拣!!!</div>
         <div>取消单: <span v-for="(value, key) in cancelMap" :key="key">{{ key }},</span>请进行返拣!!!</div>
@@ -31,10 +32,12 @@ const props = defineProps({
   reversePickingContainerNo: String,
   reversePickingContainerNo: String,
 })
 })
 const cancelCount=ref(0)
 const cancelCount=ref(0)
-const show = (successNumber, errorNumber, cancelOrder) => {
+const freezeCount=ref(0)
+const show = (successNumber, errorNumber, cancelOrder,freezeGroup) => {
   successCount.value = successNumber
   successCount.value = successNumber
   errorCount.value = errorNumber
   errorCount.value = errorNumber
   cancelMap.value = cancelOrder
   cancelMap.value = cancelOrder
+  freezeCount.value= Object.keys(freezeGroup).length;
   cancelCount.value= Object.keys(cancelMap.value).length;
   cancelCount.value= Object.keys(cancelMap.value).length;
   packingTrueFalseBy.value = true
   packingTrueFalseBy.value = true
 }
 }
@@ -47,7 +50,7 @@ const beforeClose = (action) =>
         resolve(true)
         resolve(true)
         return
         return
       }
       }
-      emit('loadData')
+      // emit('loadData')
       resolve(true)
       resolve(true)
     }
     }
     resolve(true)
     resolve(true)
@@ -60,7 +63,9 @@ const _reversePicking = () => {
       scanSuccess()
       scanSuccess()
       closeLoading()
       closeLoading()
       showNotify({ type: 'success', duration: 3000, message: `已进行返拣,请放置返拣容器中!` })
       showNotify({ type: 'success', duration: 3000, message: `已进行返拣,请放置返拣容器中!` })
-      emit('loadData')
+     setTimeout(()=>{
+       emit('loadData')
+     },300)
     }
     }
     const data = {
     const data = {
       warehouse: props.warehouse,
       warehouse: props.warehouse,
@@ -70,7 +75,7 @@ const _reversePicking = () => {
     reversePicking(data).then(res => {
     reversePicking(data).then(res => {
       showLoading()
       showLoading()
     }).catch(err=>{
     }).catch(err=>{
-      emit('loadData')
+      // emit('loadData')
       scanError()
       scanError()
     }).finally(() => {
     }).finally(() => {
       closeLoading()
       closeLoading()

+ 16 - 3
src/views/outbound/check/large/index.vue

@@ -472,6 +472,8 @@ const setBarcode = (code) => {
       inputBarcodeRef.value?.show('', '请扫描订单/快递单号', '暂未查询到待复核数据,请切换单号')
       inputBarcodeRef.value?.show('', '请扫描订单/快递单号', '暂未查询到待复核数据,请切换单号')
     } else {
     } else {
       if(res.data.releaseStatus=='H' || res.data.status=='90' ||res.data.erpCancelFlag=='Y'){
       if(res.data.releaseStatus=='H' || res.data.status=='90' ||res.data.erpCancelFlag=='Y'){
+        orderNo.value = code
+        orderDetail.value = res.data
         scanError()
         scanError()
         cancelOrder(res.data)
         cancelOrder(res.data)
         return
         return
@@ -510,6 +512,12 @@ const setBarcode = (code) => {
     closeLoading()
     closeLoading()
   })
   })
 }
 }
+const _reset=()=>{
+  orderNo.value = ''
+  orderDetail.value=[]
+  dataList.value=[]
+  tips.value = '请扫描订单/快递单号'
+}
 const containerNoMap={
 const containerNoMap={
   'WH01':'FJ-WH01-20',
   'WH01':'FJ-WH01-20',
   'WH02':'FJ-WH02-20',
   'WH02':'FJ-WH02-20',
@@ -520,17 +528,22 @@ const containerNoMap={
 const cancelOrder=(item,type)=>{
 const cancelOrder=(item,type)=>{
   const orderDetailStatus = orderList.value.find(item => (item.status != '60' && item.status != '600'));
   const orderDetailStatus = orderList.value.find(item => (item.status != '60' && item.status != '600'));
   if(item.status=='90'){
   if(item.status=='90'){
+    scanError()
     showDialog({ title: '温馨提示', message: '已取消, 暂停发货', }).then(() => {
     showDialog({ title: '温馨提示', message: '已取消, 暂停发货', }).then(() => {
       inputBarcodeRef.value?.show('', '请扫描订单/快递单号', '上一单为冻结单,请重新扫描单号')
       inputBarcodeRef.value?.show('', '请扫描订单/快递单号', '上一单为冻结单,请重新扫描单号')
     });
     });
-  }else if(item.releaseStatus=='H'){
-    showDialog({ title: '温馨提示', message: '已冻结, 暂停发货', }).then(() => {
+  }else if(item.releaseStatus=='H' || type=='release'){
+    scanError()
+    showDialog({ title: '温馨提示', message: `订单:${orderNo.value},已冻结, 暂停发货`, }).then(() => {
       inputBarcodeRef.value?.show('', '请扫描订单/快递单号', '上一单为冻结单,请重新扫描单号')
       inputBarcodeRef.value?.show('', '请扫描订单/快递单号', '上一单为冻结单,请重新扫描单号')
     });
     });
+    _reset()
   }else  if(orderDetailStatus && item.erpCancelFlag=='Y' ){
   }else  if(orderDetailStatus && item.erpCancelFlag=='Y' ){
+    scanError()
     showDialog({ title: '温馨提示', message: '此取消单包含《待拣货》商品,请将所有商品拣货后返拣', }).then(() => {});
     showDialog({ title: '温馨提示', message: '此取消单包含《待拣货》商品,请将所有商品拣货后返拣', }).then(() => {});
   } else  if(item.erpCancelFlag=='Y' || type=='erp'){
   } else  if(item.erpCancelFlag=='Y' || type=='erp'){
-    showConfirmDialog({ title: '温馨提示', message: '订单为取消单,请进入还库流程!!!', })
+    scanError()
+    showConfirmDialog({ title: '温馨提示', message:  `订单:${orderNo.value},取消单,请进入还库流程!!!`, })
       .then(() => {
       .then(() => {
         _reversePicking()
         _reversePicking()
       })
       })