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 @@
-
@@ -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