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