vxe-table 3.14.0-beta.2 → 3.14.0-beta.20

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 (157) hide show
  1. package/es/grid/src/grid.js +78 -48
  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/filter/panel.js +12 -2
  24. package/es/table/module/keyboard/mixin.js +86 -21
  25. package/es/table/render/index.js +90 -59
  26. package/es/table/src/body.js +12 -7
  27. package/es/table/src/cell.js +10 -9
  28. package/es/table/src/footer.js +9 -4
  29. package/es/table/src/header.js +2 -2
  30. package/es/table/src/methods.js +444 -231
  31. package/es/table/src/props.js +4 -0
  32. package/es/table/src/table.js +28 -6
  33. package/es/table/src/util.js +65 -7
  34. package/es/ui/index.js +1 -1
  35. package/es/ui/src/log.js +1 -1
  36. package/helper/vetur/attributes.json +1 -1
  37. package/helper/vetur/tags.json +1 -1
  38. package/lib/grid/src/grid.js +85 -65
  39. package/lib/grid/src/grid.min.js +1 -1
  40. package/lib/index.umd.js +922 -448
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/locale/lang/ar-EG.js +7 -1
  43. package/lib/locale/lang/ar-EG.min.js +1 -1
  44. package/lib/locale/lang/de-DE.js +7 -1
  45. package/lib/locale/lang/de-DE.min.js +1 -1
  46. package/lib/locale/lang/en-US.js +7 -1
  47. package/lib/locale/lang/en-US.min.js +1 -1
  48. package/lib/locale/lang/en-US.umd.js +7 -1
  49. package/lib/locale/lang/es-ES.js +7 -1
  50. package/lib/locale/lang/es-ES.min.js +1 -1
  51. package/lib/locale/lang/es-ES.umd.js +7 -1
  52. package/lib/locale/lang/fr-FR.js +7 -1
  53. package/lib/locale/lang/fr-FR.min.js +1 -1
  54. package/lib/locale/lang/hu-HU.js +7 -1
  55. package/lib/locale/lang/hu-HU.min.js +1 -1
  56. package/lib/locale/lang/hu-HU.umd.js +7 -1
  57. package/lib/locale/lang/hy-AM.js +7 -1
  58. package/lib/locale/lang/hy-AM.min.js +1 -1
  59. package/lib/locale/lang/id-ID.js +7 -1
  60. package/lib/locale/lang/id-ID.min.js +1 -1
  61. package/lib/locale/lang/it-IT.js +7 -1
  62. package/lib/locale/lang/it-IT.min.js +1 -1
  63. package/lib/locale/lang/ja-JP.js +7 -1
  64. package/lib/locale/lang/ja-JP.min.js +1 -1
  65. package/lib/locale/lang/ja-JP.umd.js +7 -1
  66. package/lib/locale/lang/ko-KR.js +7 -1
  67. package/lib/locale/lang/ko-KR.min.js +1 -1
  68. package/lib/locale/lang/ko-KR.umd.js +7 -1
  69. package/lib/locale/lang/nb-NO.js +7 -1
  70. package/lib/locale/lang/nb-NO.min.js +1 -1
  71. package/lib/locale/lang/pt-BR.js +7 -1
  72. package/lib/locale/lang/pt-BR.min.js +1 -1
  73. package/lib/locale/lang/pt-BR.umd.js +7 -1
  74. package/lib/locale/lang/ru-RU.js +7 -1
  75. package/lib/locale/lang/ru-RU.min.js +1 -1
  76. package/lib/locale/lang/ru-RU.umd.js +7 -1
  77. package/lib/locale/lang/th-TH.js +7 -1
  78. package/lib/locale/lang/th-TH.min.js +1 -1
  79. package/lib/locale/lang/ug-CN.js +7 -1
  80. package/lib/locale/lang/ug-CN.min.js +1 -1
  81. package/lib/locale/lang/uk-UA.js +7 -1
  82. package/lib/locale/lang/uk-UA.min.js +1 -1
  83. package/lib/locale/lang/uk-UA.umd.js +7 -1
  84. package/lib/locale/lang/vi-VN.js +7 -1
  85. package/lib/locale/lang/vi-VN.min.js +1 -1
  86. package/lib/locale/lang/zh-CHT.js +7 -1
  87. package/lib/locale/lang/zh-CHT.min.js +1 -1
  88. package/lib/locale/lang/zh-CHT.umd.js +7 -1
  89. package/lib/locale/lang/zh-CN.js +7 -1
  90. package/lib/locale/lang/zh-CN.min.js +1 -1
  91. package/lib/locale/lang/zh-CN.umd.js +7 -1
  92. package/lib/style.css +1 -1
  93. package/lib/table/module/filter/panel.js +8 -2
  94. package/lib/table/module/filter/panel.min.js +1 -1
  95. package/lib/table/module/keyboard/mixin.js +89 -25
  96. package/lib/table/module/keyboard/mixin.min.js +1 -1
  97. package/lib/table/render/index.js +99 -64
  98. package/lib/table/render/index.min.js +1 -1
  99. package/lib/table/src/body.js +11 -6
  100. package/lib/table/src/body.min.js +1 -1
  101. package/lib/table/src/cell.js +15 -8
  102. package/lib/table/src/cell.min.js +1 -1
  103. package/lib/table/src/footer.js +9 -3
  104. package/lib/table/src/footer.min.js +1 -1
  105. package/lib/table/src/header.js +2 -1
  106. package/lib/table/src/header.min.js +1 -1
  107. package/lib/table/src/methods.js +491 -252
  108. package/lib/table/src/methods.min.js +1 -1
  109. package/lib/table/src/props.js +4 -0
  110. package/lib/table/src/props.min.js +1 -1
  111. package/lib/table/src/table.js +28 -6
  112. package/lib/table/src/table.min.js +1 -1
  113. package/lib/table/src/util.js +72 -7
  114. package/lib/table/src/util.min.js +1 -1
  115. package/lib/ui/index.js +1 -1
  116. package/lib/ui/index.min.js +1 -1
  117. package/lib/ui/src/log.js +1 -1
  118. package/lib/ui/src/log.min.js +1 -1
  119. package/package.json +2 -2
  120. package/packages/grid/src/grid.ts +92 -57
  121. package/packages/locale/lang/ar-EG.ts +7 -1
  122. package/packages/locale/lang/de-DE.ts +7 -1
  123. package/packages/locale/lang/en-US.ts +7 -1
  124. package/packages/locale/lang/es-ES.ts +7 -1
  125. package/packages/locale/lang/fr-FR.ts +7 -1
  126. package/packages/locale/lang/hu-HU.ts +7 -1
  127. package/packages/locale/lang/hy-AM.ts +7 -1
  128. package/packages/locale/lang/id-ID.ts +7 -1
  129. package/packages/locale/lang/it-IT.ts +7 -1
  130. package/packages/locale/lang/ja-JP.ts +7 -1
  131. package/packages/locale/lang/ko-KR.ts +7 -1
  132. package/packages/locale/lang/nb-NO.ts +7 -1
  133. package/packages/locale/lang/pt-BR.ts +7 -1
  134. package/packages/locale/lang/ru-RU.ts +7 -1
  135. package/packages/locale/lang/th-TH.ts +7 -1
  136. package/packages/locale/lang/ug-CN.ts +7 -1
  137. package/packages/locale/lang/uk-UA.ts +7 -1
  138. package/packages/locale/lang/vi-VN.ts +7 -1
  139. package/packages/locale/lang/zh-CHT.ts +7 -1
  140. package/packages/locale/lang/zh-CN.ts +7 -1
  141. package/packages/table/module/filter/panel.ts +12 -2
  142. package/packages/table/module/keyboard/mixin.ts +94 -27
  143. package/packages/table/render/index.ts +89 -57
  144. package/packages/table/src/body.ts +11 -6
  145. package/packages/table/src/cell.ts +10 -9
  146. package/packages/table/src/footer.ts +9 -4
  147. package/packages/table/src/header.ts +2 -2
  148. package/packages/table/src/methods.ts +486 -249
  149. package/packages/table/src/props.ts +16 -12
  150. package/packages/table/src/table.ts +36 -6
  151. package/packages/table/src/util.ts +73 -7
  152. /package/es/{iconfont.1741079977180.ttf → iconfont.1742353673989.ttf} +0 -0
  153. /package/es/{iconfont.1741079977180.woff → iconfont.1742353673989.woff} +0 -0
  154. /package/es/{iconfont.1741079977180.woff2 → iconfont.1742353673989.woff2} +0 -0
  155. /package/lib/{iconfont.1741079977180.ttf → iconfont.1742353673989.ttf} +0 -0
  156. /package/lib/{iconfont.1741079977180.woff → iconfont.1742353673989.woff} +0 -0
  157. /package/lib/{iconfont.1741079977180.woff2 → iconfont.1742353673989.woff2} +0 -0
@@ -3,10 +3,11 @@ import { browse, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEv
3
3
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
4
4
  import { VxeUI } from '../../ui';
5
5
  import Cell from './cell';
6
- import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getColReMinWidth, getRefElem } from './util';
6
+ import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getRefElem } from './util';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
8
8
  import { warnLog, errLog } from '../../ui/src/log';
9
9
  const { getConfig, getI18n, renderer, formats, interceptor, createEvent } = VxeUI;
10
+ const supportMaxRow = 5e6;
10
11
  const customStorageKey = 'VXE_CUSTOM_STORE';
11
12
  const maxYHeight = 5e6;
12
13
  const maxXWidth = 5e6;
@@ -218,7 +219,7 @@ function cacheColumnMap($xeTable) {
218
219
  }
219
220
  else {
220
221
  if ((storage && !type) || (columnOpts.drag && (isCrossDrag || isSelfToChildDrag))) {
221
- errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field`]);
222
+ errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field=?`]);
222
223
  }
223
224
  }
224
225
  if (!hasFixed && fixed) {
@@ -750,6 +751,25 @@ function updateStyle($xeTable) {
750
751
  }
751
752
  return $xeTable.$nextTick();
752
753
  }
754
+ function checkValidate($xeTable, type) {
755
+ if ($xeTable.triggerValidate) {
756
+ return $xeTable.triggerValidate(type);
757
+ }
758
+ return $xeTable.$nextTick();
759
+ }
760
+ /**
761
+ * 当单元格发生改变时
762
+ * 如果存在规则,则校验
763
+ */
764
+ function handleChangeCell($xeTable, evnt, params) {
765
+ checkValidate($xeTable, 'blur')
766
+ .catch((e) => e)
767
+ .then(() => {
768
+ $xeTable.handleEdit(params, evnt)
769
+ .then(() => checkValidate($xeTable, 'change'))
770
+ .catch((e) => e);
771
+ });
772
+ }
753
773
  function handleRadioReserveRow($xeTable, row) {
754
774
  const internalData = $xeTable;
755
775
  const radioOpts = $xeTable.computeRadioOpts;
@@ -800,6 +820,8 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
800
820
  const childrenField = treeOpts.children || treeOpts.childrenField;
801
821
  const checkboxOpts = $xeTable.computeCheckboxOpts;
802
822
  const { checkField, reserve, checkMethod } = checkboxOpts;
823
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
824
+ // indeterminateField 仅支持读取
803
825
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
804
826
  const selectRowMaps = {};
805
827
  /**
@@ -840,7 +862,8 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
840
862
  */
841
863
  XEUtils.eachTree(afterFullData, (row) => {
842
864
  if (isForce || (!checkMethod || checkMethod({ row }))) {
843
- selectRowMaps[getRowid($xeTable, row)] = row;
865
+ const rowid = handleGetRowId(row);
866
+ selectRowMaps[rowid] = row;
844
867
  }
845
868
  }, { children: childrenField });
846
869
  }
@@ -851,7 +874,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
851
874
  */
852
875
  if (!isForce && checkMethod) {
853
876
  XEUtils.eachTree(afterFullData, (row) => {
854
- const rowid = getRowid($xeTable, row);
877
+ const rowid = handleGetRowId(row);
855
878
  if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
856
879
  selectRowMaps[rowid] = row;
857
880
  }
@@ -868,7 +891,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
868
891
  */
869
892
  if (!isForce && checkMethod) {
870
893
  afterFullData.forEach((row) => {
871
- const rowid = getRowid($xeTable, row);
894
+ const rowid = handleGetRowId(row);
872
895
  if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
873
896
  selectRowMaps[rowid] = row;
874
897
  }
@@ -876,7 +899,8 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
876
899
  }
877
900
  else {
878
901
  afterFullData.forEach(row => {
879
- selectRowMaps[getRowid($xeTable, row)] = row;
902
+ const rowid = handleGetRowId(row);
903
+ selectRowMaps[rowid] = row;
880
904
  });
881
905
  }
882
906
  }
@@ -888,7 +912,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
888
912
  */
889
913
  if (!isForce && checkMethod) {
890
914
  afterFullData.forEach((row) => {
891
- const rowid = getRowid($xeTable, row);
915
+ const rowid = handleGetRowId(row);
892
916
  if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
893
917
  selectRowMaps[rowid] = row;
894
918
  }
@@ -2263,6 +2287,10 @@ const Methods = {
2263
2287
  }
2264
2288
  return [];
2265
2289
  },
2290
+ getEl() {
2291
+ const $xeTable = this;
2292
+ return $xeTable.$refs.refElem;
2293
+ },
2266
2294
  /**
2267
2295
  * 获取父容器元素
2268
2296
  */
@@ -2274,10 +2302,26 @@ const Methods = {
2274
2302
  * 获取父容器的高度
2275
2303
  */
2276
2304
  getParentHeight() {
2277
- const { $el, $xegrid, height } = this;
2278
- const parentElem = $el.parentNode;
2279
- const parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0;
2280
- return Math.floor($xegrid ? $xegrid.getParentHeight() : XEUtils.toNumber(getComputedStyle(parentElem).height) - parentPaddingSize);
2305
+ const $xeTable = this;
2306
+ const $xeGrid = $xeTable.$xeGrid;
2307
+ const props = $xeTable;
2308
+ const { height } = props;
2309
+ const el = $xeTable.$refs.refElem;
2310
+ if (el) {
2311
+ const parentElem = el.parentNode;
2312
+ const parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0;
2313
+ let parentWrapperHeight = 0;
2314
+ if (parentElem) {
2315
+ if ($xeGrid && hasClass(parentElem, 'vxe-grid--table-wrapper')) {
2316
+ parentWrapperHeight = $xeGrid.getParentHeight();
2317
+ }
2318
+ else {
2319
+ parentWrapperHeight = parentElem.clientHeight;
2320
+ }
2321
+ }
2322
+ return Math.floor(parentWrapperHeight - parentPaddingSize);
2323
+ }
2324
+ return 0;
2281
2325
  },
2282
2326
  /**
2283
2327
  * 获取需要排除的高度
@@ -2365,6 +2409,9 @@ const Methods = {
2365
2409
  const childrenField = treeOpts.children || treeOpts.childrenField;
2366
2410
  let treeData = [];
2367
2411
  let fullData = datas ? datas.slice(0) : [];
2412
+ if (fullData.length > supportMaxRow) {
2413
+ errLog('vxe.error.errMaxRow', [supportMaxRow]);
2414
+ }
2368
2415
  if (treeConfig) {
2369
2416
  // 树结构自动转换
2370
2417
  if (treeOpts.transform) {
@@ -2459,7 +2506,7 @@ const Methods = {
2459
2506
  // warnLog('vxe.error.reqProp', ['table.show-overflow'])
2460
2507
  // }
2461
2508
  if (this.spanMethod) {
2462
- warnLog('vxe.error.scrollErrProp', ['table.span-method']);
2509
+ errLog('vxe.error.scrollErrProp', ['table.span-method']);
2463
2510
  }
2464
2511
  }
2465
2512
  handleReserveStatus($xeTable);
@@ -2612,30 +2659,13 @@ const Methods = {
2612
2659
  const treeOpts = $xeTable.computeTreeOpts;
2613
2660
  const childrenField = treeOpts.children || treeOpts.childrenField;
2614
2661
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
2615
- const rowkey = getRowkey($xeTable);
2662
+ const { lazy } = treeOpts;
2616
2663
  const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
2617
2664
  const fullDataRowIdMaps = {};
2618
2665
  const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
2619
- const handleRow = (row, index, items, path, parentRow, nodes) => {
2620
- let rowid = getRowid($xeTable, row);
2621
- const seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
2622
- const level = nodes ? nodes.length - 1 : 0;
2623
- if (eqEmptyValue(rowid)) {
2624
- rowid = getRowUniqueId();
2625
- XEUtils.set(row, rowkey, rowid);
2626
- }
2627
- if (treeConfig && treeOpts.lazy) {
2628
- const treeExpRest = treeExpandedMaps[rowid];
2629
- if (row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
2630
- row[childrenField] = null;
2631
- }
2632
- if (treeExpRest) {
2633
- if (!row[childrenField] || !row[childrenField].length) {
2634
- delete treeTempExpandedMaps[rowid];
2635
- }
2636
- }
2637
- }
2638
- let rowRest = fullAllDataRowIdData[rowid];
2666
+ const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
2667
+ const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
2668
+ let rowRest = fullAllDataRowIdMaps[rowid];
2639
2669
  if (!rowRest) {
2640
2670
  rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
2641
2671
  }
@@ -2645,35 +2675,49 @@ const Methods = {
2645
2675
  rowRest.items = items;
2646
2676
  rowRest.parent = parentRow;
2647
2677
  rowRest.level = level;
2648
- rowRest.index = treeConfig && parentRow ? -1 : index;
2678
+ rowRest.index = currIndex;
2679
+ rowRest.treeIndex = index;
2649
2680
  fullDataRowIdMaps[rowid] = rowRest;
2650
2681
  fullAllDataRowIdMaps[rowid] = rowRest;
2651
2682
  };
2652
2683
  if (treeConfig) {
2653
- XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField });
2684
+ XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
2685
+ const rowid = handleUpdateRowId(row);
2686
+ if (treeConfig && lazy) {
2687
+ const treeExpRest = treeTempExpandedMaps[rowid];
2688
+ if (row[hasChildField] && row[childrenField] === undefined) {
2689
+ row[childrenField] = null;
2690
+ }
2691
+ if (treeExpRest) {
2692
+ if (!row[childrenField] || !row[childrenField].length) {
2693
+ delete treeTempExpandedMaps[rowid];
2694
+ }
2695
+ }
2696
+ }
2697
+ handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, toTreePathSeq(path));
2698
+ }, { children: childrenField });
2654
2699
  }
2655
2700
  else {
2656
- tableFullData.forEach(handleRow);
2701
+ tableFullData.forEach((row, index, items) => {
2702
+ handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1);
2703
+ });
2657
2704
  }
2658
2705
  internalData.fullDataRowIdData = fullDataRowIdMaps;
2659
2706
  internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
2660
2707
  reactData.treeExpandedMaps = treeTempExpandedMaps;
2661
2708
  },
2662
2709
  cacheSourceMap(fullData) {
2663
- let { treeConfig, treeOpts, sourceDataRowIdData } = this;
2710
+ const $xeTable = this;
2711
+ const props = $xeTable;
2712
+ const internalData = $xeTable;
2713
+ const { treeConfig } = props;
2714
+ const treeOpts = $xeTable.computeTreeOpts;
2664
2715
  const sourceData = XEUtils.clone(fullData, true);
2665
- const rowkey = getRowkey(this);
2666
- sourceDataRowIdData = this.sourceDataRowIdData = {};
2716
+ const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
2717
+ const sourceRowIdData = {};
2667
2718
  const handleSourceRow = (row) => {
2668
- let rowid = getRowid(this, row);
2669
- if (eqEmptyValue(rowid)) {
2670
- rowid = getRowUniqueId();
2671
- XEUtils.set(row, rowkey, rowid);
2672
- }
2673
- sourceDataRowIdData[rowid] = {
2674
- row,
2675
- rowid
2676
- };
2719
+ const rowid = handleUpdateRowId(row);
2720
+ sourceRowIdData[rowid] = row;
2677
2721
  };
2678
2722
  // 源数据缓存
2679
2723
  if (treeConfig) {
@@ -2683,7 +2727,8 @@ const Methods = {
2683
2727
  else {
2684
2728
  sourceData.forEach(handleSourceRow);
2685
2729
  }
2686
- this.tableSourceData = sourceData;
2730
+ internalData.sourceDataRowIdData = sourceRowIdData;
2731
+ internalData.tableSourceData = sourceData;
2687
2732
  },
2688
2733
  getParams() {
2689
2734
  return this.params;
@@ -2982,12 +3027,14 @@ const Methods = {
2982
3027
  const reactData = $xeTable;
2983
3028
  const internalData = $xeTable;
2984
3029
  const { keepSource, treeConfig } = props;
2985
- const { fullAllDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
3030
+ const { editStore } = reactData;
3031
+ const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
3032
+ const removeTempMaps = Object.assign({}, editStore.removeMaps);
2986
3033
  const treeOpts = $xeTable.computeTreeOpts;
2987
3034
  const { transform } = treeOpts;
2988
3035
  if (!keepSource) {
2989
3036
  if (process.env.NODE_ENV === 'development') {
2990
- warnLog('vxe.error.reqProp', ['keep-source']);
3037
+ errLog('vxe.error.reqProp', ['keep-source']);
2991
3038
  }
2992
3039
  return $xeTable.$nextTick();
2993
3040
  }
@@ -3002,23 +3049,24 @@ const Methods = {
3002
3049
  }
3003
3050
  let reDelFlag = false;
3004
3051
  if (targetRows.length) {
3005
- targetRows.forEach((row) => {
3006
- if (!$xeTable.isInsertByRow(row)) {
3007
- const rowid = getRowid($xeTable, row);
3008
- const oRow = sourceDataRowIdData[rowid];
3009
- if (oRow && row) {
3010
- if (field) {
3011
- XEUtils.set(row, field, XEUtils.clone(XEUtils.get(oRow, field), true));
3012
- }
3013
- else {
3014
- XEUtils.destructuring(row, XEUtils.clone(oRow, true));
3015
- }
3016
- if ($xeTable.isRemoveByRow(row)) {
3017
- const rowRest = fullAllDataRowIdData[rowid];
3018
- if (rowRest) {
3019
- const reRow = rowRest.row;
3020
- tableFullData.unshift(reRow);
3021
- afterFullData.unshift(reRow);
3052
+ targetRows.forEach((item) => {
3053
+ const rowid = getRowid($xeTable, item);
3054
+ const rowRest = fullAllDataRowIdData[rowid];
3055
+ if (rowRest) {
3056
+ const row = rowRest.row;
3057
+ if (!$xeTable.isInsertByRow(row)) {
3058
+ const oRow = sourceDataRowIdData[rowid];
3059
+ if (oRow && row) {
3060
+ if (field) {
3061
+ XEUtils.set(row, field, XEUtils.clone(XEUtils.get(oRow, field), true));
3062
+ }
3063
+ else {
3064
+ XEUtils.destructuring(row, XEUtils.clone(oRow, true));
3065
+ }
3066
+ if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
3067
+ delete removeTempMaps[rowid];
3068
+ tableFullData.unshift(row);
3069
+ afterFullData.unshift(row);
3022
3070
  reDelFlag = true;
3023
3071
  }
3024
3072
  }
@@ -3028,6 +3076,7 @@ const Methods = {
3028
3076
  }
3029
3077
  if (rows) {
3030
3078
  if (reDelFlag) {
3079
+ editStore.removeMaps = removeTempMaps;
3031
3080
  $xeTable.updateFooter();
3032
3081
  $xeTable.cacheRowMap(false);
3033
3082
  $xeTable.handleTableData(treeConfig && transform);
@@ -3190,20 +3239,25 @@ const Methods = {
3190
3239
  },
3191
3240
  /**
3192
3241
  * 检查行或列数据是否发生改变
3193
- * @param {Row} row 行对象
3242
+ * @param {Row} rowOrId 行对象
3194
3243
  * @param {String} field 字段名
3195
3244
  */
3196
- isUpdateByRow(row, field) {
3197
- const { tableFullColumn, keepSource, sourceDataRowIdData, fullDataRowIdData } = this;
3245
+ isUpdateByRow(rowOrId, field) {
3246
+ const $xeTable = this;
3247
+ const props = $xeTable;
3248
+ const internalData = $xeTable;
3249
+ const { keepSource } = props;
3250
+ const { tableFullColumn, fullDataRowIdData, sourceDataRowIdData } = internalData;
3198
3251
  if (keepSource) {
3199
- const rowid = getRowid(this, row);
3252
+ const rowid = XEUtils.isString(rowOrId) || XEUtils.isNumber(rowOrId) ? rowOrId : getRowid($xeTable, rowOrId);
3253
+ const rowRest = fullDataRowIdData[rowid];
3200
3254
  // 新增的数据不需要检测
3201
- if (!fullDataRowIdData[rowid]) {
3255
+ if (!rowRest) {
3202
3256
  return false;
3203
3257
  }
3204
- const oldRest = sourceDataRowIdData[rowid];
3205
- if (oldRest) {
3206
- const oRow = oldRest.row;
3258
+ const row = rowRest.row;
3259
+ const oRow = sourceDataRowIdData[rowid];
3260
+ if (oRow) {
3207
3261
  if (arguments.length > 1) {
3208
3262
  return !eqCellValue(oRow, row, field);
3209
3263
  }
@@ -3265,6 +3319,99 @@ const Methods = {
3265
3319
  tableColumn: this.tableColumn.slice(0)
3266
3320
  };
3267
3321
  },
3322
+ /**
3323
+ * 移动列到指定列的位置
3324
+ * @param fieldOrColumn
3325
+ * @param targetFieldOrColumn
3326
+ * @param options
3327
+ */
3328
+ moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
3329
+ const $xeTable = this;
3330
+ const internalData = $xeTable;
3331
+ const { fullColumnIdData, visibleColumn } = internalData;
3332
+ const { dragToChild, dragPos, isCrossDrag } = Object.assign({}, options);
3333
+ const dragCol = handleFieldOrColumn($xeTable, fieldOrColumn);
3334
+ let prevDragCol = null;
3335
+ const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
3336
+ let defPos = 'left';
3337
+ if (XEUtils.isNumber(targetFieldOrColumn)) {
3338
+ if (colRest && targetFieldOrColumn) {
3339
+ let currList = colRest.items;
3340
+ let offsetIndex = colRest._index + targetFieldOrColumn;
3341
+ if (isCrossDrag) {
3342
+ currList = visibleColumn;
3343
+ offsetIndex = colRest._index + targetFieldOrColumn;
3344
+ }
3345
+ if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
3346
+ prevDragCol = currList[offsetIndex];
3347
+ }
3348
+ if (targetFieldOrColumn > 0) {
3349
+ defPos = 'right';
3350
+ }
3351
+ }
3352
+ }
3353
+ else {
3354
+ prevDragCol = handleFieldOrColumn($xeTable, targetFieldOrColumn);
3355
+ const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
3356
+ if (colRest && targetColRest) {
3357
+ if (targetColRest._index > colRest._index) {
3358
+ defPos = 'right';
3359
+ }
3360
+ }
3361
+ }
3362
+ return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
3363
+ },
3364
+ /**
3365
+ * 移动行到指定行的位置
3366
+ * @param rowidOrRow
3367
+ * @param targetRowidOrRow
3368
+ * @param options
3369
+ */
3370
+ moveRowTo(rowidOrRow, targetRowidOrRow, options) {
3371
+ const $xeTable = this;
3372
+ const props = $xeTable;
3373
+ const internalData = $xeTable;
3374
+ const { treeConfig } = props;
3375
+ const { fullAllDataRowIdData, afterFullData } = internalData;
3376
+ const { dragToChild, dragPos, isCrossDrag } = Object.assign({}, options);
3377
+ const treeOpts = $xeTable.computeTreeOpts;
3378
+ const dragRow = handleRowidOrRow($xeTable, rowidOrRow);
3379
+ let prevDragRow = null;
3380
+ let defPos = 'top';
3381
+ const rowRest = dragRow ? fullAllDataRowIdData[getRowid($xeTable, dragRow)] : null;
3382
+ if (XEUtils.isNumber(targetRowidOrRow)) {
3383
+ if (rowRest && targetRowidOrRow) {
3384
+ let currList = afterFullData;
3385
+ let offsetIndex = rowRest._index + targetRowidOrRow;
3386
+ if (treeConfig) {
3387
+ currList = rowRest.items;
3388
+ if (treeOpts.transform) {
3389
+ offsetIndex = rowRest.treeIndex + targetRowidOrRow;
3390
+ if (isCrossDrag) {
3391
+ currList = afterFullData;
3392
+ offsetIndex = rowRest._index + targetRowidOrRow;
3393
+ }
3394
+ }
3395
+ }
3396
+ if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
3397
+ prevDragRow = currList[offsetIndex];
3398
+ }
3399
+ if (targetRowidOrRow > 0) {
3400
+ defPos = 'bottom';
3401
+ }
3402
+ }
3403
+ }
3404
+ else {
3405
+ prevDragRow = handleRowidOrRow($xeTable, targetRowidOrRow);
3406
+ const targetRowRest = prevDragRow ? fullAllDataRowIdData[getRowid($xeTable, prevDragRow)] : null;
3407
+ if (rowRest && targetRowRest) {
3408
+ if (targetRowRest._index > rowRest._index) {
3409
+ defPos = 'bottom';
3410
+ }
3411
+ }
3412
+ }
3413
+ return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
3414
+ },
3268
3415
  /**
3269
3416
  * 获取表格的全量列
3270
3417
  */
@@ -3285,22 +3432,30 @@ const Methods = {
3285
3432
  * 用于多选行,获取已选中的数据
3286
3433
  */
3287
3434
  getCheckboxRecords(isFull) {
3288
- const { tableFullData, afterFullData, treeConfig, treeOpts, checkboxOpts, tableFullTreeData, afterTreeFullData, afterFullRowMaps } = this;
3435
+ const $xeTable = this;
3436
+ const props = $xeTable;
3437
+ const reactData = $xeTable;
3438
+ const internalData = $xeTable;
3439
+ const { treeConfig } = props;
3440
+ const { selectCheckboxMaps } = reactData;
3441
+ const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData;
3442
+ const treeOpts = $xeTable.computeTreeOpts;
3443
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
3289
3444
  const { transform, mapChildrenField } = treeOpts;
3290
3445
  const { checkField } = checkboxOpts;
3291
3446
  const childrenField = treeOpts.children || treeOpts.childrenField;
3292
- const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
3293
3447
  let rowList = [];
3294
3448
  if (checkField) {
3295
3449
  if (treeConfig) {
3450
+ const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
3296
3451
  rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, checkField), { children: transform ? mapChildrenField : childrenField });
3297
3452
  }
3298
3453
  else {
3454
+ const currTableData = isFull ? tableFullData : afterFullData;
3299
3455
  rowList = currTableData.filter((row) => XEUtils.get(row, checkField));
3300
3456
  }
3301
3457
  }
3302
3458
  else {
3303
- const { selectCheckboxMaps, fullDataRowIdData } = this;
3304
3459
  XEUtils.each(selectCheckboxMaps, (row, rowid) => {
3305
3460
  if (isFull) {
3306
3461
  if (fullDataRowIdData[rowid]) {
@@ -3885,8 +4040,19 @@ const Methods = {
3885
4040
  }
3886
4041
  },
3887
4042
  getCustomStoreData() {
3888
- const { id, customOpts, collectColumn } = this;
3889
- const { checkMethod } = customOpts;
4043
+ const $xeTable = this;
4044
+ const props = $xeTable;
4045
+ const internalData = $xeTable;
4046
+ const { id } = props;
4047
+ const customOpts = $xeTable.computeCustomOpts;
4048
+ const { collectColumn } = internalData;
4049
+ const { storage, checkMethod } = customOpts;
4050
+ const isAllCustom = storage === true;
4051
+ const storageOpts = isAllCustom ? {} : Object.assign({}, storage || {});
4052
+ const isCustomResizable = isAllCustom || storageOpts.resizable;
4053
+ const isCustomVisible = isAllCustom || storageOpts.visible;
4054
+ const isCustomFixed = isAllCustom || storageOpts.fixed;
4055
+ const isCustomSort = isAllCustom || storageOpts.sort;
3890
4056
  const resizableData = {};
3891
4057
  const sortData = {};
3892
4058
  const visibleData = {};
@@ -3903,47 +4069,37 @@ const Methods = {
3903
4069
  }
3904
4070
  let hasResizable = 0;
3905
4071
  let hasSort = 0;
3906
- let hasFixedt = 0;
4072
+ let hasFixed = 0;
3907
4073
  let hasVisible = 0;
3908
4074
  XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
4075
+ const colKey = column.getKey();
4076
+ if (!colKey) {
4077
+ errLog('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`]);
4078
+ return;
4079
+ }
3909
4080
  // 只支持一级
3910
4081
  if (!parentColumn) {
3911
- collectColumn.forEach((column) => {
3912
- const colKey = column.getKey();
3913
- if (colKey) {
3914
- hasSort = 1;
3915
- sortData[colKey] = column.renderSortNumber;
3916
- }
3917
- });
3918
- if (column.fixed !== column.defaultFixed) {
3919
- const colKey = column.getKey();
3920
- if (colKey) {
3921
- hasFixedt = 1;
3922
- fixedData[colKey] = column.fixed;
3923
- }
4082
+ if (isCustomSort) {
4083
+ hasSort = 1;
4084
+ sortData[colKey] = column.renderSortNumber;
3924
4085
  }
3925
- }
3926
- if (column.resizeWidth) {
3927
- const colKey = column.getKey();
3928
- if (colKey) {
3929
- hasResizable = 1;
3930
- resizableData[colKey] = column.renderWidth;
4086
+ if (isCustomFixed && column.fixed !== column.defaultFixed) {
4087
+ hasFixed = 1;
4088
+ fixedData[colKey] = column.fixed;
3931
4089
  }
3932
4090
  }
3933
- if (!checkMethod || checkMethod({ column })) {
4091
+ if (isCustomResizable && column.resizeWidth) {
4092
+ hasResizable = 1;
4093
+ resizableData[colKey] = column.renderWidth;
4094
+ }
4095
+ if (isCustomVisible && (!checkMethod || checkMethod({ column }))) {
3934
4096
  if (!column.visible && column.defaultVisible) {
3935
- const colKey = column.getKey();
3936
- if (colKey) {
3937
- hasVisible = 1;
3938
- visibleData[colKey] = false;
3939
- }
4097
+ hasVisible = 1;
4098
+ visibleData[colKey] = false;
3940
4099
  }
3941
4100
  else if (column.visible && !column.defaultVisible) {
3942
- const colKey = column.getKey();
3943
- if (colKey) {
3944
- hasVisible = 1;
3945
- visibleData[colKey] = true;
3946
- }
4101
+ hasVisible = 1;
4102
+ visibleData[colKey] = true;
3947
4103
  }
3948
4104
  }
3949
4105
  });
@@ -3953,7 +4109,7 @@ const Methods = {
3953
4109
  if (hasSort) {
3954
4110
  storeData.sortData = sortData;
3955
4111
  }
3956
- if (hasFixedt) {
4112
+ if (hasFixed) {
3957
4113
  storeData.fixedData = fixedData;
3958
4114
  }
3959
4115
  if (hasVisible) {
@@ -4626,8 +4782,22 @@ const Methods = {
4626
4782
  }
4627
4783
  }
4628
4784
  // 兼容老版本
4629
- let rest;
4630
- if (!evntList.some(func => func(Object.assign({ $grid: this.$xegrid, $table: this, $event: evnt }, args)) === false)) {
4785
+ let rest = null;
4786
+ let isStop = false;
4787
+ for (let i = 0; i < evntList.length; i++) {
4788
+ const func = evntList[i];
4789
+ const fnRest = func(Object.assign({ $grid: this.$xegrid, $table: this, $event: evnt }, args));
4790
+ if (fnRest === false) {
4791
+ isStop = true;
4792
+ break;
4793
+ }
4794
+ else if (fnRest && fnRest.status === false) {
4795
+ rest = fnRest.result;
4796
+ isStop = true;
4797
+ break;
4798
+ }
4799
+ }
4800
+ if (!isStop) {
4631
4801
  if (next) {
4632
4802
  rest = next();
4633
4803
  }
@@ -4821,7 +4991,8 @@ const Methods = {
4821
4991
  if (this.isActivated) {
4822
4992
  this.preventEvent(evnt, 'event.keydown', null, () => {
4823
4993
  const { afterFullData } = internalData;
4824
- const { filterStore, isCtxMenu, ctxMenuStore, editStore, editOpts, editConfig, mouseConfig, mouseOpts, keyboardConfig, keyboardOpts, treeConfig, treeOpts, highlightCurrentRow, currentRow, bodyCtxMenu, rowOpts } = this;
4994
+ const { filterStore, isCtxMenu, ctxMenuStore, editStore, editOpts, editConfig, mouseConfig, mouseOpts, keyboardConfig, keyboardOpts, treeConfig, treeOpts, highlightCurrentRow, highlightCurrentColumn, currentRow, bodyCtxMenu, rowOpts } = this;
4995
+ const columnOpts = $xeTable.computeColumnOpts;
4825
4996
  const { selected, actived } = editStore;
4826
4997
  const { keyCode } = evnt;
4827
4998
  const hasBackspaceKey = keyCode === 8;
@@ -4975,11 +5146,15 @@ const Methods = {
4975
5146
  if (!isEditStatus) {
4976
5147
  // 如果按下了方向键
4977
5148
  if (selected.row && selected.column) {
4978
- this.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
5149
+ $xeTable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
5150
+ }
5151
+ // 当前行按键上下移动
5152
+ if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
5153
+ $xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
4979
5154
  }
4980
- else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
4981
- // 当前行按键上下移动
4982
- this.moveCurrentRow(isUpArrow, isDwArrow, evnt);
5155
+ // 当前行按键左右移动
5156
+ if ((isLeftArrow || isRightArrow) && (columnOpts.isCurrent || highlightCurrentColumn)) {
5157
+ $xeTable.moveCurrentColumn(isLeftArrow, isRightArrow, evnt);
4983
5158
  }
4984
5159
  }
4985
5160
  }
@@ -5429,6 +5604,8 @@ const Methods = {
5429
5604
  const childrenField = treeOpts.children || treeOpts.childrenField;
5430
5605
  const checkboxOpts = $xeTable.computeCheckboxOpts;
5431
5606
  const { checkField, checkStrictly, checkMethod } = checkboxOpts;
5607
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
5608
+ // indeterminateField 仅支持读取
5432
5609
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5433
5610
  if (checkField) {
5434
5611
  // 树结构
@@ -5462,7 +5639,7 @@ const Methods = {
5462
5639
  if (treeConfig && !checkStrictly) {
5463
5640
  // 更新子节点状态
5464
5641
  XEUtils.eachTree(rows, (row) => {
5465
- const rowid = getRowid($xeTable, row);
5642
+ const rowid = handleGetRowId(row);
5466
5643
  if (isForce || (!checkMethod || checkMethod({ row }))) {
5467
5644
  if (checked) {
5468
5645
  selectRowMaps[rowid] = row;
@@ -5480,7 +5657,7 @@ const Methods = {
5480
5657
  }
5481
5658
  // 列表
5482
5659
  rows.forEach(row => {
5483
- const rowid = getRowid($xeTable, row);
5660
+ const rowid = handleGetRowId(row);
5484
5661
  if (isForce || (!checkMethod || checkMethod({ row }))) {
5485
5662
  if (checked) {
5486
5663
  if (!selectRowMaps[rowid]) {
@@ -5506,7 +5683,10 @@ const Methods = {
5506
5683
  $xeTable.handleBatchSelectRows([row], checked, isForce);
5507
5684
  },
5508
5685
  handleToggleCheckRowEvent(evnt, params) {
5509
- const { selectCheckboxMaps, checkboxOpts } = this;
5686
+ const $xeTable = this;
5687
+ const reactData = $xeTable;
5688
+ const { selectCheckboxMaps } = reactData;
5689
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
5510
5690
  const { checkField, trigger } = checkboxOpts;
5511
5691
  const { row } = params;
5512
5692
  if (trigger === 'manual') {
@@ -5520,44 +5700,46 @@ const Methods = {
5520
5700
  checked = !selectCheckboxMaps[getRowid(this, row)];
5521
5701
  }
5522
5702
  if (evnt) {
5523
- this.triggerCheckRowEvent(evnt, params, checked);
5703
+ $xeTable.triggerCheckRowEvent(evnt, params, checked);
5524
5704
  }
5525
5705
  else {
5526
- this.handleSelectRow(params, checked);
5527
- this.checkSelectionStatus();
5706
+ $xeTable.handleBatchSelectRows(params, checked);
5707
+ $xeTable.checkSelectionStatus();
5528
5708
  }
5529
5709
  },
5530
5710
  triggerCheckRowEvent(evnt, params, checked) {
5531
5711
  const $xeTable = this;
5532
- const { checkboxOpts, afterFullData } = this;
5533
- const { checkMethod, trigger } = checkboxOpts;
5712
+ const internalData = $xeTable;
5534
5713
  const { row } = params;
5714
+ const { afterFullData } = internalData;
5715
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
5716
+ const { checkMethod, trigger } = checkboxOpts;
5535
5717
  if (trigger === 'manual') {
5536
5718
  return;
5537
5719
  }
5538
5720
  evnt.stopPropagation();
5539
5721
  if (checkboxOpts.isShiftKey && evnt.shiftKey && !this.treeConfig) {
5540
- const checkboxRecords = this.getCheckboxRecords();
5722
+ const checkboxRecords = $xeTable.getCheckboxRecords();
5541
5723
  if (checkboxRecords.length) {
5542
5724
  const firstRow = checkboxRecords[0];
5543
- const _rowIndex = this.getVTRowIndex(row);
5544
- const _firstRowIndex = this.getVTRowIndex(firstRow);
5725
+ const _rowIndex = $xeTable.getVTRowIndex(row);
5726
+ const _firstRowIndex = $xeTable.getVTRowIndex(firstRow);
5545
5727
  if (_rowIndex !== _firstRowIndex) {
5546
- this.setAllCheckboxRow(false);
5728
+ $xeTable.setAllCheckboxRow(false);
5547
5729
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
5548
5730
  handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
5549
- this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
5731
+ $xeTable.dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
5550
5732
  return;
5551
5733
  }
5552
5734
  }
5553
5735
  }
5554
5736
  if (!checkMethod || checkMethod({ row })) {
5555
- this.handleSelectRow(params, checked);
5556
- this.checkSelectionStatus();
5557
- this.emitEvent('checkbox-change', Object.assign({
5558
- records: this.getCheckboxRecords(),
5559
- reserves: this.getCheckboxReserveRecords(),
5560
- indeterminates: this.getCheckboxIndeterminateRecords(),
5737
+ $xeTable.handleBatchSelectRows(params, checked);
5738
+ $xeTable.checkSelectionStatus();
5739
+ $xeTable.dispatchEvent('checkbox-change', Object.assign({
5740
+ records: () => $xeTable.getCheckboxRecords(),
5741
+ reserves: () => $xeTable.getCheckboxReserveRecords(),
5742
+ indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
5561
5743
  checked
5562
5744
  }, params), evnt);
5563
5745
  }
@@ -5602,10 +5784,11 @@ const Methods = {
5602
5784
  }
5603
5785
  // 树结构
5604
5786
  if (treeConfig) {
5787
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
5605
5788
  const childRowMaps = {};
5606
5789
  const childRowList = [];
5607
5790
  XEUtils.eachTree(afterTreeFullData, (row) => {
5608
- const rowid = getRowid($xeTable, row);
5791
+ const rowid = handleGetRowId(row);
5609
5792
  const childList = row[transform ? mapChildrenField : childrenField];
5610
5793
  if (childList && childList.length && !childRowMaps[rowid]) {
5611
5794
  childRowMaps[rowid] = 1;
@@ -5621,7 +5804,7 @@ const Methods = {
5621
5804
  let vLen = 0; // 有效行
5622
5805
  childList.forEach(checkMethod
5623
5806
  ? (item) => {
5624
- const childRowid = getRowid($xeTable, item);
5807
+ const childRowid = handleGetRowId(item);
5625
5808
  const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
5626
5809
  if (checkMethod({ row: item })) {
5627
5810
  if (isSelect) {
@@ -5642,7 +5825,7 @@ const Methods = {
5642
5825
  }
5643
5826
  }
5644
5827
  : item => {
5645
- const childRowid = getRowid($xeTable, item);
5828
+ const childRowid = handleGetRowId(item);
5646
5829
  const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
5647
5830
  if (isSelect) {
5648
5831
  sLen++;
@@ -5695,13 +5878,14 @@ const Methods = {
5695
5878
  const checkboxOpts = $xeTable.computeCheckboxOpts;
5696
5879
  const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
5697
5880
  const { afterFullData, afterTreeFullData, checkboxReserveRowMap } = internalData;
5881
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
5698
5882
  let sLen = 0; // 已选
5699
5883
  let hLen = 0; // 半选
5700
5884
  let vLen = 0; // 有效行
5701
5885
  const rootList = (treeConfig ? afterTreeFullData : afterFullData);
5702
5886
  rootList.forEach(checkMethod
5703
5887
  ? row => {
5704
- const childRowid = getRowid($xeTable, row);
5888
+ const childRowid = handleGetRowId(row);
5705
5889
  const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
5706
5890
  if (checkMethod({ row })) {
5707
5891
  if (selected) {
@@ -5722,7 +5906,7 @@ const Methods = {
5722
5906
  }
5723
5907
  }
5724
5908
  : row => {
5725
- const childRowid = getRowid($xeTable, row);
5909
+ const childRowid = handleGetRowId(row);
5726
5910
  const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
5727
5911
  if (selected) {
5728
5912
  sLen++;
@@ -5837,9 +6021,9 @@ const Methods = {
5837
6021
  handleCheckedAllCheckboxRow($xeTable, value);
5838
6022
  if (evnt) {
5839
6023
  $xeTable.dispatchEvent('checkbox-all', {
5840
- records: $xeTable.getCheckboxRecords(),
5841
- reserves: $xeTable.getCheckboxReserveRecords(),
5842
- indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
6024
+ records: () => $xeTable.getCheckboxRecords(),
6025
+ reserves: () => $xeTable.getCheckboxReserveRecords(),
6026
+ indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
5843
6027
  checked: value
5844
6028
  }, evnt);
5845
6029
  }
@@ -5874,6 +6058,7 @@ const Methods = {
5874
6058
  const { tableFullData, treeConfig, treeOpts, checkboxOpts } = this;
5875
6059
  const { checkField, reserve } = checkboxOpts;
5876
6060
  const childrenField = treeOpts.children || treeOpts.childrenField;
6061
+ // indeterminateField 仅支持读取
5877
6062
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5878
6063
  if (checkField) {
5879
6064
  const handleClearChecked = (item) => {
@@ -6092,10 +6277,12 @@ const Methods = {
6092
6277
  },
6093
6278
  triggerHeaderCellClickEvent(evnt, params) {
6094
6279
  const $xeTable = this;
6280
+ const props = $xeTable;
6095
6281
  const internalData = $xeTable;
6096
6282
  const { _lastResizeTime } = internalData;
6097
6283
  const sortOpts = $xeTable.computeSortOpts;
6098
6284
  const columnOpts = $xeTable.computeColumnOpts;
6285
+ const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
6099
6286
  const { column } = params;
6100
6287
  const cell = evnt.currentTarget;
6101
6288
  const triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
@@ -6105,7 +6292,7 @@ const Methods = {
6105
6292
  $xeTable.triggerSortEvent(evnt, column, getNextSortOrder($xeTable, column));
6106
6293
  }
6107
6294
  $xeTable.dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt);
6108
- if (columnOpts.isCurrent || $xeTable.highlightCurrentColumn) {
6295
+ if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
6109
6296
  $xeTable.triggerCurrentColumnEvent(evnt, params);
6110
6297
  }
6111
6298
  return $xeTable.$nextTick();
@@ -6121,13 +6308,23 @@ const Methods = {
6121
6308
  * @param {ColumnInfo} fieldOrColumn 列配置
6122
6309
  */
6123
6310
  setCurrentColumn(fieldOrColumn) {
6124
- const column = handleFieldOrColumn(this, fieldOrColumn);
6311
+ const $xeTable = this;
6312
+ const props = $xeTable;
6313
+ const reactData = $xeTable;
6314
+ const { mouseConfig } = props;
6315
+ const mouseOpts = $xeTable.computeMouseOpts;
6316
+ const isMouseSelected = mouseConfig && mouseOpts.selected;
6317
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn);
6125
6318
  if (column) {
6126
- // this.clearCurrentRow()
6127
- this.clearCurrentColumn();
6128
- this.currentColumn = column;
6319
+ $xeTable.clearCurrentColumn();
6320
+ reactData.currentColumn = column;
6129
6321
  }
6130
- return this.$nextTick();
6322
+ return $xeTable.$nextTick().then(() => {
6323
+ // 更新状选中态
6324
+ if (isMouseSelected) {
6325
+ $xeTable.addCellSelectedClass();
6326
+ }
6327
+ });
6131
6328
  },
6132
6329
  /**
6133
6330
  * 用于当前列,手动清空当前高亮的状态
@@ -6136,25 +6333,6 @@ const Methods = {
6136
6333
  this.currentColumn = null;
6137
6334
  return this.$nextTick();
6138
6335
  },
6139
- checkValidate(type) {
6140
- if (this.triggerValidate) {
6141
- return this.triggerValidate(type);
6142
- }
6143
- return this.$nextTick();
6144
- },
6145
- /**
6146
- * 当单元格发生改变时
6147
- * 如果存在规则,则校验
6148
- */
6149
- handleChangeCell(evnt, params) {
6150
- this.checkValidate('blur')
6151
- .catch((e) => e)
6152
- .then(() => {
6153
- this.handleEdit(params, evnt)
6154
- .then(() => this.checkValidate('change'))
6155
- .catch((e) => e);
6156
- });
6157
- },
6158
6336
  /**
6159
6337
  * 列点击事件
6160
6338
  * 如果是单击模式,则激活为编辑状态
@@ -6164,7 +6342,7 @@ const Methods = {
6164
6342
  const $xeTable = this;
6165
6343
  const props = $xeTable;
6166
6344
  const reactData = $xeTable;
6167
- const { highlightCurrentRow, editConfig } = props;
6345
+ const { highlightCurrentRow, highlightCurrentColumn, editConfig } = props;
6168
6346
  const { editStore, isDragResize } = reactData;
6169
6347
  if (isDragResize) {
6170
6348
  return;
@@ -6176,6 +6354,8 @@ const Methods = {
6176
6354
  const checkboxOpts = $xeTable.computeCheckboxOpts;
6177
6355
  const keyboardOpts = $xeTable.computeKeyboardOpts;
6178
6356
  const rowOpts = $xeTable.computeRowOpts;
6357
+ const columnOpts = $xeTable.computeColumnOpts;
6358
+ const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
6179
6359
  const { actived, focused } = editStore;
6180
6360
  const { row, column } = params;
6181
6361
  const { type, treeNode } = column;
@@ -6191,11 +6371,11 @@ const Methods = {
6191
6371
  if (!triggerCheckbox && !triggerRadio) {
6192
6372
  // 如果是展开行
6193
6373
  if (!triggerExpandNode && (expandOpts.trigger === 'row' || (isExpandType && expandOpts.trigger === 'cell'))) {
6194
- this.triggerRowExpandEvent(evnt, params);
6374
+ $xeTable.triggerRowExpandEvent(evnt, params);
6195
6375
  }
6196
6376
  // 如果是树形表格
6197
6377
  if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
6198
- this.triggerTreeExpandEvent(evnt, params);
6378
+ $xeTable.triggerTreeExpandEvent(evnt, params);
6199
6379
  }
6200
6380
  }
6201
6381
  // 如果点击了树节点
@@ -6204,16 +6384,22 @@ const Methods = {
6204
6384
  // 如果是高亮行
6205
6385
  if (rowOpts.isCurrent || highlightCurrentRow) {
6206
6386
  if (!triggerCheckbox && !triggerRadio) {
6207
- this.triggerCurrentRowEvent(evnt, params);
6387
+ $xeTable.triggerCurrentRowEvent(evnt, params);
6388
+ }
6389
+ }
6390
+ // 如果是当前列
6391
+ if ((columnOpts.isCurrent || highlightCurrentColumn) && (!currentColumnOpts.trigger || ['cell', 'default'].includes(currentColumnOpts.trigger))) {
6392
+ if (!triggerCheckbox && !triggerRadio) {
6393
+ $xeTable.triggerCurrentColumnEvent(evnt, params);
6208
6394
  }
6209
6395
  }
6210
6396
  // 如果是单选框
6211
6397
  if (!triggerRadio && (radioOpts.trigger === 'row' || (isRadioType && radioOpts.trigger === 'cell'))) {
6212
- this.triggerRadioRowEvent(evnt, params);
6398
+ $xeTable.triggerRadioRowEvent(evnt, params);
6213
6399
  }
6214
6400
  // 如果是复选框
6215
6401
  if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
6216
- this.handleToggleCheckRowEvent(evnt, params);
6402
+ $xeTable.handleToggleCheckRowEvent(evnt, params);
6217
6403
  }
6218
6404
  }
6219
6405
  // 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
@@ -6225,16 +6411,16 @@ const Methods = {
6225
6411
  }
6226
6412
  if (editOpts.trigger === 'manual') {
6227
6413
  if (actived.args && actived.row === row && column !== actived.column) {
6228
- this.handleChangeCell(evnt, params);
6414
+ handleChangeCell($xeTable, evnt, params);
6229
6415
  }
6230
6416
  }
6231
6417
  else if (!actived.args || row !== actived.row || column !== actived.column) {
6232
6418
  if (editOpts.trigger === 'click') {
6233
- this.handleChangeCell(evnt, params);
6419
+ handleChangeCell($xeTable, evnt, params);
6234
6420
  }
6235
6421
  else if (editOpts.trigger === 'dblclick') {
6236
6422
  if (editOpts.mode === 'row' && actived.row === row) {
6237
- this.handleChangeCell(evnt, params);
6423
+ handleChangeCell($xeTable, evnt, params);
6238
6424
  }
6239
6425
  }
6240
6426
  }
@@ -6255,7 +6441,7 @@ const Methods = {
6255
6441
  }
6256
6442
  }
6257
6443
  }
6258
- this.emitEvent('cell-click', params, evnt);
6444
+ $xeTable.dispatchEvent('cell-click', params, evnt);
6259
6445
  },
6260
6446
  /**
6261
6447
  * 列双击点击事件
@@ -6277,17 +6463,17 @@ const Methods = {
6277
6463
  if (isEnableConf(editConfig) && editOpts.trigger === 'dblclick') {
6278
6464
  if (!actived.args || evnt.currentTarget !== actived.args.cell) {
6279
6465
  if (editOpts.mode === 'row') {
6280
- this.checkValidate('blur')
6466
+ checkValidate($xeTable, 'blur')
6281
6467
  .catch((e) => e)
6282
6468
  .then(() => {
6283
6469
  this.handleEdit(params, evnt)
6284
- .then(() => this.checkValidate('change'))
6470
+ .then(() => checkValidate($xeTable, 'change'))
6285
6471
  .catch((e) => e);
6286
6472
  });
6287
6473
  }
6288
6474
  else if (editOpts.mode === 'cell') {
6289
6475
  this.handleEdit(params, evnt)
6290
- .then(() => this.checkValidate('change'))
6476
+ .then(() => checkValidate($xeTable, 'change'))
6291
6477
  .catch((e) => e);
6292
6478
  }
6293
6479
  }
@@ -6481,6 +6667,9 @@ const Methods = {
6481
6667
  const { afterFullData, tableFullData } = internalData;
6482
6668
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
6483
6669
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
6670
+ const errRest = {
6671
+ status: false
6672
+ };
6484
6673
  if (prevDragRow && dragRow) {
6485
6674
  // 判断是否有拖动
6486
6675
  if (prevDragRow !== dragRow) {
@@ -6495,7 +6684,7 @@ const Methods = {
6495
6684
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
6496
6685
  return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then((status) => {
6497
6686
  if (!status) {
6498
- return;
6687
+ return errRest;
6499
6688
  }
6500
6689
  let oafIndex = -1;
6501
6690
  let nafIndex = -1;
@@ -6520,12 +6709,12 @@ const Methods = {
6520
6709
  if (isPeerDrag && !isCrossDrag) {
6521
6710
  if (oldRest.row[parentField] !== newRest.row[parentField]) {
6522
6711
  // 非同级
6523
- return;
6712
+ return errRest;
6524
6713
  }
6525
6714
  }
6526
6715
  else {
6527
6716
  if (!isCrossDrag) {
6528
- return;
6717
+ return errRest;
6529
6718
  }
6530
6719
  if (oldAllMaps[newRowid]) {
6531
6720
  isSelfToChildStatus = true;
@@ -6536,7 +6725,7 @@ const Methods = {
6536
6725
  content: getI18n('vxe.error.treeDragChild')
6537
6726
  });
6538
6727
  }
6539
- return;
6728
+ return errRest;
6540
6729
  }
6541
6730
  }
6542
6731
  }
@@ -6544,13 +6733,13 @@ const Methods = {
6544
6733
  else if (oldLevel) {
6545
6734
  // 子到根
6546
6735
  if (!isCrossDrag) {
6547
- return;
6736
+ return errRest;
6548
6737
  }
6549
6738
  }
6550
6739
  else if (newLevel) {
6551
6740
  // 根到子
6552
6741
  if (!isCrossDrag) {
6553
- return;
6742
+ return errRest;
6554
6743
  }
6555
6744
  if (oldAllMaps[newRowid]) {
6556
6745
  isSelfToChildStatus = true;
@@ -6561,7 +6750,7 @@ const Methods = {
6561
6750
  content: getI18n('vxe.error.treeDragChild')
6562
6751
  });
6563
6752
  }
6564
- return;
6753
+ return errRest;
6565
6754
  }
6566
6755
  }
6567
6756
  }
@@ -6621,27 +6810,34 @@ const Methods = {
6621
6810
  if (reactData.scrollYLoad) {
6622
6811
  $xeTable.updateScrollYSpace();
6623
6812
  }
6624
- $xeTable.$nextTick().then(() => {
6813
+ if (evnt) {
6814
+ $xeTable.dispatchEvent('row-dragend', {
6815
+ oldRow: dragRow,
6816
+ newRow: prevDragRow,
6817
+ dragRow,
6818
+ dragPos: prevDragPos,
6819
+ dragToChild: isDragToChildFlag,
6820
+ offsetIndex: dragOffsetIndex,
6821
+ _index: {
6822
+ newIndex: nafIndex,
6823
+ oldIndex: oafIndex
6824
+ }
6825
+ }, evnt);
6826
+ }
6827
+ return $xeTable.$nextTick().then(() => {
6625
6828
  $xeTable.updateCellAreas();
6626
6829
  $xeTable.recalculate();
6830
+ }).then(() => {
6831
+ return {
6832
+ status: true
6833
+ };
6627
6834
  });
6628
- $xeTable.dispatchEvent('row-dragend', {
6629
- oldRow: dragRow,
6630
- newRow: prevDragRow,
6631
- dragRow,
6632
- dragPos: prevDragPos,
6633
- dragToChild: isDragToChildFlag,
6634
- offsetIndex: dragOffsetIndex,
6635
- _index: {
6636
- newIndex: nafIndex,
6637
- oldIndex: oafIndex
6638
- }
6639
- }, evnt);
6640
6835
  }).catch(() => {
6836
+ return errRest;
6641
6837
  });
6642
6838
  }
6643
6839
  }
6644
- return Promise.resolve();
6840
+ return Promise.resolve(errRest);
6645
6841
  },
6646
6842
  handleRowDragDragendEvent(evnt) {
6647
6843
  const $xeTable = this;
@@ -6786,6 +6982,9 @@ const Methods = {
6786
6982
  const { isPeerDrag, isCrossDrag, isSelfToChildDrag, isToChildDrag, dragEndMethod, dragToChildMethod } = columnDragOpts;
6787
6983
  const { collectColumn } = internalData;
6788
6984
  const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
6985
+ const errRest = {
6986
+ status: false
6987
+ };
6789
6988
  if (prevDragCol && dragCol) {
6790
6989
  // 判断是否有拖动
6791
6990
  if (prevDragCol !== dragCol) {
@@ -6802,7 +7001,7 @@ const Methods = {
6802
7001
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
6803
7002
  return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
6804
7003
  if (!status) {
6805
- return;
7004
+ return errRest;
6806
7005
  }
6807
7006
  let oafIndex = -1;
6808
7007
  let nafIndex = -1;
@@ -6816,12 +7015,12 @@ const Methods = {
6816
7015
  if (isPeerDrag && !isCrossDrag) {
6817
7016
  if (dragColumn.parentId !== newColumn.parentId) {
6818
7017
  // 非同级
6819
- return;
7018
+ return errRest;
6820
7019
  }
6821
7020
  }
6822
7021
  else {
6823
7022
  if (!isCrossDrag) {
6824
- return;
7023
+ return errRest;
6825
7024
  }
6826
7025
  if (oldAllMaps[newColumn.id]) {
6827
7026
  isSelfToChildStatus = true;
@@ -6832,7 +7031,7 @@ const Methods = {
6832
7031
  content: getI18n('vxe.error.treeDragChild')
6833
7032
  });
6834
7033
  }
6835
- return;
7034
+ return errRest;
6836
7035
  }
6837
7036
  }
6838
7037
  }
@@ -6840,13 +7039,13 @@ const Methods = {
6840
7039
  else if (dragColumn.parentId) {
6841
7040
  // 子到根
6842
7041
  if (!isCrossDrag) {
6843
- return;
7042
+ return errRest;
6844
7043
  }
6845
7044
  }
6846
7045
  else if (newColumn.parentId) {
6847
7046
  // 根到子
6848
7047
  if (!isCrossDrag) {
6849
- return;
7048
+ return errRest;
6850
7049
  }
6851
7050
  if (oldAllMaps[newColumn.id]) {
6852
7051
  isSelfToChildStatus = true;
@@ -6857,7 +7056,7 @@ const Methods = {
6857
7056
  content: getI18n('vxe.error.treeDragChild')
6858
7057
  });
6859
7058
  }
6860
- return;
7059
+ return errRest;
6861
7060
  }
6862
7061
  }
6863
7062
  }
@@ -6918,26 +7117,32 @@ const Methods = {
6918
7117
  $xeTable.clearCopyCellArea();
6919
7118
  }
6920
7119
  }
6921
- $xeTable.dispatchEvent('column-dragend', {
6922
- oldColumn: dragColumn,
6923
- newColumn,
6924
- dragColumn,
6925
- dragPos: prevDragPos,
6926
- dragToChild: isDragToChildFlag,
6927
- offsetIndex: dragOffsetIndex,
6928
- _index: {
6929
- newIndex: nafIndex,
6930
- oldIndex: oafIndex
6931
- }
6932
- }, evnt);
7120
+ if (evnt) {
7121
+ $xeTable.dispatchEvent('column-dragend', {
7122
+ oldColumn: dragColumn,
7123
+ newColumn,
7124
+ dragColumn,
7125
+ dragPos: prevDragPos,
7126
+ dragToChild: isDragToChildFlag,
7127
+ offsetIndex: dragOffsetIndex,
7128
+ _index: {
7129
+ newIndex: nafIndex,
7130
+ oldIndex: oafIndex
7131
+ }
7132
+ }, evnt);
7133
+ }
6933
7134
  if (isSyncColumn) {
6934
7135
  $xeTable.handleColDragSwapColumn();
6935
7136
  }
7137
+ return {
7138
+ status: true
7139
+ };
6936
7140
  }).catch(() => {
7141
+ return errRest;
6937
7142
  });
6938
7143
  }
6939
7144
  }
6940
- return Promise.resolve();
7145
+ return Promise.resolve(errRest);
6941
7146
  },
6942
7147
  handleHeaderCellDragDragendEvent(evnt) {
6943
7148
  const $xeTable = this;
@@ -7285,7 +7490,9 @@ const Methods = {
7285
7490
  * @param {Event} evnt 事件
7286
7491
  */
7287
7492
  closeFilter() {
7288
- const { filterStore } = this;
7493
+ const $xeTable = this;
7494
+ const reactData = $xeTable;
7495
+ const { filterStore } = reactData;
7289
7496
  const { column, visible } = filterStore;
7290
7497
  Object.assign(filterStore, {
7291
7498
  isAllSelected: false,
@@ -7294,9 +7501,15 @@ const Methods = {
7294
7501
  visible: false
7295
7502
  });
7296
7503
  if (visible) {
7297
- this.emitEvent('filter-visible', { column, field: column.field, property: column.field, filterList: this.getCheckedFilters(), visible: false }, null);
7504
+ $xeTable.dispatchEvent('filter-visible', {
7505
+ column,
7506
+ field: column.field,
7507
+ property: column.field,
7508
+ filterList: () => $xeTable.getCheckedFilters(),
7509
+ visible: false
7510
+ }, null);
7298
7511
  }
7299
- return this.$nextTick();
7512
+ return $xeTable.$nextTick();
7300
7513
  },
7301
7514
  /**
7302
7515
  * 判断指定列是否为筛选状态,如果为空则判断所有列
@@ -8282,10 +8495,10 @@ const Methods = {
8282
8495
  return;
8283
8496
  }
8284
8497
  const { highlightHoverRow } = tableProps;
8285
- const { scrollXLoad, scrollYLoad } = reactData;
8498
+ const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
8286
8499
  const leftFixedWidth = $xeTable.computeLeftFixedWidth;
8287
8500
  const rightFixedWidth = $xeTable.computeRightFixedWidth;
8288
- if (!(scrollYLoad || leftFixedWidth || rightFixedWidth)) {
8501
+ if (!(scrollYLoad || leftFixedWidth || rightFixedWidth || expandColumn)) {
8289
8502
  return;
8290
8503
  }
8291
8504
  const { elemStore, lastScrollTop, lastScrollLeft } = internalData;