From c696a73f664cc610b968736b0a01c92dda40df02 Mon Sep 17 00:00:00 2001 From: qiankanghui Date: Fri, 5 Jun 2026 10:00:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(inspection):=20=E5=AE=9E=E7=8E=B0=E8=B4=A8?= =?UTF-8?q?=E6=A3=80=E6=8E=92=E7=A8=8B=E8=B7=A8=E5=A4=A9=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=92=8C=E8=87=AA=E5=8A=A8=E9=80=89=E4=B8=AD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在质检排程视图中添加表格引用以便程序控制选中状态 - 实现首次加载时自动选中第一个QC人员并加载其排程数据 - 优化排程数据按日期分组逻辑,支持跨天任务的正确显示 - 修复后端接口调用参数,使用userName替代qcName确保数据准确性 - 在我的待办列表中同步实现跨天排程的支持功能 - 添加重复任务过滤机制避免同一天同一任务多次显示 --- .../inspection/com_inspectionScheduleView.vue | 54 ++++++++++++++----- src/views/modules/inspection/myTodoList.vue | 38 +++++++++---- 2 files changed, 69 insertions(+), 23 deletions(-) diff --git a/src/views/modules/inspection/com_inspectionScheduleView.vue b/src/views/modules/inspection/com_inspectionScheduleView.vue index 9eb7f58..5257d28 100644 --- a/src/views/modules/inspection/com_inspectionScheduleView.vue +++ b/src/views/modules/inspection/com_inspectionScheduleView.vue @@ -17,6 +17,7 @@ border size="mini" highlight-current-row + ref="qcTable" @current-change="handleQcSelect" @row-click="handleQcSelect" style="width: 100%;" @@ -225,6 +226,18 @@ export default { region: '' // 区域暂时为空 })) console.log('加载QC人员列表成功:', this.qcList) + + // 自动选中第一个QC人员并加载其排程数据 + if (this.qcList.length > 0 && !this.selectedQc) { + this.$nextTick(() => { + this.selectedQc = this.qcList[0] + this.loadScheduleData(this.qcList[0]) + // 在表格中设置当前行 + if (this.$refs.qcTable) { + this.$refs.qcTable.setCurrentRow(this.qcList[0]) + } + }) + } } else { this.qcList = [] console.warn('加载QC人员列表失败:', data.msg) @@ -332,25 +345,42 @@ export default { this.loading = true // 调用后端接口获取该QC未来10天的排程数据 - getScheduleView(qc.qcName || qc.userName).then(({ data }) => { + // 注意:必须使用userName(用户名),而不是qcName(显示名称) + getScheduleView(qc.userName).then(({ data }) => { if (data.code === 0 && data.list) { // 生成未来10天的日期结构 const days = this.generateNextDays(10) - // 将后端返回的数据按日期分组 + // 将后端返回的数据按日期分组(支持跨天排程) const tasksByDate = {} data.list.forEach(task => { - const dateStr = this.formatDate(new Date(task.planStartDate)) - if (!tasksByDate[dateStr]) { - tasksByDate[dateStr] = [] + // 计算从planStartDate到planEndDate之间的所有日期 + const startDate = new Date(task.planStartDate) + const endDate = new Date(task.planEndDate || task.planStartDate) + + // 遍历日期范围内的每一天 + let currentDate = new Date(startDate) + while (currentDate <= endDate) { + const dateStr = this.formatDate(currentDate) + if (!tasksByDate[dateStr]) { + tasksByDate[dateStr] = [] + } + + // 避免同一天重复添加同一个任务 + const exists = tasksByDate[dateStr].some(t => t.requestNo === task.requestNo) + if (!exists) { + tasksByDate[dateStr].push({ + requestNo: task.requestNo, + supplierName: task.supplierName, + inspectAddress: task.inspectAddress, + planStartDate: task.planStartDate, + planEndDate: task.planEndDate + }) + } + + // 移动到下一天 + currentDate.setDate(currentDate.getDate() + 1) } - tasksByDate[dateStr].push({ - requestNo: task.requestNo, - supplierName: task.supplierName, - inspectAddress: task.inspectAddress, - planStartDate: task.planStartDate, - planEndDate: task.planEndDate - }) }) // 将任务分配到对应的日期卡片中 diff --git a/src/views/modules/inspection/myTodoList.vue b/src/views/modules/inspection/myTodoList.vue index 6edcf39..a3df091 100644 --- a/src/views/modules/inspection/myTodoList.vue +++ b/src/views/modules/inspection/myTodoList.vue @@ -80,20 +80,36 @@ export default { // 生成未来10天的日期结构 const days = this.generateNextDays(10) - // 将后端返回的数据按日期分组 + // 将后端返回的数据按日期分组(支持跨天排程) const tasksByDate = {} data.list.forEach(task => { - const dateStr = this.formatDate(new Date(task.planStartDate)) - if (!tasksByDate[dateStr]) { - tasksByDate[dateStr] = [] + // 计算从planStartDate到planEndDate之间的所有日期 + const startDate = new Date(task.planStartDate) + const endDate = new Date(task.planEndDate || task.planStartDate) + + // 遍历日期范围内的每一天 + let currentDate = new Date(startDate) + while (currentDate <= endDate) { + const dateStr = this.formatDate(currentDate) + if (!tasksByDate[dateStr]) { + tasksByDate[dateStr] = [] + } + + // 避免同一天重复添加同一个任务 + const exists = tasksByDate[dateStr].some(t => t.requestNo === task.requestNo) + if (!exists) { + tasksByDate[dateStr].push({ + requestNo: task.requestNo, + supplierName: task.supplierName, + inspectAddress: task.inspectAddress, + planStartDate: task.planStartDate, + planEndDate: task.planEndDate + }) + } + + // 移动到下一天 + currentDate.setDate(currentDate.getDate() + 1) } - tasksByDate[dateStr].push({ - requestNo: task.requestNo, - supplierName: task.supplierName, - inspectAddress: task.inspectAddress, - planStartDate: task.planStartDate, - planEndDate: task.planEndDate - }) }) // 将任务分配到对应的日期卡片中