|
|
@@ -21,29 +21,20 @@
|
|
|
<table border="1" style="width: 100%;border-collapse: collapse;text-align: center;table-layout: fixed;" >
|
|
|
<thead>
|
|
|
<tr>
|
|
|
- <th style="width: 40px" v-if="modeType==='task'">
|
|
|
- <van-checkbox style="justify-content: center" v-model="ownerCheckAll" :indeterminate="ownerIsIndeterminate" @change="ownerCheckAllChange"></van-checkbox>
|
|
|
- </th>
|
|
|
<th style="width: 80px">货主</th>
|
|
|
<th>标记</th>
|
|
|
<th>承运商</th>
|
|
|
<th>类型</th>
|
|
|
<th>数量</th>
|
|
|
- <th>
|
|
|
- <van-button v-if="modeType==='task'" type="warning" @click="queryOwnerTask('all')">批量</van-button>
|
|
|
- <span v-else>操作</span>
|
|
|
- </th>
|
|
|
+ <th>操作</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
<tr v-for="(row, rowIndex) in taskList" :key="rowIndex">
|
|
|
- <td v-if="modeType==='task'">
|
|
|
- <van-checkbox style="justify-content: center" v-model="row.checked" :disabled="row.disabled" @change="ownerTypeSelect" />
|
|
|
- </td>
|
|
|
<td style="word-wrap: break-word" v-if="isFirstInGroup(row, rowIndex)" :rowspan="getRowspan(row, rowIndex)">
|
|
|
{{ ownerMap[row.owner] || row.owner }}
|
|
|
</td>
|
|
|
- <td style="word-wrap: break-word;" >
|
|
|
+ <td style="word-wrap: break-word" >
|
|
|
<div>{{ row.ruleName }}</div>
|
|
|
</td>
|
|
|
<td style="word-wrap: break-word;">
|
|
|
@@ -63,7 +54,7 @@
|
|
|
<td>
|
|
|
<van-button type="primary" v-if="row.type=='Y'|| row.type=='N'" @click="onCreateTask(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="modeType==='task'?queryOwnerTask(row):onTaskList(row,'*')">查看</van-button>
|
|
|
+ <van-button type="success" v-else @click="onTaskList(row,'*')">查看</van-button>
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr v-if="taskList.length==0">
|
|
|
@@ -173,7 +164,6 @@
|
|
|
<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" />
|
|
|
-<!-- <owner-batch-task ref="ownerBatchTaskRef" :ownerMap="ownerMap" />-->
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -184,7 +174,12 @@ import { getTaskList } from '@/views/outbound/picking/task/hooks/task'
|
|
|
import { computed, defineAsyncComponent, nextTick, ref } from 'vue'
|
|
|
import { showConfirmDialog, showDialog, showFailToast, showToast } from 'vant'
|
|
|
import { basicStore } from '@/store/modules/basic'
|
|
|
-import { createPickingTask, getBigPickingTaskDetail, getPickingTaskDetail } from '@/api/picking'
|
|
|
+import {
|
|
|
+ createPickingTask,
|
|
|
+ getBigPickingTaskDetail,
|
|
|
+ getMixPickActivityOrders,
|
|
|
+ getPickingTaskDetail,
|
|
|
+} from '@/api/picking'
|
|
|
import { useStore } from '@/store/modules/user'
|
|
|
import { goBack } from '@/utils/android'
|
|
|
const PickingNoInput = defineAsyncComponent(() => import('@/views/outbound/picking/components/PickingNoInput.vue'))
|
|
|
@@ -193,8 +188,6 @@ const SelectOwner = defineAsyncComponent(() => import('@/views/outbound/picking/
|
|
|
import { closeLoading, showLoading } from '@/utils/loading'
|
|
|
import { getTimeHours } from '@/utils/date'
|
|
|
import { fetchPickingData } from '@/views/outbound/picking/list/hooks/list'
|
|
|
-import { getPickingTaskDetailType } from '@/types/picking'
|
|
|
-import OwnerBatchTask from '@/views/outbound/picking/components/OwnerBatchTask.vue'
|
|
|
import { toMap } from '@/utils/dataType'
|
|
|
const router = useRouter()
|
|
|
const store = basicStore()
|
|
|
@@ -236,7 +229,6 @@ const ownerTaskTitle = computed(() => {
|
|
|
'Y': '单品',
|
|
|
};
|
|
|
const typeTitle = typeMap[type] || '订单列表';
|
|
|
-
|
|
|
return owner ? `${owner}-${typeTitle}` : typeTitle;
|
|
|
});
|
|
|
|
|
|
@@ -322,93 +314,33 @@ const onTaskList=async (row:Object,type)=>{
|
|
|
},100)
|
|
|
}
|
|
|
}
|
|
|
-/**
|
|
|
- * 选择活动单
|
|
|
- */
|
|
|
-const ownerCheckAll=ref(false)
|
|
|
-//不确定状态
|
|
|
-const ownerIsIndeterminate=ref(false)
|
|
|
-//货主订单选择列表
|
|
|
-const ownerCheckedResult=ref([])
|
|
|
-//全选/反选
|
|
|
-const ownerCheckAllChange=(val)=>{
|
|
|
- taskList.value.forEach(item => {
|
|
|
- if (!item.disabled) {
|
|
|
- item.checked = val;
|
|
|
- }
|
|
|
- });
|
|
|
- updateOwnerCheckAllStatus()
|
|
|
-}
|
|
|
-//单选
|
|
|
-const ownerTypeSelect=(val)=>{
|
|
|
- updateOwnerCheckAllStatus()
|
|
|
-}
|
|
|
-// 更新全选框和部分选中状态
|
|
|
-const updateOwnerCheckAllStatus=()=>{
|
|
|
- const totalItems = taskList.value.length
|
|
|
- ownerCheckedResult.value = taskList.value.filter(item => item.checked)
|
|
|
- // 如果所有项都被选中
|
|
|
- ownerCheckAll.value = ownerCheckedResult.value.length === totalItems;
|
|
|
- // 如果有部分项被选中
|
|
|
- ownerIsIndeterminate.value = ownerCheckedResult.value.length > 0 && ownerCheckedResult.value.length < totalItems;
|
|
|
-}
|
|
|
// 查看活动单列表
|
|
|
-const ownerBatchTaskRef=ref(null)
|
|
|
-const queryOwnerTask= (row)=>{
|
|
|
- let orderNoList =row.matchedOrderNoList
|
|
|
- if(row=='all'){
|
|
|
- orderNoList=typeTaskList().flatMap(item => item.matchedOrderNoList);
|
|
|
- }
|
|
|
- const params = {
|
|
|
- warehouse,
|
|
|
- type: '*',
|
|
|
- orderNoList,
|
|
|
- size:1000,
|
|
|
- page:1
|
|
|
- };
|
|
|
+const queryOwnerTask= ()=>{
|
|
|
+ let customerList = [...new Set(taskList.value.map(item => item.owner))];
|
|
|
showLoading()
|
|
|
- getPickingTaskDetail(<getPickingTaskDetailType>params).then(res=> {
|
|
|
+ getMixPickActivityOrders({warehouse}, customerList).then(res=>{
|
|
|
closeLoading()
|
|
|
- if (res.data.length === 0) {
|
|
|
- showToast({ duration: 5000, message: '任务已被获取,请刷新后重新查看!' })
|
|
|
+ if(res.data.orderCount==0){
|
|
|
+ showToast({ duration: 5000, message: '暂无可批量生成的活动单,请稍后再试!' })
|
|
|
return
|
|
|
}
|
|
|
- const dataList = res.data.filter(item => item.residualOrderQty <= 30)
|
|
|
- if (dataList.length == 0) {
|
|
|
- showToast({ duration: 5000, message: '当前活动单,没有30单内的数据!' })
|
|
|
- return
|
|
|
- }
|
|
|
- taskList.value.sort((a, b) => {
|
|
|
- if (a.customerId !== b.customerId) {
|
|
|
- return a.customerId.localeCompare(b.customerId);
|
|
|
- }
|
|
|
- if (a.carrier !== b.carrier) {
|
|
|
- return a.carrier.localeCompare(b.carrier)
|
|
|
- }
|
|
|
- return b.residualOrderQty - a.residualOrderQty
|
|
|
- });
|
|
|
- const dataListsSlice=dataList.slice(0, 10)
|
|
|
- const sumQty = dataListsSlice.reduce((sum, item) => sum + Number(item.residualOrderQty), 0)
|
|
|
showConfirmDialog({
|
|
|
title: '温馨提示',
|
|
|
- message:`您正在生成${dataListsSlice.length}个活动波次,共:${sumQty}单是否继续`,
|
|
|
+ message:`您正在生成${res.data.waveCount}个活动波次,共:${res.data.orderCount}单是否继续`,
|
|
|
allowHtml:true,
|
|
|
keyboardEnabled:false
|
|
|
}).then(() => {
|
|
|
- _createPickingTask(dataListsSlice)
|
|
|
- })
|
|
|
- .catch(() => {})
|
|
|
- }).catch(()=>{
|
|
|
+ _createPickingTask(res.data.activityFlagAndCountMap)
|
|
|
+ }).catch(() => {})
|
|
|
+ }).catch(err=>{
|
|
|
closeLoading()
|
|
|
})
|
|
|
}
|
|
|
-const _createPickingTask=(dataList)=>{
|
|
|
+const _createPickingTask=(uidMap)=>{
|
|
|
const params = {
|
|
|
warehouse,
|
|
|
- owners: [...new Set(dataList.map(item => item.customerId))],
|
|
|
- carriers: [...new Set(dataList.map(item => item.carrier))],
|
|
|
type:'*',
|
|
|
- uidMap:toMap(dataList,'uid','residualOrderQty'),
|
|
|
+ uidMap,
|
|
|
enableFlag:false
|
|
|
}
|
|
|
showLoading()
|
|
|
@@ -608,19 +540,12 @@ const onMore= async (row)=>{
|
|
|
});
|
|
|
}
|
|
|
//切换模式
|
|
|
-const taskActions = [
|
|
|
- { name: '查看全部任务', key: 'all' },
|
|
|
- { name: '货主筛选', key: 'selectOwner' }
|
|
|
-];
|
|
|
-const defaultActions = [
|
|
|
+const actions = [
|
|
|
{ name: '批量获取活动单', key: 'task' },
|
|
|
{ name: '货主筛选', key: 'selectOwner' }
|
|
|
-];
|
|
|
-const actions = ref(defaultActions)
|
|
|
+]
|
|
|
const modeTrueFalseBy = ref(false)
|
|
|
-
|
|
|
const onClickRightIcon = () => {
|
|
|
- actions.value = (modeType.value === 'task') ? taskActions : defaultActions
|
|
|
modeTrueFalseBy.value = true
|
|
|
}
|
|
|
const typeTaskList = () => {
|
|
|
@@ -631,16 +556,7 @@ const onSelectMode= async (value) => {
|
|
|
if (value.key == 'selectOwner') {
|
|
|
selectOwnerRef.value?.show()
|
|
|
}else if(value.key == 'task') {
|
|
|
- if(typeTaskList().length==0){
|
|
|
- showToast({duration:3000,message:'当前没有活动单'})
|
|
|
- return
|
|
|
- }
|
|
|
- queryOwnerTask('all')
|
|
|
- // modeType.value=value.key
|
|
|
- // taskList.value=typeTaskList()
|
|
|
- // if(typeTaskList().length<=10){
|
|
|
- // ownerCheckAllChange(true)
|
|
|
- // }
|
|
|
+ queryOwnerTask()
|
|
|
}else if(value.key == 'all'){
|
|
|
queryOwner(value.key)
|
|
|
}
|