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