zhaohuanhuan 1 éve
szülő
commit
51dde1a82d

+ 3 - 0
src/App.vue

@@ -47,6 +47,9 @@ router.afterEach(() => {
 :root:root {
   --van-dialog-header-padding-top:10px
 }
+:root:root{
+  --van-notice-bar-padding:0 8px
+}
 
 
 

+ 44 - 1
src/api/picking/index.ts

@@ -1,7 +1,7 @@
 // @ts-ignore
 import request from '@/utils/request'
 // @ts-ignore
-import { getPickingDetailType, getPickingFirstType, getPickingTaskType,getPickingTaskDetailType, createPickingTaskType,setPickingDetailType } from '@/types/picking'
+import { getPickingDetailType, getPickingFirstType, getPickingTaskType, getPickingTaskDetailType, createPickingTaskType, getBigPickingListType} from '@/types/picking'
 /**
  * 获取拣货列表
  * @param params
@@ -75,8 +75,51 @@ export function setPickingDetail(data: any[]) {
   })
 }
 
+/**
+ * 大件拣货
+ */
 
+/**
+ * 大件拣货任务列表
+ */
+export function getBigPickingList(data:getBigPickingListType) {
+  return request({
+    url: 'api/wms/picking/list/bulk',
+    method: 'post',
+    data:JSON.stringify(data)
+  })
+}
+/**
+ * 按库位拣货接口
+ */
+export function getBigPickingLocation({warehouse,orderNo,list}:any) {
+  return request({
+    url: 'api/wms/picking/bulk/location',
+    method: 'post',
+    data: {warehouse,orderNo,locationList:list}
+  })
+}
+/**
+ * 按商品拣货接口
+ */
+export function getBigPickingGoods({warehouse,orderNo,list}:any) {
+  return request({
+    url: 'api/wms/picking/bulk/item',
+    method: 'post',
+    data: {warehouse,orderNo,lotNumList:list}
+  })
+}
 
+/**
+ * 按商品拣货接口
+ */
+export function getBigPickingEquipment({warehouse,orderNo,list}:any) {
+  return request({
+    url: 'api/wms/picking/bulk/equipment',
+    method: 'post',
+    data: {warehouse,orderNo,equipmentList:list}
+  })
+}
 
 
 

+ 7 - 0
src/types/picking.ts

@@ -98,4 +98,11 @@ export interface setPickingDetailType {
   product: string
 }
 
+export interface getBigPickingListType {
+  warehouse: string;
+  orderNo: string;
+  type: string;
+  size: number;
+  page: number;
+}
 

+ 14 - 0
src/utils/loading.ts

@@ -0,0 +1,14 @@
+import { closeToast, showLoadingToast } from 'vant'
+
+export function showLoading() {
+    showLoadingToast({
+    duration: 0,
+    forbidClick: true,
+    message: '数据加载中...',
+  });
+}
+
+// 关闭加载提示
+export function closeLoading() {
+  closeToast()
+}

+ 0 - 1
src/utils/request.ts

@@ -33,7 +33,6 @@ service.interceptors.request.use(
 service.interceptors.response.use(
   (response:any) => {
     // 处理响应数据
-    console.log(response)
     const res=response.data
     if (res.code !== 200) {
       if (res.code == 600 || res.code == 601) {

+ 242 - 0
src/views/outbound/components/BigPicking.vue

@@ -0,0 +1,242 @@
+<template>
+  <van-dialog v-model:show="orderBigTrueFalseBy"
+              :title="props.ownerMap[props.model.owner]?'大件拣货-'+props.ownerMap[props.model.owner]:'大件拣货-'+props.model.owner"
+              close-on-click-overlay
+              :show-cancel-button="false"
+              :show-confirm-button="false"
+  >
+    <div class="big-task-list" @click.stop>
+      <div class="big-task-item" v-for="(item,index) in props.taskDetailList" :key="index" >
+        <div class="big-task-content"  >
+          <div class="big-content">{{item.orderNo}}</div>
+          <div class="big-carrier"><van-notice-bar :background="'none'" :speed="50" :text="item.carrierName" /></div>
+          <div class="big-content">{{item.itemQty}}件</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,'ITEM_PICK')" >按商品查看</div>
+        </div>
+      </div>
+    </div>
+  </van-dialog>
+  <van-dialog v-model:show="subBigOrderTrueFalseBy"
+              :title="typeMap[taskType]+'拣货任务'+'-'+subModel.orderNo"
+              show-cancel-button
+              confirm-button-text="生成任务"
+              close-on-click-overlay
+              :beforeClose="onBuildTask"
+  >
+    <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'" >
+          <div class="sub-task-item" v-if="taskType==='LOCATION_PICK'">
+            <div class="sub-task-item-content">{{item.location}}</div>
+            <div class="sub-task-item-content">
+              <van-notice-bar :background="'none'" :speed="50" :text="item.barcode" />
+            </div>
+            <div class="sub-task-item-number">{{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-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>
+          <div class="sub-task-item" v-if="taskType==='ITEM_PICK'">
+            <div class="sub-task-item-content">{{item.barcode}}</div>
+            <div class="sub-task-item-number"><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>
+          <div class="sub-task-item-tips" v-if="taskType==='ITEM_PICK'" >
+            <div><van-notice-bar :background="'none'" :speed="30" color="#999" style="font-size: 12px" :text="item.skuName" /></div>
+            <div>排序:{{item.spu}}</div>
+          </div>
+        </van-checkbox>
+      </van-checkbox-group>
+    </div>
+  </van-dialog>
+</template>
+<script setup>
+import { ref } from 'vue'
+import {
+  getBigPickingEquipment,
+  getBigPickingGoods,
+  getBigPickingList,
+  getBigPickingLocation,
+} from '@/api/picking/index'
+import { closeLoading, showLoading } from '@/utils/loading'
+import { showToast } from 'vant'
+import { useRouter } from 'vue-router'
+const router = useRouter()
+const props = defineProps({
+  taskDetailList: Array,
+  ownerMap:Object,
+  model:Object,
+  warehouse:String
+});
+const typeMap={
+  'LOCATION_PICK':'库位',
+  'EQUIPMENT_PICK':'设备',
+  'ITEM_PICK':'商品'
+}
+const isIndeterminate=ref(false)
+//大件任务列表弹框
+const orderBigTrueFalseBy=ref(false)
+const show=()=>{
+  orderBigTrueFalseBy.value=true
+}
+// 子任务列表
+const typeTaskList=ref([])
+//任务类型
+const taskType=ref('LOCATION_PICK')
+//大件任务子订单
+const subBigOrderTrueFalseBy=ref(false)
+//子任务订单row
+const subModel=ref({})
+const onTypeOrder=(row,type)=>{
+  taskType.value=type
+  subModel.value=row
+  const params={
+    warehouse:props.warehouse,
+    orderNo:row.orderNo,
+    type,
+    page:1,
+    size:200,
+  }
+  showLoading()
+  getBigPickingList(params).then(res=>{
+    typeTaskList.value=res.data.records
+    subBigOrderTrueFalseBy.value=true
+    isIndeterminate.value = false
+  }).catch(err=>{
+    typeTaskList.value=[]
+    subBigOrderTrueFalseBy.value=false
+    isIndeterminate.value = false
+  }).finally(e=>{
+    closeLoading()
+  })
+}
+//是否全选
+const isCheckAll = ref(false)
+//选中数据
+const checkedResult = ref([])
+const checkAllChange = (val) => {
+  let filteredList=typeTaskList.value
+  if(taskType.value==='EQUIPMENT_PICK'){
+   filteredList = typeTaskList.value.filter(item => item.allowPick !== false )
+  }
+  checkedResult.value = val ? filteredList : []
+  isIndeterminate.value = false
+}
+const checkedChange = (value) => {
+  const checkedCount = value.length
+  isCheckAll.value = checkedCount === typeTaskList.value.length
+  isIndeterminate.value = checkedCount > 0 && checkedCount < typeTaskList.value.length
+}
+const onBuildTask=(action)=>
+  new Promise((resolve) => {
+    if (action === 'confirm') {
+      if (checkedResult.value.length === 0) {
+        showToast('请先选择订单')
+        return resolve(false)
+      }
+      orderBigTrueFalseBy.value=false
+      const fieldMap = {
+        'ITEM_PICK': 'lotNum',
+        'EQUIPMENT_PICK': 'equipment',
+        'LOCATION_PICK': 'location'
+      };
+      const field = fieldMap[taskType.value];
+      createPicking(checkedResult.value,field)
+    }
+    resolve(true)
+  })
+  const createPicking=(checkedResult,field)=>{
+    let list = []
+    checkedResult.forEach(item => {
+      list.push(item[field])
+    });
+    const params = {
+      warehouse: props.warehouse,
+      orderNo: subModel.value.orderNo,
+      list
+    }
+    // 根据不同的拣货类型选择不同的接口
+    let api;
+    if (field === 'equipment') {
+      api = getBigPickingEquipment;
+    } else if (field === 'lotNum') {
+      api = getBigPickingGoods;
+    } else if (field === 'location') {
+      api = getBigPickingLocation;
+    }
+    showLoading()
+    api(params).then(data => {
+      showToast('大件任务创建成功!正在跳转')
+      router.push('/picking')
+    }).finally(e=>{
+      closeLoading()
+    })
+  }
+
+defineExpose({show})
+</script>
+<style lang="sass" scoped>
+//大件拣货
+.big-task-list
+  max-height: 70vh
+  min-height: 20vh
+  overflow: scroll
+  padding: 0 10px
+  .big-task-item
+    margin-bottom: 10px
+    box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.4)
+    border-radius: 8px
+    .big-task-content
+      display: flex
+      align-items: center
+      padding: 5px 10px
+      font-size: 15px
+      font-weight: bold
+      .big-carrier
+        width: 30%
+      .big-content
+        flex: 1
+    .big-task-button
+      font-size: 13px
+      display: flex
+      align-items: center
+      color: #0077ff
+      border-top: 1px solid #dfdfdf
+      .big-button
+        height: 35px
+        line-height: 35px
+        flex: 1
+        border-right: 1px solid #dfdfdf
+      .big-button:last-child
+        border-right: 0
+      .big-button:active
+        background-color: #d9d9d9
+//子任务
+.sub-task-list
+  padding: 5px 10px
+  .sub-task-checkbox
+    padding: 4px 0
+    .sub-task-item
+      display: flex
+      width: 260px
+      justify-content: space-between
+      .sub-task-item-content
+        flex: 1
+      .sub-task-item-number
+        width: 60px
+    .sub-task-item-tips
+      font-size: 12px
+      color: #999
+      display: flex
+      justify-content: space-between
+      div
+        flex: 1
+        text-align: right
+</style>

+ 53 - 0
src/views/outbound/components/SelectOwner.vue

@@ -0,0 +1,53 @@
+<template>
+  <div class="container">
+    <van-popup v-model:show="selectOwnerTrueFalseBy" destroy-on-close round position="bottom">
+      <van-picker
+        title="选择货主"
+        :model-value="pickerValue"
+        :columns="columns"
+        @cancel="selectOwnerTrueFalseBy = false"
+        @confirm="onConfirm"
+      />
+    </van-popup>
+
+  </div>
+</template>
+<script setup>
+import { computed, ref } from 'vue'
+  const props = defineProps({
+    taskList: Array,
+    ownerMap:Object
+  });
+
+const columns = computed(() => {
+  const list = new Set();
+  const result = props.taskList.reduce((acc, item) => {
+    const value = item.owner;
+    const text = props.ownerMap[value] || value;
+    if (!list.has(value)) {
+      list.add(value);
+      acc.push({ text, value });
+    }
+    return acc;
+  }, []);
+  result.unshift({ text: '全部', value: 'all' });
+  return result;
+});
+  const fieldValue = ref('全部');
+  const selectOwnerTrueFalseBy=ref(false)
+  const show = () => {
+    selectOwnerTrueFalseBy.value = true
+  }
+  const pickerValue = ref([{ text: '全部', value: 'all' }]);
+  const emit = defineEmits()
+  const onConfirm=({ selectedValues, selectedOptions })=>{
+    pickerValue.value = selectedValues;
+    fieldValue.value = selectedOptions[0].value
+    selectOwnerTrueFalseBy.value = false
+    emit('queryOwner', fieldValue.value)
+  }
+  defineExpose({show})
+
+</script>
+<style lang="scss" scoped>
+</style>

+ 3 - 3
src/views/outbound/picking/list/index.vue

@@ -10,7 +10,7 @@
     >
       <template #right>
         <div style="color: #fff" @click="onSelectMode({key:'picking'})">开始作业</div>
-        <van-icon name="list-switch" size="20"   @click="onClickRight" />
+        <van-icon name="list-switch" size="25"   @click="onClickRight" />
       </template>
     </van-nav-bar>
 <!--    <van-pull-refresh v-model="loading" @refresh="onRefresh" style="min-height: 93.1vh;">-->
@@ -97,7 +97,6 @@
     <!--    拣货任务号-->
     <picking-no-input  ref="pickingNoInputRef" @loadData="loadData" />
     <van-floating-bubble v-if="locationList.length>0"  :gap="50" axis="xy" magnetic="x"  @click="onContainerNo(containerNo===''?2:scanType)">容器</van-floating-bubble>
-
   </div>
 </template>
 <script lang="ts" setup>
@@ -161,7 +160,7 @@ const containerNoInputRef=ref(null)
 const onContainerNo=(type)=>{
   setTimeout(()=>{
     containerNoInputRef.value?.show(containerNo.value,type)
-  },500)
+  },300)
 }
 const allQuantity=ref(0)
 //加载数据
@@ -209,6 +208,7 @@ const loadData =  async (pickingCode) => {
     onContainerNo(2)
   }
 }
+
 // 设置拣货容器
 const setContainer=(code,type)=>{
   containerNo.value=code

+ 100 - 44
src/views/outbound/picking/task/index.vue

@@ -10,7 +10,7 @@
       >
       <template #right>
         <div style="color: #fff" @click="onClickRight">开始作业</div>
-        <van-icon name="search" size="20"   @click="onClickRight" />
+        <van-icon name="list-switch" size="25"   @click="onClickRightIcon" />
       </template>
     </van-nav-bar>
     <van-pull-refresh v-model="loading" @refresh="onRefresh" style="min-height: 93.1vh;">
@@ -36,7 +36,8 @@
           <td>{{ row.count }}</td>
           <td>
             <van-button type="primary" v-if="row.type=='Y'|| row.type=='N'" @click="onCreateTask(row)">获取</van-button>
-            <van-button type="success" v-else @click="onTaskList(row)">查看</van-button>
+            <van-button type="success" v-else-if="row.type=='M'" @click="onTaskList(row,'M')">查看</van-button>
+            <van-button type="success" v-else @click="onTaskList(row,'*')">查看</van-button>
           </td>
         </tr>
         </tbody>
@@ -45,32 +46,31 @@
     </van-pull-refresh>
     <van-dialog v-model:show="orderTrueFalseBy"
                 :title="model.type=='*'?'攒单任务':'订单列表'"
-                :show-cancel-button="model.type!='*'"
-                :show-confirm-button="model.type!='*'"
+                show-cancel-button
                 confirm-button-text="生成任务"
-                close-on-click-overlay
                 :beforeClose="onBuildTask"
     >
-      <div  v-if="model.type!='*'">
-        <van-checkbox  class="order-checkbox" v-model="isCheckAll" :indeterminate="isIndeterminate" @change="checkAllChange">全选</van-checkbox>
+      <div>
+        <van-checkbox  class="order-checkbox" v-model="isCheckAll" :indeterminate="isIndeterminate"  @change="checkAllChange">全选</van-checkbox>
       </div>
       <div class="order-list">
-        <div v-if="model.type=='*'">
-          <van-cell v-for="(item,index) in taskDetailList" class="order-cell" center
-                    is-link value="获取" @click="onSubCreateTask(item)" >
-            <template #title>
-              <div style="display: flex;justify-content: space-between">
-                <div>{{item.carrierName}}</div>
-                <div>{{item.residualOrderQty}}单</div>
-                <div>{{item.itemQty}}件</div>
-              </div>
-            </template>
-          </van-cell>
-        </div>
-        <div v-else>
-          <van-checkbox-group  v-model="checkedResult" @change="checkedResultChange">
+        <div >
+          <van-checkbox-group  v-model="checkedResult" @change="checkedResultChange" >
             <van-checkbox class="order-item" v-for="(item,index) in taskDetailList" :key="index" :name="item">
-              订单号:{{ item.orderNo }}
+              <div v-if="model.type=='*'" class="order-item-detail">
+                <div class="">{{item.carrierName}}</div>
+                <div class="">{{item.residualOrderQty}}<span style="font-size: 12px">单</span></div>
+                <div @click.stop class="">
+                  <van-stepper v-model="item.taskCount" :min="1" :max="item.residualOrderQty" input-width="50px"	theme="round"  button-size="30" />
+                </div>
+              </div>
+              <div v-else  >
+                <div class="order-item-detail">
+                  <div><span style="font-size: 12px">订单号:</span>{{ item.orderNo }}</div>
+                  <div>{{item.itemQty}}<span style="font-size: 12px">件</span></div>
+                </div>
+                <div class="order-item-detail" v-if="item.remark!=='' && item.remark!=null"><van-notice-bar :background="'none'" style="font-size: 12px" :speed="50" :text="item.remark" /></div>
+              </div>
             </van-checkbox>
           </van-checkbox-group>
         </div>
@@ -101,12 +101,14 @@
           <div class="tips-item" v-if="model.warehouseAttribute">属性仓:{{model.warehouseAttribute}}</div>
           <div class="tips-item" v-if="model.issuePartyName">店铺:{{model.issuePartyName}}</div>
           <div class="tips-item" v-if="model.ruleName">规则:{{model.ruleName}}</div>
-          <div class="tips-item" v-if="model.remark">备注:{{model.remark}}</div>
+          <div class="tips-item" v-if="model.remark" style="color: orangered">备注:{{model.remark}}</div>
         </div>
       </van-form>
     </van-dialog>
     <!--    拣货任务号-->
     <picking-no-input  ref="pickingNoInputRef" @loadData="loadTask" />
+    <big-picking ref="bigPickingRef" :model="model" :owner-map="ownerMap" :task-detail-list="taskDetailList" :warehouse="warehouse" />
+    <select-owner ref="selectOwnerRef" :taskList="allTaskList" :ownerMap="ownerMap" @queryOwner="queryOwner" />
   </div>
 </template>
 
@@ -120,6 +122,11 @@ import { createPickingTask, getPickingTaskDetail } from '@/api/picking'
 import { useStore } from '@/store/modules/user'
 import { back } from '@/utils/android'
 import PickingNoInput from '@/views/outbound/components/PickingNoInput.vue'
+import BigPicking from '@/views/outbound/components/BigPicking.vue'
+import SelectOwner from '@/views/outbound/components/SelectOwner.vue'
+import { closeLoading, showLoading } from '@/utils/loading'
+import { toMap } from '@/utils/dataType'
+
 const router = useRouter()
 const store = basicStore()
 const storeUser = useStore()
@@ -131,50 +138,73 @@ const orderTrueFalseBy = ref(false) //订单子任务
 const createTaskTrueFalseBy = ref(false)//生成数量
 const offset = ref({ x: 100, y: 500 })
 const { taskList, getTaskData } = getTaskList(warehouse)
+const allTaskList=ref([])
 const ownerMap = ref({})
 const loadData = async () => {
   ownerMap.value = store.ownerMap
   await getTaskData()
+  allTaskList.value=taskList.value
 }
 loadData()
 /**
  * 获取任务列表
  */
+//不确定状态
+const isIndeterminate=ref(false)
+//是否全选
 const isCheckAll = ref(false)
+//选中数据
 const checkedResult = ref([])
-const isIndeterminate = ref(false)
+// 主数据
 const model=ref({})
+// 子任务数据
 const subModel=ref({})
+//获取数量
 const modelCount = computed(() => subModel.value.residualOrderQty?subModel.value.residualOrderQty:model.value.count)
+//详情
 const taskDetailList=ref([])
-const onTaskList=async (row:Object)=>{
+//大件单
+const bigPickingRef=ref(null)
+const onTaskList=async (row:Object,type)=>{
   model.value=row
   const params = {
     warehouse,
-    ownerList:row.owner.split(','),
-    carrierList:row.carrier ? row.carrier.split(',') : [],
     type:row.type,
     orderNoList:row.matchedOrderNoList
   }
+  showLoading()
   const { data }: pickingListResponse = await getPickingTaskDetail(params)
+  closeLoading()
+  if(model.value.type==='*'){
+    data.forEach((item,index)=>{
+      item.taskCount=item.residualOrderQty
+    })
+  }
   taskDetailList.value=data
-  isIndeterminate.value=false
-  if(data.length==1){
-    checkedResult.value=data
-  }else {
-    checkedResult.value=[]
+  if(type=='M'){
+    setTimeout(()=>{
+      bigPickingRef.value?.show()
+    },100)
+  }else{
+    if(data.length==1){
+      isCheckAll.value=true
+      checkedResult.value=data
+      isIndeterminate.value=true
+    }else {
+      checkedResult.value=[]
+      isIndeterminate.value=false
+    }
+    setTimeout(()=>{
+      orderTrueFalseBy.value = true
+    },100)
   }
-  setTimeout(()=>{
-    orderTrueFalseBy.value = true
-  },100)
-
 }
 /**
  * 查看任务子列表
  */
 const checkAllChange = (val: boolean) => {
   checkedResult.value = val ? taskDetailList.value : []
-  isIndeterminate.value = false
+  isIndeterminate.value=false
 }
 
 const checkedResultChange = (value: string[]) => {
@@ -246,15 +276,19 @@ const countRefFocus=()=>{
 }
 const createPicking = () => {
   const splitStringIfExists = value => (typeof value === 'string' && value.trim() !== '') ? value.split(',') : undefined;
-
   let carriers = [];
   let orderNoList = [];
   let counts: number = count.value;
+  let uidMap={};
 
   if (['S', 'U', 'M'].includes(model.value.type)) {
     orderNoList = checkedResult.value.map(item => item.orderNo);
     carriers = [...new Set(checkedResult.value.map(item => item.carrier))];
-    counts = orderNoList.length;
+    counts = orderNoList.length
+  }else if(model.value.type=='*'){
+    orderNoList=model.value.matchedOrderNoList
+    uidMap=toMap(checkedResult.value,'uid','taskCount')
+    carriers = [...new Set(checkedResult.value.map(item => item.carrier))];
   } else {
     orderNoList=model.value.matchedOrderNoList
     carriers = subModel.value.carrier
@@ -269,16 +303,35 @@ const createPicking = () => {
     uid: subModel.value.uid || undefined,
     orderNoList,
     count: counts,
-  };
+    uidMap:Object.keys(uidMap).length !== 0?uidMap:undefined,
+  }
+  showLoading()
   createPickingTask(params).then(data => {
+    closeLoading()
     router.push('/picking')
     loadData()
+  }).catch(error => {
+    closeLoading()
   })
 };
 const pickingNoInputRef=ref(null)
 const onClickRight = () => {
   pickingNoInputRef.value?.show()
 };
+//选择货主
+const selectOwnerRef=ref(null)
+const onClickRightIcon = () => {
+  selectOwnerRef.value?.show()
+};
+const queryOwner=(owner)=>{
+  if(owner=='all'){
+    taskList.value=allTaskList.value
+  }else {
+    taskList.value = allTaskList.value.filter(item => item.owner === owner)
+  }
+
+}
+
 const loadTask=(code)=>{
   router.push({name:'PickingList',query: { code }})
 }
@@ -324,17 +377,20 @@ const onRefresh = () => {
 ::v-deep .van-field__control
   font-size: 20px
 .order-checkbox
-  padding: 0 20px
+  padding: 0 10px
   background: #fff
 .order-list
-  padding: 5px 20px
+  padding: 5px 10px
   min-height: 20vh
   max-height: 50vh
   overflow: scroll
   .order-item
     padding: 5px 0
-  .order-cell
-    padding: 5px 0
+    .order-item-detail
+      width: 260px
+      display: flex
+      align-items: center
+      justify-content: space-between
 .all-count
   font-size: 12px
   color: #0077ff