diff --git a/packages/renderless/src/grid/utils/common.ts b/packages/renderless/src/grid/utils/common.ts index 23264b2edb..8ccf33908c 100644 --- a/packages/renderless/src/grid/utils/common.ts +++ b/packages/renderless/src/grid/utils/common.ts @@ -42,7 +42,7 @@ export const getRowid = ($table, row) => { } // 获取所有的列,排除分组 -export const getColumnList = (columns, options = {}, level = 0) => { +export const getColumnList = ($table, columns, options = {}, level = 0) => { const result = [] columns.forEach((column, index) => { @@ -62,10 +62,16 @@ export const getColumnList = (columns, options = {}, level = 0) => { if (level === 0 && !options.isGroup && hasChildren) { options.isGroup = true } + const isLeaf = !hasChildren + options.columnCaches.push({ + colid: column.id, + column, + index, + isLeaf, + columnIndex: isLeaf ? $table.markColumnIndex++ : null + }) - options.columnCaches.push({ colid: column.id, column, index }) - - result.push.apply(result, hasChildren ? getColumnList(column.children, options, level + 1) : [column]) + result.push.apply(result, hasChildren ? getColumnList($table, column.children, options, level + 1) : [column]) }) return result diff --git a/packages/vue/src/grid/src/table/src/methods.ts b/packages/vue/src/grid/src/table/src/methods.ts index 56522b270e..7e1d5c2ba0 100644 --- a/packages/vue/src/grid/src/table/src/methods.ts +++ b/packages/vue/src/grid/src/table/src/methods.ts @@ -579,7 +579,7 @@ const Methods = { getColumnIndex(column) { const { fullColumnMap } = this - return fullColumnMap.has(column) ? fullColumnMap.get(column).index : -1 + return fullColumnMap.has(column) ? fullColumnMap.get(column).columnIndex : -1 }, hasIndexColumn(column) { return column?.type === 'index' @@ -1001,7 +1001,8 @@ const Methods = { // 获取叶子列数组 const options = { columnCaches: [] } - const fullColumn = getColumnList(value, options) + this.markColumnIndex = 0 + const fullColumn = getColumnList(this, value, options) if (options.isGroup && options.hasFixed) { value.forEach((root) => repairFixed(root)) diff --git a/packages/vue/src/grid/src/table/src/table.ts b/packages/vue/src/grid/src/table/src/table.ts index fc63a5bd32..60238e19a0 100644 --- a/packages/vue/src/grid/src/table/src/table.ts +++ b/packages/vue/src/grid/src/table/src/table.ts @@ -807,6 +807,7 @@ export default defineComponent({ const tableListeners = getListeners(attrs, listeners) + const markColumnIndex = hooks.ref(0) return { slots, tableListeners, @@ -841,7 +842,8 @@ export default defineComponent({ columnStore, tiledLength, rawDataVersion, - rawData + rawData, + markColumnIndex } }, render() {