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.
- package/es/grid/src/grid.js +45 -36
- package/es/locale/lang/ar-EG.js +7 -1
- package/es/locale/lang/de-DE.js +7 -1
- package/es/locale/lang/en-US.js +7 -1
- package/es/locale/lang/es-ES.js +7 -1
- package/es/locale/lang/fr-FR.js +7 -1
- package/es/locale/lang/hu-HU.js +7 -1
- package/es/locale/lang/hy-AM.js +7 -1
- package/es/locale/lang/id-ID.js +7 -1
- package/es/locale/lang/it-IT.js +7 -1
- package/es/locale/lang/ja-JP.js +7 -1
- package/es/locale/lang/ko-KR.js +7 -1
- package/es/locale/lang/nb-NO.js +7 -1
- package/es/locale/lang/pt-BR.js +7 -1
- package/es/locale/lang/ru-RU.js +7 -1
- package/es/locale/lang/th-TH.js +7 -1
- package/es/locale/lang/ug-CN.js +7 -1
- package/es/locale/lang/uk-UA.js +7 -1
- package/es/locale/lang/vi-VN.js +7 -1
- package/es/locale/lang/zh-CHT.js +7 -1
- package/es/locale/lang/zh-CN.js +7 -1
- package/es/style.css +1 -1
- package/es/table/module/custom/hook.js +1 -1
- package/es/table/module/custom/panel.js +4 -2
- package/es/table/module/edit/hook.js +11 -12
- package/es/table/module/export/export-panel.js +3 -2
- package/es/table/module/export/import-panel.js +3 -2
- package/es/table/module/filter/panel.js +12 -2
- package/es/table/module/keyboard/hook.js +105 -30
- package/es/table/module/menu/hook.js +2 -1
- package/es/table/module/validator/hook.js +4 -3
- package/es/table/render/index.js +3 -3
- package/es/table/src/body.js +40 -21
- package/es/table/src/cell.js +43 -24
- package/es/table/src/columnInfo.js +2 -2
- package/es/table/src/footer.js +12 -7
- package/es/table/src/header.js +12 -7
- package/es/table/src/props.js +4 -0
- package/es/table/src/table.js +435 -420
- package/es/table/src/util.js +34 -6
- package/es/ui/index.js +2 -1
- package/es/ui/src/log.js +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/grid/src/grid.js +42 -40
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +500 -292
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +7 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +7 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +7 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +7 -1
- package/lib/locale/lang/es-ES.js +7 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +7 -1
- package/lib/locale/lang/fr-FR.js +7 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +7 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +7 -1
- package/lib/locale/lang/hy-AM.js +7 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +7 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +7 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +7 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +7 -1
- package/lib/locale/lang/ko-KR.js +7 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +7 -1
- package/lib/locale/lang/nb-NO.js +7 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +7 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +7 -1
- package/lib/locale/lang/ru-RU.js +7 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +7 -1
- package/lib/locale/lang/th-TH.js +7 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +7 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +7 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +7 -1
- package/lib/locale/lang/vi-VN.js +7 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +7 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CN.js +7 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +7 -1
- package/lib/style.css +1 -1
- package/lib/table/module/custom/hook.js +1 -1
- package/lib/table/module/custom/hook.min.js +1 -1
- package/lib/table/module/custom/panel.js +4 -2
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/edit/hook.js +13 -13
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/export/export-panel.js +3 -2
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/import-panel.js +3 -2
- package/lib/table/module/export/import-panel.min.js +1 -1
- package/lib/table/module/filter/panel.js +8 -2
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/keyboard/hook.js +113 -31
- package/lib/table/module/keyboard/hook.min.js +1 -1
- package/lib/table/module/menu/hook.js +2 -1
- package/lib/table/module/menu/hook.min.js +1 -1
- package/lib/table/module/validator/hook.js +5 -4
- package/lib/table/module/validator/hook.min.js +1 -1
- package/lib/table/render/index.js +4 -3
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/body.js +48 -20
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +49 -25
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/columnInfo.js +2 -4
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +12 -5
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +12 -5
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/props.js +4 -0
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +523 -456
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +36 -6
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +2 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +49 -42
- package/packages/locale/lang/ar-EG.ts +7 -1
- package/packages/locale/lang/de-DE.ts +7 -1
- package/packages/locale/lang/en-US.ts +7 -1
- package/packages/locale/lang/es-ES.ts +7 -1
- package/packages/locale/lang/fr-FR.ts +7 -1
- package/packages/locale/lang/hu-HU.ts +7 -1
- package/packages/locale/lang/hy-AM.ts +7 -1
- package/packages/locale/lang/id-ID.ts +7 -1
- package/packages/locale/lang/it-IT.ts +7 -1
- package/packages/locale/lang/ja-JP.ts +7 -1
- package/packages/locale/lang/ko-KR.ts +7 -1
- package/packages/locale/lang/nb-NO.ts +7 -1
- package/packages/locale/lang/pt-BR.ts +7 -1
- package/packages/locale/lang/ru-RU.ts +7 -1
- package/packages/locale/lang/th-TH.ts +7 -1
- package/packages/locale/lang/ug-CN.ts +7 -1
- package/packages/locale/lang/uk-UA.ts +7 -1
- package/packages/locale/lang/vi-VN.ts +7 -1
- package/packages/locale/lang/zh-CHT.ts +7 -1
- package/packages/locale/lang/zh-CN.ts +7 -1
- package/packages/table/module/custom/hook.ts +1 -1
- package/packages/table/module/custom/panel.ts +6 -2
- package/packages/table/module/edit/hook.ts +12 -12
- package/packages/table/module/export/export-panel.ts +4 -2
- package/packages/table/module/export/import-panel.ts +4 -2
- package/packages/table/module/filter/panel.ts +12 -2
- package/packages/table/module/keyboard/hook.ts +106 -32
- package/packages/table/module/menu/hook.ts +3 -1
- package/packages/table/module/validator/hook.ts +5 -3
- package/packages/table/render/index.ts +3 -4
- package/packages/table/src/body.ts +41 -21
- package/packages/table/src/cell.ts +43 -24
- package/packages/table/src/columnInfo.ts +3 -2
- package/packages/table/src/footer.ts +13 -7
- package/packages/table/src/header.ts +13 -7
- package/packages/table/src/props.ts +4 -0
- package/packages/table/src/table.ts +441 -418
- package/packages/table/src/util.ts +39 -6
- package/packages/ui/index.ts +1 -0
- /package/es/{iconfont.1741337003908.ttf → iconfont.1742955995631.ttf} +0 -0
- /package/es/{iconfont.1741337003908.woff → iconfont.1742955995631.woff} +0 -0
- /package/es/{iconfont.1741337003908.woff2 → iconfont.1742955995631.woff2} +0 -0
- /package/lib/{iconfont.1741337003908.ttf → iconfont.1742955995631.ttf} +0 -0
- /package/lib/{iconfont.1741337003908.woff → iconfont.1742955995631.woff} +0 -0
- /package/lib/{iconfont.1741337003908.woff2 → iconfont.1742955995631.woff2} +0 -0
package/es/table/src/table.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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[
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 } =
|
|
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 =
|
|
1577
|
-
const parentRowid =
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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 } =
|
|
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[
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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.
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 } =
|
|
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
|
|
2448
|
-
const { treeExpandedMaps } =
|
|
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 &&
|
|
2440
|
+
if (!checkStrictly && $xeTable.isCheckedByCheckboxRow(row)) {
|
|
2454
2441
|
handleCheckedCheckboxRow(childRows, true);
|
|
2455
2442
|
}
|
|
2456
2443
|
return nextTick().then(() => {
|
|
2457
2444
|
if (transform) {
|
|
2458
|
-
|
|
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 } =
|
|
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
|
-
|
|
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
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
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
|
-
|
|
2512
|
-
reactData.
|
|
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
|
|
2519
|
-
if (
|
|
2520
|
-
delete
|
|
2504
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
2505
|
+
if (rowExpandLazyLoadedMaps[rowid]) {
|
|
2506
|
+
delete rowExpandLazyLoadedMaps[rowid];
|
|
2521
2507
|
}
|
|
2522
|
-
reactData.
|
|
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
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
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 (
|
|
2946
|
-
|
|
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 {
|
|
3059
|
-
const
|
|
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 =
|
|
3076
|
-
if (
|
|
3077
|
-
delete
|
|
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 =
|
|
3085
|
-
if (!
|
|
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
|
-
|
|
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 =
|
|
3105
|
-
if (
|
|
3106
|
-
delete
|
|
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.
|
|
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 =
|
|
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(
|
|
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(
|
|
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
|
|
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 =
|
|
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 =
|
|
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 } =
|
|
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 =
|
|
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 :
|
|
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(
|
|
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 {
|
|
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 {
|
|
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 {
|
|
4713
|
-
return !!
|
|
4702
|
+
const { treeIndeterminateRowMaps } = internalData;
|
|
4703
|
+
return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
|
|
4714
4704
|
},
|
|
4715
4705
|
isIndeterminateByCheckboxRowKey(rowid) {
|
|
4716
|
-
const {
|
|
4717
|
-
return !!
|
|
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 } =
|
|
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[
|
|
4780
|
+
afterFullIdMaps[handleGetRowId(row)] = 1;
|
|
4790
4781
|
}, { children: childrenField });
|
|
4791
4782
|
}
|
|
4792
4783
|
else {
|
|
4793
4784
|
afterFullData.forEach(row => {
|
|
4794
|
-
afterFullIdMaps[
|
|
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
|
-
|
|
4858
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
4989
|
-
if (rowid && !
|
|
4990
|
-
|
|
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 =
|
|
4997
|
-
if (rowid &&
|
|
4998
|
-
delete
|
|
4996
|
+
const rowid = handleGetRowId(row);
|
|
4997
|
+
if (rowid && pendingRowMaps[rowid]) {
|
|
4998
|
+
delete pendingRowMaps[rowid];
|
|
4999
4999
|
}
|
|
5000
5000
|
});
|
|
5001
5001
|
}
|
|
5002
|
-
reactData.
|
|
5002
|
+
reactData.pendingRowFlag++;
|
|
5003
5003
|
return nextTick();
|
|
5004
5004
|
},
|
|
5005
5005
|
togglePendingRow(rows) {
|
|
5006
|
-
const
|
|
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 =
|
|
5012
|
+
const rowid = handleGetRowId(row);
|
|
5012
5013
|
if (rowid) {
|
|
5013
|
-
if (
|
|
5014
|
-
delete
|
|
5014
|
+
if (pendingRowMaps[rowid]) {
|
|
5015
|
+
delete pendingRowMaps[rowid];
|
|
5015
5016
|
}
|
|
5016
5017
|
else {
|
|
5017
|
-
|
|
5018
|
+
pendingRowMaps[rowid] = row;
|
|
5018
5019
|
}
|
|
5019
5020
|
}
|
|
5020
5021
|
});
|
|
5021
|
-
reactData.
|
|
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 } =
|
|
5029
|
+
const { pendingRowMaps } = internalData;
|
|
5029
5030
|
const rowid = getRowid($xeTable, row);
|
|
5030
5031
|
return !!pendingRowMaps[rowid];
|
|
5031
5032
|
},
|
|
5032
5033
|
getPendingRecords() {
|
|
5033
|
-
const { pendingRowMaps } =
|
|
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
|
-
|
|
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', {
|
|
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
|
|
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
|
|
5235
|
+
delete rowExpandLazyLoadedMaps[rowid];
|
|
5230
5236
|
}
|
|
5231
|
-
reactData.
|
|
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 } =
|
|
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
|
-
|
|
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
|
|
5260
|
+
return $xeTable.reloadRowExpand(row);
|
|
5255
5261
|
},
|
|
5256
5262
|
/**
|
|
5257
5263
|
* 切换展开行
|
|
5258
5264
|
*/
|
|
5259
5265
|
toggleRowExpand(row) {
|
|
5260
|
-
return
|
|
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 {
|
|
5290
|
-
|
|
5291
|
-
|
|
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
|
-
|
|
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 =
|
|
5310
|
-
if (!
|
|
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
|
-
|
|
5324
|
+
rowExpandedMaps[rowid] = row;
|
|
5318
5325
|
}
|
|
5319
5326
|
}
|
|
5320
5327
|
});
|
|
5321
5328
|
}
|
|
5322
5329
|
else {
|
|
5323
5330
|
validRows.forEach(item => {
|
|
5324
|
-
const rowid =
|
|
5325
|
-
if (
|
|
5326
|
-
delete
|
|
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.
|
|
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 {
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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 (
|
|
5431
|
-
delete
|
|
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
|
-
|
|
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 } =
|
|
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 {
|
|
5540
|
-
|
|
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 =
|
|
5551
|
-
|
|
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
|
|
5565
|
+
return $xeTable.handleTableData().then(() => {
|
|
5556
5566
|
if (transform) {
|
|
5557
5567
|
handleVirtualTreeToList();
|
|
5558
|
-
return
|
|
5568
|
+
return $xeTable.handleTableData();
|
|
5559
5569
|
}
|
|
5560
5570
|
}).then(() => {
|
|
5561
5571
|
if (expList.length) {
|
|
5562
|
-
return
|
|
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
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
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
|
-
|
|
5855
|
-
|
|
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 (
|
|
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
|
-
|
|
5864
|
-
|
|
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
|
-
|
|
5871
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
6684
|
-
|
|
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' ?
|
|
6695
|
-
|
|
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(
|
|
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 } =
|
|
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
|
|
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 =
|
|
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 (
|
|
6883
|
+
if (treeExpandedMaps[rowid]) {
|
|
6887
6884
|
if (!row[childrenField] || !row[childrenField].length) {
|
|
6888
|
-
delete
|
|
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,
|
|
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.
|
|
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
|
|
6910
|
-
|
|
6905
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
6906
|
+
const sourceRowIdData = {};
|
|
6911
6907
|
const handleSourceRow = (row) => {
|
|
6912
|
-
|
|
6913
|
-
|
|
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
|
-
|
|
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,
|
|
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 =
|
|
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 =
|
|
7425
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
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 (
|
|
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 (
|
|
7445
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7440
7446
|
hLen++;
|
|
7441
7447
|
}
|
|
7442
7448
|
}
|
|
7443
7449
|
}
|
|
7444
7450
|
: item => {
|
|
7445
|
-
const childRowid =
|
|
7446
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
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 (
|
|
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
|
-
|
|
7468
|
+
selectCheckboxMaps[rowid] = row;
|
|
7463
7469
|
}
|
|
7464
|
-
if (
|
|
7465
|
-
delete
|
|
7470
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7471
|
+
delete treeIndeterminateRowMaps[rowid];
|
|
7466
7472
|
}
|
|
7467
7473
|
}
|
|
7468
7474
|
else {
|
|
7469
7475
|
if (!checkField) {
|
|
7470
|
-
if (
|
|
7471
|
-
delete
|
|
7476
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7477
|
+
delete selectCheckboxMaps[rowid];
|
|
7472
7478
|
}
|
|
7473
7479
|
}
|
|
7474
7480
|
if (halfSelect) {
|
|
7475
|
-
|
|
7481
|
+
treeIndeterminateRowMaps[rowid] = row;
|
|
7476
7482
|
}
|
|
7477
7483
|
else {
|
|
7478
|
-
if (
|
|
7479
|
-
delete
|
|
7484
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7485
|
+
delete treeIndeterminateRowMaps[rowid];
|
|
7480
7486
|
}
|
|
7481
7487
|
}
|
|
7482
7488
|
}
|
|
7483
7489
|
});
|
|
7484
7490
|
}
|
|
7485
|
-
reactData.
|
|
7486
|
-
reactData.treeIndeterminateMaps = halfRowMaps;
|
|
7491
|
+
reactData.updateCheckboxFlag++;
|
|
7487
7492
|
},
|
|
7488
7493
|
updateAllCheckboxStatus() {
|
|
7489
7494
|
const { treeConfig } = props;
|
|
7490
|
-
const { selectCheckboxMaps,
|
|
7495
|
+
const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
|
|
7491
7496
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7492
7497
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
|
|
7493
|
-
const {
|
|
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 =
|
|
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 (
|
|
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 (
|
|
7520
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7516
7521
|
hLen++;
|
|
7517
7522
|
}
|
|
7518
7523
|
}
|
|
7519
7524
|
}
|
|
7520
7525
|
: row => {
|
|
7521
|
-
const childRowid =
|
|
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 (
|
|
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 } =
|
|
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.
|
|
7577
|
+
reactData.updateCheckboxFlag++;
|
|
7573
7578
|
return;
|
|
7574
7579
|
}
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
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 =
|
|
7594
|
+
const rowid = handleGetRowId(row);
|
|
7592
7595
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7593
7596
|
if (checked) {
|
|
7594
|
-
|
|
7597
|
+
selectCheckboxMaps[rowid] = row;
|
|
7595
7598
|
}
|
|
7596
7599
|
else {
|
|
7597
|
-
if (
|
|
7598
|
-
delete
|
|
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.
|
|
7607
|
+
reactData.updateCheckboxFlag++;
|
|
7605
7608
|
return;
|
|
7606
7609
|
}
|
|
7607
7610
|
// 列表
|
|
7608
7611
|
rows.forEach(row => {
|
|
7609
|
-
const rowid =
|
|
7612
|
+
const rowid = handleGetRowId(row);
|
|
7610
7613
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7611
7614
|
if (checked) {
|
|
7612
|
-
if (!
|
|
7613
|
-
|
|
7615
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
7616
|
+
selectCheckboxMaps[rowid] = row;
|
|
7614
7617
|
}
|
|
7615
7618
|
}
|
|
7616
7619
|
else {
|
|
7617
|
-
if (
|
|
7618
|
-
delete
|
|
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,
|
|
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'),
|
|
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
|
|
7711
|
+
const tdEl = evnt.currentTarget;
|
|
7709
7712
|
handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row);
|
|
7710
7713
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7711
|
-
handleTooltip(evnt,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7791
|
+
$xeTable.triggerRowExpandEvent(evnt, params);
|
|
7786
7792
|
}
|
|
7787
7793
|
// 如果是树形表格
|
|
7788
7794
|
if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
|
|
7789
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7815
|
+
$xeTable.triggerRadioRowEvent(evnt, params);
|
|
7804
7816
|
}
|
|
7805
7817
|
// 如果是复选框
|
|
7806
7818
|
if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
|
|
7807
|
-
|
|
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 } =
|
|
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
|
-
|
|
7913
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked);
|
|
7902
7914
|
}
|
|
7903
7915
|
else {
|
|
7904
|
-
|
|
7905
|
-
|
|
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 =
|
|
7930
|
+
const checkboxRecords = $xeTable.getCheckboxRecords();
|
|
7919
7931
|
if (checkboxRecords.length) {
|
|
7920
7932
|
const firstRow = checkboxRecords[0];
|
|
7921
|
-
const _rowIndex =
|
|
7922
|
-
const _firstRowIndex =
|
|
7933
|
+
const _rowIndex = $xeTable.getVTRowIndex(row);
|
|
7934
|
+
const _firstRowIndex = $xeTable.getVTRowIndex(firstRow);
|
|
7923
7935
|
if (_rowIndex !== _firstRowIndex) {
|
|
7924
|
-
|
|
7936
|
+
$xeTable.setAllCheckboxRow(false);
|
|
7925
7937
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
|
|
7926
|
-
|
|
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
|
-
|
|
7934
|
-
|
|
7947
|
+
$xeTable.handleBatchSelectRows([row], checked);
|
|
7948
|
+
$xeTable.checkSelectionStatus();
|
|
7935
7949
|
dispatchEvent('checkbox-change', Object.assign({
|
|
7936
|
-
records:
|
|
7937
|
-
reserves:
|
|
7938
|
-
indeterminates:
|
|
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 {
|
|
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 =
|
|
8021
|
-
const columnIndex =
|
|
8022
|
-
const $columnIndex =
|
|
8023
|
-
|
|
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:
|
|
8031
|
-
$rowIndex:
|
|
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 } =
|
|
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 =
|
|
8050
|
-
const columnIndex =
|
|
8051
|
-
const $columnIndex =
|
|
8052
|
-
|
|
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 (!(
|
|
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
|
|
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 =
|
|
9669
|
+
const rowid = handleGetRowId(row);
|
|
9655
9670
|
const rest = fullAllDataRowIdData[rowid];
|
|
9656
9671
|
let rowLevel = 0;
|
|
9657
9672
|
let seq = -1;
|