vxe-table 4.12.0-beta.9 → 4.12.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 (185) hide show
  1. package/es/grid/src/grid.js +45 -36
  2. package/es/locale/lang/ar-EG.js +7 -1
  3. package/es/locale/lang/de-DE.js +7 -1
  4. package/es/locale/lang/en-US.js +7 -1
  5. package/es/locale/lang/es-ES.js +7 -1
  6. package/es/locale/lang/fr-FR.js +7 -1
  7. package/es/locale/lang/hu-HU.js +7 -1
  8. package/es/locale/lang/hy-AM.js +7 -1
  9. package/es/locale/lang/id-ID.js +7 -1
  10. package/es/locale/lang/it-IT.js +7 -1
  11. package/es/locale/lang/ja-JP.js +7 -1
  12. package/es/locale/lang/ko-KR.js +7 -1
  13. package/es/locale/lang/nb-NO.js +7 -1
  14. package/es/locale/lang/pt-BR.js +7 -1
  15. package/es/locale/lang/ru-RU.js +7 -1
  16. package/es/locale/lang/th-TH.js +7 -1
  17. package/es/locale/lang/ug-CN.js +7 -1
  18. package/es/locale/lang/uk-UA.js +7 -1
  19. package/es/locale/lang/vi-VN.js +7 -1
  20. package/es/locale/lang/zh-CHT.js +7 -1
  21. package/es/locale/lang/zh-CN.js +7 -1
  22. package/es/style.css +1 -1
  23. package/es/table/module/custom/hook.js +1 -1
  24. package/es/table/module/custom/panel.js +4 -2
  25. package/es/table/module/edit/hook.js +11 -12
  26. package/es/table/module/export/export-panel.js +3 -2
  27. package/es/table/module/export/import-panel.js +3 -2
  28. package/es/table/module/filter/panel.js +12 -2
  29. package/es/table/module/keyboard/hook.js +105 -30
  30. package/es/table/module/menu/hook.js +2 -1
  31. package/es/table/module/validator/hook.js +4 -3
  32. package/es/table/render/index.js +3 -3
  33. package/es/table/src/body.js +40 -21
  34. package/es/table/src/cell.js +43 -24
  35. package/es/table/src/columnInfo.js +2 -2
  36. package/es/table/src/footer.js +12 -7
  37. package/es/table/src/header.js +12 -7
  38. package/es/table/src/props.js +4 -0
  39. package/es/table/src/table.js +435 -420
  40. package/es/table/src/util.js +34 -6
  41. package/es/ui/index.js +2 -1
  42. package/es/ui/src/log.js +1 -1
  43. package/helper/vetur/attributes.json +1 -1
  44. package/helper/vetur/tags.json +1 -1
  45. package/lib/grid/src/grid.js +42 -40
  46. package/lib/grid/src/grid.min.js +1 -1
  47. package/lib/index.umd.js +500 -292
  48. package/lib/index.umd.min.js +1 -1
  49. package/lib/locale/lang/ar-EG.js +7 -1
  50. package/lib/locale/lang/ar-EG.min.js +1 -1
  51. package/lib/locale/lang/de-DE.js +7 -1
  52. package/lib/locale/lang/de-DE.min.js +1 -1
  53. package/lib/locale/lang/en-US.js +7 -1
  54. package/lib/locale/lang/en-US.min.js +1 -1
  55. package/lib/locale/lang/en-US.umd.js +7 -1
  56. package/lib/locale/lang/es-ES.js +7 -1
  57. package/lib/locale/lang/es-ES.min.js +1 -1
  58. package/lib/locale/lang/es-ES.umd.js +7 -1
  59. package/lib/locale/lang/fr-FR.js +7 -1
  60. package/lib/locale/lang/fr-FR.min.js +1 -1
  61. package/lib/locale/lang/hu-HU.js +7 -1
  62. package/lib/locale/lang/hu-HU.min.js +1 -1
  63. package/lib/locale/lang/hu-HU.umd.js +7 -1
  64. package/lib/locale/lang/hy-AM.js +7 -1
  65. package/lib/locale/lang/hy-AM.min.js +1 -1
  66. package/lib/locale/lang/id-ID.js +7 -1
  67. package/lib/locale/lang/id-ID.min.js +1 -1
  68. package/lib/locale/lang/it-IT.js +7 -1
  69. package/lib/locale/lang/it-IT.min.js +1 -1
  70. package/lib/locale/lang/ja-JP.js +7 -1
  71. package/lib/locale/lang/ja-JP.min.js +1 -1
  72. package/lib/locale/lang/ja-JP.umd.js +7 -1
  73. package/lib/locale/lang/ko-KR.js +7 -1
  74. package/lib/locale/lang/ko-KR.min.js +1 -1
  75. package/lib/locale/lang/ko-KR.umd.js +7 -1
  76. package/lib/locale/lang/nb-NO.js +7 -1
  77. package/lib/locale/lang/nb-NO.min.js +1 -1
  78. package/lib/locale/lang/pt-BR.js +7 -1
  79. package/lib/locale/lang/pt-BR.min.js +1 -1
  80. package/lib/locale/lang/pt-BR.umd.js +7 -1
  81. package/lib/locale/lang/ru-RU.js +7 -1
  82. package/lib/locale/lang/ru-RU.min.js +1 -1
  83. package/lib/locale/lang/ru-RU.umd.js +7 -1
  84. package/lib/locale/lang/th-TH.js +7 -1
  85. package/lib/locale/lang/th-TH.min.js +1 -1
  86. package/lib/locale/lang/ug-CN.js +7 -1
  87. package/lib/locale/lang/ug-CN.min.js +1 -1
  88. package/lib/locale/lang/uk-UA.js +7 -1
  89. package/lib/locale/lang/uk-UA.min.js +1 -1
  90. package/lib/locale/lang/uk-UA.umd.js +7 -1
  91. package/lib/locale/lang/vi-VN.js +7 -1
  92. package/lib/locale/lang/vi-VN.min.js +1 -1
  93. package/lib/locale/lang/zh-CHT.js +7 -1
  94. package/lib/locale/lang/zh-CHT.min.js +1 -1
  95. package/lib/locale/lang/zh-CN.js +7 -1
  96. package/lib/locale/lang/zh-CN.min.js +1 -1
  97. package/lib/locale/lang/zh-CN.umd.js +7 -1
  98. package/lib/style.css +1 -1
  99. package/lib/table/module/custom/hook.js +1 -1
  100. package/lib/table/module/custom/hook.min.js +1 -1
  101. package/lib/table/module/custom/panel.js +4 -2
  102. package/lib/table/module/custom/panel.min.js +1 -1
  103. package/lib/table/module/edit/hook.js +13 -13
  104. package/lib/table/module/edit/hook.min.js +1 -1
  105. package/lib/table/module/export/export-panel.js +3 -2
  106. package/lib/table/module/export/export-panel.min.js +1 -1
  107. package/lib/table/module/export/import-panel.js +3 -2
  108. package/lib/table/module/export/import-panel.min.js +1 -1
  109. package/lib/table/module/filter/panel.js +8 -2
  110. package/lib/table/module/filter/panel.min.js +1 -1
  111. package/lib/table/module/keyboard/hook.js +113 -31
  112. package/lib/table/module/keyboard/hook.min.js +1 -1
  113. package/lib/table/module/menu/hook.js +2 -1
  114. package/lib/table/module/menu/hook.min.js +1 -1
  115. package/lib/table/module/validator/hook.js +5 -4
  116. package/lib/table/module/validator/hook.min.js +1 -1
  117. package/lib/table/render/index.js +4 -3
  118. package/lib/table/render/index.min.js +1 -1
  119. package/lib/table/src/body.js +48 -20
  120. package/lib/table/src/body.min.js +1 -1
  121. package/lib/table/src/cell.js +49 -25
  122. package/lib/table/src/cell.min.js +1 -1
  123. package/lib/table/src/columnInfo.js +2 -4
  124. package/lib/table/src/columnInfo.min.js +1 -1
  125. package/lib/table/src/footer.js +12 -5
  126. package/lib/table/src/footer.min.js +1 -1
  127. package/lib/table/src/header.js +12 -5
  128. package/lib/table/src/header.min.js +1 -1
  129. package/lib/table/src/props.js +4 -0
  130. package/lib/table/src/props.min.js +1 -1
  131. package/lib/table/src/table.js +523 -456
  132. package/lib/table/src/table.min.js +1 -1
  133. package/lib/table/src/util.js +36 -6
  134. package/lib/table/src/util.min.js +1 -1
  135. package/lib/ui/index.js +2 -1
  136. package/lib/ui/index.min.js +1 -1
  137. package/lib/ui/src/log.js +1 -1
  138. package/lib/ui/src/log.min.js +1 -1
  139. package/package.json +2 -2
  140. package/packages/grid/src/grid.ts +49 -42
  141. package/packages/locale/lang/ar-EG.ts +7 -1
  142. package/packages/locale/lang/de-DE.ts +7 -1
  143. package/packages/locale/lang/en-US.ts +7 -1
  144. package/packages/locale/lang/es-ES.ts +7 -1
  145. package/packages/locale/lang/fr-FR.ts +7 -1
  146. package/packages/locale/lang/hu-HU.ts +7 -1
  147. package/packages/locale/lang/hy-AM.ts +7 -1
  148. package/packages/locale/lang/id-ID.ts +7 -1
  149. package/packages/locale/lang/it-IT.ts +7 -1
  150. package/packages/locale/lang/ja-JP.ts +7 -1
  151. package/packages/locale/lang/ko-KR.ts +7 -1
  152. package/packages/locale/lang/nb-NO.ts +7 -1
  153. package/packages/locale/lang/pt-BR.ts +7 -1
  154. package/packages/locale/lang/ru-RU.ts +7 -1
  155. package/packages/locale/lang/th-TH.ts +7 -1
  156. package/packages/locale/lang/ug-CN.ts +7 -1
  157. package/packages/locale/lang/uk-UA.ts +7 -1
  158. package/packages/locale/lang/vi-VN.ts +7 -1
  159. package/packages/locale/lang/zh-CHT.ts +7 -1
  160. package/packages/locale/lang/zh-CN.ts +7 -1
  161. package/packages/table/module/custom/hook.ts +1 -1
  162. package/packages/table/module/custom/panel.ts +6 -2
  163. package/packages/table/module/edit/hook.ts +12 -12
  164. package/packages/table/module/export/export-panel.ts +4 -2
  165. package/packages/table/module/export/import-panel.ts +4 -2
  166. package/packages/table/module/filter/panel.ts +12 -2
  167. package/packages/table/module/keyboard/hook.ts +106 -32
  168. package/packages/table/module/menu/hook.ts +3 -1
  169. package/packages/table/module/validator/hook.ts +5 -3
  170. package/packages/table/render/index.ts +3 -4
  171. package/packages/table/src/body.ts +41 -21
  172. package/packages/table/src/cell.ts +43 -24
  173. package/packages/table/src/columnInfo.ts +3 -2
  174. package/packages/table/src/footer.ts +13 -7
  175. package/packages/table/src/header.ts +13 -7
  176. package/packages/table/src/props.ts +4 -0
  177. package/packages/table/src/table.ts +441 -418
  178. package/packages/table/src/util.ts +39 -6
  179. package/packages/ui/index.ts +1 -0
  180. /package/es/{iconfont.1741337003908.ttf → iconfont.1742955995631.ttf} +0 -0
  181. /package/es/{iconfont.1741337003908.woff → iconfont.1742955995631.woff} +0 -0
  182. /package/es/{iconfont.1741337003908.woff2 → iconfont.1742955995631.woff2} +0 -0
  183. /package/lib/{iconfont.1741337003908.ttf → iconfont.1742955995631.ttf} +0 -0
  184. /package/lib/{iconfont.1741337003908.woff → iconfont.1742955995631.woff} +0 -0
  185. /package/lib/{iconfont.1741337003908.woff2 → iconfont.1742955995631.woff2} +0 -0
@@ -9,7 +9,7 @@ import TableHeaderComponent from './header';
9
9
  import TableFooterComponent from './footer';
10
10
  import tableProps from './props';
11
11
  import tableEmits from './emits';
12
- import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, updateDeepRowKey, updateFastRowKey } from './util';
12
+ import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId } from './util';
13
13
  import { getSlotVNs } from '../../ui/src/vn';
14
14
  import { warnLog, errLog } from '../../ui/src/log';
15
15
  import TableCustomPanelComponent from '../module/custom/panel';
@@ -18,6 +18,7 @@ import TableImportPanelComponent from '../module/export/import-panel';
18
18
  import TableExportPanelComponent from '../module/export/export-panel';
19
19
  import TableMenuPanelComponent from '../module/menu/panel';
20
20
  const { getConfig, getIcon, getI18n, renderer, formats, createEvent, globalResize, interceptor, hooks, globalEvents, GLOBAL_EVENT_KEYS, useFns, renderEmptyElement } = VxeUI;
21
+ const supportMaxRow = 5e6;
21
22
  const customStorageKey = 'VXE_CUSTOM_STORE';
22
23
  const maxYHeight = 5e6;
23
24
  const maxXWidth = 5e6;
@@ -67,8 +68,6 @@ export default defineComponent({
67
68
  isAllSelected: false,
68
69
  // 复选框属性,有选中且非全选状态
69
70
  isIndeterminate: false,
70
- // 复选框属性,已选中的行集合
71
- selectCheckboxMaps: {},
72
71
  // 当前行
73
72
  currentRow: null,
74
73
  // 单选框属性,选中列
@@ -82,16 +81,6 @@ export default defineComponent({
82
81
  // 树节点列信息
83
82
  treeNodeColumn: null,
84
83
  hasFixedColumn: false,
85
- // 已展开的行集合
86
- rowExpandedMaps: {},
87
- // 懒加载中的展开行的集合
88
- rowExpandLazyLoadedMaps: {},
89
- // 已展开树节点集合
90
- treeExpandedMaps: {},
91
- // 懒加载中的树节点的集合
92
- treeExpandLazyLoadedMaps: {},
93
- // 树节点不确定状态的集合
94
- treeIndeterminateMaps: {},
95
84
  // 合并单元格的对象集
96
85
  mergeList: [],
97
86
  // 合并表尾数据的对象集
@@ -100,8 +89,6 @@ export default defineComponent({
100
89
  upDataFlag: 0,
101
90
  // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
102
91
  reColumnFlag: 0,
103
- // 已标记的对象集
104
- pendingRowMaps: {},
105
92
  // 初始化标识
106
93
  initStore: {
107
94
  filter: false,
@@ -245,6 +232,10 @@ export default defineComponent({
245
232
  isHeader: false,
246
233
  isFooter: false
247
234
  },
235
+ rowExpandedFlag: 1,
236
+ treeExpandedFlag: 1,
237
+ updateCheckboxFlag: 1,
238
+ pendingRowFlag: 1,
248
239
  rowHeightStore: {
249
240
  default: 48,
250
241
  medium: 44,
@@ -261,6 +252,7 @@ export default defineComponent({
261
252
  rowExpandHeightFlag: 1,
262
253
  calcCellHeightFlag: 1,
263
254
  resizeHeightFlag: 1,
255
+ resizeWidthFlag: 1,
264
256
  isCustomStatus: false,
265
257
  isDragRowMove: false,
266
258
  dragRow: null,
@@ -344,6 +336,18 @@ export default defineComponent({
344
336
  fullColumnIdData: {},
345
337
  fullColumnFieldData: {},
346
338
  // prevDragRow: null,
339
+ // 已展开的行集合
340
+ rowExpandedMaps: {},
341
+ // 懒加载中的展开行的集合
342
+ rowExpandLazyLoadedMaps: {},
343
+ // 已展开树节点集合
344
+ treeExpandedMaps: {},
345
+ // 懒加载中的树节点的集合
346
+ treeExpandLazyLoadedMaps: {},
347
+ // 复选框属性,已选中的行集合
348
+ selectCheckboxMaps: {},
349
+ // 已标记的对象集
350
+ pendingRowMaps: {},
347
351
  inited: false,
348
352
  tooltipTimeout: null,
349
353
  initStatus: false,
@@ -464,18 +468,36 @@ export default defineComponent({
464
468
  const computeColumnOpts = computed(() => {
465
469
  return Object.assign({}, getConfig().table.columnConfig, props.columnConfig);
466
470
  });
471
+ const computeCurrentColumnOpts = computed(() => {
472
+ return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig);
473
+ });
467
474
  const computeCellOpts = computed(() => {
468
- return Object.assign({}, getConfig().table.cellConfig, props.cellConfig);
475
+ const cellOpts = Object.assign({}, getConfig().table.cellConfig, props.cellConfig);
476
+ if (cellOpts.height) {
477
+ cellOpts.height = XEUtils.toNumber(cellOpts.height);
478
+ }
479
+ return cellOpts;
469
480
  });
470
481
  const computeHeaderCellOpts = computed(() => {
471
- return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig);
482
+ const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig);
483
+ if (headerCellOpts.height) {
484
+ headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height);
485
+ }
486
+ return headerCellOpts;
472
487
  });
473
488
  const computeFooterCellOpts = computed(() => {
474
- return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig);
489
+ const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig);
490
+ if (footerCellOpts.height) {
491
+ footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height);
492
+ }
493
+ return footerCellOpts;
475
494
  });
476
495
  const computeRowOpts = computed(() => {
477
496
  return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
478
497
  });
498
+ const computeCurrentRowOpts = computed(() => {
499
+ return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig);
500
+ });
479
501
  const computeRowDragOpts = computed(() => {
480
502
  return Object.assign({}, getConfig().table.rowDragConfig, props.rowDragConfig);
481
503
  });
@@ -616,12 +638,14 @@ export default defineComponent({
616
638
  return Object.assign({}, getConfig().table.customConfig, props.customConfig);
617
639
  });
618
640
  const computeTableRowExpandedList = computed(() => {
619
- const { rowExpandedMaps, tableData, expandColumn } = reactData;
641
+ const { rowExpandedFlag, tableData, expandColumn } = reactData;
642
+ const { rowExpandedMaps } = internalData;
643
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
620
644
  const expandList = [];
621
- if (expandColumn) {
645
+ if (expandColumn && rowExpandedFlag) {
622
646
  const rowKeys = {};
623
647
  tableData.forEach(row => {
624
- rowKeys[getRowid($xeTable, row)] = true;
648
+ rowKeys[handleGetRowId(row)] = true;
625
649
  });
626
650
  XEUtils.each(rowExpandedMaps, (row, rowid) => {
627
651
  if (rowKeys[rowid]) {
@@ -734,13 +758,16 @@ export default defineComponent({
734
758
  computeScrollbarXToTop,
735
759
  computeScrollbarYToLeft,
736
760
  computeColumnOpts,
761
+ computeCurrentColumnOpts,
737
762
  computeScrollXThreshold,
738
763
  computeScrollYThreshold,
764
+ computeRowHeightMaps,
739
765
  computeDefaultRowHeight,
740
766
  computeCellOpts,
741
767
  computeHeaderCellOpts,
742
768
  computeFooterCellOpts,
743
769
  computeRowOpts,
770
+ computeCurrentRowOpts,
744
771
  computeRowDragOpts,
745
772
  computeColumnDragOpts,
746
773
  computeResizeOpts,
@@ -788,6 +815,7 @@ export default defineComponent({
788
815
  internalData,
789
816
  getRefMaps: () => refMaps,
790
817
  getComputeMaps: () => computeMaps,
818
+ xeGrid: $xeGrid,
791
819
  xegrid: $xeGrid
792
820
  };
793
821
  const eqCellValue = (row1, row2, field) => {
@@ -942,12 +970,13 @@ export default defineComponent({
942
970
  visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
943
971
  }
944
972
  else {
973
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
945
974
  let leftIndex = 0;
946
975
  let rightIndex = afterFullData.length;
947
976
  while (leftIndex < rightIndex) {
948
977
  const rIndex = Math.floor((leftIndex + rightIndex) / 2);
949
978
  const row = afterFullData[rIndex];
950
- const rowid = getRowid($xeTable, row);
979
+ const rowid = handleGetRowId(row);
951
980
  const rowRest = fullAllDataRowIdData[rowid] || {};
952
981
  if (rowRest.oTop <= startTop) {
953
982
  leftIndex = rIndex + 1;
@@ -959,7 +988,7 @@ export default defineComponent({
959
988
  toVisibleIndex = Math.max(0, leftIndex < afterFullData.length ? leftIndex - 2 : 0);
960
989
  for (let rIndex = toVisibleIndex, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
961
990
  const row = afterFullData[rIndex];
962
- const rowid = getRowid($xeTable, row);
991
+ const rowid = handleGetRowId(row);
963
992
  const rowRest = fullAllDataRowIdData[rowid] || {};
964
993
  visibleSize++;
965
994
  if (rowRest.oTop > endTop || visibleSize >= 100) {
@@ -1198,7 +1227,7 @@ export default defineComponent({
1198
1227
  }
1199
1228
  else {
1200
1229
  if ((storage && !type) || (columnOpts.drag && (isCrossDrag || isSelfToChildDrag))) {
1201
- errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field`]);
1230
+ errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field=?`]);
1202
1231
  }
1203
1232
  }
1204
1233
  if (!hasFixed && fixed) {
@@ -1442,6 +1471,7 @@ export default defineComponent({
1442
1471
  internalData.headerHeight = headerHeight;
1443
1472
  internalData.footerHeight = footerHeight;
1444
1473
  reactData.overflowX = overflowX;
1474
+ reactData.resizeWidthFlag++;
1445
1475
  updateColumnOffsetLeft();
1446
1476
  updateHeight();
1447
1477
  reactData.parentHeight = Math.max(internalData.headerHeight + footerHeight + 20, $xeTable.getParentHeight());
@@ -1467,9 +1497,10 @@ export default defineComponent({
1467
1497
  const defaultRowHeight = computeDefaultRowHeight.value;
1468
1498
  const el = refElem.value;
1469
1499
  if (!isAllOverflow && scrollYLoad && el) {
1500
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
1470
1501
  el.setAttribute('data-calc-row', 'Y');
1471
1502
  tableData.forEach(row => {
1472
- const rowid = getRowid($xeTable, row);
1503
+ const rowid = handleGetRowId(row);
1473
1504
  const rowRest = fullAllDataRowIdData[rowid];
1474
1505
  if (rowRest) {
1475
1506
  const reHeight = calcCellAutoHeight(rowRest, el);
@@ -1505,9 +1536,10 @@ export default defineComponent({
1505
1536
  const updateAfterListIndex = () => {
1506
1537
  const { treeConfig } = props;
1507
1538
  const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData;
1539
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
1508
1540
  const fullMaps = {};
1509
1541
  afterFullData.forEach((row, index) => {
1510
- const rowid = getRowid($xeTable, row);
1542
+ const rowid = handleGetRowId(row);
1511
1543
  const rowRest = fullAllDataRowIdData[rowid];
1512
1544
  const seq = index + 1;
1513
1545
  if (rowRest) {
@@ -1537,8 +1569,9 @@ export default defineComponent({
1537
1569
  const childrenField = treeOpts.children || treeOpts.childrenField;
1538
1570
  const fullMaps = {};
1539
1571
  if (treeConfig) {
1572
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
1540
1573
  XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
1541
- const rowid = getRowid($xeTable, row);
1574
+ const rowid = handleGetRowId(row);
1542
1575
  const rowRest = fullAllDataRowIdData[rowid];
1543
1576
  const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('');
1544
1577
  if (rowRest) {
@@ -1565,16 +1598,16 @@ export default defineComponent({
1565
1598
  */
1566
1599
  const handleVirtualTreeToList = () => {
1567
1600
  const { treeConfig } = props;
1568
- const { treeExpandedMaps } = reactData;
1569
- const { fullAllDataRowIdData } = internalData;
1601
+ const { fullAllDataRowIdData, treeExpandedMaps } = internalData;
1570
1602
  const treeOpts = computeTreeOpts.value;
1571
1603
  const childrenField = treeOpts.children || treeOpts.childrenField;
1572
1604
  if (treeConfig && treeOpts.transform) {
1605
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
1573
1606
  const fullData = [];
1574
1607
  const expandMaps = {};
1575
1608
  XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parentRow) => {
1576
- const rowid = getRowid($xeTable, row);
1577
- const parentRowid = getRowid($xeTable, parentRow);
1609
+ const rowid = handleGetRowId(row);
1610
+ const parentRowid = handleGetRowId(parentRow);
1578
1611
  if (!parentRow || (expandMaps[parentRowid] && treeExpandedMaps[parentRowid])) {
1579
1612
  const rowRest = fullAllDataRowIdData[rowid];
1580
1613
  if (rowRest) {
@@ -1602,7 +1635,7 @@ export default defineComponent({
1602
1635
  const treeOpts = computeTreeOpts.value;
1603
1636
  const childrenField = treeOpts.children || treeOpts.childrenField;
1604
1637
  const { transform, rowField, parentField, mapChildrenField } = treeOpts;
1605
- const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts;
1638
+ const { isEvery, remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts;
1606
1639
  const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts;
1607
1640
  let tableData = [];
1608
1641
  let tableTree = [];
@@ -1661,7 +1694,7 @@ export default defineComponent({
1661
1694
  // 筛选虚拟树
1662
1695
  tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
1663
1696
  original: true,
1664
- isEvery: true,
1697
+ isEvery,
1665
1698
  children: mapChildrenField,
1666
1699
  mapChildren: childrenField
1667
1700
  });
@@ -1677,7 +1710,7 @@ export default defineComponent({
1677
1710
  // 还原虚拟树
1678
1711
  tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
1679
1712
  original: true,
1680
- isEvery: true,
1713
+ isEvery,
1681
1714
  children: mapChildrenField,
1682
1715
  mapChildren: childrenField
1683
1716
  });
@@ -1727,7 +1760,7 @@ export default defineComponent({
1727
1760
  // 还原虚拟树
1728
1761
  tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
1729
1762
  original: true,
1730
- isEvery: true,
1763
+ isEvery,
1731
1764
  children: treeOpts.mapChildrenField,
1732
1765
  mapChildren: childrenField
1733
1766
  });
@@ -1745,7 +1778,7 @@ export default defineComponent({
1745
1778
  const updateStyle = () => {
1746
1779
  const { border, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props;
1747
1780
  const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData;
1748
- const { visibleColumn, fullColumnIdData, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
1781
+ const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
1749
1782
  const el = refElem.value;
1750
1783
  if (!el) {
1751
1784
  return;
@@ -1754,7 +1787,6 @@ export default defineComponent({
1754
1787
  const osbWidth = overflowY ? scrollbarWidth : 0;
1755
1788
  const osbHeight = overflowX ? scrollbarHeight : 0;
1756
1789
  const emptyPlaceholderElem = refEmptyPlaceholder.value;
1757
- const cellOffsetWidth = computeCellOffsetWidth.value;
1758
1790
  const mouseOpts = computeMouseOpts.value;
1759
1791
  const expandOpts = computeExpandOpts.value;
1760
1792
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper']);
@@ -2022,56 +2054,6 @@ export default defineComponent({
2022
2054
  tableElem.style.width = tWidth ? `${tWidth}px` : '';
2023
2055
  }
2024
2056
  }
2025
- const colgroupElem = getRefElem(elemStore[`${name}-${layout}-colgroup`]);
2026
- if (colgroupElem) {
2027
- XEUtils.arrayEach(colgroupElem.children, (colElem) => {
2028
- const colid = colElem.getAttribute('name');
2029
- if (fullColumnIdData[colid]) {
2030
- const colRest = fullColumnIdData[colid];
2031
- const column = colRest.column;
2032
- const { showHeaderOverflow, showFooterOverflow, showOverflow } = column;
2033
- let cellOverflow;
2034
- colElem.style.width = `${column.renderWidth}px`;
2035
- if (layout === 'header') {
2036
- cellOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
2037
- }
2038
- else if (layout === 'footer') {
2039
- cellOverflow = XEUtils.isUndefined(showFooterOverflow) || XEUtils.isNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow;
2040
- }
2041
- else {
2042
- cellOverflow = XEUtils.isUndefined(showOverflow) || XEUtils.isNull(showOverflow) ? isAllOverflow : showOverflow;
2043
- }
2044
- const showEllipsis = cellOverflow === 'ellipsis';
2045
- const showTitle = cellOverflow === 'title';
2046
- const showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
2047
- let hasEllipsis = showTitle || showTooltip || showEllipsis;
2048
- const listElem = getRefElem(elemStore[`${name}-${layout}-list`]);
2049
- // 纵向虚拟滚动不支持动态行高
2050
- if (scrollYLoad && !hasEllipsis) {
2051
- hasEllipsis = true;
2052
- }
2053
- if (listElem) {
2054
- XEUtils.arrayEach(listElem.querySelectorAll(`.${column.id}`), (elem) => {
2055
- const colspan = parseInt(elem.getAttribute('colspan') || 1);
2056
- const cellElem = elem.querySelector('.vxe-cell');
2057
- let colWidth = column.renderWidth;
2058
- if (cellElem) {
2059
- if (colspan > 1) {
2060
- const columnIndex = $xeTable.getColumnIndex(column);
2061
- for (let index = 1; index < colspan; index++) {
2062
- const nextColumn = $xeTable.getColumns(columnIndex + index);
2063
- if (nextColumn) {
2064
- colWidth += nextColumn.renderWidth;
2065
- }
2066
- }
2067
- }
2068
- cellElem.style.width = hasEllipsis ? `${colWidth - (cellOffsetWidth * colspan)}px` : '';
2069
- }
2070
- });
2071
- }
2072
- }
2073
- });
2074
- }
2075
2057
  });
2076
2058
  });
2077
2059
  if (currentRow) {
@@ -2232,12 +2214,12 @@ export default defineComponent({
2232
2214
  };
2233
2215
  const handleCheckedAllCheckboxRow = (checked, isForce) => {
2234
2216
  const { treeConfig } = props;
2235
- const { selectCheckboxMaps } = reactData;
2236
- const { afterFullData, checkboxReserveRowMap } = internalData;
2217
+ const { afterFullData, checkboxReserveRowMap, selectCheckboxMaps } = internalData;
2237
2218
  const treeOpts = computeTreeOpts.value;
2238
2219
  const childrenField = treeOpts.children || treeOpts.childrenField;
2239
2220
  const checkboxOpts = computeCheckboxOpts.value;
2240
2221
  const { checkField, reserve, checkMethod } = checkboxOpts;
2222
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
2241
2223
  // indeterminateField 仅支持读取
2242
2224
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
2243
2225
  const selectRowMaps = {};
@@ -2249,7 +2231,7 @@ export default defineComponent({
2249
2231
  const checkValFn = (row) => {
2250
2232
  if (isForce || (!checkMethod || checkMethod({ row }))) {
2251
2233
  if (checked) {
2252
- selectRowMaps[getRowid($xeTable, row)] = row;
2234
+ selectRowMaps[handleGetRowId(row)] = row;
2253
2235
  }
2254
2236
  XEUtils.set(row, checkField, checked);
2255
2237
  }
@@ -2279,7 +2261,8 @@ export default defineComponent({
2279
2261
  */
2280
2262
  XEUtils.eachTree(afterFullData, (row) => {
2281
2263
  if (isForce || (!checkMethod || checkMethod({ row }))) {
2282
- selectRowMaps[getRowid($xeTable, row)] = row;
2264
+ const rowid = handleGetRowId(row);
2265
+ selectRowMaps[rowid] = row;
2283
2266
  }
2284
2267
  }, { children: childrenField });
2285
2268
  }
@@ -2290,7 +2273,7 @@ export default defineComponent({
2290
2273
  */
2291
2274
  if (!isForce && checkMethod) {
2292
2275
  XEUtils.eachTree(afterFullData, (row) => {
2293
- const rowid = getRowid($xeTable, row);
2276
+ const rowid = handleGetRowId(row);
2294
2277
  if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
2295
2278
  selectRowMaps[rowid] = row;
2296
2279
  }
@@ -2307,7 +2290,7 @@ export default defineComponent({
2307
2290
  */
2308
2291
  if (!isForce && checkMethod) {
2309
2292
  afterFullData.forEach((row) => {
2310
- const rowid = getRowid($xeTable, row);
2293
+ const rowid = handleGetRowId(row);
2311
2294
  if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
2312
2295
  selectRowMaps[rowid] = row;
2313
2296
  }
@@ -2315,7 +2298,8 @@ export default defineComponent({
2315
2298
  }
2316
2299
  else {
2317
2300
  afterFullData.forEach(row => {
2318
- selectRowMaps[getRowid($xeTable, row)] = row;
2301
+ const rowid = handleGetRowId(row);
2302
+ selectRowMaps[rowid] = row;
2319
2303
  });
2320
2304
  }
2321
2305
  }
@@ -2327,7 +2311,7 @@ export default defineComponent({
2327
2311
  */
2328
2312
  if (!isForce && checkMethod) {
2329
2313
  afterFullData.forEach((row) => {
2330
- const rowid = getRowid($xeTable, row);
2314
+ const rowid = handleGetRowId(row);
2331
2315
  if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
2332
2316
  selectRowMaps[rowid] = row;
2333
2317
  }
@@ -2346,10 +2330,10 @@ export default defineComponent({
2346
2330
  afterFullData.forEach((row) => handleCheckboxReserveRow(row, false));
2347
2331
  }
2348
2332
  }
2349
- reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
2333
+ reactData.updateCheckboxFlag++;
2334
+ internalData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
2350
2335
  reactData.isAllSelected = checked;
2351
2336
  reactData.isIndeterminate = false;
2352
- reactData.treeIndeterminateMaps = {};
2353
2337
  internalData.treeIndeterminateRowMaps = {};
2354
2338
  $xeTable.checkSelectionStatus();
2355
2339
  return nextTick();
@@ -2357,8 +2341,8 @@ export default defineComponent({
2357
2341
  // 还原展开、选中等相关状态
2358
2342
  const handleReserveStatus = () => {
2359
2343
  const { treeConfig } = props;
2360
- const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData;
2361
- const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
2344
+ const { expandColumn, currentRow, selectRadioRow } = reactData;
2345
+ const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow, selectCheckboxMaps, treeExpandedMaps, rowExpandedMaps } = internalData;
2362
2346
  const expandOpts = computeExpandOpts.value;
2363
2347
  const treeOpts = computeTreeOpts.value;
2364
2348
  const radioOpts = computeRadioOpts.value;
@@ -2375,7 +2359,8 @@ export default defineComponent({
2375
2359
  }
2376
2360
  }
2377
2361
  // 复选框
2378
- reactData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps); // 刷新多选行状态
2362
+ internalData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps); // 刷新多选行状态
2363
+ reactData.updateCheckboxFlag++;
2379
2364
  // 还原保留选中状态
2380
2365
  if (checkboxOpts.reserve) {
2381
2366
  handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true, true);
@@ -2384,13 +2369,15 @@ export default defineComponent({
2384
2369
  reactData.currentRow = null; // 刷新当前行状态
2385
2370
  }
2386
2371
  // 行展开
2387
- reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps(rowExpandedMaps) : {}; // 刷新行展开状态
2372
+ internalData.rowExpandedMaps = expandColumn ? getRecoverRowMaps(rowExpandedMaps) : {}; // 刷新行展开状态
2373
+ reactData.rowExpandedFlag++;
2388
2374
  // 还原保留状态
2389
2375
  if (expandColumn && expandOpts.reserve) {
2390
2376
  $xeTable.setRowExpand(handleReserveRow(internalData.rowExpandedReserveRowMap), true);
2391
2377
  }
2392
2378
  // 树展开
2393
- reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps(treeExpandedMaps) : {}; // 刷新树展开状态
2379
+ internalData.treeExpandedMaps = treeConfig ? getRecoverRowMaps(treeExpandedMaps) : {}; // 刷新树展开状态
2380
+ reactData.treeExpandedFlag++;
2394
2381
  if (treeConfig && treeOpts.reserve) {
2395
2382
  $xeTable.setTreeExpand(handleReserveRow(internalData.treeExpandedReserveRowMap), true);
2396
2383
  }
@@ -2406,7 +2393,7 @@ export default defineComponent({
2406
2393
  const { expandAll, expandRowKeys } = treeOpts;
2407
2394
  const childrenField = treeOpts.children || treeOpts.childrenField;
2408
2395
  if (expandAll) {
2409
- tableMethods.setAllTreeExpand(true);
2396
+ $xeTable.setAllTreeExpand(true);
2410
2397
  }
2411
2398
  else if (expandRowKeys) {
2412
2399
  const defExpandeds = [];
@@ -2417,7 +2404,7 @@ export default defineComponent({
2417
2404
  defExpandeds.push(matchObj.item);
2418
2405
  }
2419
2406
  });
2420
- tableMethods.setTreeExpand(defExpandeds, true);
2407
+ $xeTable.setTreeExpand(defExpandeds, true);
2421
2408
  }
2422
2409
  }
2423
2410
  };
@@ -2428,8 +2415,7 @@ export default defineComponent({
2428
2415
  const { checkStrictly } = checkboxOpts;
2429
2416
  return new Promise(resolve => {
2430
2417
  if (loadMethod) {
2431
- const { treeExpandLazyLoadedMaps } = reactData;
2432
- const { fullAllDataRowIdData } = internalData;
2418
+ const { fullAllDataRowIdData, treeExpandLazyLoadedMaps } = internalData;
2433
2419
  const rowid = getRowid($xeTable, row);
2434
2420
  const rowRest = fullAllDataRowIdData[rowid];
2435
2421
  treeExpandLazyLoadedMaps[rowid] = row;
@@ -2444,18 +2430,19 @@ export default defineComponent({
2444
2430
  childRecords = [];
2445
2431
  }
2446
2432
  if (childRecords) {
2447
- return tableMethods.loadTreeChildren(row, childRecords).then(childRows => {
2448
- const { treeExpandedMaps } = reactData;
2433
+ return $xeTable.loadTreeChildren(row, childRecords).then(childRows => {
2434
+ const { treeExpandedMaps } = internalData;
2449
2435
  if (childRows.length && !treeExpandedMaps[rowid]) {
2450
2436
  treeExpandedMaps[rowid] = row;
2451
2437
  }
2438
+ reactData.treeExpandedFlag++;
2452
2439
  // 如果当前节点已选中,则展开后子节点也被选中
2453
- if (!checkStrictly && tableMethods.isCheckedByCheckboxRow(row)) {
2440
+ if (!checkStrictly && $xeTable.isCheckedByCheckboxRow(row)) {
2454
2441
  handleCheckedCheckboxRow(childRows, true);
2455
2442
  }
2456
2443
  return nextTick().then(() => {
2457
2444
  if (transform) {
2458
- tablePrivateMethods.handleTableData();
2445
+ $xeTable.handleTableData();
2459
2446
  updateAfterDataIndex();
2460
2447
  return nextTick();
2461
2448
  }
@@ -2463,7 +2450,7 @@ export default defineComponent({
2463
2450
  });
2464
2451
  }
2465
2452
  }).catch(() => {
2466
- const { treeExpandLazyLoadedMaps } = reactData;
2453
+ const { treeExpandLazyLoadedMaps } = internalData;
2467
2454
  if (rowRest) {
2468
2455
  rowRest.treeLoaded = false;
2469
2456
  }
@@ -2471,7 +2458,8 @@ export default defineComponent({
2471
2458
  delete treeExpandLazyLoadedMaps[rowid];
2472
2459
  }
2473
2460
  }).finally(() => {
2474
- nextTick().then(() => tableMethods.recalculate()).then(() => resolve());
2461
+ reactData.treeExpandedFlag++;
2462
+ nextTick().then(() => $xeTable.recalculate()).then(() => resolve());
2475
2463
  });
2476
2464
  }
2477
2465
  else {
@@ -2497,29 +2485,27 @@ export default defineComponent({
2497
2485
  const expandOpts = computeExpandOpts.value;
2498
2486
  const { loadMethod } = expandOpts;
2499
2487
  if (loadMethod) {
2500
- const { fullAllDataRowIdData } = internalData;
2501
- const rExpandLazyLoadedMaps = Object.assign({}, reactData.rowExpandLazyLoadedMaps);
2488
+ const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData;
2502
2489
  const rowid = getRowid($xeTable, row);
2503
2490
  const rowRest = fullAllDataRowIdData[rowid];
2504
- rExpandLazyLoadedMaps[rowid] = row;
2505
- reactData.rowExpandLazyLoadedMaps = rExpandLazyLoadedMaps;
2506
- loadMethod({ $table: $xeTable, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) }).then(() => {
2507
- const rowTempExpandedMaps = Object.assign({}, reactData.rowExpandedMaps);
2491
+ rowExpandLazyLoadedMaps[rowid] = row;
2492
+ loadMethod({ $table: $xeTable, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) }).then(() => {
2493
+ const { rowExpandedMaps } = internalData;
2508
2494
  if (rowRest) {
2509
2495
  rowRest.expandLoaded = true;
2510
2496
  }
2511
- rowTempExpandedMaps[rowid] = row;
2512
- reactData.rowExpandedMaps = rowTempExpandedMaps;
2497
+ rowExpandedMaps[rowid] = row;
2498
+ reactData.rowExpandedFlag++;
2513
2499
  }).catch(() => {
2514
2500
  if (rowRest) {
2515
2501
  rowRest.expandLoaded = false;
2516
2502
  }
2517
2503
  }).finally(() => {
2518
- const rExpandLazyLoadedMaps = Object.assign({}, reactData.rowExpandLazyLoadedMaps);
2519
- if (rExpandLazyLoadedMaps[rowid]) {
2520
- delete rExpandLazyLoadedMaps[rowid];
2504
+ const { rowExpandLazyLoadedMaps } = internalData;
2505
+ if (rowExpandLazyLoadedMaps[rowid]) {
2506
+ delete rowExpandLazyLoadedMaps[rowid];
2521
2507
  }
2522
- reactData.rowExpandLazyLoadedMaps = rExpandLazyLoadedMaps;
2508
+ reactData.rowExpandedFlag++;
2523
2509
  nextTick()
2524
2510
  .then(() => $xeTable.recalculate())
2525
2511
  .then(() => $xeTable.updateCellAreas())
@@ -2622,9 +2608,6 @@ export default defineComponent({
2622
2608
  calcCellWidth();
2623
2609
  autoCellWidth();
2624
2610
  updateStyle();
2625
- if (reFull) {
2626
- updateRowOffsetTop();
2627
- }
2628
2611
  updateRowExpandStyle();
2629
2612
  return computeScrollLoad().then(() => {
2630
2613
  if (reFull === true) {
@@ -2653,6 +2636,9 @@ export default defineComponent({
2653
2636
  const childrenField = treeOpts.children || treeOpts.childrenField;
2654
2637
  let treeData = [];
2655
2638
  let fullData = reactive(datas ? datas.slice(0) : []); // 转为响应式数据
2639
+ if (fullData.length > supportMaxRow) {
2640
+ errLog('vxe.error.errMaxRow', [supportMaxRow]);
2641
+ }
2656
2642
  if (treeConfig) {
2657
2643
  if (transform) {
2658
2644
  // 树结构自动转换
@@ -2860,8 +2846,8 @@ export default defineComponent({
2860
2846
  return result;
2861
2847
  };
2862
2848
  const parseColumns = (isReset) => {
2863
- const { showOverflow } = props;
2864
- const rowOpts = computeRowOpts.value;
2849
+ // const { showOverflow } = props
2850
+ // const rowOpts = computeRowOpts.value
2865
2851
  const leftList = [];
2866
2852
  const centerList = [];
2867
2853
  const rightList = [];
@@ -2934,28 +2920,28 @@ export default defineComponent({
2934
2920
  reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0;
2935
2921
  Object.assign(columnStore, { leftList, centerList, rightList });
2936
2922
  if (scrollXLoad) {
2937
- if (showOverflow) {
2938
- if (!rowOpts.height) {
2939
- const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false);
2940
- if (errColumn) {
2941
- errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true']);
2942
- }
2943
- }
2923
+ // if (showOverflow) {
2924
+ // if (!rowOpts.height) {
2925
+ // const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
2926
+ // if (errColumn) {
2927
+ // errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
2928
+ // }
2929
+ // }
2930
+ // }
2931
+ // if (process.env.NODE_ENV === 'development') {
2932
+ // if (props.showHeader && !props.showHeaderOverflow) {
2933
+ // warnLog('vxe.error.reqProp', ['show-header-overflow'])
2934
+ // }
2935
+ // if (props.showFooter && !props.showFooterOverflow) {
2936
+ // warnLog('vxe.error.reqProp', ['show-footer-overflow'])
2937
+ // }
2938
+ if (props.spanMethod) {
2939
+ warnLog('vxe.error.scrollErrProp', ['span-method']);
2944
2940
  }
2945
- if (process.env.NODE_ENV === 'development') {
2946
- // if (props.showHeader && !props.showHeaderOverflow) {
2947
- // warnLog('vxe.error.reqProp', ['show-header-overflow'])
2948
- // }
2949
- // if (props.showFooter && !props.showFooterOverflow) {
2950
- // warnLog('vxe.error.reqProp', ['show-footer-overflow'])
2951
- // }
2952
- if (props.spanMethod) {
2953
- warnLog('vxe.error.scrollErrProp', ['span-method']);
2954
- }
2955
- if (props.footerSpanMethod) {
2956
- warnLog('vxe.error.scrollErrProp', ['footer-span-method']);
2957
- }
2941
+ if (props.footerSpanMethod) {
2942
+ warnLog('vxe.error.scrollErrProp', ['footer-span-method']);
2958
2943
  }
2944
+ // }
2959
2945
  if (isReset) {
2960
2946
  const { visibleSize } = handleVirtualXVisible();
2961
2947
  scrollXStore.startIndex = 0;
@@ -3055,9 +3041,8 @@ export default defineComponent({
3055
3041
  * @returns
3056
3042
  */
3057
3043
  const handleBaseTreeExpand = (rows, expanded) => {
3058
- const { treeExpandedMaps, treeExpandLazyLoadedMaps, treeNodeColumn } = reactData;
3059
- const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
3060
- const { fullAllDataRowIdData, tableFullData } = internalData;
3044
+ const { treeNodeColumn } = reactData;
3045
+ const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
3061
3046
  const treeOpts = computeTreeOpts.value;
3062
3047
  const { reserve, lazy, accordion, toggleMethod } = treeOpts;
3063
3048
  const childrenField = treeOpts.children || treeOpts.childrenField;
@@ -3065,6 +3050,7 @@ export default defineComponent({
3065
3050
  const result = [];
3066
3051
  const columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
3067
3052
  const $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
3053
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
3068
3054
  let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
3069
3055
  if (accordion) {
3070
3056
  validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
@@ -3072,17 +3058,17 @@ export default defineComponent({
3072
3058
  const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField });
3073
3059
  if (matchObj) {
3074
3060
  matchObj.items.forEach(item => {
3075
- const rowid = getRowid($xeTable, item);
3076
- if (treeTempExpandedMaps[rowid]) {
3077
- delete treeTempExpandedMaps[rowid];
3061
+ const rowid = handleGetRowId(item);
3062
+ if (treeExpandedMaps[rowid]) {
3063
+ delete treeExpandedMaps[rowid];
3078
3064
  }
3079
3065
  });
3080
3066
  }
3081
3067
  }
3082
3068
  if (expanded) {
3083
3069
  validRows.forEach((row) => {
3084
- const rowid = getRowid($xeTable, row);
3085
- if (!treeTempExpandedMaps[rowid]) {
3070
+ const rowid = handleGetRowId(row);
3071
+ if (!treeExpandedMaps[rowid]) {
3086
3072
  const rowRest = fullAllDataRowIdData[rowid];
3087
3073
  if (rowRest) {
3088
3074
  const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
@@ -3092,7 +3078,7 @@ export default defineComponent({
3092
3078
  }
3093
3079
  else {
3094
3080
  if (row[childrenField] && row[childrenField].length) {
3095
- treeTempExpandedMaps[rowid] = row;
3081
+ treeExpandedMaps[rowid] = row;
3096
3082
  }
3097
3083
  }
3098
3084
  }
@@ -3101,16 +3087,16 @@ export default defineComponent({
3101
3087
  }
3102
3088
  else {
3103
3089
  validRows.forEach(item => {
3104
- const rowid = getRowid($xeTable, item);
3105
- if (treeTempExpandedMaps[rowid]) {
3106
- delete treeTempExpandedMaps[rowid];
3090
+ const rowid = handleGetRowId(item);
3091
+ if (treeExpandedMaps[rowid]) {
3092
+ delete treeExpandedMaps[rowid];
3107
3093
  }
3108
3094
  });
3109
3095
  }
3110
3096
  if (reserve) {
3111
3097
  validRows.forEach((row) => handleTreeExpandReserve(row, expanded));
3112
3098
  }
3113
- reactData.treeExpandedMaps = treeTempExpandedMaps;
3099
+ reactData.treeExpandedFlag++;
3114
3100
  return Promise.all(result).then(() => {
3115
3101
  return tableMethods.recalculate();
3116
3102
  });
@@ -3139,9 +3125,9 @@ export default defineComponent({
3139
3125
  handleCheckedAllCheckboxRow(value);
3140
3126
  if (evnt) {
3141
3127
  dispatchEvent('checkbox-all', {
3142
- records: $xeTable.getCheckboxRecords(),
3143
- reserves: $xeTable.getCheckboxReserveRecords(),
3144
- indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
3128
+ records: () => $xeTable.getCheckboxRecords(),
3129
+ reserves: () => $xeTable.getCheckboxReserveRecords(),
3130
+ indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
3145
3131
  checked: value
3146
3132
  }, evnt);
3147
3133
  }
@@ -3172,10 +3158,11 @@ export default defineComponent({
3172
3158
  }
3173
3159
  };
3174
3160
  const createGetRowCacheProp = (prop) => {
3161
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
3175
3162
  return function (row) {
3176
3163
  const { fullAllDataRowIdData } = internalData;
3177
3164
  if (row) {
3178
- const rowid = getRowid($xeTable, row);
3165
+ const rowid = handleGetRowId(row);
3179
3166
  const rowRest = fullAllDataRowIdData[rowid];
3180
3167
  if (rowRest) {
3181
3168
  return rowRest[prop];
@@ -3326,7 +3313,7 @@ export default defineComponent({
3326
3313
  };
3327
3314
  const handleUpdateColResize = (evnt, params) => {
3328
3315
  $xeTable.analyColumnWidth();
3329
- $xeTable.recalculate(true).then(() => {
3316
+ $xeTable.recalculate().then(() => {
3330
3317
  $xeTable.saveCustomStore('update:width');
3331
3318
  $xeTable.updateCellAreas();
3332
3319
  $xeTable.dispatchEvent('column-resizable-change', params, evnt);
@@ -3337,7 +3324,7 @@ export default defineComponent({
3337
3324
  };
3338
3325
  const handleUpdateRowResize = (evnt, params) => {
3339
3326
  reactData.resizeHeightFlag++;
3340
- $xeTable.recalculate(true).then(() => {
3327
+ $xeTable.recalculate().then(() => {
3341
3328
  $xeTable.updateCellAreas();
3342
3329
  $xeTable.dispatchEvent('row-resizable-change', params, evnt);
3343
3330
  setTimeout(() => $xeTable.recalculate(true), 300);
@@ -3355,16 +3342,17 @@ export default defineComponent({
3355
3342
  }
3356
3343
  };
3357
3344
  const updateRowOffsetTop = () => {
3358
- const { expandColumn, rowExpandedMaps } = reactData;
3359
- const { afterFullData, fullAllDataRowIdData } = internalData;
3345
+ const { expandColumn } = reactData;
3346
+ const { afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
3360
3347
  const expandOpts = computeExpandOpts.value;
3361
3348
  const rowOpts = computeRowOpts.value;
3362
3349
  const cellOpts = computeCellOpts.value;
3363
3350
  const defaultRowHeight = computeDefaultRowHeight.value;
3351
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
3364
3352
  let offsetTop = 0;
3365
3353
  for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
3366
3354
  const row = afterFullData[rIndex];
3367
- const rowid = getRowid($xeTable, row);
3355
+ const rowid = handleGetRowId(row);
3368
3356
  const rowRest = fullAllDataRowIdData[rowid] || {};
3369
3357
  rowRest.oTop = offsetTop;
3370
3358
  offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
@@ -3749,6 +3737,7 @@ export default defineComponent({
3749
3737
  const removeTempMaps = Object.assign({}, editStore.removeMaps);
3750
3738
  const treeOpts = computeTreeOpts.value;
3751
3739
  const { transform } = treeOpts;
3740
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
3752
3741
  if (!keepSource) {
3753
3742
  if (process.env.NODE_ENV === 'development') {
3754
3743
  errLog('vxe.error.reqProp', ['keep-source']);
@@ -3767,7 +3756,7 @@ export default defineComponent({
3767
3756
  let reDelFlag = false;
3768
3757
  if (targetRows.length) {
3769
3758
  targetRows.forEach((item) => {
3770
- const rowid = getRowid($xeTable, item);
3759
+ const rowid = handleGetRowId(item);
3771
3760
  const rowRest = fullAllDataRowIdData[rowid];
3772
3761
  if (rowRest) {
3773
3762
  const row = rowRest.row;
@@ -4130,8 +4119,7 @@ export default defineComponent({
4130
4119
  */
4131
4120
  getCheckboxRecords(isFull) {
4132
4121
  const { treeConfig } = props;
4133
- const { selectCheckboxMaps } = reactData;
4134
- const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData;
4122
+ const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData;
4135
4123
  const treeOpts = computeTreeOpts.value;
4136
4124
  const checkboxOpts = computeCheckboxOpts.value;
4137
4125
  const { transform, mapChildrenField } = treeOpts;
@@ -4461,12 +4449,13 @@ export default defineComponent({
4461
4449
  },
4462
4450
  getRowHeightConf(isFull) {
4463
4451
  const { fullAllDataRowIdData, afterFullData } = internalData;
4452
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
4464
4453
  const rowOpts = computeRowOpts.value;
4465
4454
  const cellOpts = computeCellOpts.value;
4466
4455
  const defaultRowHeight = computeDefaultRowHeight.value;
4467
4456
  const rest = {};
4468
4457
  afterFullData.forEach(row => {
4469
- const rowid = getRowid($xeTable, row);
4458
+ const rowid = handleGetRowId(row);
4470
4459
  const rowRest = fullAllDataRowIdData[rowid];
4471
4460
  if (rowRest) {
4472
4461
  const resizeHeight = rowRest.resizeHeight;
@@ -4490,8 +4479,9 @@ export default defineComponent({
4490
4479
  rHeight = Math.floor(rHeight * bodyHeight);
4491
4480
  }
4492
4481
  if (rHeight) {
4482
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
4493
4483
  rows.forEach(row => {
4494
- const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : getRowid($xeTable, row);
4484
+ const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row);
4495
4485
  const rowRest = fullAllDataRowIdData[rowid];
4496
4486
  if (rowRest) {
4497
4487
  rowRest.resizeHeight = rHeight;
@@ -4640,12 +4630,11 @@ export default defineComponent({
4640
4630
  */
4641
4631
  getCheckboxIndeterminateRecords(isFull) {
4642
4632
  const { treeConfig } = props;
4643
- const { fullDataRowIdData } = internalData;
4644
- const { treeIndeterminateMaps } = reactData;
4633
+ const { fullDataRowIdData, treeIndeterminateRowMaps } = internalData;
4645
4634
  if (treeConfig) {
4646
4635
  const fullRest = [];
4647
4636
  const defRest = [];
4648
- XEUtils.each(treeIndeterminateMaps, (item, rowid) => {
4637
+ XEUtils.each(treeIndeterminateRowMaps, (item, rowid) => {
4649
4638
  if (item) {
4650
4639
  fullRest.push(item);
4651
4640
  if (fullDataRowIdData[rowid]) {
@@ -4686,17 +4675,18 @@ export default defineComponent({
4686
4675
  return handleCheckedCheckboxRow(rows, checked, true);
4687
4676
  },
4688
4677
  isCheckedByCheckboxRow(row) {
4689
- const { selectCheckboxMaps } = reactData;
4678
+ const { updateCheckboxFlag } = reactData;
4679
+ const { selectCheckboxMaps } = internalData;
4690
4680
  const checkboxOpts = computeCheckboxOpts.value;
4691
4681
  const { checkField } = checkboxOpts;
4692
4682
  if (checkField) {
4693
4683
  return XEUtils.get(row, checkField);
4694
4684
  }
4695
- return !!selectCheckboxMaps[getRowid($xeTable, row)];
4685
+ return !!updateCheckboxFlag && !!selectCheckboxMaps[getRowid($xeTable, row)];
4696
4686
  },
4697
4687
  isCheckedByCheckboxRowKey(rowid) {
4698
- const { selectCheckboxMaps } = reactData;
4699
- const { fullAllDataRowIdData } = internalData;
4688
+ const { updateCheckboxFlag } = reactData;
4689
+ const { fullAllDataRowIdData, selectCheckboxMaps } = internalData;
4700
4690
  const checkboxOpts = computeCheckboxOpts.value;
4701
4691
  const { checkField } = checkboxOpts;
4702
4692
  if (checkField) {
@@ -4706,21 +4696,21 @@ export default defineComponent({
4706
4696
  }
4707
4697
  return false;
4708
4698
  }
4709
- return !!selectCheckboxMaps[rowid];
4699
+ return !!updateCheckboxFlag && !!selectCheckboxMaps[rowid];
4710
4700
  },
4711
4701
  isIndeterminateByCheckboxRow(row) {
4712
- const { treeIndeterminateMaps } = reactData;
4713
- return !!treeIndeterminateMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
4702
+ const { treeIndeterminateRowMaps } = internalData;
4703
+ return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
4714
4704
  },
4715
4705
  isIndeterminateByCheckboxRowKey(rowid) {
4716
- const { treeIndeterminateMaps } = reactData;
4717
- return !!treeIndeterminateMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
4706
+ const { treeIndeterminateRowMaps } = internalData;
4707
+ return !!treeIndeterminateRowMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
4718
4708
  },
4719
4709
  /**
4720
4710
  * 多选,切换某一行的选中状态
4721
4711
  */
4722
4712
  toggleCheckboxRow(row) {
4723
- const { selectCheckboxMaps } = reactData;
4713
+ const { selectCheckboxMaps } = internalData;
4724
4714
  const checkboxOpts = computeCheckboxOpts.value;
4725
4715
  const { checkField } = checkboxOpts;
4726
4716
  const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)];
@@ -4783,15 +4773,16 @@ export default defineComponent({
4783
4773
  const childrenField = treeOpts.children || treeOpts.childrenField;
4784
4774
  const reserveSelection = [];
4785
4775
  if (checkboxOpts.reserve) {
4776
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
4786
4777
  const afterFullIdMaps = {};
4787
4778
  if (treeConfig) {
4788
4779
  XEUtils.eachTree(afterFullData, row => {
4789
- afterFullIdMaps[getRowid($xeTable, row)] = 1;
4780
+ afterFullIdMaps[handleGetRowId(row)] = 1;
4790
4781
  }, { children: childrenField });
4791
4782
  }
4792
4783
  else {
4793
4784
  afterFullData.forEach(row => {
4794
- afterFullIdMaps[getRowid($xeTable, row)] = 1;
4785
+ afterFullIdMaps[handleGetRowId(row)] = 1;
4795
4786
  });
4796
4787
  }
4797
4788
  XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
@@ -4854,8 +4845,9 @@ export default defineComponent({
4854
4845
  }
4855
4846
  reactData.isAllSelected = false;
4856
4847
  reactData.isIndeterminate = false;
4857
- reactData.selectCheckboxMaps = {};
4858
- reactData.treeIndeterminateMaps = {};
4848
+ internalData.selectCheckboxMaps = {};
4849
+ internalData.treeIndeterminateRowMaps = {};
4850
+ reactData.updateCheckboxFlag++;
4859
4851
  return nextTick();
4860
4852
  },
4861
4853
  /**
@@ -4963,13 +4955,20 @@ export default defineComponent({
4963
4955
  * 用于当前列,设置某列行为高亮状态
4964
4956
  */
4965
4957
  setCurrentColumn(fieldOrColumn) {
4958
+ const { mouseConfig } = props;
4959
+ const mouseOpts = computeMouseOpts.value;
4960
+ const isMouseSelected = mouseConfig && mouseOpts.selected;
4966
4961
  const column = handleFieldOrColumn($xeTable, fieldOrColumn);
4967
4962
  if (column) {
4968
- // tableMethods.clearCurrentRow()
4969
- tableMethods.clearCurrentColumn();
4963
+ $xeTable.clearCurrentColumn();
4970
4964
  reactData.currentColumn = column;
4971
4965
  }
4972
- return nextTick();
4966
+ return nextTick().then(() => {
4967
+ // 更新状选中态
4968
+ if (isMouseSelected) {
4969
+ $xeTable.addCellSelectedClass();
4970
+ }
4971
+ });
4973
4972
  },
4974
4973
  /**
4975
4974
  * 用于当前列,手动清空当前高亮的状态
@@ -4979,59 +4978,60 @@ export default defineComponent({
4979
4978
  return nextTick();
4980
4979
  },
4981
4980
  setPendingRow(rows, status) {
4982
- const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
4981
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
4982
+ const { pendingRowMaps } = internalData;
4983
4983
  if (rows && !XEUtils.isArray(rows)) {
4984
4984
  rows = [rows];
4985
4985
  }
4986
4986
  if (status) {
4987
4987
  rows.forEach((row) => {
4988
- const rowid = getRowid($xeTable, row);
4989
- if (rowid && !pendingMaps[rowid]) {
4990
- pendingMaps[rowid] = row;
4988
+ const rowid = handleGetRowId(row);
4989
+ if (rowid && !pendingRowMaps[rowid]) {
4990
+ pendingRowMaps[rowid] = row;
4991
4991
  }
4992
4992
  });
4993
4993
  }
4994
4994
  else {
4995
4995
  rows.forEach((row) => {
4996
- const rowid = getRowid($xeTable, row);
4997
- if (rowid && pendingMaps[rowid]) {
4998
- delete pendingMaps[rowid];
4996
+ const rowid = handleGetRowId(row);
4997
+ if (rowid && pendingRowMaps[rowid]) {
4998
+ delete pendingRowMaps[rowid];
4999
4999
  }
5000
5000
  });
5001
5001
  }
5002
- reactData.pendingRowMaps = pendingMaps;
5002
+ reactData.pendingRowFlag++;
5003
5003
  return nextTick();
5004
5004
  },
5005
5005
  togglePendingRow(rows) {
5006
- const pendingMaps = Object.assign({}, reactData.pendingRowMaps);
5006
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
5007
+ const { pendingRowMaps } = internalData;
5007
5008
  if (rows && !XEUtils.isArray(rows)) {
5008
5009
  rows = [rows];
5009
5010
  }
5010
5011
  rows.forEach((row) => {
5011
- const rowid = getRowid($xeTable, row);
5012
+ const rowid = handleGetRowId(row);
5012
5013
  if (rowid) {
5013
- if (pendingMaps[rowid]) {
5014
- delete pendingMaps[rowid];
5014
+ if (pendingRowMaps[rowid]) {
5015
+ delete pendingRowMaps[rowid];
5015
5016
  }
5016
5017
  else {
5017
- pendingMaps[rowid] = row;
5018
+ pendingRowMaps[rowid] = row;
5018
5019
  }
5019
5020
  }
5020
5021
  });
5021
- reactData.pendingRowMaps = pendingMaps;
5022
+ reactData.pendingRowFlag++;
5022
5023
  return nextTick();
5023
5024
  },
5024
5025
  hasPendingByRow(row) {
5025
5026
  return tableMethods.isPendingByRow(row);
5026
5027
  },
5027
5028
  isPendingByRow(row) {
5028
- const { pendingRowMaps } = reactData;
5029
+ const { pendingRowMaps } = internalData;
5029
5030
  const rowid = getRowid($xeTable, row);
5030
5031
  return !!pendingRowMaps[rowid];
5031
5032
  },
5032
5033
  getPendingRecords() {
5033
- const { pendingRowMaps } = reactData;
5034
- const { fullAllDataRowIdData } = internalData;
5034
+ const { fullAllDataRowIdData, pendingRowMaps } = internalData;
5035
5035
  const insertRecords = [];
5036
5036
  XEUtils.each(pendingRowMaps, (row, rowid) => {
5037
5037
  if (fullAllDataRowIdData[rowid]) {
@@ -5041,7 +5041,8 @@ export default defineComponent({
5041
5041
  return insertRecords;
5042
5042
  },
5043
5043
  clearPendingRow() {
5044
- reactData.pendingRowMaps = {};
5044
+ internalData.pendingRowMaps = {};
5045
+ reactData.pendingRowFlag++;
5045
5046
  return nextTick();
5046
5047
  },
5047
5048
  sort(sortConfs, sortOrder) {
@@ -5190,7 +5191,13 @@ export default defineComponent({
5190
5191
  visible: false
5191
5192
  });
5192
5193
  if (visible) {
5193
- dispatchEvent('filter-visible', { column, property: column.field, field: column.field, filterList: $xeTable.getCheckedFilters(), visible: false }, null);
5194
+ dispatchEvent('filter-visible', {
5195
+ column,
5196
+ property: column.field,
5197
+ field: column.field,
5198
+ filterList: () => $xeTable.getCheckedFilters(),
5199
+ visible: false
5200
+ }, null);
5194
5201
  }
5195
5202
  return nextTick();
5196
5203
  },
@@ -5218,17 +5225,16 @@ export default defineComponent({
5218
5225
  return rowRest && !!rowRest.expandLoaded;
5219
5226
  },
5220
5227
  clearRowExpandLoaded(row) {
5221
- const rExpandLazyLoadedMaps = Object.assign({}, reactData.rowExpandLazyLoadedMaps);
5222
- const { fullAllDataRowIdData } = internalData;
5228
+ const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData;
5223
5229
  const expandOpts = computeExpandOpts.value;
5224
5230
  const { lazy } = expandOpts;
5225
5231
  const rowid = getRowid($xeTable, row);
5226
5232
  const rowRest = fullAllDataRowIdData[rowid];
5227
5233
  if (lazy && rowRest) {
5228
5234
  rowRest.expandLoaded = false;
5229
- delete rExpandLazyLoadedMaps[rowid];
5235
+ delete rowExpandLazyLoadedMaps[rowid];
5230
5236
  }
5231
- reactData.rowExpandLazyLoadedMaps = rExpandLazyLoadedMaps;
5237
+ reactData.rowExpandedFlag++;
5232
5238
  return nextTick();
5233
5239
  },
5234
5240
  /**
@@ -5236,12 +5242,12 @@ export default defineComponent({
5236
5242
  * @param {Row} row 行对象
5237
5243
  */
5238
5244
  reloadRowExpand(row) {
5239
- const { rowExpandLazyLoadedMaps } = reactData;
5245
+ const { rowExpandLazyLoadedMaps } = internalData;
5240
5246
  const expandOpts = computeExpandOpts.value;
5241
5247
  const { lazy } = expandOpts;
5242
5248
  const rowid = getRowid($xeTable, row);
5243
5249
  if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
5244
- tableMethods.clearRowExpandLoaded(row)
5250
+ $xeTable.clearRowExpandLoaded(row)
5245
5251
  .then(() => handleAsyncRowExpand(row));
5246
5252
  }
5247
5253
  return nextTick();
@@ -5251,13 +5257,13 @@ export default defineComponent({
5251
5257
  warnLog('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand']);
5252
5258
  }
5253
5259
  // 即将废弃
5254
- return tableMethods.reloadRowExpand(row);
5260
+ return $xeTable.reloadRowExpand(row);
5255
5261
  },
5256
5262
  /**
5257
5263
  * 切换展开行
5258
5264
  */
5259
5265
  toggleRowExpand(row) {
5260
- return tableMethods.setRowExpand(row, !tableMethods.isRowExpandByRow(row));
5266
+ return $xeTable.setRowExpand(row, !$xeTable.isRowExpandByRow(row));
5261
5267
  },
5262
5268
  /**
5263
5269
  * 设置所有行的展开与否
@@ -5286,9 +5292,9 @@ export default defineComponent({
5286
5292
  * @param {Boolean} expanded 是否展开
5287
5293
  */
5288
5294
  setRowExpand(rows, expanded) {
5289
- const { rowExpandedMaps, rowExpandLazyLoadedMaps, expandColumn } = reactData;
5290
- const { fullAllDataRowIdData } = internalData;
5291
- let rExpandedMaps = Object.assign({}, rowExpandedMaps);
5295
+ const { expandColumn } = reactData;
5296
+ let { fullAllDataRowIdData, rowExpandedMaps, rowExpandLazyLoadedMaps } = internalData;
5297
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
5292
5298
  const expandOpts = computeExpandOpts.value;
5293
5299
  const { reserve, lazy, accordion, toggleMethod } = expandOpts;
5294
5300
  const lazyRests = [];
@@ -5300,30 +5306,31 @@ export default defineComponent({
5300
5306
  }
5301
5307
  if (accordion) {
5302
5308
  // 只能同时展开一个
5303
- rExpandedMaps = {};
5309
+ rowExpandedMaps = {};
5310
+ internalData.rowExpandedMaps = rowExpandedMaps;
5304
5311
  rows = rows.slice(rows.length - 1, rows.length);
5305
5312
  }
5306
5313
  const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) })) : rows;
5307
5314
  if (expanded) {
5308
5315
  validRows.forEach((row) => {
5309
- const rowid = getRowid($xeTable, row);
5310
- if (!rExpandedMaps[rowid]) {
5316
+ const rowid = handleGetRowId(row);
5317
+ if (!rowExpandedMaps[rowid]) {
5311
5318
  const rowRest = fullAllDataRowIdData[rowid];
5312
5319
  const isLoad = lazy && !rowRest.expandLoaded && !rowExpandLazyLoadedMaps[rowid];
5313
5320
  if (isLoad) {
5314
5321
  lazyRests.push(handleAsyncRowExpand(row));
5315
5322
  }
5316
5323
  else {
5317
- rExpandedMaps[rowid] = row;
5324
+ rowExpandedMaps[rowid] = row;
5318
5325
  }
5319
5326
  }
5320
5327
  });
5321
5328
  }
5322
5329
  else {
5323
5330
  validRows.forEach(item => {
5324
- const rowid = getRowid($xeTable, item);
5325
- if (rExpandedMaps[rowid]) {
5326
- delete rExpandedMaps[rowid];
5331
+ const rowid = handleGetRowId(item);
5332
+ if (rowExpandedMaps[rowid]) {
5333
+ delete rowExpandedMaps[rowid];
5327
5334
  }
5328
5335
  });
5329
5336
  }
@@ -5331,7 +5338,7 @@ export default defineComponent({
5331
5338
  validRows.forEach((row) => handleRowExpandReserve(row, expanded));
5332
5339
  }
5333
5340
  }
5334
- reactData.rowExpandedMaps = rExpandedMaps;
5341
+ reactData.rowExpandedFlag++;
5335
5342
  return Promise.all(lazyRests)
5336
5343
  .then(() => nextTick())
5337
5344
  .then(() => $xeTable.recalculate(true))
@@ -5347,9 +5354,10 @@ export default defineComponent({
5347
5354
  * @param {Row} row 行对象
5348
5355
  */
5349
5356
  isRowExpandByRow(row) {
5350
- const { rowExpandedMaps } = reactData;
5357
+ const { rowExpandedFlag } = reactData;
5358
+ const { rowExpandedMaps } = internalData;
5351
5359
  const rowid = getRowid($xeTable, row);
5352
- return !!rowExpandedMaps[rowid];
5360
+ return !!rowExpandedFlag && !!rowExpandedMaps[rowid];
5353
5361
  },
5354
5362
  isExpandByRow(row) {
5355
5363
  // 已废弃
@@ -5366,7 +5374,8 @@ export default defineComponent({
5366
5374
  const expandOpts = computeExpandOpts.value;
5367
5375
  const { reserve } = expandOpts;
5368
5376
  const expList = $xeTable.getRowExpandRecords();
5369
- reactData.rowExpandedMaps = {};
5377
+ internalData.rowExpandedMaps = {};
5378
+ reactData.rowExpandedFlag++;
5370
5379
  if (reserve) {
5371
5380
  tableFullData.forEach((row) => handleRowExpandReserve(row, false));
5372
5381
  }
@@ -5387,7 +5396,7 @@ export default defineComponent({
5387
5396
  },
5388
5397
  getRowExpandRecords() {
5389
5398
  const rest = [];
5390
- XEUtils.each(reactData.rowExpandedMaps, item => {
5399
+ XEUtils.each(internalData.rowExpandedMaps, item => {
5391
5400
  if (item) {
5392
5401
  rest.push(item);
5393
5402
  }
@@ -5396,7 +5405,7 @@ export default defineComponent({
5396
5405
  },
5397
5406
  getTreeExpandRecords() {
5398
5407
  const rest = [];
5399
- XEUtils.each(reactData.treeExpandedMaps, item => {
5408
+ XEUtils.each(internalData.treeExpandedMaps, item => {
5400
5409
  if (item) {
5401
5410
  rest.push(item);
5402
5411
  }
@@ -5413,12 +5422,10 @@ export default defineComponent({
5413
5422
  return rowRest && !!rowRest.treeLoaded;
5414
5423
  },
5415
5424
  clearTreeExpandLoaded(rows) {
5416
- const { fullAllDataRowIdData } = internalData;
5425
+ const { fullAllDataRowIdData, treeExpandedMaps } = internalData;
5417
5426
  const treeOpts = computeTreeOpts.value;
5418
5427
  const { transform } = treeOpts;
5419
- let tExpandedMaps = {};
5420
5428
  if (rows) {
5421
- tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
5422
5429
  if (!XEUtils.isArray(rows)) {
5423
5430
  rows = [rows];
5424
5431
  }
@@ -5427,8 +5434,8 @@ export default defineComponent({
5427
5434
  const rowRest = fullAllDataRowIdData[rowid];
5428
5435
  if (rowRest) {
5429
5436
  rowRest.treeLoaded = false;
5430
- if (tExpandedMaps[rowid]) {
5431
- delete tExpandedMaps[rowid];
5437
+ if (treeExpandedMaps[rowid]) {
5438
+ delete treeExpandedMaps[rowid];
5432
5439
  }
5433
5440
  }
5434
5441
  });
@@ -5438,7 +5445,8 @@ export default defineComponent({
5438
5445
  rowRest.treeLoaded = false;
5439
5446
  });
5440
5447
  }
5441
- reactData.treeExpandedMaps = {};
5448
+ internalData.treeExpandedMaps = {};
5449
+ reactData.treeExpandedFlag++;
5442
5450
  if (transform) {
5443
5451
  handleVirtualTreeToList();
5444
5452
  return $xeTable.handleTableData();
@@ -5450,7 +5458,7 @@ export default defineComponent({
5450
5458
  * @param {Row} row 行对象
5451
5459
  */
5452
5460
  reloadTreeExpand(row) {
5453
- const { treeExpandLazyLoadedMaps } = reactData;
5461
+ const { treeExpandLazyLoadedMaps } = internalData;
5454
5462
  const treeOpts = computeTreeOpts.value;
5455
5463
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
5456
5464
  const { transform, lazy } = treeOpts;
@@ -5536,8 +5544,9 @@ export default defineComponent({
5536
5544
  * @param {Row} row 行对象
5537
5545
  */
5538
5546
  isTreeExpandByRow(row) {
5539
- const { treeExpandedMaps } = reactData;
5540
- return !!treeExpandedMaps[getRowid($xeTable, row)];
5547
+ const { treeExpandedFlag } = reactData;
5548
+ const { treeExpandedMaps } = internalData;
5549
+ return !!treeExpandedFlag && !!treeExpandedMaps[getRowid($xeTable, row)];
5541
5550
  },
5542
5551
  /**
5543
5552
  * 手动清空树形节点的展开状态,数据会恢复成未展开的状态
@@ -5547,19 +5556,20 @@ export default defineComponent({
5547
5556
  const treeOpts = computeTreeOpts.value;
5548
5557
  const childrenField = treeOpts.children || treeOpts.childrenField;
5549
5558
  const { transform, reserve } = treeOpts;
5550
- const expList = tableMethods.getTreeExpandRecords();
5551
- reactData.treeExpandedMaps = {};
5559
+ const expList = $xeTable.getTreeExpandRecords();
5560
+ internalData.treeExpandedMaps = {};
5561
+ reactData.treeExpandedFlag++;
5552
5562
  if (reserve) {
5553
5563
  XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), { children: childrenField });
5554
5564
  }
5555
- return tablePrivateMethods.handleTableData().then(() => {
5565
+ return $xeTable.handleTableData().then(() => {
5556
5566
  if (transform) {
5557
5567
  handleVirtualTreeToList();
5558
- return tablePrivateMethods.handleTableData();
5568
+ return $xeTable.handleTableData();
5559
5569
  }
5560
5570
  }).then(() => {
5561
5571
  if (expList.length) {
5562
- return tableMethods.recalculate();
5572
+ return $xeTable.recalculate();
5563
5573
  }
5564
5574
  });
5565
5575
  },
@@ -5814,7 +5824,13 @@ export default defineComponent({
5814
5824
  const { id } = props;
5815
5825
  const customOpts = computeCustomOpts.value;
5816
5826
  const { collectColumn } = internalData;
5817
- const { checkMethod } = customOpts;
5827
+ const { storage, checkMethod } = customOpts;
5828
+ const isAllCustom = storage === true;
5829
+ const storageOpts = isAllCustom ? {} : Object.assign({}, storage || {});
5830
+ const isCustomResizable = isAllCustom || storageOpts.resizable;
5831
+ const isCustomVisible = isAllCustom || storageOpts.visible;
5832
+ const isCustomFixed = isAllCustom || storageOpts.fixed;
5833
+ const isCustomSort = isAllCustom || storageOpts.sort;
5818
5834
  const resizableData = {};
5819
5835
  const sortData = {};
5820
5836
  const visibleData = {};
@@ -5834,44 +5850,34 @@ export default defineComponent({
5834
5850
  let hasFixed = 0;
5835
5851
  let hasVisible = 0;
5836
5852
  XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
5853
+ const colKey = column.getKey();
5854
+ if (!colKey) {
5855
+ errLog('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`]);
5856
+ return;
5857
+ }
5837
5858
  // 只支持一级
5838
5859
  if (!parentColumn) {
5839
- collectColumn.forEach((column) => {
5840
- const colKey = column.getKey();
5841
- if (colKey) {
5842
- hasSort = 1;
5843
- sortData[colKey] = column.renderSortNumber;
5844
- }
5845
- });
5846
- if (column.fixed !== column.defaultFixed) {
5847
- const colKey = column.getKey();
5848
- if (colKey) {
5849
- hasFixed = 1;
5850
- fixedData[colKey] = column.fixed;
5851
- }
5860
+ if (isCustomSort) {
5861
+ hasSort = 1;
5862
+ sortData[colKey] = column.renderSortNumber;
5852
5863
  }
5853
- }
5854
- if (column.resizeWidth) {
5855
- const colKey = column.getKey();
5856
- if (colKey) {
5857
- hasResizable = 1;
5858
- resizableData[colKey] = column.renderWidth;
5864
+ if (isCustomFixed && column.fixed !== column.defaultFixed) {
5865
+ hasFixed = 1;
5866
+ fixedData[colKey] = column.fixed;
5859
5867
  }
5860
5868
  }
5861
- if (!checkMethod || checkMethod({ column })) {
5869
+ if (isCustomResizable && column.resizeWidth) {
5870
+ hasResizable = 1;
5871
+ resizableData[colKey] = column.renderWidth;
5872
+ }
5873
+ if (isCustomVisible && (!checkMethod || checkMethod({ column }))) {
5862
5874
  if (!column.visible && column.defaultVisible) {
5863
- const colKey = column.getKey();
5864
- if (colKey) {
5865
- hasVisible = 1;
5866
- visibleData[colKey] = false;
5867
- }
5875
+ hasVisible = 1;
5876
+ visibleData[colKey] = false;
5868
5877
  }
5869
5878
  else if (column.visible && !column.defaultVisible) {
5870
- const colKey = column.getKey();
5871
- if (colKey) {
5872
- hasVisible = 1;
5873
- visibleData[colKey] = true;
5874
- }
5879
+ hasVisible = 1;
5880
+ visibleData[colKey] = true;
5875
5881
  }
5876
5882
  }
5877
5883
  });
@@ -6232,7 +6238,7 @@ export default defineComponent({
6232
6238
  $xeTable.moveTabSelected(activeParams, hasShiftKey, evnt);
6233
6239
  }
6234
6240
  else {
6235
- $xeTable.moveSelected(activeParams, isLeftArrow, true, isRightArrow, false, evnt);
6241
+ $xeTable.moveEnterSelected(activeParams, isLeftArrow, true, isRightArrow, false, evnt);
6236
6242
  }
6237
6243
  }
6238
6244
  else {
@@ -6266,7 +6272,7 @@ export default defineComponent({
6266
6272
  return;
6267
6273
  }
6268
6274
  }
6269
- $xeTable.moveSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt);
6275
+ $xeTable.moveEnterSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt);
6270
6276
  if (enterMethod) {
6271
6277
  enterMethod(etrParams);
6272
6278
  }
@@ -6297,11 +6303,7 @@ export default defineComponent({
6297
6303
  if (!isEditStatus) {
6298
6304
  // 如果按下了方向键
6299
6305
  if (selected.row && selected.column) {
6300
- $xeTable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
6301
- }
6302
- else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
6303
- // 当前行按键上下移动
6304
- $xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
6306
+ $xeTable.moveArrowSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
6305
6307
  }
6306
6308
  }
6307
6309
  }
@@ -6680,8 +6682,9 @@ export default defineComponent({
6680
6682
  * @param {Event} evnt 事件
6681
6683
  * @param {Row} row 行对象
6682
6684
  */
6683
- const handleTooltip = (evnt, tdEl, overflowElem, tipElem, params) => {
6684
- if (!overflowElem) {
6685
+ const handleTooltip = (evnt, tdEl, overflowElem, params) => {
6686
+ const tipOverEl = overflowElem || tdEl;
6687
+ if (!tipOverEl) {
6685
6688
  return nextTick();
6686
6689
  }
6687
6690
  params.cell = tdEl;
@@ -6691,9 +6694,8 @@ export default defineComponent({
6691
6694
  const { showAll, contentMethod } = tooltipOpts;
6692
6695
  const customContent = contentMethod ? contentMethod(params) : null;
6693
6696
  const useCustom = contentMethod && !XEUtils.eqNull(customContent);
6694
- const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? overflowElem.innerText : overflowElem.textContent).trim();
6695
- const isCellOverflow = overflowElem.scrollWidth > overflowElem.clientWidth;
6696
- if (content && (showAll || useCustom || isCellOverflow)) {
6697
+ const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim();
6698
+ if (content && (showAll || useCustom || (tipOverEl.scrollWidth > tipOverEl.clientWidth))) {
6697
6699
  Object.assign(tooltipStore, {
6698
6700
  row,
6699
6701
  column,
@@ -6703,7 +6705,7 @@ export default defineComponent({
6703
6705
  nextTick(() => {
6704
6706
  const $tooltip = refTooltip.value;
6705
6707
  if ($tooltip && $tooltip.open) {
6706
- $tooltip.open(isCellOverflow ? overflowElem : (tipElem || overflowElem), formatText(content));
6708
+ $tooltip.open(tipOverEl, formatText(content));
6707
6709
  }
6708
6710
  });
6709
6711
  }
@@ -6845,18 +6847,14 @@ export default defineComponent({
6845
6847
  */
6846
6848
  cacheRowMap() {
6847
6849
  const { treeConfig } = props;
6848
- const { treeExpandedMaps } = reactData;
6849
- const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
6850
+ const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData;
6850
6851
  const treeOpts = computeTreeOpts.value;
6851
6852
  const childrenField = treeOpts.children || treeOpts.childrenField;
6852
6853
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
6853
6854
  const { lazy } = treeOpts;
6854
- const rowkey = getRowkey($xeTable);
6855
- const isDeepKey = rowkey.indexOf('.') > -1;
6856
6855
  const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
6857
6856
  const fullDataRowIdMaps = {};
6858
- const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
6859
- const handleRowId = isDeepKey ? updateDeepRowKey : updateFastRowKey;
6857
+ const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
6860
6858
  const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
6861
6859
  let rowRest = fullAllDataRowIdMaps[rowid];
6862
6860
  if (!rowRest) {
@@ -6877,15 +6875,14 @@ export default defineComponent({
6877
6875
  };
6878
6876
  if (treeConfig) {
6879
6877
  XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
6880
- const rowid = handleRowId(row, rowkey);
6878
+ const rowid = handleUpdateRowId(row);
6881
6879
  if (treeConfig && lazy) {
6882
- const treeExpRest = treeTempExpandedMaps[rowid];
6883
6880
  if (row[hasChildField] && row[childrenField] === undefined) {
6884
6881
  row[childrenField] = null;
6885
6882
  }
6886
- if (treeExpRest) {
6883
+ if (treeExpandedMaps[rowid]) {
6887
6884
  if (!row[childrenField] || !row[childrenField].length) {
6888
- delete treeTempExpandedMaps[rowid];
6885
+ delete treeExpandedMaps[rowid];
6889
6886
  }
6890
6887
  }
6891
6888
  }
@@ -6894,27 +6891,22 @@ export default defineComponent({
6894
6891
  }
6895
6892
  else {
6896
6893
  tableFullData.forEach((row, index, items) => {
6897
- handleRowCache(row, index, items, index, null, handleRowId(row, rowkey), 0, index + 1);
6894
+ handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1);
6898
6895
  });
6899
6896
  }
6900
6897
  internalData.fullDataRowIdData = fullDataRowIdMaps;
6901
6898
  internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
6902
- reactData.treeExpandedMaps = treeTempExpandedMaps;
6899
+ reactData.treeExpandedFlag++;
6903
6900
  },
6904
6901
  cacheSourceMap(fullData) {
6905
6902
  const { treeConfig } = props;
6906
6903
  const treeOpts = computeTreeOpts.value;
6907
- let { sourceDataRowIdData } = internalData;
6908
6904
  const sourceData = XEUtils.clone(fullData, true);
6909
- const rowkey = getRowkey($xeTable);
6910
- sourceDataRowIdData = internalData.sourceDataRowIdData = {};
6905
+ const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
6906
+ const sourceRowIdData = {};
6911
6907
  const handleSourceRow = (row) => {
6912
- let rowid = getRowid($xeTable, row);
6913
- if (eqEmptyValue(rowid)) {
6914
- rowid = getRowUniqueId();
6915
- XEUtils.set(row, rowkey, rowid);
6916
- }
6917
- sourceDataRowIdData[rowid] = row;
6908
+ const rowid = handleUpdateRowId(row);
6909
+ sourceRowIdData[rowid] = row;
6918
6910
  };
6919
6911
  // 源数据缓存
6920
6912
  if (treeConfig) {
@@ -6924,6 +6916,7 @@ export default defineComponent({
6924
6916
  else {
6925
6917
  sourceData.forEach(handleSourceRow);
6926
6918
  }
6919
+ internalData.sourceDataRowIdData = sourceRowIdData;
6927
6920
  internalData.tableSourceData = sourceData;
6928
6921
  },
6929
6922
  /**
@@ -7375,8 +7368,22 @@ export default defineComponent({
7375
7368
  }
7376
7369
  }
7377
7370
  // 兼容老版本
7378
- let rest;
7379
- if (!evntList.some((func) => func(Object.assign({ $grid: $xeGrid, $table: $xeTable, $event: evnt }, args)) === false)) {
7371
+ let rest = null;
7372
+ let isStop = false;
7373
+ for (let i = 0; i < evntList.length; i++) {
7374
+ const func = evntList[i];
7375
+ const fnRest = func(Object.assign({ $grid: $xeGrid, $table: $xeTable, $event: evnt }, args));
7376
+ if (fnRest === false) {
7377
+ isStop = true;
7378
+ break;
7379
+ }
7380
+ else if (fnRest && fnRest.status === false) {
7381
+ rest = fnRest.result;
7382
+ isStop = true;
7383
+ break;
7384
+ }
7385
+ }
7386
+ if (!isStop) {
7380
7387
  if (next) {
7381
7388
  rest = next();
7382
7389
  }
@@ -7388,9 +7395,7 @@ export default defineComponent({
7388
7395
  },
7389
7396
  updateCheckboxStatus() {
7390
7397
  const { treeConfig } = props;
7391
- const { selectCheckboxMaps, treeIndeterminateMaps } = reactData;
7392
- const selectRowMaps = Object.assign({}, selectCheckboxMaps);
7393
- const halfRowMaps = Object.assign({}, treeIndeterminateMaps);
7398
+ const { selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
7394
7399
  const treeOpts = computeTreeOpts.value;
7395
7400
  const { transform, mapChildrenField } = treeOpts;
7396
7401
  const childrenField = treeOpts.children || treeOpts.childrenField;
@@ -7402,10 +7407,11 @@ export default defineComponent({
7402
7407
  }
7403
7408
  // 树结构
7404
7409
  if (treeConfig) {
7410
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
7405
7411
  const childRowMaps = {};
7406
7412
  const childRowList = [];
7407
7413
  XEUtils.eachTree(afterTreeFullData, (row) => {
7408
- const rowid = getRowid($xeTable, row);
7414
+ const rowid = handleGetRowId(row);
7409
7415
  const childList = row[transform ? mapChildrenField : childrenField];
7410
7416
  if (childList && childList.length && !childRowMaps[rowid]) {
7411
7417
  childRowMaps[rowid] = 1;
@@ -7421,13 +7427,13 @@ export default defineComponent({
7421
7427
  let vLen = 0; // 有效行
7422
7428
  childList.forEach(checkMethod
7423
7429
  ? (item) => {
7424
- const childRowid = getRowid($xeTable, item);
7425
- const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
7430
+ const childRowid = handleGetRowId(item);
7431
+ const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid];
7426
7432
  if (checkMethod({ row: item })) {
7427
7433
  if (isSelect) {
7428
7434
  sLen++;
7429
7435
  }
7430
- else if (halfRowMaps[childRowid]) {
7436
+ else if (treeIndeterminateRowMaps[childRowid]) {
7431
7437
  hLen++;
7432
7438
  }
7433
7439
  vLen++;
@@ -7436,18 +7442,18 @@ export default defineComponent({
7436
7442
  if (isSelect) {
7437
7443
  sLen++;
7438
7444
  }
7439
- else if (halfRowMaps[childRowid]) {
7445
+ else if (treeIndeterminateRowMaps[childRowid]) {
7440
7446
  hLen++;
7441
7447
  }
7442
7448
  }
7443
7449
  }
7444
7450
  : item => {
7445
- const childRowid = getRowid($xeTable, item);
7446
- const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
7451
+ const childRowid = handleGetRowId(item);
7452
+ const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid];
7447
7453
  if (isSelect) {
7448
7454
  sLen++;
7449
7455
  }
7450
- else if (halfRowMaps[childRowid]) {
7456
+ else if (treeIndeterminateRowMaps[childRowid]) {
7451
7457
  hLen++;
7452
7458
  }
7453
7459
  vLen++;
@@ -7459,51 +7465,50 @@ export default defineComponent({
7459
7465
  }
7460
7466
  if (isSelected) {
7461
7467
  if (!checkField) {
7462
- selectRowMaps[rowid] = row;
7468
+ selectCheckboxMaps[rowid] = row;
7463
7469
  }
7464
- if (halfRowMaps[rowid]) {
7465
- delete halfRowMaps[rowid];
7470
+ if (treeIndeterminateRowMaps[rowid]) {
7471
+ delete treeIndeterminateRowMaps[rowid];
7466
7472
  }
7467
7473
  }
7468
7474
  else {
7469
7475
  if (!checkField) {
7470
- if (selectRowMaps[rowid]) {
7471
- delete selectRowMaps[rowid];
7476
+ if (selectCheckboxMaps[rowid]) {
7477
+ delete selectCheckboxMaps[rowid];
7472
7478
  }
7473
7479
  }
7474
7480
  if (halfSelect) {
7475
- halfRowMaps[rowid] = row;
7481
+ treeIndeterminateRowMaps[rowid] = row;
7476
7482
  }
7477
7483
  else {
7478
- if (halfRowMaps[rowid]) {
7479
- delete halfRowMaps[rowid];
7484
+ if (treeIndeterminateRowMaps[rowid]) {
7485
+ delete treeIndeterminateRowMaps[rowid];
7480
7486
  }
7481
7487
  }
7482
7488
  }
7483
7489
  });
7484
7490
  }
7485
- reactData.selectCheckboxMaps = selectRowMaps;
7486
- reactData.treeIndeterminateMaps = halfRowMaps;
7491
+ reactData.updateCheckboxFlag++;
7487
7492
  },
7488
7493
  updateAllCheckboxStatus() {
7489
7494
  const { treeConfig } = props;
7490
- const { selectCheckboxMaps, treeIndeterminateMaps } = reactData;
7495
+ const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
7491
7496
  const checkboxOpts = computeCheckboxOpts.value;
7492
7497
  const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
7493
- const { afterFullData, afterTreeFullData, checkboxReserveRowMap } = internalData;
7498
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
7494
7499
  let sLen = 0; // 已选
7495
7500
  let hLen = 0; // 半选
7496
7501
  let vLen = 0; // 有效行
7497
7502
  const rootList = (treeConfig ? afterTreeFullData : afterFullData);
7498
7503
  rootList.forEach(checkMethod
7499
7504
  ? row => {
7500
- const childRowid = getRowid($xeTable, row);
7505
+ const childRowid = handleGetRowId(row);
7501
7506
  const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
7502
7507
  if (checkMethod({ row })) {
7503
7508
  if (selected) {
7504
7509
  sLen++;
7505
7510
  }
7506
- else if (treeIndeterminateMaps[childRowid]) {
7511
+ else if (treeIndeterminateRowMaps[childRowid]) {
7507
7512
  hLen++;
7508
7513
  }
7509
7514
  vLen++;
@@ -7512,18 +7517,18 @@ export default defineComponent({
7512
7517
  if (selected) {
7513
7518
  sLen++;
7514
7519
  }
7515
- else if (treeIndeterminateMaps[childRowid]) {
7520
+ else if (treeIndeterminateRowMaps[childRowid]) {
7516
7521
  hLen++;
7517
7522
  }
7518
7523
  }
7519
7524
  }
7520
7525
  : row => {
7521
- const childRowid = getRowid($xeTable, row);
7526
+ const childRowid = handleGetRowId(row);
7522
7527
  const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
7523
7528
  if (selected) {
7524
7529
  sLen++;
7525
7530
  }
7526
- else if (treeIndeterminateMaps[childRowid]) {
7531
+ else if (treeIndeterminateRowMaps[childRowid]) {
7527
7532
  hLen++;
7528
7533
  }
7529
7534
  vLen++;
@@ -7547,13 +7552,13 @@ export default defineComponent({
7547
7552
  */
7548
7553
  handleBatchSelectRows(rows, checked, isForce) {
7549
7554
  const { treeConfig } = props;
7550
- const { selectCheckboxMaps } = reactData;
7551
- const selectRowMaps = Object.assign({}, selectCheckboxMaps);
7555
+ const { selectCheckboxMaps } = internalData;
7552
7556
  const treeOpts = computeTreeOpts.value;
7553
7557
  const { transform, mapChildrenField } = treeOpts;
7554
7558
  const childrenField = treeOpts.children || treeOpts.childrenField;
7555
7559
  const checkboxOpts = computeCheckboxOpts.value;
7556
7560
  const { checkField, checkStrictly, checkMethod } = checkboxOpts;
7561
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
7557
7562
  // indeterminateField 仅支持读取
7558
7563
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
7559
7564
  if (checkField) {
@@ -7569,59 +7574,57 @@ export default defineComponent({
7569
7574
  handleCheckboxReserveRow(row, checked);
7570
7575
  }
7571
7576
  }, { children: transform ? mapChildrenField : childrenField });
7572
- reactData.selectCheckboxMaps = selectRowMaps;
7577
+ reactData.updateCheckboxFlag++;
7573
7578
  return;
7574
7579
  }
7575
- else {
7576
- // 列表
7577
- rows.forEach(row => {
7578
- if (isForce || (!checkMethod || checkMethod({ row }))) {
7579
- XEUtils.set(row, checkField, checked);
7580
- handleCheckboxReserveRow(row, checked);
7581
- }
7582
- });
7583
- }
7584
- reactData.selectCheckboxMaps = selectRowMaps;
7580
+ // 列表
7581
+ rows.forEach(row => {
7582
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
7583
+ XEUtils.set(row, checkField, checked);
7584
+ handleCheckboxReserveRow(row, checked);
7585
+ }
7586
+ });
7587
+ reactData.updateCheckboxFlag++;
7585
7588
  return;
7586
7589
  }
7587
7590
  // 树结构
7588
7591
  if (treeConfig && !checkStrictly) {
7589
7592
  // 更新子节点状态
7590
7593
  XEUtils.eachTree(rows, (row) => {
7591
- const rowid = getRowid($xeTable, row);
7594
+ const rowid = handleGetRowId(row);
7592
7595
  if (isForce || (!checkMethod || checkMethod({ row }))) {
7593
7596
  if (checked) {
7594
- selectRowMaps[rowid] = row;
7597
+ selectCheckboxMaps[rowid] = row;
7595
7598
  }
7596
7599
  else {
7597
- if (selectRowMaps[rowid]) {
7598
- delete selectRowMaps[rowid];
7600
+ if (selectCheckboxMaps[rowid]) {
7601
+ delete selectCheckboxMaps[rowid];
7599
7602
  }
7600
7603
  }
7601
7604
  handleCheckboxReserveRow(row, checked);
7602
7605
  }
7603
7606
  }, { children: transform ? mapChildrenField : childrenField });
7604
- reactData.selectCheckboxMaps = selectRowMaps;
7607
+ reactData.updateCheckboxFlag++;
7605
7608
  return;
7606
7609
  }
7607
7610
  // 列表
7608
7611
  rows.forEach(row => {
7609
- const rowid = getRowid($xeTable, row);
7612
+ const rowid = handleGetRowId(row);
7610
7613
  if (isForce || (!checkMethod || checkMethod({ row }))) {
7611
7614
  if (checked) {
7612
- if (!selectRowMaps[rowid]) {
7613
- selectRowMaps[rowid] = row;
7615
+ if (!selectCheckboxMaps[rowid]) {
7616
+ selectCheckboxMaps[rowid] = row;
7614
7617
  }
7615
7618
  }
7616
7619
  else {
7617
- if (selectRowMaps[rowid]) {
7618
- delete selectRowMaps[rowid];
7620
+ if (selectCheckboxMaps[rowid]) {
7621
+ delete selectCheckboxMaps[rowid];
7619
7622
  }
7620
7623
  }
7621
7624
  handleCheckboxReserveRow(row, checked);
7625
+ reactData.updateCheckboxFlag++;
7622
7626
  }
7623
7627
  });
7624
- reactData.selectCheckboxMaps = selectRowMaps;
7625
7628
  },
7626
7629
  /**
7627
7630
  * 即将移除
@@ -7669,7 +7672,7 @@ export default defineComponent({
7669
7672
  return;
7670
7673
  }
7671
7674
  if (tooltipStore.column !== column || !tooltipStore.visible) {
7672
- handleTooltip(evnt, thEl, cellEl, null, params);
7675
+ handleTooltip(evnt, thEl, thEl.querySelector('.vxe-cell--title') || cellEl, params);
7673
7676
  }
7674
7677
  },
7675
7678
  /**
@@ -7696,7 +7699,7 @@ export default defineComponent({
7696
7699
  }
7697
7700
  }
7698
7701
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
7699
- handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), null, params);
7702
+ handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
7700
7703
  }
7701
7704
  },
7702
7705
  /**
@@ -7705,10 +7708,10 @@ export default defineComponent({
7705
7708
  triggerFooterTooltipEvent(evnt, params) {
7706
7709
  const { column } = params;
7707
7710
  const { tooltipStore } = reactData;
7708
- const cell = evnt.currentTarget;
7711
+ const tdEl = evnt.currentTarget;
7709
7712
  handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row);
7710
7713
  if (tooltipStore.column !== column || !tooltipStore.visible) {
7711
- handleTooltip(evnt, cell, cell.querySelector('.vxe-cell--wrapper') || cell.children[0], null, params);
7714
+ handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
7712
7715
  }
7713
7716
  },
7714
7717
  handleTargetLeaveEvent() {
@@ -7733,17 +7736,18 @@ export default defineComponent({
7733
7736
  const { _lastResizeTime } = internalData;
7734
7737
  const sortOpts = computeSortOpts.value;
7735
7738
  const columnOpts = computeColumnOpts.value;
7739
+ const currentColumnOpts = computeCurrentColumnOpts.value;
7736
7740
  const { column } = params;
7737
7741
  const cell = evnt.currentTarget;
7738
7742
  const triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
7739
7743
  const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag;
7740
7744
  const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag;
7741
7745
  if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
7742
- tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column));
7746
+ $xeTable.triggerSortEvent(evnt, column, getNextSortOrder(column));
7743
7747
  }
7744
7748
  dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt);
7745
- if (columnOpts.isCurrent || props.highlightCurrentColumn) {
7746
- tablePrivateMethods.triggerCurrentColumnEvent(evnt, params);
7749
+ if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
7750
+ $xeTable.triggerCurrentColumnEvent(evnt, params);
7747
7751
  }
7748
7752
  },
7749
7753
  triggerHeaderCellDblclickEvent(evnt, params) {
@@ -7755,7 +7759,7 @@ export default defineComponent({
7755
7759
  * 如果是双击模式,则单击后选中状态
7756
7760
  */
7757
7761
  triggerCellClickEvent(evnt, params) {
7758
- const { highlightCurrentRow, editConfig } = props;
7762
+ const { highlightCurrentRow, highlightCurrentColumn, editConfig } = props;
7759
7763
  const { editStore, isDragResize } = reactData;
7760
7764
  if (isDragResize) {
7761
7765
  return;
@@ -7767,6 +7771,8 @@ export default defineComponent({
7767
7771
  const checkboxOpts = computeCheckboxOpts.value;
7768
7772
  const keyboardOpts = computeKeyboardOpts.value;
7769
7773
  const rowOpts = computeRowOpts.value;
7774
+ const columnOpts = computeColumnOpts.value;
7775
+ const currentColumnOpts = computeCurrentColumnOpts.value;
7770
7776
  const { actived, focused } = editStore;
7771
7777
  const { row, column } = params;
7772
7778
  const { type, treeNode } = column;
@@ -7782,29 +7788,35 @@ export default defineComponent({
7782
7788
  if (!triggerCheckbox && !triggerRadio) {
7783
7789
  // 如果是展开行
7784
7790
  if (!triggerExpandNode && (expandOpts.trigger === 'row' || (isExpandType && expandOpts.trigger === 'cell'))) {
7785
- tablePrivateMethods.triggerRowExpandEvent(evnt, params);
7791
+ $xeTable.triggerRowExpandEvent(evnt, params);
7786
7792
  }
7787
7793
  // 如果是树形表格
7788
7794
  if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
7789
- tablePrivateMethods.triggerTreeExpandEvent(evnt, params);
7795
+ $xeTable.triggerTreeExpandEvent(evnt, params);
7790
7796
  }
7791
7797
  }
7792
7798
  // 如果点击了树节点
7793
7799
  if (!triggerTreeNode) {
7794
7800
  if (!triggerExpandNode) {
7795
- // 如果是高亮行
7801
+ // 如果是当前行
7796
7802
  if (rowOpts.isCurrent || highlightCurrentRow) {
7797
7803
  if (!triggerCheckbox && !triggerRadio) {
7798
- tablePrivateMethods.triggerCurrentRowEvent(evnt, params);
7804
+ $xeTable.triggerCurrentRowEvent(evnt, params);
7805
+ }
7806
+ }
7807
+ // 如果是当前列
7808
+ if ((columnOpts.isCurrent || highlightCurrentColumn) && (!currentColumnOpts.trigger || ['cell', 'default'].includes(currentColumnOpts.trigger))) {
7809
+ if (!triggerCheckbox && !triggerRadio) {
7810
+ $xeTable.triggerCurrentColumnEvent(evnt, params);
7799
7811
  }
7800
7812
  }
7801
7813
  // 如果是单选框
7802
7814
  if (!triggerRadio && (radioOpts.trigger === 'row' || (isRadioType && radioOpts.trigger === 'cell'))) {
7803
- tablePrivateMethods.triggerRadioRowEvent(evnt, params);
7815
+ $xeTable.triggerRadioRowEvent(evnt, params);
7804
7816
  }
7805
7817
  // 如果是复选框
7806
7818
  if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
7807
- tablePrivateMethods.handleToggleCheckRowEvent(evnt, params);
7819
+ $xeTable.handleToggleCheckRowEvent(evnt, params);
7808
7820
  }
7809
7821
  }
7810
7822
  // 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
@@ -7883,7 +7895,7 @@ export default defineComponent({
7883
7895
  dispatchEvent('cell-dblclick', params, evnt);
7884
7896
  },
7885
7897
  handleToggleCheckRowEvent(evnt, params) {
7886
- const { selectCheckboxMaps } = reactData;
7898
+ const { selectCheckboxMaps } = internalData;
7887
7899
  const checkboxOpts = computeCheckboxOpts.value;
7888
7900
  const { checkField, trigger } = checkboxOpts;
7889
7901
  const { row } = params;
@@ -7898,44 +7910,46 @@ export default defineComponent({
7898
7910
  checked = !selectCheckboxMaps[getRowid($xeTable, row)];
7899
7911
  }
7900
7912
  if (evnt) {
7901
- tablePrivateMethods.triggerCheckRowEvent(evnt, params, checked);
7913
+ $xeTable.triggerCheckRowEvent(evnt, params, checked);
7902
7914
  }
7903
7915
  else {
7904
- tablePrivateMethods.handleBatchSelectRows([row], checked);
7905
- tablePrivateMethods.checkSelectionStatus();
7916
+ $xeTable.handleBatchSelectRows([row], checked);
7917
+ $xeTable.checkSelectionStatus();
7906
7918
  }
7907
7919
  },
7908
7920
  triggerCheckRowEvent(evnt, params, checked) {
7909
- const checkboxOpts = computeCheckboxOpts.value;
7910
7921
  const { row } = params;
7911
7922
  const { afterFullData } = internalData;
7923
+ const checkboxOpts = computeCheckboxOpts.value;
7912
7924
  const { checkMethod, trigger } = checkboxOpts;
7913
7925
  if (trigger === 'manual') {
7914
7926
  return;
7915
7927
  }
7916
7928
  evnt.stopPropagation();
7917
7929
  if (checkboxOpts.isShiftKey && evnt.shiftKey && !props.treeConfig) {
7918
- const checkboxRecords = tableMethods.getCheckboxRecords();
7930
+ const checkboxRecords = $xeTable.getCheckboxRecords();
7919
7931
  if (checkboxRecords.length) {
7920
7932
  const firstRow = checkboxRecords[0];
7921
- const _rowIndex = tableMethods.getVTRowIndex(row);
7922
- const _firstRowIndex = tableMethods.getVTRowIndex(firstRow);
7933
+ const _rowIndex = $xeTable.getVTRowIndex(row);
7934
+ const _firstRowIndex = $xeTable.getVTRowIndex(firstRow);
7923
7935
  if (_rowIndex !== _firstRowIndex) {
7924
- tableMethods.setAllCheckboxRow(false);
7936
+ $xeTable.setAllCheckboxRow(false);
7925
7937
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
7926
- handleCheckedCheckboxRow(rangeRows, true, false);
7938
+ nextTick(() => {
7939
+ handleCheckedCheckboxRow(rangeRows, true, false);
7940
+ });
7927
7941
  dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
7928
7942
  return;
7929
7943
  }
7930
7944
  }
7931
7945
  }
7932
7946
  if (!checkMethod || checkMethod({ row })) {
7933
- tablePrivateMethods.handleBatchSelectRows([row], checked);
7934
- tablePrivateMethods.checkSelectionStatus();
7947
+ $xeTable.handleBatchSelectRows([row], checked);
7948
+ $xeTable.checkSelectionStatus();
7935
7949
  dispatchEvent('checkbox-change', Object.assign({
7936
- records: tableMethods.getCheckboxRecords(),
7937
- reserves: tableMethods.getCheckboxReserveRecords(),
7938
- indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
7950
+ records: () => $xeTable.getCheckboxRecords(),
7951
+ reserves: () => $xeTable.getCheckboxReserveRecords(),
7952
+ indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
7939
7953
  checked
7940
7954
  }, params), evnt);
7941
7955
  }
@@ -8007,7 +8021,8 @@ export default defineComponent({
8007
8021
  * 展开行事件
8008
8022
  */
8009
8023
  triggerRowExpandEvent(evnt, params) {
8010
- const { rowExpandLazyLoadedMaps, expandColumn: column } = reactData;
8024
+ const { expandColumn: column } = reactData;
8025
+ const { rowExpandLazyLoadedMaps } = internalData;
8011
8026
  const expandOpts = computeExpandOpts.value;
8012
8027
  const { row } = params;
8013
8028
  const { lazy, trigger } = expandOpts;
@@ -8017,18 +8032,18 @@ export default defineComponent({
8017
8032
  evnt.stopPropagation();
8018
8033
  const rowid = getRowid($xeTable, row);
8019
8034
  if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
8020
- const expanded = !tableMethods.isRowExpandByRow(row);
8021
- const columnIndex = tableMethods.getColumnIndex(column);
8022
- const $columnIndex = tableMethods.getVMColumnIndex(column);
8023
- tableMethods.setRowExpand(row, expanded);
8035
+ const expanded = !$xeTable.isRowExpandByRow(row);
8036
+ const columnIndex = $xeTable.getColumnIndex(column);
8037
+ const $columnIndex = $xeTable.getVMColumnIndex(column);
8038
+ $xeTable.setRowExpand(row, expanded);
8024
8039
  dispatchEvent('toggle-row-expand', {
8025
8040
  expanded,
8026
8041
  column,
8027
8042
  columnIndex,
8028
8043
  $columnIndex,
8029
8044
  row,
8030
- rowIndex: tableMethods.getRowIndex(row),
8031
- $rowIndex: tableMethods.getVMRowIndex(row)
8045
+ rowIndex: $xeTable.getRowIndex(row),
8046
+ $rowIndex: $xeTable.getVMRowIndex(row)
8032
8047
  }, evnt);
8033
8048
  }
8034
8049
  },
@@ -8036,7 +8051,7 @@ export default defineComponent({
8036
8051
  * 展开树节点事件
8037
8052
  */
8038
8053
  triggerTreeExpandEvent(evnt, params) {
8039
- const { treeExpandLazyLoadedMaps } = reactData;
8054
+ const { treeExpandLazyLoadedMaps } = internalData;
8040
8055
  const treeOpts = computeTreeOpts.value;
8041
8056
  const { row, column } = params;
8042
8057
  const { lazy, trigger } = treeOpts;
@@ -8046,10 +8061,10 @@ export default defineComponent({
8046
8061
  evnt.stopPropagation();
8047
8062
  const rowid = getRowid($xeTable, row);
8048
8063
  if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
8049
- const expanded = !tableMethods.isTreeExpandByRow(row);
8050
- const columnIndex = tableMethods.getColumnIndex(column);
8051
- const $columnIndex = tableMethods.getVMColumnIndex(column);
8052
- tableMethods.setTreeExpand(row, expanded);
8064
+ const expanded = !$xeTable.isTreeExpandByRow(row);
8065
+ const columnIndex = $xeTable.getColumnIndex(column);
8066
+ const $columnIndex = $xeTable.getVMColumnIndex(column);
8067
+ $xeTable.setTreeExpand(row, expanded);
8053
8068
  dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
8054
8069
  }
8055
8070
  },
@@ -8194,12 +8209,11 @@ export default defineComponent({
8194
8209
  handleRowDragSwapEvent(evnt, isSyncRow, dragRow, prevDragRow, prevDragPos, prevDragToChild) {
8195
8210
  const { treeConfig, dragConfig } = props;
8196
8211
  const rowDragOpts = computeRowDragOpts.value;
8197
- const { fullAllDataRowIdData } = internalData;
8212
+ const { afterFullData, tableFullData, fullAllDataRowIdData } = internalData;
8198
8213
  const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod, dragToChildMethod } = rowDragOpts;
8199
8214
  const treeOpts = computeTreeOpts.value;
8200
8215
  const { transform, rowField, mapChildrenField, parentField } = treeOpts;
8201
8216
  const childrenField = treeOpts.children || treeOpts.childrenField;
8202
- const { afterFullData, tableFullData } = internalData;
8203
8217
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
8204
8218
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
8205
8219
  const errRest = {
@@ -9053,10 +9067,10 @@ export default defineComponent({
9053
9067
  return;
9054
9068
  }
9055
9069
  const { highlightHoverRow } = tableProps;
9056
- const { scrollXLoad, scrollYLoad } = reactData;
9070
+ const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
9057
9071
  const leftFixedWidth = computeLeftFixedWidth.value;
9058
9072
  const rightFixedWidth = computeRightFixedWidth.value;
9059
- if (!(scrollYLoad || leftFixedWidth || rightFixedWidth)) {
9073
+ if (!(leftFixedWidth || rightFixedWidth || expandColumn)) {
9060
9074
  return;
9061
9075
  }
9062
9076
  const { elemStore, lastScrollTop, lastScrollLeft } = internalData;
@@ -9298,8 +9312,8 @@ export default defineComponent({
9298
9312
  },
9299
9313
  // 更新纵向 Y 可视渲染上下剩余空间大小
9300
9314
  updateScrollYSpace() {
9301
- const { isAllOverflow, scrollYLoad, expandColumn, rowExpandedMaps } = reactData;
9302
- const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData;
9315
+ const { isAllOverflow, scrollYLoad, expandColumn } = reactData;
9316
+ const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
9303
9317
  const { startIndex } = scrollYStore;
9304
9318
  const expandOpts = computeExpandOpts.value;
9305
9319
  const rowOpts = computeRowOpts.value;
@@ -9644,6 +9658,7 @@ export default defineComponent({
9644
9658
  })
9645
9659
  ];
9646
9660
  if (expandColumn) {
9661
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
9647
9662
  tableRowExpandedList.forEach((row) => {
9648
9663
  const expandOpts = computeExpandOpts.value;
9649
9664
  const { height: expandHeight, padding } = expandOpts;
@@ -9651,7 +9666,7 @@ export default defineComponent({
9651
9666
  const treeOpts = computeTreeOpts.value;
9652
9667
  const { transform, seqMode } = treeOpts;
9653
9668
  const cellStyle = {};
9654
- const rowid = getRowid($xeTable, row);
9669
+ const rowid = handleGetRowId(row);
9655
9670
  const rest = fullAllDataRowIdData[rowid];
9656
9671
  let rowLevel = 0;
9657
9672
  let seq = -1;