|
|
|
|
@ -1135,56 +1135,35 @@ export default { |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ... 合并任务逻辑保持不变 ... |
|
|
|
|
const groupedTasks = {}; |
|
|
|
|
woTasks.forEach(task => { |
|
|
|
|
if (!groupedTasks[task.processName]) { |
|
|
|
|
groupedTasks[task.processName] = []; |
|
|
|
|
} |
|
|
|
|
groupedTasks[task.processName].push(task); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
Object.values(groupedTasks).forEach(group => { |
|
|
|
|
// 按计划开始时间升序排序 |
|
|
|
|
const sortedTasks = [...group].sort((a, b) => { |
|
|
|
|
return new Date(a.planStartTime) - new Date(b.planStartTime); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const mergedTasks = []; |
|
|
|
|
const mergedTasks = []; |
|
|
|
|
let currentMergedTask = null; |
|
|
|
|
|
|
|
|
|
sortedTasks.forEach(task => { |
|
|
|
|
for (const task of woTasks) { |
|
|
|
|
if (!currentMergedTask) { |
|
|
|
|
// 初始化第一个任务 |
|
|
|
|
currentMergedTask = { ...task }; |
|
|
|
|
} else { |
|
|
|
|
const prevEndTime = new Date(currentMergedTask.planEndTime); |
|
|
|
|
const currStartTime = new Date(task.planStartTime); |
|
|
|
|
const currEndTime = new Date(task.planEndTime); |
|
|
|
|
|
|
|
|
|
// 判断是否重叠或连续:当前任务开始时间 <= 已合并任务的结束时间 |
|
|
|
|
if (currStartTime.getTime() <= prevEndTime.getTime()) { |
|
|
|
|
// 合并时间区间:结束时间取最大值 |
|
|
|
|
if (currEndTime.getTime() > prevEndTime.getTime()) { |
|
|
|
|
currentMergedTask.planEndTime = task.planEndTime; |
|
|
|
|
} |
|
|
|
|
// 可选:合并其他字段,如数量、人员等 |
|
|
|
|
// currentMergedTask.makeQty += task.makeQty; |
|
|
|
|
// 仅当当前任务与前一个任务工序名称相同时才合并 |
|
|
|
|
if (currentMergedTask.processName === task.processName) { |
|
|
|
|
// 更新结束时间为当前任务的结束时间(假设顺序正确) |
|
|
|
|
currentMergedTask.planEndTime = task.planEndTime; |
|
|
|
|
// 注意:不更新 startTime,保留第一个的开始时间 |
|
|
|
|
} else { |
|
|
|
|
// 无重叠,推入并开启新合并任务 |
|
|
|
|
// 工序不同,推入当前合并任务,开启新任务 |
|
|
|
|
mergedTasks.push(currentMergedTask); |
|
|
|
|
currentMergedTask = { ...task }; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 推入最后一个合并任务 |
|
|
|
|
if (currentMergedTask) { |
|
|
|
|
mergedTasks.push(currentMergedTask); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tasks.push(...mergedTasks); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
// console.log(909090, tasks); |
|
|
|
|
|
|
|
|
|
// >>>>>>>>>> 新增排序逻辑 <<<<<<<<<< |
|
|
|
|
// 1. 对 orders 按 receiveTime 升序 |
|
|
|
|
orders.sort((a, b) => new Date(a.receiveTime) - new Date(b.receiveTime)); |
|
|
|
|
@ -1227,7 +1206,6 @@ export default { |
|
|
|
|
this.earliestPlanStartTime = earliest ? new Date(earliest) : null; |
|
|
|
|
this.latestPlanEndTime = latest ? new Date(latest) : null; |
|
|
|
|
|
|
|
|
|
console.log(new Date(earliest), this.earliestPlanStartTime, 'earliest'); |
|
|
|
|
this.updateCurrentPageOrders(); |
|
|
|
|
this.loading = false; |
|
|
|
|
}, |
|
|
|
|
@ -1338,7 +1316,8 @@ export default { |
|
|
|
|
}, |
|
|
|
|
// 任务 样式计算 |
|
|
|
|
getStatusColor(row) { |
|
|
|
|
if (row.planStatus === '1') { |
|
|
|
|
console.log('计算状态颜色', row.planStatus, row.remindStatus); |
|
|
|
|
if (row.planStatus === '1') { |
|
|
|
|
if (row.remindStatus === '1') { |
|
|
|
|
return '#FFD700'; // 黄色(可自定义) |
|
|
|
|
} else if (row.remindStatus === '2') { |
|
|
|
|
|