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
@@ -82,10 +82,6 @@ export default defineComponent({
82
82
  // 树节点列信息
83
83
  treeNodeColumn: null,
84
84
  hasFixedColumn: false,
85
- // 合并单元格的对象集
86
- mergeList: [],
87
- // 合并表尾数据的对象集
88
- mergeFooterList: [],
89
85
  // 刷新列标识,当列筛选被改变时,触发表格刷新数据
90
86
  upDataFlag: 0,
91
87
  // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
@@ -238,6 +234,8 @@ export default defineComponent({
238
234
  pendingRowFlag: 1,
239
235
  insertRowFlag: 1,
240
236
  removeRowFlag: 1,
237
+ mergeBodyFlag: 1,
238
+ mergeFootFlag: 1,
241
239
  rowHeightStore: {
242
240
  default: 48,
243
241
  medium: 44,
@@ -330,13 +328,26 @@ export default defineComponent({
330
328
  tableFullColumn: [],
331
329
  // 渲染所有列
332
330
  visibleColumn: [],
333
- // 总的缓存数据集
331
+ // 全量数据集(包括当前和已删除)
334
332
  fullAllDataRowIdData: {},
333
+ // 数据集(仅当前)
334
+ fullDataRowIdData: {},
335
+ // 数据集(仅可视)
336
+ visibleDataRowIdData: {},
335
337
  // 渲染中缓存数据
336
338
  sourceDataRowIdData: {},
337
- fullDataRowIdData: {},
338
339
  fullColumnIdData: {},
339
340
  fullColumnFieldData: {},
341
+ // 合并单元格的数据
342
+ mergeBodyList: [],
343
+ mergeBodyMaps: {},
344
+ // 合并表尾的数据
345
+ mergeFooterList: [],
346
+ mergeFooterMaps: {},
347
+ // 已合并单元格数据集合
348
+ mergeBodyCellMaps: {},
349
+ // 已合并表尾数据集合
350
+ mergeFooterCellMaps: {},
340
351
  // 已展开的行集合
341
352
  rowExpandedMaps: {},
342
353
  // 懒加载中的展开行的集合
@@ -643,17 +654,18 @@ export default defineComponent({
643
654
  return Object.assign({}, getConfig().table.customConfig, props.customConfig);
644
655
  });
645
656
  const computeTableRowExpandedList = computed(() => {
646
- const { rowExpandedFlag, tableData, expandColumn } = reactData;
647
- const { rowExpandedMaps } = internalData;
648
- const { handleGetRowId } = createHandleGetRowId($xeTable);
657
+ const { treeConfig } = props;
658
+ const { rowExpandedFlag, expandColumn } = reactData;
659
+ const { visibleDataRowIdData, rowExpandedMaps } = internalData;
660
+ const treeOpts = computeTreeOpts.value;
661
+ const { transform } = treeOpts;
649
662
  const expandList = [];
650
663
  if (expandColumn && rowExpandedFlag) {
651
- const rowKeys = {};
652
- tableData.forEach(row => {
653
- rowKeys[handleGetRowId(row)] = true;
654
- });
664
+ if (treeConfig && !transform) {
665
+ return XEUtils.values(rowExpandedMaps);
666
+ }
655
667
  XEUtils.each(rowExpandedMaps, (row, rowid) => {
656
- if (rowKeys[rowid]) {
668
+ if (visibleDataRowIdData[rowid]) {
657
669
  expandList.push(row);
658
670
  }
659
671
  });
@@ -1024,30 +1036,66 @@ export default defineComponent({
1024
1036
  }
1025
1037
  }
1026
1038
  };
1027
- const setMerges = (merges, mList, rowList) => {
1039
+ function buildMergeData(mergeConfigs) {
1040
+ const mergeMaps = {};
1041
+ if (mergeConfigs && mergeConfigs.length) {
1042
+ for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
1043
+ const { row: _rowIndex, col: _columnIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeConfigs[mIndex];
1044
+ for (let i = 0; i < mergeRowspan; i++) {
1045
+ for (let j = 0; j < mergeColspan; j++) {
1046
+ mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j
1047
+ ? {
1048
+ rowspan: mergeRowspan,
1049
+ colspan: mergeColspan
1050
+ }
1051
+ : {
1052
+ rowspan: 0,
1053
+ colspan: 0
1054
+ };
1055
+ }
1056
+ }
1057
+ }
1058
+ }
1059
+ return mergeMaps;
1060
+ }
1061
+ const handleBodyMerge = (merges) => {
1062
+ const { fullAllDataRowIdData, fullColumnIdData, visibleColumn, afterFullData, mergeBodyList, mergeBodyMaps } = internalData;
1028
1063
  if (merges) {
1029
- // const { treeConfig } = props
1030
- const { visibleColumn } = internalData;
1064
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
1031
1065
  if (!XEUtils.isArray(merges)) {
1032
1066
  merges = [merges];
1033
1067
  }
1034
- // if (treeConfig && merges.length) {
1035
- // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1036
- // }
1037
1068
  merges.forEach((item) => {
1038
- let { row, col, rowspan, colspan } = item;
1039
- if (rowList && XEUtils.isNumber(row)) {
1040
- row = rowList[row];
1069
+ let { row: margeRow, col: margeCol, rowspan, colspan } = item;
1070
+ let mergeRowIndex = -1;
1071
+ let mergeColumnIndex = -1;
1072
+ if (XEUtils.isNumber(margeRow)) {
1073
+ mergeRowIndex = margeRow;
1041
1074
  }
1042
- if (XEUtils.isNumber(col)) {
1043
- col = visibleColumn[col];
1075
+ else {
1076
+ const rowid = margeRow ? handleGetRowId(margeRow) : null;
1077
+ const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
1078
+ if (rowRest) {
1079
+ mergeRowIndex = rowRest._index;
1080
+ }
1081
+ }
1082
+ if (XEUtils.isNumber(margeCol)) {
1083
+ mergeColumnIndex = margeCol;
1084
+ }
1085
+ else {
1086
+ const colid = margeCol ? margeCol.id : null;
1087
+ const colRest = colid ? fullColumnIdData[colid] : null;
1088
+ if (colRest) {
1089
+ mergeColumnIndex = colRest._index;
1090
+ }
1044
1091
  }
1045
- if ((rowList ? row : XEUtils.isNumber(row)) && col && (rowspan || colspan)) {
1092
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1046
1093
  rowspan = XEUtils.toNumber(rowspan) || 1;
1047
1094
  colspan = XEUtils.toNumber(colspan) || 1;
1048
1095
  if (rowspan > 1 || colspan > 1) {
1049
- const mcIndex = XEUtils.findIndexOf(mList, item => (item._row === row || getRowid($xeTable, item._row) === getRowid($xeTable, row)) && (item._col.id === col || item._col.id === col.id));
1050
- const mergeItem = mList[mcIndex];
1096
+ const row = afterFullData[mergeRowIndex];
1097
+ const column = visibleColumn[mergeColumnIndex];
1098
+ let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
1051
1099
  if (mergeItem) {
1052
1100
  mergeItem.rowspan = rowspan;
1053
1101
  mergeItem.colspan = colspan;
@@ -1055,18 +1103,65 @@ export default defineComponent({
1055
1103
  mergeItem._colspan = colspan;
1056
1104
  }
1057
1105
  else {
1058
- const mergeRowIndex = rowList ? $xeTable.findRowIndexOf(rowList, row) : row;
1059
- const mergeColIndex = tableMethods.getVTColumnIndex(col);
1060
- mList.push({
1106
+ mergeItem = {
1061
1107
  row: mergeRowIndex,
1062
- col: mergeColIndex,
1108
+ col: mergeColumnIndex,
1063
1109
  rowspan,
1064
1110
  colspan,
1065
1111
  _row: row,
1066
- _col: col,
1112
+ _col: column,
1067
1113
  _rowspan: rowspan,
1068
1114
  _colspan: colspan
1069
- });
1115
+ };
1116
+ mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
1117
+ mergeBodyList.push(mergeItem);
1118
+ }
1119
+ }
1120
+ }
1121
+ });
1122
+ }
1123
+ };
1124
+ const handleFooterMerge = (merges) => {
1125
+ const { footerTableData } = reactData;
1126
+ const { mergeFooterList, mergeFooterMaps } = internalData;
1127
+ if (merges) {
1128
+ const { visibleColumn } = internalData;
1129
+ if (!XEUtils.isArray(merges)) {
1130
+ merges = [merges];
1131
+ }
1132
+ merges.forEach((item) => {
1133
+ let { row: margeRow, col: margeCol, rowspan, colspan } = item;
1134
+ const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1;
1135
+ let mergeColumnIndex = -1;
1136
+ if (XEUtils.isNumber(margeCol)) {
1137
+ mergeColumnIndex = margeCol;
1138
+ }
1139
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1140
+ rowspan = XEUtils.toNumber(rowspan) || 1;
1141
+ colspan = XEUtils.toNumber(colspan) || 1;
1142
+ if (rowspan > 1 || colspan > 1) {
1143
+ const row = footerTableData[mergeRowIndex];
1144
+ const column = visibleColumn[mergeColumnIndex];
1145
+ let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
1146
+ if (mergeItem) {
1147
+ mergeItem.rowspan = rowspan;
1148
+ mergeItem.colspan = colspan;
1149
+ mergeItem._rowspan = rowspan;
1150
+ mergeItem._colspan = colspan;
1151
+ }
1152
+ else {
1153
+ mergeItem = {
1154
+ row: mergeRowIndex,
1155
+ col: mergeColumnIndex,
1156
+ rowspan,
1157
+ colspan,
1158
+ _row: row,
1159
+ _col: column,
1160
+ _rowspan: rowspan,
1161
+ _colspan: colspan
1162
+ };
1163
+ mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
1164
+ mergeFooterList.push(mergeItem);
1070
1165
  }
1071
1166
  }
1072
1167
  }
@@ -2668,7 +2763,7 @@ export default defineComponent({
2668
2763
  internalData.tableFullData = fullData;
2669
2764
  internalData.tableFullTreeData = treeData;
2670
2765
  // 缓存数据
2671
- $xeTable.cacheRowMap(true);
2766
+ $xeTable.cacheRowMap(isReset);
2672
2767
  // 原始数据
2673
2768
  internalData.tableSynchData = datas;
2674
2769
  if (isReset) {
@@ -2686,6 +2781,7 @@ export default defineComponent({
2686
2781
  $xeTable.clearMergeFooterItems();
2687
2782
  $xeTable.handleTableData(true);
2688
2783
  $xeTable.updateFooter();
2784
+ $xeTable.handleUpdateBodyMerge();
2689
2785
  return nextTick().then(() => {
2690
2786
  updateHeight();
2691
2787
  updateStyle();
@@ -2798,8 +2894,8 @@ export default defineComponent({
2798
2894
  cacheColumnMap();
2799
2895
  };
2800
2896
  const loadScrollXData = () => {
2801
- const { mergeList, mergeFooterList, isScrollXBig } = reactData;
2802
- const { scrollXStore } = internalData;
2897
+ const { isScrollXBig } = reactData;
2898
+ const { mergeBodyList, mergeFooterList, scrollXStore } = internalData;
2803
2899
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollXStore;
2804
2900
  const { toVisibleIndex, visibleSize } = handleVirtualXVisible();
2805
2901
  const offsetItem = {
@@ -2808,7 +2904,7 @@ export default defineComponent({
2808
2904
  };
2809
2905
  scrollXStore.visibleStartIndex = toVisibleIndex - 1;
2810
2906
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
2811
- calculateMergerOffsetIndex(mergeList.concat(mergeFooterList), offsetItem, 'col');
2907
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
2812
2908
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
2813
2909
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
2814
2910
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -3118,8 +3214,8 @@ export default defineComponent({
3118
3214
  * 纵向 Y 可视渲染处理
3119
3215
  */
3120
3216
  const loadScrollYData = () => {
3121
- const { mergeList, isAllOverflow, isScrollYBig } = reactData;
3122
- const { scrollYStore } = internalData;
3217
+ const { isAllOverflow, isScrollYBig } = reactData;
3218
+ const { mergeBodyList, scrollYStore } = internalData;
3123
3219
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollYStore;
3124
3220
  const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1;
3125
3221
  const { toVisibleIndex, visibleSize } = handleVirtualYVisible();
@@ -3129,7 +3225,7 @@ export default defineComponent({
3129
3225
  };
3130
3226
  scrollYStore.visibleStartIndex = toVisibleIndex - 1;
3131
3227
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3132
- calculateMergerOffsetIndex(mergeList, offsetItem, 'row');
3228
+ calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
3133
3229
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
3134
3230
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
3135
3231
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -3424,7 +3520,7 @@ export default defineComponent({
3424
3520
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
3425
3521
  */
3426
3522
  syncData() {
3427
- warnLog('vxe.error.delFunc', ['syncData', 'getData']);
3523
+ errLog('vxe.error.delFunc', ['syncData', 'getData']);
3428
3524
  return nextTick().then(() => {
3429
3525
  reactData.tableData = [];
3430
3526
  emit('update:data', internalData.tableFullData);
@@ -5699,6 +5795,7 @@ export default defineComponent({
5699
5795
  footData = visibleColumn.length ? footerMethod({ columns: visibleColumn, data: afterFullData, $table: $xeTable, $grid: $xeGrid }) : [];
5700
5796
  }
5701
5797
  reactData.footerTableData = footData;
5798
+ $xeTable.handleUpdateFooterMerge();
5702
5799
  return nextTick();
5703
5800
  },
5704
5801
  /**
@@ -5722,9 +5819,10 @@ export default defineComponent({
5722
5819
  if (props.spanMethod) {
5723
5820
  errLog('vxe.error.errConflicts', ['merge-cells', 'span-method']);
5724
5821
  }
5725
- setMerges(merges, reactData.mergeList, internalData.afterFullData);
5822
+ handleBodyMerge(merges);
5823
+ $xeTable.handleUpdateBodyMerge();
5726
5824
  return nextTick().then(() => {
5727
- tableMethods.updateCellAreas();
5825
+ $xeTable.updateCellAreas();
5728
5826
  return updateStyle();
5729
5827
  });
5730
5828
  },
@@ -5736,9 +5834,9 @@ export default defineComponent({
5736
5834
  if (props.spanMethod) {
5737
5835
  errLog('vxe.error.errConflicts', ['merge-cells', 'span-method']);
5738
5836
  }
5739
- const rest = removeMerges(merges, reactData.mergeList, internalData.afterFullData);
5837
+ const rest = removeMerges(merges, internalData.mergeBodyList, internalData.afterFullData);
5740
5838
  return nextTick().then(() => {
5741
- tableMethods.updateCellAreas();
5839
+ $xeTable.updateCellAreas();
5742
5840
  updateStyle();
5743
5841
  return rest;
5744
5842
  });
@@ -5747,13 +5845,15 @@ export default defineComponent({
5747
5845
  * 获取所有被合并的单元格
5748
5846
  */
5749
5847
  getMergeCells() {
5750
- return reactData.mergeList.slice(0);
5848
+ return internalData.mergeBodyList.slice(0);
5751
5849
  },
5752
5850
  /**
5753
5851
  * 清除所有单元格合并
5754
5852
  */
5755
5853
  clearMergeCells() {
5756
- reactData.mergeList = [];
5854
+ internalData.mergeBodyList = [];
5855
+ internalData.mergeBodyMaps = {};
5856
+ internalData.mergeBodyCellMaps = {};
5757
5857
  return nextTick().then(() => {
5758
5858
  return updateStyle();
5759
5859
  });
@@ -5762,7 +5862,8 @@ export default defineComponent({
5762
5862
  if (props.footerSpanMethod) {
5763
5863
  errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
5764
5864
  }
5765
- setMerges(merges, reactData.mergeFooterList);
5865
+ handleFooterMerge(merges);
5866
+ $xeTable.handleUpdateFooterMerge();
5766
5867
  return nextTick().then(() => {
5767
5868
  tableMethods.updateCellAreas();
5768
5869
  return updateStyle();
@@ -5772,7 +5873,7 @@ export default defineComponent({
5772
5873
  if (props.footerSpanMethod) {
5773
5874
  errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
5774
5875
  }
5775
- const rest = removeMerges(merges, reactData.mergeFooterList);
5876
+ const rest = removeMerges(merges, internalData.mergeFooterList);
5776
5877
  return nextTick().then(() => {
5777
5878
  tableMethods.updateCellAreas();
5778
5879
  updateStyle();
@@ -5783,13 +5884,15 @@ export default defineComponent({
5783
5884
  * 获取所有被合并的表尾
5784
5885
  */
5785
5886
  getMergeFooterItems() {
5786
- return reactData.mergeFooterList.slice(0);
5887
+ return internalData.mergeFooterList.slice(0);
5787
5888
  },
5788
5889
  /**
5789
5890
  * 清除所有表尾合并
5790
5891
  */
5791
5892
  clearMergeFooterItems() {
5792
- reactData.mergeFooterList = [];
5893
+ internalData.mergeFooterList = [];
5894
+ internalData.mergeFooterMaps = {};
5895
+ internalData.mergeFooterCellMaps = {};
5793
5896
  return nextTick().then(() => {
5794
5897
  return updateStyle();
5795
5898
  });
@@ -6826,27 +6929,30 @@ export default defineComponent({
6826
6929
  fullList = handleVirtualTreeToList();
6827
6930
  }
6828
6931
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
6932
+ const visibleDataRowIdMaps = {};
6829
6933
  tableData.forEach((row, $index) => {
6830
6934
  const rowid = getRowid($xeTable, row);
6831
6935
  const rest = fullDataRowIdData[rowid];
6832
6936
  if (rest) {
6833
6937
  rest.$index = $index;
6834
6938
  }
6939
+ visibleDataRowIdMaps[rowid] = row;
6835
6940
  });
6836
6941
  reactData.tableData = tableData;
6942
+ internalData.visibleDataRowIdData = visibleDataRowIdMaps;
6837
6943
  return nextTick();
6838
6944
  },
6839
6945
  /**
6840
6946
  * 更新数据行的 Map
6841
6947
  */
6842
- cacheRowMap() {
6948
+ cacheRowMap(isReset) {
6843
6949
  const { treeConfig } = props;
6844
6950
  const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData;
6845
6951
  const treeOpts = computeTreeOpts.value;
6846
6952
  const childrenField = treeOpts.children || treeOpts.childrenField;
6847
6953
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
6848
6954
  const { lazy } = treeOpts;
6849
- const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
6955
+ const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
6850
6956
  const fullDataRowIdMaps = {};
6851
6957
  const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
6852
6958
  const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
@@ -7627,6 +7733,19 @@ export default defineComponent({
7627
7733
  handleSelectRow({ row }, checked, isForce) {
7628
7734
  $xeTable.handleBatchSelectRows([row], checked, isForce);
7629
7735
  },
7736
+ /**
7737
+ * 处理合并
7738
+ */
7739
+ handleUpdateBodyMerge() {
7740
+ const { mergeBodyList } = internalData;
7741
+ internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
7742
+ reactData.mergeBodyFlag++;
7743
+ },
7744
+ handleUpdateFooterMerge() {
7745
+ const { mergeFooterList } = internalData;
7746
+ internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
7747
+ reactData.mergeFootFlag++;
7748
+ },
7630
7749
  triggerHeaderTitleEvent(evnt, iconParams, params) {
7631
7750
  const tipContent = iconParams.content || iconParams.message;
7632
7751
  if (tipContent) {
@@ -9671,21 +9790,23 @@ export default defineComponent({
9671
9790
  const { transform, seqMode } = treeOpts;
9672
9791
  const cellStyle = {};
9673
9792
  const rowid = handleGetRowId(row);
9674
- const rest = fullAllDataRowIdData[rowid];
9793
+ const rowRest = fullAllDataRowIdData[rowid];
9675
9794
  let rowLevel = 0;
9676
9795
  let seq = -1;
9677
- let _rowIndex = 0;
9678
- const rowIndex = $xeTable.getRowIndex(row);
9679
- const $rowIndex = $xeTable.getVMRowIndex(row);
9680
- if (rest) {
9681
- rowLevel = rest.level;
9796
+ let _rowIndex = -1;
9797
+ let rowIndex = -1;
9798
+ let $rowIndex = -1;
9799
+ if (rowRest) {
9800
+ rowLevel = rowRest.level;
9682
9801
  if (treeConfig && transform && seqMode === 'increasing') {
9683
- seq = rest._index + 1;
9802
+ seq = rowRest._index + 1;
9684
9803
  }
9685
9804
  else {
9686
- seq = rest.seq;
9805
+ seq = rowRest.seq;
9687
9806
  }
9688
- _rowIndex = rest._index;
9807
+ rowIndex = rowRest.index;
9808
+ $rowIndex = rowRest.$index;
9809
+ _rowIndex = rowRest._index;
9689
9810
  }
9690
9811
  if (expandHeight) {
9691
9812
  cellStyle.height = `${expandHeight}px`;
@@ -10278,6 +10399,8 @@ export default defineComponent({
10278
10399
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
10279
10400
  initTpImg();
10280
10401
  }
10402
+ ;
10403
+ window.aa = $xeTable;
10281
10404
  nextTick(() => {
10282
10405
  const { data, exportConfig, importConfig, treeConfig, showOverflow, highlightCurrentRow, highlightCurrentColumn } = props;
10283
10406
  const { scrollXStore, scrollYStore } = internalData;
@@ -407,19 +407,6 @@ export function calcTreeLine(params, prevRow) {
407
407
  }
408
408
  return cellHeight * expandSize - (prevRow ? 1 : (12 - getOffsetSize($table)));
409
409
  }
410
- export function mergeBodyMethod(mergeList, _rowIndex, _columnIndex) {
411
- for (let mIndex = 0; mIndex < mergeList.length; mIndex++) {
412
- const { row: mergeRowIndex, col: mergeColIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeList[mIndex];
413
- if (mergeColIndex > -1 && mergeRowIndex > -1 && mergeRowspan && mergeColspan) {
414
- if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
415
- return { rowspan: mergeRowspan, colspan: mergeColspan };
416
- }
417
- if (_rowIndex >= mergeRowIndex && _rowIndex < mergeRowIndex + mergeRowspan && _columnIndex >= mergeColIndex && _columnIndex < mergeColIndex + mergeColspan) {
418
- return { rowspan: 0, colspan: 0 };
419
- }
420
- }
421
- }
422
- }
423
410
  export function clearTableDefaultStatus($xeTable) {
424
411
  const { props, internalData } = $xeTable;
425
412
  internalData.initStatus = false;
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "4.12.5";
3
+ export const version = "4.13.0-beta.0";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
@@ -191,7 +191,7 @@ VxeUI.setConfig({
191
191
  },
192
192
  virtualXConfig: {
193
193
  enabled: true,
194
- gt: 60,
194
+ gt: 28,
195
195
  preSize: 1,
196
196
  oSize: 0
197
197
  },
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"4.12.5"}`;
3
+ const version = `table v${"4.13.0-beta.0"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
@@ -9,8 +9,8 @@ var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
9
  var _utils = require("../../ui/src/utils");
10
10
  var _dom = require("../../ui/src/dom");
11
11
  var _ui = require("../../ui");
12
- var _table = _interopRequireDefault(require("../../table"));
13
- var _toolbar = _interopRequireDefault(require("../../toolbar"));
12
+ var _table = _interopRequireDefault(require("../../table/src/table"));
13
+ var _toolbar = _interopRequireDefault(require("../../toolbar/src/toolbar"));
14
14
  var _props = _interopRequireDefault(require("../../table/src/props"));
15
15
  var _emits = _interopRequireDefault(require("../../table/src/emits"));
16
16
  var _vn = require("../../ui/src/vn");