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
|
@@ -79,8 +79,6 @@ export default defineComponent({
|
|
|
79
79
|
isAllSelected: false,
|
|
80
80
|
// 复选框属性,有选中且非全选状态
|
|
81
81
|
isIndeterminate: false,
|
|
82
|
-
// 复选框属性,已选中的行集合
|
|
83
|
-
selectCheckboxMaps: {},
|
|
84
82
|
// 当前行
|
|
85
83
|
currentRow: null,
|
|
86
84
|
// 单选框属性,选中列
|
|
@@ -94,16 +92,6 @@ export default defineComponent({
|
|
|
94
92
|
// 树节点列信息
|
|
95
93
|
treeNodeColumn: null,
|
|
96
94
|
hasFixedColumn: false,
|
|
97
|
-
// 已展开的行集合
|
|
98
|
-
rowExpandedMaps: {},
|
|
99
|
-
// 懒加载中的展开行的集合
|
|
100
|
-
rowExpandLazyLoadedMaps: {},
|
|
101
|
-
// 已展开树节点集合
|
|
102
|
-
treeExpandedMaps: {},
|
|
103
|
-
// 懒加载中的树节点的集合
|
|
104
|
-
treeExpandLazyLoadedMaps: {},
|
|
105
|
-
// 树节点不确定状态的集合
|
|
106
|
-
treeIndeterminateMaps: {},
|
|
107
95
|
// 合并单元格的对象集
|
|
108
96
|
mergeList: [],
|
|
109
97
|
// 合并表尾数据的对象集
|
|
@@ -112,8 +100,6 @@ export default defineComponent({
|
|
|
112
100
|
upDataFlag: 0,
|
|
113
101
|
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
114
102
|
reColumnFlag: 0,
|
|
115
|
-
// 已标记的对象集
|
|
116
|
-
pendingRowMaps: {},
|
|
117
103
|
// 初始化标识
|
|
118
104
|
initStore: {
|
|
119
105
|
filter: false,
|
|
@@ -258,6 +244,11 @@ export default defineComponent({
|
|
|
258
244
|
isFooter: false
|
|
259
245
|
},
|
|
260
246
|
|
|
247
|
+
rowExpandedFlag: 1,
|
|
248
|
+
treeExpandedFlag: 1,
|
|
249
|
+
updateCheckboxFlag: 1,
|
|
250
|
+
pendingRowFlag: 1,
|
|
251
|
+
|
|
261
252
|
rowHeightStore: {
|
|
262
253
|
default: 48,
|
|
263
254
|
medium: 44,
|
|
@@ -364,6 +355,19 @@ export default defineComponent({
|
|
|
364
355
|
fullColumnFieldData: {},
|
|
365
356
|
// prevDragRow: null,
|
|
366
357
|
|
|
358
|
+
// 已展开的行集合
|
|
359
|
+
rowExpandedMaps: {},
|
|
360
|
+
// 懒加载中的展开行的集合
|
|
361
|
+
rowExpandLazyLoadedMaps: {},
|
|
362
|
+
// 已展开树节点集合
|
|
363
|
+
treeExpandedMaps: {},
|
|
364
|
+
// 懒加载中的树节点的集合
|
|
365
|
+
treeExpandLazyLoadedMaps: {},
|
|
366
|
+
// 复选框属性,已选中的行集合
|
|
367
|
+
selectCheckboxMaps: {},
|
|
368
|
+
// 已标记的对象集
|
|
369
|
+
pendingRowMaps: {},
|
|
370
|
+
|
|
367
371
|
inited: false,
|
|
368
372
|
tooltipTimeout: null,
|
|
369
373
|
initStatus: false,
|
|
@@ -512,15 +516,27 @@ export default defineComponent({
|
|
|
512
516
|
})
|
|
513
517
|
|
|
514
518
|
const computeCellOpts = computed(() => {
|
|
515
|
-
|
|
519
|
+
const cellOpts = Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
|
|
520
|
+
if (cellOpts.height) {
|
|
521
|
+
cellOpts.height = XEUtils.toNumber(cellOpts.height)
|
|
522
|
+
}
|
|
523
|
+
return cellOpts
|
|
516
524
|
})
|
|
517
525
|
|
|
518
526
|
const computeHeaderCellOpts = computed(() => {
|
|
519
|
-
|
|
527
|
+
const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
|
|
528
|
+
if (headerCellOpts.height) {
|
|
529
|
+
headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height)
|
|
530
|
+
}
|
|
531
|
+
return headerCellOpts
|
|
520
532
|
})
|
|
521
533
|
|
|
522
534
|
const computeFooterCellOpts = computed(() => {
|
|
523
|
-
|
|
535
|
+
const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
|
|
536
|
+
if (footerCellOpts.height) {
|
|
537
|
+
footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height)
|
|
538
|
+
}
|
|
539
|
+
return footerCellOpts
|
|
524
540
|
})
|
|
525
541
|
|
|
526
542
|
const computeRowOpts = computed(() => {
|
|
@@ -706,12 +722,14 @@ export default defineComponent({
|
|
|
706
722
|
})
|
|
707
723
|
|
|
708
724
|
const computeTableRowExpandedList = computed(() => {
|
|
709
|
-
const {
|
|
725
|
+
const { rowExpandedFlag, tableData, expandColumn } = reactData
|
|
726
|
+
const { rowExpandedMaps } = internalData
|
|
727
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
710
728
|
const expandList: any[] = []
|
|
711
|
-
if (expandColumn) {
|
|
729
|
+
if (expandColumn && rowExpandedFlag) {
|
|
712
730
|
const rowKeys: Record<string, boolean> = {}
|
|
713
731
|
tableData.forEach(row => {
|
|
714
|
-
rowKeys[
|
|
732
|
+
rowKeys[handleGetRowId(row)] = true
|
|
715
733
|
})
|
|
716
734
|
XEUtils.each(rowExpandedMaps, (row, rowid) => {
|
|
717
735
|
if (rowKeys[rowid]) {
|
|
@@ -835,6 +853,7 @@ export default defineComponent({
|
|
|
835
853
|
computeCurrentColumnOpts,
|
|
836
854
|
computeScrollXThreshold,
|
|
837
855
|
computeScrollYThreshold,
|
|
856
|
+
computeRowHeightMaps,
|
|
838
857
|
computeDefaultRowHeight,
|
|
839
858
|
computeCellOpts,
|
|
840
859
|
computeHeaderCellOpts,
|
|
@@ -891,6 +910,7 @@ export default defineComponent({
|
|
|
891
910
|
getRefMaps: () => refMaps,
|
|
892
911
|
getComputeMaps: () => computeMaps,
|
|
893
912
|
|
|
913
|
+
xeGrid: $xeGrid,
|
|
894
914
|
xegrid: $xeGrid
|
|
895
915
|
} as unknown as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods
|
|
896
916
|
|
|
@@ -1052,12 +1072,13 @@ export default defineComponent({
|
|
|
1052
1072
|
toVisibleIndex = Math.floor(startTop / defaultRowHeight) - 1
|
|
1053
1073
|
visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1
|
|
1054
1074
|
} else {
|
|
1075
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1055
1076
|
let leftIndex = 0
|
|
1056
1077
|
let rightIndex = afterFullData.length
|
|
1057
1078
|
while (leftIndex < rightIndex) {
|
|
1058
1079
|
const rIndex = Math.floor((leftIndex + rightIndex) / 2)
|
|
1059
1080
|
const row = afterFullData[rIndex]
|
|
1060
|
-
const rowid =
|
|
1081
|
+
const rowid = handleGetRowId(row)
|
|
1061
1082
|
const rowRest = fullAllDataRowIdData[rowid] || {}
|
|
1062
1083
|
if (rowRest.oTop <= startTop) {
|
|
1063
1084
|
leftIndex = rIndex + 1
|
|
@@ -1068,7 +1089,7 @@ export default defineComponent({
|
|
|
1068
1089
|
toVisibleIndex = Math.max(0, leftIndex < afterFullData.length ? leftIndex - 2 : 0)
|
|
1069
1090
|
for (let rIndex = toVisibleIndex, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
1070
1091
|
const row = afterFullData[rIndex]
|
|
1071
|
-
const rowid =
|
|
1092
|
+
const rowid = handleGetRowId(row)
|
|
1072
1093
|
const rowRest = fullAllDataRowIdData[rowid] || {}
|
|
1073
1094
|
visibleSize++
|
|
1074
1095
|
if (rowRest.oTop > endTop || visibleSize >= 100) {
|
|
@@ -1586,9 +1607,10 @@ export default defineComponent({
|
|
|
1586
1607
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
1587
1608
|
const el = refElem.value
|
|
1588
1609
|
if (!isAllOverflow && scrollYLoad && el) {
|
|
1610
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1589
1611
|
el.setAttribute('data-calc-row', 'Y')
|
|
1590
1612
|
tableData.forEach(row => {
|
|
1591
|
-
const rowid =
|
|
1613
|
+
const rowid = handleGetRowId(row)
|
|
1592
1614
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1593
1615
|
if (rowRest) {
|
|
1594
1616
|
const reHeight = calcCellAutoHeight(rowRest, el)
|
|
@@ -1623,9 +1645,10 @@ export default defineComponent({
|
|
|
1623
1645
|
const updateAfterListIndex = () => {
|
|
1624
1646
|
const { treeConfig } = props
|
|
1625
1647
|
const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData
|
|
1648
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1626
1649
|
const fullMaps: Record<string, any> = {}
|
|
1627
1650
|
afterFullData.forEach((row, index) => {
|
|
1628
|
-
const rowid =
|
|
1651
|
+
const rowid = handleGetRowId(row)
|
|
1629
1652
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1630
1653
|
const seq = index + 1
|
|
1631
1654
|
if (rowRest) {
|
|
@@ -1655,8 +1678,9 @@ export default defineComponent({
|
|
|
1655
1678
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
1656
1679
|
const fullMaps: Record<string, any> = {}
|
|
1657
1680
|
if (treeConfig) {
|
|
1681
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1658
1682
|
XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
|
|
1659
|
-
const rowid =
|
|
1683
|
+
const rowid = handleGetRowId(row)
|
|
1660
1684
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1661
1685
|
const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
|
|
1662
1686
|
if (rowRest) {
|
|
@@ -1682,18 +1706,18 @@ export default defineComponent({
|
|
|
1682
1706
|
*/
|
|
1683
1707
|
const handleVirtualTreeToList = () => {
|
|
1684
1708
|
const { treeConfig } = props
|
|
1685
|
-
const { treeExpandedMaps } =
|
|
1686
|
-
const { fullAllDataRowIdData } = internalData
|
|
1709
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData
|
|
1687
1710
|
const treeOpts = computeTreeOpts.value
|
|
1688
1711
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
1689
1712
|
if (treeConfig && treeOpts.transform) {
|
|
1713
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1690
1714
|
const fullData: any[] = []
|
|
1691
1715
|
const expandMaps: {
|
|
1692
1716
|
[key: string]: number
|
|
1693
1717
|
} = {}
|
|
1694
1718
|
XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parentRow) => {
|
|
1695
|
-
const rowid =
|
|
1696
|
-
const parentRowid =
|
|
1719
|
+
const rowid = handleGetRowId(row)
|
|
1720
|
+
const parentRowid = handleGetRowId(parentRow)
|
|
1697
1721
|
if (!parentRow || (expandMaps[parentRowid] && treeExpandedMaps[parentRowid])) {
|
|
1698
1722
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1699
1723
|
if (rowRest) {
|
|
@@ -1722,7 +1746,7 @@ export default defineComponent({
|
|
|
1722
1746
|
const treeOpts = computeTreeOpts.value
|
|
1723
1747
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
1724
1748
|
const { transform, rowField, parentField, mapChildrenField } = treeOpts
|
|
1725
|
-
const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
|
|
1749
|
+
const { isEvery, remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
|
|
1726
1750
|
const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts
|
|
1727
1751
|
let tableData: any[] = []
|
|
1728
1752
|
let tableTree: any[] = []
|
|
@@ -1784,7 +1808,7 @@ export default defineComponent({
|
|
|
1784
1808
|
// 筛选虚拟树
|
|
1785
1809
|
tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
|
|
1786
1810
|
original: true,
|
|
1787
|
-
isEvery
|
|
1811
|
+
isEvery,
|
|
1788
1812
|
children: mapChildrenField,
|
|
1789
1813
|
mapChildren: childrenField
|
|
1790
1814
|
})
|
|
@@ -1798,7 +1822,7 @@ export default defineComponent({
|
|
|
1798
1822
|
// 还原虚拟树
|
|
1799
1823
|
tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
|
|
1800
1824
|
original: true,
|
|
1801
|
-
isEvery
|
|
1825
|
+
isEvery,
|
|
1802
1826
|
children: mapChildrenField,
|
|
1803
1827
|
mapChildren: childrenField
|
|
1804
1828
|
})
|
|
@@ -1847,7 +1871,7 @@ export default defineComponent({
|
|
|
1847
1871
|
// 还原虚拟树
|
|
1848
1872
|
tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
|
|
1849
1873
|
original: true,
|
|
1850
|
-
isEvery
|
|
1874
|
+
isEvery,
|
|
1851
1875
|
children: treeOpts.mapChildrenField,
|
|
1852
1876
|
mapChildren: childrenField
|
|
1853
1877
|
})
|
|
@@ -2372,8 +2396,7 @@ export default defineComponent({
|
|
|
2372
2396
|
|
|
2373
2397
|
const handleCheckedAllCheckboxRow = (checked: boolean, isForce?: boolean) => {
|
|
2374
2398
|
const { treeConfig } = props
|
|
2375
|
-
const { selectCheckboxMaps } =
|
|
2376
|
-
const { afterFullData, checkboxReserveRowMap } = internalData
|
|
2399
|
+
const { afterFullData, checkboxReserveRowMap, selectCheckboxMaps } = internalData
|
|
2377
2400
|
const treeOpts = computeTreeOpts.value
|
|
2378
2401
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2379
2402
|
const checkboxOpts = computeCheckboxOpts.value
|
|
@@ -2391,7 +2414,7 @@ export default defineComponent({
|
|
|
2391
2414
|
const checkValFn = (row: any) => {
|
|
2392
2415
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
2393
2416
|
if (checked) {
|
|
2394
|
-
selectRowMaps[
|
|
2417
|
+
selectRowMaps[handleGetRowId(row)] = row
|
|
2395
2418
|
}
|
|
2396
2419
|
XEUtils.set(row, checkField, checked)
|
|
2397
2420
|
}
|
|
@@ -2483,11 +2506,11 @@ export default defineComponent({
|
|
|
2483
2506
|
afterFullData.forEach((row) => handleCheckboxReserveRow(row, false))
|
|
2484
2507
|
}
|
|
2485
2508
|
}
|
|
2486
|
-
reactData.
|
|
2509
|
+
reactData.updateCheckboxFlag++
|
|
2510
|
+
internalData.selectCheckboxMaps = checkField ? {} : selectRowMaps
|
|
2487
2511
|
|
|
2488
2512
|
reactData.isAllSelected = checked
|
|
2489
2513
|
reactData.isIndeterminate = false
|
|
2490
|
-
reactData.treeIndeterminateMaps = {}
|
|
2491
2514
|
internalData.treeIndeterminateRowMaps = {}
|
|
2492
2515
|
$xeTable.checkSelectionStatus()
|
|
2493
2516
|
return nextTick()
|
|
@@ -2496,8 +2519,8 @@ export default defineComponent({
|
|
|
2496
2519
|
// 还原展开、选中等相关状态
|
|
2497
2520
|
const handleReserveStatus = () => {
|
|
2498
2521
|
const { treeConfig } = props
|
|
2499
|
-
const { expandColumn, currentRow,
|
|
2500
|
-
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData
|
|
2522
|
+
const { expandColumn, currentRow, selectRadioRow } = reactData
|
|
2523
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow, selectCheckboxMaps, treeExpandedMaps, rowExpandedMaps } = internalData
|
|
2501
2524
|
const expandOpts = computeExpandOpts.value
|
|
2502
2525
|
const treeOpts = computeTreeOpts.value
|
|
2503
2526
|
const radioOpts = computeRadioOpts.value
|
|
@@ -2514,7 +2537,8 @@ export default defineComponent({
|
|
|
2514
2537
|
}
|
|
2515
2538
|
}
|
|
2516
2539
|
// 复选框
|
|
2517
|
-
|
|
2540
|
+
internalData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps) // 刷新多选行状态
|
|
2541
|
+
reactData.updateCheckboxFlag++
|
|
2518
2542
|
// 还原保留选中状态
|
|
2519
2543
|
if (checkboxOpts.reserve) {
|
|
2520
2544
|
handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true, true)
|
|
@@ -2523,13 +2547,15 @@ export default defineComponent({
|
|
|
2523
2547
|
reactData.currentRow = null // 刷新当前行状态
|
|
2524
2548
|
}
|
|
2525
2549
|
// 行展开
|
|
2526
|
-
|
|
2550
|
+
internalData.rowExpandedMaps = expandColumn ? getRecoverRowMaps(rowExpandedMaps) : {} // 刷新行展开状态
|
|
2551
|
+
reactData.rowExpandedFlag++
|
|
2527
2552
|
// 还原保留状态
|
|
2528
2553
|
if (expandColumn && expandOpts.reserve) {
|
|
2529
2554
|
$xeTable.setRowExpand(handleReserveRow(internalData.rowExpandedReserveRowMap), true)
|
|
2530
2555
|
}
|
|
2531
2556
|
// 树展开
|
|
2532
|
-
|
|
2557
|
+
internalData.treeExpandedMaps = treeConfig ? getRecoverRowMaps(treeExpandedMaps) : {} // 刷新树展开状态
|
|
2558
|
+
reactData.treeExpandedFlag++
|
|
2533
2559
|
if (treeConfig && treeOpts.reserve) {
|
|
2534
2560
|
$xeTable.setTreeExpand(handleReserveRow(internalData.treeExpandedReserveRowMap), true)
|
|
2535
2561
|
}
|
|
@@ -2546,7 +2572,7 @@ export default defineComponent({
|
|
|
2546
2572
|
const { expandAll, expandRowKeys } = treeOpts
|
|
2547
2573
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2548
2574
|
if (expandAll) {
|
|
2549
|
-
|
|
2575
|
+
$xeTable.setAllTreeExpand(true)
|
|
2550
2576
|
} else if (expandRowKeys) {
|
|
2551
2577
|
const defExpandeds: any[] = []
|
|
2552
2578
|
const rowkey = getRowkey($xeTable)
|
|
@@ -2556,7 +2582,7 @@ export default defineComponent({
|
|
|
2556
2582
|
defExpandeds.push(matchObj.item)
|
|
2557
2583
|
}
|
|
2558
2584
|
})
|
|
2559
|
-
|
|
2585
|
+
$xeTable.setTreeExpand(defExpandeds, true)
|
|
2560
2586
|
}
|
|
2561
2587
|
}
|
|
2562
2588
|
}
|
|
@@ -2568,8 +2594,7 @@ export default defineComponent({
|
|
|
2568
2594
|
const { checkStrictly } = checkboxOpts
|
|
2569
2595
|
return new Promise<void>(resolve => {
|
|
2570
2596
|
if (loadMethod) {
|
|
2571
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2572
|
-
const { fullAllDataRowIdData } = internalData
|
|
2597
|
+
const { fullAllDataRowIdData, treeExpandLazyLoadedMaps } = internalData
|
|
2573
2598
|
const rowid = getRowid($xeTable, row)
|
|
2574
2599
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
2575
2600
|
treeExpandLazyLoadedMaps[rowid] = row
|
|
@@ -2586,18 +2611,19 @@ export default defineComponent({
|
|
|
2586
2611
|
childRecords = []
|
|
2587
2612
|
}
|
|
2588
2613
|
if (childRecords) {
|
|
2589
|
-
return
|
|
2590
|
-
const { treeExpandedMaps } =
|
|
2614
|
+
return $xeTable.loadTreeChildren(row, childRecords).then(childRows => {
|
|
2615
|
+
const { treeExpandedMaps } = internalData
|
|
2591
2616
|
if (childRows.length && !treeExpandedMaps[rowid]) {
|
|
2592
2617
|
treeExpandedMaps[rowid] = row
|
|
2593
2618
|
}
|
|
2619
|
+
reactData.treeExpandedFlag++
|
|
2594
2620
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
2595
|
-
if (!checkStrictly &&
|
|
2621
|
+
if (!checkStrictly && $xeTable.isCheckedByCheckboxRow(row)) {
|
|
2596
2622
|
handleCheckedCheckboxRow(childRows, true)
|
|
2597
2623
|
}
|
|
2598
2624
|
return nextTick().then(() => {
|
|
2599
2625
|
if (transform) {
|
|
2600
|
-
|
|
2626
|
+
$xeTable.handleTableData()
|
|
2601
2627
|
updateAfterDataIndex()
|
|
2602
2628
|
return nextTick()
|
|
2603
2629
|
}
|
|
@@ -2605,7 +2631,7 @@ export default defineComponent({
|
|
|
2605
2631
|
})
|
|
2606
2632
|
}
|
|
2607
2633
|
}).catch(() => {
|
|
2608
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2634
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
2609
2635
|
if (rowRest) {
|
|
2610
2636
|
rowRest.treeLoaded = false
|
|
2611
2637
|
}
|
|
@@ -2613,7 +2639,8 @@ export default defineComponent({
|
|
|
2613
2639
|
delete treeExpandLazyLoadedMaps[rowid]
|
|
2614
2640
|
}
|
|
2615
2641
|
}).finally(() => {
|
|
2616
|
-
|
|
2642
|
+
reactData.treeExpandedFlag++
|
|
2643
|
+
nextTick().then(() => $xeTable.recalculate()).then(() => resolve())
|
|
2617
2644
|
})
|
|
2618
2645
|
} else {
|
|
2619
2646
|
resolve()
|
|
@@ -2639,29 +2666,27 @@ export default defineComponent({
|
|
|
2639
2666
|
const expandOpts = computeExpandOpts.value
|
|
2640
2667
|
const { loadMethod } = expandOpts
|
|
2641
2668
|
if (loadMethod) {
|
|
2642
|
-
const { fullAllDataRowIdData } = internalData
|
|
2643
|
-
const rExpandLazyLoadedMaps = { ...reactData.rowExpandLazyLoadedMaps }
|
|
2669
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData
|
|
2644
2670
|
const rowid = getRowid($xeTable, row)
|
|
2645
2671
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
const rowTempExpandedMaps = { ...reactData.rowExpandedMaps }
|
|
2672
|
+
rowExpandLazyLoadedMaps[rowid] = row
|
|
2673
|
+
loadMethod({ $table: $xeTable, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) }).then(() => {
|
|
2674
|
+
const { rowExpandedMaps } = internalData
|
|
2650
2675
|
if (rowRest) {
|
|
2651
2676
|
rowRest.expandLoaded = true
|
|
2652
2677
|
}
|
|
2653
|
-
|
|
2654
|
-
reactData.
|
|
2678
|
+
rowExpandedMaps[rowid] = row
|
|
2679
|
+
reactData.rowExpandedFlag++
|
|
2655
2680
|
}).catch(() => {
|
|
2656
2681
|
if (rowRest) {
|
|
2657
2682
|
rowRest.expandLoaded = false
|
|
2658
2683
|
}
|
|
2659
2684
|
}).finally(() => {
|
|
2660
|
-
const
|
|
2661
|
-
if (
|
|
2662
|
-
delete
|
|
2685
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
2686
|
+
if (rowExpandLazyLoadedMaps[rowid]) {
|
|
2687
|
+
delete rowExpandLazyLoadedMaps[rowid]
|
|
2663
2688
|
}
|
|
2664
|
-
reactData.
|
|
2689
|
+
reactData.rowExpandedFlag++
|
|
2665
2690
|
nextTick()
|
|
2666
2691
|
.then(() => $xeTable.recalculate())
|
|
2667
2692
|
.then(() => $xeTable.updateCellAreas())
|
|
@@ -2765,9 +2790,6 @@ export default defineComponent({
|
|
|
2765
2790
|
calcCellWidth()
|
|
2766
2791
|
autoCellWidth()
|
|
2767
2792
|
updateStyle()
|
|
2768
|
-
if (reFull) {
|
|
2769
|
-
updateRowOffsetTop()
|
|
2770
|
-
}
|
|
2771
2793
|
updateRowExpandStyle()
|
|
2772
2794
|
return computeScrollLoad().then(() => {
|
|
2773
2795
|
if (reFull === true) {
|
|
@@ -3210,9 +3232,8 @@ export default defineComponent({
|
|
|
3210
3232
|
* @returns
|
|
3211
3233
|
*/
|
|
3212
3234
|
const handleBaseTreeExpand = (rows: any[], expanded: boolean) => {
|
|
3213
|
-
const {
|
|
3214
|
-
const
|
|
3215
|
-
const { fullAllDataRowIdData, tableFullData } = internalData
|
|
3235
|
+
const { treeNodeColumn } = reactData
|
|
3236
|
+
const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData
|
|
3216
3237
|
const treeOpts = computeTreeOpts.value
|
|
3217
3238
|
const { reserve, lazy, accordion, toggleMethod } = treeOpts
|
|
3218
3239
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -3220,6 +3241,7 @@ export default defineComponent({
|
|
|
3220
3241
|
const result: any[] = []
|
|
3221
3242
|
const columnIndex = tableMethods.getColumnIndex(treeNodeColumn)
|
|
3222
3243
|
const $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn)
|
|
3244
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3223
3245
|
let validRows = toggleMethod ? rows.filter((row: any) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows
|
|
3224
3246
|
if (accordion) {
|
|
3225
3247
|
validRows = validRows.length ? [validRows[validRows.length - 1]] : []
|
|
@@ -3227,17 +3249,17 @@ export default defineComponent({
|
|
|
3227
3249
|
const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField })
|
|
3228
3250
|
if (matchObj) {
|
|
3229
3251
|
matchObj.items.forEach(item => {
|
|
3230
|
-
const rowid =
|
|
3231
|
-
if (
|
|
3232
|
-
delete
|
|
3252
|
+
const rowid = handleGetRowId(item)
|
|
3253
|
+
if (treeExpandedMaps[rowid]) {
|
|
3254
|
+
delete treeExpandedMaps[rowid]
|
|
3233
3255
|
}
|
|
3234
3256
|
})
|
|
3235
3257
|
}
|
|
3236
3258
|
}
|
|
3237
3259
|
if (expanded) {
|
|
3238
3260
|
validRows.forEach((row: any) => {
|
|
3239
|
-
const rowid =
|
|
3240
|
-
if (!
|
|
3261
|
+
const rowid = handleGetRowId(row)
|
|
3262
|
+
if (!treeExpandedMaps[rowid]) {
|
|
3241
3263
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3242
3264
|
if (rowRest) {
|
|
3243
3265
|
const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid]
|
|
@@ -3246,7 +3268,7 @@ export default defineComponent({
|
|
|
3246
3268
|
result.push(handleAsyncTreeExpandChilds(row))
|
|
3247
3269
|
} else {
|
|
3248
3270
|
if (row[childrenField] && row[childrenField].length) {
|
|
3249
|
-
|
|
3271
|
+
treeExpandedMaps[rowid] = row
|
|
3250
3272
|
}
|
|
3251
3273
|
}
|
|
3252
3274
|
}
|
|
@@ -3254,16 +3276,16 @@ export default defineComponent({
|
|
|
3254
3276
|
})
|
|
3255
3277
|
} else {
|
|
3256
3278
|
validRows.forEach(item => {
|
|
3257
|
-
const rowid =
|
|
3258
|
-
if (
|
|
3259
|
-
delete
|
|
3279
|
+
const rowid = handleGetRowId(item)
|
|
3280
|
+
if (treeExpandedMaps[rowid]) {
|
|
3281
|
+
delete treeExpandedMaps[rowid]
|
|
3260
3282
|
}
|
|
3261
3283
|
})
|
|
3262
3284
|
}
|
|
3263
3285
|
if (reserve) {
|
|
3264
3286
|
validRows.forEach((row: any) => handleTreeExpandReserve(row, expanded))
|
|
3265
3287
|
}
|
|
3266
|
-
reactData.
|
|
3288
|
+
reactData.treeExpandedFlag++
|
|
3267
3289
|
return Promise.all(result).then(() => {
|
|
3268
3290
|
return tableMethods.recalculate()
|
|
3269
3291
|
})
|
|
@@ -3329,10 +3351,11 @@ export default defineComponent({
|
|
|
3329
3351
|
}
|
|
3330
3352
|
|
|
3331
3353
|
const createGetRowCacheProp = (prop: 'seq' | 'index' | '_index' | '$index') => {
|
|
3354
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3332
3355
|
return function (row: any) {
|
|
3333
3356
|
const { fullAllDataRowIdData } = internalData
|
|
3334
3357
|
if (row) {
|
|
3335
|
-
const rowid =
|
|
3358
|
+
const rowid = handleGetRowId(row)
|
|
3336
3359
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3337
3360
|
if (rowRest) {
|
|
3338
3361
|
return rowRest[prop]
|
|
@@ -3490,7 +3513,7 @@ export default defineComponent({
|
|
|
3490
3513
|
|
|
3491
3514
|
const handleUpdateColResize = (evnt: MouseEvent, params: any) => {
|
|
3492
3515
|
$xeTable.analyColumnWidth()
|
|
3493
|
-
$xeTable.recalculate(
|
|
3516
|
+
$xeTable.recalculate().then(() => {
|
|
3494
3517
|
$xeTable.saveCustomStore('update:width')
|
|
3495
3518
|
$xeTable.updateCellAreas()
|
|
3496
3519
|
$xeTable.dispatchEvent('column-resizable-change', params, evnt)
|
|
@@ -3502,7 +3525,7 @@ export default defineComponent({
|
|
|
3502
3525
|
|
|
3503
3526
|
const handleUpdateRowResize = (evnt: MouseEvent, params: any) => {
|
|
3504
3527
|
reactData.resizeHeightFlag++
|
|
3505
|
-
$xeTable.recalculate(
|
|
3528
|
+
$xeTable.recalculate().then(() => {
|
|
3506
3529
|
$xeTable.updateCellAreas()
|
|
3507
3530
|
$xeTable.dispatchEvent('row-resizable-change', params, evnt)
|
|
3508
3531
|
setTimeout(() => $xeTable.recalculate(true), 300)
|
|
@@ -3522,16 +3545,17 @@ export default defineComponent({
|
|
|
3522
3545
|
}
|
|
3523
3546
|
|
|
3524
3547
|
const updateRowOffsetTop = () => {
|
|
3525
|
-
const { expandColumn
|
|
3526
|
-
const { afterFullData, fullAllDataRowIdData } = internalData
|
|
3548
|
+
const { expandColumn } = reactData
|
|
3549
|
+
const { afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
|
|
3527
3550
|
const expandOpts = computeExpandOpts.value
|
|
3528
3551
|
const rowOpts = computeRowOpts.value
|
|
3529
3552
|
const cellOpts = computeCellOpts.value
|
|
3530
3553
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
3554
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3531
3555
|
let offsetTop = 0
|
|
3532
3556
|
for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
3533
3557
|
const row = afterFullData[rIndex]
|
|
3534
|
-
const rowid =
|
|
3558
|
+
const rowid = handleGetRowId(row)
|
|
3535
3559
|
const rowRest = fullAllDataRowIdData[rowid] || {}
|
|
3536
3560
|
rowRest.oTop = offsetTop
|
|
3537
3561
|
offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight
|
|
@@ -3916,6 +3940,7 @@ export default defineComponent({
|
|
|
3916
3940
|
const removeTempMaps = { ...editStore.removeMaps }
|
|
3917
3941
|
const treeOpts = computeTreeOpts.value
|
|
3918
3942
|
const { transform } = treeOpts
|
|
3943
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3919
3944
|
if (!keepSource) {
|
|
3920
3945
|
if (process.env.VUE_APP_VXE_ENV === 'development') {
|
|
3921
3946
|
errLog('vxe.error.reqProp', ['keep-source'])
|
|
@@ -3933,7 +3958,7 @@ export default defineComponent({
|
|
|
3933
3958
|
let reDelFlag = false
|
|
3934
3959
|
if (targetRows.length) {
|
|
3935
3960
|
targetRows.forEach((item: any) => {
|
|
3936
|
-
const rowid =
|
|
3961
|
+
const rowid = handleGetRowId(item)
|
|
3937
3962
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3938
3963
|
if (rowRest) {
|
|
3939
3964
|
const row = rowRest.row
|
|
@@ -4288,8 +4313,7 @@ export default defineComponent({
|
|
|
4288
4313
|
*/
|
|
4289
4314
|
getCheckboxRecords (isFull) {
|
|
4290
4315
|
const { treeConfig } = props
|
|
4291
|
-
const { selectCheckboxMaps } =
|
|
4292
|
-
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData
|
|
4316
|
+
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData
|
|
4293
4317
|
const treeOpts = computeTreeOpts.value
|
|
4294
4318
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4295
4319
|
const { transform, mapChildrenField } = treeOpts
|
|
@@ -4617,12 +4641,13 @@ export default defineComponent({
|
|
|
4617
4641
|
},
|
|
4618
4642
|
getRowHeightConf (isFull) {
|
|
4619
4643
|
const { fullAllDataRowIdData, afterFullData } = internalData
|
|
4644
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4620
4645
|
const rowOpts = computeRowOpts.value
|
|
4621
4646
|
const cellOpts = computeCellOpts.value
|
|
4622
4647
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
4623
4648
|
const rest: Record<string, number> = {}
|
|
4624
4649
|
afterFullData.forEach(row => {
|
|
4625
|
-
const rowid =
|
|
4650
|
+
const rowid = handleGetRowId(row)
|
|
4626
4651
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
4627
4652
|
if (rowRest) {
|
|
4628
4653
|
const resizeHeight = rowRest.resizeHeight
|
|
@@ -4646,8 +4671,9 @@ export default defineComponent({
|
|
|
4646
4671
|
rHeight = Math.floor(rHeight * bodyHeight)
|
|
4647
4672
|
}
|
|
4648
4673
|
if (rHeight) {
|
|
4674
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4649
4675
|
rows.forEach(row => {
|
|
4650
|
-
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row :
|
|
4676
|
+
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row)
|
|
4651
4677
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
4652
4678
|
if (rowRest) {
|
|
4653
4679
|
rowRest.resizeHeight = rHeight
|
|
@@ -4799,12 +4825,11 @@ export default defineComponent({
|
|
|
4799
4825
|
*/
|
|
4800
4826
|
getCheckboxIndeterminateRecords (isFull) {
|
|
4801
4827
|
const { treeConfig } = props
|
|
4802
|
-
const { fullDataRowIdData } = internalData
|
|
4803
|
-
const { treeIndeterminateMaps } = reactData
|
|
4828
|
+
const { fullDataRowIdData, treeIndeterminateRowMaps } = internalData
|
|
4804
4829
|
if (treeConfig) {
|
|
4805
4830
|
const fullRest: any[] = []
|
|
4806
4831
|
const defRest: any[] = []
|
|
4807
|
-
XEUtils.each(
|
|
4832
|
+
XEUtils.each(treeIndeterminateRowMaps, (item, rowid) => {
|
|
4808
4833
|
if (item) {
|
|
4809
4834
|
fullRest.push(item)
|
|
4810
4835
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -4845,17 +4870,18 @@ export default defineComponent({
|
|
|
4845
4870
|
return handleCheckedCheckboxRow(rows, checked, true)
|
|
4846
4871
|
},
|
|
4847
4872
|
isCheckedByCheckboxRow (row) {
|
|
4848
|
-
const {
|
|
4873
|
+
const { updateCheckboxFlag } = reactData
|
|
4874
|
+
const { selectCheckboxMaps } = internalData
|
|
4849
4875
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4850
4876
|
const { checkField } = checkboxOpts
|
|
4851
4877
|
if (checkField) {
|
|
4852
4878
|
return XEUtils.get(row, checkField)
|
|
4853
4879
|
}
|
|
4854
|
-
return !!selectCheckboxMaps[getRowid($xeTable, row)]
|
|
4880
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[getRowid($xeTable, row)]
|
|
4855
4881
|
},
|
|
4856
4882
|
isCheckedByCheckboxRowKey (rowid: any) {
|
|
4857
|
-
const {
|
|
4858
|
-
const { fullAllDataRowIdData } = internalData
|
|
4883
|
+
const { updateCheckboxFlag } = reactData
|
|
4884
|
+
const { fullAllDataRowIdData, selectCheckboxMaps } = internalData
|
|
4859
4885
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4860
4886
|
const { checkField } = checkboxOpts
|
|
4861
4887
|
if (checkField) {
|
|
@@ -4865,21 +4891,21 @@ export default defineComponent({
|
|
|
4865
4891
|
}
|
|
4866
4892
|
return false
|
|
4867
4893
|
}
|
|
4868
|
-
return !!selectCheckboxMaps[rowid]
|
|
4894
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[rowid]
|
|
4869
4895
|
},
|
|
4870
4896
|
isIndeterminateByCheckboxRow (row) {
|
|
4871
|
-
const {
|
|
4872
|
-
return !!
|
|
4897
|
+
const { treeIndeterminateRowMaps } = internalData
|
|
4898
|
+
return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row)
|
|
4873
4899
|
},
|
|
4874
4900
|
isIndeterminateByCheckboxRowKey (rowid: any) {
|
|
4875
|
-
const {
|
|
4876
|
-
return !!
|
|
4901
|
+
const { treeIndeterminateRowMaps } = internalData
|
|
4902
|
+
return !!treeIndeterminateRowMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid)
|
|
4877
4903
|
},
|
|
4878
4904
|
/**
|
|
4879
4905
|
* 多选,切换某一行的选中状态
|
|
4880
4906
|
*/
|
|
4881
4907
|
toggleCheckboxRow (row) {
|
|
4882
|
-
const { selectCheckboxMaps } =
|
|
4908
|
+
const { selectCheckboxMaps } = internalData
|
|
4883
4909
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4884
4910
|
const { checkField } = checkboxOpts
|
|
4885
4911
|
const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)]
|
|
@@ -4940,14 +4966,15 @@ export default defineComponent({
|
|
|
4940
4966
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
4941
4967
|
const reserveSelection: any[] = []
|
|
4942
4968
|
if (checkboxOpts.reserve) {
|
|
4969
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4943
4970
|
const afterFullIdMaps: { [key: string]: number } = {}
|
|
4944
4971
|
if (treeConfig) {
|
|
4945
4972
|
XEUtils.eachTree(afterFullData, row => {
|
|
4946
|
-
afterFullIdMaps[
|
|
4973
|
+
afterFullIdMaps[handleGetRowId(row)] = 1
|
|
4947
4974
|
}, { children: childrenField })
|
|
4948
4975
|
} else {
|
|
4949
4976
|
afterFullData.forEach(row => {
|
|
4950
|
-
afterFullIdMaps[
|
|
4977
|
+
afterFullIdMaps[handleGetRowId(row)] = 1
|
|
4951
4978
|
})
|
|
4952
4979
|
}
|
|
4953
4980
|
XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
|
|
@@ -5008,8 +5035,9 @@ export default defineComponent({
|
|
|
5008
5035
|
}
|
|
5009
5036
|
reactData.isAllSelected = false
|
|
5010
5037
|
reactData.isIndeterminate = false
|
|
5011
|
-
|
|
5012
|
-
|
|
5038
|
+
internalData.selectCheckboxMaps = {}
|
|
5039
|
+
internalData.treeIndeterminateRowMaps = {}
|
|
5040
|
+
reactData.updateCheckboxFlag++
|
|
5013
5041
|
return nextTick()
|
|
5014
5042
|
},
|
|
5015
5043
|
/**
|
|
@@ -5139,57 +5167,58 @@ export default defineComponent({
|
|
|
5139
5167
|
return nextTick()
|
|
5140
5168
|
},
|
|
5141
5169
|
setPendingRow (rows: any | any[], status: boolean) {
|
|
5142
|
-
const
|
|
5170
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5171
|
+
const { pendingRowMaps } = internalData
|
|
5143
5172
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5144
5173
|
rows = [rows]
|
|
5145
5174
|
}
|
|
5146
5175
|
if (status) {
|
|
5147
5176
|
rows.forEach((row: any) => {
|
|
5148
|
-
const rowid =
|
|
5149
|
-
if (rowid && !
|
|
5150
|
-
|
|
5177
|
+
const rowid = handleGetRowId(row)
|
|
5178
|
+
if (rowid && !pendingRowMaps[rowid]) {
|
|
5179
|
+
pendingRowMaps[rowid] = row
|
|
5151
5180
|
}
|
|
5152
5181
|
})
|
|
5153
5182
|
} else {
|
|
5154
5183
|
rows.forEach((row: any) => {
|
|
5155
|
-
const rowid =
|
|
5156
|
-
if (rowid &&
|
|
5157
|
-
delete
|
|
5184
|
+
const rowid = handleGetRowId(row)
|
|
5185
|
+
if (rowid && pendingRowMaps[rowid]) {
|
|
5186
|
+
delete pendingRowMaps[rowid]
|
|
5158
5187
|
}
|
|
5159
5188
|
})
|
|
5160
5189
|
}
|
|
5161
|
-
reactData.
|
|
5190
|
+
reactData.pendingRowFlag++
|
|
5162
5191
|
return nextTick()
|
|
5163
5192
|
},
|
|
5164
5193
|
togglePendingRow (rows: any | any[]) {
|
|
5165
|
-
const
|
|
5194
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5195
|
+
const { pendingRowMaps } = internalData
|
|
5166
5196
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5167
5197
|
rows = [rows]
|
|
5168
5198
|
}
|
|
5169
5199
|
rows.forEach((row: any) => {
|
|
5170
|
-
const rowid =
|
|
5200
|
+
const rowid = handleGetRowId(row)
|
|
5171
5201
|
if (rowid) {
|
|
5172
|
-
if (
|
|
5173
|
-
delete
|
|
5202
|
+
if (pendingRowMaps[rowid]) {
|
|
5203
|
+
delete pendingRowMaps[rowid]
|
|
5174
5204
|
} else {
|
|
5175
|
-
|
|
5205
|
+
pendingRowMaps[rowid] = row
|
|
5176
5206
|
}
|
|
5177
5207
|
}
|
|
5178
5208
|
})
|
|
5179
|
-
reactData.
|
|
5209
|
+
reactData.pendingRowFlag++
|
|
5180
5210
|
return nextTick()
|
|
5181
5211
|
},
|
|
5182
5212
|
hasPendingByRow (row) {
|
|
5183
5213
|
return tableMethods.isPendingByRow(row)
|
|
5184
5214
|
},
|
|
5185
5215
|
isPendingByRow (row) {
|
|
5186
|
-
const { pendingRowMaps } =
|
|
5216
|
+
const { pendingRowMaps } = internalData
|
|
5187
5217
|
const rowid = getRowid($xeTable, row)
|
|
5188
5218
|
return !!pendingRowMaps[rowid]
|
|
5189
5219
|
},
|
|
5190
5220
|
getPendingRecords () {
|
|
5191
|
-
const { pendingRowMaps } =
|
|
5192
|
-
const { fullAllDataRowIdData } = internalData
|
|
5221
|
+
const { fullAllDataRowIdData, pendingRowMaps } = internalData
|
|
5193
5222
|
const insertRecords: any[] = []
|
|
5194
5223
|
XEUtils.each(pendingRowMaps, (row, rowid) => {
|
|
5195
5224
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -5199,7 +5228,8 @@ export default defineComponent({
|
|
|
5199
5228
|
return insertRecords
|
|
5200
5229
|
},
|
|
5201
5230
|
clearPendingRow () {
|
|
5202
|
-
|
|
5231
|
+
internalData.pendingRowMaps = {}
|
|
5232
|
+
reactData.pendingRowFlag++
|
|
5203
5233
|
return nextTick()
|
|
5204
5234
|
},
|
|
5205
5235
|
sort (sortConfs: any, sortOrder?: VxeTablePropTypes.SortOrder) {
|
|
@@ -5381,17 +5411,16 @@ export default defineComponent({
|
|
|
5381
5411
|
return rowRest && !!rowRest.expandLoaded
|
|
5382
5412
|
},
|
|
5383
5413
|
clearRowExpandLoaded (row) {
|
|
5384
|
-
const
|
|
5385
|
-
const { fullAllDataRowIdData } = internalData
|
|
5414
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData
|
|
5386
5415
|
const expandOpts = computeExpandOpts.value
|
|
5387
5416
|
const { lazy } = expandOpts
|
|
5388
5417
|
const rowid = getRowid($xeTable, row)
|
|
5389
5418
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5390
5419
|
if (lazy && rowRest) {
|
|
5391
5420
|
rowRest.expandLoaded = false
|
|
5392
|
-
delete
|
|
5421
|
+
delete rowExpandLazyLoadedMaps[rowid]
|
|
5393
5422
|
}
|
|
5394
|
-
reactData.
|
|
5423
|
+
reactData.rowExpandedFlag++
|
|
5395
5424
|
return nextTick()
|
|
5396
5425
|
},
|
|
5397
5426
|
/**
|
|
@@ -5399,12 +5428,12 @@ export default defineComponent({
|
|
|
5399
5428
|
* @param {Row} row 行对象
|
|
5400
5429
|
*/
|
|
5401
5430
|
reloadRowExpand (row) {
|
|
5402
|
-
const { rowExpandLazyLoadedMaps } =
|
|
5431
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
5403
5432
|
const expandOpts = computeExpandOpts.value
|
|
5404
5433
|
const { lazy } = expandOpts
|
|
5405
5434
|
const rowid = getRowid($xeTable, row)
|
|
5406
5435
|
if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
|
|
5407
|
-
|
|
5436
|
+
$xeTable.clearRowExpandLoaded(row)
|
|
5408
5437
|
.then(() => handleAsyncRowExpand(row))
|
|
5409
5438
|
}
|
|
5410
5439
|
return nextTick()
|
|
@@ -5414,13 +5443,13 @@ export default defineComponent({
|
|
|
5414
5443
|
warnLog('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand'])
|
|
5415
5444
|
}
|
|
5416
5445
|
// 即将废弃
|
|
5417
|
-
return
|
|
5446
|
+
return $xeTable.reloadRowExpand(row)
|
|
5418
5447
|
},
|
|
5419
5448
|
/**
|
|
5420
5449
|
* 切换展开行
|
|
5421
5450
|
*/
|
|
5422
5451
|
toggleRowExpand (row) {
|
|
5423
|
-
return
|
|
5452
|
+
return $xeTable.setRowExpand(row, !$xeTable.isRowExpandByRow(row))
|
|
5424
5453
|
},
|
|
5425
5454
|
/**
|
|
5426
5455
|
* 设置所有行的展开与否
|
|
@@ -5448,9 +5477,9 @@ export default defineComponent({
|
|
|
5448
5477
|
* @param {Boolean} expanded 是否展开
|
|
5449
5478
|
*/
|
|
5450
5479
|
setRowExpand (rows, expanded) {
|
|
5451
|
-
const {
|
|
5452
|
-
|
|
5453
|
-
|
|
5480
|
+
const { expandColumn } = reactData
|
|
5481
|
+
let { fullAllDataRowIdData, rowExpandedMaps, rowExpandLazyLoadedMaps } = internalData
|
|
5482
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5454
5483
|
const expandOpts = computeExpandOpts.value
|
|
5455
5484
|
const { reserve, lazy, accordion, toggleMethod } = expandOpts
|
|
5456
5485
|
const lazyRests: any[] = []
|
|
@@ -5462,28 +5491,29 @@ export default defineComponent({
|
|
|
5462
5491
|
}
|
|
5463
5492
|
if (accordion) {
|
|
5464
5493
|
// 只能同时展开一个
|
|
5465
|
-
|
|
5494
|
+
rowExpandedMaps = {}
|
|
5495
|
+
internalData.rowExpandedMaps = rowExpandedMaps
|
|
5466
5496
|
rows = rows.slice(rows.length - 1, rows.length)
|
|
5467
5497
|
}
|
|
5468
5498
|
const validRows: any[] = toggleMethod ? rows.filter((row: any) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) })) : rows
|
|
5469
5499
|
if (expanded) {
|
|
5470
5500
|
validRows.forEach((row: any) => {
|
|
5471
|
-
const rowid =
|
|
5472
|
-
if (!
|
|
5501
|
+
const rowid = handleGetRowId(row)
|
|
5502
|
+
if (!rowExpandedMaps[rowid]) {
|
|
5473
5503
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5474
5504
|
const isLoad = lazy && !rowRest.expandLoaded && !rowExpandLazyLoadedMaps[rowid]
|
|
5475
5505
|
if (isLoad) {
|
|
5476
5506
|
lazyRests.push(handleAsyncRowExpand(row))
|
|
5477
5507
|
} else {
|
|
5478
|
-
|
|
5508
|
+
rowExpandedMaps[rowid] = row
|
|
5479
5509
|
}
|
|
5480
5510
|
}
|
|
5481
5511
|
})
|
|
5482
5512
|
} else {
|
|
5483
5513
|
validRows.forEach(item => {
|
|
5484
|
-
const rowid =
|
|
5485
|
-
if (
|
|
5486
|
-
delete
|
|
5514
|
+
const rowid = handleGetRowId(item)
|
|
5515
|
+
if (rowExpandedMaps[rowid]) {
|
|
5516
|
+
delete rowExpandedMaps[rowid]
|
|
5487
5517
|
}
|
|
5488
5518
|
})
|
|
5489
5519
|
}
|
|
@@ -5491,7 +5521,7 @@ export default defineComponent({
|
|
|
5491
5521
|
validRows.forEach((row) => handleRowExpandReserve(row, expanded))
|
|
5492
5522
|
}
|
|
5493
5523
|
}
|
|
5494
|
-
reactData.
|
|
5524
|
+
reactData.rowExpandedFlag++
|
|
5495
5525
|
return Promise.all(lazyRests)
|
|
5496
5526
|
.then(() => nextTick())
|
|
5497
5527
|
.then(() => $xeTable.recalculate(true))
|
|
@@ -5507,9 +5537,10 @@ export default defineComponent({
|
|
|
5507
5537
|
* @param {Row} row 行对象
|
|
5508
5538
|
*/
|
|
5509
5539
|
isRowExpandByRow (row) {
|
|
5510
|
-
const {
|
|
5540
|
+
const { rowExpandedFlag } = reactData
|
|
5541
|
+
const { rowExpandedMaps } = internalData
|
|
5511
5542
|
const rowid = getRowid($xeTable, row)
|
|
5512
|
-
return !!rowExpandedMaps[rowid]
|
|
5543
|
+
return !!rowExpandedFlag && !!rowExpandedMaps[rowid]
|
|
5513
5544
|
},
|
|
5514
5545
|
isExpandByRow (row) {
|
|
5515
5546
|
// 已废弃
|
|
@@ -5526,7 +5557,8 @@ export default defineComponent({
|
|
|
5526
5557
|
const expandOpts = computeExpandOpts.value
|
|
5527
5558
|
const { reserve } = expandOpts
|
|
5528
5559
|
const expList = $xeTable.getRowExpandRecords()
|
|
5529
|
-
|
|
5560
|
+
internalData.rowExpandedMaps = {}
|
|
5561
|
+
reactData.rowExpandedFlag++
|
|
5530
5562
|
if (reserve) {
|
|
5531
5563
|
tableFullData.forEach((row) => handleRowExpandReserve(row, false))
|
|
5532
5564
|
}
|
|
@@ -5547,7 +5579,7 @@ export default defineComponent({
|
|
|
5547
5579
|
},
|
|
5548
5580
|
getRowExpandRecords () {
|
|
5549
5581
|
const rest: any[] = []
|
|
5550
|
-
XEUtils.each(
|
|
5582
|
+
XEUtils.each(internalData.rowExpandedMaps, item => {
|
|
5551
5583
|
if (item) {
|
|
5552
5584
|
rest.push(item)
|
|
5553
5585
|
}
|
|
@@ -5556,7 +5588,7 @@ export default defineComponent({
|
|
|
5556
5588
|
},
|
|
5557
5589
|
getTreeExpandRecords () {
|
|
5558
5590
|
const rest: any[] = []
|
|
5559
|
-
XEUtils.each(
|
|
5591
|
+
XEUtils.each(internalData.treeExpandedMaps, item => {
|
|
5560
5592
|
if (item) {
|
|
5561
5593
|
rest.push(item)
|
|
5562
5594
|
}
|
|
@@ -5573,12 +5605,10 @@ export default defineComponent({
|
|
|
5573
5605
|
return rowRest && !!rowRest.treeLoaded
|
|
5574
5606
|
},
|
|
5575
5607
|
clearTreeExpandLoaded (rows: any) {
|
|
5576
|
-
const { fullAllDataRowIdData } = internalData
|
|
5608
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData
|
|
5577
5609
|
const treeOpts = computeTreeOpts.value
|
|
5578
5610
|
const { transform } = treeOpts
|
|
5579
|
-
let tExpandedMaps: Record<string, any> = {}
|
|
5580
5611
|
if (rows) {
|
|
5581
|
-
tExpandedMaps = { ...reactData.treeExpandedMaps }
|
|
5582
5612
|
if (!XEUtils.isArray(rows)) {
|
|
5583
5613
|
rows = [rows]
|
|
5584
5614
|
}
|
|
@@ -5587,8 +5617,8 @@ export default defineComponent({
|
|
|
5587
5617
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5588
5618
|
if (rowRest) {
|
|
5589
5619
|
rowRest.treeLoaded = false
|
|
5590
|
-
if (
|
|
5591
|
-
delete
|
|
5620
|
+
if (treeExpandedMaps[rowid]) {
|
|
5621
|
+
delete treeExpandedMaps[rowid]
|
|
5592
5622
|
}
|
|
5593
5623
|
}
|
|
5594
5624
|
})
|
|
@@ -5597,7 +5627,8 @@ export default defineComponent({
|
|
|
5597
5627
|
rowRest.treeLoaded = false
|
|
5598
5628
|
})
|
|
5599
5629
|
}
|
|
5600
|
-
|
|
5630
|
+
internalData.treeExpandedMaps = {}
|
|
5631
|
+
reactData.treeExpandedFlag++
|
|
5601
5632
|
if (transform) {
|
|
5602
5633
|
handleVirtualTreeToList()
|
|
5603
5634
|
return $xeTable.handleTableData()
|
|
@@ -5609,7 +5640,7 @@ export default defineComponent({
|
|
|
5609
5640
|
* @param {Row} row 行对象
|
|
5610
5641
|
*/
|
|
5611
5642
|
reloadTreeExpand (row) {
|
|
5612
|
-
const { treeExpandLazyLoadedMaps } =
|
|
5643
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
5613
5644
|
const treeOpts = computeTreeOpts.value
|
|
5614
5645
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
5615
5646
|
const { transform, lazy } = treeOpts
|
|
@@ -5694,8 +5725,9 @@ export default defineComponent({
|
|
|
5694
5725
|
* @param {Row} row 行对象
|
|
5695
5726
|
*/
|
|
5696
5727
|
isTreeExpandByRow (row) {
|
|
5697
|
-
const {
|
|
5698
|
-
|
|
5728
|
+
const { treeExpandedFlag } = reactData
|
|
5729
|
+
const { treeExpandedMaps } = internalData
|
|
5730
|
+
return !!treeExpandedFlag && !!treeExpandedMaps[getRowid($xeTable, row)]
|
|
5699
5731
|
},
|
|
5700
5732
|
/**
|
|
5701
5733
|
* 手动清空树形节点的展开状态,数据会恢复成未展开的状态
|
|
@@ -5705,19 +5737,20 @@ export default defineComponent({
|
|
|
5705
5737
|
const treeOpts = computeTreeOpts.value
|
|
5706
5738
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
5707
5739
|
const { transform, reserve } = treeOpts
|
|
5708
|
-
const expList =
|
|
5709
|
-
|
|
5740
|
+
const expList = $xeTable.getTreeExpandRecords()
|
|
5741
|
+
internalData.treeExpandedMaps = {}
|
|
5742
|
+
reactData.treeExpandedFlag++
|
|
5710
5743
|
if (reserve) {
|
|
5711
5744
|
XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), { children: childrenField })
|
|
5712
5745
|
}
|
|
5713
|
-
return
|
|
5746
|
+
return $xeTable.handleTableData().then(() => {
|
|
5714
5747
|
if (transform) {
|
|
5715
5748
|
handleVirtualTreeToList()
|
|
5716
|
-
return
|
|
5749
|
+
return $xeTable.handleTableData()
|
|
5717
5750
|
}
|
|
5718
5751
|
}).then(() => {
|
|
5719
5752
|
if (expList.length) {
|
|
5720
|
-
return
|
|
5753
|
+
return $xeTable.recalculate()
|
|
5721
5754
|
}
|
|
5722
5755
|
})
|
|
5723
5756
|
},
|
|
@@ -6991,15 +7024,13 @@ export default defineComponent({
|
|
|
6991
7024
|
*/
|
|
6992
7025
|
cacheRowMap () {
|
|
6993
7026
|
const { treeConfig } = props
|
|
6994
|
-
const { treeExpandedMaps } =
|
|
6995
|
-
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData
|
|
7027
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData
|
|
6996
7028
|
const treeOpts = computeTreeOpts.value
|
|
6997
7029
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
6998
7030
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
6999
7031
|
const { lazy } = treeOpts
|
|
7000
7032
|
const fullAllDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = { ...fullAllDataRowIdData } // 存在已删除数据
|
|
7001
7033
|
const fullDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = {}
|
|
7002
|
-
const treeTempExpandedMaps = { ...treeExpandedMaps }
|
|
7003
7034
|
|
|
7004
7035
|
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
|
|
7005
7036
|
const handleRowCache = (row: any, index: number, items: any, currIndex: number, parentRow: any, rowid: string, level: number, seq: string | number) => {
|
|
@@ -7027,13 +7058,12 @@ export default defineComponent({
|
|
|
7027
7058
|
XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
7028
7059
|
const rowid = handleUpdateRowId(row)
|
|
7029
7060
|
if (treeConfig && lazy) {
|
|
7030
|
-
const treeExpRest = treeTempExpandedMaps[rowid]
|
|
7031
7061
|
if (row[hasChildField] && row[childrenField] === undefined) {
|
|
7032
7062
|
row[childrenField] = null
|
|
7033
7063
|
}
|
|
7034
|
-
if (
|
|
7064
|
+
if (treeExpandedMaps[rowid]) {
|
|
7035
7065
|
if (!row[childrenField] || !row[childrenField].length) {
|
|
7036
|
-
delete
|
|
7066
|
+
delete treeExpandedMaps[rowid]
|
|
7037
7067
|
}
|
|
7038
7068
|
}
|
|
7039
7069
|
}
|
|
@@ -7047,7 +7077,7 @@ export default defineComponent({
|
|
|
7047
7077
|
|
|
7048
7078
|
internalData.fullDataRowIdData = fullDataRowIdMaps
|
|
7049
7079
|
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps
|
|
7050
|
-
reactData.
|
|
7080
|
+
reactData.treeExpandedFlag++
|
|
7051
7081
|
},
|
|
7052
7082
|
cacheSourceMap (fullData) {
|
|
7053
7083
|
const { treeConfig } = props
|
|
@@ -7539,9 +7569,7 @@ export default defineComponent({
|
|
|
7539
7569
|
},
|
|
7540
7570
|
updateCheckboxStatus () {
|
|
7541
7571
|
const { treeConfig } = props
|
|
7542
|
-
const { selectCheckboxMaps,
|
|
7543
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps)
|
|
7544
|
-
const halfRowMaps = Object.assign({}, treeIndeterminateMaps)
|
|
7572
|
+
const { selectCheckboxMaps, treeIndeterminateRowMaps } = internalData
|
|
7545
7573
|
const treeOpts = computeTreeOpts.value
|
|
7546
7574
|
const { transform, mapChildrenField } = treeOpts
|
|
7547
7575
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -7575,28 +7603,28 @@ export default defineComponent({
|
|
|
7575
7603
|
checkMethod
|
|
7576
7604
|
? (item) => {
|
|
7577
7605
|
const childRowid = handleGetRowId(item)
|
|
7578
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7606
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid]
|
|
7579
7607
|
if (checkMethod({ row: item })) {
|
|
7580
7608
|
if (isSelect) {
|
|
7581
7609
|
sLen++
|
|
7582
|
-
} else if (
|
|
7610
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7583
7611
|
hLen++
|
|
7584
7612
|
}
|
|
7585
7613
|
vLen++
|
|
7586
7614
|
} else {
|
|
7587
7615
|
if (isSelect) {
|
|
7588
7616
|
sLen++
|
|
7589
|
-
} else if (
|
|
7617
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7590
7618
|
hLen++
|
|
7591
7619
|
}
|
|
7592
7620
|
}
|
|
7593
7621
|
}
|
|
7594
7622
|
: item => {
|
|
7595
7623
|
const childRowid = handleGetRowId(item)
|
|
7596
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7624
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid]
|
|
7597
7625
|
if (isSelect) {
|
|
7598
7626
|
sLen++
|
|
7599
|
-
} else if (
|
|
7627
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7600
7628
|
hLen++
|
|
7601
7629
|
}
|
|
7602
7630
|
vLen++
|
|
@@ -7609,36 +7637,34 @@ export default defineComponent({
|
|
|
7609
7637
|
}
|
|
7610
7638
|
if (isSelected) {
|
|
7611
7639
|
if (!checkField) {
|
|
7612
|
-
|
|
7640
|
+
selectCheckboxMaps[rowid] = row
|
|
7613
7641
|
}
|
|
7614
|
-
if (
|
|
7615
|
-
delete
|
|
7642
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7643
|
+
delete treeIndeterminateRowMaps[rowid]
|
|
7616
7644
|
}
|
|
7617
7645
|
} else {
|
|
7618
7646
|
if (!checkField) {
|
|
7619
|
-
if (
|
|
7620
|
-
delete
|
|
7647
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7648
|
+
delete selectCheckboxMaps[rowid]
|
|
7621
7649
|
}
|
|
7622
7650
|
}
|
|
7623
7651
|
if (halfSelect) {
|
|
7624
|
-
|
|
7652
|
+
treeIndeterminateRowMaps[rowid] = row
|
|
7625
7653
|
} else {
|
|
7626
|
-
if (
|
|
7627
|
-
delete
|
|
7654
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7655
|
+
delete treeIndeterminateRowMaps[rowid]
|
|
7628
7656
|
}
|
|
7629
7657
|
}
|
|
7630
7658
|
}
|
|
7631
7659
|
})
|
|
7632
7660
|
}
|
|
7633
|
-
reactData.
|
|
7634
|
-
reactData.treeIndeterminateMaps = halfRowMaps
|
|
7661
|
+
reactData.updateCheckboxFlag++
|
|
7635
7662
|
},
|
|
7636
7663
|
updateAllCheckboxStatus () {
|
|
7637
7664
|
const { treeConfig } = props
|
|
7638
|
-
const { selectCheckboxMaps,
|
|
7665
|
+
const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData
|
|
7639
7666
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7640
7667
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts
|
|
7641
|
-
const { afterFullData, afterTreeFullData, checkboxReserveRowMap } = internalData
|
|
7642
7668
|
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7643
7669
|
|
|
7644
7670
|
let sLen = 0 // 已选
|
|
@@ -7653,14 +7679,14 @@ export default defineComponent({
|
|
|
7653
7679
|
if (checkMethod({ row })) {
|
|
7654
7680
|
if (selected) {
|
|
7655
7681
|
sLen++
|
|
7656
|
-
} else if (
|
|
7682
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7657
7683
|
hLen++
|
|
7658
7684
|
}
|
|
7659
7685
|
vLen++
|
|
7660
7686
|
} else {
|
|
7661
7687
|
if (selected) {
|
|
7662
7688
|
sLen++
|
|
7663
|
-
} else if (
|
|
7689
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7664
7690
|
hLen++
|
|
7665
7691
|
}
|
|
7666
7692
|
}
|
|
@@ -7670,7 +7696,7 @@ export default defineComponent({
|
|
|
7670
7696
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid]
|
|
7671
7697
|
if (selected) {
|
|
7672
7698
|
sLen++
|
|
7673
|
-
} else if (
|
|
7699
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7674
7700
|
hLen++
|
|
7675
7701
|
}
|
|
7676
7702
|
vLen++
|
|
@@ -7697,8 +7723,7 @@ export default defineComponent({
|
|
|
7697
7723
|
*/
|
|
7698
7724
|
handleBatchSelectRows (rows, checked, isForce) {
|
|
7699
7725
|
const { treeConfig } = props
|
|
7700
|
-
const { selectCheckboxMaps } =
|
|
7701
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps)
|
|
7726
|
+
const { selectCheckboxMaps } = internalData
|
|
7702
7727
|
const treeOpts = computeTreeOpts.value
|
|
7703
7728
|
const { transform, mapChildrenField } = treeOpts
|
|
7704
7729
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -7720,18 +7745,17 @@ export default defineComponent({
|
|
|
7720
7745
|
handleCheckboxReserveRow(row, checked)
|
|
7721
7746
|
}
|
|
7722
7747
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
7723
|
-
reactData.
|
|
7748
|
+
reactData.updateCheckboxFlag++
|
|
7724
7749
|
return
|
|
7725
|
-
} else {
|
|
7726
|
-
// 列表
|
|
7727
|
-
rows.forEach(row => {
|
|
7728
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7729
|
-
XEUtils.set(row, checkField, checked)
|
|
7730
|
-
handleCheckboxReserveRow(row, checked)
|
|
7731
|
-
}
|
|
7732
|
-
})
|
|
7733
7750
|
}
|
|
7734
|
-
|
|
7751
|
+
// 列表
|
|
7752
|
+
rows.forEach(row => {
|
|
7753
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7754
|
+
XEUtils.set(row, checkField, checked)
|
|
7755
|
+
handleCheckboxReserveRow(row, checked)
|
|
7756
|
+
}
|
|
7757
|
+
})
|
|
7758
|
+
reactData.updateCheckboxFlag++
|
|
7735
7759
|
return
|
|
7736
7760
|
}
|
|
7737
7761
|
|
|
@@ -7742,16 +7766,16 @@ export default defineComponent({
|
|
|
7742
7766
|
const rowid = handleGetRowId(row)
|
|
7743
7767
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7744
7768
|
if (checked) {
|
|
7745
|
-
|
|
7769
|
+
selectCheckboxMaps[rowid] = row
|
|
7746
7770
|
} else {
|
|
7747
|
-
if (
|
|
7748
|
-
delete
|
|
7771
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7772
|
+
delete selectCheckboxMaps[rowid]
|
|
7749
7773
|
}
|
|
7750
7774
|
}
|
|
7751
7775
|
handleCheckboxReserveRow(row, checked)
|
|
7752
7776
|
}
|
|
7753
7777
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
7754
|
-
reactData.
|
|
7778
|
+
reactData.updateCheckboxFlag++
|
|
7755
7779
|
return
|
|
7756
7780
|
}
|
|
7757
7781
|
|
|
@@ -7760,18 +7784,18 @@ export default defineComponent({
|
|
|
7760
7784
|
const rowid = handleGetRowId(row)
|
|
7761
7785
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7762
7786
|
if (checked) {
|
|
7763
|
-
if (!
|
|
7764
|
-
|
|
7787
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
7788
|
+
selectCheckboxMaps[rowid] = row
|
|
7765
7789
|
}
|
|
7766
7790
|
} else {
|
|
7767
|
-
if (
|
|
7768
|
-
delete
|
|
7791
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7792
|
+
delete selectCheckboxMaps[rowid]
|
|
7769
7793
|
}
|
|
7770
7794
|
}
|
|
7771
7795
|
handleCheckboxReserveRow(row, checked)
|
|
7796
|
+
reactData.updateCheckboxFlag++
|
|
7772
7797
|
}
|
|
7773
7798
|
})
|
|
7774
|
-
reactData.selectCheckboxMaps = selectRowMaps
|
|
7775
7799
|
},
|
|
7776
7800
|
/**
|
|
7777
7801
|
* 即将移除
|
|
@@ -8037,7 +8061,7 @@ export default defineComponent({
|
|
|
8037
8061
|
dispatchEvent('cell-dblclick', params, evnt)
|
|
8038
8062
|
},
|
|
8039
8063
|
handleToggleCheckRowEvent (evnt, params) {
|
|
8040
|
-
const { selectCheckboxMaps } =
|
|
8064
|
+
const { selectCheckboxMaps } = internalData
|
|
8041
8065
|
const checkboxOpts = computeCheckboxOpts.value
|
|
8042
8066
|
const { checkField, trigger } = checkboxOpts
|
|
8043
8067
|
const { row } = params
|
|
@@ -8051,10 +8075,10 @@ export default defineComponent({
|
|
|
8051
8075
|
checked = !selectCheckboxMaps[getRowid($xeTable, row)]
|
|
8052
8076
|
}
|
|
8053
8077
|
if (evnt) {
|
|
8054
|
-
|
|
8078
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked)
|
|
8055
8079
|
} else {
|
|
8056
|
-
|
|
8057
|
-
|
|
8080
|
+
$xeTable.handleBatchSelectRows([row], checked)
|
|
8081
|
+
$xeTable.checkSelectionStatus()
|
|
8058
8082
|
}
|
|
8059
8083
|
},
|
|
8060
8084
|
triggerCheckRowEvent (evnt: MouseEvent, params, checked) {
|
|
@@ -8160,7 +8184,8 @@ export default defineComponent({
|
|
|
8160
8184
|
* 展开行事件
|
|
8161
8185
|
*/
|
|
8162
8186
|
triggerRowExpandEvent (evnt, params) {
|
|
8163
|
-
const {
|
|
8187
|
+
const { expandColumn: column } = reactData
|
|
8188
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
8164
8189
|
const expandOpts = computeExpandOpts.value
|
|
8165
8190
|
const { row } = params
|
|
8166
8191
|
const { lazy, trigger } = expandOpts
|
|
@@ -8170,18 +8195,18 @@ export default defineComponent({
|
|
|
8170
8195
|
evnt.stopPropagation()
|
|
8171
8196
|
const rowid = getRowid($xeTable, row)
|
|
8172
8197
|
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
|
|
8173
|
-
const expanded =
|
|
8174
|
-
const columnIndex =
|
|
8175
|
-
const $columnIndex =
|
|
8176
|
-
|
|
8198
|
+
const expanded = !$xeTable.isRowExpandByRow(row)
|
|
8199
|
+
const columnIndex = $xeTable.getColumnIndex(column)
|
|
8200
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column)
|
|
8201
|
+
$xeTable.setRowExpand(row, expanded)
|
|
8177
8202
|
dispatchEvent('toggle-row-expand', {
|
|
8178
8203
|
expanded,
|
|
8179
8204
|
column,
|
|
8180
8205
|
columnIndex,
|
|
8181
8206
|
$columnIndex,
|
|
8182
8207
|
row,
|
|
8183
|
-
rowIndex:
|
|
8184
|
-
$rowIndex:
|
|
8208
|
+
rowIndex: $xeTable.getRowIndex(row),
|
|
8209
|
+
$rowIndex: $xeTable.getVMRowIndex(row)
|
|
8185
8210
|
}, evnt)
|
|
8186
8211
|
}
|
|
8187
8212
|
},
|
|
@@ -8189,7 +8214,7 @@ export default defineComponent({
|
|
|
8189
8214
|
* 展开树节点事件
|
|
8190
8215
|
*/
|
|
8191
8216
|
triggerTreeExpandEvent (evnt, params) {
|
|
8192
|
-
const { treeExpandLazyLoadedMaps } =
|
|
8217
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
8193
8218
|
const treeOpts = computeTreeOpts.value
|
|
8194
8219
|
const { row, column } = params
|
|
8195
8220
|
const { lazy, trigger } = treeOpts
|
|
@@ -8199,10 +8224,10 @@ export default defineComponent({
|
|
|
8199
8224
|
evnt.stopPropagation()
|
|
8200
8225
|
const rowid = getRowid($xeTable, row)
|
|
8201
8226
|
if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
|
|
8202
|
-
const expanded =
|
|
8203
|
-
const columnIndex =
|
|
8204
|
-
const $columnIndex =
|
|
8205
|
-
|
|
8227
|
+
const expanded = !$xeTable.isTreeExpandByRow(row)
|
|
8228
|
+
const columnIndex = $xeTable.getColumnIndex(column)
|
|
8229
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column)
|
|
8230
|
+
$xeTable.setTreeExpand(row, expanded)
|
|
8206
8231
|
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt)
|
|
8207
8232
|
}
|
|
8208
8233
|
},
|
|
@@ -8346,12 +8371,11 @@ export default defineComponent({
|
|
|
8346
8371
|
handleRowDragSwapEvent (evnt, isSyncRow, dragRow, prevDragRow, prevDragPos, prevDragToChild) {
|
|
8347
8372
|
const { treeConfig, dragConfig } = props
|
|
8348
8373
|
const rowDragOpts = computeRowDragOpts.value
|
|
8349
|
-
const { fullAllDataRowIdData } = internalData
|
|
8374
|
+
const { afterFullData, tableFullData, fullAllDataRowIdData } = internalData
|
|
8350
8375
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod, dragToChildMethod } = rowDragOpts
|
|
8351
8376
|
const treeOpts = computeTreeOpts.value
|
|
8352
8377
|
const { transform, rowField, mapChildrenField, parentField } = treeOpts
|
|
8353
8378
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
8354
|
-
const { afterFullData, tableFullData } = internalData
|
|
8355
8379
|
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null)
|
|
8356
8380
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
|
|
8357
8381
|
const errRest = {
|
|
@@ -9479,8 +9503,8 @@ export default defineComponent({
|
|
|
9479
9503
|
},
|
|
9480
9504
|
// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
9481
9505
|
updateScrollYSpace () {
|
|
9482
|
-
const { isAllOverflow, scrollYLoad, expandColumn
|
|
9483
|
-
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData
|
|
9506
|
+
const { isAllOverflow, scrollYLoad, expandColumn } = reactData
|
|
9507
|
+
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
|
|
9484
9508
|
const { startIndex } = scrollYStore
|
|
9485
9509
|
const expandOpts = computeExpandOpts.value
|
|
9486
9510
|
const rowOpts = computeRowOpts.value
|
|
@@ -9829,6 +9853,7 @@ export default defineComponent({
|
|
|
9829
9853
|
]
|
|
9830
9854
|
|
|
9831
9855
|
if (expandColumn) {
|
|
9856
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
9832
9857
|
tableRowExpandedList.forEach((row) => {
|
|
9833
9858
|
const expandOpts = computeExpandOpts.value
|
|
9834
9859
|
const { height: expandHeight, padding } = expandOpts
|
|
@@ -9836,7 +9861,7 @@ export default defineComponent({
|
|
|
9836
9861
|
const treeOpts = computeTreeOpts.value
|
|
9837
9862
|
const { transform, seqMode } = treeOpts
|
|
9838
9863
|
const cellStyle: Record<string, string> = {}
|
|
9839
|
-
const rowid =
|
|
9864
|
+
const rowid = handleGetRowId(row)
|
|
9840
9865
|
const rest = fullAllDataRowIdData[rowid]
|
|
9841
9866
|
let rowLevel = 0
|
|
9842
9867
|
let seq: string | number = -1
|