From 5ccff4e2205ee669ec4c2c2cd3f6bffce5c11c54 Mon Sep 17 00:00:00 2001 From: cenguanming <975402925@qq.com> Date: Tue, 9 Dec 2025 11:33:14 +0800 Subject: [PATCH 1/2] fix(grid): fix columnIndex error --- packages/vue/src/grid/src/table/src/methods.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/vue/src/grid/src/table/src/methods.ts b/packages/vue/src/grid/src/table/src/methods.ts index 56522b270e..badeefa15d 100644 --- a/packages/vue/src/grid/src/table/src/methods.ts +++ b/packages/vue/src/grid/src/table/src/methods.ts @@ -577,9 +577,8 @@ const Methods = { return fullDataRowMap.has(row) ? fullDataRowMap.get(row).index : -1 }, getColumnIndex(column) { - const { fullColumnMap } = this - - return fullColumnMap.has(column) ? fullColumnMap.get(column).index : -1 + const fullColumn = this.getTableColumn()?.fullColumn + return fullColumn ? fullColumn.indexOf(column) : -1 }, hasIndexColumn(column) { return column?.type === 'index' From 083189e22b95d871c02677d6238a79c2db541cb0 Mon Sep 17 00:00:00 2001 From: cenguanming <975402925@qq.com> Date: Tue, 9 Dec 2025 23:02:51 +0800 Subject: [PATCH 2/2] fix(grid): fix columnIndex error --- packages/renderless/src/grid/utils/common.ts | 14 ++++++++++---- packages/vue/src/grid/src/table/src/methods.ts | 8 +++++--- packages/vue/src/grid/src/table/src/table.ts | 4 +++- 3 files changed, 18 insertions(+), 8 deletions(-) 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 badeefa15d..7e1d5c2ba0 100644 --- a/packages/vue/src/grid/src/table/src/methods.ts +++ b/packages/vue/src/grid/src/table/src/methods.ts @@ -577,8 +577,9 @@ const Methods = { return fullDataRowMap.has(row) ? fullDataRowMap.get(row).index : -1 }, getColumnIndex(column) { - const fullColumn = this.getTableColumn()?.fullColumn - return fullColumn ? fullColumn.indexOf(column) : -1 + const { fullColumnMap } = this + + return fullColumnMap.has(column) ? fullColumnMap.get(column).columnIndex : -1 }, hasIndexColumn(column) { return column?.type === 'index' @@ -1000,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() {