vxe-table 4.12.0-beta.20 → 4.12.0-beta.22
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/style.css +1 -1
- package/es/table/module/edit/hook.js +8 -10
- package/es/table/module/keyboard/hook.js +10 -0
- package/es/table/module/validator/hook.js +2 -2
- package/es/table/src/body.js +10 -10
- package/es/table/src/cell.js +15 -11
- package/es/table/src/table.js +260 -238
- package/es/table/src/util.js +2 -2
- package/es/ui/index.js +2 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +142 -121
- package/lib/index.umd.min.js +1 -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/keyboard/hook.js +10 -0
- 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/src/body.js +16 -11
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +22 -13
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/table.js +338 -268
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +2 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +2 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/table/module/edit/hook.ts +8 -10
- package/packages/table/module/keyboard/hook.ts +10 -0
- package/packages/table/module/validator/hook.ts +2 -2
- package/packages/table/src/body.ts +10 -10
- package/packages/table/src/cell.ts +15 -11
- package/packages/table/src/table.ts +262 -237
- package/packages/table/src/util.ts +2 -2
- package/packages/ui/index.ts +1 -0
- /package/es/{iconfont.1742353689933.ttf → iconfont.1742525007622.ttf} +0 -0
- /package/es/{iconfont.1742353689933.woff → iconfont.1742525007622.woff} +0 -0
- /package/es/{iconfont.1742353689933.woff2 → iconfont.1742525007622.woff2} +0 -0
- /package/lib/{iconfont.1742353689933.ttf → iconfont.1742525007622.ttf} +0 -0
- /package/lib/{iconfont.1742353689933.woff → iconfont.1742525007622.woff} +0 -0
- /package/lib/{iconfont.1742353689933.woff2 → iconfont.1742525007622.woff2} +0 -0
package/es/table/src/table.js
CHANGED
|
@@ -68,8 +68,6 @@ export default defineComponent({
|
|
|
68
68
|
isAllSelected: false,
|
|
69
69
|
// 复选框属性,有选中且非全选状态
|
|
70
70
|
isIndeterminate: false,
|
|
71
|
-
// 复选框属性,已选中的行集合
|
|
72
|
-
selectCheckboxMaps: {},
|
|
73
71
|
// 当前行
|
|
74
72
|
currentRow: null,
|
|
75
73
|
// 单选框属性,选中列
|
|
@@ -83,16 +81,6 @@ export default defineComponent({
|
|
|
83
81
|
// 树节点列信息
|
|
84
82
|
treeNodeColumn: null,
|
|
85
83
|
hasFixedColumn: false,
|
|
86
|
-
// 已展开的行集合
|
|
87
|
-
rowExpandedMaps: {},
|
|
88
|
-
// 懒加载中的展开行的集合
|
|
89
|
-
rowExpandLazyLoadedMaps: {},
|
|
90
|
-
// 已展开树节点集合
|
|
91
|
-
treeExpandedMaps: {},
|
|
92
|
-
// 懒加载中的树节点的集合
|
|
93
|
-
treeExpandLazyLoadedMaps: {},
|
|
94
|
-
// 树节点不确定状态的集合
|
|
95
|
-
treeIndeterminateMaps: {},
|
|
96
84
|
// 合并单元格的对象集
|
|
97
85
|
mergeList: [],
|
|
98
86
|
// 合并表尾数据的对象集
|
|
@@ -101,8 +89,6 @@ export default defineComponent({
|
|
|
101
89
|
upDataFlag: 0,
|
|
102
90
|
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
103
91
|
reColumnFlag: 0,
|
|
104
|
-
// 已标记的对象集
|
|
105
|
-
pendingRowMaps: {},
|
|
106
92
|
// 初始化标识
|
|
107
93
|
initStore: {
|
|
108
94
|
filter: false,
|
|
@@ -246,6 +232,10 @@ export default defineComponent({
|
|
|
246
232
|
isHeader: false,
|
|
247
233
|
isFooter: false
|
|
248
234
|
},
|
|
235
|
+
rowExpandedFlag: 1,
|
|
236
|
+
treeExpandedFlag: 1,
|
|
237
|
+
updateCheckboxFlag: 1,
|
|
238
|
+
pendingRowFlag: 1,
|
|
249
239
|
rowHeightStore: {
|
|
250
240
|
default: 48,
|
|
251
241
|
medium: 44,
|
|
@@ -345,6 +335,18 @@ export default defineComponent({
|
|
|
345
335
|
fullColumnIdData: {},
|
|
346
336
|
fullColumnFieldData: {},
|
|
347
337
|
// prevDragRow: null,
|
|
338
|
+
// 已展开的行集合
|
|
339
|
+
rowExpandedMaps: {},
|
|
340
|
+
// 懒加载中的展开行的集合
|
|
341
|
+
rowExpandLazyLoadedMaps: {},
|
|
342
|
+
// 已展开树节点集合
|
|
343
|
+
treeExpandedMaps: {},
|
|
344
|
+
// 懒加载中的树节点的集合
|
|
345
|
+
treeExpandLazyLoadedMaps: {},
|
|
346
|
+
// 复选框属性,已选中的行集合
|
|
347
|
+
selectCheckboxMaps: {},
|
|
348
|
+
// 已标记的对象集
|
|
349
|
+
pendingRowMaps: {},
|
|
348
350
|
inited: false,
|
|
349
351
|
tooltipTimeout: null,
|
|
350
352
|
initStatus: false,
|
|
@@ -469,13 +471,25 @@ export default defineComponent({
|
|
|
469
471
|
return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig);
|
|
470
472
|
});
|
|
471
473
|
const computeCellOpts = computed(() => {
|
|
472
|
-
|
|
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;
|
|
473
479
|
});
|
|
474
480
|
const computeHeaderCellOpts = computed(() => {
|
|
475
|
-
|
|
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;
|
|
476
486
|
});
|
|
477
487
|
const computeFooterCellOpts = computed(() => {
|
|
478
|
-
|
|
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;
|
|
479
493
|
});
|
|
480
494
|
const computeRowOpts = computed(() => {
|
|
481
495
|
return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
|
|
@@ -623,12 +637,14 @@ export default defineComponent({
|
|
|
623
637
|
return Object.assign({}, getConfig().table.customConfig, props.customConfig);
|
|
624
638
|
});
|
|
625
639
|
const computeTableRowExpandedList = computed(() => {
|
|
626
|
-
const {
|
|
640
|
+
const { rowExpandedFlag, tableData, expandColumn } = reactData;
|
|
641
|
+
const { rowExpandedMaps } = internalData;
|
|
642
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
627
643
|
const expandList = [];
|
|
628
|
-
if (expandColumn) {
|
|
644
|
+
if (expandColumn && rowExpandedFlag) {
|
|
629
645
|
const rowKeys = {};
|
|
630
646
|
tableData.forEach(row => {
|
|
631
|
-
rowKeys[
|
|
647
|
+
rowKeys[handleGetRowId(row)] = true;
|
|
632
648
|
});
|
|
633
649
|
XEUtils.each(rowExpandedMaps, (row, rowid) => {
|
|
634
650
|
if (rowKeys[rowid]) {
|
|
@@ -744,6 +760,7 @@ export default defineComponent({
|
|
|
744
760
|
computeCurrentColumnOpts,
|
|
745
761
|
computeScrollXThreshold,
|
|
746
762
|
computeScrollYThreshold,
|
|
763
|
+
computeRowHeightMaps,
|
|
747
764
|
computeDefaultRowHeight,
|
|
748
765
|
computeCellOpts,
|
|
749
766
|
computeHeaderCellOpts,
|
|
@@ -797,6 +814,7 @@ export default defineComponent({
|
|
|
797
814
|
internalData,
|
|
798
815
|
getRefMaps: () => refMaps,
|
|
799
816
|
getComputeMaps: () => computeMaps,
|
|
817
|
+
xeGrid: $xeGrid,
|
|
800
818
|
xegrid: $xeGrid
|
|
801
819
|
};
|
|
802
820
|
const eqCellValue = (row1, row2, field) => {
|
|
@@ -951,12 +969,13 @@ export default defineComponent({
|
|
|
951
969
|
visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
|
|
952
970
|
}
|
|
953
971
|
else {
|
|
972
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
954
973
|
let leftIndex = 0;
|
|
955
974
|
let rightIndex = afterFullData.length;
|
|
956
975
|
while (leftIndex < rightIndex) {
|
|
957
976
|
const rIndex = Math.floor((leftIndex + rightIndex) / 2);
|
|
958
977
|
const row = afterFullData[rIndex];
|
|
959
|
-
const rowid =
|
|
978
|
+
const rowid = handleGetRowId(row);
|
|
960
979
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
961
980
|
if (rowRest.oTop <= startTop) {
|
|
962
981
|
leftIndex = rIndex + 1;
|
|
@@ -968,7 +987,7 @@ export default defineComponent({
|
|
|
968
987
|
toVisibleIndex = Math.max(0, leftIndex < afterFullData.length ? leftIndex - 2 : 0);
|
|
969
988
|
for (let rIndex = toVisibleIndex, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
970
989
|
const row = afterFullData[rIndex];
|
|
971
|
-
const rowid =
|
|
990
|
+
const rowid = handleGetRowId(row);
|
|
972
991
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
973
992
|
visibleSize++;
|
|
974
993
|
if (rowRest.oTop > endTop || visibleSize >= 100) {
|
|
@@ -1476,9 +1495,10 @@ export default defineComponent({
|
|
|
1476
1495
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
1477
1496
|
const el = refElem.value;
|
|
1478
1497
|
if (!isAllOverflow && scrollYLoad && el) {
|
|
1498
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1479
1499
|
el.setAttribute('data-calc-row', 'Y');
|
|
1480
1500
|
tableData.forEach(row => {
|
|
1481
|
-
const rowid =
|
|
1501
|
+
const rowid = handleGetRowId(row);
|
|
1482
1502
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1483
1503
|
if (rowRest) {
|
|
1484
1504
|
const reHeight = calcCellAutoHeight(rowRest, el);
|
|
@@ -1514,9 +1534,10 @@ export default defineComponent({
|
|
|
1514
1534
|
const updateAfterListIndex = () => {
|
|
1515
1535
|
const { treeConfig } = props;
|
|
1516
1536
|
const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData;
|
|
1537
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1517
1538
|
const fullMaps = {};
|
|
1518
1539
|
afterFullData.forEach((row, index) => {
|
|
1519
|
-
const rowid =
|
|
1540
|
+
const rowid = handleGetRowId(row);
|
|
1520
1541
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1521
1542
|
const seq = index + 1;
|
|
1522
1543
|
if (rowRest) {
|
|
@@ -1546,8 +1567,9 @@ export default defineComponent({
|
|
|
1546
1567
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
1547
1568
|
const fullMaps = {};
|
|
1548
1569
|
if (treeConfig) {
|
|
1570
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1549
1571
|
XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
|
|
1550
|
-
const rowid =
|
|
1572
|
+
const rowid = handleGetRowId(row);
|
|
1551
1573
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1552
1574
|
const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('');
|
|
1553
1575
|
if (rowRest) {
|
|
@@ -1574,16 +1596,16 @@ export default defineComponent({
|
|
|
1574
1596
|
*/
|
|
1575
1597
|
const handleVirtualTreeToList = () => {
|
|
1576
1598
|
const { treeConfig } = props;
|
|
1577
|
-
const { treeExpandedMaps } =
|
|
1578
|
-
const { fullAllDataRowIdData } = internalData;
|
|
1599
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData;
|
|
1579
1600
|
const treeOpts = computeTreeOpts.value;
|
|
1580
1601
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
1581
1602
|
if (treeConfig && treeOpts.transform) {
|
|
1603
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1582
1604
|
const fullData = [];
|
|
1583
1605
|
const expandMaps = {};
|
|
1584
1606
|
XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parentRow) => {
|
|
1585
|
-
const rowid =
|
|
1586
|
-
const parentRowid =
|
|
1607
|
+
const rowid = handleGetRowId(row);
|
|
1608
|
+
const parentRowid = handleGetRowId(parentRow);
|
|
1587
1609
|
if (!parentRow || (expandMaps[parentRowid] && treeExpandedMaps[parentRowid])) {
|
|
1588
1610
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
1589
1611
|
if (rowRest) {
|
|
@@ -1611,7 +1633,7 @@ export default defineComponent({
|
|
|
1611
1633
|
const treeOpts = computeTreeOpts.value;
|
|
1612
1634
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
1613
1635
|
const { transform, rowField, parentField, mapChildrenField } = treeOpts;
|
|
1614
|
-
const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts;
|
|
1636
|
+
const { isEvery, remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts;
|
|
1615
1637
|
const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts;
|
|
1616
1638
|
let tableData = [];
|
|
1617
1639
|
let tableTree = [];
|
|
@@ -1670,7 +1692,7 @@ export default defineComponent({
|
|
|
1670
1692
|
// 筛选虚拟树
|
|
1671
1693
|
tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
|
|
1672
1694
|
original: true,
|
|
1673
|
-
isEvery
|
|
1695
|
+
isEvery,
|
|
1674
1696
|
children: mapChildrenField,
|
|
1675
1697
|
mapChildren: childrenField
|
|
1676
1698
|
});
|
|
@@ -1686,7 +1708,7 @@ export default defineComponent({
|
|
|
1686
1708
|
// 还原虚拟树
|
|
1687
1709
|
tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
|
|
1688
1710
|
original: true,
|
|
1689
|
-
isEvery
|
|
1711
|
+
isEvery,
|
|
1690
1712
|
children: mapChildrenField,
|
|
1691
1713
|
mapChildren: childrenField
|
|
1692
1714
|
});
|
|
@@ -1736,7 +1758,7 @@ export default defineComponent({
|
|
|
1736
1758
|
// 还原虚拟树
|
|
1737
1759
|
tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
|
|
1738
1760
|
original: true,
|
|
1739
|
-
isEvery
|
|
1761
|
+
isEvery,
|
|
1740
1762
|
children: treeOpts.mapChildrenField,
|
|
1741
1763
|
mapChildren: childrenField
|
|
1742
1764
|
});
|
|
@@ -2241,8 +2263,7 @@ export default defineComponent({
|
|
|
2241
2263
|
};
|
|
2242
2264
|
const handleCheckedAllCheckboxRow = (checked, isForce) => {
|
|
2243
2265
|
const { treeConfig } = props;
|
|
2244
|
-
const { selectCheckboxMaps } =
|
|
2245
|
-
const { afterFullData, checkboxReserveRowMap } = internalData;
|
|
2266
|
+
const { afterFullData, checkboxReserveRowMap, selectCheckboxMaps } = internalData;
|
|
2246
2267
|
const treeOpts = computeTreeOpts.value;
|
|
2247
2268
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2248
2269
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
@@ -2259,7 +2280,7 @@ export default defineComponent({
|
|
|
2259
2280
|
const checkValFn = (row) => {
|
|
2260
2281
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
2261
2282
|
if (checked) {
|
|
2262
|
-
selectRowMaps[
|
|
2283
|
+
selectRowMaps[handleGetRowId(row)] = row;
|
|
2263
2284
|
}
|
|
2264
2285
|
XEUtils.set(row, checkField, checked);
|
|
2265
2286
|
}
|
|
@@ -2358,10 +2379,10 @@ export default defineComponent({
|
|
|
2358
2379
|
afterFullData.forEach((row) => handleCheckboxReserveRow(row, false));
|
|
2359
2380
|
}
|
|
2360
2381
|
}
|
|
2361
|
-
reactData.
|
|
2382
|
+
reactData.updateCheckboxFlag++;
|
|
2383
|
+
internalData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
2362
2384
|
reactData.isAllSelected = checked;
|
|
2363
2385
|
reactData.isIndeterminate = false;
|
|
2364
|
-
reactData.treeIndeterminateMaps = {};
|
|
2365
2386
|
internalData.treeIndeterminateRowMaps = {};
|
|
2366
2387
|
$xeTable.checkSelectionStatus();
|
|
2367
2388
|
return nextTick();
|
|
@@ -2369,8 +2390,8 @@ export default defineComponent({
|
|
|
2369
2390
|
// 还原展开、选中等相关状态
|
|
2370
2391
|
const handleReserveStatus = () => {
|
|
2371
2392
|
const { treeConfig } = props;
|
|
2372
|
-
const { expandColumn, currentRow,
|
|
2373
|
-
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
|
|
2393
|
+
const { expandColumn, currentRow, selectRadioRow } = reactData;
|
|
2394
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow, selectCheckboxMaps, treeExpandedMaps, rowExpandedMaps } = internalData;
|
|
2374
2395
|
const expandOpts = computeExpandOpts.value;
|
|
2375
2396
|
const treeOpts = computeTreeOpts.value;
|
|
2376
2397
|
const radioOpts = computeRadioOpts.value;
|
|
@@ -2387,7 +2408,8 @@ export default defineComponent({
|
|
|
2387
2408
|
}
|
|
2388
2409
|
}
|
|
2389
2410
|
// 复选框
|
|
2390
|
-
|
|
2411
|
+
internalData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps); // 刷新多选行状态
|
|
2412
|
+
reactData.updateCheckboxFlag++;
|
|
2391
2413
|
// 还原保留选中状态
|
|
2392
2414
|
if (checkboxOpts.reserve) {
|
|
2393
2415
|
handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true, true);
|
|
@@ -2396,13 +2418,15 @@ export default defineComponent({
|
|
|
2396
2418
|
reactData.currentRow = null; // 刷新当前行状态
|
|
2397
2419
|
}
|
|
2398
2420
|
// 行展开
|
|
2399
|
-
|
|
2421
|
+
internalData.rowExpandedMaps = expandColumn ? getRecoverRowMaps(rowExpandedMaps) : {}; // 刷新行展开状态
|
|
2422
|
+
reactData.rowExpandedFlag++;
|
|
2400
2423
|
// 还原保留状态
|
|
2401
2424
|
if (expandColumn && expandOpts.reserve) {
|
|
2402
2425
|
$xeTable.setRowExpand(handleReserveRow(internalData.rowExpandedReserveRowMap), true);
|
|
2403
2426
|
}
|
|
2404
2427
|
// 树展开
|
|
2405
|
-
|
|
2428
|
+
internalData.treeExpandedMaps = treeConfig ? getRecoverRowMaps(treeExpandedMaps) : {}; // 刷新树展开状态
|
|
2429
|
+
reactData.treeExpandedFlag++;
|
|
2406
2430
|
if (treeConfig && treeOpts.reserve) {
|
|
2407
2431
|
$xeTable.setTreeExpand(handleReserveRow(internalData.treeExpandedReserveRowMap), true);
|
|
2408
2432
|
}
|
|
@@ -2418,7 +2442,7 @@ export default defineComponent({
|
|
|
2418
2442
|
const { expandAll, expandRowKeys } = treeOpts;
|
|
2419
2443
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2420
2444
|
if (expandAll) {
|
|
2421
|
-
|
|
2445
|
+
$xeTable.setAllTreeExpand(true);
|
|
2422
2446
|
}
|
|
2423
2447
|
else if (expandRowKeys) {
|
|
2424
2448
|
const defExpandeds = [];
|
|
@@ -2429,7 +2453,7 @@ export default defineComponent({
|
|
|
2429
2453
|
defExpandeds.push(matchObj.item);
|
|
2430
2454
|
}
|
|
2431
2455
|
});
|
|
2432
|
-
|
|
2456
|
+
$xeTable.setTreeExpand(defExpandeds, true);
|
|
2433
2457
|
}
|
|
2434
2458
|
}
|
|
2435
2459
|
};
|
|
@@ -2440,8 +2464,7 @@ export default defineComponent({
|
|
|
2440
2464
|
const { checkStrictly } = checkboxOpts;
|
|
2441
2465
|
return new Promise(resolve => {
|
|
2442
2466
|
if (loadMethod) {
|
|
2443
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2444
|
-
const { fullAllDataRowIdData } = internalData;
|
|
2467
|
+
const { fullAllDataRowIdData, treeExpandLazyLoadedMaps } = internalData;
|
|
2445
2468
|
const rowid = getRowid($xeTable, row);
|
|
2446
2469
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
2447
2470
|
treeExpandLazyLoadedMaps[rowid] = row;
|
|
@@ -2456,18 +2479,19 @@ export default defineComponent({
|
|
|
2456
2479
|
childRecords = [];
|
|
2457
2480
|
}
|
|
2458
2481
|
if (childRecords) {
|
|
2459
|
-
return
|
|
2460
|
-
const { treeExpandedMaps } =
|
|
2482
|
+
return $xeTable.loadTreeChildren(row, childRecords).then(childRows => {
|
|
2483
|
+
const { treeExpandedMaps } = internalData;
|
|
2461
2484
|
if (childRows.length && !treeExpandedMaps[rowid]) {
|
|
2462
2485
|
treeExpandedMaps[rowid] = row;
|
|
2463
2486
|
}
|
|
2487
|
+
reactData.treeExpandedFlag++;
|
|
2464
2488
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
2465
|
-
if (!checkStrictly &&
|
|
2489
|
+
if (!checkStrictly && $xeTable.isCheckedByCheckboxRow(row)) {
|
|
2466
2490
|
handleCheckedCheckboxRow(childRows, true);
|
|
2467
2491
|
}
|
|
2468
2492
|
return nextTick().then(() => {
|
|
2469
2493
|
if (transform) {
|
|
2470
|
-
|
|
2494
|
+
$xeTable.handleTableData();
|
|
2471
2495
|
updateAfterDataIndex();
|
|
2472
2496
|
return nextTick();
|
|
2473
2497
|
}
|
|
@@ -2475,7 +2499,7 @@ export default defineComponent({
|
|
|
2475
2499
|
});
|
|
2476
2500
|
}
|
|
2477
2501
|
}).catch(() => {
|
|
2478
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2502
|
+
const { treeExpandLazyLoadedMaps } = internalData;
|
|
2479
2503
|
if (rowRest) {
|
|
2480
2504
|
rowRest.treeLoaded = false;
|
|
2481
2505
|
}
|
|
@@ -2483,7 +2507,8 @@ export default defineComponent({
|
|
|
2483
2507
|
delete treeExpandLazyLoadedMaps[rowid];
|
|
2484
2508
|
}
|
|
2485
2509
|
}).finally(() => {
|
|
2486
|
-
|
|
2510
|
+
reactData.treeExpandedFlag++;
|
|
2511
|
+
nextTick().then(() => $xeTable.recalculate()).then(() => resolve());
|
|
2487
2512
|
});
|
|
2488
2513
|
}
|
|
2489
2514
|
else {
|
|
@@ -2509,29 +2534,27 @@ export default defineComponent({
|
|
|
2509
2534
|
const expandOpts = computeExpandOpts.value;
|
|
2510
2535
|
const { loadMethod } = expandOpts;
|
|
2511
2536
|
if (loadMethod) {
|
|
2512
|
-
const { fullAllDataRowIdData } = internalData;
|
|
2513
|
-
const rExpandLazyLoadedMaps = Object.assign({}, reactData.rowExpandLazyLoadedMaps);
|
|
2537
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData;
|
|
2514
2538
|
const rowid = getRowid($xeTable, row);
|
|
2515
2539
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
const rowTempExpandedMaps = Object.assign({}, reactData.rowExpandedMaps);
|
|
2540
|
+
rowExpandLazyLoadedMaps[rowid] = row;
|
|
2541
|
+
loadMethod({ $table: $xeTable, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) }).then(() => {
|
|
2542
|
+
const { rowExpandedMaps } = internalData;
|
|
2520
2543
|
if (rowRest) {
|
|
2521
2544
|
rowRest.expandLoaded = true;
|
|
2522
2545
|
}
|
|
2523
|
-
|
|
2524
|
-
reactData.
|
|
2546
|
+
rowExpandedMaps[rowid] = row;
|
|
2547
|
+
reactData.rowExpandedFlag++;
|
|
2525
2548
|
}).catch(() => {
|
|
2526
2549
|
if (rowRest) {
|
|
2527
2550
|
rowRest.expandLoaded = false;
|
|
2528
2551
|
}
|
|
2529
2552
|
}).finally(() => {
|
|
2530
|
-
const
|
|
2531
|
-
if (
|
|
2532
|
-
delete
|
|
2553
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
2554
|
+
if (rowExpandLazyLoadedMaps[rowid]) {
|
|
2555
|
+
delete rowExpandLazyLoadedMaps[rowid];
|
|
2533
2556
|
}
|
|
2534
|
-
reactData.
|
|
2557
|
+
reactData.rowExpandedFlag++;
|
|
2535
2558
|
nextTick()
|
|
2536
2559
|
.then(() => $xeTable.recalculate())
|
|
2537
2560
|
.then(() => $xeTable.updateCellAreas())
|
|
@@ -2634,9 +2657,6 @@ export default defineComponent({
|
|
|
2634
2657
|
calcCellWidth();
|
|
2635
2658
|
autoCellWidth();
|
|
2636
2659
|
updateStyle();
|
|
2637
|
-
if (reFull) {
|
|
2638
|
-
updateRowOffsetTop();
|
|
2639
|
-
}
|
|
2640
2660
|
updateRowExpandStyle();
|
|
2641
2661
|
return computeScrollLoad().then(() => {
|
|
2642
2662
|
if (reFull === true) {
|
|
@@ -3070,9 +3090,8 @@ export default defineComponent({
|
|
|
3070
3090
|
* @returns
|
|
3071
3091
|
*/
|
|
3072
3092
|
const handleBaseTreeExpand = (rows, expanded) => {
|
|
3073
|
-
const {
|
|
3074
|
-
const
|
|
3075
|
-
const { fullAllDataRowIdData, tableFullData } = internalData;
|
|
3093
|
+
const { treeNodeColumn } = reactData;
|
|
3094
|
+
const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
|
|
3076
3095
|
const treeOpts = computeTreeOpts.value;
|
|
3077
3096
|
const { reserve, lazy, accordion, toggleMethod } = treeOpts;
|
|
3078
3097
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -3080,6 +3099,7 @@ export default defineComponent({
|
|
|
3080
3099
|
const result = [];
|
|
3081
3100
|
const columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
3082
3101
|
const $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
3102
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3083
3103
|
let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
|
|
3084
3104
|
if (accordion) {
|
|
3085
3105
|
validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
|
|
@@ -3087,17 +3107,17 @@ export default defineComponent({
|
|
|
3087
3107
|
const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField });
|
|
3088
3108
|
if (matchObj) {
|
|
3089
3109
|
matchObj.items.forEach(item => {
|
|
3090
|
-
const rowid =
|
|
3091
|
-
if (
|
|
3092
|
-
delete
|
|
3110
|
+
const rowid = handleGetRowId(item);
|
|
3111
|
+
if (treeExpandedMaps[rowid]) {
|
|
3112
|
+
delete treeExpandedMaps[rowid];
|
|
3093
3113
|
}
|
|
3094
3114
|
});
|
|
3095
3115
|
}
|
|
3096
3116
|
}
|
|
3097
3117
|
if (expanded) {
|
|
3098
3118
|
validRows.forEach((row) => {
|
|
3099
|
-
const rowid =
|
|
3100
|
-
if (!
|
|
3119
|
+
const rowid = handleGetRowId(row);
|
|
3120
|
+
if (!treeExpandedMaps[rowid]) {
|
|
3101
3121
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
3102
3122
|
if (rowRest) {
|
|
3103
3123
|
const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
|
|
@@ -3107,7 +3127,7 @@ export default defineComponent({
|
|
|
3107
3127
|
}
|
|
3108
3128
|
else {
|
|
3109
3129
|
if (row[childrenField] && row[childrenField].length) {
|
|
3110
|
-
|
|
3130
|
+
treeExpandedMaps[rowid] = row;
|
|
3111
3131
|
}
|
|
3112
3132
|
}
|
|
3113
3133
|
}
|
|
@@ -3116,16 +3136,16 @@ export default defineComponent({
|
|
|
3116
3136
|
}
|
|
3117
3137
|
else {
|
|
3118
3138
|
validRows.forEach(item => {
|
|
3119
|
-
const rowid =
|
|
3120
|
-
if (
|
|
3121
|
-
delete
|
|
3139
|
+
const rowid = handleGetRowId(item);
|
|
3140
|
+
if (treeExpandedMaps[rowid]) {
|
|
3141
|
+
delete treeExpandedMaps[rowid];
|
|
3122
3142
|
}
|
|
3123
3143
|
});
|
|
3124
3144
|
}
|
|
3125
3145
|
if (reserve) {
|
|
3126
3146
|
validRows.forEach((row) => handleTreeExpandReserve(row, expanded));
|
|
3127
3147
|
}
|
|
3128
|
-
reactData.
|
|
3148
|
+
reactData.treeExpandedFlag++;
|
|
3129
3149
|
return Promise.all(result).then(() => {
|
|
3130
3150
|
return tableMethods.recalculate();
|
|
3131
3151
|
});
|
|
@@ -3187,10 +3207,11 @@ export default defineComponent({
|
|
|
3187
3207
|
}
|
|
3188
3208
|
};
|
|
3189
3209
|
const createGetRowCacheProp = (prop) => {
|
|
3210
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3190
3211
|
return function (row) {
|
|
3191
3212
|
const { fullAllDataRowIdData } = internalData;
|
|
3192
3213
|
if (row) {
|
|
3193
|
-
const rowid =
|
|
3214
|
+
const rowid = handleGetRowId(row);
|
|
3194
3215
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
3195
3216
|
if (rowRest) {
|
|
3196
3217
|
return rowRest[prop];
|
|
@@ -3341,7 +3362,7 @@ export default defineComponent({
|
|
|
3341
3362
|
};
|
|
3342
3363
|
const handleUpdateColResize = (evnt, params) => {
|
|
3343
3364
|
$xeTable.analyColumnWidth();
|
|
3344
|
-
$xeTable.recalculate(
|
|
3365
|
+
$xeTable.recalculate().then(() => {
|
|
3345
3366
|
$xeTable.saveCustomStore('update:width');
|
|
3346
3367
|
$xeTable.updateCellAreas();
|
|
3347
3368
|
$xeTable.dispatchEvent('column-resizable-change', params, evnt);
|
|
@@ -3352,7 +3373,7 @@ export default defineComponent({
|
|
|
3352
3373
|
};
|
|
3353
3374
|
const handleUpdateRowResize = (evnt, params) => {
|
|
3354
3375
|
reactData.resizeHeightFlag++;
|
|
3355
|
-
$xeTable.recalculate(
|
|
3376
|
+
$xeTable.recalculate().then(() => {
|
|
3356
3377
|
$xeTable.updateCellAreas();
|
|
3357
3378
|
$xeTable.dispatchEvent('row-resizable-change', params, evnt);
|
|
3358
3379
|
setTimeout(() => $xeTable.recalculate(true), 300);
|
|
@@ -3370,16 +3391,17 @@ export default defineComponent({
|
|
|
3370
3391
|
}
|
|
3371
3392
|
};
|
|
3372
3393
|
const updateRowOffsetTop = () => {
|
|
3373
|
-
const { expandColumn
|
|
3374
|
-
const { afterFullData, fullAllDataRowIdData } = internalData;
|
|
3394
|
+
const { expandColumn } = reactData;
|
|
3395
|
+
const { afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
|
|
3375
3396
|
const expandOpts = computeExpandOpts.value;
|
|
3376
3397
|
const rowOpts = computeRowOpts.value;
|
|
3377
3398
|
const cellOpts = computeCellOpts.value;
|
|
3378
3399
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
3400
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3379
3401
|
let offsetTop = 0;
|
|
3380
3402
|
for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
3381
3403
|
const row = afterFullData[rIndex];
|
|
3382
|
-
const rowid =
|
|
3404
|
+
const rowid = handleGetRowId(row);
|
|
3383
3405
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
3384
3406
|
rowRest.oTop = offsetTop;
|
|
3385
3407
|
offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
|
|
@@ -3764,6 +3786,7 @@ export default defineComponent({
|
|
|
3764
3786
|
const removeTempMaps = Object.assign({}, editStore.removeMaps);
|
|
3765
3787
|
const treeOpts = computeTreeOpts.value;
|
|
3766
3788
|
const { transform } = treeOpts;
|
|
3789
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
3767
3790
|
if (!keepSource) {
|
|
3768
3791
|
if (process.env.NODE_ENV === 'development') {
|
|
3769
3792
|
errLog('vxe.error.reqProp', ['keep-source']);
|
|
@@ -3782,7 +3805,7 @@ export default defineComponent({
|
|
|
3782
3805
|
let reDelFlag = false;
|
|
3783
3806
|
if (targetRows.length) {
|
|
3784
3807
|
targetRows.forEach((item) => {
|
|
3785
|
-
const rowid =
|
|
3808
|
+
const rowid = handleGetRowId(item);
|
|
3786
3809
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
3787
3810
|
if (rowRest) {
|
|
3788
3811
|
const row = rowRest.row;
|
|
@@ -4145,8 +4168,7 @@ export default defineComponent({
|
|
|
4145
4168
|
*/
|
|
4146
4169
|
getCheckboxRecords(isFull) {
|
|
4147
4170
|
const { treeConfig } = props;
|
|
4148
|
-
const { selectCheckboxMaps } =
|
|
4149
|
-
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData;
|
|
4171
|
+
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData;
|
|
4150
4172
|
const treeOpts = computeTreeOpts.value;
|
|
4151
4173
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4152
4174
|
const { transform, mapChildrenField } = treeOpts;
|
|
@@ -4476,12 +4498,13 @@ export default defineComponent({
|
|
|
4476
4498
|
},
|
|
4477
4499
|
getRowHeightConf(isFull) {
|
|
4478
4500
|
const { fullAllDataRowIdData, afterFullData } = internalData;
|
|
4501
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
4479
4502
|
const rowOpts = computeRowOpts.value;
|
|
4480
4503
|
const cellOpts = computeCellOpts.value;
|
|
4481
4504
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
4482
4505
|
const rest = {};
|
|
4483
4506
|
afterFullData.forEach(row => {
|
|
4484
|
-
const rowid =
|
|
4507
|
+
const rowid = handleGetRowId(row);
|
|
4485
4508
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
4486
4509
|
if (rowRest) {
|
|
4487
4510
|
const resizeHeight = rowRest.resizeHeight;
|
|
@@ -4505,8 +4528,9 @@ export default defineComponent({
|
|
|
4505
4528
|
rHeight = Math.floor(rHeight * bodyHeight);
|
|
4506
4529
|
}
|
|
4507
4530
|
if (rHeight) {
|
|
4531
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
4508
4532
|
rows.forEach(row => {
|
|
4509
|
-
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row :
|
|
4533
|
+
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row);
|
|
4510
4534
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
4511
4535
|
if (rowRest) {
|
|
4512
4536
|
rowRest.resizeHeight = rHeight;
|
|
@@ -4655,12 +4679,11 @@ export default defineComponent({
|
|
|
4655
4679
|
*/
|
|
4656
4680
|
getCheckboxIndeterminateRecords(isFull) {
|
|
4657
4681
|
const { treeConfig } = props;
|
|
4658
|
-
const { fullDataRowIdData } = internalData;
|
|
4659
|
-
const { treeIndeterminateMaps } = reactData;
|
|
4682
|
+
const { fullDataRowIdData, treeIndeterminateRowMaps } = internalData;
|
|
4660
4683
|
if (treeConfig) {
|
|
4661
4684
|
const fullRest = [];
|
|
4662
4685
|
const defRest = [];
|
|
4663
|
-
XEUtils.each(
|
|
4686
|
+
XEUtils.each(treeIndeterminateRowMaps, (item, rowid) => {
|
|
4664
4687
|
if (item) {
|
|
4665
4688
|
fullRest.push(item);
|
|
4666
4689
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -4701,17 +4724,18 @@ export default defineComponent({
|
|
|
4701
4724
|
return handleCheckedCheckboxRow(rows, checked, true);
|
|
4702
4725
|
},
|
|
4703
4726
|
isCheckedByCheckboxRow(row) {
|
|
4704
|
-
const {
|
|
4727
|
+
const { updateCheckboxFlag } = reactData;
|
|
4728
|
+
const { selectCheckboxMaps } = internalData;
|
|
4705
4729
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4706
4730
|
const { checkField } = checkboxOpts;
|
|
4707
4731
|
if (checkField) {
|
|
4708
4732
|
return XEUtils.get(row, checkField);
|
|
4709
4733
|
}
|
|
4710
|
-
return !!selectCheckboxMaps[getRowid($xeTable, row)];
|
|
4734
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[getRowid($xeTable, row)];
|
|
4711
4735
|
},
|
|
4712
4736
|
isCheckedByCheckboxRowKey(rowid) {
|
|
4713
|
-
const {
|
|
4714
|
-
const { fullAllDataRowIdData } = internalData;
|
|
4737
|
+
const { updateCheckboxFlag } = reactData;
|
|
4738
|
+
const { fullAllDataRowIdData, selectCheckboxMaps } = internalData;
|
|
4715
4739
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4716
4740
|
const { checkField } = checkboxOpts;
|
|
4717
4741
|
if (checkField) {
|
|
@@ -4721,21 +4745,21 @@ export default defineComponent({
|
|
|
4721
4745
|
}
|
|
4722
4746
|
return false;
|
|
4723
4747
|
}
|
|
4724
|
-
return !!selectCheckboxMaps[rowid];
|
|
4748
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[rowid];
|
|
4725
4749
|
},
|
|
4726
4750
|
isIndeterminateByCheckboxRow(row) {
|
|
4727
|
-
const {
|
|
4728
|
-
return !!
|
|
4751
|
+
const { treeIndeterminateRowMaps } = internalData;
|
|
4752
|
+
return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row);
|
|
4729
4753
|
},
|
|
4730
4754
|
isIndeterminateByCheckboxRowKey(rowid) {
|
|
4731
|
-
const {
|
|
4732
|
-
return !!
|
|
4755
|
+
const { treeIndeterminateRowMaps } = internalData;
|
|
4756
|
+
return !!treeIndeterminateRowMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid);
|
|
4733
4757
|
},
|
|
4734
4758
|
/**
|
|
4735
4759
|
* 多选,切换某一行的选中状态
|
|
4736
4760
|
*/
|
|
4737
4761
|
toggleCheckboxRow(row) {
|
|
4738
|
-
const { selectCheckboxMaps } =
|
|
4762
|
+
const { selectCheckboxMaps } = internalData;
|
|
4739
4763
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
4740
4764
|
const { checkField } = checkboxOpts;
|
|
4741
4765
|
const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)];
|
|
@@ -4798,15 +4822,16 @@ export default defineComponent({
|
|
|
4798
4822
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4799
4823
|
const reserveSelection = [];
|
|
4800
4824
|
if (checkboxOpts.reserve) {
|
|
4825
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
4801
4826
|
const afterFullIdMaps = {};
|
|
4802
4827
|
if (treeConfig) {
|
|
4803
4828
|
XEUtils.eachTree(afterFullData, row => {
|
|
4804
|
-
afterFullIdMaps[
|
|
4829
|
+
afterFullIdMaps[handleGetRowId(row)] = 1;
|
|
4805
4830
|
}, { children: childrenField });
|
|
4806
4831
|
}
|
|
4807
4832
|
else {
|
|
4808
4833
|
afterFullData.forEach(row => {
|
|
4809
|
-
afterFullIdMaps[
|
|
4834
|
+
afterFullIdMaps[handleGetRowId(row)] = 1;
|
|
4810
4835
|
});
|
|
4811
4836
|
}
|
|
4812
4837
|
XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
|
|
@@ -4869,8 +4894,9 @@ export default defineComponent({
|
|
|
4869
4894
|
}
|
|
4870
4895
|
reactData.isAllSelected = false;
|
|
4871
4896
|
reactData.isIndeterminate = false;
|
|
4872
|
-
|
|
4873
|
-
|
|
4897
|
+
internalData.selectCheckboxMaps = {};
|
|
4898
|
+
internalData.treeIndeterminateRowMaps = {};
|
|
4899
|
+
reactData.updateCheckboxFlag++;
|
|
4874
4900
|
return nextTick();
|
|
4875
4901
|
},
|
|
4876
4902
|
/**
|
|
@@ -5001,59 +5027,60 @@ export default defineComponent({
|
|
|
5001
5027
|
return nextTick();
|
|
5002
5028
|
},
|
|
5003
5029
|
setPendingRow(rows, status) {
|
|
5004
|
-
const
|
|
5030
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5031
|
+
const { pendingRowMaps } = internalData;
|
|
5005
5032
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5006
5033
|
rows = [rows];
|
|
5007
5034
|
}
|
|
5008
5035
|
if (status) {
|
|
5009
5036
|
rows.forEach((row) => {
|
|
5010
|
-
const rowid =
|
|
5011
|
-
if (rowid && !
|
|
5012
|
-
|
|
5037
|
+
const rowid = handleGetRowId(row);
|
|
5038
|
+
if (rowid && !pendingRowMaps[rowid]) {
|
|
5039
|
+
pendingRowMaps[rowid] = row;
|
|
5013
5040
|
}
|
|
5014
5041
|
});
|
|
5015
5042
|
}
|
|
5016
5043
|
else {
|
|
5017
5044
|
rows.forEach((row) => {
|
|
5018
|
-
const rowid =
|
|
5019
|
-
if (rowid &&
|
|
5020
|
-
delete
|
|
5045
|
+
const rowid = handleGetRowId(row);
|
|
5046
|
+
if (rowid && pendingRowMaps[rowid]) {
|
|
5047
|
+
delete pendingRowMaps[rowid];
|
|
5021
5048
|
}
|
|
5022
5049
|
});
|
|
5023
5050
|
}
|
|
5024
|
-
reactData.
|
|
5051
|
+
reactData.pendingRowFlag++;
|
|
5025
5052
|
return nextTick();
|
|
5026
5053
|
},
|
|
5027
5054
|
togglePendingRow(rows) {
|
|
5028
|
-
const
|
|
5055
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5056
|
+
const { pendingRowMaps } = internalData;
|
|
5029
5057
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5030
5058
|
rows = [rows];
|
|
5031
5059
|
}
|
|
5032
5060
|
rows.forEach((row) => {
|
|
5033
|
-
const rowid =
|
|
5061
|
+
const rowid = handleGetRowId(row);
|
|
5034
5062
|
if (rowid) {
|
|
5035
|
-
if (
|
|
5036
|
-
delete
|
|
5063
|
+
if (pendingRowMaps[rowid]) {
|
|
5064
|
+
delete pendingRowMaps[rowid];
|
|
5037
5065
|
}
|
|
5038
5066
|
else {
|
|
5039
|
-
|
|
5067
|
+
pendingRowMaps[rowid] = row;
|
|
5040
5068
|
}
|
|
5041
5069
|
}
|
|
5042
5070
|
});
|
|
5043
|
-
reactData.
|
|
5071
|
+
reactData.pendingRowFlag++;
|
|
5044
5072
|
return nextTick();
|
|
5045
5073
|
},
|
|
5046
5074
|
hasPendingByRow(row) {
|
|
5047
5075
|
return tableMethods.isPendingByRow(row);
|
|
5048
5076
|
},
|
|
5049
5077
|
isPendingByRow(row) {
|
|
5050
|
-
const { pendingRowMaps } =
|
|
5078
|
+
const { pendingRowMaps } = internalData;
|
|
5051
5079
|
const rowid = getRowid($xeTable, row);
|
|
5052
5080
|
return !!pendingRowMaps[rowid];
|
|
5053
5081
|
},
|
|
5054
5082
|
getPendingRecords() {
|
|
5055
|
-
const { pendingRowMaps } =
|
|
5056
|
-
const { fullAllDataRowIdData } = internalData;
|
|
5083
|
+
const { fullAllDataRowIdData, pendingRowMaps } = internalData;
|
|
5057
5084
|
const insertRecords = [];
|
|
5058
5085
|
XEUtils.each(pendingRowMaps, (row, rowid) => {
|
|
5059
5086
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -5063,7 +5090,8 @@ export default defineComponent({
|
|
|
5063
5090
|
return insertRecords;
|
|
5064
5091
|
},
|
|
5065
5092
|
clearPendingRow() {
|
|
5066
|
-
|
|
5093
|
+
internalData.pendingRowMaps = {};
|
|
5094
|
+
reactData.pendingRowFlag++;
|
|
5067
5095
|
return nextTick();
|
|
5068
5096
|
},
|
|
5069
5097
|
sort(sortConfs, sortOrder) {
|
|
@@ -5246,17 +5274,16 @@ export default defineComponent({
|
|
|
5246
5274
|
return rowRest && !!rowRest.expandLoaded;
|
|
5247
5275
|
},
|
|
5248
5276
|
clearRowExpandLoaded(row) {
|
|
5249
|
-
const
|
|
5250
|
-
const { fullAllDataRowIdData } = internalData;
|
|
5277
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData;
|
|
5251
5278
|
const expandOpts = computeExpandOpts.value;
|
|
5252
5279
|
const { lazy } = expandOpts;
|
|
5253
5280
|
const rowid = getRowid($xeTable, row);
|
|
5254
5281
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5255
5282
|
if (lazy && rowRest) {
|
|
5256
5283
|
rowRest.expandLoaded = false;
|
|
5257
|
-
delete
|
|
5284
|
+
delete rowExpandLazyLoadedMaps[rowid];
|
|
5258
5285
|
}
|
|
5259
|
-
reactData.
|
|
5286
|
+
reactData.rowExpandedFlag++;
|
|
5260
5287
|
return nextTick();
|
|
5261
5288
|
},
|
|
5262
5289
|
/**
|
|
@@ -5264,12 +5291,12 @@ export default defineComponent({
|
|
|
5264
5291
|
* @param {Row} row 行对象
|
|
5265
5292
|
*/
|
|
5266
5293
|
reloadRowExpand(row) {
|
|
5267
|
-
const { rowExpandLazyLoadedMaps } =
|
|
5294
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
5268
5295
|
const expandOpts = computeExpandOpts.value;
|
|
5269
5296
|
const { lazy } = expandOpts;
|
|
5270
5297
|
const rowid = getRowid($xeTable, row);
|
|
5271
5298
|
if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
|
|
5272
|
-
|
|
5299
|
+
$xeTable.clearRowExpandLoaded(row)
|
|
5273
5300
|
.then(() => handleAsyncRowExpand(row));
|
|
5274
5301
|
}
|
|
5275
5302
|
return nextTick();
|
|
@@ -5279,13 +5306,13 @@ export default defineComponent({
|
|
|
5279
5306
|
warnLog('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand']);
|
|
5280
5307
|
}
|
|
5281
5308
|
// 即将废弃
|
|
5282
|
-
return
|
|
5309
|
+
return $xeTable.reloadRowExpand(row);
|
|
5283
5310
|
},
|
|
5284
5311
|
/**
|
|
5285
5312
|
* 切换展开行
|
|
5286
5313
|
*/
|
|
5287
5314
|
toggleRowExpand(row) {
|
|
5288
|
-
return
|
|
5315
|
+
return $xeTable.setRowExpand(row, !$xeTable.isRowExpandByRow(row));
|
|
5289
5316
|
},
|
|
5290
5317
|
/**
|
|
5291
5318
|
* 设置所有行的展开与否
|
|
@@ -5314,9 +5341,9 @@ export default defineComponent({
|
|
|
5314
5341
|
* @param {Boolean} expanded 是否展开
|
|
5315
5342
|
*/
|
|
5316
5343
|
setRowExpand(rows, expanded) {
|
|
5317
|
-
const {
|
|
5318
|
-
|
|
5319
|
-
|
|
5344
|
+
const { expandColumn } = reactData;
|
|
5345
|
+
let { fullAllDataRowIdData, rowExpandedMaps, rowExpandLazyLoadedMaps } = internalData;
|
|
5346
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5320
5347
|
const expandOpts = computeExpandOpts.value;
|
|
5321
5348
|
const { reserve, lazy, accordion, toggleMethod } = expandOpts;
|
|
5322
5349
|
const lazyRests = [];
|
|
@@ -5328,30 +5355,31 @@ export default defineComponent({
|
|
|
5328
5355
|
}
|
|
5329
5356
|
if (accordion) {
|
|
5330
5357
|
// 只能同时展开一个
|
|
5331
|
-
|
|
5358
|
+
rowExpandedMaps = {};
|
|
5359
|
+
internalData.rowExpandedMaps = rowExpandedMaps;
|
|
5332
5360
|
rows = rows.slice(rows.length - 1, rows.length);
|
|
5333
5361
|
}
|
|
5334
5362
|
const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) })) : rows;
|
|
5335
5363
|
if (expanded) {
|
|
5336
5364
|
validRows.forEach((row) => {
|
|
5337
|
-
const rowid =
|
|
5338
|
-
if (!
|
|
5365
|
+
const rowid = handleGetRowId(row);
|
|
5366
|
+
if (!rowExpandedMaps[rowid]) {
|
|
5339
5367
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5340
5368
|
const isLoad = lazy && !rowRest.expandLoaded && !rowExpandLazyLoadedMaps[rowid];
|
|
5341
5369
|
if (isLoad) {
|
|
5342
5370
|
lazyRests.push(handleAsyncRowExpand(row));
|
|
5343
5371
|
}
|
|
5344
5372
|
else {
|
|
5345
|
-
|
|
5373
|
+
rowExpandedMaps[rowid] = row;
|
|
5346
5374
|
}
|
|
5347
5375
|
}
|
|
5348
5376
|
});
|
|
5349
5377
|
}
|
|
5350
5378
|
else {
|
|
5351
5379
|
validRows.forEach(item => {
|
|
5352
|
-
const rowid =
|
|
5353
|
-
if (
|
|
5354
|
-
delete
|
|
5380
|
+
const rowid = handleGetRowId(item);
|
|
5381
|
+
if (rowExpandedMaps[rowid]) {
|
|
5382
|
+
delete rowExpandedMaps[rowid];
|
|
5355
5383
|
}
|
|
5356
5384
|
});
|
|
5357
5385
|
}
|
|
@@ -5359,7 +5387,7 @@ export default defineComponent({
|
|
|
5359
5387
|
validRows.forEach((row) => handleRowExpandReserve(row, expanded));
|
|
5360
5388
|
}
|
|
5361
5389
|
}
|
|
5362
|
-
reactData.
|
|
5390
|
+
reactData.rowExpandedFlag++;
|
|
5363
5391
|
return Promise.all(lazyRests)
|
|
5364
5392
|
.then(() => nextTick())
|
|
5365
5393
|
.then(() => $xeTable.recalculate(true))
|
|
@@ -5375,9 +5403,10 @@ export default defineComponent({
|
|
|
5375
5403
|
* @param {Row} row 行对象
|
|
5376
5404
|
*/
|
|
5377
5405
|
isRowExpandByRow(row) {
|
|
5378
|
-
const {
|
|
5406
|
+
const { rowExpandedFlag } = reactData;
|
|
5407
|
+
const { rowExpandedMaps } = internalData;
|
|
5379
5408
|
const rowid = getRowid($xeTable, row);
|
|
5380
|
-
return !!rowExpandedMaps[rowid];
|
|
5409
|
+
return !!rowExpandedFlag && !!rowExpandedMaps[rowid];
|
|
5381
5410
|
},
|
|
5382
5411
|
isExpandByRow(row) {
|
|
5383
5412
|
// 已废弃
|
|
@@ -5394,7 +5423,8 @@ export default defineComponent({
|
|
|
5394
5423
|
const expandOpts = computeExpandOpts.value;
|
|
5395
5424
|
const { reserve } = expandOpts;
|
|
5396
5425
|
const expList = $xeTable.getRowExpandRecords();
|
|
5397
|
-
|
|
5426
|
+
internalData.rowExpandedMaps = {};
|
|
5427
|
+
reactData.rowExpandedFlag++;
|
|
5398
5428
|
if (reserve) {
|
|
5399
5429
|
tableFullData.forEach((row) => handleRowExpandReserve(row, false));
|
|
5400
5430
|
}
|
|
@@ -5415,7 +5445,7 @@ export default defineComponent({
|
|
|
5415
5445
|
},
|
|
5416
5446
|
getRowExpandRecords() {
|
|
5417
5447
|
const rest = [];
|
|
5418
|
-
XEUtils.each(
|
|
5448
|
+
XEUtils.each(internalData.rowExpandedMaps, item => {
|
|
5419
5449
|
if (item) {
|
|
5420
5450
|
rest.push(item);
|
|
5421
5451
|
}
|
|
@@ -5424,7 +5454,7 @@ export default defineComponent({
|
|
|
5424
5454
|
},
|
|
5425
5455
|
getTreeExpandRecords() {
|
|
5426
5456
|
const rest = [];
|
|
5427
|
-
XEUtils.each(
|
|
5457
|
+
XEUtils.each(internalData.treeExpandedMaps, item => {
|
|
5428
5458
|
if (item) {
|
|
5429
5459
|
rest.push(item);
|
|
5430
5460
|
}
|
|
@@ -5441,12 +5471,10 @@ export default defineComponent({
|
|
|
5441
5471
|
return rowRest && !!rowRest.treeLoaded;
|
|
5442
5472
|
},
|
|
5443
5473
|
clearTreeExpandLoaded(rows) {
|
|
5444
|
-
const { fullAllDataRowIdData } = internalData;
|
|
5474
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData;
|
|
5445
5475
|
const treeOpts = computeTreeOpts.value;
|
|
5446
5476
|
const { transform } = treeOpts;
|
|
5447
|
-
let tExpandedMaps = {};
|
|
5448
5477
|
if (rows) {
|
|
5449
|
-
tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
|
|
5450
5478
|
if (!XEUtils.isArray(rows)) {
|
|
5451
5479
|
rows = [rows];
|
|
5452
5480
|
}
|
|
@@ -5455,8 +5483,8 @@ export default defineComponent({
|
|
|
5455
5483
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5456
5484
|
if (rowRest) {
|
|
5457
5485
|
rowRest.treeLoaded = false;
|
|
5458
|
-
if (
|
|
5459
|
-
delete
|
|
5486
|
+
if (treeExpandedMaps[rowid]) {
|
|
5487
|
+
delete treeExpandedMaps[rowid];
|
|
5460
5488
|
}
|
|
5461
5489
|
}
|
|
5462
5490
|
});
|
|
@@ -5466,7 +5494,8 @@ export default defineComponent({
|
|
|
5466
5494
|
rowRest.treeLoaded = false;
|
|
5467
5495
|
});
|
|
5468
5496
|
}
|
|
5469
|
-
|
|
5497
|
+
internalData.treeExpandedMaps = {};
|
|
5498
|
+
reactData.treeExpandedFlag++;
|
|
5470
5499
|
if (transform) {
|
|
5471
5500
|
handleVirtualTreeToList();
|
|
5472
5501
|
return $xeTable.handleTableData();
|
|
@@ -5478,7 +5507,7 @@ export default defineComponent({
|
|
|
5478
5507
|
* @param {Row} row 行对象
|
|
5479
5508
|
*/
|
|
5480
5509
|
reloadTreeExpand(row) {
|
|
5481
|
-
const { treeExpandLazyLoadedMaps } =
|
|
5510
|
+
const { treeExpandLazyLoadedMaps } = internalData;
|
|
5482
5511
|
const treeOpts = computeTreeOpts.value;
|
|
5483
5512
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
5484
5513
|
const { transform, lazy } = treeOpts;
|
|
@@ -5564,8 +5593,9 @@ export default defineComponent({
|
|
|
5564
5593
|
* @param {Row} row 行对象
|
|
5565
5594
|
*/
|
|
5566
5595
|
isTreeExpandByRow(row) {
|
|
5567
|
-
const {
|
|
5568
|
-
|
|
5596
|
+
const { treeExpandedFlag } = reactData;
|
|
5597
|
+
const { treeExpandedMaps } = internalData;
|
|
5598
|
+
return !!treeExpandedFlag && !!treeExpandedMaps[getRowid($xeTable, row)];
|
|
5569
5599
|
},
|
|
5570
5600
|
/**
|
|
5571
5601
|
* 手动清空树形节点的展开状态,数据会恢复成未展开的状态
|
|
@@ -5575,19 +5605,20 @@ export default defineComponent({
|
|
|
5575
5605
|
const treeOpts = computeTreeOpts.value;
|
|
5576
5606
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
5577
5607
|
const { transform, reserve } = treeOpts;
|
|
5578
|
-
const expList =
|
|
5579
|
-
|
|
5608
|
+
const expList = $xeTable.getTreeExpandRecords();
|
|
5609
|
+
internalData.treeExpandedMaps = {};
|
|
5610
|
+
reactData.treeExpandedFlag++;
|
|
5580
5611
|
if (reserve) {
|
|
5581
5612
|
XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), { children: childrenField });
|
|
5582
5613
|
}
|
|
5583
|
-
return
|
|
5614
|
+
return $xeTable.handleTableData().then(() => {
|
|
5584
5615
|
if (transform) {
|
|
5585
5616
|
handleVirtualTreeToList();
|
|
5586
|
-
return
|
|
5617
|
+
return $xeTable.handleTableData();
|
|
5587
5618
|
}
|
|
5588
5619
|
}).then(() => {
|
|
5589
5620
|
if (expList.length) {
|
|
5590
|
-
return
|
|
5621
|
+
return $xeTable.recalculate();
|
|
5591
5622
|
}
|
|
5592
5623
|
});
|
|
5593
5624
|
},
|
|
@@ -6874,15 +6905,13 @@ export default defineComponent({
|
|
|
6874
6905
|
*/
|
|
6875
6906
|
cacheRowMap() {
|
|
6876
6907
|
const { treeConfig } = props;
|
|
6877
|
-
const { treeExpandedMaps } =
|
|
6878
|
-
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
|
|
6908
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData;
|
|
6879
6909
|
const treeOpts = computeTreeOpts.value;
|
|
6880
6910
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
6881
6911
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
6882
6912
|
const { lazy } = treeOpts;
|
|
6883
6913
|
const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
6884
6914
|
const fullDataRowIdMaps = {};
|
|
6885
|
-
const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
|
|
6886
6915
|
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
6887
6916
|
const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
|
|
6888
6917
|
let rowRest = fullAllDataRowIdMaps[rowid];
|
|
@@ -6906,13 +6935,12 @@ export default defineComponent({
|
|
|
6906
6935
|
XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
6907
6936
|
const rowid = handleUpdateRowId(row);
|
|
6908
6937
|
if (treeConfig && lazy) {
|
|
6909
|
-
const treeExpRest = treeTempExpandedMaps[rowid];
|
|
6910
6938
|
if (row[hasChildField] && row[childrenField] === undefined) {
|
|
6911
6939
|
row[childrenField] = null;
|
|
6912
6940
|
}
|
|
6913
|
-
if (
|
|
6941
|
+
if (treeExpandedMaps[rowid]) {
|
|
6914
6942
|
if (!row[childrenField] || !row[childrenField].length) {
|
|
6915
|
-
delete
|
|
6943
|
+
delete treeExpandedMaps[rowid];
|
|
6916
6944
|
}
|
|
6917
6945
|
}
|
|
6918
6946
|
}
|
|
@@ -6926,7 +6954,7 @@ export default defineComponent({
|
|
|
6926
6954
|
}
|
|
6927
6955
|
internalData.fullDataRowIdData = fullDataRowIdMaps;
|
|
6928
6956
|
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
|
|
6929
|
-
reactData.
|
|
6957
|
+
reactData.treeExpandedFlag++;
|
|
6930
6958
|
},
|
|
6931
6959
|
cacheSourceMap(fullData) {
|
|
6932
6960
|
const { treeConfig } = props;
|
|
@@ -7425,9 +7453,7 @@ export default defineComponent({
|
|
|
7425
7453
|
},
|
|
7426
7454
|
updateCheckboxStatus() {
|
|
7427
7455
|
const { treeConfig } = props;
|
|
7428
|
-
const { selectCheckboxMaps,
|
|
7429
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
7430
|
-
const halfRowMaps = Object.assign({}, treeIndeterminateMaps);
|
|
7456
|
+
const { selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
|
|
7431
7457
|
const treeOpts = computeTreeOpts.value;
|
|
7432
7458
|
const { transform, mapChildrenField } = treeOpts;
|
|
7433
7459
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -7460,12 +7486,12 @@ export default defineComponent({
|
|
|
7460
7486
|
childList.forEach(checkMethod
|
|
7461
7487
|
? (item) => {
|
|
7462
7488
|
const childRowid = handleGetRowId(item);
|
|
7463
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7489
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid];
|
|
7464
7490
|
if (checkMethod({ row: item })) {
|
|
7465
7491
|
if (isSelect) {
|
|
7466
7492
|
sLen++;
|
|
7467
7493
|
}
|
|
7468
|
-
else if (
|
|
7494
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7469
7495
|
hLen++;
|
|
7470
7496
|
}
|
|
7471
7497
|
vLen++;
|
|
@@ -7474,18 +7500,18 @@ export default defineComponent({
|
|
|
7474
7500
|
if (isSelect) {
|
|
7475
7501
|
sLen++;
|
|
7476
7502
|
}
|
|
7477
|
-
else if (
|
|
7503
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7478
7504
|
hLen++;
|
|
7479
7505
|
}
|
|
7480
7506
|
}
|
|
7481
7507
|
}
|
|
7482
7508
|
: item => {
|
|
7483
7509
|
const childRowid = handleGetRowId(item);
|
|
7484
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7510
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid];
|
|
7485
7511
|
if (isSelect) {
|
|
7486
7512
|
sLen++;
|
|
7487
7513
|
}
|
|
7488
|
-
else if (
|
|
7514
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7489
7515
|
hLen++;
|
|
7490
7516
|
}
|
|
7491
7517
|
vLen++;
|
|
@@ -7497,38 +7523,36 @@ export default defineComponent({
|
|
|
7497
7523
|
}
|
|
7498
7524
|
if (isSelected) {
|
|
7499
7525
|
if (!checkField) {
|
|
7500
|
-
|
|
7526
|
+
selectCheckboxMaps[rowid] = row;
|
|
7501
7527
|
}
|
|
7502
|
-
if (
|
|
7503
|
-
delete
|
|
7528
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7529
|
+
delete treeIndeterminateRowMaps[rowid];
|
|
7504
7530
|
}
|
|
7505
7531
|
}
|
|
7506
7532
|
else {
|
|
7507
7533
|
if (!checkField) {
|
|
7508
|
-
if (
|
|
7509
|
-
delete
|
|
7534
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7535
|
+
delete selectCheckboxMaps[rowid];
|
|
7510
7536
|
}
|
|
7511
7537
|
}
|
|
7512
7538
|
if (halfSelect) {
|
|
7513
|
-
|
|
7539
|
+
treeIndeterminateRowMaps[rowid] = row;
|
|
7514
7540
|
}
|
|
7515
7541
|
else {
|
|
7516
|
-
if (
|
|
7517
|
-
delete
|
|
7542
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7543
|
+
delete treeIndeterminateRowMaps[rowid];
|
|
7518
7544
|
}
|
|
7519
7545
|
}
|
|
7520
7546
|
}
|
|
7521
7547
|
});
|
|
7522
7548
|
}
|
|
7523
|
-
reactData.
|
|
7524
|
-
reactData.treeIndeterminateMaps = halfRowMaps;
|
|
7549
|
+
reactData.updateCheckboxFlag++;
|
|
7525
7550
|
},
|
|
7526
7551
|
updateAllCheckboxStatus() {
|
|
7527
7552
|
const { treeConfig } = props;
|
|
7528
|
-
const { selectCheckboxMaps,
|
|
7553
|
+
const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
|
|
7529
7554
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7530
7555
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
|
|
7531
|
-
const { afterFullData, afterTreeFullData, checkboxReserveRowMap } = internalData;
|
|
7532
7556
|
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
7533
7557
|
let sLen = 0; // 已选
|
|
7534
7558
|
let hLen = 0; // 半选
|
|
@@ -7542,7 +7566,7 @@ export default defineComponent({
|
|
|
7542
7566
|
if (selected) {
|
|
7543
7567
|
sLen++;
|
|
7544
7568
|
}
|
|
7545
|
-
else if (
|
|
7569
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7546
7570
|
hLen++;
|
|
7547
7571
|
}
|
|
7548
7572
|
vLen++;
|
|
@@ -7551,7 +7575,7 @@ export default defineComponent({
|
|
|
7551
7575
|
if (selected) {
|
|
7552
7576
|
sLen++;
|
|
7553
7577
|
}
|
|
7554
|
-
else if (
|
|
7578
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7555
7579
|
hLen++;
|
|
7556
7580
|
}
|
|
7557
7581
|
}
|
|
@@ -7562,7 +7586,7 @@ export default defineComponent({
|
|
|
7562
7586
|
if (selected) {
|
|
7563
7587
|
sLen++;
|
|
7564
7588
|
}
|
|
7565
|
-
else if (
|
|
7589
|
+
else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7566
7590
|
hLen++;
|
|
7567
7591
|
}
|
|
7568
7592
|
vLen++;
|
|
@@ -7586,8 +7610,7 @@ export default defineComponent({
|
|
|
7586
7610
|
*/
|
|
7587
7611
|
handleBatchSelectRows(rows, checked, isForce) {
|
|
7588
7612
|
const { treeConfig } = props;
|
|
7589
|
-
const { selectCheckboxMaps } =
|
|
7590
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
7613
|
+
const { selectCheckboxMaps } = internalData;
|
|
7591
7614
|
const treeOpts = computeTreeOpts.value;
|
|
7592
7615
|
const { transform, mapChildrenField } = treeOpts;
|
|
7593
7616
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -7609,19 +7632,17 @@ export default defineComponent({
|
|
|
7609
7632
|
handleCheckboxReserveRow(row, checked);
|
|
7610
7633
|
}
|
|
7611
7634
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
7612
|
-
reactData.
|
|
7635
|
+
reactData.updateCheckboxFlag++;
|
|
7613
7636
|
return;
|
|
7614
7637
|
}
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
|
|
7618
|
-
|
|
7619
|
-
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
}
|
|
7624
|
-
reactData.selectCheckboxMaps = selectRowMaps;
|
|
7638
|
+
// 列表
|
|
7639
|
+
rows.forEach(row => {
|
|
7640
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7641
|
+
XEUtils.set(row, checkField, checked);
|
|
7642
|
+
handleCheckboxReserveRow(row, checked);
|
|
7643
|
+
}
|
|
7644
|
+
});
|
|
7645
|
+
reactData.updateCheckboxFlag++;
|
|
7625
7646
|
return;
|
|
7626
7647
|
}
|
|
7627
7648
|
// 树结构
|
|
@@ -7631,17 +7652,17 @@ export default defineComponent({
|
|
|
7631
7652
|
const rowid = handleGetRowId(row);
|
|
7632
7653
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7633
7654
|
if (checked) {
|
|
7634
|
-
|
|
7655
|
+
selectCheckboxMaps[rowid] = row;
|
|
7635
7656
|
}
|
|
7636
7657
|
else {
|
|
7637
|
-
if (
|
|
7638
|
-
delete
|
|
7658
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7659
|
+
delete selectCheckboxMaps[rowid];
|
|
7639
7660
|
}
|
|
7640
7661
|
}
|
|
7641
7662
|
handleCheckboxReserveRow(row, checked);
|
|
7642
7663
|
}
|
|
7643
7664
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
7644
|
-
reactData.
|
|
7665
|
+
reactData.updateCheckboxFlag++;
|
|
7645
7666
|
return;
|
|
7646
7667
|
}
|
|
7647
7668
|
// 列表
|
|
@@ -7649,19 +7670,19 @@ export default defineComponent({
|
|
|
7649
7670
|
const rowid = handleGetRowId(row);
|
|
7650
7671
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7651
7672
|
if (checked) {
|
|
7652
|
-
if (!
|
|
7653
|
-
|
|
7673
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
7674
|
+
selectCheckboxMaps[rowid] = row;
|
|
7654
7675
|
}
|
|
7655
7676
|
}
|
|
7656
7677
|
else {
|
|
7657
|
-
if (
|
|
7658
|
-
delete
|
|
7678
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7679
|
+
delete selectCheckboxMaps[rowid];
|
|
7659
7680
|
}
|
|
7660
7681
|
}
|
|
7661
7682
|
handleCheckboxReserveRow(row, checked);
|
|
7683
|
+
reactData.updateCheckboxFlag++;
|
|
7662
7684
|
}
|
|
7663
7685
|
});
|
|
7664
|
-
reactData.selectCheckboxMaps = selectRowMaps;
|
|
7665
7686
|
},
|
|
7666
7687
|
/**
|
|
7667
7688
|
* 即将移除
|
|
@@ -7932,7 +7953,7 @@ export default defineComponent({
|
|
|
7932
7953
|
dispatchEvent('cell-dblclick', params, evnt);
|
|
7933
7954
|
},
|
|
7934
7955
|
handleToggleCheckRowEvent(evnt, params) {
|
|
7935
|
-
const { selectCheckboxMaps } =
|
|
7956
|
+
const { selectCheckboxMaps } = internalData;
|
|
7936
7957
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
7937
7958
|
const { checkField, trigger } = checkboxOpts;
|
|
7938
7959
|
const { row } = params;
|
|
@@ -7947,11 +7968,11 @@ export default defineComponent({
|
|
|
7947
7968
|
checked = !selectCheckboxMaps[getRowid($xeTable, row)];
|
|
7948
7969
|
}
|
|
7949
7970
|
if (evnt) {
|
|
7950
|
-
|
|
7971
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked);
|
|
7951
7972
|
}
|
|
7952
7973
|
else {
|
|
7953
|
-
|
|
7954
|
-
|
|
7974
|
+
$xeTable.handleBatchSelectRows([row], checked);
|
|
7975
|
+
$xeTable.checkSelectionStatus();
|
|
7955
7976
|
}
|
|
7956
7977
|
},
|
|
7957
7978
|
triggerCheckRowEvent(evnt, params, checked) {
|
|
@@ -8058,7 +8079,8 @@ export default defineComponent({
|
|
|
8058
8079
|
* 展开行事件
|
|
8059
8080
|
*/
|
|
8060
8081
|
triggerRowExpandEvent(evnt, params) {
|
|
8061
|
-
const {
|
|
8082
|
+
const { expandColumn: column } = reactData;
|
|
8083
|
+
const { rowExpandLazyLoadedMaps } = internalData;
|
|
8062
8084
|
const expandOpts = computeExpandOpts.value;
|
|
8063
8085
|
const { row } = params;
|
|
8064
8086
|
const { lazy, trigger } = expandOpts;
|
|
@@ -8068,18 +8090,18 @@ export default defineComponent({
|
|
|
8068
8090
|
evnt.stopPropagation();
|
|
8069
8091
|
const rowid = getRowid($xeTable, row);
|
|
8070
8092
|
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
|
|
8071
|
-
const expanded =
|
|
8072
|
-
const columnIndex =
|
|
8073
|
-
const $columnIndex =
|
|
8074
|
-
|
|
8093
|
+
const expanded = !$xeTable.isRowExpandByRow(row);
|
|
8094
|
+
const columnIndex = $xeTable.getColumnIndex(column);
|
|
8095
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column);
|
|
8096
|
+
$xeTable.setRowExpand(row, expanded);
|
|
8075
8097
|
dispatchEvent('toggle-row-expand', {
|
|
8076
8098
|
expanded,
|
|
8077
8099
|
column,
|
|
8078
8100
|
columnIndex,
|
|
8079
8101
|
$columnIndex,
|
|
8080
8102
|
row,
|
|
8081
|
-
rowIndex:
|
|
8082
|
-
$rowIndex:
|
|
8103
|
+
rowIndex: $xeTable.getRowIndex(row),
|
|
8104
|
+
$rowIndex: $xeTable.getVMRowIndex(row)
|
|
8083
8105
|
}, evnt);
|
|
8084
8106
|
}
|
|
8085
8107
|
},
|
|
@@ -8087,7 +8109,7 @@ export default defineComponent({
|
|
|
8087
8109
|
* 展开树节点事件
|
|
8088
8110
|
*/
|
|
8089
8111
|
triggerTreeExpandEvent(evnt, params) {
|
|
8090
|
-
const { treeExpandLazyLoadedMaps } =
|
|
8112
|
+
const { treeExpandLazyLoadedMaps } = internalData;
|
|
8091
8113
|
const treeOpts = computeTreeOpts.value;
|
|
8092
8114
|
const { row, column } = params;
|
|
8093
8115
|
const { lazy, trigger } = treeOpts;
|
|
@@ -8097,10 +8119,10 @@ export default defineComponent({
|
|
|
8097
8119
|
evnt.stopPropagation();
|
|
8098
8120
|
const rowid = getRowid($xeTable, row);
|
|
8099
8121
|
if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
|
|
8100
|
-
const expanded =
|
|
8101
|
-
const columnIndex =
|
|
8102
|
-
const $columnIndex =
|
|
8103
|
-
|
|
8122
|
+
const expanded = !$xeTable.isTreeExpandByRow(row);
|
|
8123
|
+
const columnIndex = $xeTable.getColumnIndex(column);
|
|
8124
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column);
|
|
8125
|
+
$xeTable.setTreeExpand(row, expanded);
|
|
8104
8126
|
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
|
|
8105
8127
|
}
|
|
8106
8128
|
},
|
|
@@ -8245,12 +8267,11 @@ export default defineComponent({
|
|
|
8245
8267
|
handleRowDragSwapEvent(evnt, isSyncRow, dragRow, prevDragRow, prevDragPos, prevDragToChild) {
|
|
8246
8268
|
const { treeConfig, dragConfig } = props;
|
|
8247
8269
|
const rowDragOpts = computeRowDragOpts.value;
|
|
8248
|
-
const { fullAllDataRowIdData } = internalData;
|
|
8270
|
+
const { afterFullData, tableFullData, fullAllDataRowIdData } = internalData;
|
|
8249
8271
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod, dragToChildMethod } = rowDragOpts;
|
|
8250
8272
|
const treeOpts = computeTreeOpts.value;
|
|
8251
8273
|
const { transform, rowField, mapChildrenField, parentField } = treeOpts;
|
|
8252
8274
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
8253
|
-
const { afterFullData, tableFullData } = internalData;
|
|
8254
8275
|
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
|
|
8255
8276
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
8256
8277
|
const errRest = {
|
|
@@ -9349,8 +9370,8 @@ export default defineComponent({
|
|
|
9349
9370
|
},
|
|
9350
9371
|
// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
9351
9372
|
updateScrollYSpace() {
|
|
9352
|
-
const { isAllOverflow, scrollYLoad, expandColumn
|
|
9353
|
-
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData;
|
|
9373
|
+
const { isAllOverflow, scrollYLoad, expandColumn } = reactData;
|
|
9374
|
+
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
|
|
9354
9375
|
const { startIndex } = scrollYStore;
|
|
9355
9376
|
const expandOpts = computeExpandOpts.value;
|
|
9356
9377
|
const rowOpts = computeRowOpts.value;
|
|
@@ -9695,6 +9716,7 @@ export default defineComponent({
|
|
|
9695
9716
|
})
|
|
9696
9717
|
];
|
|
9697
9718
|
if (expandColumn) {
|
|
9719
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
9698
9720
|
tableRowExpandedList.forEach((row) => {
|
|
9699
9721
|
const expandOpts = computeExpandOpts.value;
|
|
9700
9722
|
const { height: expandHeight, padding } = expandOpts;
|
|
@@ -9702,7 +9724,7 @@ export default defineComponent({
|
|
|
9702
9724
|
const treeOpts = computeTreeOpts.value;
|
|
9703
9725
|
const { transform, seqMode } = treeOpts;
|
|
9704
9726
|
const cellStyle = {};
|
|
9705
|
-
const rowid =
|
|
9727
|
+
const rowid = handleGetRowId(row);
|
|
9706
9728
|
const rest = fullAllDataRowIdData[rowid];
|
|
9707
9729
|
let rowLevel = 0;
|
|
9708
9730
|
let seq = -1;
|