diff --git a/src/views/modules/project/projectPartProgress.vue b/src/views/modules/project/projectPartProgress.vue index 6c9eb38..795a5d8 100644 --- a/src/views/modules/project/projectPartProgress.vue +++ b/src/views/modules/project/projectPartProgress.vue @@ -44,7 +44,7 @@
- + - + + + +
@@ -129,7 +141,10 @@
-
@@ -270,6 +285,8 @@ export default { // 项目数据 projectList:[], + // 控制甘特图是否显示指定物料行(左侧表格仍保持展示) + hiddenProjectKeys: [], projectList1: [ { serialNo: 1, @@ -521,6 +538,14 @@ export default { } }, computed: { + visibleProjectList() { + const hiddenSet = new Set(this.hiddenProjectKeys) + return (this.projectList || []).filter((p, idx) => { + const key = this.getProjectKey(p, idx) + if (!key) return true + return !hiddenSet.has(key) + }) + }, // 生成时间轴天数 timelineDays() { const days = [] @@ -593,6 +618,26 @@ export default { }, }, methods: { + getProjectKey(project, index) { + // 用于保证“同物料(partCode)的多行记录”互不影响隐藏状态 + // 优先使用后端唯一 id,其次 serialNo,最后兜底 index + const obj = project || {} + return obj.projectId || obj.id || obj.partProgressId || obj.serialNo || (obj.partCode ? `${obj.partCode}_${index}` : index) + }, + isProjectHidden(project, index) { + const key = this.getProjectKey(project, index) + if (key === undefined || key === null || key === '') return false + return (this.hiddenProjectKeys || []).includes(key) + }, + toggleProjectVisible(project, index) { + const key = this.getProjectKey(project, index) + if (key === undefined || key === null || key === '') return + if (this.isProjectHidden(project, index)) { + this.hiddenProjectKeys = (this.hiddenProjectKeys || []).filter((c) => c !== key) + } else { + this.hiddenProjectKeys = Array.from(new Set([...(this.hiddenProjectKeys || []), key])) + } + }, // 处理日期范围变化 handleDateRangeChange(dates) { @@ -675,6 +720,7 @@ export default { if (this.externalProjectList.length > 0) { // 使用外部传入的数据 this.projectList = this.externalProjectList + this.hiddenProjectKeys = [] if (this.externalLegendItems.length > 0) { this.legendItems = JSON.parse(JSON.stringify(this.externalLegendItems)) } else { @@ -711,6 +757,7 @@ export default { if (ganttData && ganttData.code === 0) { const payload = ganttData.projectGanttData || ganttData.data || ganttData this.projectList = (payload && payload.projectList) || this.projectList || [] + this.hiddenProjectKeys = [] } const legendData = legendRes && legendRes.data !== undefined ? legendRes.data : legendRes