vxe-table 4.12.0-beta.2 → 4.12.0-beta.21
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 +61 -44
- 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/edit/hook.js +8 -10
- package/es/table/module/filter/panel.js +12 -2
- package/es/table/module/keyboard/hook.js +47 -4
- package/es/table/module/validator/hook.js +2 -2
- package/es/table/render/index.js +91 -60
- package/es/table/src/body.js +22 -17
- package/es/table/src/cell.js +25 -20
- package/es/table/src/footer.js +9 -4
- package/es/table/src/header.js +2 -2
- package/es/table/src/props.js +4 -0
- package/es/table/src/table.js +616 -411
- package/es/table/src/util.js +58 -3
- package/es/ui/index.js +1 -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 +58 -48
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +1281 -12149
- 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/edit/hook.js +10 -11
- package/lib/table/module/edit/hook.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 +51 -4
- package/lib/table/module/keyboard/hook.min.js +1 -1
- package/lib/table/module/validator/hook.js +3 -3
- package/lib/table/module/validator/hook.min.js +1 -1
- package/lib/table/render/index.js +100 -65
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/body.js +27 -17
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +37 -21
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/footer.js +9 -3
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +2 -1
- 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 +727 -445
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +65 -6
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +1 -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 +65 -50
- 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/edit/hook.ts +8 -10
- package/packages/table/module/filter/panel.ts +12 -2
- package/packages/table/module/keyboard/hook.ts +47 -6
- package/packages/table/module/validator/hook.ts +2 -2
- package/packages/table/render/index.ts +90 -59
- package/packages/table/src/body.ts +21 -16
- package/packages/table/src/cell.ts +25 -20
- package/packages/table/src/footer.ts +9 -4
- package/packages/table/src/header.ts +2 -2
- package/packages/table/src/props.ts +4 -0
- package/packages/table/src/table.ts +625 -411
- package/packages/table/src/util.ts +66 -3
- /package/es/{iconfont.1741080000843.ttf → iconfont.1742437957812.ttf} +0 -0
- /package/es/{iconfont.1741080000843.woff → iconfont.1742437957812.woff} +0 -0
- /package/es/{iconfont.1741080000843.woff2 → iconfont.1742437957812.woff2} +0 -0
- /package/lib/{iconfont.1741080000843.ttf → iconfont.1742437957812.ttf} +0 -0
- /package/lib/{iconfont.1741080000843.woff → iconfont.1742437957812.woff} +0 -0
- /package/lib/{iconfont.1741080000843.woff2 → iconfont.1742437957812.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, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth } from './util';
|
|
12
|
+
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId } from './util';
|
|
13
13
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
14
14
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
15
15
|
import TableCustomPanelComponent from '../module/custom/panel';
|
|
@@ -18,6 +18,7 @@ import TableImportPanelComponent from '../module/export/import-panel';
|
|
|
18
18
|
import TableExportPanelComponent from '../module/export/export-panel';
|
|
19
19
|
import TableMenuPanelComponent from '../module/menu/panel';
|
|
20
20
|
const { getConfig, getIcon, getI18n, renderer, formats, createEvent, globalResize, interceptor, hooks, globalEvents, GLOBAL_EVENT_KEYS, useFns, renderEmptyElement } = VxeUI;
|
|
21
|
+
const supportMaxRow = 5e6;
|
|
21
22
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
22
23
|
const maxYHeight = 5e6;
|
|
23
24
|
const maxXWidth = 5e6;
|
|
@@ -67,8 +68,6 @@ export default defineComponent({
|
|
|
67
68
|
isAllSelected: false,
|
|
68
69
|
// 复选框属性,有选中且非全选状态
|
|
69
70
|
isIndeterminate: false,
|
|
70
|
-
// 复选框属性,已选中的行集合
|
|
71
|
-
selectCheckboxMaps: {},
|
|
72
71
|
// 当前行
|
|
73
72
|
currentRow: null,
|
|
74
73
|
// 单选框属性,选中列
|
|
@@ -82,16 +81,6 @@ export default defineComponent({
|
|
|
82
81
|
// 树节点列信息
|
|
83
82
|
treeNodeColumn: null,
|
|
84
83
|
hasFixedColumn: false,
|
|
85
|
-
// 已展开的行集合
|
|
86
|
-
rowExpandedMaps: {},
|
|
87
|
-
// 懒加载中的展开行的集合
|
|
88
|
-
rowExpandLazyLoadedMaps: {},
|
|
89
|
-
// 已展开树节点集合
|
|
90
|
-
treeExpandedMaps: {},
|
|
91
|
-
// 懒加载中的树节点的集合
|
|
92
|
-
treeExpandLazyLoadedMaps: {},
|
|
93
|
-
// 树节点不确定状态的集合
|
|
94
|
-
treeIndeterminateMaps: {},
|
|
95
84
|
// 合并单元格的对象集
|
|
96
85
|
mergeList: [],
|
|
97
86
|
// 合并表尾数据的对象集
|
|
@@ -100,8 +89,6 @@ export default defineComponent({
|
|
|
100
89
|
upDataFlag: 0,
|
|
101
90
|
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
102
91
|
reColumnFlag: 0,
|
|
103
|
-
// 已标记的对象集
|
|
104
|
-
pendingRowMaps: {},
|
|
105
92
|
// 初始化标识
|
|
106
93
|
initStore: {
|
|
107
94
|
filter: false,
|
|
@@ -245,6 +232,10 @@ export default defineComponent({
|
|
|
245
232
|
isHeader: false,
|
|
246
233
|
isFooter: false
|
|
247
234
|
},
|
|
235
|
+
rowExpandedFlag: 1,
|
|
236
|
+
treeExpandedFlag: 1,
|
|
237
|
+
updateCheckboxFlag: 1,
|
|
238
|
+
pendingRowFlag: 1,
|
|
248
239
|
rowHeightStore: {
|
|
249
240
|
default: 48,
|
|
250
241
|
medium: 44,
|
|
@@ -344,6 +335,18 @@ export default defineComponent({
|
|
|
344
335
|
fullColumnIdData: {},
|
|
345
336
|
fullColumnFieldData: {},
|
|
346
337
|
// prevDragRow: null,
|
|
338
|
+
// 已展开的行集合
|
|
339
|
+
rowExpandedMaps: {},
|
|
340
|
+
// 懒加载中的展开行的集合
|
|
341
|
+
rowExpandLazyLoadedMaps: {},
|
|
342
|
+
// 已展开树节点集合
|
|
343
|
+
treeExpandedMaps: {},
|
|
344
|
+
// 懒加载中的树节点的集合
|
|
345
|
+
treeExpandLazyLoadedMaps: {},
|
|
346
|
+
// 复选框属性,已选中的行集合
|
|
347
|
+
selectCheckboxMaps: {},
|
|
348
|
+
// 已标记的对象集
|
|
349
|
+
pendingRowMaps: {},
|
|
347
350
|
inited: false,
|
|
348
351
|
tooltipTimeout: null,
|
|
349
352
|
initStatus: false,
|
|
@@ -464,18 +467,36 @@ export default defineComponent({
|
|
|
464
467
|
const computeColumnOpts = computed(() => {
|
|
465
468
|
return Object.assign({}, getConfig().table.columnConfig, props.columnConfig);
|
|
466
469
|
});
|
|
470
|
+
const computeCurrentColumnOpts = computed(() => {
|
|
471
|
+
return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig);
|
|
472
|
+
});
|
|
467
473
|
const computeCellOpts = computed(() => {
|
|
468
|
-
|
|
474
|
+
const cellOpts = Object.assign({}, getConfig().table.cellConfig, props.cellConfig);
|
|
475
|
+
if (cellOpts.height) {
|
|
476
|
+
cellOpts.height = XEUtils.toNumber(cellOpts.height);
|
|
477
|
+
}
|
|
478
|
+
return cellOpts;
|
|
469
479
|
});
|
|
470
480
|
const computeHeaderCellOpts = computed(() => {
|
|
471
|
-
|
|
481
|
+
const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig);
|
|
482
|
+
if (headerCellOpts.height) {
|
|
483
|
+
headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height);
|
|
484
|
+
}
|
|
485
|
+
return headerCellOpts;
|
|
472
486
|
});
|
|
473
487
|
const computeFooterCellOpts = computed(() => {
|
|
474
|
-
|
|
488
|
+
const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig);
|
|
489
|
+
if (footerCellOpts.height) {
|
|
490
|
+
footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height);
|
|
491
|
+
}
|
|
492
|
+
return footerCellOpts;
|
|
475
493
|
});
|
|
476
494
|
const computeRowOpts = computed(() => {
|
|
477
495
|
return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
|
|
478
496
|
});
|
|
497
|
+
const computeCurrentRowOpts = computed(() => {
|
|
498
|
+
return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig);
|
|
499
|
+
});
|
|
479
500
|
const computeRowDragOpts = computed(() => {
|
|
480
501
|
return Object.assign({}, getConfig().table.rowDragConfig, props.rowDragConfig);
|
|
481
502
|
});
|
|
@@ -616,12 +637,14 @@ export default defineComponent({
|
|
|
616
637
|
return Object.assign({}, getConfig().table.customConfig, props.customConfig);
|
|
617
638
|
});
|
|
618
639
|
const computeTableRowExpandedList = computed(() => {
|
|
619
|
-
const {
|
|
640
|
+
const { rowExpandedFlag, tableData, expandColumn } = reactData;
|
|
641
|
+
const { rowExpandedMaps } = internalData;
|
|
642
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
620
643
|
const expandList = [];
|
|
621
|
-
if (expandColumn) {
|
|
644
|
+
if (expandColumn && rowExpandedFlag) {
|
|
622
645
|
const rowKeys = {};
|
|
623
646
|
tableData.forEach(row => {
|
|
624
|
-
rowKeys[
|
|
647
|
+
rowKeys[handleGetRowId(row)] = true;
|
|
625
648
|
});
|
|
626
649
|
XEUtils.each(rowExpandedMaps, (row, rowid) => {
|
|
627
650
|
if (rowKeys[rowid]) {
|
|
@@ -734,13 +757,16 @@ export default defineComponent({
|
|
|
734
757
|
computeScrollbarXToTop,
|
|
735
758
|
computeScrollbarYToLeft,
|
|
736
759
|
computeColumnOpts,
|
|
760
|
+
computeCurrentColumnOpts,
|
|
737
761
|
computeScrollXThreshold,
|
|
738
762
|
computeScrollYThreshold,
|
|
763
|
+
computeRowHeightMaps,
|
|
739
764
|
computeDefaultRowHeight,
|
|
740
765
|
computeCellOpts,
|
|
741
766
|
computeHeaderCellOpts,
|
|
742
767
|
computeFooterCellOpts,
|
|
743
768
|
computeRowOpts,
|
|
769
|
+
computeCurrentRowOpts,
|
|
744
770
|
computeRowDragOpts,
|
|
745
771
|
computeColumnDragOpts,
|
|
746
772
|
computeResizeOpts,
|
|
@@ -942,12 +968,13 @@ export default defineComponent({
|
|
|
942
968
|
visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
|
|
943
969
|
}
|
|
944
970
|
else {
|
|
971
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
945
972
|
let leftIndex = 0;
|
|
946
973
|
let rightIndex = afterFullData.length;
|
|
947
974
|
while (leftIndex < rightIndex) {
|
|
948
975
|
const rIndex = Math.floor((leftIndex + rightIndex) / 2);
|
|
949
976
|
const row = afterFullData[rIndex];
|
|
950
|
-
const rowid =
|
|
977
|
+
const rowid = handleGetRowId(row);
|
|
951
978
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
952
979
|
if (rowRest.oTop <= startTop) {
|
|
953
980
|
leftIndex = rIndex + 1;
|
|
@@ -959,7 +986,7 @@ export default defineComponent({
|
|
|
959
986
|
toVisibleIndex = Math.max(0, leftIndex < afterFullData.length ? leftIndex - 2 : 0);
|
|
960
987
|
for (let rIndex = toVisibleIndex, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
961
988
|
const row = afterFullData[rIndex];
|
|
962
|
-
const rowid =
|
|
989
|
+
const rowid = handleGetRowId(row);
|
|
963
990
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
964
991
|
visibleSize++;
|
|
965
992
|
if (rowRest.oTop > endTop || visibleSize >= 100) {
|
|
@@ -1198,7 +1225,7 @@ export default defineComponent({
|
|
|
1198
1225
|
}
|
|
1199
1226
|
else {
|
|
1200
1227
|
if ((storage && !type) || (columnOpts.drag && (isCrossDrag || isSelfToChildDrag))) {
|
|
1201
|
-
errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field
|
|
1228
|
+
errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field=?`]);
|
|
1202
1229
|
}
|
|
1203
1230
|
}
|
|
1204
1231
|
if (!hasFixed && fixed) {
|
|
@@ -1467,9 +1494,10 @@ export default defineComponent({
|
|
|
1467
1494
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
1468
1495
|
const el = refElem.value;
|
|
1469
1496
|
if (!isAllOverflow && scrollYLoad && el) {
|
|
1497
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1470
1498
|
el.setAttribute('data-calc-row', 'Y');
|
|
1471
1499
|
tableData.forEach(row => {
|
|
1472
|
-
const rowid =
|
|
1500
|
+
const rowid = handleGetRowId(row);
|
|
1473
1501
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1474
1502
|
if (rowRest) {
|
|
1475
1503
|
const reHeight = calcCellAutoHeight(rowRest, el);
|
|
@@ -1505,9 +1533,10 @@ export default defineComponent({
|
|
|
1505
1533
|
const updateAfterListIndex = () => {
|
|
1506
1534
|
const { treeConfig } = props;
|
|
1507
1535
|
const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData;
|
|
1536
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1508
1537
|
const fullMaps = {};
|
|
1509
1538
|
afterFullData.forEach((row, index) => {
|
|
1510
|
-
const rowid =
|
|
1539
|
+
const rowid = handleGetRowId(row);
|
|
1511
1540
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1512
1541
|
const seq = index + 1;
|
|
1513
1542
|
if (rowRest) {
|
|
@@ -1537,8 +1566,9 @@ export default defineComponent({
|
|
|
1537
1566
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
1538
1567
|
const fullMaps = {};
|
|
1539
1568
|
if (treeConfig) {
|
|
1569
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1540
1570
|
XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
|
|
1541
|
-
const rowid =
|
|
1571
|
+
const rowid = handleGetRowId(row);
|
|
1542
1572
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1543
1573
|
const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('');
|
|
1544
1574
|
if (rowRest) {
|
|
@@ -1565,16 +1595,16 @@ export default defineComponent({
|
|
|
1565
1595
|
*/
|
|
1566
1596
|
const handleVirtualTreeToList = () => {
|
|
1567
1597
|
const { treeConfig } = props;
|
|
1568
|
-
const { treeExpandedMaps } =
|
|
1569
|
-
const { fullAllDataRowIdData } = internalData;
|
|
1598
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData;
|
|
1570
1599
|
const treeOpts = computeTreeOpts.value;
|
|
1571
1600
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
1572
1601
|
if (treeConfig && treeOpts.transform) {
|
|
1602
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1573
1603
|
const fullData = [];
|
|
1574
1604
|
const expandMaps = {};
|
|
1575
1605
|
XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parentRow) => {
|
|
1576
|
-
const rowid =
|
|
1577
|
-
const parentRowid =
|
|
1606
|
+
const rowid = handleGetRowId(row);
|
|
1607
|
+
const parentRowid = handleGetRowId(parentRow);
|
|
1578
1608
|
if (!parentRow || (expandMaps[parentRowid] && treeExpandedMaps[parentRowid])) {
|
|
1579
1609
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1580
1610
|
if (rowRest) {
|
|
@@ -2232,12 +2262,13 @@ export default defineComponent({
|
|
|
2232
2262
|
};
|
|
2233
2263
|
const handleCheckedAllCheckboxRow = (checked, isForce) => {
|
|
2234
2264
|
const { treeConfig } = props;
|
|
2235
|
-
const { selectCheckboxMaps } =
|
|
2236
|
-
const { afterFullData, checkboxReserveRowMap } = internalData;
|
|
2265
|
+
const { afterFullData, checkboxReserveRowMap, selectCheckboxMaps } = internalData;
|
|
2237
2266
|
const treeOpts = computeTreeOpts.value;
|
|
2238
2267
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2239
2268
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
2240
2269
|
const { checkField, reserve, checkMethod } = checkboxOpts;
|
|
2270
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
2271
|
+
// indeterminateField 仅支持读取
|
|
2241
2272
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
2242
2273
|
const selectRowMaps = {};
|
|
2243
2274
|
/**
|
|
@@ -2248,7 +2279,7 @@ export default defineComponent({
|
|
|
2248
2279
|
const checkValFn = (row) => {
|
|
2249
2280
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
2250
2281
|
if (checked) {
|
|
2251
|
-
selectRowMaps[
|
|
2282
|
+
selectRowMaps[handleGetRowId(row)] = row;
|
|
2252
2283
|
}
|
|
2253
2284
|
XEUtils.set(row, checkField, checked);
|
|
2254
2285
|
}
|
|
@@ -2278,7 +2309,8 @@ export default defineComponent({
|
|
|
2278
2309
|
*/
|
|
2279
2310
|
XEUtils.eachTree(afterFullData, (row) => {
|
|
2280
2311
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
2281
|
-
|
|
2312
|
+
const rowid = handleGetRowId(row);
|
|
2313
|
+
selectRowMaps[rowid] = row;
|
|
2282
2314
|
}
|
|
2283
2315
|
}, { children: childrenField });
|
|
2284
2316
|
}
|
|
@@ -2289,7 +2321,7 @@ export default defineComponent({
|
|
|
2289
2321
|
*/
|
|
2290
2322
|
if (!isForce && checkMethod) {
|
|
2291
2323
|
XEUtils.eachTree(afterFullData, (row) => {
|
|
2292
|
-
const rowid =
|
|
2324
|
+
const rowid = handleGetRowId(row);
|
|
2293
2325
|
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
2294
2326
|
selectRowMaps[rowid] = row;
|
|
2295
2327
|
}
|
|
@@ -2306,7 +2338,7 @@ export default defineComponent({
|
|
|
2306
2338
|
*/
|
|
2307
2339
|
if (!isForce && checkMethod) {
|
|
2308
2340
|
afterFullData.forEach((row) => {
|
|
2309
|
-
const rowid =
|
|
2341
|
+
const rowid = handleGetRowId(row);
|
|
2310
2342
|
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
2311
2343
|
selectRowMaps[rowid] = row;
|
|
2312
2344
|
}
|
|
@@ -2314,7 +2346,8 @@ export default defineComponent({
|
|
|
2314
2346
|
}
|
|
2315
2347
|
else {
|
|
2316
2348
|
afterFullData.forEach(row => {
|
|
2317
|
-
|
|
2349
|
+
const rowid = handleGetRowId(row);
|
|
2350
|
+
selectRowMaps[rowid] = row;
|
|
2318
2351
|
});
|
|
2319
2352
|
}
|
|
2320
2353
|
}
|
|
@@ -2326,7 +2359,7 @@ export default defineComponent({
|
|
|
2326
2359
|
*/
|
|
2327
2360
|
if (!isForce && checkMethod) {
|
|
2328
2361
|
afterFullData.forEach((row) => {
|
|
2329
|
-
const rowid =
|
|
2362
|
+
const rowid = handleGetRowId(row);
|
|
2330
2363
|
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
2331
2364
|
selectRowMaps[rowid] = row;
|
|
2332
2365
|
}
|
|
@@ -2345,10 +2378,10 @@ export default defineComponent({
|
|
|
2345
2378
|
afterFullData.forEach((row) => handleCheckboxReserveRow(row, false));
|
|
2346
2379
|
}
|
|
2347
2380
|
}
|
|
2348
|
-
reactData.
|
|
2381
|
+
reactData.updateCheckboxFlag++;
|
|
2382
|
+
internalData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
2349
2383
|
reactData.isAllSelected = checked;
|
|
2350
2384
|
reactData.isIndeterminate = false;
|
|
2351
|
-
reactData.treeIndeterminateMaps = {};
|
|
2352
2385
|
internalData.treeIndeterminateRowMaps = {};
|
|
2353
2386
|
$xeTable.checkSelectionStatus();
|
|
2354
2387
|
return nextTick();
|
|
@@ -2356,8 +2389,8 @@ export default defineComponent({
|
|
|
2356
2389
|
// 还原展开、选中等相关状态
|
|
2357
2390
|
const handleReserveStatus = () => {
|
|
2358
2391
|
const { treeConfig } = props;
|
|
2359
|
-
const { expandColumn, currentRow,
|
|
2360
|
-
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
|
|
2392
|
+
const { expandColumn, currentRow, selectRadioRow } = reactData;
|
|
2393
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow, selectCheckboxMaps, treeExpandedMaps, rowExpandedMaps } = internalData;
|
|
2361
2394
|
const expandOpts = computeExpandOpts.value;
|
|
2362
2395
|
const treeOpts = computeTreeOpts.value;
|
|
2363
2396
|
const radioOpts = computeRadioOpts.value;
|
|
@@ -2374,7 +2407,8 @@ export default defineComponent({
|
|
|
2374
2407
|
}
|
|
2375
2408
|
}
|
|
2376
2409
|
// 复选框
|
|
2377
|
-
|
|
2410
|
+
internalData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps); // 刷新多选行状态
|
|
2411
|
+
reactData.updateCheckboxFlag++;
|
|
2378
2412
|
// 还原保留选中状态
|
|
2379
2413
|
if (checkboxOpts.reserve) {
|
|
2380
2414
|
handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true, true);
|
|
@@ -2383,13 +2417,15 @@ export default defineComponent({
|
|
|
2383
2417
|
reactData.currentRow = null; // 刷新当前行状态
|
|
2384
2418
|
}
|
|
2385
2419
|
// 行展开
|
|
2386
|
-
|
|
2420
|
+
internalData.rowExpandedMaps = expandColumn ? getRecoverRowMaps(rowExpandedMaps) : {}; // 刷新行展开状态
|
|
2421
|
+
reactData.rowExpandedFlag++;
|
|
2387
2422
|
// 还原保留状态
|
|
2388
2423
|
if (expandColumn && expandOpts.reserve) {
|
|
2389
2424
|
$xeTable.setRowExpand(handleReserveRow(internalData.rowExpandedReserveRowMap), true);
|
|
2390
2425
|
}
|
|
2391
2426
|
// 树展开
|
|
2392
|
-
|
|
2427
|
+
internalData.treeExpandedMaps = treeConfig ? getRecoverRowMaps(treeExpandedMaps) : {}; // 刷新树展开状态
|
|
2428
|
+
reactData.treeExpandedFlag++;
|
|
2393
2429
|
if (treeConfig && treeOpts.reserve) {
|
|
2394
2430
|
$xeTable.setTreeExpand(handleReserveRow(internalData.treeExpandedReserveRowMap), true);
|
|
2395
2431
|
}
|
|
@@ -2405,7 +2441,7 @@ export default defineComponent({
|
|
|
2405
2441
|
const { expandAll, expandRowKeys } = treeOpts;
|
|
2406
2442
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2407
2443
|
if (expandAll) {
|
|
2408
|
-
|
|
2444
|
+
$xeTable.setAllTreeExpand(true);
|
|
2409
2445
|
}
|
|
2410
2446
|
else if (expandRowKeys) {
|
|
2411
2447
|
const defExpandeds = [];
|
|
@@ -2416,7 +2452,7 @@ export default defineComponent({
|
|
|
2416
2452
|
defExpandeds.push(matchObj.item);
|
|
2417
2453
|
}
|
|
2418
2454
|
});
|
|
2419
|
-
|
|
2455
|
+
$xeTable.setTreeExpand(defExpandeds, true);
|
|
2420
2456
|
}
|
|
2421
2457
|
}
|
|
2422
2458
|
};
|
|
@@ -2427,8 +2463,7 @@ export default defineComponent({
|
|
|
2427
2463
|
const { checkStrictly } = checkboxOpts;
|
|
2428
2464
|
return new Promise(resolve => {
|
|
2429
2465
|
if (loadMethod) {
|
|
2430
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2431
|
-
const { fullAllDataRowIdData } = internalData;
|
|
2466
|
+
const { fullAllDataRowIdData, treeExpandLazyLoadedMaps } = internalData;
|
|
2432
2467
|
const rowid = getRowid($xeTable, row);
|
|
2433
2468
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
2434
2469
|
treeExpandLazyLoadedMaps[rowid] = row;
|
|
@@ -2443,18 +2478,19 @@ export default defineComponent({
|
|
|
2443
2478
|
childRecords = [];
|
|
2444
2479
|
}
|
|
2445
2480
|
if (childRecords) {
|
|
2446
|
-
return
|
|
2447
|
-
const { treeExpandedMaps } =
|
|
2481
|
+
return $xeTable.loadTreeChildren(row, childRecords).then(childRows => {
|
|
2482
|
+
const { treeExpandedMaps } = internalData;
|
|
2448
2483
|
if (childRows.length && !treeExpandedMaps[rowid]) {
|
|
2449
2484
|
treeExpandedMaps[rowid] = row;
|
|
2450
2485
|
}
|
|
2486
|
+
reactData.treeExpandedFlag++;
|
|
2451
2487
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
2452
|
-
if (!checkStrictly &&
|
|
2488
|
+
if (!checkStrictly && $xeTable.isCheckedByCheckboxRow(row)) {
|
|
2453
2489
|
handleCheckedCheckboxRow(childRows, true);
|
|
2454
2490
|
}
|
|
2455
2491
|
return nextTick().then(() => {
|
|
2456
2492
|
if (transform) {
|
|
2457
|
-
|
|
2493
|
+
$xeTable.handleTableData();
|
|
2458
2494
|
updateAfterDataIndex();
|
|
2459
2495
|
return nextTick();
|
|
2460
2496
|
}
|
|
@@ -2462,7 +2498,7 @@ export default defineComponent({
|
|
|
2462
2498
|
});
|
|
2463
2499
|
}
|
|
2464
2500
|
}).catch(() => {
|
|
2465
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2501
|
+
const { treeExpandLazyLoadedMaps } = internalData;
|
|
2466
2502
|
if (rowRest) {
|
|
2467
2503
|
rowRest.treeLoaded = false;
|
|
2468
2504
|
}
|
|
@@ -2470,7 +2506,8 @@ export default defineComponent({
|
|
|
2470
2506
|
delete treeExpandLazyLoadedMaps[rowid];
|
|
2471
2507
|
}
|
|
2472
2508
|
}).finally(() => {
|
|
2473
|
-
|
|
2509
|
+
reactData.treeExpandedFlag++;
|
|
2510
|
+
nextTick().then(() => $xeTable.recalculate()).then(() => resolve());
|
|
2474
2511
|
});
|
|
2475
2512
|
}
|
|
2476
2513
|
else {
|
|
@@ -2496,29 +2533,27 @@ export default defineComponent({
|
|
|
2496
2533
|
const expandOpts = computeExpandOpts.value;
|
|
2497
2534
|
const { loadMethod } = expandOpts;
|
|
2498
2535
|
if (loadMethod) {
|
|
2499
|
-
const { fullAllDataRowIdData } = internalData;
|
|
2500
|
-
const rExpandLazyLoadedMaps = Object.assign({}, reactData.rowExpandLazyLoadedMaps);
|
|
2536
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData;
|
|
2501
2537
|
const rowid = getRowid($xeTable, row);
|
|
2502
2538
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
const rowTempExpandedMaps = Object.assign({}, reactData.rowExpandedMaps);
|
|
2539
|
+
rowExpandLazyLoadedMaps[rowid] = row;
|
|
2540
|
+
loadMethod({ $table: $xeTable, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) }).then(() => {
|
|
2541
|
+
const { rowExpandedMaps } = internalData;
|
|
2507
2542
|
if (rowRest) {
|
|
2508
2543
|
rowRest.expandLoaded = true;
|
|
2509
2544
|
}
|
|
2510
|
-
|
|
2511
|
-
reactData.
|
|
2545
|
+
rowExpandedMaps[rowid] = row;
|
|
2546
|
+
reactData.rowExpandedFlag++;
|
|
2512
2547
|
}).catch(() => {
|
|
2513
2548
|
if (rowRest) {
|
|
2514
2549
|
rowRest.expandLoaded = false;
|
|
2515
2550
|
}
|
|
2516
2551
|
}).finally(() => {
|
|
2517
|
-
const
|
|
2518
|
-
if (
|
|
2519
|
-
delete
|
|
2552
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
2553
|
+
if (rowExpandLazyLoadedMaps[rowid]) {
|
|
2554
|
+
delete rowExpandLazyLoadedMaps[rowid];
|
|
2520
2555
|
}
|
|
2521
|
-
reactData.
|
|
2556
|
+
reactData.rowExpandedFlag++;
|
|
2522
2557
|
nextTick()
|
|
2523
2558
|
.then(() => $xeTable.recalculate())
|
|
2524
2559
|
.then(() => $xeTable.updateCellAreas())
|
|
@@ -2621,9 +2656,6 @@ export default defineComponent({
|
|
|
2621
2656
|
calcCellWidth();
|
|
2622
2657
|
autoCellWidth();
|
|
2623
2658
|
updateStyle();
|
|
2624
|
-
if (reFull) {
|
|
2625
|
-
updateRowOffsetTop();
|
|
2626
|
-
}
|
|
2627
2659
|
updateRowExpandStyle();
|
|
2628
2660
|
return computeScrollLoad().then(() => {
|
|
2629
2661
|
if (reFull === true) {
|
|
@@ -2651,7 +2683,10 @@ export default defineComponent({
|
|
|
2651
2683
|
const { transform } = treeOpts;
|
|
2652
2684
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2653
2685
|
let treeData = [];
|
|
2654
|
-
let fullData = reactive(datas ? datas.slice(0) : []); //
|
|
2686
|
+
let fullData = reactive(datas ? datas.slice(0) : []); // 转为响应式数据
|
|
2687
|
+
if (fullData.length > supportMaxRow) {
|
|
2688
|
+
errLog('vxe.error.errMaxRow', [supportMaxRow]);
|
|
2689
|
+
}
|
|
2655
2690
|
if (treeConfig) {
|
|
2656
2691
|
if (transform) {
|
|
2657
2692
|
// 树结构自动转换
|
|
@@ -2746,7 +2781,7 @@ export default defineComponent({
|
|
|
2746
2781
|
// warnLog('vxe.error.reqProp', ['table.show-overflow'])
|
|
2747
2782
|
// }
|
|
2748
2783
|
if (props.spanMethod) {
|
|
2749
|
-
|
|
2784
|
+
errLog('vxe.error.scrollErrProp', ['table.span-method']);
|
|
2750
2785
|
}
|
|
2751
2786
|
}
|
|
2752
2787
|
handleReserveStatus();
|
|
@@ -3054,9 +3089,8 @@ export default defineComponent({
|
|
|
3054
3089
|
* @returns
|
|
3055
3090
|
*/
|
|
3056
3091
|
const handleBaseTreeExpand = (rows, expanded) => {
|
|
3057
|
-
const {
|
|
3058
|
-
const
|
|
3059
|
-
const { fullAllDataRowIdData, tableFullData } = internalData;
|
|
3092
|
+
const { treeNodeColumn } = reactData;
|
|
3093
|
+
const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
|
|
3060
3094
|
const treeOpts = computeTreeOpts.value;
|
|
3061
3095
|
const { reserve, lazy, accordion, toggleMethod } = treeOpts;
|
|
3062
3096
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -3064,6 +3098,7 @@ export default defineComponent({
|
|
|
3064
3098
|
const result = [];
|
|
3065
3099
|
const columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
3066
3100
|
const $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
3101
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3067
3102
|
let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
|
|
3068
3103
|
if (accordion) {
|
|
3069
3104
|
validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
|
|
@@ -3071,17 +3106,17 @@ export default defineComponent({
|
|
|
3071
3106
|
const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField });
|
|
3072
3107
|
if (matchObj) {
|
|
3073
3108
|
matchObj.items.forEach(item => {
|
|
3074
|
-
const rowid =
|
|
3075
|
-
if (
|
|
3076
|
-
delete
|
|
3109
|
+
const rowid = handleGetRowId(item);
|
|
3110
|
+
if (treeExpandedMaps[rowid]) {
|
|
3111
|
+
delete treeExpandedMaps[rowid];
|
|
3077
3112
|
}
|
|
3078
3113
|
});
|
|
3079
3114
|
}
|
|
3080
3115
|
}
|
|
3081
3116
|
if (expanded) {
|
|
3082
3117
|
validRows.forEach((row) => {
|
|
3083
|
-
const rowid =
|
|
3084
|
-
if (!
|
|
3118
|
+
const rowid = handleGetRowId(row);
|
|
3119
|
+
if (!treeExpandedMaps[rowid]) {
|
|
3085
3120
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
3086
3121
|
if (rowRest) {
|
|
3087
3122
|
const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
|
|
@@ -3091,7 +3126,7 @@ export default defineComponent({
|
|
|
3091
3126
|
}
|
|
3092
3127
|
else {
|
|
3093
3128
|
if (row[childrenField] && row[childrenField].length) {
|
|
3094
|
-
|
|
3129
|
+
treeExpandedMaps[rowid] = row;
|
|
3095
3130
|
}
|
|
3096
3131
|
}
|
|
3097
3132
|
}
|
|
@@ -3100,16 +3135,16 @@ export default defineComponent({
|
|
|
3100
3135
|
}
|
|
3101
3136
|
else {
|
|
3102
3137
|
validRows.forEach(item => {
|
|
3103
|
-
const rowid =
|
|
3104
|
-
if (
|
|
3105
|
-
delete
|
|
3138
|
+
const rowid = handleGetRowId(item);
|
|
3139
|
+
if (treeExpandedMaps[rowid]) {
|
|
3140
|
+
delete treeExpandedMaps[rowid];
|
|
3106
3141
|
}
|
|
3107
3142
|
});
|
|
3108
3143
|
}
|
|
3109
3144
|
if (reserve) {
|
|
3110
3145
|
validRows.forEach((row) => handleTreeExpandReserve(row, expanded));
|
|
3111
3146
|
}
|
|
3112
|
-
reactData.
|
|
3147
|
+
reactData.treeExpandedFlag++;
|
|
3113
3148
|
return Promise.all(result).then(() => {
|
|
3114
3149
|
return tableMethods.recalculate();
|
|
3115
3150
|
});
|
|
@@ -3138,9 +3173,9 @@ export default defineComponent({
|
|
|
3138
3173
|
handleCheckedAllCheckboxRow(value);
|
|
3139
3174
|
if (evnt) {
|
|
3140
3175
|
dispatchEvent('checkbox-all', {
|
|
3141
|
-
records: $xeTable.getCheckboxRecords(),
|
|
3142
|
-
reserves: $xeTable.getCheckboxReserveRecords(),
|
|
3143
|
-
indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
|
|
3176
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
3177
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
3178
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
3144
3179
|
checked: value
|
|
3145
3180
|
}, evnt);
|
|
3146
3181
|
}
|
|
@@ -3171,10 +3206,11 @@ export default defineComponent({
|
|
|
3171
3206
|
}
|
|
3172
3207
|
};
|
|
3173
3208
|
const createGetRowCacheProp = (prop) => {
|
|
3209
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3174
3210
|
return function (row) {
|
|
3175
3211
|
const { fullAllDataRowIdData } = internalData;
|
|
3176
3212
|
if (row) {
|
|
3177
|
-
const rowid =
|
|
3213
|
+
const rowid = handleGetRowId(row);
|
|
3178
3214
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
3179
3215
|
if (rowRest) {
|
|
3180
3216
|
return rowRest[prop];
|
|
@@ -3325,7 +3361,7 @@ export default defineComponent({
|
|
|
3325
3361
|
};
|
|
3326
3362
|
const handleUpdateColResize = (evnt, params) => {
|
|
3327
3363
|
$xeTable.analyColumnWidth();
|
|
3328
|
-
$xeTable.recalculate(
|
|
3364
|
+
$xeTable.recalculate().then(() => {
|
|
3329
3365
|
$xeTable.saveCustomStore('update:width');
|
|
3330
3366
|
$xeTable.updateCellAreas();
|
|
3331
3367
|
$xeTable.dispatchEvent('column-resizable-change', params, evnt);
|
|
@@ -3336,7 +3372,7 @@ export default defineComponent({
|
|
|
3336
3372
|
};
|
|
3337
3373
|
const handleUpdateRowResize = (evnt, params) => {
|
|
3338
3374
|
reactData.resizeHeightFlag++;
|
|
3339
|
-
$xeTable.recalculate(
|
|
3375
|
+
$xeTable.recalculate().then(() => {
|
|
3340
3376
|
$xeTable.updateCellAreas();
|
|
3341
3377
|
$xeTable.dispatchEvent('row-resizable-change', params, evnt);
|
|
3342
3378
|
setTimeout(() => $xeTable.recalculate(true), 300);
|
|
@@ -3354,16 +3390,17 @@ export default defineComponent({
|
|
|
3354
3390
|
}
|
|
3355
3391
|
};
|
|
3356
3392
|
const updateRowOffsetTop = () => {
|
|
3357
|
-
const { expandColumn
|
|
3358
|
-
const { afterFullData, fullAllDataRowIdData } = internalData;
|
|
3393
|
+
const { expandColumn } = reactData;
|
|
3394
|
+
const { afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
|
|
3359
3395
|
const expandOpts = computeExpandOpts.value;
|
|
3360
3396
|
const rowOpts = computeRowOpts.value;
|
|
3361
3397
|
const cellOpts = computeCellOpts.value;
|
|
3362
3398
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
3399
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3363
3400
|
let offsetTop = 0;
|
|
3364
3401
|
for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
3365
3402
|
const row = afterFullData[rIndex];
|
|
3366
|
-
const rowid =
|
|
3403
|
+
const rowid = handleGetRowId(row);
|
|
3367
3404
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
3368
3405
|
rowRest.oTop = offsetTop;
|
|
3369
3406
|
offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
|
|
@@ -3438,6 +3475,9 @@ export default defineComponent({
|
|
|
3438
3475
|
};
|
|
3439
3476
|
tableMethods = {
|
|
3440
3477
|
dispatchEvent,
|
|
3478
|
+
getEl() {
|
|
3479
|
+
return refElem.value;
|
|
3480
|
+
},
|
|
3441
3481
|
/**
|
|
3442
3482
|
* 重置表格的一切数据状态
|
|
3443
3483
|
*/
|
|
@@ -3740,12 +3780,15 @@ export default defineComponent({
|
|
|
3740
3780
|
*/
|
|
3741
3781
|
revertData(rows, field) {
|
|
3742
3782
|
const { keepSource, treeConfig } = props;
|
|
3743
|
-
const {
|
|
3783
|
+
const { editStore } = reactData;
|
|
3784
|
+
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
|
|
3785
|
+
const removeTempMaps = Object.assign({}, editStore.removeMaps);
|
|
3744
3786
|
const treeOpts = computeTreeOpts.value;
|
|
3745
3787
|
const { transform } = treeOpts;
|
|
3788
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3746
3789
|
if (!keepSource) {
|
|
3747
3790
|
if (process.env.NODE_ENV === 'development') {
|
|
3748
|
-
|
|
3791
|
+
errLog('vxe.error.reqProp', ['keep-source']);
|
|
3749
3792
|
}
|
|
3750
3793
|
return nextTick();
|
|
3751
3794
|
}
|
|
@@ -3760,23 +3803,24 @@ export default defineComponent({
|
|
|
3760
3803
|
}
|
|
3761
3804
|
let reDelFlag = false;
|
|
3762
3805
|
if (targetRows.length) {
|
|
3763
|
-
targetRows.forEach((
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
|
|
3775
|
-
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3806
|
+
targetRows.forEach((item) => {
|
|
3807
|
+
const rowid = handleGetRowId(item);
|
|
3808
|
+
const rowRest = fullAllDataRowIdData[rowid];
|
|
3809
|
+
if (rowRest) {
|
|
3810
|
+
const row = rowRest.row;
|
|
3811
|
+
if (!$xeTable.isInsertByRow(row)) {
|
|
3812
|
+
const oRow = sourceDataRowIdData[rowid];
|
|
3813
|
+
if (oRow && row) {
|
|
3814
|
+
if (field) {
|
|
3815
|
+
XEUtils.set(row, field, XEUtils.clone(XEUtils.get(oRow, field), true));
|
|
3816
|
+
}
|
|
3817
|
+
else {
|
|
3818
|
+
XEUtils.destructuring(row, XEUtils.clone(oRow, true));
|
|
3819
|
+
}
|
|
3820
|
+
if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
|
|
3821
|
+
delete removeTempMaps[rowid];
|
|
3822
|
+
tableFullData.unshift(row);
|
|
3823
|
+
afterFullData.unshift(row);
|
|
3780
3824
|
reDelFlag = true;
|
|
3781
3825
|
}
|
|
3782
3826
|
}
|
|
@@ -3786,6 +3830,7 @@ export default defineComponent({
|
|
|
3786
3830
|
}
|
|
3787
3831
|
if (rows) {
|
|
3788
3832
|
if (reDelFlag) {
|
|
3833
|
+
editStore.removeMaps = removeTempMaps;
|
|
3789
3834
|
$xeTable.updateFooter();
|
|
3790
3835
|
$xeTable.cacheRowMap(false);
|
|
3791
3836
|
$xeTable.handleTableData(treeConfig && transform);
|
|
@@ -3938,18 +3983,20 @@ export default defineComponent({
|
|
|
3938
3983
|
},
|
|
3939
3984
|
/**
|
|
3940
3985
|
* 检查行或列数据是否发生改变
|
|
3941
|
-
* @param {Row}
|
|
3986
|
+
* @param {Row} rowidOrRow 行对象、行主键
|
|
3942
3987
|
* @param {String} field 字段名
|
|
3943
3988
|
*/
|
|
3944
|
-
isUpdateByRow(
|
|
3989
|
+
isUpdateByRow(rowidOrRow, field) {
|
|
3945
3990
|
const { keepSource } = props;
|
|
3946
3991
|
const { tableFullColumn, fullDataRowIdData, sourceDataRowIdData } = internalData;
|
|
3947
3992
|
if (keepSource) {
|
|
3948
|
-
const rowid = getRowid($xeTable,
|
|
3993
|
+
const rowid = XEUtils.isString(rowidOrRow) || XEUtils.isNumber(rowidOrRow) ? rowidOrRow : getRowid($xeTable, rowidOrRow);
|
|
3994
|
+
const rowRest = fullDataRowIdData[rowid];
|
|
3949
3995
|
// 新增的数据不需要检测
|
|
3950
|
-
if (!
|
|
3996
|
+
if (!rowRest) {
|
|
3951
3997
|
return false;
|
|
3952
3998
|
}
|
|
3999
|
+
const row = rowRest.row;
|
|
3953
4000
|
const oRow = sourceDataRowIdData[rowid];
|
|
3954
4001
|
if (oRow) {
|
|
3955
4002
|
if (arguments.length > 1) {
|
|
@@ -4013,6 +4060,94 @@ export default defineComponent({
|
|
|
4013
4060
|
tableColumn: reactData.tableColumn.slice(0)
|
|
4014
4061
|
};
|
|
4015
4062
|
},
|
|
4063
|
+
/**
|
|
4064
|
+
* 移动列到指定列的位置
|
|
4065
|
+
* @param fieldOrColumn
|
|
4066
|
+
* @param targetFieldOrColumn
|
|
4067
|
+
* @param options
|
|
4068
|
+
*/
|
|
4069
|
+
moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
|
|
4070
|
+
const { fullColumnIdData, visibleColumn } = internalData;
|
|
4071
|
+
const { dragToChild, dragPos, isCrossDrag } = Object.assign({}, options);
|
|
4072
|
+
const dragCol = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
4073
|
+
let prevDragCol = null;
|
|
4074
|
+
const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
|
|
4075
|
+
let defPos = 'left';
|
|
4076
|
+
if (XEUtils.isNumber(targetFieldOrColumn)) {
|
|
4077
|
+
if (colRest && targetFieldOrColumn) {
|
|
4078
|
+
let currList = colRest.items;
|
|
4079
|
+
let offsetIndex = colRest._index + targetFieldOrColumn;
|
|
4080
|
+
if (isCrossDrag) {
|
|
4081
|
+
currList = visibleColumn;
|
|
4082
|
+
offsetIndex = colRest._index + targetFieldOrColumn;
|
|
4083
|
+
}
|
|
4084
|
+
if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
|
|
4085
|
+
prevDragCol = currList[offsetIndex];
|
|
4086
|
+
}
|
|
4087
|
+
if (targetFieldOrColumn > 0) {
|
|
4088
|
+
defPos = 'right';
|
|
4089
|
+
}
|
|
4090
|
+
}
|
|
4091
|
+
}
|
|
4092
|
+
else {
|
|
4093
|
+
prevDragCol = handleFieldOrColumn($xeTable, targetFieldOrColumn);
|
|
4094
|
+
const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
|
|
4095
|
+
if (colRest && targetColRest) {
|
|
4096
|
+
if (targetColRest._index > colRest._index) {
|
|
4097
|
+
defPos = 'right';
|
|
4098
|
+
}
|
|
4099
|
+
}
|
|
4100
|
+
}
|
|
4101
|
+
return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
|
|
4102
|
+
},
|
|
4103
|
+
/**
|
|
4104
|
+
* 移动行到指定行的位置
|
|
4105
|
+
* @param rowidOrRow
|
|
4106
|
+
* @param targetRowidOrRow
|
|
4107
|
+
* @param options
|
|
4108
|
+
*/
|
|
4109
|
+
moveRowTo(rowidOrRow, targetRowidOrRow, options) {
|
|
4110
|
+
const { treeConfig } = props;
|
|
4111
|
+
const { fullAllDataRowIdData, afterFullData } = internalData;
|
|
4112
|
+
const { dragToChild, dragPos, isCrossDrag } = Object.assign({}, options);
|
|
4113
|
+
const treeOpts = computeTreeOpts.value;
|
|
4114
|
+
const dragRow = handleRowidOrRow($xeTable, rowidOrRow);
|
|
4115
|
+
let prevDragRow = null;
|
|
4116
|
+
let defPos = 'top';
|
|
4117
|
+
const rowRest = dragRow ? fullAllDataRowIdData[getRowid($xeTable, dragRow)] : null;
|
|
4118
|
+
if (XEUtils.isNumber(targetRowidOrRow)) {
|
|
4119
|
+
if (rowRest && targetRowidOrRow) {
|
|
4120
|
+
let currList = afterFullData;
|
|
4121
|
+
let offsetIndex = rowRest._index + targetRowidOrRow;
|
|
4122
|
+
if (treeConfig) {
|
|
4123
|
+
currList = rowRest.items;
|
|
4124
|
+
if (treeOpts.transform) {
|
|
4125
|
+
offsetIndex = rowRest.treeIndex + targetRowidOrRow;
|
|
4126
|
+
if (isCrossDrag) {
|
|
4127
|
+
currList = afterFullData;
|
|
4128
|
+
offsetIndex = rowRest._index + targetRowidOrRow;
|
|
4129
|
+
}
|
|
4130
|
+
}
|
|
4131
|
+
}
|
|
4132
|
+
if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
|
|
4133
|
+
prevDragRow = currList[offsetIndex];
|
|
4134
|
+
}
|
|
4135
|
+
if (targetRowidOrRow > 0) {
|
|
4136
|
+
defPos = 'bottom';
|
|
4137
|
+
}
|
|
4138
|
+
}
|
|
4139
|
+
}
|
|
4140
|
+
else {
|
|
4141
|
+
prevDragRow = handleRowidOrRow($xeTable, targetRowidOrRow);
|
|
4142
|
+
const targetRowRest = prevDragRow ? fullAllDataRowIdData[getRowid($xeTable, prevDragRow)] : null;
|
|
4143
|
+
if (rowRest && targetRowRest) {
|
|
4144
|
+
if (targetRowRest._index > rowRest._index) {
|
|
4145
|
+
defPos = 'bottom';
|
|
4146
|
+
}
|
|
4147
|
+
}
|
|
4148
|
+
}
|
|
4149
|
+
return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
|
|
4150
|
+
},
|
|
4016
4151
|
/**
|
|
4017
4152
|
* 获取表格的全量列
|
|
4018
4153
|
*/
|
|
@@ -4032,24 +4167,24 @@ export default defineComponent({
|
|
|
4032
4167
|
*/
|
|
4033
4168
|
getCheckboxRecords(isFull) {
|
|
4034
4169
|
const { treeConfig } = props;
|
|
4035
|
-
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData;
|
|
4170
|
+
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData;
|
|
4036
4171
|
const treeOpts = computeTreeOpts.value;
|
|
4037
4172
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4038
4173
|
const { transform, mapChildrenField } = treeOpts;
|
|
4039
4174
|
const { checkField } = checkboxOpts;
|
|
4040
4175
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4041
4176
|
let rowList = [];
|
|
4042
|
-
const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
|
|
4043
4177
|
if (checkField) {
|
|
4044
4178
|
if (treeConfig) {
|
|
4179
|
+
const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
|
|
4045
4180
|
rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, checkField), { children: transform ? mapChildrenField : childrenField });
|
|
4046
4181
|
}
|
|
4047
4182
|
else {
|
|
4183
|
+
const currTableData = isFull ? tableFullData : afterFullData;
|
|
4048
4184
|
rowList = currTableData.filter((row) => XEUtils.get(row, checkField));
|
|
4049
4185
|
}
|
|
4050
4186
|
}
|
|
4051
4187
|
else {
|
|
4052
|
-
const { selectCheckboxMaps } = reactData;
|
|
4053
4188
|
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
4054
4189
|
if (isFull) {
|
|
4055
4190
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -4362,12 +4497,13 @@ export default defineComponent({
|
|
|
4362
4497
|
},
|
|
4363
4498
|
getRowHeightConf(isFull) {
|
|
4364
4499
|
const { fullAllDataRowIdData, afterFullData } = internalData;
|
|
4500
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
4365
4501
|
const rowOpts = computeRowOpts.value;
|
|
4366
4502
|
const cellOpts = computeCellOpts.value;
|
|
4367
4503
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
4368
4504
|
const rest = {};
|
|
4369
4505
|
afterFullData.forEach(row => {
|
|
4370
|
-
const rowid =
|
|
4506
|
+
const rowid = handleGetRowId(row);
|
|
4371
4507
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
4372
4508
|
if (rowRest) {
|
|
4373
4509
|
const resizeHeight = rowRest.resizeHeight;
|
|
@@ -4391,8 +4527,9 @@ export default defineComponent({
|
|
|
4391
4527
|
rHeight = Math.floor(rHeight * bodyHeight);
|
|
4392
4528
|
}
|
|
4393
4529
|
if (rHeight) {
|
|
4530
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
4394
4531
|
rows.forEach(row => {
|
|
4395
|
-
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row :
|
|
4532
|
+
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row);
|
|
4396
4533
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
4397
4534
|
if (rowRest) {
|
|
4398
4535
|
rowRest.resizeHeight = rHeight;
|
|
@@ -4541,12 +4678,11 @@ export default defineComponent({
|
|
|
4541
4678
|
*/
|
|
4542
4679
|
getCheckboxIndeterminateRecords(isFull) {
|
|
4543
4680
|
const { treeConfig } = props;
|
|
4544
|
-
const { fullDataRowIdData } = internalData;
|
|
4545
|
-
const { treeIndeterminateMaps } = reactData;
|
|
4681
|
+
const { fullDataRowIdData, treeIndeterminateRowMaps } = internalData;
|
|
4546
4682
|
if (treeConfig) {
|
|
4547
4683
|
const fullRest = [];
|
|
4548
4684
|
const defRest = [];
|
|
4549
|
-
XEUtils.each(
|
|
4685
|
+
XEUtils.each(treeIndeterminateRowMaps, (item, rowid) => {
|
|
4550
4686
|
if (item) {
|
|
4551
4687
|
fullRest.push(item);
|
|
4552
4688
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -4587,17 +4723,18 @@ export default defineComponent({
|
|
|
4587
4723
|
return handleCheckedCheckboxRow(rows, checked, true);
|
|
4588
4724
|
},
|
|
4589
4725
|
isCheckedByCheckboxRow(row) {
|
|
4590
|
-
const {
|
|
4726
|
+
const { updateCheckboxFlag } = reactData;
|
|
4727
|
+
const { selectCheckboxMaps } = internalData;
|
|
4591
4728
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4592
4729
|
const { checkField } = checkboxOpts;
|
|
4593
4730
|
if (checkField) {
|
|
4594
4731
|
return XEUtils.get(row, checkField);
|
|
4595
4732
|
}
|
|
4596
|
-
return !!selectCheckboxMaps[getRowid($xeTable, row)];
|
|
4733
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[getRowid($xeTable, row)];
|
|
4597
4734
|
},
|
|
4598
4735
|
isCheckedByCheckboxRowKey(rowid) {
|
|
4599
|
-
const {
|
|
4600
|
-
const { fullAllDataRowIdData } = internalData;
|
|
4736
|
+
const { updateCheckboxFlag } = reactData;
|
|
4737
|
+
const { fullAllDataRowIdData, selectCheckboxMaps } = internalData;
|
|
4601
4738
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4602
4739
|
const { checkField } = checkboxOpts;
|
|
4603
4740
|
if (checkField) {
|
|
@@ -4607,21 +4744,21 @@ export default defineComponent({
|
|
|
4607
4744
|
}
|
|
4608
4745
|
return false;
|
|
4609
4746
|
}
|
|
4610
|
-
return !!selectCheckboxMaps[rowid];
|
|
4747
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[rowid];
|
|
4611
4748
|
},
|
|
4612
4749
|
isIndeterminateByCheckboxRow(row) {
|
|
4613
|
-
const {
|
|
4614
|
-
return !!
|
|
4750
|
+
const { treeIndeterminateRowMaps } = internalData;
|
|
4751
|
+
return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
|
|
4615
4752
|
},
|
|
4616
4753
|
isIndeterminateByCheckboxRowKey(rowid) {
|
|
4617
|
-
const {
|
|
4618
|
-
return !!
|
|
4754
|
+
const { treeIndeterminateRowMaps } = internalData;
|
|
4755
|
+
return !!treeIndeterminateRowMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
|
|
4619
4756
|
},
|
|
4620
4757
|
/**
|
|
4621
4758
|
* 多选,切换某一行的选中状态
|
|
4622
4759
|
*/
|
|
4623
4760
|
toggleCheckboxRow(row) {
|
|
4624
|
-
const { selectCheckboxMaps } =
|
|
4761
|
+
const { selectCheckboxMaps } = internalData;
|
|
4625
4762
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4626
4763
|
const { checkField } = checkboxOpts;
|
|
4627
4764
|
const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)];
|
|
@@ -4684,15 +4821,16 @@ export default defineComponent({
|
|
|
4684
4821
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4685
4822
|
const reserveSelection = [];
|
|
4686
4823
|
if (checkboxOpts.reserve) {
|
|
4824
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
4687
4825
|
const afterFullIdMaps = {};
|
|
4688
4826
|
if (treeConfig) {
|
|
4689
4827
|
XEUtils.eachTree(afterFullData, row => {
|
|
4690
|
-
afterFullIdMaps[
|
|
4828
|
+
afterFullIdMaps[handleGetRowId(row)] = 1;
|
|
4691
4829
|
}, { children: childrenField });
|
|
4692
4830
|
}
|
|
4693
4831
|
else {
|
|
4694
4832
|
afterFullData.forEach(row => {
|
|
4695
|
-
afterFullIdMaps[
|
|
4833
|
+
afterFullIdMaps[handleGetRowId(row)] = 1;
|
|
4696
4834
|
});
|
|
4697
4835
|
}
|
|
4698
4836
|
XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
|
|
@@ -4734,6 +4872,7 @@ export default defineComponent({
|
|
|
4734
4872
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4735
4873
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4736
4874
|
const { checkField, reserve } = checkboxOpts;
|
|
4875
|
+
// indeterminateField 仅支持读取
|
|
4737
4876
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
4738
4877
|
if (checkField) {
|
|
4739
4878
|
const handleClearChecked = (item) => {
|
|
@@ -4754,8 +4893,9 @@ export default defineComponent({
|
|
|
4754
4893
|
}
|
|
4755
4894
|
reactData.isAllSelected = false;
|
|
4756
4895
|
reactData.isIndeterminate = false;
|
|
4757
|
-
|
|
4758
|
-
|
|
4896
|
+
internalData.selectCheckboxMaps = {};
|
|
4897
|
+
internalData.treeIndeterminateRowMaps = {};
|
|
4898
|
+
reactData.updateCheckboxFlag++;
|
|
4759
4899
|
return nextTick();
|
|
4760
4900
|
},
|
|
4761
4901
|
/**
|
|
@@ -4863,13 +5003,20 @@ export default defineComponent({
|
|
|
4863
5003
|
* 用于当前列,设置某列行为高亮状态
|
|
4864
5004
|
*/
|
|
4865
5005
|
setCurrentColumn(fieldOrColumn) {
|
|
5006
|
+
const { mouseConfig } = props;
|
|
5007
|
+
const mouseOpts = computeMouseOpts.value;
|
|
5008
|
+
const isMouseSelected = mouseConfig && mouseOpts.selected;
|
|
4866
5009
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
4867
5010
|
if (column) {
|
|
4868
|
-
|
|
4869
|
-
tableMethods.clearCurrentColumn();
|
|
5011
|
+
$xeTable.clearCurrentColumn();
|
|
4870
5012
|
reactData.currentColumn = column;
|
|
4871
5013
|
}
|
|
4872
|
-
return nextTick()
|
|
5014
|
+
return nextTick().then(() => {
|
|
5015
|
+
// 更新状选中态
|
|
5016
|
+
if (isMouseSelected) {
|
|
5017
|
+
$xeTable.addCellSelectedClass();
|
|
5018
|
+
}
|
|
5019
|
+
});
|
|
4873
5020
|
},
|
|
4874
5021
|
/**
|
|
4875
5022
|
* 用于当前列,手动清空当前高亮的状态
|
|
@@ -4879,59 +5026,60 @@ export default defineComponent({
|
|
|
4879
5026
|
return nextTick();
|
|
4880
5027
|
},
|
|
4881
5028
|
setPendingRow(rows, status) {
|
|
4882
|
-
const
|
|
5029
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5030
|
+
const { pendingRowMaps } = internalData;
|
|
4883
5031
|
if (rows && !XEUtils.isArray(rows)) {
|
|
4884
5032
|
rows = [rows];
|
|
4885
5033
|
}
|
|
4886
5034
|
if (status) {
|
|
4887
5035
|
rows.forEach((row) => {
|
|
4888
|
-
const rowid =
|
|
4889
|
-
if (rowid && !
|
|
4890
|
-
|
|
5036
|
+
const rowid = handleGetRowId(row);
|
|
5037
|
+
if (rowid && !pendingRowMaps[rowid]) {
|
|
5038
|
+
pendingRowMaps[rowid] = row;
|
|
4891
5039
|
}
|
|
4892
5040
|
});
|
|
4893
5041
|
}
|
|
4894
5042
|
else {
|
|
4895
5043
|
rows.forEach((row) => {
|
|
4896
|
-
const rowid =
|
|
4897
|
-
if (rowid &&
|
|
4898
|
-
delete
|
|
5044
|
+
const rowid = handleGetRowId(row);
|
|
5045
|
+
if (rowid && pendingRowMaps[rowid]) {
|
|
5046
|
+
delete pendingRowMaps[rowid];
|
|
4899
5047
|
}
|
|
4900
5048
|
});
|
|
4901
5049
|
}
|
|
4902
|
-
reactData.
|
|
5050
|
+
reactData.pendingRowFlag++;
|
|
4903
5051
|
return nextTick();
|
|
4904
5052
|
},
|
|
4905
5053
|
togglePendingRow(rows) {
|
|
4906
|
-
const
|
|
5054
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5055
|
+
const { pendingRowMaps } = internalData;
|
|
4907
5056
|
if (rows && !XEUtils.isArray(rows)) {
|
|
4908
5057
|
rows = [rows];
|
|
4909
5058
|
}
|
|
4910
5059
|
rows.forEach((row) => {
|
|
4911
|
-
const rowid =
|
|
5060
|
+
const rowid = handleGetRowId(row);
|
|
4912
5061
|
if (rowid) {
|
|
4913
|
-
if (
|
|
4914
|
-
delete
|
|
5062
|
+
if (pendingRowMaps[rowid]) {
|
|
5063
|
+
delete pendingRowMaps[rowid];
|
|
4915
5064
|
}
|
|
4916
5065
|
else {
|
|
4917
|
-
|
|
5066
|
+
pendingRowMaps[rowid] = row;
|
|
4918
5067
|
}
|
|
4919
5068
|
}
|
|
4920
5069
|
});
|
|
4921
|
-
reactData.
|
|
5070
|
+
reactData.pendingRowFlag++;
|
|
4922
5071
|
return nextTick();
|
|
4923
5072
|
},
|
|
4924
5073
|
hasPendingByRow(row) {
|
|
4925
5074
|
return tableMethods.isPendingByRow(row);
|
|
4926
5075
|
},
|
|
4927
5076
|
isPendingByRow(row) {
|
|
4928
|
-
const { pendingRowMaps } =
|
|
5077
|
+
const { pendingRowMaps } = internalData;
|
|
4929
5078
|
const rowid = getRowid($xeTable, row);
|
|
4930
5079
|
return !!pendingRowMaps[rowid];
|
|
4931
5080
|
},
|
|
4932
5081
|
getPendingRecords() {
|
|
4933
|
-
const { pendingRowMaps } =
|
|
4934
|
-
const { fullAllDataRowIdData } = internalData;
|
|
5082
|
+
const { fullAllDataRowIdData, pendingRowMaps } = internalData;
|
|
4935
5083
|
const insertRecords = [];
|
|
4936
5084
|
XEUtils.each(pendingRowMaps, (row, rowid) => {
|
|
4937
5085
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -4941,7 +5089,8 @@ export default defineComponent({
|
|
|
4941
5089
|
return insertRecords;
|
|
4942
5090
|
},
|
|
4943
5091
|
clearPendingRow() {
|
|
4944
|
-
|
|
5092
|
+
internalData.pendingRowMaps = {};
|
|
5093
|
+
reactData.pendingRowFlag++;
|
|
4945
5094
|
return nextTick();
|
|
4946
5095
|
},
|
|
4947
5096
|
sort(sortConfs, sortOrder) {
|
|
@@ -5090,7 +5239,13 @@ export default defineComponent({
|
|
|
5090
5239
|
visible: false
|
|
5091
5240
|
});
|
|
5092
5241
|
if (visible) {
|
|
5093
|
-
dispatchEvent('filter-visible', {
|
|
5242
|
+
dispatchEvent('filter-visible', {
|
|
5243
|
+
column,
|
|
5244
|
+
property: column.field,
|
|
5245
|
+
field: column.field,
|
|
5246
|
+
filterList: () => $xeTable.getCheckedFilters(),
|
|
5247
|
+
visible: false
|
|
5248
|
+
}, null);
|
|
5094
5249
|
}
|
|
5095
5250
|
return nextTick();
|
|
5096
5251
|
},
|
|
@@ -5118,17 +5273,16 @@ export default defineComponent({
|
|
|
5118
5273
|
return rowRest && !!rowRest.expandLoaded;
|
|
5119
5274
|
},
|
|
5120
5275
|
clearRowExpandLoaded(row) {
|
|
5121
|
-
const
|
|
5122
|
-
const { fullAllDataRowIdData } = internalData;
|
|
5276
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData;
|
|
5123
5277
|
const expandOpts = computeExpandOpts.value;
|
|
5124
5278
|
const { lazy } = expandOpts;
|
|
5125
5279
|
const rowid = getRowid($xeTable, row);
|
|
5126
5280
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5127
5281
|
if (lazy && rowRest) {
|
|
5128
5282
|
rowRest.expandLoaded = false;
|
|
5129
|
-
delete
|
|
5283
|
+
delete rowExpandLazyLoadedMaps[rowid];
|
|
5130
5284
|
}
|
|
5131
|
-
reactData.
|
|
5285
|
+
reactData.rowExpandedFlag++;
|
|
5132
5286
|
return nextTick();
|
|
5133
5287
|
},
|
|
5134
5288
|
/**
|
|
@@ -5136,12 +5290,12 @@ export default defineComponent({
|
|
|
5136
5290
|
* @param {Row} row 行对象
|
|
5137
5291
|
*/
|
|
5138
5292
|
reloadRowExpand(row) {
|
|
5139
|
-
const { rowExpandLazyLoadedMaps } =
|
|
5293
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
5140
5294
|
const expandOpts = computeExpandOpts.value;
|
|
5141
5295
|
const { lazy } = expandOpts;
|
|
5142
5296
|
const rowid = getRowid($xeTable, row);
|
|
5143
5297
|
if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
|
|
5144
|
-
|
|
5298
|
+
$xeTable.clearRowExpandLoaded(row)
|
|
5145
5299
|
.then(() => handleAsyncRowExpand(row));
|
|
5146
5300
|
}
|
|
5147
5301
|
return nextTick();
|
|
@@ -5151,13 +5305,13 @@ export default defineComponent({
|
|
|
5151
5305
|
warnLog('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand']);
|
|
5152
5306
|
}
|
|
5153
5307
|
// 即将废弃
|
|
5154
|
-
return
|
|
5308
|
+
return $xeTable.reloadRowExpand(row);
|
|
5155
5309
|
},
|
|
5156
5310
|
/**
|
|
5157
5311
|
* 切换展开行
|
|
5158
5312
|
*/
|
|
5159
5313
|
toggleRowExpand(row) {
|
|
5160
|
-
return
|
|
5314
|
+
return $xeTable.setRowExpand(row, !$xeTable.isRowExpandByRow(row));
|
|
5161
5315
|
},
|
|
5162
5316
|
/**
|
|
5163
5317
|
* 设置所有行的展开与否
|
|
@@ -5186,9 +5340,9 @@ export default defineComponent({
|
|
|
5186
5340
|
* @param {Boolean} expanded 是否展开
|
|
5187
5341
|
*/
|
|
5188
5342
|
setRowExpand(rows, expanded) {
|
|
5189
|
-
const {
|
|
5190
|
-
|
|
5191
|
-
|
|
5343
|
+
const { expandColumn } = reactData;
|
|
5344
|
+
let { fullAllDataRowIdData, rowExpandedMaps, rowExpandLazyLoadedMaps } = internalData;
|
|
5345
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5192
5346
|
const expandOpts = computeExpandOpts.value;
|
|
5193
5347
|
const { reserve, lazy, accordion, toggleMethod } = expandOpts;
|
|
5194
5348
|
const lazyRests = [];
|
|
@@ -5200,30 +5354,31 @@ export default defineComponent({
|
|
|
5200
5354
|
}
|
|
5201
5355
|
if (accordion) {
|
|
5202
5356
|
// 只能同时展开一个
|
|
5203
|
-
|
|
5357
|
+
rowExpandedMaps = {};
|
|
5358
|
+
internalData.rowExpandedMaps = rowExpandedMaps;
|
|
5204
5359
|
rows = rows.slice(rows.length - 1, rows.length);
|
|
5205
5360
|
}
|
|
5206
5361
|
const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) })) : rows;
|
|
5207
5362
|
if (expanded) {
|
|
5208
5363
|
validRows.forEach((row) => {
|
|
5209
|
-
const rowid =
|
|
5210
|
-
if (!
|
|
5364
|
+
const rowid = handleGetRowId(row);
|
|
5365
|
+
if (!rowExpandedMaps[rowid]) {
|
|
5211
5366
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5212
5367
|
const isLoad = lazy && !rowRest.expandLoaded && !rowExpandLazyLoadedMaps[rowid];
|
|
5213
5368
|
if (isLoad) {
|
|
5214
5369
|
lazyRests.push(handleAsyncRowExpand(row));
|
|
5215
5370
|
}
|
|
5216
5371
|
else {
|
|
5217
|
-
|
|
5372
|
+
rowExpandedMaps[rowid] = row;
|
|
5218
5373
|
}
|
|
5219
5374
|
}
|
|
5220
5375
|
});
|
|
5221
5376
|
}
|
|
5222
5377
|
else {
|
|
5223
5378
|
validRows.forEach(item => {
|
|
5224
|
-
const rowid =
|
|
5225
|
-
if (
|
|
5226
|
-
delete
|
|
5379
|
+
const rowid = handleGetRowId(item);
|
|
5380
|
+
if (rowExpandedMaps[rowid]) {
|
|
5381
|
+
delete rowExpandedMaps[rowid];
|
|
5227
5382
|
}
|
|
5228
5383
|
});
|
|
5229
5384
|
}
|
|
@@ -5231,7 +5386,7 @@ export default defineComponent({
|
|
|
5231
5386
|
validRows.forEach((row) => handleRowExpandReserve(row, expanded));
|
|
5232
5387
|
}
|
|
5233
5388
|
}
|
|
5234
|
-
reactData.
|
|
5389
|
+
reactData.rowExpandedFlag++;
|
|
5235
5390
|
return Promise.all(lazyRests)
|
|
5236
5391
|
.then(() => nextTick())
|
|
5237
5392
|
.then(() => $xeTable.recalculate(true))
|
|
@@ -5247,9 +5402,10 @@ export default defineComponent({
|
|
|
5247
5402
|
* @param {Row} row 行对象
|
|
5248
5403
|
*/
|
|
5249
5404
|
isRowExpandByRow(row) {
|
|
5250
|
-
const {
|
|
5405
|
+
const { rowExpandedFlag } = reactData;
|
|
5406
|
+
const { rowExpandedMaps } = internalData;
|
|
5251
5407
|
const rowid = getRowid($xeTable, row);
|
|
5252
|
-
return !!rowExpandedMaps[rowid];
|
|
5408
|
+
return !!rowExpandedFlag && !!rowExpandedMaps[rowid];
|
|
5253
5409
|
},
|
|
5254
5410
|
isExpandByRow(row) {
|
|
5255
5411
|
// 已废弃
|
|
@@ -5266,7 +5422,8 @@ export default defineComponent({
|
|
|
5266
5422
|
const expandOpts = computeExpandOpts.value;
|
|
5267
5423
|
const { reserve } = expandOpts;
|
|
5268
5424
|
const expList = $xeTable.getRowExpandRecords();
|
|
5269
|
-
|
|
5425
|
+
internalData.rowExpandedMaps = {};
|
|
5426
|
+
reactData.rowExpandedFlag++;
|
|
5270
5427
|
if (reserve) {
|
|
5271
5428
|
tableFullData.forEach((row) => handleRowExpandReserve(row, false));
|
|
5272
5429
|
}
|
|
@@ -5287,7 +5444,7 @@ export default defineComponent({
|
|
|
5287
5444
|
},
|
|
5288
5445
|
getRowExpandRecords() {
|
|
5289
5446
|
const rest = [];
|
|
5290
|
-
XEUtils.each(
|
|
5447
|
+
XEUtils.each(internalData.rowExpandedMaps, item => {
|
|
5291
5448
|
if (item) {
|
|
5292
5449
|
rest.push(item);
|
|
5293
5450
|
}
|
|
@@ -5296,7 +5453,7 @@ export default defineComponent({
|
|
|
5296
5453
|
},
|
|
5297
5454
|
getTreeExpandRecords() {
|
|
5298
5455
|
const rest = [];
|
|
5299
|
-
XEUtils.each(
|
|
5456
|
+
XEUtils.each(internalData.treeExpandedMaps, item => {
|
|
5300
5457
|
if (item) {
|
|
5301
5458
|
rest.push(item);
|
|
5302
5459
|
}
|
|
@@ -5313,12 +5470,10 @@ export default defineComponent({
|
|
|
5313
5470
|
return rowRest && !!rowRest.treeLoaded;
|
|
5314
5471
|
},
|
|
5315
5472
|
clearTreeExpandLoaded(rows) {
|
|
5316
|
-
const { fullAllDataRowIdData } = internalData;
|
|
5473
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData;
|
|
5317
5474
|
const treeOpts = computeTreeOpts.value;
|
|
5318
5475
|
const { transform } = treeOpts;
|
|
5319
|
-
let tExpandedMaps = {};
|
|
5320
5476
|
if (rows) {
|
|
5321
|
-
tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
|
|
5322
5477
|
if (!XEUtils.isArray(rows)) {
|
|
5323
5478
|
rows = [rows];
|
|
5324
5479
|
}
|
|
@@ -5327,8 +5482,8 @@ export default defineComponent({
|
|
|
5327
5482
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5328
5483
|
if (rowRest) {
|
|
5329
5484
|
rowRest.treeLoaded = false;
|
|
5330
|
-
if (
|
|
5331
|
-
delete
|
|
5485
|
+
if (treeExpandedMaps[rowid]) {
|
|
5486
|
+
delete treeExpandedMaps[rowid];
|
|
5332
5487
|
}
|
|
5333
5488
|
}
|
|
5334
5489
|
});
|
|
@@ -5338,7 +5493,8 @@ export default defineComponent({
|
|
|
5338
5493
|
rowRest.treeLoaded = false;
|
|
5339
5494
|
});
|
|
5340
5495
|
}
|
|
5341
|
-
|
|
5496
|
+
internalData.treeExpandedMaps = {};
|
|
5497
|
+
reactData.treeExpandedFlag++;
|
|
5342
5498
|
if (transform) {
|
|
5343
5499
|
handleVirtualTreeToList();
|
|
5344
5500
|
return $xeTable.handleTableData();
|
|
@@ -5350,7 +5506,7 @@ export default defineComponent({
|
|
|
5350
5506
|
* @param {Row} row 行对象
|
|
5351
5507
|
*/
|
|
5352
5508
|
reloadTreeExpand(row) {
|
|
5353
|
-
const { treeExpandLazyLoadedMaps } =
|
|
5509
|
+
const { treeExpandLazyLoadedMaps } = internalData;
|
|
5354
5510
|
const treeOpts = computeTreeOpts.value;
|
|
5355
5511
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
5356
5512
|
const { transform, lazy } = treeOpts;
|
|
@@ -5436,8 +5592,9 @@ export default defineComponent({
|
|
|
5436
5592
|
* @param {Row} row 行对象
|
|
5437
5593
|
*/
|
|
5438
5594
|
isTreeExpandByRow(row) {
|
|
5439
|
-
const {
|
|
5440
|
-
|
|
5595
|
+
const { treeExpandedFlag } = reactData;
|
|
5596
|
+
const { treeExpandedMaps } = internalData;
|
|
5597
|
+
return !!treeExpandedFlag && !!treeExpandedMaps[getRowid($xeTable, row)];
|
|
5441
5598
|
},
|
|
5442
5599
|
/**
|
|
5443
5600
|
* 手动清空树形节点的展开状态,数据会恢复成未展开的状态
|
|
@@ -5447,19 +5604,20 @@ export default defineComponent({
|
|
|
5447
5604
|
const treeOpts = computeTreeOpts.value;
|
|
5448
5605
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
5449
5606
|
const { transform, reserve } = treeOpts;
|
|
5450
|
-
const expList =
|
|
5451
|
-
|
|
5607
|
+
const expList = $xeTable.getTreeExpandRecords();
|
|
5608
|
+
internalData.treeExpandedMaps = {};
|
|
5609
|
+
reactData.treeExpandedFlag++;
|
|
5452
5610
|
if (reserve) {
|
|
5453
5611
|
XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), { children: childrenField });
|
|
5454
5612
|
}
|
|
5455
|
-
return
|
|
5613
|
+
return $xeTable.handleTableData().then(() => {
|
|
5456
5614
|
if (transform) {
|
|
5457
5615
|
handleVirtualTreeToList();
|
|
5458
|
-
return
|
|
5616
|
+
return $xeTable.handleTableData();
|
|
5459
5617
|
}
|
|
5460
5618
|
}).then(() => {
|
|
5461
5619
|
if (expList.length) {
|
|
5462
|
-
return
|
|
5620
|
+
return $xeTable.recalculate();
|
|
5463
5621
|
}
|
|
5464
5622
|
});
|
|
5465
5623
|
},
|
|
@@ -5714,7 +5872,13 @@ export default defineComponent({
|
|
|
5714
5872
|
const { id } = props;
|
|
5715
5873
|
const customOpts = computeCustomOpts.value;
|
|
5716
5874
|
const { collectColumn } = internalData;
|
|
5717
|
-
const { checkMethod } = customOpts;
|
|
5875
|
+
const { storage, checkMethod } = customOpts;
|
|
5876
|
+
const isAllCustom = storage === true;
|
|
5877
|
+
const storageOpts = isAllCustom ? {} : Object.assign({}, storage || {});
|
|
5878
|
+
const isCustomResizable = isAllCustom || storageOpts.resizable;
|
|
5879
|
+
const isCustomVisible = isAllCustom || storageOpts.visible;
|
|
5880
|
+
const isCustomFixed = isAllCustom || storageOpts.fixed;
|
|
5881
|
+
const isCustomSort = isAllCustom || storageOpts.sort;
|
|
5718
5882
|
const resizableData = {};
|
|
5719
5883
|
const sortData = {};
|
|
5720
5884
|
const visibleData = {};
|
|
@@ -5734,44 +5898,34 @@ export default defineComponent({
|
|
|
5734
5898
|
let hasFixed = 0;
|
|
5735
5899
|
let hasVisible = 0;
|
|
5736
5900
|
XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
|
|
5901
|
+
const colKey = column.getKey();
|
|
5902
|
+
if (!colKey) {
|
|
5903
|
+
errLog('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`]);
|
|
5904
|
+
return;
|
|
5905
|
+
}
|
|
5737
5906
|
// 只支持一级
|
|
5738
5907
|
if (!parentColumn) {
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
hasSort = 1;
|
|
5743
|
-
sortData[colKey] = column.renderSortNumber;
|
|
5744
|
-
}
|
|
5745
|
-
});
|
|
5746
|
-
if (column.fixed !== column.defaultFixed) {
|
|
5747
|
-
const colKey = column.getKey();
|
|
5748
|
-
if (colKey) {
|
|
5749
|
-
hasFixed = 1;
|
|
5750
|
-
fixedData[colKey] = column.fixed;
|
|
5751
|
-
}
|
|
5908
|
+
if (isCustomSort) {
|
|
5909
|
+
hasSort = 1;
|
|
5910
|
+
sortData[colKey] = column.renderSortNumber;
|
|
5752
5911
|
}
|
|
5753
|
-
|
|
5754
|
-
|
|
5755
|
-
|
|
5756
|
-
if (colKey) {
|
|
5757
|
-
hasResizable = 1;
|
|
5758
|
-
resizableData[colKey] = column.renderWidth;
|
|
5912
|
+
if (isCustomFixed && column.fixed !== column.defaultFixed) {
|
|
5913
|
+
hasFixed = 1;
|
|
5914
|
+
fixedData[colKey] = column.fixed;
|
|
5759
5915
|
}
|
|
5760
5916
|
}
|
|
5761
|
-
if (
|
|
5917
|
+
if (isCustomResizable && column.resizeWidth) {
|
|
5918
|
+
hasResizable = 1;
|
|
5919
|
+
resizableData[colKey] = column.renderWidth;
|
|
5920
|
+
}
|
|
5921
|
+
if (isCustomVisible && (!checkMethod || checkMethod({ column }))) {
|
|
5762
5922
|
if (!column.visible && column.defaultVisible) {
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
hasVisible = 1;
|
|
5766
|
-
visibleData[colKey] = false;
|
|
5767
|
-
}
|
|
5923
|
+
hasVisible = 1;
|
|
5924
|
+
visibleData[colKey] = false;
|
|
5768
5925
|
}
|
|
5769
5926
|
else if (column.visible && !column.defaultVisible) {
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
hasVisible = 1;
|
|
5773
|
-
visibleData[colKey] = true;
|
|
5774
|
-
}
|
|
5927
|
+
hasVisible = 1;
|
|
5928
|
+
visibleData[colKey] = true;
|
|
5775
5929
|
}
|
|
5776
5930
|
}
|
|
5777
5931
|
});
|
|
@@ -6015,7 +6169,7 @@ export default defineComponent({
|
|
|
6015
6169
|
// 该行为只对当前激活的表格有效
|
|
6016
6170
|
if (internalData.isActivated) {
|
|
6017
6171
|
tablePrivateMethods.preventEvent(evnt, 'event.keydown', null, () => {
|
|
6018
|
-
const { mouseConfig, keyboardConfig, treeConfig, editConfig, highlightCurrentRow } = props;
|
|
6172
|
+
const { mouseConfig, keyboardConfig, treeConfig, editConfig, highlightCurrentRow, highlightCurrentColumn } = props;
|
|
6019
6173
|
const { ctxMenuStore, editStore, currentRow } = reactData;
|
|
6020
6174
|
const { afterFullData } = internalData;
|
|
6021
6175
|
const isMenu = computeIsMenu.value;
|
|
@@ -6026,6 +6180,7 @@ export default defineComponent({
|
|
|
6026
6180
|
const treeOpts = computeTreeOpts.value;
|
|
6027
6181
|
const menuList = computeMenuList.value;
|
|
6028
6182
|
const rowOpts = computeRowOpts.value;
|
|
6183
|
+
const columnOpts = computeColumnOpts.value;
|
|
6029
6184
|
const { selected, actived } = editStore;
|
|
6030
6185
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
6031
6186
|
const keyCode = evnt.keyCode;
|
|
@@ -6199,10 +6354,14 @@ export default defineComponent({
|
|
|
6199
6354
|
if (selected.row && selected.column) {
|
|
6200
6355
|
$xeTable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
|
|
6201
6356
|
}
|
|
6202
|
-
|
|
6203
|
-
|
|
6357
|
+
// 当前行按键上下移动
|
|
6358
|
+
if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
6204
6359
|
$xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
|
|
6205
6360
|
}
|
|
6361
|
+
// 当前行按键左右移动
|
|
6362
|
+
if ((isLeftArrow || isRightArrow) && (columnOpts.isCurrent || highlightCurrentColumn)) {
|
|
6363
|
+
$xeTable.moveCurrentColumn(isLeftArrow, isRightArrow, evnt);
|
|
6364
|
+
}
|
|
6206
6365
|
}
|
|
6207
6366
|
}
|
|
6208
6367
|
else if (isTab && keyboardConfig && keyboardOpts.isTab) {
|
|
@@ -6649,7 +6808,16 @@ export default defineComponent({
|
|
|
6649
6808
|
if (el) {
|
|
6650
6809
|
const parentElem = el.parentNode;
|
|
6651
6810
|
const parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0;
|
|
6652
|
-
|
|
6811
|
+
let parentWrapperHeight = 0;
|
|
6812
|
+
if (parentElem) {
|
|
6813
|
+
if ($xeGrid && hasClass(parentElem, 'vxe-grid--table-wrapper')) {
|
|
6814
|
+
parentWrapperHeight = $xeGrid.getParentHeight();
|
|
6815
|
+
}
|
|
6816
|
+
else {
|
|
6817
|
+
parentWrapperHeight = parentElem.clientHeight;
|
|
6818
|
+
}
|
|
6819
|
+
}
|
|
6820
|
+
return Math.floor(parentWrapperHeight - parentPaddingSize);
|
|
6653
6821
|
}
|
|
6654
6822
|
return 0;
|
|
6655
6823
|
},
|
|
@@ -6736,37 +6904,20 @@ export default defineComponent({
|
|
|
6736
6904
|
*/
|
|
6737
6905
|
cacheRowMap() {
|
|
6738
6906
|
const { treeConfig } = props;
|
|
6739
|
-
const { treeExpandedMaps } =
|
|
6740
|
-
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
|
|
6907
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData;
|
|
6741
6908
|
const treeOpts = computeTreeOpts.value;
|
|
6742
6909
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
6743
6910
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
6744
|
-
const
|
|
6911
|
+
const { lazy } = treeOpts;
|
|
6745
6912
|
const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
6746
6913
|
const fullDataRowIdMaps = {};
|
|
6747
|
-
const
|
|
6748
|
-
const
|
|
6749
|
-
let
|
|
6750
|
-
const seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
|
|
6751
|
-
const level = nodes ? nodes.length - 1 : 0;
|
|
6752
|
-
if (eqEmptyValue(rowid)) {
|
|
6753
|
-
rowid = getRowUniqueId();
|
|
6754
|
-
XEUtils.set(row, rowkey, rowid);
|
|
6755
|
-
}
|
|
6756
|
-
if (treeConfig && treeOpts.lazy) {
|
|
6757
|
-
const treeExpRest = treeExpandedMaps[rowid];
|
|
6758
|
-
if (row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
|
|
6759
|
-
row[childrenField] = null;
|
|
6760
|
-
}
|
|
6761
|
-
if (treeExpRest) {
|
|
6762
|
-
if (!row[childrenField] || !row[childrenField].length) {
|
|
6763
|
-
delete treeTempExpandedMaps[rowid];
|
|
6764
|
-
}
|
|
6765
|
-
}
|
|
6766
|
-
}
|
|
6767
|
-
let rowRest = fullAllDataRowIdData[rowid];
|
|
6914
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
6915
|
+
const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
|
|
6916
|
+
let rowRest = fullAllDataRowIdMaps[rowid];
|
|
6768
6917
|
if (!rowRest) {
|
|
6769
6918
|
rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
|
|
6919
|
+
fullDataRowIdMaps[rowid] = rowRest;
|
|
6920
|
+
fullAllDataRowIdMaps[rowid] = rowRest;
|
|
6770
6921
|
}
|
|
6771
6922
|
rowRest.treeLoaded = false;
|
|
6772
6923
|
rowRest.expandLoaded = false;
|
|
@@ -6774,34 +6925,45 @@ export default defineComponent({
|
|
|
6774
6925
|
rowRest.items = items;
|
|
6775
6926
|
rowRest.parent = parentRow;
|
|
6776
6927
|
rowRest.level = level;
|
|
6777
|
-
rowRest.index =
|
|
6928
|
+
rowRest.index = currIndex;
|
|
6929
|
+
rowRest.treeIndex = index;
|
|
6778
6930
|
fullDataRowIdMaps[rowid] = rowRest;
|
|
6779
6931
|
fullAllDataRowIdMaps[rowid] = rowRest;
|
|
6780
6932
|
};
|
|
6781
6933
|
if (treeConfig) {
|
|
6782
|
-
XEUtils.eachTree(tableFullTreeData,
|
|
6934
|
+
XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
6935
|
+
const rowid = handleUpdateRowId(row);
|
|
6936
|
+
if (treeConfig && lazy) {
|
|
6937
|
+
if (row[hasChildField] && row[childrenField] === undefined) {
|
|
6938
|
+
row[childrenField] = null;
|
|
6939
|
+
}
|
|
6940
|
+
if (treeExpandedMaps[rowid]) {
|
|
6941
|
+
if (!row[childrenField] || !row[childrenField].length) {
|
|
6942
|
+
delete treeExpandedMaps[rowid];
|
|
6943
|
+
}
|
|
6944
|
+
}
|
|
6945
|
+
}
|
|
6946
|
+
handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, toTreePathSeq(path));
|
|
6947
|
+
}, { children: childrenField });
|
|
6783
6948
|
}
|
|
6784
6949
|
else {
|
|
6785
|
-
tableFullData.forEach(
|
|
6950
|
+
tableFullData.forEach((row, index, items) => {
|
|
6951
|
+
handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1);
|
|
6952
|
+
});
|
|
6786
6953
|
}
|
|
6787
6954
|
internalData.fullDataRowIdData = fullDataRowIdMaps;
|
|
6788
6955
|
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
|
|
6789
|
-
reactData.
|
|
6956
|
+
reactData.treeExpandedFlag++;
|
|
6790
6957
|
},
|
|
6791
6958
|
cacheSourceMap(fullData) {
|
|
6792
6959
|
const { treeConfig } = props;
|
|
6793
6960
|
const treeOpts = computeTreeOpts.value;
|
|
6794
|
-
let { sourceDataRowIdData } = internalData;
|
|
6795
6961
|
const sourceData = XEUtils.clone(fullData, true);
|
|
6796
|
-
const
|
|
6797
|
-
|
|
6962
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
6963
|
+
const sourceRowIdData = {};
|
|
6798
6964
|
const handleSourceRow = (row) => {
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
rowid = getRowUniqueId();
|
|
6802
|
-
XEUtils.set(row, rowkey, rowid);
|
|
6803
|
-
}
|
|
6804
|
-
sourceDataRowIdData[rowid] = row;
|
|
6965
|
+
const rowid = handleUpdateRowId(row);
|
|
6966
|
+
sourceRowIdData[rowid] = row;
|
|
6805
6967
|
};
|
|
6806
6968
|
// 源数据缓存
|
|
6807
6969
|
if (treeConfig) {
|
|
@@ -6811,6 +6973,7 @@ export default defineComponent({
|
|
|
6811
6973
|
else {
|
|
6812
6974
|
sourceData.forEach(handleSourceRow);
|
|
6813
6975
|
}
|
|
6976
|
+
internalData.sourceDataRowIdData = sourceRowIdData;
|
|
6814
6977
|
internalData.tableSourceData = sourceData;
|
|
6815
6978
|
},
|
|
6816
6979
|
/**
|
|
@@ -7262,8 +7425,22 @@ export default defineComponent({
|
|
|
7262
7425
|
}
|
|
7263
7426
|
}
|
|
7264
7427
|
// 兼容老版本
|
|
7265
|
-
let rest;
|
|
7266
|
-
|
|
7428
|
+
let rest = null;
|
|
7429
|
+
let isStop = false;
|
|
7430
|
+
for (let i = 0; i < evntList.length; i++) {
|
|
7431
|
+
const func = evntList[i];
|
|
7432
|
+
const fnRest = func(Object.assign({ $grid: $xeGrid, $table: $xeTable, $event: evnt }, args));
|
|
7433
|
+
if (fnRest === false) {
|
|
7434
|
+
isStop = true;
|
|
7435
|
+
break;
|
|
7436
|
+
}
|
|
7437
|
+
else if (fnRest && fnRest.status === false) {
|
|
7438
|
+
rest = fnRest.result;
|
|
7439
|
+
isStop = true;
|
|
7440
|
+
break;
|
|
7441
|
+
}
|
|
7442
|
+
}
|
|
7443
|
+
if (!isStop) {
|
|
7267
7444
|
if (next) {
|
|
7268
7445
|
rest = next();
|
|
7269
7446
|
}
|
|
@@ -7275,9 +7452,7 @@ export default defineComponent({
|
|
|
7275
7452
|
},
|
|
7276
7453
|
updateCheckboxStatus() {
|
|
7277
7454
|
const { treeConfig } = props;
|
|
7278
|
-
const { selectCheckboxMaps,
|
|
7279
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
7280
|
-
const halfRowMaps = Object.assign({}, treeIndeterminateMaps);
|
|
7455
|
+
const { selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
|
|
7281
7456
|
const treeOpts = computeTreeOpts.value;
|
|
7282
7457
|
const { transform, mapChildrenField } = treeOpts;
|
|
7283
7458
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -7289,10 +7464,11 @@ export default defineComponent({
|
|
|
7289
7464
|
}
|
|
7290
7465
|
// 树结构
|
|
7291
7466
|
if (treeConfig) {
|
|
7467
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
7292
7468
|
const childRowMaps = {};
|
|
7293
7469
|
const childRowList = [];
|
|
7294
7470
|
XEUtils.eachTree(afterTreeFullData, (row) => {
|
|
7295
|
-
const rowid =
|
|
7471
|
+
const rowid = handleGetRowId(row);
|
|
7296
7472
|
const childList = row[transform ? mapChildrenField : childrenField];
|
|
7297
7473
|
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
7298
7474
|
childRowMaps[rowid] = 1;
|
|
@@ -7308,13 +7484,13 @@ export default defineComponent({
|
|
|
7308
7484
|
let vLen = 0; // 有效行
|
|
7309
7485
|
childList.forEach(checkMethod
|
|
7310
7486
|
? (item) => {
|
|
7311
|
-
const childRowid =
|
|
7312
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7487
|
+
const childRowid = handleGetRowId(item);
|
|
7488
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid];
|
|
7313
7489
|
if (checkMethod({ row: item })) {
|
|
7314
7490
|
if (isSelect) {
|
|
7315
7491
|
sLen++;
|
|
7316
7492
|
}
|
|
7317
|
-
else if (
|
|
7493
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7318
7494
|
hLen++;
|
|
7319
7495
|
}
|
|
7320
7496
|
vLen++;
|
|
@@ -7323,18 +7499,18 @@ export default defineComponent({
|
|
|
7323
7499
|
if (isSelect) {
|
|
7324
7500
|
sLen++;
|
|
7325
7501
|
}
|
|
7326
|
-
else if (
|
|
7502
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7327
7503
|
hLen++;
|
|
7328
7504
|
}
|
|
7329
7505
|
}
|
|
7330
7506
|
}
|
|
7331
7507
|
: item => {
|
|
7332
|
-
const childRowid =
|
|
7333
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7508
|
+
const childRowid = handleGetRowId(item);
|
|
7509
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid];
|
|
7334
7510
|
if (isSelect) {
|
|
7335
7511
|
sLen++;
|
|
7336
7512
|
}
|
|
7337
|
-
else if (
|
|
7513
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7338
7514
|
hLen++;
|
|
7339
7515
|
}
|
|
7340
7516
|
vLen++;
|
|
@@ -7346,51 +7522,50 @@ export default defineComponent({
|
|
|
7346
7522
|
}
|
|
7347
7523
|
if (isSelected) {
|
|
7348
7524
|
if (!checkField) {
|
|
7349
|
-
|
|
7525
|
+
selectCheckboxMaps[rowid] = row;
|
|
7350
7526
|
}
|
|
7351
|
-
if (
|
|
7352
|
-
delete
|
|
7527
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7528
|
+
delete treeIndeterminateRowMaps[rowid];
|
|
7353
7529
|
}
|
|
7354
7530
|
}
|
|
7355
7531
|
else {
|
|
7356
7532
|
if (!checkField) {
|
|
7357
|
-
if (
|
|
7358
|
-
delete
|
|
7533
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7534
|
+
delete selectCheckboxMaps[rowid];
|
|
7359
7535
|
}
|
|
7360
7536
|
}
|
|
7361
7537
|
if (halfSelect) {
|
|
7362
|
-
|
|
7538
|
+
treeIndeterminateRowMaps[rowid] = row;
|
|
7363
7539
|
}
|
|
7364
7540
|
else {
|
|
7365
|
-
if (
|
|
7366
|
-
delete
|
|
7541
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7542
|
+
delete treeIndeterminateRowMaps[rowid];
|
|
7367
7543
|
}
|
|
7368
7544
|
}
|
|
7369
7545
|
}
|
|
7370
7546
|
});
|
|
7371
7547
|
}
|
|
7372
|
-
reactData.
|
|
7373
|
-
reactData.treeIndeterminateMaps = halfRowMaps;
|
|
7548
|
+
reactData.updateCheckboxFlag++;
|
|
7374
7549
|
},
|
|
7375
7550
|
updateAllCheckboxStatus() {
|
|
7376
7551
|
const { treeConfig } = props;
|
|
7377
|
-
const { selectCheckboxMaps,
|
|
7552
|
+
const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
|
|
7378
7553
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7379
7554
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
|
|
7380
|
-
const {
|
|
7555
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
7381
7556
|
let sLen = 0; // 已选
|
|
7382
7557
|
let hLen = 0; // 半选
|
|
7383
7558
|
let vLen = 0; // 有效行
|
|
7384
7559
|
const rootList = (treeConfig ? afterTreeFullData : afterFullData);
|
|
7385
7560
|
rootList.forEach(checkMethod
|
|
7386
7561
|
? row => {
|
|
7387
|
-
const childRowid =
|
|
7562
|
+
const childRowid = handleGetRowId(row);
|
|
7388
7563
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
7389
7564
|
if (checkMethod({ row })) {
|
|
7390
7565
|
if (selected) {
|
|
7391
7566
|
sLen++;
|
|
7392
7567
|
}
|
|
7393
|
-
else if (
|
|
7568
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7394
7569
|
hLen++;
|
|
7395
7570
|
}
|
|
7396
7571
|
vLen++;
|
|
@@ -7399,18 +7574,18 @@ export default defineComponent({
|
|
|
7399
7574
|
if (selected) {
|
|
7400
7575
|
sLen++;
|
|
7401
7576
|
}
|
|
7402
|
-
else if (
|
|
7577
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7403
7578
|
hLen++;
|
|
7404
7579
|
}
|
|
7405
7580
|
}
|
|
7406
7581
|
}
|
|
7407
7582
|
: row => {
|
|
7408
|
-
const childRowid =
|
|
7583
|
+
const childRowid = handleGetRowId(row);
|
|
7409
7584
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
7410
7585
|
if (selected) {
|
|
7411
7586
|
sLen++;
|
|
7412
7587
|
}
|
|
7413
|
-
else if (
|
|
7588
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7414
7589
|
hLen++;
|
|
7415
7590
|
}
|
|
7416
7591
|
vLen++;
|
|
@@ -7434,13 +7609,14 @@ export default defineComponent({
|
|
|
7434
7609
|
*/
|
|
7435
7610
|
handleBatchSelectRows(rows, checked, isForce) {
|
|
7436
7611
|
const { treeConfig } = props;
|
|
7437
|
-
const { selectCheckboxMaps } =
|
|
7438
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
7612
|
+
const { selectCheckboxMaps } = internalData;
|
|
7439
7613
|
const treeOpts = computeTreeOpts.value;
|
|
7440
7614
|
const { transform, mapChildrenField } = treeOpts;
|
|
7441
7615
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
7442
7616
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7443
7617
|
const { checkField, checkStrictly, checkMethod } = checkboxOpts;
|
|
7618
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
7619
|
+
// indeterminateField 仅支持读取
|
|
7444
7620
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
7445
7621
|
if (checkField) {
|
|
7446
7622
|
// 树结构
|
|
@@ -7455,59 +7631,57 @@ export default defineComponent({
|
|
|
7455
7631
|
handleCheckboxReserveRow(row, checked);
|
|
7456
7632
|
}
|
|
7457
7633
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
7458
|
-
reactData.
|
|
7634
|
+
reactData.updateCheckboxFlag++;
|
|
7459
7635
|
return;
|
|
7460
7636
|
}
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
}
|
|
7470
|
-
reactData.selectCheckboxMaps = selectRowMaps;
|
|
7637
|
+
// 列表
|
|
7638
|
+
rows.forEach(row => {
|
|
7639
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7640
|
+
XEUtils.set(row, checkField, checked);
|
|
7641
|
+
handleCheckboxReserveRow(row, checked);
|
|
7642
|
+
}
|
|
7643
|
+
});
|
|
7644
|
+
reactData.updateCheckboxFlag++;
|
|
7471
7645
|
return;
|
|
7472
7646
|
}
|
|
7473
7647
|
// 树结构
|
|
7474
7648
|
if (treeConfig && !checkStrictly) {
|
|
7475
7649
|
// 更新子节点状态
|
|
7476
7650
|
XEUtils.eachTree(rows, (row) => {
|
|
7477
|
-
const rowid =
|
|
7651
|
+
const rowid = handleGetRowId(row);
|
|
7478
7652
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7479
7653
|
if (checked) {
|
|
7480
|
-
|
|
7654
|
+
selectCheckboxMaps[rowid] = row;
|
|
7481
7655
|
}
|
|
7482
7656
|
else {
|
|
7483
|
-
if (
|
|
7484
|
-
delete
|
|
7657
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7658
|
+
delete selectCheckboxMaps[rowid];
|
|
7485
7659
|
}
|
|
7486
7660
|
}
|
|
7487
7661
|
handleCheckboxReserveRow(row, checked);
|
|
7488
7662
|
}
|
|
7489
7663
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
7490
|
-
reactData.
|
|
7664
|
+
reactData.updateCheckboxFlag++;
|
|
7491
7665
|
return;
|
|
7492
7666
|
}
|
|
7493
7667
|
// 列表
|
|
7494
7668
|
rows.forEach(row => {
|
|
7495
|
-
const rowid =
|
|
7669
|
+
const rowid = handleGetRowId(row);
|
|
7496
7670
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7497
7671
|
if (checked) {
|
|
7498
|
-
if (!
|
|
7499
|
-
|
|
7672
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
7673
|
+
selectCheckboxMaps[rowid] = row;
|
|
7500
7674
|
}
|
|
7501
7675
|
}
|
|
7502
7676
|
else {
|
|
7503
|
-
if (
|
|
7504
|
-
delete
|
|
7677
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7678
|
+
delete selectCheckboxMaps[rowid];
|
|
7505
7679
|
}
|
|
7506
7680
|
}
|
|
7507
7681
|
handleCheckboxReserveRow(row, checked);
|
|
7682
|
+
reactData.updateCheckboxFlag++;
|
|
7508
7683
|
}
|
|
7509
7684
|
});
|
|
7510
|
-
reactData.selectCheckboxMaps = selectRowMaps;
|
|
7511
7685
|
},
|
|
7512
7686
|
/**
|
|
7513
7687
|
* 即将移除
|
|
@@ -7619,17 +7793,18 @@ export default defineComponent({
|
|
|
7619
7793
|
const { _lastResizeTime } = internalData;
|
|
7620
7794
|
const sortOpts = computeSortOpts.value;
|
|
7621
7795
|
const columnOpts = computeColumnOpts.value;
|
|
7796
|
+
const currentColumnOpts = computeCurrentColumnOpts.value;
|
|
7622
7797
|
const { column } = params;
|
|
7623
7798
|
const cell = evnt.currentTarget;
|
|
7624
7799
|
const triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
|
|
7625
7800
|
const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag;
|
|
7626
7801
|
const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag;
|
|
7627
7802
|
if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
|
|
7628
|
-
|
|
7803
|
+
$xeTable.triggerSortEvent(evnt, column, getNextSortOrder(column));
|
|
7629
7804
|
}
|
|
7630
7805
|
dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt);
|
|
7631
|
-
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
7632
|
-
|
|
7806
|
+
if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
|
|
7807
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params);
|
|
7633
7808
|
}
|
|
7634
7809
|
},
|
|
7635
7810
|
triggerHeaderCellDblclickEvent(evnt, params) {
|
|
@@ -7641,7 +7816,7 @@ export default defineComponent({
|
|
|
7641
7816
|
* 如果是双击模式,则单击后选中状态
|
|
7642
7817
|
*/
|
|
7643
7818
|
triggerCellClickEvent(evnt, params) {
|
|
7644
|
-
const { highlightCurrentRow, editConfig } = props;
|
|
7819
|
+
const { highlightCurrentRow, highlightCurrentColumn, editConfig } = props;
|
|
7645
7820
|
const { editStore, isDragResize } = reactData;
|
|
7646
7821
|
if (isDragResize) {
|
|
7647
7822
|
return;
|
|
@@ -7653,6 +7828,8 @@ export default defineComponent({
|
|
|
7653
7828
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7654
7829
|
const keyboardOpts = computeKeyboardOpts.value;
|
|
7655
7830
|
const rowOpts = computeRowOpts.value;
|
|
7831
|
+
const columnOpts = computeColumnOpts.value;
|
|
7832
|
+
const currentColumnOpts = computeCurrentColumnOpts.value;
|
|
7656
7833
|
const { actived, focused } = editStore;
|
|
7657
7834
|
const { row, column } = params;
|
|
7658
7835
|
const { type, treeNode } = column;
|
|
@@ -7668,29 +7845,35 @@ export default defineComponent({
|
|
|
7668
7845
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7669
7846
|
// 如果是展开行
|
|
7670
7847
|
if (!triggerExpandNode && (expandOpts.trigger === 'row' || (isExpandType && expandOpts.trigger === 'cell'))) {
|
|
7671
|
-
|
|
7848
|
+
$xeTable.triggerRowExpandEvent(evnt, params);
|
|
7672
7849
|
}
|
|
7673
7850
|
// 如果是树形表格
|
|
7674
7851
|
if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
|
|
7675
|
-
|
|
7852
|
+
$xeTable.triggerTreeExpandEvent(evnt, params);
|
|
7676
7853
|
}
|
|
7677
7854
|
}
|
|
7678
7855
|
// 如果点击了树节点
|
|
7679
7856
|
if (!triggerTreeNode) {
|
|
7680
7857
|
if (!triggerExpandNode) {
|
|
7681
|
-
//
|
|
7858
|
+
// 如果是当前行
|
|
7682
7859
|
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
7683
7860
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7684
|
-
|
|
7861
|
+
$xeTable.triggerCurrentRowEvent(evnt, params);
|
|
7862
|
+
}
|
|
7863
|
+
}
|
|
7864
|
+
// 如果是当前列
|
|
7865
|
+
if ((columnOpts.isCurrent || highlightCurrentColumn) && (!currentColumnOpts.trigger || ['cell', 'default'].includes(currentColumnOpts.trigger))) {
|
|
7866
|
+
if (!triggerCheckbox && !triggerRadio) {
|
|
7867
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params);
|
|
7685
7868
|
}
|
|
7686
7869
|
}
|
|
7687
7870
|
// 如果是单选框
|
|
7688
7871
|
if (!triggerRadio && (radioOpts.trigger === 'row' || (isRadioType && radioOpts.trigger === 'cell'))) {
|
|
7689
|
-
|
|
7872
|
+
$xeTable.triggerRadioRowEvent(evnt, params);
|
|
7690
7873
|
}
|
|
7691
7874
|
// 如果是复选框
|
|
7692
7875
|
if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
|
|
7693
|
-
|
|
7876
|
+
$xeTable.handleToggleCheckRowEvent(evnt, params);
|
|
7694
7877
|
}
|
|
7695
7878
|
}
|
|
7696
7879
|
// 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
|
|
@@ -7769,7 +7952,7 @@ export default defineComponent({
|
|
|
7769
7952
|
dispatchEvent('cell-dblclick', params, evnt);
|
|
7770
7953
|
},
|
|
7771
7954
|
handleToggleCheckRowEvent(evnt, params) {
|
|
7772
|
-
const { selectCheckboxMaps } =
|
|
7955
|
+
const { selectCheckboxMaps } = internalData;
|
|
7773
7956
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7774
7957
|
const { checkField, trigger } = checkboxOpts;
|
|
7775
7958
|
const { row } = params;
|
|
@@ -7784,44 +7967,46 @@ export default defineComponent({
|
|
|
7784
7967
|
checked = !selectCheckboxMaps[getRowid($xeTable, row)];
|
|
7785
7968
|
}
|
|
7786
7969
|
if (evnt) {
|
|
7787
|
-
|
|
7970
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked);
|
|
7788
7971
|
}
|
|
7789
7972
|
else {
|
|
7790
|
-
|
|
7791
|
-
|
|
7973
|
+
$xeTable.handleBatchSelectRows([row], checked);
|
|
7974
|
+
$xeTable.checkSelectionStatus();
|
|
7792
7975
|
}
|
|
7793
7976
|
},
|
|
7794
7977
|
triggerCheckRowEvent(evnt, params, checked) {
|
|
7795
|
-
const checkboxOpts = computeCheckboxOpts.value;
|
|
7796
7978
|
const { row } = params;
|
|
7797
7979
|
const { afterFullData } = internalData;
|
|
7980
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
7798
7981
|
const { checkMethod, trigger } = checkboxOpts;
|
|
7799
7982
|
if (trigger === 'manual') {
|
|
7800
7983
|
return;
|
|
7801
7984
|
}
|
|
7802
7985
|
evnt.stopPropagation();
|
|
7803
7986
|
if (checkboxOpts.isShiftKey && evnt.shiftKey && !props.treeConfig) {
|
|
7804
|
-
const checkboxRecords =
|
|
7987
|
+
const checkboxRecords = $xeTable.getCheckboxRecords();
|
|
7805
7988
|
if (checkboxRecords.length) {
|
|
7806
7989
|
const firstRow = checkboxRecords[0];
|
|
7807
|
-
const _rowIndex =
|
|
7808
|
-
const _firstRowIndex =
|
|
7990
|
+
const _rowIndex = $xeTable.getVTRowIndex(row);
|
|
7991
|
+
const _firstRowIndex = $xeTable.getVTRowIndex(firstRow);
|
|
7809
7992
|
if (_rowIndex !== _firstRowIndex) {
|
|
7810
|
-
|
|
7993
|
+
$xeTable.setAllCheckboxRow(false);
|
|
7811
7994
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
|
|
7812
|
-
|
|
7995
|
+
nextTick(() => {
|
|
7996
|
+
handleCheckedCheckboxRow(rangeRows, true, false);
|
|
7997
|
+
});
|
|
7813
7998
|
dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
|
|
7814
7999
|
return;
|
|
7815
8000
|
}
|
|
7816
8001
|
}
|
|
7817
8002
|
}
|
|
7818
8003
|
if (!checkMethod || checkMethod({ row })) {
|
|
7819
|
-
|
|
7820
|
-
|
|
8004
|
+
$xeTable.handleBatchSelectRows([row], checked);
|
|
8005
|
+
$xeTable.checkSelectionStatus();
|
|
7821
8006
|
dispatchEvent('checkbox-change', Object.assign({
|
|
7822
|
-
records:
|
|
7823
|
-
reserves:
|
|
7824
|
-
indeterminates:
|
|
8007
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
8008
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
8009
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
7825
8010
|
checked
|
|
7826
8011
|
}, params), evnt);
|
|
7827
8012
|
}
|
|
@@ -7893,7 +8078,8 @@ export default defineComponent({
|
|
|
7893
8078
|
* 展开行事件
|
|
7894
8079
|
*/
|
|
7895
8080
|
triggerRowExpandEvent(evnt, params) {
|
|
7896
|
-
const {
|
|
8081
|
+
const { expandColumn: column } = reactData;
|
|
8082
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
7897
8083
|
const expandOpts = computeExpandOpts.value;
|
|
7898
8084
|
const { row } = params;
|
|
7899
8085
|
const { lazy, trigger } = expandOpts;
|
|
@@ -7903,18 +8089,18 @@ export default defineComponent({
|
|
|
7903
8089
|
evnt.stopPropagation();
|
|
7904
8090
|
const rowid = getRowid($xeTable, row);
|
|
7905
8091
|
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
|
|
7906
|
-
const expanded =
|
|
7907
|
-
const columnIndex =
|
|
7908
|
-
const $columnIndex =
|
|
7909
|
-
|
|
8092
|
+
const expanded = !$xeTable.isRowExpandByRow(row);
|
|
8093
|
+
const columnIndex = $xeTable.getColumnIndex(column);
|
|
8094
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column);
|
|
8095
|
+
$xeTable.setRowExpand(row, expanded);
|
|
7910
8096
|
dispatchEvent('toggle-row-expand', {
|
|
7911
8097
|
expanded,
|
|
7912
8098
|
column,
|
|
7913
8099
|
columnIndex,
|
|
7914
8100
|
$columnIndex,
|
|
7915
8101
|
row,
|
|
7916
|
-
rowIndex:
|
|
7917
|
-
$rowIndex:
|
|
8102
|
+
rowIndex: $xeTable.getRowIndex(row),
|
|
8103
|
+
$rowIndex: $xeTable.getVMRowIndex(row)
|
|
7918
8104
|
}, evnt);
|
|
7919
8105
|
}
|
|
7920
8106
|
},
|
|
@@ -7922,7 +8108,7 @@ export default defineComponent({
|
|
|
7922
8108
|
* 展开树节点事件
|
|
7923
8109
|
*/
|
|
7924
8110
|
triggerTreeExpandEvent(evnt, params) {
|
|
7925
|
-
const { treeExpandLazyLoadedMaps } =
|
|
8111
|
+
const { treeExpandLazyLoadedMaps } = internalData;
|
|
7926
8112
|
const treeOpts = computeTreeOpts.value;
|
|
7927
8113
|
const { row, column } = params;
|
|
7928
8114
|
const { lazy, trigger } = treeOpts;
|
|
@@ -7932,10 +8118,10 @@ export default defineComponent({
|
|
|
7932
8118
|
evnt.stopPropagation();
|
|
7933
8119
|
const rowid = getRowid($xeTable, row);
|
|
7934
8120
|
if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
|
|
7935
|
-
const expanded =
|
|
7936
|
-
const columnIndex =
|
|
7937
|
-
const $columnIndex =
|
|
7938
|
-
|
|
8121
|
+
const expanded = !$xeTable.isTreeExpandByRow(row);
|
|
8122
|
+
const columnIndex = $xeTable.getColumnIndex(column);
|
|
8123
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column);
|
|
8124
|
+
$xeTable.setTreeExpand(row, expanded);
|
|
7939
8125
|
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
|
|
7940
8126
|
}
|
|
7941
8127
|
},
|
|
@@ -8080,14 +8266,16 @@ export default defineComponent({
|
|
|
8080
8266
|
handleRowDragSwapEvent(evnt, isSyncRow, dragRow, prevDragRow, prevDragPos, prevDragToChild) {
|
|
8081
8267
|
const { treeConfig, dragConfig } = props;
|
|
8082
8268
|
const rowDragOpts = computeRowDragOpts.value;
|
|
8083
|
-
const { fullAllDataRowIdData } = internalData;
|
|
8269
|
+
const { afterFullData, tableFullData, fullAllDataRowIdData } = internalData;
|
|
8084
8270
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod, dragToChildMethod } = rowDragOpts;
|
|
8085
8271
|
const treeOpts = computeTreeOpts.value;
|
|
8086
8272
|
const { transform, rowField, mapChildrenField, parentField } = treeOpts;
|
|
8087
8273
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
8088
|
-
const { afterFullData, tableFullData } = internalData;
|
|
8089
8274
|
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
|
|
8090
8275
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
8276
|
+
const errRest = {
|
|
8277
|
+
status: false
|
|
8278
|
+
};
|
|
8091
8279
|
if (prevDragRow && dragRow) {
|
|
8092
8280
|
// 判断是否有拖动
|
|
8093
8281
|
if (prevDragRow !== dragRow) {
|
|
@@ -8102,7 +8290,7 @@ export default defineComponent({
|
|
|
8102
8290
|
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
8103
8291
|
return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then((status) => {
|
|
8104
8292
|
if (!status) {
|
|
8105
|
-
return;
|
|
8293
|
+
return errRest;
|
|
8106
8294
|
}
|
|
8107
8295
|
let oafIndex = -1;
|
|
8108
8296
|
let nafIndex = -1;
|
|
@@ -8127,12 +8315,12 @@ export default defineComponent({
|
|
|
8127
8315
|
if (isPeerDrag && !isCrossDrag) {
|
|
8128
8316
|
if (oldRest.row[parentField] !== newRest.row[parentField]) {
|
|
8129
8317
|
// 非同级
|
|
8130
|
-
return;
|
|
8318
|
+
return errRest;
|
|
8131
8319
|
}
|
|
8132
8320
|
}
|
|
8133
8321
|
else {
|
|
8134
8322
|
if (!isCrossDrag) {
|
|
8135
|
-
return;
|
|
8323
|
+
return errRest;
|
|
8136
8324
|
}
|
|
8137
8325
|
if (oldAllMaps[newRowid]) {
|
|
8138
8326
|
isSelfToChildStatus = true;
|
|
@@ -8143,7 +8331,7 @@ export default defineComponent({
|
|
|
8143
8331
|
content: getI18n('vxe.error.treeDragChild')
|
|
8144
8332
|
});
|
|
8145
8333
|
}
|
|
8146
|
-
return;
|
|
8334
|
+
return errRest;
|
|
8147
8335
|
}
|
|
8148
8336
|
}
|
|
8149
8337
|
}
|
|
@@ -8151,13 +8339,13 @@ export default defineComponent({
|
|
|
8151
8339
|
else if (oldLevel) {
|
|
8152
8340
|
// 子到根
|
|
8153
8341
|
if (!isCrossDrag) {
|
|
8154
|
-
return;
|
|
8342
|
+
return errRest;
|
|
8155
8343
|
}
|
|
8156
8344
|
}
|
|
8157
8345
|
else if (newLevel) {
|
|
8158
8346
|
// 根到子
|
|
8159
8347
|
if (!isCrossDrag) {
|
|
8160
|
-
return;
|
|
8348
|
+
return errRest;
|
|
8161
8349
|
}
|
|
8162
8350
|
if (oldAllMaps[newRowid]) {
|
|
8163
8351
|
isSelfToChildStatus = true;
|
|
@@ -8168,7 +8356,7 @@ export default defineComponent({
|
|
|
8168
8356
|
content: getI18n('vxe.error.treeDragChild')
|
|
8169
8357
|
});
|
|
8170
8358
|
}
|
|
8171
|
-
return;
|
|
8359
|
+
return errRest;
|
|
8172
8360
|
}
|
|
8173
8361
|
}
|
|
8174
8362
|
}
|
|
@@ -8228,27 +8416,34 @@ export default defineComponent({
|
|
|
8228
8416
|
if (reactData.scrollYLoad) {
|
|
8229
8417
|
$xeTable.updateScrollYSpace();
|
|
8230
8418
|
}
|
|
8231
|
-
|
|
8419
|
+
if (evnt) {
|
|
8420
|
+
dispatchEvent('row-dragend', {
|
|
8421
|
+
oldRow: dragRow,
|
|
8422
|
+
newRow: prevDragRow,
|
|
8423
|
+
dragRow,
|
|
8424
|
+
dragPos: prevDragPos,
|
|
8425
|
+
dragToChild: isDragToChildFlag,
|
|
8426
|
+
offsetIndex: dragOffsetIndex,
|
|
8427
|
+
_index: {
|
|
8428
|
+
newIndex: nafIndex,
|
|
8429
|
+
oldIndex: oafIndex
|
|
8430
|
+
}
|
|
8431
|
+
}, evnt);
|
|
8432
|
+
}
|
|
8433
|
+
return nextTick().then(() => {
|
|
8232
8434
|
$xeTable.updateCellAreas();
|
|
8233
8435
|
$xeTable.recalculate();
|
|
8436
|
+
}).then(() => {
|
|
8437
|
+
return {
|
|
8438
|
+
status: true
|
|
8439
|
+
};
|
|
8234
8440
|
});
|
|
8235
|
-
dispatchEvent('row-dragend', {
|
|
8236
|
-
oldRow: dragRow,
|
|
8237
|
-
newRow: prevDragRow,
|
|
8238
|
-
dragRow,
|
|
8239
|
-
dragPos: prevDragPos,
|
|
8240
|
-
dragToChild: isDragToChildFlag,
|
|
8241
|
-
offsetIndex: dragOffsetIndex,
|
|
8242
|
-
_index: {
|
|
8243
|
-
newIndex: nafIndex,
|
|
8244
|
-
oldIndex: oafIndex
|
|
8245
|
-
}
|
|
8246
|
-
}, evnt);
|
|
8247
8441
|
}).catch(() => {
|
|
8442
|
+
return errRest;
|
|
8248
8443
|
});
|
|
8249
8444
|
}
|
|
8250
8445
|
}
|
|
8251
|
-
return Promise.resolve();
|
|
8446
|
+
return Promise.resolve(errRest);
|
|
8252
8447
|
},
|
|
8253
8448
|
handleRowDragDragendEvent(evnt) {
|
|
8254
8449
|
const { treeConfig } = props;
|
|
@@ -8375,6 +8570,9 @@ export default defineComponent({
|
|
|
8375
8570
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, isToChildDrag, dragEndMethod, dragToChildMethod } = columnDragOpts;
|
|
8376
8571
|
const { collectColumn } = internalData;
|
|
8377
8572
|
const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
|
|
8573
|
+
const errRest = {
|
|
8574
|
+
status: false
|
|
8575
|
+
};
|
|
8378
8576
|
if (prevDragCol && dragCol) {
|
|
8379
8577
|
// 判断是否有拖动
|
|
8380
8578
|
if (prevDragCol !== dragCol) {
|
|
@@ -8391,7 +8589,7 @@ export default defineComponent({
|
|
|
8391
8589
|
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
8392
8590
|
return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
8393
8591
|
if (!status) {
|
|
8394
|
-
return;
|
|
8592
|
+
return errRest;
|
|
8395
8593
|
}
|
|
8396
8594
|
let oafIndex = -1;
|
|
8397
8595
|
let nafIndex = -1;
|
|
@@ -8405,12 +8603,12 @@ export default defineComponent({
|
|
|
8405
8603
|
if (isPeerDrag && !isCrossDrag) {
|
|
8406
8604
|
if (dragColumn.parentId !== newColumn.parentId) {
|
|
8407
8605
|
// 非同级
|
|
8408
|
-
return;
|
|
8606
|
+
return errRest;
|
|
8409
8607
|
}
|
|
8410
8608
|
}
|
|
8411
8609
|
else {
|
|
8412
8610
|
if (!isCrossDrag) {
|
|
8413
|
-
return;
|
|
8611
|
+
return errRest;
|
|
8414
8612
|
}
|
|
8415
8613
|
if (oldAllMaps[newColumn.id]) {
|
|
8416
8614
|
isSelfToChildStatus = true;
|
|
@@ -8421,7 +8619,7 @@ export default defineComponent({
|
|
|
8421
8619
|
content: getI18n('vxe.error.treeDragChild')
|
|
8422
8620
|
});
|
|
8423
8621
|
}
|
|
8424
|
-
return;
|
|
8622
|
+
return errRest;
|
|
8425
8623
|
}
|
|
8426
8624
|
}
|
|
8427
8625
|
}
|
|
@@ -8429,13 +8627,13 @@ export default defineComponent({
|
|
|
8429
8627
|
else if (dragColumn.parentId) {
|
|
8430
8628
|
// 子到根
|
|
8431
8629
|
if (!isCrossDrag) {
|
|
8432
|
-
return;
|
|
8630
|
+
return errRest;
|
|
8433
8631
|
}
|
|
8434
8632
|
}
|
|
8435
8633
|
else if (newColumn.parentId) {
|
|
8436
8634
|
// 根到子
|
|
8437
8635
|
if (!isCrossDrag) {
|
|
8438
|
-
return;
|
|
8636
|
+
return errRest;
|
|
8439
8637
|
}
|
|
8440
8638
|
if (oldAllMaps[newColumn.id]) {
|
|
8441
8639
|
isSelfToChildStatus = true;
|
|
@@ -8446,7 +8644,7 @@ export default defineComponent({
|
|
|
8446
8644
|
content: getI18n('vxe.error.treeDragChild')
|
|
8447
8645
|
});
|
|
8448
8646
|
}
|
|
8449
|
-
return;
|
|
8647
|
+
return errRest;
|
|
8450
8648
|
}
|
|
8451
8649
|
}
|
|
8452
8650
|
}
|
|
@@ -8507,26 +8705,32 @@ export default defineComponent({
|
|
|
8507
8705
|
$xeTable.clearCopyCellArea();
|
|
8508
8706
|
}
|
|
8509
8707
|
}
|
|
8510
|
-
|
|
8511
|
-
|
|
8512
|
-
|
|
8513
|
-
|
|
8514
|
-
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
|
|
8518
|
-
|
|
8519
|
-
|
|
8520
|
-
|
|
8521
|
-
|
|
8708
|
+
if (evnt) {
|
|
8709
|
+
dispatchEvent('column-dragend', {
|
|
8710
|
+
oldColumn: dragColumn,
|
|
8711
|
+
newColumn,
|
|
8712
|
+
dragColumn,
|
|
8713
|
+
dragPos: prevDragPos,
|
|
8714
|
+
dragToChild: isDragToChildFlag,
|
|
8715
|
+
offsetIndex: dragOffsetIndex,
|
|
8716
|
+
_index: {
|
|
8717
|
+
newIndex: nafIndex,
|
|
8718
|
+
oldIndex: oafIndex
|
|
8719
|
+
}
|
|
8720
|
+
}, evnt);
|
|
8721
|
+
}
|
|
8522
8722
|
if (isSyncColumn) {
|
|
8523
8723
|
$xeTable.handleColDragSwapColumn();
|
|
8524
8724
|
}
|
|
8725
|
+
return {
|
|
8726
|
+
status: true
|
|
8727
|
+
};
|
|
8525
8728
|
}).catch(() => {
|
|
8729
|
+
return errRest;
|
|
8526
8730
|
});
|
|
8527
8731
|
}
|
|
8528
8732
|
}
|
|
8529
|
-
return Promise.resolve();
|
|
8733
|
+
return Promise.resolve(errRest);
|
|
8530
8734
|
},
|
|
8531
8735
|
handleHeaderCellDragDragendEvent(evnt) {
|
|
8532
8736
|
const { dragCol } = reactData;
|
|
@@ -8920,10 +9124,10 @@ export default defineComponent({
|
|
|
8920
9124
|
return;
|
|
8921
9125
|
}
|
|
8922
9126
|
const { highlightHoverRow } = tableProps;
|
|
8923
|
-
const { scrollXLoad, scrollYLoad } = reactData;
|
|
9127
|
+
const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
|
|
8924
9128
|
const leftFixedWidth = computeLeftFixedWidth.value;
|
|
8925
9129
|
const rightFixedWidth = computeRightFixedWidth.value;
|
|
8926
|
-
if (!(scrollYLoad || leftFixedWidth || rightFixedWidth)) {
|
|
9130
|
+
if (!(scrollYLoad || leftFixedWidth || rightFixedWidth || expandColumn)) {
|
|
8927
9131
|
return;
|
|
8928
9132
|
}
|
|
8929
9133
|
const { elemStore, lastScrollTop, lastScrollLeft } = internalData;
|
|
@@ -9165,8 +9369,8 @@ export default defineComponent({
|
|
|
9165
9369
|
},
|
|
9166
9370
|
// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
9167
9371
|
updateScrollYSpace() {
|
|
9168
|
-
const { isAllOverflow, scrollYLoad, expandColumn
|
|
9169
|
-
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData;
|
|
9372
|
+
const { isAllOverflow, scrollYLoad, expandColumn } = reactData;
|
|
9373
|
+
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
|
|
9170
9374
|
const { startIndex } = scrollYStore;
|
|
9171
9375
|
const expandOpts = computeExpandOpts.value;
|
|
9172
9376
|
const rowOpts = computeRowOpts.value;
|
|
@@ -9511,6 +9715,7 @@ export default defineComponent({
|
|
|
9511
9715
|
})
|
|
9512
9716
|
];
|
|
9513
9717
|
if (expandColumn) {
|
|
9718
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
9514
9719
|
tableRowExpandedList.forEach((row) => {
|
|
9515
9720
|
const expandOpts = computeExpandOpts.value;
|
|
9516
9721
|
const { height: expandHeight, padding } = expandOpts;
|
|
@@ -9518,7 +9723,7 @@ export default defineComponent({
|
|
|
9518
9723
|
const treeOpts = computeTreeOpts.value;
|
|
9519
9724
|
const { transform, seqMode } = treeOpts;
|
|
9520
9725
|
const cellStyle = {};
|
|
9521
|
-
const rowid =
|
|
9726
|
+
const rowid = handleGetRowId(row);
|
|
9522
9727
|
const rest = fullAllDataRowIdData[rowid];
|
|
9523
9728
|
let rowLevel = 0;
|
|
9524
9729
|
let seq = -1;
|