vxe-table 4.12.5 → 4.13.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/es/grid/src/grid.js +2 -2
  2. package/es/style.css +1 -1
  3. package/es/table/module/edit/hook.js +10 -9
  4. package/es/table/module/export/hook.js +13 -11
  5. package/es/table/src/body.js +11 -13
  6. package/es/table/src/footer.js +3 -16
  7. package/es/table/src/table.js +186 -63
  8. package/es/table/src/util.js +0 -13
  9. package/es/ui/index.js +2 -2
  10. package/es/ui/src/log.js +1 -1
  11. package/lib/grid/src/grid.js +2 -2
  12. package/lib/grid/src/grid.min.js +1 -1
  13. package/lib/index.umd.js +8504 -8547
  14. package/lib/index.umd.min.js +1 -1
  15. package/lib/style.css +1 -1
  16. package/lib/table/module/edit/hook.js +9 -9
  17. package/lib/table/module/edit/hook.min.js +1 -1
  18. package/lib/table/module/export/hook.js +16 -13
  19. package/lib/table/module/export/hook.min.js +1 -1
  20. package/lib/table/src/body.js +14 -15
  21. package/lib/table/src/body.min.js +1 -1
  22. package/lib/table/src/footer.js +4 -27
  23. package/lib/table/src/footer.min.js +1 -1
  24. package/lib/table/src/table.js +211 -63
  25. package/lib/table/src/table.min.js +1 -1
  26. package/lib/table/src/util.js +0 -25
  27. package/lib/table/src/util.min.js +1 -1
  28. package/lib/ui/index.js +2 -2
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/package.json +2 -2
  33. package/packages/grid/src/grid.ts +2 -2
  34. package/packages/table/module/edit/hook.ts +10 -9
  35. package/packages/table/module/export/hook.ts +15 -13
  36. package/packages/table/src/body.ts +11 -13
  37. package/packages/table/src/footer.ts +3 -17
  38. package/packages/table/src/table.ts +184 -64
  39. package/packages/table/src/util.ts +0 -14
  40. package/packages/ui/index.ts +1 -1
  41. /package/es/{iconfont.1743479147314.ttf → iconfont.1743578564396.ttf} +0 -0
  42. /package/es/{iconfont.1743479147314.woff → iconfont.1743578564396.woff} +0 -0
  43. /package/es/{iconfont.1743479147314.woff2 → iconfont.1743578564396.woff2} +0 -0
  44. /package/lib/{iconfont.1743479147314.ttf → iconfont.1743578564396.ttf} +0 -0
  45. /package/lib/{iconfont.1743479147314.woff → iconfont.1743578564396.woff} +0 -0
  46. /package/lib/{iconfont.1743479147314.woff2 → iconfont.1743578564396.woff2} +0 -0
@@ -94,10 +94,6 @@ export default defineComponent({
94
94
  // 树节点列信息
95
95
  treeNodeColumn: null,
96
96
  hasFixedColumn: false,
97
- // 合并单元格的对象集
98
- mergeList: [],
99
- // 合并表尾数据的对象集
100
- mergeFooterList: [],
101
97
  // 刷新列标识,当列筛选被改变时,触发表格刷新数据
102
98
  upDataFlag: 0,
103
99
  // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
@@ -251,6 +247,8 @@ export default defineComponent({
251
247
  pendingRowFlag: 1,
252
248
  insertRowFlag: 1,
253
249
  removeRowFlag: 1,
250
+ mergeBodyFlag: 1,
251
+ mergeFootFlag: 1,
254
252
 
255
253
  rowHeightStore: {
256
254
  default: 48,
@@ -350,14 +348,27 @@ export default defineComponent({
350
348
  tableFullColumn: [],
351
349
  // 渲染所有列
352
350
  visibleColumn: [],
353
- // 总的缓存数据集
351
+ // 全量数据集(包括当前和已删除)
354
352
  fullAllDataRowIdData: {},
353
+ // 数据集(仅当前)
354
+ fullDataRowIdData: {},
355
+ // 数据集(仅可视)
356
+ visibleDataRowIdData: {},
355
357
  // 渲染中缓存数据
356
358
  sourceDataRowIdData: {},
357
- fullDataRowIdData: {},
358
359
  fullColumnIdData: {},
359
360
  fullColumnFieldData: {},
360
361
 
362
+ // 合并单元格的数据
363
+ mergeBodyList: [],
364
+ mergeBodyMaps: {},
365
+ // 合并表尾的数据
366
+ mergeFooterList: [],
367
+ mergeFooterMaps: {},
368
+ // 已合并单元格数据集合
369
+ mergeBodyCellMaps: {},
370
+ // 已合并表尾数据集合
371
+ mergeFooterCellMaps: {},
361
372
  // 已展开的行集合
362
373
  rowExpandedMaps: {},
363
374
  // 懒加载中的展开行的集合
@@ -729,17 +740,18 @@ export default defineComponent({
729
740
  })
730
741
 
731
742
  const computeTableRowExpandedList = computed(() => {
732
- const { rowExpandedFlag, tableData, expandColumn } = reactData
733
- const { rowExpandedMaps } = internalData
734
- const { handleGetRowId } = createHandleGetRowId($xeTable)
743
+ const { treeConfig } = props
744
+ const { rowExpandedFlag, expandColumn } = reactData
745
+ const { visibleDataRowIdData, rowExpandedMaps } = internalData
746
+ const treeOpts = computeTreeOpts.value
747
+ const { transform } = treeOpts
735
748
  const expandList: any[] = []
736
749
  if (expandColumn && rowExpandedFlag) {
737
- const rowKeys: Record<string, boolean> = {}
738
- tableData.forEach(row => {
739
- rowKeys[handleGetRowId(row)] = true
740
- })
750
+ if (treeConfig && !transform) {
751
+ return XEUtils.values(rowExpandedMaps)
752
+ }
741
753
  XEUtils.each(rowExpandedMaps, (row, rowid) => {
742
- if (rowKeys[rowid]) {
754
+ if (visibleDataRowIdData[rowid]) {
743
755
  expandList.push(row)
744
756
  }
745
757
  })
@@ -1129,48 +1141,130 @@ export default defineComponent({
1129
1141
  }
1130
1142
  }
1131
1143
 
1132
- const setMerges = (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[], mList: VxeTableDefines.MergeItem[], rowList?: any[]) => {
1144
+ function buildMergeData (mergeConfigs: VxeTableDefines.MergeItem[]) {
1145
+ const mergeMaps: Record<string, VxeTableDefines.MergeCacheItem> = {}
1146
+ if (mergeConfigs && mergeConfigs.length) {
1147
+ for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
1148
+ const { row: _rowIndex, col: _columnIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeConfigs[mIndex]
1149
+ for (let i = 0; i < mergeRowspan; i++) {
1150
+ for (let j = 0; j < mergeColspan; j++) {
1151
+ mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j
1152
+ ? {
1153
+ rowspan: mergeRowspan,
1154
+ colspan: mergeColspan
1155
+ }
1156
+ : {
1157
+ rowspan: 0,
1158
+ colspan: 0
1159
+ }
1160
+ }
1161
+ }
1162
+ }
1163
+ }
1164
+ return mergeMaps
1165
+ }
1166
+
1167
+ const handleBodyMerge = (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) => {
1168
+ const { fullAllDataRowIdData, fullColumnIdData, visibleColumn, afterFullData, mergeBodyList, mergeBodyMaps } = internalData
1133
1169
  if (merges) {
1134
- // const { treeConfig } = props
1135
- const { visibleColumn } = internalData
1170
+ const { handleGetRowId } = createHandleGetRowId($xeTable)
1136
1171
  if (!XEUtils.isArray(merges)) {
1137
1172
  merges = [merges]
1138
1173
  }
1139
- // if (treeConfig && merges.length) {
1140
- // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1141
- // }
1142
1174
  merges.forEach((item) => {
1143
- let { row, col, rowspan, colspan } = item
1144
- if (rowList && XEUtils.isNumber(row)) {
1145
- row = rowList[row]
1175
+ let { row: margeRow, col: margeCol, rowspan, colspan } = item
1176
+ let mergeRowIndex = -1
1177
+ let mergeColumnIndex = -1
1178
+ if (XEUtils.isNumber(margeRow)) {
1179
+ mergeRowIndex = margeRow
1180
+ } else {
1181
+ const rowid = margeRow ? handleGetRowId(margeRow) : null
1182
+ const rowRest = rowid ? fullAllDataRowIdData[rowid] : null
1183
+ if (rowRest) {
1184
+ mergeRowIndex = rowRest._index
1185
+ }
1146
1186
  }
1147
- if (XEUtils.isNumber(col)) {
1148
- col = visibleColumn[col]
1187
+ if (XEUtils.isNumber(margeCol)) {
1188
+ mergeColumnIndex = margeCol
1189
+ } else {
1190
+ const colid = margeCol ? margeCol.id : null
1191
+ const colRest = colid ? fullColumnIdData[colid] : null
1192
+ if (colRest) {
1193
+ mergeColumnIndex = colRest._index
1194
+ }
1149
1195
  }
1150
- if ((rowList ? row : XEUtils.isNumber(row)) && col && (rowspan || colspan)) {
1196
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1151
1197
  rowspan = XEUtils.toNumber(rowspan) || 1
1152
1198
  colspan = XEUtils.toNumber(colspan) || 1
1153
1199
  if (rowspan > 1 || colspan > 1) {
1154
- const mcIndex = XEUtils.findIndexOf(mList, item => (item._row === row || getRowid($xeTable, item._row) === getRowid($xeTable, row)) && ((item as any)._col.id === col || item._col.id === (col as VxeTableDefines.ColumnInfo).id))
1155
- const mergeItem = mList[mcIndex]
1200
+ const row = afterFullData[mergeRowIndex]
1201
+ const column = visibleColumn[mergeColumnIndex]
1202
+ let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
1156
1203
  if (mergeItem) {
1157
1204
  mergeItem.rowspan = rowspan
1158
1205
  mergeItem.colspan = colspan
1159
1206
  mergeItem._rowspan = rowspan
1160
1207
  mergeItem._colspan = colspan
1161
1208
  } else {
1162
- const mergeRowIndex = rowList ? $xeTable.findRowIndexOf(rowList, row) : row
1163
- const mergeColIndex = tableMethods.getVTColumnIndex(col)
1164
- mList.push({
1209
+ mergeItem = {
1165
1210
  row: mergeRowIndex,
1166
- col: mergeColIndex,
1211
+ col: mergeColumnIndex,
1167
1212
  rowspan,
1168
1213
  colspan,
1169
1214
  _row: row,
1170
- _col: col,
1215
+ _col: column,
1171
1216
  _rowspan: rowspan,
1172
1217
  _colspan: colspan
1173
- })
1218
+ }
1219
+ mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem
1220
+ mergeBodyList.push(mergeItem)
1221
+ }
1222
+ }
1223
+ }
1224
+ })
1225
+ }
1226
+ }
1227
+
1228
+ const handleFooterMerge = (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) => {
1229
+ const { footerTableData } = reactData
1230
+ const { mergeFooterList, mergeFooterMaps } = internalData
1231
+ if (merges) {
1232
+ const { visibleColumn } = internalData
1233
+ if (!XEUtils.isArray(merges)) {
1234
+ merges = [merges]
1235
+ }
1236
+ merges.forEach((item) => {
1237
+ let { row: margeRow, col: margeCol, rowspan, colspan } = item
1238
+ const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1
1239
+ let mergeColumnIndex = -1
1240
+ if (XEUtils.isNumber(margeCol)) {
1241
+ mergeColumnIndex = margeCol
1242
+ }
1243
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1244
+ rowspan = XEUtils.toNumber(rowspan) || 1
1245
+ colspan = XEUtils.toNumber(colspan) || 1
1246
+ if (rowspan > 1 || colspan > 1) {
1247
+ const row = footerTableData[mergeRowIndex]
1248
+ const column = visibleColumn[mergeColumnIndex]
1249
+ let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
1250
+ if (mergeItem) {
1251
+ mergeItem.rowspan = rowspan
1252
+ mergeItem.colspan = colspan
1253
+ mergeItem._rowspan = rowspan
1254
+ mergeItem._colspan = colspan
1255
+ } else {
1256
+ mergeItem = {
1257
+ row: mergeRowIndex,
1258
+ col: mergeColumnIndex,
1259
+ rowspan,
1260
+ colspan,
1261
+ _row: row,
1262
+ _col: column,
1263
+ _rowspan: rowspan,
1264
+ _colspan: colspan
1265
+ }
1266
+ mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem
1267
+ mergeFooterList.push(mergeItem)
1174
1268
  }
1175
1269
  }
1176
1270
  }
@@ -2803,7 +2897,7 @@ export default defineComponent({
2803
2897
  internalData.tableFullData = fullData
2804
2898
  internalData.tableFullTreeData = treeData
2805
2899
  // 缓存数据
2806
- $xeTable.cacheRowMap(true)
2900
+ $xeTable.cacheRowMap(isReset)
2807
2901
  // 原始数据
2808
2902
  internalData.tableSynchData = datas
2809
2903
  if (isReset) {
@@ -2821,6 +2915,7 @@ export default defineComponent({
2821
2915
  $xeTable.clearMergeFooterItems()
2822
2916
  $xeTable.handleTableData(true)
2823
2917
  $xeTable.updateFooter()
2918
+ $xeTable.handleUpdateBodyMerge()
2824
2919
  return nextTick().then(() => {
2825
2920
  updateHeight()
2826
2921
  updateStyle()
@@ -2940,8 +3035,8 @@ export default defineComponent({
2940
3035
  }
2941
3036
 
2942
3037
  const loadScrollXData = () => {
2943
- const { mergeList, mergeFooterList, isScrollXBig } = reactData
2944
- const { scrollXStore } = internalData
3038
+ const { isScrollXBig } = reactData
3039
+ const { mergeBodyList, mergeFooterList, scrollXStore } = internalData
2945
3040
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollXStore
2946
3041
  const { toVisibleIndex, visibleSize } = handleVirtualXVisible()
2947
3042
  const offsetItem = {
@@ -2950,7 +3045,7 @@ export default defineComponent({
2950
3045
  }
2951
3046
  scrollXStore.visibleStartIndex = toVisibleIndex - 1
2952
3047
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1
2953
- calculateMergerOffsetIndex(mergeList.concat(mergeFooterList), offsetItem, 'col')
3048
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col')
2954
3049
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem
2955
3050
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
2956
3051
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -3263,8 +3358,8 @@ export default defineComponent({
3263
3358
  * 纵向 Y 可视渲染处理
3264
3359
  */
3265
3360
  const loadScrollYData = () => {
3266
- const { mergeList, isAllOverflow, isScrollYBig } = reactData
3267
- const { scrollYStore } = internalData
3361
+ const { isAllOverflow, isScrollYBig } = reactData
3362
+ const { mergeBodyList, scrollYStore } = internalData
3268
3363
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollYStore
3269
3364
  const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1
3270
3365
  const { toVisibleIndex, visibleSize } = handleVirtualYVisible()
@@ -3274,7 +3369,7 @@ export default defineComponent({
3274
3369
  }
3275
3370
  scrollYStore.visibleStartIndex = toVisibleIndex - 1
3276
3371
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1
3277
- calculateMergerOffsetIndex(mergeList, offsetItem, 'row')
3372
+ calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row')
3278
3373
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem
3279
3374
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
3280
3375
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -3582,7 +3677,7 @@ export default defineComponent({
3582
3677
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
3583
3678
  */
3584
3679
  syncData () {
3585
- warnLog('vxe.error.delFunc', ['syncData', 'getData'])
3680
+ errLog('vxe.error.delFunc', ['syncData', 'getData'])
3586
3681
  return nextTick().then(() => {
3587
3682
  reactData.tableData = []
3588
3683
  emit('update:data', internalData.tableFullData)
@@ -5837,6 +5932,7 @@ export default defineComponent({
5837
5932
  footData = visibleColumn.length ? footerMethod({ columns: visibleColumn, data: afterFullData, $table: $xeTable, $grid: $xeGrid }) : []
5838
5933
  }
5839
5934
  reactData.footerTableData = footData
5935
+ $xeTable.handleUpdateFooterMerge()
5840
5936
  return nextTick()
5841
5937
  },
5842
5938
  /**
@@ -5860,9 +5956,10 @@ export default defineComponent({
5860
5956
  if (props.spanMethod) {
5861
5957
  errLog('vxe.error.errConflicts', ['merge-cells', 'span-method'])
5862
5958
  }
5863
- setMerges(merges, reactData.mergeList, internalData.afterFullData)
5959
+ handleBodyMerge(merges)
5960
+ $xeTable.handleUpdateBodyMerge()
5864
5961
  return nextTick().then(() => {
5865
- tableMethods.updateCellAreas()
5962
+ $xeTable.updateCellAreas()
5866
5963
  return updateStyle()
5867
5964
  })
5868
5965
  },
@@ -5874,9 +5971,9 @@ export default defineComponent({
5874
5971
  if (props.spanMethod) {
5875
5972
  errLog('vxe.error.errConflicts', ['merge-cells', 'span-method'])
5876
5973
  }
5877
- const rest = removeMerges(merges, reactData.mergeList, internalData.afterFullData)
5974
+ const rest = removeMerges(merges, internalData.mergeBodyList, internalData.afterFullData)
5878
5975
  return nextTick().then(() => {
5879
- tableMethods.updateCellAreas()
5976
+ $xeTable.updateCellAreas()
5880
5977
  updateStyle()
5881
5978
  return rest
5882
5979
  })
@@ -5885,13 +5982,15 @@ export default defineComponent({
5885
5982
  * 获取所有被合并的单元格
5886
5983
  */
5887
5984
  getMergeCells () {
5888
- return reactData.mergeList.slice(0)
5985
+ return internalData.mergeBodyList.slice(0)
5889
5986
  },
5890
5987
  /**
5891
5988
  * 清除所有单元格合并
5892
5989
  */
5893
5990
  clearMergeCells () {
5894
- reactData.mergeList = []
5991
+ internalData.mergeBodyList = []
5992
+ internalData.mergeBodyMaps = {}
5993
+ internalData.mergeBodyCellMaps = {}
5895
5994
  return nextTick().then(() => {
5896
5995
  return updateStyle()
5897
5996
  })
@@ -5900,7 +5999,8 @@ export default defineComponent({
5900
5999
  if (props.footerSpanMethod) {
5901
6000
  errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method'])
5902
6001
  }
5903
- setMerges(merges, reactData.mergeFooterList)
6002
+ handleFooterMerge(merges)
6003
+ $xeTable.handleUpdateFooterMerge()
5904
6004
  return nextTick().then(() => {
5905
6005
  tableMethods.updateCellAreas()
5906
6006
  return updateStyle()
@@ -5910,7 +6010,7 @@ export default defineComponent({
5910
6010
  if (props.footerSpanMethod) {
5911
6011
  errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method'])
5912
6012
  }
5913
- const rest = removeMerges(merges, reactData.mergeFooterList)
6013
+ const rest = removeMerges(merges, internalData.mergeFooterList)
5914
6014
  return nextTick().then(() => {
5915
6015
  tableMethods.updateCellAreas()
5916
6016
  updateStyle()
@@ -5921,13 +6021,15 @@ export default defineComponent({
5921
6021
  * 获取所有被合并的表尾
5922
6022
  */
5923
6023
  getMergeFooterItems () {
5924
- return reactData.mergeFooterList.slice(0)
6024
+ return internalData.mergeFooterList.slice(0)
5925
6025
  },
5926
6026
  /**
5927
6027
  * 清除所有表尾合并
5928
6028
  */
5929
6029
  clearMergeFooterItems () {
5930
- reactData.mergeFooterList = []
6030
+ internalData.mergeFooterList = []
6031
+ internalData.mergeFooterMaps = {}
6032
+ internalData.mergeFooterCellMaps = {}
5931
6033
  return nextTick().then(() => {
5932
6034
  return updateStyle()
5933
6035
  })
@@ -6946,27 +7048,30 @@ export default defineComponent({
6946
7048
  fullList = handleVirtualTreeToList()
6947
7049
  }
6948
7050
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0)
7051
+ const visibleDataRowIdMaps: Record<string, any> = {}
6949
7052
  tableData.forEach((row, $index) => {
6950
7053
  const rowid = getRowid($xeTable, row)
6951
7054
  const rest = fullDataRowIdData[rowid]
6952
7055
  if (rest) {
6953
7056
  rest.$index = $index
6954
7057
  }
7058
+ visibleDataRowIdMaps[rowid] = row
6955
7059
  })
6956
7060
  reactData.tableData = tableData
7061
+ internalData.visibleDataRowIdData = visibleDataRowIdMaps
6957
7062
  return nextTick()
6958
7063
  },
6959
7064
  /**
6960
7065
  * 更新数据行的 Map
6961
7066
  */
6962
- cacheRowMap () {
7067
+ cacheRowMap (isReset) {
6963
7068
  const { treeConfig } = props
6964
7069
  const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData
6965
7070
  const treeOpts = computeTreeOpts.value
6966
7071
  const childrenField = treeOpts.children || treeOpts.childrenField
6967
7072
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
6968
7073
  const { lazy } = treeOpts
6969
- const fullAllDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = { ...fullAllDataRowIdData } // 存在已删除数据
7074
+ const fullAllDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = isReset ? {} : { ...fullAllDataRowIdData } // 存在已删除数据
6970
7075
  const fullDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = {}
6971
7076
 
6972
7077
  const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
@@ -7741,6 +7846,19 @@ export default defineComponent({
7741
7846
  handleSelectRow ({ row }, checked, isForce) {
7742
7847
  $xeTable.handleBatchSelectRows([row], checked, isForce)
7743
7848
  },
7849
+ /**
7850
+ * 处理合并
7851
+ */
7852
+ handleUpdateBodyMerge () {
7853
+ const { mergeBodyList } = internalData
7854
+ internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList)
7855
+ reactData.mergeBodyFlag++
7856
+ },
7857
+ handleUpdateFooterMerge () {
7858
+ const { mergeFooterList } = internalData
7859
+ internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList)
7860
+ reactData.mergeFootFlag++
7861
+ },
7744
7862
  triggerHeaderTitleEvent (evnt, iconParams, params) {
7745
7863
  const tipContent = iconParams.content || (iconParams as any).message
7746
7864
  if (tipContent) {
@@ -9799,7 +9917,6 @@ export default defineComponent({
9799
9917
  ref: refRowExpandYSpaceElem
9800
9918
  })
9801
9919
  ]
9802
-
9803
9920
  if (expandColumn) {
9804
9921
  const { handleGetRowId } = createHandleGetRowId($xeTable)
9805
9922
  tableRowExpandedList.forEach((row) => {
@@ -9810,20 +9927,22 @@ export default defineComponent({
9810
9927
  const { transform, seqMode } = treeOpts
9811
9928
  const cellStyle: Record<string, string> = {}
9812
9929
  const rowid = handleGetRowId(row)
9813
- const rest = fullAllDataRowIdData[rowid]
9930
+ const rowRest = fullAllDataRowIdData[rowid]
9814
9931
  let rowLevel = 0
9815
9932
  let seq: string | number = -1
9816
- let _rowIndex = 0
9817
- const rowIndex = $xeTable.getRowIndex(row)
9818
- const $rowIndex = $xeTable.getVMRowIndex(row)
9819
- if (rest) {
9820
- rowLevel = rest.level
9933
+ let _rowIndex = -1
9934
+ let rowIndex = -1
9935
+ let $rowIndex = -1
9936
+ if (rowRest) {
9937
+ rowLevel = rowRest.level
9821
9938
  if (treeConfig && transform && seqMode === 'increasing') {
9822
- seq = rest._index + 1
9939
+ seq = rowRest._index + 1
9823
9940
  } else {
9824
- seq = rest.seq
9941
+ seq = rowRest.seq
9825
9942
  }
9826
- _rowIndex = rest._index
9943
+ rowIndex = rowRest.index
9944
+ $rowIndex = rowRest.$index
9945
+ _rowIndex = rowRest._index
9827
9946
  }
9828
9947
  if (expandHeight) {
9829
9948
  cellStyle.height = `${expandHeight}px`
@@ -10445,6 +10564,7 @@ export default defineComponent({
10445
10564
  initTpImg()
10446
10565
  }
10447
10566
 
10567
+ ;(window as any).aa = $xeTable
10448
10568
  nextTick(() => {
10449
10569
  const { data, exportConfig, importConfig, treeConfig, showOverflow, highlightCurrentRow, highlightCurrentColumn } = props
10450
10570
  const { scrollXStore, scrollYStore } = internalData
@@ -468,20 +468,6 @@ export function calcTreeLine (params: VxeTableDefines.CellRenderBodyParams, prev
468
468
  return cellHeight * expandSize - (prevRow ? 1 : (12 - getOffsetSize($table)))
469
469
  }
470
470
 
471
- export function mergeBodyMethod (mergeList: VxeTableDefines.MergeItem[], _rowIndex: number, _columnIndex: number) {
472
- for (let mIndex = 0; mIndex < mergeList.length; mIndex++) {
473
- const { row: mergeRowIndex, col: mergeColIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeList[mIndex]
474
- if (mergeColIndex > -1 && mergeRowIndex > -1 && mergeRowspan && mergeColspan) {
475
- if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
476
- return { rowspan: mergeRowspan, colspan: mergeColspan }
477
- }
478
- if (_rowIndex >= mergeRowIndex && _rowIndex < mergeRowIndex + mergeRowspan && _columnIndex >= mergeColIndex && _columnIndex < mergeColIndex + mergeColspan) {
479
- return { rowspan: 0, colspan: 0 }
480
- }
481
- }
482
- }
483
- }
484
-
485
471
  export function clearTableDefaultStatus ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
486
472
  const { props, internalData } = $xeTable
487
473
  internalData.initStatus = false
@@ -198,7 +198,7 @@ VxeUI.setConfig({
198
198
  },
199
199
  virtualXConfig: {
200
200
  enabled: true,
201
- gt: 60,
201
+ gt: 28,
202
202
  preSize: 1,
203
203
  oSize: 0
204
204
  },