diff --git a/src/views/modules/sampleTracking/projectProofTracking.vue b/src/views/modules/sampleTracking/projectProofTracking.vue index 45fbf42..d47e177 100644 --- a/src/views/modules/sampleTracking/projectProofTracking.vue +++ b/src/views/modules/sampleTracking/projectProofTracking.vue @@ -1231,7 +1231,7 @@ import { searchBusinessInfo8 } from '@/api/factory/site.js' import { queryCustomerList } from '@/api/customer/customer' -import { getTableDefaultListLanguage, getTableUserListLanguage } from '@/api/table.js' +import { getTableUserListLanguage } from '@/api/table.js' import Chooselist from '@/views/modules/common/Chooselist_eam' import Sortable from 'sortablejs' @@ -1659,7 +1659,6 @@ export default { searchProjectManagerOptions: [], searchPicOptions: [], trackingColumnList: cloneDefaultTrackingColumns(), - hasUserTrackingColumnConfig: false, processColumns: cloneDefaultProcessColumns(), processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()), trackingTableSortProp: '', @@ -1858,11 +1857,10 @@ export default { }, computed: { visibleTrackingColumns () { - const sourceColumns = this.hasUserTrackingColumnConfig - ? (Array.isArray(this.trackingColumnList) ? this.trackingColumnList : []) - : ((Array.isArray(this.trackingColumnList) && this.trackingColumnList.length > 0) - ? this.trackingColumnList - : this.buildDefaultTrackingColumns()) + // 列表只渲染“当前生效列”:有用户动态列时用用户配置,否则用代码默认列。 + const sourceColumns = Array.isArray(this.trackingColumnList) && this.trackingColumnList.length > 0 + ? this.trackingColumnList + : this.buildDefaultTrackingColumns() return sourceColumns.filter(item => this.isTrackingColumnVisible(item)) }, visibleProcessColumns () { @@ -1986,7 +1984,7 @@ export default { columnHidden: this.normalizeTrackingColumnBoolean(mergedItem.columnHidden, false) }) }, - normalizeTrackingColumns (rows, appendDefaultColumns) { + normalizeTrackingColumns (rows) { const defaultColumns = this.buildDefaultTrackingColumns() const defaultColumnMap = {} defaultColumns.forEach(item => { @@ -1994,89 +1992,38 @@ export default { }) const mergedRows = [] const usedColumnPropMap = {} - if (Array.isArray(rows)) { - rows.forEach(item => { - const columnProp = item && item.columnProp != null ? String(item.columnProp).trim() : '' - if (!columnProp || usedColumnPropMap[columnProp]) { - return - } - usedColumnPropMap[columnProp] = true - mergedRows.push(this.normalizeTrackingColumnItem(item, defaultColumnMap[columnProp])) - }) - } - if (appendDefaultColumns !== true) { + if (!Array.isArray(rows)) { return mergedRows } - // 用户旧配置可能缺少新加列,这里按系统默认顺序补齐,避免新增列永远看不到。 - defaultColumns.forEach((defaultItem, defaultIndex) => { - if (usedColumnPropMap[defaultItem.columnProp]) { + // 只规范化用户已保存的列,不再把代码默认列补回去。 + // 否则用户隐藏的列(动态列里 status=false)会被默认列重新插回并继续显示。 + rows.forEach(item => { + const columnProp = item && item.columnProp != null ? String(item.columnProp).trim() : '' + if (!columnProp || usedColumnPropMap[columnProp]) { return } - let insertIndex = mergedRows.length - for (let i = defaultIndex + 1; i < defaultColumns.length; i++) { - const nextProp = defaultColumns[i].columnProp - const matchedIndex = mergedRows.findIndex(item => item.columnProp === nextProp) - if (matchedIndex > -1) { - insertIndex = matchedIndex - break - } - } - if (insertIndex === mergedRows.length) { - for (let i = defaultIndex - 1; i >= 0; i--) { - const prevProp = defaultColumns[i].columnProp - const matchedIndex = mergedRows.findIndex(item => item.columnProp === prevProp) - if (matchedIndex > -1) { - insertIndex = matchedIndex + 1 - break - } - } - } - mergedRows.splice(insertIndex, 0, Object.assign({}, defaultItem)) - usedColumnPropMap[defaultItem.columnProp] = true + usedColumnPropMap[columnProp] = true + mergedRows.push(this.normalizeTrackingColumnItem(item, defaultColumnMap[columnProp])) }) return mergedRows }, - loadTrackingDefaultColumns (tableId) { - const queryTable = { - functionId: this.getTrackingColumnFunctionId(), - tableId: tableId, - languageCode: this.$i18n && this.$i18n.locale ? this.$i18n.locale : '' - } - return getTableDefaultListLanguage(queryTable).then(({ data }) => { - const rows = data && Array.isArray(data.rows) ? data.rows : [] - this.hasUserTrackingColumnConfig = false - this.trackingColumnList = rows.length > 0 - ? this.normalizeTrackingColumns(rows, true) - : this.buildDefaultTrackingColumns() - this.refreshTrackingTableLayout() - return this.trackingColumnList - }).catch(() => { - this.hasUserTrackingColumnConfig = false - this.trackingColumnList = this.buildDefaultTrackingColumns() - this.refreshTrackingTableLayout() - return this.trackingColumnList - }) - }, loadTrackingColumns () { - const tableId = this.getTrackingColumnTableId() const queryTableUser = { userId: this.$store.state.user.name, functionId: this.getTrackingColumnFunctionId(), - tableId: tableId, - status: true, + tableId: this.getTrackingColumnTableId(), languageCode: this.$i18n && this.$i18n.locale ? this.$i18n.locale : '' } return getTableUserListLanguage(queryTableUser).then(({ data }) => { const rows = data && Array.isArray(data.rows) ? data.rows : [] - if (rows.length > 0) { - this.hasUserTrackingColumnConfig = true - this.trackingColumnList = this.normalizeTrackingColumns(rows, true) - this.refreshTrackingTableLayout() - return this.trackingColumnList - } - return this.loadTrackingDefaultColumns(tableId) + // 不按 status 过滤:隐藏列也要读回来,才能按用户设置真正不展示。 + // 用户完全没有动态列配置时,才回退到本页代码里的默认列。 + this.trackingColumnList = rows.length > 0 + ? this.normalizeTrackingColumns(rows) + : this.buildDefaultTrackingColumns() + this.refreshTrackingTableLayout() + return this.trackingColumnList }).catch(() => { - this.hasUserTrackingColumnConfig = false this.trackingColumnList = this.buildDefaultTrackingColumns() this.refreshTrackingTableLayout() return this.trackingColumnList