diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/container.vue b/src/views/productionSchedulingPlan/schedulingDashboard/container.vue index 76e4619..7cdf213 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/container.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/container.vue @@ -788,11 +788,10 @@ export default { const taskBarWidth = (timeLine * widthPercent) / 100; if (textWidth > taskBarWidth) { - console.log('大于宽度的', textWidth, taskBarWidth,processName); if (processName <= 4) { return -7; // 文字超出任务条时,向左偏移一半文字宽度 } else { - return -textWidth*1.5; // 文字超出任务条时,向左偏移一半文字宽度 + return -textWidth * 1.5; // 文字超出任务条时,向左偏移一半文字宽度 } } else { // console.log('小于宽度的', textWidth, taskBarWidth,processName); @@ -1078,11 +1077,26 @@ export default { } // 处理任务数据 + // 按工序名称分组并合并任务 + const groupedTasks = {}; woTasks.forEach(task => { - tasks.push({ - ...task, - woCode, // 将 woCode 添加到任务数据中,便于后续关联 - }); + if (!groupedTasks[task.processName]) { + groupedTasks[task.processName] = []; + } + groupedTasks[task.processName].push(task); + }); + Object.values(groupedTasks).forEach(group => { + const minStartTime = Math.min(...group.map(t => this.parseTimeToHours(t.planStartTime))); + const maxEndTime = Math.max(...group.map(t => this.parseTimeToHours(t.planEndTime))); + + // 创建合并后的任务 + const mergedTask = { + ...group[0], // 保留第一个任务的基础信息 + planStartTime: this.formatHoursToTime(minStartTime), // 合并后的开始时间 + planEndTime: this.formatHoursToTime(maxEndTime), // 合并后的结束时间 + }; + + tasks.push(mergedTask); }); }); @@ -1093,6 +1107,18 @@ export default { this.updateCurrentPageOrders(); this.loading = false; }, + formatHoursToTime(hours) { + const baseDate = new Date(this.baseDate); + const date = new Date(baseDate.getTime() + hours * 60 * 60 * 1000); + + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + const hour = String(date.getHours()).padStart(2, '0'); + const minute = String(date.getMinutes()).padStart(2, '0'); + + return `${year}-${month}-${day} ${hour}:${minute}`; + }, // 任务状态计算 calcTaskStatus(startTime, endTime) {