Browse Source

feat(inspection): 实现质检排程跨天支持和自动选中功能

- 在质检排程视图中添加表格引用以便程序控制选中状态
- 实现首次加载时自动选中第一个QC人员并加载其排程数据
- 优化排程数据按日期分组逻辑,支持跨天任务的正确显示
- 修复后端接口调用参数,使用userName替代qcName确保数据准确性
- 在我的待办列表中同步实现跨天排程的支持功能
- 添加重复任务过滤机制避免同一天同一任务多次显示
master
qiankanghui 6 days ago
parent
commit
c696a73f66
  1. 54
      src/views/modules/inspection/com_inspectionScheduleView.vue
  2. 38
      src/views/modules/inspection/myTodoList.vue

54
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
// QC10
getScheduleView(qc.qcName || qc.userName).then(({ data }) => {
// 使userNameqcName
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] = []
// planStartDateplanEndDate
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
})
})
//

38
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] = []
// planStartDateplanEndDate
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
})
})
//

Loading…
Cancel
Save