zhaohuanhuan 1 год назад
Родитель
Сommit
82bc010959

+ 17 - 4
src/api/picking/index.ts

@@ -1,7 +1,7 @@
 // @ts-ignore
 import request from '@/utils/request'
 // @ts-ignore
-import { getPickingDetailType, getPickingFirstType, getPickingTaskType, getPickingTaskDetailType, createPickingTaskType, getBigPickingListType} from '@/types/picking'
+import { getPickingDetailType, getPickingFirstType, getPickingTaskType, getPickingTaskDetailType, createPickingTaskType, getBigPickingListType, } from '@/types/picking'
 /**
  * 获取拣货列表
  * @param params
@@ -14,7 +14,7 @@ export function getPickingTask(params:getPickingTaskType) {
   })
 }
 /**
- * 获取拣货任务详情(大件、特殊、加急、活动)
+ * 获取拣货任务详情(特殊、加急、活动)
  * @param data
  */
 export function getPickingTaskDetail(data:getPickingTaskDetailType) {
@@ -24,6 +24,19 @@ export function getPickingTaskDetail(data:getPickingTaskDetailType) {
     data:JSON.stringify(data)
   })
 }
+/**
+ * 获取拣货任务详情(大件)
+ * @param data
+ */
+export function getBigPickingTaskDetail(data:getPickingTaskDetailType) {
+  return request({
+    url: 'api/wms/picking/list/bulk',
+    method: 'post',
+    data:JSON.stringify(data)
+  })
+}
+
+
 /**
  * 创建拣货任务
  * @param data
@@ -113,9 +126,9 @@ export function getBigPickingGoods({warehouse,orderNo,list}:any) {
 /**
  * 按商品拣货接口
  */
-export function getBigPickingEquipment({warehouse,orderNo,list}:any) {
+export function getBigPickingAisleNo({warehouse,orderNo,list}:any) {
   return request({
-    url: 'api/wms/picking/bulk/equipment',
+    url: 'api/wms/picking/bulk/aisle',
     method: 'post',
     data: {warehouse,orderNo,equipmentList:list}
   })

+ 2 - 0
src/types/picking.ts

@@ -20,6 +20,8 @@ export interface getPickingTaskDetailType {
   warehouse: string;
   type:string;
   orderNoList:string[];
+  size:number,
+  page:number,
 }
 /**
  * 获取成任务列表详情

+ 13 - 11
src/views/outbound/components/BigPicking.vue

@@ -10,11 +10,11 @@
         <div class="big-task-content"  >
           <div class="big-content">{{item.orderNo}}</div>
           <div class="big-carrier"><van-notice-bar :background="'none'" :speed="10" :text="item.carrierName" /></div>
-          <div class="big-content">{{item.itemQty}}<span style="font-size: 12px">件</span></div>
+          <div class="big-content">{{item.totalItemNum}}<span style="font-size: 12px">件</span></div>
         </div>
         <div class="big-task-button">
           <div class="big-button" @click="onTypeOrder(item,'LOCATION_PICK')"  >按库位查看</div>
-          <div class="big-button" @click="onTypeOrder(item,'EQUIPMENT_PICK')">按设备查看</div>
+          <div class="big-button" @click="onTypeOrder(item,'AISLE_PICK')">按库位查看</div>
           <div class="big-button" @click="onTypeOrder(item,'ITEM_PICK')" >按商品查看</div>
         </div>
       </div>
@@ -30,7 +30,7 @@
     <div class="sub-task-list" >
       <van-checkbox  class="sub-task-checkbox" v-model="isCheckAll"  :indeterminate="isIndeterminate"  @change="checkAllChange">全选</van-checkbox>
       <van-checkbox-group  v-model="checkedResult" @change="checkedChange">
-        <van-checkbox class="sub-task-checkbox" v-for="(item,index) in typeTaskList" :key="index" :name="item" :disabled="(item.allowPick===false && taskType==='EQUIPMENT_PICK') || item.status!==40" >
+        <van-checkbox class="sub-task-checkbox" v-for="(item,index) in typeTaskList" :key="index" :name="item" :disabled="(item.allowPick===false && taskType==='AISLE_PICK') || item.status!==40" >
           <div class="sub-task-item" v-if="taskType==='LOCATION_PICK'">
             <div  style="font-size: 13px;font-weight: bold" >{{item.location}}</div>
             <div class="sub-task-item-content" >
@@ -38,8 +38,8 @@
             </div>
             <div class="">{{item.totalItemNum}}<span style="font-size: 12px">件</span></div>
           </div>
-          <div class="sub-task-item" v-if="taskType==='EQUIPMENT_PICK'">
-            <div class="sub-task-item-content">{{item.equipment || '未绑定'}}</div>
+          <div class="sub-task-item" v-if="taskType==='AISLE_PICK'">
+            <div class="sub-task-item-content">{{item.aisleNo || '未绑定'}}</div>
             <div class="sub-task-item-content"><span style="font-size: 12px">库位:</span>{{item.locationNum}}<span style="font-size: 12px">个</span></div>
             <div class="sub-task-item-number">{{item.totalItemNum}}<span style="font-size: 12px">件</span></div>
           </div>
@@ -63,7 +63,7 @@
 <script setup>
 import { ref } from 'vue'
 import {
-  getBigPickingEquipment,
+  getBigPickingAisleNo,
   getBigPickingGoods,
   getBigPickingList,
   getBigPickingLocation,
@@ -80,7 +80,7 @@ const props = defineProps({
 });
 const typeMap={
   'LOCATION_PICK':'库位',
-  'EQUIPMENT_PICK':'设备',
+  'AISLE_PICK':'设备',
   'ITEM_PICK':'商品'
 }
 const isIndeterminate=ref(false)
@@ -112,10 +112,12 @@ const onTypeOrder=(row,type)=>{
     typeTaskList.value=res.data.records
     subBigOrderTrueFalseBy.value=true
     isIndeterminate.value = false
+    isCheckAll.value=false
   }).catch(err=>{
     typeTaskList.value=[]
     subBigOrderTrueFalseBy.value=false
     isIndeterminate.value = false
+    isCheckAll.value=false
   }).finally(e=>{
     closeLoading()
   })
@@ -126,7 +128,7 @@ const isCheckAll = ref(false)
 const checkedResult = ref([])
 const checkAllChange = (val) => {
   let filteredList=typeTaskList.value
-  if(taskType.value==='EQUIPMENT_PICK'){
+  if(taskType.value==='AISLE_PICK'){
    filteredList = typeTaskList.value.filter(item => item.allowPick !== false )
   }else{
     typeTaskList.value.filter(item => item.status!==40 )
@@ -149,7 +151,7 @@ const onBuildTask=(action)=>
       orderBigTrueFalseBy.value=false
       const fieldMap = {
         'ITEM_PICK': 'lotNum',
-        'EQUIPMENT_PICK': 'equipment',
+        'AISLE_PICK': 'aisleNo',
         'LOCATION_PICK': 'location'
       };
       const field = fieldMap[taskType.value];
@@ -169,8 +171,8 @@ const onBuildTask=(action)=>
     }
     // 根据不同的拣货类型选择不同的接口
     let api;
-    if (field === 'equipment') {
-      api = getBigPickingEquipment;
+    if (field === 'aisleNo') {
+      api = getBigPickingAisleNo;
     } else if (field === 'lotNum') {
       api = getBigPickingGoods;
     } else if (field === 'location') {

+ 30 - 11
src/views/outbound/picking/list/index.vue

@@ -69,7 +69,7 @@
                          label="实拣数" placeholder="请输实拣数量"
                           >
                 <template #button>
-                  <van-button v-if="item.operationTime==null" size="mini" type="primary"  plain  @click="jump(item)"  :loading="jumpLoading"  loading-text="加载中...">跳过</van-button>
+                  <van-button  v-if="item.operationTime==null"  size="mini" type="primary"  plain  @click="jump(item)"  :loading="jumpLoading"  loading-text="加载中...">跳过</van-button>
                 </template>
               </van-field>
               <div class="wave">
@@ -186,6 +186,7 @@ const loadData =  async (pickingCode) => {
   if(taskList.value.length==0){
     return
   }
+  result()
   allQuantity.value=expectedQuantity.value
   taskItem.value=taskList.value
   // 对数组进行分组
@@ -371,7 +372,7 @@ const _handlerScan=(code)=> {
   }
 }
 // 进行条件验证
-const validate = (data) => {
+const validate = (data,type) => {
   if (containerNo.value === '') {
     showToast({duration:5000,message:'请先扫描拣货容器'})
     return false;
@@ -380,9 +381,11 @@ const validate = (data) => {
     showToast({duration:5000,message:'请先扫描库位'})
     return false;
   }
-  if (scanType.value === 3) {
-    showToast({duration:5000,message:'请先扫描条码'})
-    return false;
+  if(type==0){
+    if (scanType.value === 3) {
+      showToast({duration:5000,message:'请先扫描条码'})
+      return false;
+    }
   }
   if (data.count < 0) {
     messageTips.value='拣货数量无效'
@@ -415,7 +418,7 @@ const onCount=(item,type)=>{
   }
   const params=[data]
   // 验证数据的有效性
-  if (!validate(data)) return;
+  if (!validate(data,type)) return;
   if(type!==0){
     jumpLoading.value=true
   }
@@ -444,6 +447,11 @@ const onCount=(item,type)=>{
       }
       selectTask.value.push(task)
       locationList.value[activeIndex.value].list[0].operationTime=params[0].operationTime
+      console.log(activeIndex.value.length)
+      console.log(locationList.value)
+      if(type==1 && activeIndex.value==locationList.value.length){
+        activeIndex.value=activeIndex.value+1
+      }
     }
     //验证库位里的所有商品是否都存在拣货时间
     const allOperationTimeExist = locationList.value[activeIndex.value].list.every(item => item.operationTime);
@@ -458,21 +466,32 @@ const onCount=(item,type)=>{
         title:'温馨提示',
         message:'任务已经完成,是否回到选择任务界面'
       }).then(() => {
+        result()
         getPickingCode()
       }).catch(() => {
         loadData(pickingNo.value)
       })
     }
-  }).catch((err)=>{
-    scanBarcode.value=''
+  }).catch((err)=> {
+    scanBarcode.value = ''
     onScan(4)
-    messageTips.value=err.message
+    messageTips.value = err.message
     scanError()
-    showFailToast({duration:5000,message:err.message})
+    if(err.code!='ERR_NETWORK'){
+      showFailToast({duration:5000,message:err.message})
+    }else {
+      messageTips.value = '网络开小车了,请稍后重试!'
+    }
     jumpLoading.value=false
   })
 }
-
+const result=()=>{
+  scanBarcode.value=''
+  containerNo.value=''
+  selectTask.value=[]
+  activeIndex.value=0
+  scanType.value=1
+}
 // 跳过拣货
 const jump=(item)=>{
   onCount(item,1)

+ 14 - 4
src/views/outbound/picking/task/index.vue

@@ -148,7 +148,7 @@ import { getTaskList } from '@/views/outbound/picking/task/hooks/task'
 import { computed, nextTick, ref } from 'vue'
 import { showDialog, showFailToast, showToast } from 'vant'
 import { basicStore } from '@/store/modules/basic'
-import { createPickingTask, getPickingTaskDetail } from '@/api/picking'
+import { createPickingTask, getBigPickingEquipment, getBigPickingTaskDetail, getPickingTaskDetail } from '@/api/picking'
 import { useStore } from '@/store/modules/user'
 import { back } from '@/utils/android'
 import PickingNoInput from '@/views/outbound/components/PickingNoInput.vue'
@@ -216,10 +216,19 @@ const onTaskList=async (row:Object,type)=>{
   const params = {
     warehouse,
     type:row.type,
-    orderNoList:row.matchedOrderNoList
+    orderNoList:row.matchedOrderNoList,
+    size:100,
+    page:1
   }
   showLoading()
-  const { data }: pickingListResponse = await getPickingTaskDetail(params)
+    let data
+  if (type === 'M') {
+    params.type='ORDER'
+    const res = await getBigPickingTaskDetail(params)
+    data=res.data.records
+  }else {
+    data= await getPickingTaskDetail(params)
+  }
   closeLoading()
   if(data.length==0){
     showToast({duration:5000,message:'任务已被获取,请刷新后重新查看!'})
@@ -403,7 +412,6 @@ const onClickRight = () => {
 };
 const route = useRoute()
 const onClickLeft = () => {
-  console.log(route.query.type,"route.query.code=")
   if(route.query.type=='picking'){
     history.back();
   }else {
@@ -470,6 +478,8 @@ const onRefresh = () => {
     loading.value = false
   }, 1000)
 }
+window.onRefresh=onRefresh
+
 </script>
 <style scoped lang="sass">
 .container