|
@@ -17,27 +17,43 @@ export default {
|
|
resolvedTable() {
|
|
resolvedTable() {
|
|
console.log('resolvedTable called', this.listGroupsOptions, this.chartBinding)
|
|
console.log('resolvedTable called', this.listGroupsOptions, this.chartBinding)
|
|
if (!this.listGroupsOptions.length) return {}
|
|
if (!this.listGroupsOptions.length) return {}
|
|
|
|
+ // setting data
|
|
const columns = { groupName: { label: '组合', fixed: true }, expectedCount: { label: '设置人数', fixed: true } }
|
|
const columns = { groupName: { label: '组合', fixed: true }, expectedCount: { label: '设置人数', fixed: true } }
|
|
const rows = this.chartBinding.generation.status.roundGroups.map(rg => ({
|
|
const rows = this.chartBinding.generation.status.roundGroups.map(rg => ({
|
|
groupId: rg.groupId,
|
|
groupId: rg.groupId,
|
|
groupName: this.translateGroup(rg.groupId),
|
|
groupName: this.translateGroup(rg.groupId),
|
|
expectedCount: rg.personCount
|
|
expectedCount: rg.personCount
|
|
}))
|
|
}))
|
|
|
|
+ // generation data
|
|
const mergedColumns = []
|
|
const mergedColumns = []
|
|
this.chartBinding.tableData.forEach(item => {
|
|
this.chartBinding.tableData.forEach(item => {
|
|
if (this.chartBinding.generation.hiddenGenerations.includes(item.generation)) return
|
|
if (this.chartBinding.generation.hiddenGenerations.includes(item.generation)) return
|
|
const ext = { roundId: item.roundId, generation: item.generation }
|
|
const ext = { roundId: item.roundId, generation: item.generation }
|
|
const isPreference = item.categories.every(item => Array.isArray(item))
|
|
const isPreference = item.categories.every(item => Array.isArray(item))
|
|
|
|
+
|
|
|
|
+ const subColumns = {}
|
|
|
|
+ const mergedHeaderKey = 'generation_' + item.generation
|
|
|
|
+ const options = Object.values(this.chartBinding.generation.options)
|
|
|
|
+ const mergedHeaderOpt = options.find(opt => opt.value == item.generation)
|
|
|
|
+ const mergedHeaderDefine = { label: mergedHeaderOpt.title, children: subColumns }
|
|
if (isPreference) {
|
|
if (isPreference) {
|
|
item.categories.forEach((subItem, idx) => {
|
|
item.categories.forEach((subItem, idx) => {
|
|
|
|
+ const innerHeaderKey = mergedHeaderKey + '_' + idx
|
|
|
|
+ const innerHeaderDefine = item.categories.length > 1
|
|
|
|
+ ? { label: `第${idx + 1}志愿`, children: {} }
|
|
|
|
+ : mergedHeaderDefine
|
|
const prefix = item.categories.length > 1 ? `第${idx + 1}志愿` : ''
|
|
const prefix = item.categories.length > 1 ? `第${idx + 1}志愿` : ''
|
|
- subItem.forEach(data => this.resolveTableGeneration(ext, data, columns, rows, mergedColumns, prefix))
|
|
|
|
|
|
+ subItem.forEach(data => this.resolveTableGeneration(ext, data, innerHeaderDefine.children, rows, mergedColumns, innerHeaderKey))
|
|
|
|
+ columns[innerHeaderKey] = innerHeaderDefine
|
|
})
|
|
})
|
|
} else {
|
|
} else {
|
|
- item.categories.forEach(data => this.resolveTableGeneration(ext, data, columns, rows, mergedColumns))
|
|
|
|
|
|
+ item.categories.forEach(data => this.resolveTableGeneration(ext, data, subColumns, rows, mergedColumns))
|
|
|
|
+ columns[mergedHeaderKey] = mergedHeaderDefine
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
+ // accumulate data
|
|
|
|
|
|
|
|
+ // completed
|
|
this.$refs.table.scrollToRight()
|
|
this.$refs.table.scrollToRight()
|
|
return {
|
|
return {
|
|
mergedColumns,
|
|
mergedColumns,
|
|
@@ -58,7 +74,7 @@ export default {
|
|
resolveTableGeneration(ext, data, columnsRef, rowsRef, mergedColumnsRef, prefix = '') {
|
|
resolveTableGeneration(ext, data, columnsRef, rowsRef, mergedColumnsRef, prefix = '') {
|
|
// resolve core
|
|
// resolve core
|
|
const prop = prefix + ext.generation + '_' + data.category
|
|
const prop = prefix + ext.generation + '_' + data.category
|
|
- const name = prefix + data.displayName
|
|
|
|
|
|
+ const name = data.displayName
|
|
const shouldMerge = data.values.length != rowsRef.length
|
|
const shouldMerge = data.values.length != rowsRef.length
|
|
|| data.values.some(v => v.groupId == 0)
|
|
|| data.values.some(v => v.groupId == 0)
|
|
|
|
|