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

复核-大件单装箱详情展示sku

zhaohuanhuan 8 месяцев назад
Родитель
Сommit
e95c523615

+ 14 - 0
src/api/check/index.ts

@@ -53,6 +53,20 @@ export function getPendingReviewTask(data:getPendingReviewTaskType) {
   })
 }
 
+/**
+ * 获取装箱明细
+ * @param data
+ */
+export function getOrderPacking(data:any) {
+  return request({
+    url: '/api/wms/outbound/review/getOrderPacking',
+    method: 'post',
+    data:JSON.stringify(data),
+  })
+}
+
+
+
 
 
 /**

+ 20 - 15
src/views/outbound/check/components/PackingList.vue

@@ -10,13 +10,14 @@
     <div class="order-list">
       <van-checkbox  class="order-checkbox" v-model="isCheckAll" :indeterminate="isIndeterminate"  @change="checkAllChange">全选</van-checkbox>
         <van-checkbox-group  v-model="checkedResult" @change="checkedChange" >
-          <van-checkbox class="order-item" v-for="(item,index) in packingList" :key="index" :name="item">
-            <div  style="display: flex;flex: 1;flex-direction: column" >
-              <div class="order-item-detail">
-                <div>{{item.traceId}}</div>
-                <div  style="width: 30px">{{item.qty}}<span style="font-size: 12px">件</span></div>
-              </div>
+          <van-checkbox v-for="(value,key) in packingMap" :key="key" :name="key">
+          <div  class="order-item">
+            <div>{{key}}</div>
+            <div v-for="item in value"  class="order-item-detail">
+              <div>{{item.sku}}</div>
+              <div  style="width: 30px">{{item.qty}}<span style="font-size: 12px">件</span></div>
             </div>
+          </div>
           </van-checkbox>
         </van-checkbox-group>
       </div>
@@ -31,10 +32,13 @@ import { closeLoading, showLoading } from '@/utils/loading'
 import { scanError, scanSuccess } from '@/utils/android'
 const router = useRouter()
 const listTrueFalseBy =ref(false)
-const packingList = ref([])
+const packingMap = ref([])
+const packingList=ref([])
+const  packingCount=ref(0)
 const orderDetail=ref({})
-const show = (list,detail) => {
-  packingList.value=list
+const show = (map,detail) => {
+  packingMap.value=map
+  packingCount.value=Object.keys(map).length
   orderDetail.value=detail
   listTrueFalseBy.value=true
   isCheckAll.value=false
@@ -49,13 +53,14 @@ const isIndeterminate=ref(false)
 const checkedResult = ref([])
 
 const checkAllChange = (val) => {
-  checkedResult.value = val ? packingList.value : []
+  console.log(val,"val")
+  checkedResult.value = val ? Object.keys(packingMap.value) : []
   isIndeterminate.value = false
 }
 const checkedChange = (value) => {
   const checkedCount = value.length
-  isCheckAll.value = checkedCount === packingList.value.length
-  isIndeterminate.value = checkedCount > 0 && checkedCount < packingList.value.length
+  isCheckAll.value = checkedCount ===packingCount.value
+  isIndeterminate.value = checkedCount > 0 && checkedCount < packingCount.value
 }
 //确认
 const onBuildTask=(action)=>
@@ -77,11 +82,10 @@ const onBuildTask=(action)=>
   })
 const emit = defineEmits(['loadData'])
 const resetPacking=()=>{
-  const traceIdList = checkedResult.value.map(item => item.traceId);
   const data = {
     warehouseId: orderDetail.value.warehouseId,
     orderNo:  orderDetail.value.orderNo,
-    traceIdList
+    traceIdList:Object.values(checkedResult.value)
   }
   showLoading()
   resetCheckPacking(data).then(res => {
@@ -100,7 +104,6 @@ defineExpose({show})
 
 <style scoped lang="sass">
 .order-list
-
   padding: 5px 10px
   min-height: 20vh
   max-height: 50vh
@@ -110,6 +113,8 @@ defineExpose({show})
     padding-bottom: 5px
   .order-item
     padding: 5px 0
+    display: flex
+    flex-direction: column
     :deep(.van-checkbox__label)
       display: flex
       flex: 1

+ 27 - 5
src/views/outbound/check/large/index.vue

@@ -128,7 +128,7 @@ import { closeListener, openListener, scanInit } from '@/utils/keydownListener'
 import InputBarcode from '@/views/outbound/picking/components/InputBarcode.vue'
 import { useStore } from '@/store/modules/user'
 import { closeLoading, showLoading } from '@/utils/loading'
-import { getPendingReviewTask, reversePicking } from '@/api/check'
+import { getOrderPacking, getPendingReviewTask, reversePicking } from '@/api/check'
 import { barcodeToUpperCase } from '@/utils/dataType'
 import { showConfirmDialog, showDialog, showNotify, showToast } from 'vant'
 import { fluxPrint } from '@/api/picking'
@@ -150,8 +150,7 @@ onMounted(() => {
   loadData()
 })
 const warehouse = store.warehouse
-//SOZ25070900018
-const orderNo = ref('')
+const orderNo = ref('SOZ25072200017')
 // 错误提示
 const tips = ref('请扫描订单/快递单号')
 //强制返回
@@ -160,6 +159,8 @@ const scanBarcode = ref('')
 const inputBarcodeRef = ref(null)
 // 订单明细
 const orderDetail = ref({})
+//装箱明细
+const packingDetailMap=ref({})
 const isUniqueCode = ref(false)
 const statusMap = {
   '00': '创建',
@@ -417,7 +418,7 @@ const resetPackingStatus=()=>{
 //重置装箱
 const packingListRef=ref(null)
 const resetPacking=()=>{
-  packingListRef.value?.show(orderDetail.value.orderPacking,orderDetail.value)
+  packingListRef.value?.show(packingDetailMap.value,orderDetail.value)
 }
 
 //重新开始
@@ -469,6 +470,7 @@ const onPrint=(code)=>{
 const setBarcode = (code) => {
   const data = { warehouse, code, activityOrderFlag: true }
   showLoading()
+  packingDetailMap.value={}
   getPendingReviewTask(data).then(res => {
     if (res.data.details.length == 0) {
       scanError()
@@ -489,6 +491,7 @@ const setBarcode = (code) => {
       orderNo.value = code
       orderDetail.value = res.data
       tips.value = '请扫描商品条码'
+      _getOrderPacking(res.data.orderNo)
       scanSuccess()
       // 处理每个详情项
       res.data.details.forEach((item) => {
@@ -566,7 +569,26 @@ const _reversePicking = () => {
     closeLoading()
   })
 }
-
+const _getOrderPacking=(orderNo)=>{
+  getOrderPacking({ warehouse, orderNo }).then(res => {
+    const mergedList = Object.values(
+      res.data.reduce((acc, item) => {
+        const { sku, qty } = item;
+        acc[sku] = acc[sku] || { ...item, qty: 0 }
+        acc[sku].qty += qty;
+        return acc;
+      }, {})
+    );
+    packingDetailMap.value = mergedList.reduce((acc, item) => {
+      const { traceId } = item;
+      acc[traceId] = acc[traceId] || []
+      acc[traceId].push(item);
+      return acc;
+    }, {});
+  }).catch(err => {
+    packingDetailMap.value = {};
+  });
+}
 const rowStyle=( row )=>{
   if(row.isPacking){
     return { background: '#E6A23C'}