vxe-table 4.12.0-beta.8 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/grid/src/grid.js +58 -44
- package/es/locale/lang/ar-EG.js +7 -1
- package/es/locale/lang/de-DE.js +7 -1
- package/es/locale/lang/en-US.js +7 -1
- package/es/locale/lang/es-ES.js +7 -1
- package/es/locale/lang/fr-FR.js +7 -1
- package/es/locale/lang/hu-HU.js +7 -1
- package/es/locale/lang/hy-AM.js +7 -1
- package/es/locale/lang/id-ID.js +7 -1
- package/es/locale/lang/it-IT.js +7 -1
- package/es/locale/lang/ja-JP.js +7 -1
- package/es/locale/lang/ko-KR.js +7 -1
- package/es/locale/lang/nb-NO.js +7 -1
- package/es/locale/lang/pt-BR.js +7 -1
- package/es/locale/lang/ru-RU.js +7 -1
- package/es/locale/lang/th-TH.js +7 -1
- package/es/locale/lang/ug-CN.js +7 -1
- package/es/locale/lang/uk-UA.js +7 -1
- package/es/locale/lang/vi-VN.js +7 -1
- package/es/locale/lang/zh-CHT.js +7 -1
- package/es/locale/lang/zh-CN.js +7 -1
- package/es/style.css +1 -1
- package/es/table/module/custom/hook.js +1 -1
- package/es/table/module/custom/panel.js +4 -2
- package/es/table/module/edit/hook.js +11 -12
- package/es/table/module/export/export-panel.js +3 -2
- package/es/table/module/export/import-panel.js +3 -2
- package/es/table/module/filter/panel.js +12 -2
- package/es/table/module/keyboard/hook.js +105 -30
- package/es/table/module/menu/hook.js +2 -1
- package/es/table/module/validator/hook.js +4 -3
- package/es/table/render/index.js +3 -3
- package/es/table/src/body.js +40 -21
- package/es/table/src/cell.js +43 -24
- package/es/table/src/columnInfo.js +2 -2
- package/es/table/src/footer.js +12 -7
- package/es/table/src/header.js +12 -7
- package/es/table/src/props.js +4 -0
- package/es/table/src/table.js +444 -423
- package/es/table/src/util.js +34 -6
- package/es/ui/index.js +2 -1
- package/es/ui/src/log.js +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/grid/src/grid.js +55 -48
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +515 -302
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +7 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +7 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +7 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +7 -1
- package/lib/locale/lang/es-ES.js +7 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +7 -1
- package/lib/locale/lang/fr-FR.js +7 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +7 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +7 -1
- package/lib/locale/lang/hy-AM.js +7 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +7 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +7 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +7 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +7 -1
- package/lib/locale/lang/ko-KR.js +7 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +7 -1
- package/lib/locale/lang/nb-NO.js +7 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +7 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +7 -1
- package/lib/locale/lang/ru-RU.js +7 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +7 -1
- package/lib/locale/lang/th-TH.js +7 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +7 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +7 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +7 -1
- package/lib/locale/lang/vi-VN.js +7 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +7 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CN.js +7 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +7 -1
- package/lib/style.css +1 -1
- package/lib/table/module/custom/hook.js +1 -1
- package/lib/table/module/custom/hook.min.js +1 -1
- package/lib/table/module/custom/panel.js +4 -2
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/edit/hook.js +13 -13
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/export/export-panel.js +3 -2
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/import-panel.js +3 -2
- package/lib/table/module/export/import-panel.min.js +1 -1
- package/lib/table/module/filter/panel.js +8 -2
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/keyboard/hook.js +113 -31
- package/lib/table/module/keyboard/hook.min.js +1 -1
- package/lib/table/module/menu/hook.js +2 -1
- package/lib/table/module/menu/hook.min.js +1 -1
- package/lib/table/module/validator/hook.js +5 -4
- package/lib/table/module/validator/hook.min.js +1 -1
- package/lib/table/render/index.js +4 -3
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/body.js +48 -20
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +49 -25
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/columnInfo.js +2 -4
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +12 -5
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +12 -5
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/props.js +4 -0
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +534 -459
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +36 -6
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +2 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +62 -50
- package/packages/locale/lang/ar-EG.ts +7 -1
- package/packages/locale/lang/de-DE.ts +7 -1
- package/packages/locale/lang/en-US.ts +7 -1
- package/packages/locale/lang/es-ES.ts +7 -1
- package/packages/locale/lang/fr-FR.ts +7 -1
- package/packages/locale/lang/hu-HU.ts +7 -1
- package/packages/locale/lang/hy-AM.ts +7 -1
- package/packages/locale/lang/id-ID.ts +7 -1
- package/packages/locale/lang/it-IT.ts +7 -1
- package/packages/locale/lang/ja-JP.ts +7 -1
- package/packages/locale/lang/ko-KR.ts +7 -1
- package/packages/locale/lang/nb-NO.ts +7 -1
- package/packages/locale/lang/pt-BR.ts +7 -1
- package/packages/locale/lang/ru-RU.ts +7 -1
- package/packages/locale/lang/th-TH.ts +7 -1
- package/packages/locale/lang/ug-CN.ts +7 -1
- package/packages/locale/lang/uk-UA.ts +7 -1
- package/packages/locale/lang/vi-VN.ts +7 -1
- package/packages/locale/lang/zh-CHT.ts +7 -1
- package/packages/locale/lang/zh-CN.ts +7 -1
- package/packages/table/module/custom/hook.ts +1 -1
- package/packages/table/module/custom/panel.ts +6 -2
- package/packages/table/module/edit/hook.ts +12 -12
- package/packages/table/module/export/export-panel.ts +4 -2
- package/packages/table/module/export/import-panel.ts +4 -2
- package/packages/table/module/filter/panel.ts +12 -2
- package/packages/table/module/keyboard/hook.ts +106 -32
- package/packages/table/module/menu/hook.ts +3 -1
- package/packages/table/module/validator/hook.ts +5 -3
- package/packages/table/render/index.ts +3 -4
- package/packages/table/src/body.ts +41 -21
- package/packages/table/src/cell.ts +43 -24
- package/packages/table/src/columnInfo.ts +3 -2
- package/packages/table/src/footer.ts +13 -7
- package/packages/table/src/header.ts +13 -7
- package/packages/table/src/props.ts +4 -0
- package/packages/table/src/table.ts +451 -421
- package/packages/table/src/util.ts +39 -6
- package/packages/ui/index.ts +1 -0
- /package/es/{iconfont.1741333670965.ttf → iconfont.1742955995631.ttf} +0 -0
- /package/es/{iconfont.1741333670965.woff → iconfont.1742955995631.woff} +0 -0
- /package/es/{iconfont.1741333670965.woff2 → iconfont.1742955995631.woff2} +0 -0
- /package/lib/{iconfont.1741333670965.ttf → iconfont.1742955995631.ttf} +0 -0
- /package/lib/{iconfont.1741333670965.woff → iconfont.1742955995631.woff} +0 -0
- /package/lib/{iconfont.1741333670965.woff2 → iconfont.1742955995631.woff2} +0 -0
|
@@ -9,7 +9,7 @@ import TableHeaderComponent from './header'
|
|
|
9
9
|
import TableFooterComponent from './footer'
|
|
10
10
|
import tableProps from './props'
|
|
11
11
|
import tableEmits from './emits'
|
|
12
|
-
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth,
|
|
12
|
+
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId } from './util'
|
|
13
13
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
14
14
|
import { warnLog, errLog } from '../../ui/src/log'
|
|
15
15
|
import TableCustomPanelComponent from '../module/custom/panel'
|
|
@@ -23,6 +23,7 @@ import type { VxeGridConstructor, VxeGridPrivateMethods, VxeTableConstructor, Ta
|
|
|
23
23
|
|
|
24
24
|
const { getConfig, getIcon, getI18n, renderer, formats, createEvent, globalResize, interceptor, hooks, globalEvents, GLOBAL_EVENT_KEYS, useFns, renderEmptyElement } = VxeUI
|
|
25
25
|
|
|
26
|
+
const supportMaxRow = 5e6
|
|
26
27
|
const customStorageKey = 'VXE_CUSTOM_STORE'
|
|
27
28
|
const maxYHeight = 5e6
|
|
28
29
|
const maxXWidth = 5e6
|
|
@@ -78,8 +79,6 @@ export default defineComponent({
|
|
|
78
79
|
isAllSelected: false,
|
|
79
80
|
// 复选框属性,有选中且非全选状态
|
|
80
81
|
isIndeterminate: false,
|
|
81
|
-
// 复选框属性,已选中的行集合
|
|
82
|
-
selectCheckboxMaps: {},
|
|
83
82
|
// 当前行
|
|
84
83
|
currentRow: null,
|
|
85
84
|
// 单选框属性,选中列
|
|
@@ -93,16 +92,6 @@ export default defineComponent({
|
|
|
93
92
|
// 树节点列信息
|
|
94
93
|
treeNodeColumn: null,
|
|
95
94
|
hasFixedColumn: false,
|
|
96
|
-
// 已展开的行集合
|
|
97
|
-
rowExpandedMaps: {},
|
|
98
|
-
// 懒加载中的展开行的集合
|
|
99
|
-
rowExpandLazyLoadedMaps: {},
|
|
100
|
-
// 已展开树节点集合
|
|
101
|
-
treeExpandedMaps: {},
|
|
102
|
-
// 懒加载中的树节点的集合
|
|
103
|
-
treeExpandLazyLoadedMaps: {},
|
|
104
|
-
// 树节点不确定状态的集合
|
|
105
|
-
treeIndeterminateMaps: {},
|
|
106
95
|
// 合并单元格的对象集
|
|
107
96
|
mergeList: [],
|
|
108
97
|
// 合并表尾数据的对象集
|
|
@@ -111,8 +100,6 @@ export default defineComponent({
|
|
|
111
100
|
upDataFlag: 0,
|
|
112
101
|
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
113
102
|
reColumnFlag: 0,
|
|
114
|
-
// 已标记的对象集
|
|
115
|
-
pendingRowMaps: {},
|
|
116
103
|
// 初始化标识
|
|
117
104
|
initStore: {
|
|
118
105
|
filter: false,
|
|
@@ -257,6 +244,11 @@ export default defineComponent({
|
|
|
257
244
|
isFooter: false
|
|
258
245
|
},
|
|
259
246
|
|
|
247
|
+
rowExpandedFlag: 1,
|
|
248
|
+
treeExpandedFlag: 1,
|
|
249
|
+
updateCheckboxFlag: 1,
|
|
250
|
+
pendingRowFlag: 1,
|
|
251
|
+
|
|
260
252
|
rowHeightStore: {
|
|
261
253
|
default: 48,
|
|
262
254
|
medium: 44,
|
|
@@ -275,6 +267,7 @@ export default defineComponent({
|
|
|
275
267
|
rowExpandHeightFlag: 1,
|
|
276
268
|
calcCellHeightFlag: 1,
|
|
277
269
|
resizeHeightFlag: 1,
|
|
270
|
+
resizeWidthFlag: 1,
|
|
278
271
|
|
|
279
272
|
isCustomStatus: false,
|
|
280
273
|
|
|
@@ -363,6 +356,19 @@ export default defineComponent({
|
|
|
363
356
|
fullColumnFieldData: {},
|
|
364
357
|
// prevDragRow: null,
|
|
365
358
|
|
|
359
|
+
// 已展开的行集合
|
|
360
|
+
rowExpandedMaps: {},
|
|
361
|
+
// 懒加载中的展开行的集合
|
|
362
|
+
rowExpandLazyLoadedMaps: {},
|
|
363
|
+
// 已展开树节点集合
|
|
364
|
+
treeExpandedMaps: {},
|
|
365
|
+
// 懒加载中的树节点的集合
|
|
366
|
+
treeExpandLazyLoadedMaps: {},
|
|
367
|
+
// 复选框属性,已选中的行集合
|
|
368
|
+
selectCheckboxMaps: {},
|
|
369
|
+
// 已标记的对象集
|
|
370
|
+
pendingRowMaps: {},
|
|
371
|
+
|
|
366
372
|
inited: false,
|
|
367
373
|
tooltipTimeout: null,
|
|
368
374
|
initStatus: false,
|
|
@@ -506,20 +512,40 @@ export default defineComponent({
|
|
|
506
512
|
return Object.assign({}, getConfig().table.columnConfig, props.columnConfig) as VxeTablePropTypes.ColumnOpts
|
|
507
513
|
})
|
|
508
514
|
|
|
515
|
+
const computeCurrentColumnOpts = computed(() => {
|
|
516
|
+
return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig)
|
|
517
|
+
})
|
|
518
|
+
|
|
509
519
|
const computeCellOpts = computed(() => {
|
|
510
|
-
|
|
520
|
+
const cellOpts = Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
|
|
521
|
+
if (cellOpts.height) {
|
|
522
|
+
cellOpts.height = XEUtils.toNumber(cellOpts.height)
|
|
523
|
+
}
|
|
524
|
+
return cellOpts
|
|
511
525
|
})
|
|
512
526
|
|
|
513
527
|
const computeHeaderCellOpts = computed(() => {
|
|
514
|
-
|
|
528
|
+
const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
|
|
529
|
+
if (headerCellOpts.height) {
|
|
530
|
+
headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height)
|
|
531
|
+
}
|
|
532
|
+
return headerCellOpts
|
|
515
533
|
})
|
|
516
534
|
|
|
517
535
|
const computeFooterCellOpts = computed(() => {
|
|
518
|
-
|
|
536
|
+
const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
|
|
537
|
+
if (footerCellOpts.height) {
|
|
538
|
+
footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height)
|
|
539
|
+
}
|
|
540
|
+
return footerCellOpts
|
|
519
541
|
})
|
|
520
542
|
|
|
521
543
|
const computeRowOpts = computed(() => {
|
|
522
|
-
return Object.assign({}, getConfig().table.rowConfig, props.rowConfig)
|
|
544
|
+
return Object.assign({}, getConfig().table.rowConfig, props.rowConfig)
|
|
545
|
+
})
|
|
546
|
+
|
|
547
|
+
const computeCurrentRowOpts = computed(() => {
|
|
548
|
+
return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig)
|
|
523
549
|
})
|
|
524
550
|
|
|
525
551
|
const computeRowDragOpts = computed(() => {
|
|
@@ -697,12 +723,14 @@ export default defineComponent({
|
|
|
697
723
|
})
|
|
698
724
|
|
|
699
725
|
const computeTableRowExpandedList = computed(() => {
|
|
700
|
-
const {
|
|
726
|
+
const { rowExpandedFlag, tableData, expandColumn } = reactData
|
|
727
|
+
const { rowExpandedMaps } = internalData
|
|
728
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
701
729
|
const expandList: any[] = []
|
|
702
|
-
if (expandColumn) {
|
|
730
|
+
if (expandColumn && rowExpandedFlag) {
|
|
703
731
|
const rowKeys: Record<string, boolean> = {}
|
|
704
732
|
tableData.forEach(row => {
|
|
705
|
-
rowKeys[
|
|
733
|
+
rowKeys[handleGetRowId(row)] = true
|
|
706
734
|
})
|
|
707
735
|
XEUtils.each(rowExpandedMaps, (row, rowid) => {
|
|
708
736
|
if (rowKeys[rowid]) {
|
|
@@ -823,13 +851,16 @@ export default defineComponent({
|
|
|
823
851
|
computeScrollbarXToTop,
|
|
824
852
|
computeScrollbarYToLeft,
|
|
825
853
|
computeColumnOpts,
|
|
854
|
+
computeCurrentColumnOpts,
|
|
826
855
|
computeScrollXThreshold,
|
|
827
856
|
computeScrollYThreshold,
|
|
857
|
+
computeRowHeightMaps,
|
|
828
858
|
computeDefaultRowHeight,
|
|
829
859
|
computeCellOpts,
|
|
830
860
|
computeHeaderCellOpts,
|
|
831
861
|
computeFooterCellOpts,
|
|
832
862
|
computeRowOpts,
|
|
863
|
+
computeCurrentRowOpts,
|
|
833
864
|
computeRowDragOpts,
|
|
834
865
|
computeColumnDragOpts,
|
|
835
866
|
computeResizeOpts,
|
|
@@ -880,6 +911,7 @@ export default defineComponent({
|
|
|
880
911
|
getRefMaps: () => refMaps,
|
|
881
912
|
getComputeMaps: () => computeMaps,
|
|
882
913
|
|
|
914
|
+
xeGrid: $xeGrid,
|
|
883
915
|
xegrid: $xeGrid
|
|
884
916
|
} as unknown as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods
|
|
885
917
|
|
|
@@ -1041,12 +1073,13 @@ export default defineComponent({
|
|
|
1041
1073
|
toVisibleIndex = Math.floor(startTop / defaultRowHeight) - 1
|
|
1042
1074
|
visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1
|
|
1043
1075
|
} else {
|
|
1076
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1044
1077
|
let leftIndex = 0
|
|
1045
1078
|
let rightIndex = afterFullData.length
|
|
1046
1079
|
while (leftIndex < rightIndex) {
|
|
1047
1080
|
const rIndex = Math.floor((leftIndex + rightIndex) / 2)
|
|
1048
1081
|
const row = afterFullData[rIndex]
|
|
1049
|
-
const rowid =
|
|
1082
|
+
const rowid = handleGetRowId(row)
|
|
1050
1083
|
const rowRest = fullAllDataRowIdData[rowid] || {}
|
|
1051
1084
|
if (rowRest.oTop <= startTop) {
|
|
1052
1085
|
leftIndex = rIndex + 1
|
|
@@ -1057,7 +1090,7 @@ export default defineComponent({
|
|
|
1057
1090
|
toVisibleIndex = Math.max(0, leftIndex < afterFullData.length ? leftIndex - 2 : 0)
|
|
1058
1091
|
for (let rIndex = toVisibleIndex, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
1059
1092
|
const row = afterFullData[rIndex]
|
|
1060
|
-
const rowid =
|
|
1093
|
+
const rowid = handleGetRowId(row)
|
|
1061
1094
|
const rowRest = fullAllDataRowIdData[rowid] || {}
|
|
1062
1095
|
visibleSize++
|
|
1063
1096
|
if (rowRest.oTop > endTop || visibleSize >= 100) {
|
|
@@ -1300,7 +1333,7 @@ export default defineComponent({
|
|
|
1300
1333
|
fullColumnFieldData[field] = rest
|
|
1301
1334
|
} else {
|
|
1302
1335
|
if ((storage && !type) || (columnOpts.drag && (isCrossDrag || isSelfToChildDrag))) {
|
|
1303
|
-
errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field
|
|
1336
|
+
errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field=?`])
|
|
1304
1337
|
}
|
|
1305
1338
|
}
|
|
1306
1339
|
if (!hasFixed && fixed) {
|
|
@@ -1548,6 +1581,7 @@ export default defineComponent({
|
|
|
1548
1581
|
internalData.headerHeight = headerHeight
|
|
1549
1582
|
internalData.footerHeight = footerHeight
|
|
1550
1583
|
reactData.overflowX = overflowX
|
|
1584
|
+
reactData.resizeWidthFlag++
|
|
1551
1585
|
updateColumnOffsetLeft()
|
|
1552
1586
|
updateHeight()
|
|
1553
1587
|
reactData.parentHeight = Math.max(internalData.headerHeight + footerHeight + 20, $xeTable.getParentHeight())
|
|
@@ -1575,9 +1609,10 @@ export default defineComponent({
|
|
|
1575
1609
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
1576
1610
|
const el = refElem.value
|
|
1577
1611
|
if (!isAllOverflow && scrollYLoad && el) {
|
|
1612
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1578
1613
|
el.setAttribute('data-calc-row', 'Y')
|
|
1579
1614
|
tableData.forEach(row => {
|
|
1580
|
-
const rowid =
|
|
1615
|
+
const rowid = handleGetRowId(row)
|
|
1581
1616
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1582
1617
|
if (rowRest) {
|
|
1583
1618
|
const reHeight = calcCellAutoHeight(rowRest, el)
|
|
@@ -1612,9 +1647,10 @@ export default defineComponent({
|
|
|
1612
1647
|
const updateAfterListIndex = () => {
|
|
1613
1648
|
const { treeConfig } = props
|
|
1614
1649
|
const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData
|
|
1650
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1615
1651
|
const fullMaps: Record<string, any> = {}
|
|
1616
1652
|
afterFullData.forEach((row, index) => {
|
|
1617
|
-
const rowid =
|
|
1653
|
+
const rowid = handleGetRowId(row)
|
|
1618
1654
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1619
1655
|
const seq = index + 1
|
|
1620
1656
|
if (rowRest) {
|
|
@@ -1644,8 +1680,9 @@ export default defineComponent({
|
|
|
1644
1680
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
1645
1681
|
const fullMaps: Record<string, any> = {}
|
|
1646
1682
|
if (treeConfig) {
|
|
1683
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1647
1684
|
XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
|
|
1648
|
-
const rowid =
|
|
1685
|
+
const rowid = handleGetRowId(row)
|
|
1649
1686
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1650
1687
|
const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
|
|
1651
1688
|
if (rowRest) {
|
|
@@ -1671,18 +1708,18 @@ export default defineComponent({
|
|
|
1671
1708
|
*/
|
|
1672
1709
|
const handleVirtualTreeToList = () => {
|
|
1673
1710
|
const { treeConfig } = props
|
|
1674
|
-
const { treeExpandedMaps } =
|
|
1675
|
-
const { fullAllDataRowIdData } = internalData
|
|
1711
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData
|
|
1676
1712
|
const treeOpts = computeTreeOpts.value
|
|
1677
1713
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
1678
1714
|
if (treeConfig && treeOpts.transform) {
|
|
1715
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
1679
1716
|
const fullData: any[] = []
|
|
1680
1717
|
const expandMaps: {
|
|
1681
1718
|
[key: string]: number
|
|
1682
1719
|
} = {}
|
|
1683
1720
|
XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parentRow) => {
|
|
1684
|
-
const rowid =
|
|
1685
|
-
const parentRowid =
|
|
1721
|
+
const rowid = handleGetRowId(row)
|
|
1722
|
+
const parentRowid = handleGetRowId(parentRow)
|
|
1686
1723
|
if (!parentRow || (expandMaps[parentRowid] && treeExpandedMaps[parentRowid])) {
|
|
1687
1724
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
1688
1725
|
if (rowRest) {
|
|
@@ -1711,7 +1748,7 @@ export default defineComponent({
|
|
|
1711
1748
|
const treeOpts = computeTreeOpts.value
|
|
1712
1749
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
1713
1750
|
const { transform, rowField, parentField, mapChildrenField } = treeOpts
|
|
1714
|
-
const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
|
|
1751
|
+
const { isEvery, remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
|
|
1715
1752
|
const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts
|
|
1716
1753
|
let tableData: any[] = []
|
|
1717
1754
|
let tableTree: any[] = []
|
|
@@ -1773,7 +1810,7 @@ export default defineComponent({
|
|
|
1773
1810
|
// 筛选虚拟树
|
|
1774
1811
|
tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
|
|
1775
1812
|
original: true,
|
|
1776
|
-
isEvery
|
|
1813
|
+
isEvery,
|
|
1777
1814
|
children: mapChildrenField,
|
|
1778
1815
|
mapChildren: childrenField
|
|
1779
1816
|
})
|
|
@@ -1787,7 +1824,7 @@ export default defineComponent({
|
|
|
1787
1824
|
// 还原虚拟树
|
|
1788
1825
|
tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
|
|
1789
1826
|
original: true,
|
|
1790
|
-
isEvery
|
|
1827
|
+
isEvery,
|
|
1791
1828
|
children: mapChildrenField,
|
|
1792
1829
|
mapChildren: childrenField
|
|
1793
1830
|
})
|
|
@@ -1836,7 +1873,7 @@ export default defineComponent({
|
|
|
1836
1873
|
// 还原虚拟树
|
|
1837
1874
|
tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
|
|
1838
1875
|
original: true,
|
|
1839
|
-
isEvery
|
|
1876
|
+
isEvery,
|
|
1840
1877
|
children: treeOpts.mapChildrenField,
|
|
1841
1878
|
mapChildren: childrenField
|
|
1842
1879
|
})
|
|
@@ -1854,7 +1891,7 @@ export default defineComponent({
|
|
|
1854
1891
|
const updateStyle = () => {
|
|
1855
1892
|
const { border, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props
|
|
1856
1893
|
const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData
|
|
1857
|
-
const { visibleColumn,
|
|
1894
|
+
const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData
|
|
1858
1895
|
const el = refElem.value
|
|
1859
1896
|
if (!el) {
|
|
1860
1897
|
return
|
|
@@ -1863,7 +1900,6 @@ export default defineComponent({
|
|
|
1863
1900
|
const osbWidth = overflowY ? scrollbarWidth : 0
|
|
1864
1901
|
const osbHeight = overflowX ? scrollbarHeight : 0
|
|
1865
1902
|
const emptyPlaceholderElem = refEmptyPlaceholder.value
|
|
1866
|
-
const cellOffsetWidth = computeCellOffsetWidth.value
|
|
1867
1903
|
const mouseOpts = computeMouseOpts.value
|
|
1868
1904
|
const expandOpts = computeExpandOpts.value
|
|
1869
1905
|
const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper'])
|
|
@@ -2145,54 +2181,6 @@ export default defineComponent({
|
|
|
2145
2181
|
tableElem.style.width = tWidth ? `${tWidth}px` : ''
|
|
2146
2182
|
}
|
|
2147
2183
|
}
|
|
2148
|
-
const colgroupElem = getRefElem(elemStore[`${name}-${layout}-colgroup`])
|
|
2149
|
-
if (colgroupElem) {
|
|
2150
|
-
XEUtils.arrayEach(colgroupElem.children, (colElem: any) => {
|
|
2151
|
-
const colid = colElem.getAttribute('name')
|
|
2152
|
-
if (fullColumnIdData[colid]) {
|
|
2153
|
-
const colRest = fullColumnIdData[colid]
|
|
2154
|
-
const column = colRest.column
|
|
2155
|
-
const { showHeaderOverflow, showFooterOverflow, showOverflow } = column
|
|
2156
|
-
let cellOverflow
|
|
2157
|
-
colElem.style.width = `${column.renderWidth}px`
|
|
2158
|
-
if (layout === 'header') {
|
|
2159
|
-
cellOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
|
|
2160
|
-
} else if (layout === 'footer') {
|
|
2161
|
-
cellOverflow = XEUtils.isUndefined(showFooterOverflow) || XEUtils.isNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow
|
|
2162
|
-
} else {
|
|
2163
|
-
cellOverflow = XEUtils.isUndefined(showOverflow) || XEUtils.isNull(showOverflow) ? isAllOverflow : showOverflow
|
|
2164
|
-
}
|
|
2165
|
-
const showEllipsis = cellOverflow === 'ellipsis'
|
|
2166
|
-
const showTitle = cellOverflow === 'title'
|
|
2167
|
-
const showTooltip = cellOverflow === true || cellOverflow === 'tooltip'
|
|
2168
|
-
let hasEllipsis = showTitle || showTooltip || showEllipsis
|
|
2169
|
-
const listElem = getRefElem(elemStore[`${name}-${layout}-list`])
|
|
2170
|
-
// 纵向虚拟滚动不支持动态行高
|
|
2171
|
-
if (scrollYLoad && !hasEllipsis) {
|
|
2172
|
-
hasEllipsis = true
|
|
2173
|
-
}
|
|
2174
|
-
if (listElem) {
|
|
2175
|
-
XEUtils.arrayEach(listElem.querySelectorAll(`.${column.id}`), (elem: any) => {
|
|
2176
|
-
const colspan = parseInt(elem.getAttribute('colspan') || 1)
|
|
2177
|
-
const cellElem = elem.querySelector('.vxe-cell')
|
|
2178
|
-
let colWidth = column.renderWidth
|
|
2179
|
-
if (cellElem) {
|
|
2180
|
-
if (colspan > 1) {
|
|
2181
|
-
const columnIndex = $xeTable.getColumnIndex(column)
|
|
2182
|
-
for (let index = 1; index < colspan; index++) {
|
|
2183
|
-
const nextColumn = $xeTable.getColumns(columnIndex + index)
|
|
2184
|
-
if (nextColumn) {
|
|
2185
|
-
colWidth += nextColumn.renderWidth
|
|
2186
|
-
}
|
|
2187
|
-
}
|
|
2188
|
-
}
|
|
2189
|
-
cellElem.style.width = hasEllipsis ? `${colWidth - (cellOffsetWidth * colspan)}px` : ''
|
|
2190
|
-
}
|
|
2191
|
-
})
|
|
2192
|
-
}
|
|
2193
|
-
}
|
|
2194
|
-
})
|
|
2195
|
-
}
|
|
2196
2184
|
})
|
|
2197
2185
|
})
|
|
2198
2186
|
if (currentRow) {
|
|
@@ -2361,15 +2349,16 @@ export default defineComponent({
|
|
|
2361
2349
|
|
|
2362
2350
|
const handleCheckedAllCheckboxRow = (checked: boolean, isForce?: boolean) => {
|
|
2363
2351
|
const { treeConfig } = props
|
|
2364
|
-
const { selectCheckboxMaps } =
|
|
2365
|
-
const { afterFullData, checkboxReserveRowMap } = internalData
|
|
2352
|
+
const { afterFullData, checkboxReserveRowMap, selectCheckboxMaps } = internalData
|
|
2366
2353
|
const treeOpts = computeTreeOpts.value
|
|
2367
2354
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2368
2355
|
const checkboxOpts = computeCheckboxOpts.value
|
|
2369
2356
|
const { checkField, reserve, checkMethod } = checkboxOpts
|
|
2357
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
2370
2358
|
// indeterminateField 仅支持读取
|
|
2371
2359
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
|
|
2372
2360
|
const selectRowMaps: Record<string, any> = {}
|
|
2361
|
+
|
|
2373
2362
|
/**
|
|
2374
2363
|
* 绑定属性方式(高性能,有污染)
|
|
2375
2364
|
* 必须在行数据存在对应的属性,否则将不响应
|
|
@@ -2378,7 +2367,7 @@ export default defineComponent({
|
|
|
2378
2367
|
const checkValFn = (row: any) => {
|
|
2379
2368
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
2380
2369
|
if (checked) {
|
|
2381
|
-
selectRowMaps[
|
|
2370
|
+
selectRowMaps[handleGetRowId(row)] = row
|
|
2382
2371
|
}
|
|
2383
2372
|
XEUtils.set(row, checkField, checked)
|
|
2384
2373
|
}
|
|
@@ -2406,7 +2395,8 @@ export default defineComponent({
|
|
|
2406
2395
|
*/
|
|
2407
2396
|
XEUtils.eachTree(afterFullData, (row) => {
|
|
2408
2397
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
2409
|
-
|
|
2398
|
+
const rowid = handleGetRowId(row)
|
|
2399
|
+
selectRowMaps[rowid] = row
|
|
2410
2400
|
}
|
|
2411
2401
|
}, { children: childrenField })
|
|
2412
2402
|
} else {
|
|
@@ -2416,7 +2406,7 @@ export default defineComponent({
|
|
|
2416
2406
|
*/
|
|
2417
2407
|
if (!isForce && checkMethod) {
|
|
2418
2408
|
XEUtils.eachTree(afterFullData, (row) => {
|
|
2419
|
-
const rowid =
|
|
2409
|
+
const rowid = handleGetRowId(row)
|
|
2420
2410
|
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
2421
2411
|
selectRowMaps[rowid] = row
|
|
2422
2412
|
}
|
|
@@ -2432,14 +2422,15 @@ export default defineComponent({
|
|
|
2432
2422
|
*/
|
|
2433
2423
|
if (!isForce && checkMethod) {
|
|
2434
2424
|
afterFullData.forEach((row) => {
|
|
2435
|
-
const rowid =
|
|
2425
|
+
const rowid = handleGetRowId(row)
|
|
2436
2426
|
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
2437
2427
|
selectRowMaps[rowid] = row
|
|
2438
2428
|
}
|
|
2439
2429
|
})
|
|
2440
2430
|
} else {
|
|
2441
2431
|
afterFullData.forEach(row => {
|
|
2442
|
-
|
|
2432
|
+
const rowid = handleGetRowId(row)
|
|
2433
|
+
selectRowMaps[rowid] = row
|
|
2443
2434
|
})
|
|
2444
2435
|
}
|
|
2445
2436
|
} else {
|
|
@@ -2450,7 +2441,7 @@ export default defineComponent({
|
|
|
2450
2441
|
*/
|
|
2451
2442
|
if (!isForce && checkMethod) {
|
|
2452
2443
|
afterFullData.forEach((row) => {
|
|
2453
|
-
const rowid =
|
|
2444
|
+
const rowid = handleGetRowId(row)
|
|
2454
2445
|
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
2455
2446
|
selectRowMaps[rowid] = row
|
|
2456
2447
|
}
|
|
@@ -2468,11 +2459,11 @@ export default defineComponent({
|
|
|
2468
2459
|
afterFullData.forEach((row) => handleCheckboxReserveRow(row, false))
|
|
2469
2460
|
}
|
|
2470
2461
|
}
|
|
2471
|
-
reactData.
|
|
2462
|
+
reactData.updateCheckboxFlag++
|
|
2463
|
+
internalData.selectCheckboxMaps = checkField ? {} : selectRowMaps
|
|
2472
2464
|
|
|
2473
2465
|
reactData.isAllSelected = checked
|
|
2474
2466
|
reactData.isIndeterminate = false
|
|
2475
|
-
reactData.treeIndeterminateMaps = {}
|
|
2476
2467
|
internalData.treeIndeterminateRowMaps = {}
|
|
2477
2468
|
$xeTable.checkSelectionStatus()
|
|
2478
2469
|
return nextTick()
|
|
@@ -2481,8 +2472,8 @@ export default defineComponent({
|
|
|
2481
2472
|
// 还原展开、选中等相关状态
|
|
2482
2473
|
const handleReserveStatus = () => {
|
|
2483
2474
|
const { treeConfig } = props
|
|
2484
|
-
const { expandColumn, currentRow,
|
|
2485
|
-
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData
|
|
2475
|
+
const { expandColumn, currentRow, selectRadioRow } = reactData
|
|
2476
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow, selectCheckboxMaps, treeExpandedMaps, rowExpandedMaps } = internalData
|
|
2486
2477
|
const expandOpts = computeExpandOpts.value
|
|
2487
2478
|
const treeOpts = computeTreeOpts.value
|
|
2488
2479
|
const radioOpts = computeRadioOpts.value
|
|
@@ -2499,7 +2490,8 @@ export default defineComponent({
|
|
|
2499
2490
|
}
|
|
2500
2491
|
}
|
|
2501
2492
|
// 复选框
|
|
2502
|
-
|
|
2493
|
+
internalData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps) // 刷新多选行状态
|
|
2494
|
+
reactData.updateCheckboxFlag++
|
|
2503
2495
|
// 还原保留选中状态
|
|
2504
2496
|
if (checkboxOpts.reserve) {
|
|
2505
2497
|
handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true, true)
|
|
@@ -2508,13 +2500,15 @@ export default defineComponent({
|
|
|
2508
2500
|
reactData.currentRow = null // 刷新当前行状态
|
|
2509
2501
|
}
|
|
2510
2502
|
// 行展开
|
|
2511
|
-
|
|
2503
|
+
internalData.rowExpandedMaps = expandColumn ? getRecoverRowMaps(rowExpandedMaps) : {} // 刷新行展开状态
|
|
2504
|
+
reactData.rowExpandedFlag++
|
|
2512
2505
|
// 还原保留状态
|
|
2513
2506
|
if (expandColumn && expandOpts.reserve) {
|
|
2514
2507
|
$xeTable.setRowExpand(handleReserveRow(internalData.rowExpandedReserveRowMap), true)
|
|
2515
2508
|
}
|
|
2516
2509
|
// 树展开
|
|
2517
|
-
|
|
2510
|
+
internalData.treeExpandedMaps = treeConfig ? getRecoverRowMaps(treeExpandedMaps) : {} // 刷新树展开状态
|
|
2511
|
+
reactData.treeExpandedFlag++
|
|
2518
2512
|
if (treeConfig && treeOpts.reserve) {
|
|
2519
2513
|
$xeTable.setTreeExpand(handleReserveRow(internalData.treeExpandedReserveRowMap), true)
|
|
2520
2514
|
}
|
|
@@ -2531,7 +2525,7 @@ export default defineComponent({
|
|
|
2531
2525
|
const { expandAll, expandRowKeys } = treeOpts
|
|
2532
2526
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2533
2527
|
if (expandAll) {
|
|
2534
|
-
|
|
2528
|
+
$xeTable.setAllTreeExpand(true)
|
|
2535
2529
|
} else if (expandRowKeys) {
|
|
2536
2530
|
const defExpandeds: any[] = []
|
|
2537
2531
|
const rowkey = getRowkey($xeTable)
|
|
@@ -2541,7 +2535,7 @@ export default defineComponent({
|
|
|
2541
2535
|
defExpandeds.push(matchObj.item)
|
|
2542
2536
|
}
|
|
2543
2537
|
})
|
|
2544
|
-
|
|
2538
|
+
$xeTable.setTreeExpand(defExpandeds, true)
|
|
2545
2539
|
}
|
|
2546
2540
|
}
|
|
2547
2541
|
}
|
|
@@ -2553,8 +2547,7 @@ export default defineComponent({
|
|
|
2553
2547
|
const { checkStrictly } = checkboxOpts
|
|
2554
2548
|
return new Promise<void>(resolve => {
|
|
2555
2549
|
if (loadMethod) {
|
|
2556
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2557
|
-
const { fullAllDataRowIdData } = internalData
|
|
2550
|
+
const { fullAllDataRowIdData, treeExpandLazyLoadedMaps } = internalData
|
|
2558
2551
|
const rowid = getRowid($xeTable, row)
|
|
2559
2552
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
2560
2553
|
treeExpandLazyLoadedMaps[rowid] = row
|
|
@@ -2571,18 +2564,19 @@ export default defineComponent({
|
|
|
2571
2564
|
childRecords = []
|
|
2572
2565
|
}
|
|
2573
2566
|
if (childRecords) {
|
|
2574
|
-
return
|
|
2575
|
-
const { treeExpandedMaps } =
|
|
2567
|
+
return $xeTable.loadTreeChildren(row, childRecords).then(childRows => {
|
|
2568
|
+
const { treeExpandedMaps } = internalData
|
|
2576
2569
|
if (childRows.length && !treeExpandedMaps[rowid]) {
|
|
2577
2570
|
treeExpandedMaps[rowid] = row
|
|
2578
2571
|
}
|
|
2572
|
+
reactData.treeExpandedFlag++
|
|
2579
2573
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
2580
|
-
if (!checkStrictly &&
|
|
2574
|
+
if (!checkStrictly && $xeTable.isCheckedByCheckboxRow(row)) {
|
|
2581
2575
|
handleCheckedCheckboxRow(childRows, true)
|
|
2582
2576
|
}
|
|
2583
2577
|
return nextTick().then(() => {
|
|
2584
2578
|
if (transform) {
|
|
2585
|
-
|
|
2579
|
+
$xeTable.handleTableData()
|
|
2586
2580
|
updateAfterDataIndex()
|
|
2587
2581
|
return nextTick()
|
|
2588
2582
|
}
|
|
@@ -2590,7 +2584,7 @@ export default defineComponent({
|
|
|
2590
2584
|
})
|
|
2591
2585
|
}
|
|
2592
2586
|
}).catch(() => {
|
|
2593
|
-
const { treeExpandLazyLoadedMaps } =
|
|
2587
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
2594
2588
|
if (rowRest) {
|
|
2595
2589
|
rowRest.treeLoaded = false
|
|
2596
2590
|
}
|
|
@@ -2598,7 +2592,8 @@ export default defineComponent({
|
|
|
2598
2592
|
delete treeExpandLazyLoadedMaps[rowid]
|
|
2599
2593
|
}
|
|
2600
2594
|
}).finally(() => {
|
|
2601
|
-
|
|
2595
|
+
reactData.treeExpandedFlag++
|
|
2596
|
+
nextTick().then(() => $xeTable.recalculate()).then(() => resolve())
|
|
2602
2597
|
})
|
|
2603
2598
|
} else {
|
|
2604
2599
|
resolve()
|
|
@@ -2624,29 +2619,27 @@ export default defineComponent({
|
|
|
2624
2619
|
const expandOpts = computeExpandOpts.value
|
|
2625
2620
|
const { loadMethod } = expandOpts
|
|
2626
2621
|
if (loadMethod) {
|
|
2627
|
-
const { fullAllDataRowIdData } = internalData
|
|
2628
|
-
const rExpandLazyLoadedMaps = { ...reactData.rowExpandLazyLoadedMaps }
|
|
2622
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData
|
|
2629
2623
|
const rowid = getRowid($xeTable, row)
|
|
2630
2624
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
const rowTempExpandedMaps = { ...reactData.rowExpandedMaps }
|
|
2625
|
+
rowExpandLazyLoadedMaps[rowid] = row
|
|
2626
|
+
loadMethod({ $table: $xeTable, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) }).then(() => {
|
|
2627
|
+
const { rowExpandedMaps } = internalData
|
|
2635
2628
|
if (rowRest) {
|
|
2636
2629
|
rowRest.expandLoaded = true
|
|
2637
2630
|
}
|
|
2638
|
-
|
|
2639
|
-
reactData.
|
|
2631
|
+
rowExpandedMaps[rowid] = row
|
|
2632
|
+
reactData.rowExpandedFlag++
|
|
2640
2633
|
}).catch(() => {
|
|
2641
2634
|
if (rowRest) {
|
|
2642
2635
|
rowRest.expandLoaded = false
|
|
2643
2636
|
}
|
|
2644
2637
|
}).finally(() => {
|
|
2645
|
-
const
|
|
2646
|
-
if (
|
|
2647
|
-
delete
|
|
2638
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
2639
|
+
if (rowExpandLazyLoadedMaps[rowid]) {
|
|
2640
|
+
delete rowExpandLazyLoadedMaps[rowid]
|
|
2648
2641
|
}
|
|
2649
|
-
reactData.
|
|
2642
|
+
reactData.rowExpandedFlag++
|
|
2650
2643
|
nextTick()
|
|
2651
2644
|
.then(() => $xeTable.recalculate())
|
|
2652
2645
|
.then(() => $xeTable.updateCellAreas())
|
|
@@ -2750,9 +2743,6 @@ export default defineComponent({
|
|
|
2750
2743
|
calcCellWidth()
|
|
2751
2744
|
autoCellWidth()
|
|
2752
2745
|
updateStyle()
|
|
2753
|
-
if (reFull) {
|
|
2754
|
-
updateRowOffsetTop()
|
|
2755
|
-
}
|
|
2756
2746
|
updateRowExpandStyle()
|
|
2757
2747
|
return computeScrollLoad().then(() => {
|
|
2758
2748
|
if (reFull === true) {
|
|
@@ -2782,6 +2772,9 @@ export default defineComponent({
|
|
|
2782
2772
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2783
2773
|
let treeData = []
|
|
2784
2774
|
let fullData = reactive(datas ? datas.slice(0) : []) // 转为响应式数据
|
|
2775
|
+
if (fullData.length > supportMaxRow) {
|
|
2776
|
+
errLog('vxe.error.errMaxRow', [supportMaxRow])
|
|
2777
|
+
}
|
|
2785
2778
|
if (treeConfig) {
|
|
2786
2779
|
if (transform) {
|
|
2787
2780
|
// 树结构自动转换
|
|
@@ -2997,8 +2990,8 @@ export default defineComponent({
|
|
|
2997
2990
|
}
|
|
2998
2991
|
|
|
2999
2992
|
const parseColumns = (isReset: boolean) => {
|
|
3000
|
-
const { showOverflow } = props
|
|
3001
|
-
const rowOpts = computeRowOpts.value
|
|
2993
|
+
// const { showOverflow } = props
|
|
2994
|
+
// const rowOpts = computeRowOpts.value
|
|
3002
2995
|
const leftList: VxeTableDefines.ColumnInfo[] = []
|
|
3003
2996
|
const centerList: VxeTableDefines.ColumnInfo[] = []
|
|
3004
2997
|
const rightList: VxeTableDefines.ColumnInfo[] = []
|
|
@@ -3063,28 +3056,28 @@ export default defineComponent({
|
|
|
3063
3056
|
reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0
|
|
3064
3057
|
Object.assign(columnStore, { leftList, centerList, rightList })
|
|
3065
3058
|
if (scrollXLoad) {
|
|
3066
|
-
if (showOverflow) {
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3059
|
+
// if (showOverflow) {
|
|
3060
|
+
// if (!rowOpts.height) {
|
|
3061
|
+
// const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
|
|
3062
|
+
// if (errColumn) {
|
|
3063
|
+
// errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
|
|
3064
|
+
// }
|
|
3065
|
+
// }
|
|
3066
|
+
// }
|
|
3067
|
+
// if (process.env.VUE_APP_VXE_ENV === 'development') {
|
|
3068
|
+
// if (props.showHeader && !props.showHeaderOverflow) {
|
|
3069
|
+
// warnLog('vxe.error.reqProp', ['show-header-overflow'])
|
|
3070
|
+
// }
|
|
3071
|
+
// if (props.showFooter && !props.showFooterOverflow) {
|
|
3072
|
+
// warnLog('vxe.error.reqProp', ['show-footer-overflow'])
|
|
3073
|
+
// }
|
|
3074
|
+
if (props.spanMethod) {
|
|
3075
|
+
warnLog('vxe.error.scrollErrProp', ['span-method'])
|
|
3073
3076
|
}
|
|
3074
|
-
if (
|
|
3075
|
-
|
|
3076
|
-
// warnLog('vxe.error.reqProp', ['show-header-overflow'])
|
|
3077
|
-
// }
|
|
3078
|
-
// if (props.showFooter && !props.showFooterOverflow) {
|
|
3079
|
-
// warnLog('vxe.error.reqProp', ['show-footer-overflow'])
|
|
3080
|
-
// }
|
|
3081
|
-
if (props.spanMethod) {
|
|
3082
|
-
warnLog('vxe.error.scrollErrProp', ['span-method'])
|
|
3083
|
-
}
|
|
3084
|
-
if (props.footerSpanMethod) {
|
|
3085
|
-
warnLog('vxe.error.scrollErrProp', ['footer-span-method'])
|
|
3086
|
-
}
|
|
3077
|
+
if (props.footerSpanMethod) {
|
|
3078
|
+
warnLog('vxe.error.scrollErrProp', ['footer-span-method'])
|
|
3087
3079
|
}
|
|
3080
|
+
// }
|
|
3088
3081
|
if (isReset) {
|
|
3089
3082
|
const { visibleSize } = handleVirtualXVisible()
|
|
3090
3083
|
scrollXStore.startIndex = 0
|
|
@@ -3192,9 +3185,8 @@ export default defineComponent({
|
|
|
3192
3185
|
* @returns
|
|
3193
3186
|
*/
|
|
3194
3187
|
const handleBaseTreeExpand = (rows: any[], expanded: boolean) => {
|
|
3195
|
-
const {
|
|
3196
|
-
const
|
|
3197
|
-
const { fullAllDataRowIdData, tableFullData } = internalData
|
|
3188
|
+
const { treeNodeColumn } = reactData
|
|
3189
|
+
const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData
|
|
3198
3190
|
const treeOpts = computeTreeOpts.value
|
|
3199
3191
|
const { reserve, lazy, accordion, toggleMethod } = treeOpts
|
|
3200
3192
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -3202,6 +3194,7 @@ export default defineComponent({
|
|
|
3202
3194
|
const result: any[] = []
|
|
3203
3195
|
const columnIndex = tableMethods.getColumnIndex(treeNodeColumn)
|
|
3204
3196
|
const $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn)
|
|
3197
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3205
3198
|
let validRows = toggleMethod ? rows.filter((row: any) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows
|
|
3206
3199
|
if (accordion) {
|
|
3207
3200
|
validRows = validRows.length ? [validRows[validRows.length - 1]] : []
|
|
@@ -3209,17 +3202,17 @@ export default defineComponent({
|
|
|
3209
3202
|
const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField })
|
|
3210
3203
|
if (matchObj) {
|
|
3211
3204
|
matchObj.items.forEach(item => {
|
|
3212
|
-
const rowid =
|
|
3213
|
-
if (
|
|
3214
|
-
delete
|
|
3205
|
+
const rowid = handleGetRowId(item)
|
|
3206
|
+
if (treeExpandedMaps[rowid]) {
|
|
3207
|
+
delete treeExpandedMaps[rowid]
|
|
3215
3208
|
}
|
|
3216
3209
|
})
|
|
3217
3210
|
}
|
|
3218
3211
|
}
|
|
3219
3212
|
if (expanded) {
|
|
3220
3213
|
validRows.forEach((row: any) => {
|
|
3221
|
-
const rowid =
|
|
3222
|
-
if (!
|
|
3214
|
+
const rowid = handleGetRowId(row)
|
|
3215
|
+
if (!treeExpandedMaps[rowid]) {
|
|
3223
3216
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3224
3217
|
if (rowRest) {
|
|
3225
3218
|
const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid]
|
|
@@ -3228,7 +3221,7 @@ export default defineComponent({
|
|
|
3228
3221
|
result.push(handleAsyncTreeExpandChilds(row))
|
|
3229
3222
|
} else {
|
|
3230
3223
|
if (row[childrenField] && row[childrenField].length) {
|
|
3231
|
-
|
|
3224
|
+
treeExpandedMaps[rowid] = row
|
|
3232
3225
|
}
|
|
3233
3226
|
}
|
|
3234
3227
|
}
|
|
@@ -3236,16 +3229,16 @@ export default defineComponent({
|
|
|
3236
3229
|
})
|
|
3237
3230
|
} else {
|
|
3238
3231
|
validRows.forEach(item => {
|
|
3239
|
-
const rowid =
|
|
3240
|
-
if (
|
|
3241
|
-
delete
|
|
3232
|
+
const rowid = handleGetRowId(item)
|
|
3233
|
+
if (treeExpandedMaps[rowid]) {
|
|
3234
|
+
delete treeExpandedMaps[rowid]
|
|
3242
3235
|
}
|
|
3243
3236
|
})
|
|
3244
3237
|
}
|
|
3245
3238
|
if (reserve) {
|
|
3246
3239
|
validRows.forEach((row: any) => handleTreeExpandReserve(row, expanded))
|
|
3247
3240
|
}
|
|
3248
|
-
reactData.
|
|
3241
|
+
reactData.treeExpandedFlag++
|
|
3249
3242
|
return Promise.all(result).then(() => {
|
|
3250
3243
|
return tableMethods.recalculate()
|
|
3251
3244
|
})
|
|
@@ -3276,9 +3269,9 @@ export default defineComponent({
|
|
|
3276
3269
|
handleCheckedAllCheckboxRow(value)
|
|
3277
3270
|
if (evnt) {
|
|
3278
3271
|
dispatchEvent('checkbox-all', {
|
|
3279
|
-
records: $xeTable.getCheckboxRecords(),
|
|
3280
|
-
reserves: $xeTable.getCheckboxReserveRecords(),
|
|
3281
|
-
indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
|
|
3272
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
3273
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
3274
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
3282
3275
|
checked: value
|
|
3283
3276
|
}, evnt)
|
|
3284
3277
|
}
|
|
@@ -3311,10 +3304,11 @@ export default defineComponent({
|
|
|
3311
3304
|
}
|
|
3312
3305
|
|
|
3313
3306
|
const createGetRowCacheProp = (prop: 'seq' | 'index' | '_index' | '$index') => {
|
|
3307
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3314
3308
|
return function (row: any) {
|
|
3315
3309
|
const { fullAllDataRowIdData } = internalData
|
|
3316
3310
|
if (row) {
|
|
3317
|
-
const rowid =
|
|
3311
|
+
const rowid = handleGetRowId(row)
|
|
3318
3312
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3319
3313
|
if (rowRest) {
|
|
3320
3314
|
return rowRest[prop]
|
|
@@ -3472,7 +3466,7 @@ export default defineComponent({
|
|
|
3472
3466
|
|
|
3473
3467
|
const handleUpdateColResize = (evnt: MouseEvent, params: any) => {
|
|
3474
3468
|
$xeTable.analyColumnWidth()
|
|
3475
|
-
$xeTable.recalculate(
|
|
3469
|
+
$xeTable.recalculate().then(() => {
|
|
3476
3470
|
$xeTable.saveCustomStore('update:width')
|
|
3477
3471
|
$xeTable.updateCellAreas()
|
|
3478
3472
|
$xeTable.dispatchEvent('column-resizable-change', params, evnt)
|
|
@@ -3484,7 +3478,7 @@ export default defineComponent({
|
|
|
3484
3478
|
|
|
3485
3479
|
const handleUpdateRowResize = (evnt: MouseEvent, params: any) => {
|
|
3486
3480
|
reactData.resizeHeightFlag++
|
|
3487
|
-
$xeTable.recalculate(
|
|
3481
|
+
$xeTable.recalculate().then(() => {
|
|
3488
3482
|
$xeTable.updateCellAreas()
|
|
3489
3483
|
$xeTable.dispatchEvent('row-resizable-change', params, evnt)
|
|
3490
3484
|
setTimeout(() => $xeTable.recalculate(true), 300)
|
|
@@ -3504,16 +3498,17 @@ export default defineComponent({
|
|
|
3504
3498
|
}
|
|
3505
3499
|
|
|
3506
3500
|
const updateRowOffsetTop = () => {
|
|
3507
|
-
const { expandColumn
|
|
3508
|
-
const { afterFullData, fullAllDataRowIdData } = internalData
|
|
3501
|
+
const { expandColumn } = reactData
|
|
3502
|
+
const { afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
|
|
3509
3503
|
const expandOpts = computeExpandOpts.value
|
|
3510
3504
|
const rowOpts = computeRowOpts.value
|
|
3511
3505
|
const cellOpts = computeCellOpts.value
|
|
3512
3506
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
3507
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3513
3508
|
let offsetTop = 0
|
|
3514
3509
|
for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
|
|
3515
3510
|
const row = afterFullData[rIndex]
|
|
3516
|
-
const rowid =
|
|
3511
|
+
const rowid = handleGetRowId(row)
|
|
3517
3512
|
const rowRest = fullAllDataRowIdData[rowid] || {}
|
|
3518
3513
|
rowRest.oTop = offsetTop
|
|
3519
3514
|
offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight
|
|
@@ -3893,9 +3888,12 @@ export default defineComponent({
|
|
|
3893
3888
|
*/
|
|
3894
3889
|
revertData (rows: any, field) {
|
|
3895
3890
|
const { keepSource, treeConfig } = props
|
|
3891
|
+
const { editStore } = reactData
|
|
3896
3892
|
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData
|
|
3893
|
+
const removeTempMaps = { ...editStore.removeMaps }
|
|
3897
3894
|
const treeOpts = computeTreeOpts.value
|
|
3898
3895
|
const { transform } = treeOpts
|
|
3896
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3899
3897
|
if (!keepSource) {
|
|
3900
3898
|
if (process.env.VUE_APP_VXE_ENV === 'development') {
|
|
3901
3899
|
errLog('vxe.error.reqProp', ['keep-source'])
|
|
@@ -3913,7 +3911,7 @@ export default defineComponent({
|
|
|
3913
3911
|
let reDelFlag = false
|
|
3914
3912
|
if (targetRows.length) {
|
|
3915
3913
|
targetRows.forEach((item: any) => {
|
|
3916
|
-
const rowid =
|
|
3914
|
+
const rowid = handleGetRowId(item)
|
|
3917
3915
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3918
3916
|
if (rowRest) {
|
|
3919
3917
|
const row = rowRest.row
|
|
@@ -3926,6 +3924,7 @@ export default defineComponent({
|
|
|
3926
3924
|
XEUtils.destructuring(row, XEUtils.clone(oRow, true))
|
|
3927
3925
|
}
|
|
3928
3926
|
if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
|
|
3927
|
+
delete removeTempMaps[rowid]
|
|
3929
3928
|
tableFullData.unshift(row)
|
|
3930
3929
|
afterFullData.unshift(row)
|
|
3931
3930
|
reDelFlag = true
|
|
@@ -3937,6 +3936,7 @@ export default defineComponent({
|
|
|
3937
3936
|
}
|
|
3938
3937
|
if (rows) {
|
|
3939
3938
|
if (reDelFlag) {
|
|
3939
|
+
editStore.removeMaps = removeTempMaps
|
|
3940
3940
|
$xeTable.updateFooter()
|
|
3941
3941
|
$xeTable.cacheRowMap(false)
|
|
3942
3942
|
$xeTable.handleTableData(treeConfig && transform)
|
|
@@ -4084,14 +4084,14 @@ export default defineComponent({
|
|
|
4084
4084
|
},
|
|
4085
4085
|
/**
|
|
4086
4086
|
* 检查行或列数据是否发生改变
|
|
4087
|
-
* @param {Row}
|
|
4087
|
+
* @param {Row} rowidOrRow 行对象、行主键
|
|
4088
4088
|
* @param {String} field 字段名
|
|
4089
4089
|
*/
|
|
4090
|
-
isUpdateByRow (
|
|
4090
|
+
isUpdateByRow (rowidOrRow, field) {
|
|
4091
4091
|
const { keepSource } = props
|
|
4092
4092
|
const { tableFullColumn, fullDataRowIdData, sourceDataRowIdData } = internalData
|
|
4093
4093
|
if (keepSource) {
|
|
4094
|
-
const rowid = XEUtils.isString(
|
|
4094
|
+
const rowid = XEUtils.isString(rowidOrRow) || XEUtils.isNumber(rowidOrRow) ? rowidOrRow : getRowid($xeTable, rowidOrRow)
|
|
4095
4095
|
const rowRest = fullDataRowIdData[rowid]
|
|
4096
4096
|
// 新增的数据不需要检测
|
|
4097
4097
|
if (!rowRest) {
|
|
@@ -4266,8 +4266,7 @@ export default defineComponent({
|
|
|
4266
4266
|
*/
|
|
4267
4267
|
getCheckboxRecords (isFull) {
|
|
4268
4268
|
const { treeConfig } = props
|
|
4269
|
-
const { selectCheckboxMaps } =
|
|
4270
|
-
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData
|
|
4269
|
+
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData
|
|
4271
4270
|
const treeOpts = computeTreeOpts.value
|
|
4272
4271
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4273
4272
|
const { transform, mapChildrenField } = treeOpts
|
|
@@ -4595,12 +4594,13 @@ export default defineComponent({
|
|
|
4595
4594
|
},
|
|
4596
4595
|
getRowHeightConf (isFull) {
|
|
4597
4596
|
const { fullAllDataRowIdData, afterFullData } = internalData
|
|
4597
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4598
4598
|
const rowOpts = computeRowOpts.value
|
|
4599
4599
|
const cellOpts = computeCellOpts.value
|
|
4600
4600
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
4601
4601
|
const rest: Record<string, number> = {}
|
|
4602
4602
|
afterFullData.forEach(row => {
|
|
4603
|
-
const rowid =
|
|
4603
|
+
const rowid = handleGetRowId(row)
|
|
4604
4604
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
4605
4605
|
if (rowRest) {
|
|
4606
4606
|
const resizeHeight = rowRest.resizeHeight
|
|
@@ -4624,8 +4624,9 @@ export default defineComponent({
|
|
|
4624
4624
|
rHeight = Math.floor(rHeight * bodyHeight)
|
|
4625
4625
|
}
|
|
4626
4626
|
if (rHeight) {
|
|
4627
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4627
4628
|
rows.forEach(row => {
|
|
4628
|
-
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row :
|
|
4629
|
+
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row)
|
|
4629
4630
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
4630
4631
|
if (rowRest) {
|
|
4631
4632
|
rowRest.resizeHeight = rHeight
|
|
@@ -4777,12 +4778,11 @@ export default defineComponent({
|
|
|
4777
4778
|
*/
|
|
4778
4779
|
getCheckboxIndeterminateRecords (isFull) {
|
|
4779
4780
|
const { treeConfig } = props
|
|
4780
|
-
const { fullDataRowIdData } = internalData
|
|
4781
|
-
const { treeIndeterminateMaps } = reactData
|
|
4781
|
+
const { fullDataRowIdData, treeIndeterminateRowMaps } = internalData
|
|
4782
4782
|
if (treeConfig) {
|
|
4783
4783
|
const fullRest: any[] = []
|
|
4784
4784
|
const defRest: any[] = []
|
|
4785
|
-
XEUtils.each(
|
|
4785
|
+
XEUtils.each(treeIndeterminateRowMaps, (item, rowid) => {
|
|
4786
4786
|
if (item) {
|
|
4787
4787
|
fullRest.push(item)
|
|
4788
4788
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -4823,17 +4823,18 @@ export default defineComponent({
|
|
|
4823
4823
|
return handleCheckedCheckboxRow(rows, checked, true)
|
|
4824
4824
|
},
|
|
4825
4825
|
isCheckedByCheckboxRow (row) {
|
|
4826
|
-
const {
|
|
4826
|
+
const { updateCheckboxFlag } = reactData
|
|
4827
|
+
const { selectCheckboxMaps } = internalData
|
|
4827
4828
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4828
4829
|
const { checkField } = checkboxOpts
|
|
4829
4830
|
if (checkField) {
|
|
4830
4831
|
return XEUtils.get(row, checkField)
|
|
4831
4832
|
}
|
|
4832
|
-
return !!selectCheckboxMaps[getRowid($xeTable, row)]
|
|
4833
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[getRowid($xeTable, row)]
|
|
4833
4834
|
},
|
|
4834
4835
|
isCheckedByCheckboxRowKey (rowid: any) {
|
|
4835
|
-
const {
|
|
4836
|
-
const { fullAllDataRowIdData } = internalData
|
|
4836
|
+
const { updateCheckboxFlag } = reactData
|
|
4837
|
+
const { fullAllDataRowIdData, selectCheckboxMaps } = internalData
|
|
4837
4838
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4838
4839
|
const { checkField } = checkboxOpts
|
|
4839
4840
|
if (checkField) {
|
|
@@ -4843,21 +4844,21 @@ export default defineComponent({
|
|
|
4843
4844
|
}
|
|
4844
4845
|
return false
|
|
4845
4846
|
}
|
|
4846
|
-
return !!selectCheckboxMaps[rowid]
|
|
4847
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[rowid]
|
|
4847
4848
|
},
|
|
4848
4849
|
isIndeterminateByCheckboxRow (row) {
|
|
4849
|
-
const {
|
|
4850
|
-
return !!
|
|
4850
|
+
const { treeIndeterminateRowMaps } = internalData
|
|
4851
|
+
return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row)
|
|
4851
4852
|
},
|
|
4852
4853
|
isIndeterminateByCheckboxRowKey (rowid: any) {
|
|
4853
|
-
const {
|
|
4854
|
-
return !!
|
|
4854
|
+
const { treeIndeterminateRowMaps } = internalData
|
|
4855
|
+
return !!treeIndeterminateRowMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid)
|
|
4855
4856
|
},
|
|
4856
4857
|
/**
|
|
4857
4858
|
* 多选,切换某一行的选中状态
|
|
4858
4859
|
*/
|
|
4859
4860
|
toggleCheckboxRow (row) {
|
|
4860
|
-
const { selectCheckboxMaps } =
|
|
4861
|
+
const { selectCheckboxMaps } = internalData
|
|
4861
4862
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4862
4863
|
const { checkField } = checkboxOpts
|
|
4863
4864
|
const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)]
|
|
@@ -4918,14 +4919,15 @@ export default defineComponent({
|
|
|
4918
4919
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
4919
4920
|
const reserveSelection: any[] = []
|
|
4920
4921
|
if (checkboxOpts.reserve) {
|
|
4922
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4921
4923
|
const afterFullIdMaps: { [key: string]: number } = {}
|
|
4922
4924
|
if (treeConfig) {
|
|
4923
4925
|
XEUtils.eachTree(afterFullData, row => {
|
|
4924
|
-
afterFullIdMaps[
|
|
4926
|
+
afterFullIdMaps[handleGetRowId(row)] = 1
|
|
4925
4927
|
}, { children: childrenField })
|
|
4926
4928
|
} else {
|
|
4927
4929
|
afterFullData.forEach(row => {
|
|
4928
|
-
afterFullIdMaps[
|
|
4930
|
+
afterFullIdMaps[handleGetRowId(row)] = 1
|
|
4929
4931
|
})
|
|
4930
4932
|
}
|
|
4931
4933
|
XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
|
|
@@ -4986,8 +4988,9 @@ export default defineComponent({
|
|
|
4986
4988
|
}
|
|
4987
4989
|
reactData.isAllSelected = false
|
|
4988
4990
|
reactData.isIndeterminate = false
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
+
internalData.selectCheckboxMaps = {}
|
|
4992
|
+
internalData.treeIndeterminateRowMaps = {}
|
|
4993
|
+
reactData.updateCheckboxFlag++
|
|
4991
4994
|
return nextTick()
|
|
4992
4995
|
},
|
|
4993
4996
|
/**
|
|
@@ -5094,13 +5097,20 @@ export default defineComponent({
|
|
|
5094
5097
|
* 用于当前列,设置某列行为高亮状态
|
|
5095
5098
|
*/
|
|
5096
5099
|
setCurrentColumn (fieldOrColumn) {
|
|
5100
|
+
const { mouseConfig } = props
|
|
5101
|
+
const mouseOpts = computeMouseOpts.value
|
|
5102
|
+
const isMouseSelected = mouseConfig && mouseOpts.selected
|
|
5097
5103
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
5098
5104
|
if (column) {
|
|
5099
|
-
|
|
5100
|
-
tableMethods.clearCurrentColumn()
|
|
5105
|
+
$xeTable.clearCurrentColumn()
|
|
5101
5106
|
reactData.currentColumn = column
|
|
5102
5107
|
}
|
|
5103
|
-
return nextTick()
|
|
5108
|
+
return nextTick().then(() => {
|
|
5109
|
+
// 更新状选中态
|
|
5110
|
+
if (isMouseSelected) {
|
|
5111
|
+
$xeTable.addCellSelectedClass()
|
|
5112
|
+
}
|
|
5113
|
+
})
|
|
5104
5114
|
},
|
|
5105
5115
|
/**
|
|
5106
5116
|
* 用于当前列,手动清空当前高亮的状态
|
|
@@ -5110,57 +5120,58 @@ export default defineComponent({
|
|
|
5110
5120
|
return nextTick()
|
|
5111
5121
|
},
|
|
5112
5122
|
setPendingRow (rows: any | any[], status: boolean) {
|
|
5113
|
-
const
|
|
5123
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5124
|
+
const { pendingRowMaps } = internalData
|
|
5114
5125
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5115
5126
|
rows = [rows]
|
|
5116
5127
|
}
|
|
5117
5128
|
if (status) {
|
|
5118
5129
|
rows.forEach((row: any) => {
|
|
5119
|
-
const rowid =
|
|
5120
|
-
if (rowid && !
|
|
5121
|
-
|
|
5130
|
+
const rowid = handleGetRowId(row)
|
|
5131
|
+
if (rowid && !pendingRowMaps[rowid]) {
|
|
5132
|
+
pendingRowMaps[rowid] = row
|
|
5122
5133
|
}
|
|
5123
5134
|
})
|
|
5124
5135
|
} else {
|
|
5125
5136
|
rows.forEach((row: any) => {
|
|
5126
|
-
const rowid =
|
|
5127
|
-
if (rowid &&
|
|
5128
|
-
delete
|
|
5137
|
+
const rowid = handleGetRowId(row)
|
|
5138
|
+
if (rowid && pendingRowMaps[rowid]) {
|
|
5139
|
+
delete pendingRowMaps[rowid]
|
|
5129
5140
|
}
|
|
5130
5141
|
})
|
|
5131
5142
|
}
|
|
5132
|
-
reactData.
|
|
5143
|
+
reactData.pendingRowFlag++
|
|
5133
5144
|
return nextTick()
|
|
5134
5145
|
},
|
|
5135
5146
|
togglePendingRow (rows: any | any[]) {
|
|
5136
|
-
const
|
|
5147
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5148
|
+
const { pendingRowMaps } = internalData
|
|
5137
5149
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5138
5150
|
rows = [rows]
|
|
5139
5151
|
}
|
|
5140
5152
|
rows.forEach((row: any) => {
|
|
5141
|
-
const rowid =
|
|
5153
|
+
const rowid = handleGetRowId(row)
|
|
5142
5154
|
if (rowid) {
|
|
5143
|
-
if (
|
|
5144
|
-
delete
|
|
5155
|
+
if (pendingRowMaps[rowid]) {
|
|
5156
|
+
delete pendingRowMaps[rowid]
|
|
5145
5157
|
} else {
|
|
5146
|
-
|
|
5158
|
+
pendingRowMaps[rowid] = row
|
|
5147
5159
|
}
|
|
5148
5160
|
}
|
|
5149
5161
|
})
|
|
5150
|
-
reactData.
|
|
5162
|
+
reactData.pendingRowFlag++
|
|
5151
5163
|
return nextTick()
|
|
5152
5164
|
},
|
|
5153
5165
|
hasPendingByRow (row) {
|
|
5154
5166
|
return tableMethods.isPendingByRow(row)
|
|
5155
5167
|
},
|
|
5156
5168
|
isPendingByRow (row) {
|
|
5157
|
-
const { pendingRowMaps } =
|
|
5169
|
+
const { pendingRowMaps } = internalData
|
|
5158
5170
|
const rowid = getRowid($xeTable, row)
|
|
5159
5171
|
return !!pendingRowMaps[rowid]
|
|
5160
5172
|
},
|
|
5161
5173
|
getPendingRecords () {
|
|
5162
|
-
const { pendingRowMaps } =
|
|
5163
|
-
const { fullAllDataRowIdData } = internalData
|
|
5174
|
+
const { fullAllDataRowIdData, pendingRowMaps } = internalData
|
|
5164
5175
|
const insertRecords: any[] = []
|
|
5165
5176
|
XEUtils.each(pendingRowMaps, (row, rowid) => {
|
|
5166
5177
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -5170,7 +5181,8 @@ export default defineComponent({
|
|
|
5170
5181
|
return insertRecords
|
|
5171
5182
|
},
|
|
5172
5183
|
clearPendingRow () {
|
|
5173
|
-
|
|
5184
|
+
internalData.pendingRowMaps = {}
|
|
5185
|
+
reactData.pendingRowFlag++
|
|
5174
5186
|
return nextTick()
|
|
5175
5187
|
},
|
|
5176
5188
|
sort (sortConfs: any, sortOrder?: VxeTablePropTypes.SortOrder) {
|
|
@@ -5318,7 +5330,13 @@ export default defineComponent({
|
|
|
5318
5330
|
visible: false
|
|
5319
5331
|
})
|
|
5320
5332
|
if (visible) {
|
|
5321
|
-
dispatchEvent('filter-visible', {
|
|
5333
|
+
dispatchEvent('filter-visible', {
|
|
5334
|
+
column,
|
|
5335
|
+
property: column.field,
|
|
5336
|
+
field: column.field,
|
|
5337
|
+
filterList: () => $xeTable.getCheckedFilters(),
|
|
5338
|
+
visible: false
|
|
5339
|
+
}, null)
|
|
5322
5340
|
}
|
|
5323
5341
|
return nextTick()
|
|
5324
5342
|
},
|
|
@@ -5346,17 +5364,16 @@ export default defineComponent({
|
|
|
5346
5364
|
return rowRest && !!rowRest.expandLoaded
|
|
5347
5365
|
},
|
|
5348
5366
|
clearRowExpandLoaded (row) {
|
|
5349
|
-
const
|
|
5350
|
-
const { fullAllDataRowIdData } = internalData
|
|
5367
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData
|
|
5351
5368
|
const expandOpts = computeExpandOpts.value
|
|
5352
5369
|
const { lazy } = expandOpts
|
|
5353
5370
|
const rowid = getRowid($xeTable, row)
|
|
5354
5371
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5355
5372
|
if (lazy && rowRest) {
|
|
5356
5373
|
rowRest.expandLoaded = false
|
|
5357
|
-
delete
|
|
5374
|
+
delete rowExpandLazyLoadedMaps[rowid]
|
|
5358
5375
|
}
|
|
5359
|
-
reactData.
|
|
5376
|
+
reactData.rowExpandedFlag++
|
|
5360
5377
|
return nextTick()
|
|
5361
5378
|
},
|
|
5362
5379
|
/**
|
|
@@ -5364,12 +5381,12 @@ export default defineComponent({
|
|
|
5364
5381
|
* @param {Row} row 行对象
|
|
5365
5382
|
*/
|
|
5366
5383
|
reloadRowExpand (row) {
|
|
5367
|
-
const { rowExpandLazyLoadedMaps } =
|
|
5384
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
5368
5385
|
const expandOpts = computeExpandOpts.value
|
|
5369
5386
|
const { lazy } = expandOpts
|
|
5370
5387
|
const rowid = getRowid($xeTable, row)
|
|
5371
5388
|
if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
|
|
5372
|
-
|
|
5389
|
+
$xeTable.clearRowExpandLoaded(row)
|
|
5373
5390
|
.then(() => handleAsyncRowExpand(row))
|
|
5374
5391
|
}
|
|
5375
5392
|
return nextTick()
|
|
@@ -5379,13 +5396,13 @@ export default defineComponent({
|
|
|
5379
5396
|
warnLog('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand'])
|
|
5380
5397
|
}
|
|
5381
5398
|
// 即将废弃
|
|
5382
|
-
return
|
|
5399
|
+
return $xeTable.reloadRowExpand(row)
|
|
5383
5400
|
},
|
|
5384
5401
|
/**
|
|
5385
5402
|
* 切换展开行
|
|
5386
5403
|
*/
|
|
5387
5404
|
toggleRowExpand (row) {
|
|
5388
|
-
return
|
|
5405
|
+
return $xeTable.setRowExpand(row, !$xeTable.isRowExpandByRow(row))
|
|
5389
5406
|
},
|
|
5390
5407
|
/**
|
|
5391
5408
|
* 设置所有行的展开与否
|
|
@@ -5413,9 +5430,9 @@ export default defineComponent({
|
|
|
5413
5430
|
* @param {Boolean} expanded 是否展开
|
|
5414
5431
|
*/
|
|
5415
5432
|
setRowExpand (rows, expanded) {
|
|
5416
|
-
const {
|
|
5417
|
-
|
|
5418
|
-
|
|
5433
|
+
const { expandColumn } = reactData
|
|
5434
|
+
let { fullAllDataRowIdData, rowExpandedMaps, rowExpandLazyLoadedMaps } = internalData
|
|
5435
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5419
5436
|
const expandOpts = computeExpandOpts.value
|
|
5420
5437
|
const { reserve, lazy, accordion, toggleMethod } = expandOpts
|
|
5421
5438
|
const lazyRests: any[] = []
|
|
@@ -5427,28 +5444,29 @@ export default defineComponent({
|
|
|
5427
5444
|
}
|
|
5428
5445
|
if (accordion) {
|
|
5429
5446
|
// 只能同时展开一个
|
|
5430
|
-
|
|
5447
|
+
rowExpandedMaps = {}
|
|
5448
|
+
internalData.rowExpandedMaps = rowExpandedMaps
|
|
5431
5449
|
rows = rows.slice(rows.length - 1, rows.length)
|
|
5432
5450
|
}
|
|
5433
5451
|
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
|
|
5434
5452
|
if (expanded) {
|
|
5435
5453
|
validRows.forEach((row: any) => {
|
|
5436
|
-
const rowid =
|
|
5437
|
-
if (!
|
|
5454
|
+
const rowid = handleGetRowId(row)
|
|
5455
|
+
if (!rowExpandedMaps[rowid]) {
|
|
5438
5456
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5439
5457
|
const isLoad = lazy && !rowRest.expandLoaded && !rowExpandLazyLoadedMaps[rowid]
|
|
5440
5458
|
if (isLoad) {
|
|
5441
5459
|
lazyRests.push(handleAsyncRowExpand(row))
|
|
5442
5460
|
} else {
|
|
5443
|
-
|
|
5461
|
+
rowExpandedMaps[rowid] = row
|
|
5444
5462
|
}
|
|
5445
5463
|
}
|
|
5446
5464
|
})
|
|
5447
5465
|
} else {
|
|
5448
5466
|
validRows.forEach(item => {
|
|
5449
|
-
const rowid =
|
|
5450
|
-
if (
|
|
5451
|
-
delete
|
|
5467
|
+
const rowid = handleGetRowId(item)
|
|
5468
|
+
if (rowExpandedMaps[rowid]) {
|
|
5469
|
+
delete rowExpandedMaps[rowid]
|
|
5452
5470
|
}
|
|
5453
5471
|
})
|
|
5454
5472
|
}
|
|
@@ -5456,7 +5474,7 @@ export default defineComponent({
|
|
|
5456
5474
|
validRows.forEach((row) => handleRowExpandReserve(row, expanded))
|
|
5457
5475
|
}
|
|
5458
5476
|
}
|
|
5459
|
-
reactData.
|
|
5477
|
+
reactData.rowExpandedFlag++
|
|
5460
5478
|
return Promise.all(lazyRests)
|
|
5461
5479
|
.then(() => nextTick())
|
|
5462
5480
|
.then(() => $xeTable.recalculate(true))
|
|
@@ -5472,9 +5490,10 @@ export default defineComponent({
|
|
|
5472
5490
|
* @param {Row} row 行对象
|
|
5473
5491
|
*/
|
|
5474
5492
|
isRowExpandByRow (row) {
|
|
5475
|
-
const {
|
|
5493
|
+
const { rowExpandedFlag } = reactData
|
|
5494
|
+
const { rowExpandedMaps } = internalData
|
|
5476
5495
|
const rowid = getRowid($xeTable, row)
|
|
5477
|
-
return !!rowExpandedMaps[rowid]
|
|
5496
|
+
return !!rowExpandedFlag && !!rowExpandedMaps[rowid]
|
|
5478
5497
|
},
|
|
5479
5498
|
isExpandByRow (row) {
|
|
5480
5499
|
// 已废弃
|
|
@@ -5491,7 +5510,8 @@ export default defineComponent({
|
|
|
5491
5510
|
const expandOpts = computeExpandOpts.value
|
|
5492
5511
|
const { reserve } = expandOpts
|
|
5493
5512
|
const expList = $xeTable.getRowExpandRecords()
|
|
5494
|
-
|
|
5513
|
+
internalData.rowExpandedMaps = {}
|
|
5514
|
+
reactData.rowExpandedFlag++
|
|
5495
5515
|
if (reserve) {
|
|
5496
5516
|
tableFullData.forEach((row) => handleRowExpandReserve(row, false))
|
|
5497
5517
|
}
|
|
@@ -5512,7 +5532,7 @@ export default defineComponent({
|
|
|
5512
5532
|
},
|
|
5513
5533
|
getRowExpandRecords () {
|
|
5514
5534
|
const rest: any[] = []
|
|
5515
|
-
XEUtils.each(
|
|
5535
|
+
XEUtils.each(internalData.rowExpandedMaps, item => {
|
|
5516
5536
|
if (item) {
|
|
5517
5537
|
rest.push(item)
|
|
5518
5538
|
}
|
|
@@ -5521,7 +5541,7 @@ export default defineComponent({
|
|
|
5521
5541
|
},
|
|
5522
5542
|
getTreeExpandRecords () {
|
|
5523
5543
|
const rest: any[] = []
|
|
5524
|
-
XEUtils.each(
|
|
5544
|
+
XEUtils.each(internalData.treeExpandedMaps, item => {
|
|
5525
5545
|
if (item) {
|
|
5526
5546
|
rest.push(item)
|
|
5527
5547
|
}
|
|
@@ -5538,12 +5558,10 @@ export default defineComponent({
|
|
|
5538
5558
|
return rowRest && !!rowRest.treeLoaded
|
|
5539
5559
|
},
|
|
5540
5560
|
clearTreeExpandLoaded (rows: any) {
|
|
5541
|
-
const { fullAllDataRowIdData } = internalData
|
|
5561
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData
|
|
5542
5562
|
const treeOpts = computeTreeOpts.value
|
|
5543
5563
|
const { transform } = treeOpts
|
|
5544
|
-
let tExpandedMaps: Record<string, any> = {}
|
|
5545
5564
|
if (rows) {
|
|
5546
|
-
tExpandedMaps = { ...reactData.treeExpandedMaps }
|
|
5547
5565
|
if (!XEUtils.isArray(rows)) {
|
|
5548
5566
|
rows = [rows]
|
|
5549
5567
|
}
|
|
@@ -5552,8 +5570,8 @@ export default defineComponent({
|
|
|
5552
5570
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5553
5571
|
if (rowRest) {
|
|
5554
5572
|
rowRest.treeLoaded = false
|
|
5555
|
-
if (
|
|
5556
|
-
delete
|
|
5573
|
+
if (treeExpandedMaps[rowid]) {
|
|
5574
|
+
delete treeExpandedMaps[rowid]
|
|
5557
5575
|
}
|
|
5558
5576
|
}
|
|
5559
5577
|
})
|
|
@@ -5562,7 +5580,8 @@ export default defineComponent({
|
|
|
5562
5580
|
rowRest.treeLoaded = false
|
|
5563
5581
|
})
|
|
5564
5582
|
}
|
|
5565
|
-
|
|
5583
|
+
internalData.treeExpandedMaps = {}
|
|
5584
|
+
reactData.treeExpandedFlag++
|
|
5566
5585
|
if (transform) {
|
|
5567
5586
|
handleVirtualTreeToList()
|
|
5568
5587
|
return $xeTable.handleTableData()
|
|
@@ -5574,7 +5593,7 @@ export default defineComponent({
|
|
|
5574
5593
|
* @param {Row} row 行对象
|
|
5575
5594
|
*/
|
|
5576
5595
|
reloadTreeExpand (row) {
|
|
5577
|
-
const { treeExpandLazyLoadedMaps } =
|
|
5596
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
5578
5597
|
const treeOpts = computeTreeOpts.value
|
|
5579
5598
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
5580
5599
|
const { transform, lazy } = treeOpts
|
|
@@ -5659,8 +5678,9 @@ export default defineComponent({
|
|
|
5659
5678
|
* @param {Row} row 行对象
|
|
5660
5679
|
*/
|
|
5661
5680
|
isTreeExpandByRow (row) {
|
|
5662
|
-
const {
|
|
5663
|
-
|
|
5681
|
+
const { treeExpandedFlag } = reactData
|
|
5682
|
+
const { treeExpandedMaps } = internalData
|
|
5683
|
+
return !!treeExpandedFlag && !!treeExpandedMaps[getRowid($xeTable, row)]
|
|
5664
5684
|
},
|
|
5665
5685
|
/**
|
|
5666
5686
|
* 手动清空树形节点的展开状态,数据会恢复成未展开的状态
|
|
@@ -5670,19 +5690,20 @@ export default defineComponent({
|
|
|
5670
5690
|
const treeOpts = computeTreeOpts.value
|
|
5671
5691
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
5672
5692
|
const { transform, reserve } = treeOpts
|
|
5673
|
-
const expList =
|
|
5674
|
-
|
|
5693
|
+
const expList = $xeTable.getTreeExpandRecords()
|
|
5694
|
+
internalData.treeExpandedMaps = {}
|
|
5695
|
+
reactData.treeExpandedFlag++
|
|
5675
5696
|
if (reserve) {
|
|
5676
5697
|
XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), { children: childrenField })
|
|
5677
5698
|
}
|
|
5678
|
-
return
|
|
5699
|
+
return $xeTable.handleTableData().then(() => {
|
|
5679
5700
|
if (transform) {
|
|
5680
5701
|
handleVirtualTreeToList()
|
|
5681
|
-
return
|
|
5702
|
+
return $xeTable.handleTableData()
|
|
5682
5703
|
}
|
|
5683
5704
|
}).then(() => {
|
|
5684
5705
|
if (expList.length) {
|
|
5685
|
-
return
|
|
5706
|
+
return $xeTable.recalculate()
|
|
5686
5707
|
}
|
|
5687
5708
|
})
|
|
5688
5709
|
},
|
|
@@ -5941,7 +5962,13 @@ export default defineComponent({
|
|
|
5941
5962
|
const { id } = props
|
|
5942
5963
|
const customOpts = computeCustomOpts.value
|
|
5943
5964
|
const { collectColumn } = internalData
|
|
5944
|
-
const { checkMethod } = customOpts
|
|
5965
|
+
const { storage, checkMethod } = customOpts
|
|
5966
|
+
const isAllCustom = storage === true
|
|
5967
|
+
const storageOpts: VxeTableDefines.VxeTableCustomStorageObj = isAllCustom ? {} : Object.assign({}, storage || {})
|
|
5968
|
+
const isCustomResizable = isAllCustom || storageOpts.resizable
|
|
5969
|
+
const isCustomVisible = isAllCustom || storageOpts.visible
|
|
5970
|
+
const isCustomFixed = isAllCustom || storageOpts.fixed
|
|
5971
|
+
const isCustomSort = isAllCustom || storageOpts.sort
|
|
5945
5972
|
const resizableData: Record<string, number> = {}
|
|
5946
5973
|
const sortData: Record<string, number> = {}
|
|
5947
5974
|
const visibleData: Record<string, boolean> = {}
|
|
@@ -5961,43 +5988,33 @@ export default defineComponent({
|
|
|
5961
5988
|
let hasFixed = 0
|
|
5962
5989
|
let hasVisible = 0
|
|
5963
5990
|
XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
|
|
5991
|
+
const colKey = column.getKey()
|
|
5992
|
+
if (!colKey) {
|
|
5993
|
+
errLog('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`])
|
|
5994
|
+
return
|
|
5995
|
+
}
|
|
5964
5996
|
// 只支持一级
|
|
5965
5997
|
if (!parentColumn) {
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
|
|
5969
|
-
hasSort = 1
|
|
5970
|
-
sortData[colKey] = column.renderSortNumber
|
|
5971
|
-
}
|
|
5972
|
-
})
|
|
5973
|
-
if (column.fixed !== column.defaultFixed) {
|
|
5974
|
-
const colKey = column.getKey()
|
|
5975
|
-
if (colKey) {
|
|
5976
|
-
hasFixed = 1
|
|
5977
|
-
fixedData[colKey] = column.fixed
|
|
5978
|
-
}
|
|
5998
|
+
if (isCustomSort) {
|
|
5999
|
+
hasSort = 1
|
|
6000
|
+
sortData[colKey] = column.renderSortNumber
|
|
5979
6001
|
}
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
if (colKey) {
|
|
5984
|
-
hasResizable = 1
|
|
5985
|
-
resizableData[colKey] = column.renderWidth
|
|
6002
|
+
if (isCustomFixed && column.fixed !== column.defaultFixed) {
|
|
6003
|
+
hasFixed = 1
|
|
6004
|
+
fixedData[colKey] = column.fixed
|
|
5986
6005
|
}
|
|
5987
6006
|
}
|
|
5988
|
-
if (
|
|
6007
|
+
if (isCustomResizable && column.resizeWidth) {
|
|
6008
|
+
hasResizable = 1
|
|
6009
|
+
resizableData[colKey] = column.renderWidth
|
|
6010
|
+
}
|
|
6011
|
+
if (isCustomVisible && (!checkMethod || checkMethod({ column }))) {
|
|
5989
6012
|
if (!column.visible && column.defaultVisible) {
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
hasVisible = 1
|
|
5993
|
-
visibleData[colKey] = false
|
|
5994
|
-
}
|
|
6013
|
+
hasVisible = 1
|
|
6014
|
+
visibleData[colKey] = false
|
|
5995
6015
|
} else if (column.visible && !column.defaultVisible) {
|
|
5996
|
-
|
|
5997
|
-
|
|
5998
|
-
hasVisible = 1
|
|
5999
|
-
visibleData[colKey] = true
|
|
6000
|
-
}
|
|
6016
|
+
hasVisible = 1
|
|
6017
|
+
visibleData[colKey] = true
|
|
6001
6018
|
}
|
|
6002
6019
|
}
|
|
6003
6020
|
})
|
|
@@ -6347,7 +6364,7 @@ export default defineComponent({
|
|
|
6347
6364
|
if (keyboardOpts.enterToTab) {
|
|
6348
6365
|
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt)
|
|
6349
6366
|
} else {
|
|
6350
|
-
$xeTable.
|
|
6367
|
+
$xeTable.moveEnterSelected(activeParams, isLeftArrow, true, isRightArrow, false, evnt)
|
|
6351
6368
|
}
|
|
6352
6369
|
} else {
|
|
6353
6370
|
if (keyboardOpts.enterToTab) {
|
|
@@ -6379,7 +6396,7 @@ export default defineComponent({
|
|
|
6379
6396
|
return
|
|
6380
6397
|
}
|
|
6381
6398
|
}
|
|
6382
|
-
$xeTable.
|
|
6399
|
+
$xeTable.moveEnterSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt)
|
|
6383
6400
|
if (enterMethod) {
|
|
6384
6401
|
enterMethod(etrParams)
|
|
6385
6402
|
}
|
|
@@ -6408,10 +6425,7 @@ export default defineComponent({
|
|
|
6408
6425
|
if (!isEditStatus) {
|
|
6409
6426
|
// 如果按下了方向键
|
|
6410
6427
|
if (selected.row && selected.column) {
|
|
6411
|
-
$xeTable.
|
|
6412
|
-
} else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
6413
|
-
// 当前行按键上下移动
|
|
6414
|
-
$xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt)
|
|
6428
|
+
$xeTable.moveArrowSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt)
|
|
6415
6429
|
}
|
|
6416
6430
|
}
|
|
6417
6431
|
} else if (isTab && keyboardConfig && keyboardOpts.isTab) {
|
|
@@ -6789,8 +6803,9 @@ export default defineComponent({
|
|
|
6789
6803
|
* @param {Event} evnt 事件
|
|
6790
6804
|
* @param {Row} row 行对象
|
|
6791
6805
|
*/
|
|
6792
|
-
const handleTooltip = (evnt: MouseEvent, tdEl: HTMLTableCellElement, overflowElem: HTMLElement
|
|
6793
|
-
|
|
6806
|
+
const handleTooltip = (evnt: MouseEvent, tdEl: HTMLTableCellElement, overflowElem: HTMLElement | null, params: any) => {
|
|
6807
|
+
const tipOverEl = overflowElem || tdEl
|
|
6808
|
+
if (!tipOverEl) {
|
|
6794
6809
|
return nextTick()
|
|
6795
6810
|
}
|
|
6796
6811
|
params.cell = tdEl
|
|
@@ -6800,9 +6815,8 @@ export default defineComponent({
|
|
|
6800
6815
|
const { showAll, contentMethod } = tooltipOpts
|
|
6801
6816
|
const customContent = contentMethod ? contentMethod(params) : null
|
|
6802
6817
|
const useCustom = contentMethod && !XEUtils.eqNull(customContent)
|
|
6803
|
-
const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ?
|
|
6804
|
-
|
|
6805
|
-
if (content && (showAll || useCustom || isCellOverflow)) {
|
|
6818
|
+
const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim()
|
|
6819
|
+
if (content && (showAll || useCustom || (tipOverEl.scrollWidth > tipOverEl.clientWidth))) {
|
|
6806
6820
|
Object.assign(tooltipStore, {
|
|
6807
6821
|
row,
|
|
6808
6822
|
column,
|
|
@@ -6812,7 +6826,7 @@ export default defineComponent({
|
|
|
6812
6826
|
nextTick(() => {
|
|
6813
6827
|
const $tooltip = refTooltip.value
|
|
6814
6828
|
if ($tooltip && $tooltip.open) {
|
|
6815
|
-
$tooltip.open(
|
|
6829
|
+
$tooltip.open(tipOverEl, formatText(content))
|
|
6816
6830
|
}
|
|
6817
6831
|
})
|
|
6818
6832
|
}
|
|
@@ -6954,19 +6968,15 @@ export default defineComponent({
|
|
|
6954
6968
|
*/
|
|
6955
6969
|
cacheRowMap () {
|
|
6956
6970
|
const { treeConfig } = props
|
|
6957
|
-
const { treeExpandedMaps } =
|
|
6958
|
-
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData
|
|
6971
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData
|
|
6959
6972
|
const treeOpts = computeTreeOpts.value
|
|
6960
6973
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
6961
6974
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
6962
6975
|
const { lazy } = treeOpts
|
|
6963
|
-
const rowkey = getRowkey($xeTable)
|
|
6964
|
-
const isDeepKey = rowkey.indexOf('.') > -1
|
|
6965
6976
|
const fullAllDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = { ...fullAllDataRowIdData } // 存在已删除数据
|
|
6966
6977
|
const fullDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = {}
|
|
6967
|
-
const treeTempExpandedMaps = { ...treeExpandedMaps }
|
|
6968
6978
|
|
|
6969
|
-
const
|
|
6979
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
|
|
6970
6980
|
const handleRowCache = (row: any, index: number, items: any, currIndex: number, parentRow: any, rowid: string, level: number, seq: string | number) => {
|
|
6971
6981
|
let rowRest = fullAllDataRowIdMaps[rowid]
|
|
6972
6982
|
if (!rowRest) {
|
|
@@ -6983,19 +6993,21 @@ export default defineComponent({
|
|
|
6983
6993
|
rowRest.level = level
|
|
6984
6994
|
rowRest.index = currIndex
|
|
6985
6995
|
rowRest.treeIndex = index
|
|
6996
|
+
|
|
6997
|
+
fullDataRowIdMaps[rowid] = rowRest
|
|
6998
|
+
fullAllDataRowIdMaps[rowid] = rowRest
|
|
6986
6999
|
}
|
|
6987
7000
|
|
|
6988
7001
|
if (treeConfig) {
|
|
6989
7002
|
XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
6990
|
-
const rowid =
|
|
7003
|
+
const rowid = handleUpdateRowId(row)
|
|
6991
7004
|
if (treeConfig && lazy) {
|
|
6992
|
-
const treeExpRest = treeTempExpandedMaps[rowid]
|
|
6993
7005
|
if (row[hasChildField] && row[childrenField] === undefined) {
|
|
6994
7006
|
row[childrenField] = null
|
|
6995
7007
|
}
|
|
6996
|
-
if (
|
|
7008
|
+
if (treeExpandedMaps[rowid]) {
|
|
6997
7009
|
if (!row[childrenField] || !row[childrenField].length) {
|
|
6998
|
-
delete
|
|
7010
|
+
delete treeExpandedMaps[rowid]
|
|
6999
7011
|
}
|
|
7000
7012
|
}
|
|
7001
7013
|
}
|
|
@@ -7003,28 +7015,23 @@ export default defineComponent({
|
|
|
7003
7015
|
}, { children: childrenField })
|
|
7004
7016
|
} else {
|
|
7005
7017
|
tableFullData.forEach((row, index, items) => {
|
|
7006
|
-
handleRowCache(row, index, items, index, null,
|
|
7018
|
+
handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1)
|
|
7007
7019
|
})
|
|
7008
7020
|
}
|
|
7009
7021
|
|
|
7010
7022
|
internalData.fullDataRowIdData = fullDataRowIdMaps
|
|
7011
7023
|
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps
|
|
7012
|
-
reactData.
|
|
7024
|
+
reactData.treeExpandedFlag++
|
|
7013
7025
|
},
|
|
7014
7026
|
cacheSourceMap (fullData) {
|
|
7015
7027
|
const { treeConfig } = props
|
|
7016
7028
|
const treeOpts = computeTreeOpts.value
|
|
7017
|
-
let { sourceDataRowIdData } = internalData
|
|
7018
7029
|
const sourceData = XEUtils.clone(fullData, true)
|
|
7019
|
-
const
|
|
7020
|
-
|
|
7030
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
|
|
7031
|
+
const sourceRowIdData: Record<string, any> = {}
|
|
7021
7032
|
const handleSourceRow = (row: any) => {
|
|
7022
|
-
|
|
7023
|
-
|
|
7024
|
-
rowid = getRowUniqueId()
|
|
7025
|
-
XEUtils.set(row, rowkey, rowid)
|
|
7026
|
-
}
|
|
7027
|
-
sourceDataRowIdData[rowid] = row
|
|
7033
|
+
const rowid = handleUpdateRowId(row)
|
|
7034
|
+
sourceRowIdData[rowid] = row
|
|
7028
7035
|
}
|
|
7029
7036
|
// 源数据缓存
|
|
7030
7037
|
if (treeConfig) {
|
|
@@ -7033,6 +7040,7 @@ export default defineComponent({
|
|
|
7033
7040
|
} else {
|
|
7034
7041
|
sourceData.forEach(handleSourceRow)
|
|
7035
7042
|
}
|
|
7043
|
+
internalData.sourceDataRowIdData = sourceRowIdData
|
|
7036
7044
|
internalData.tableSourceData = sourceData
|
|
7037
7045
|
},
|
|
7038
7046
|
/**
|
|
@@ -7479,8 +7487,21 @@ export default defineComponent({
|
|
|
7479
7487
|
}
|
|
7480
7488
|
// 兼容老版本
|
|
7481
7489
|
|
|
7482
|
-
let rest
|
|
7483
|
-
|
|
7490
|
+
let rest = null
|
|
7491
|
+
let isStop = false
|
|
7492
|
+
for (let i = 0; i < evntList.length; i++) {
|
|
7493
|
+
const func = evntList[i]
|
|
7494
|
+
const fnRest = func(Object.assign({ $grid: $xeGrid, $table: $xeTable, $event: evnt }, args))
|
|
7495
|
+
if (fnRest === false) {
|
|
7496
|
+
isStop = true
|
|
7497
|
+
break
|
|
7498
|
+
} else if (fnRest && fnRest.status === false) {
|
|
7499
|
+
rest = fnRest.result
|
|
7500
|
+
isStop = true
|
|
7501
|
+
break
|
|
7502
|
+
}
|
|
7503
|
+
}
|
|
7504
|
+
if (!isStop) {
|
|
7484
7505
|
if (next) {
|
|
7485
7506
|
rest = next()
|
|
7486
7507
|
}
|
|
@@ -7492,9 +7513,7 @@ export default defineComponent({
|
|
|
7492
7513
|
},
|
|
7493
7514
|
updateCheckboxStatus () {
|
|
7494
7515
|
const { treeConfig } = props
|
|
7495
|
-
const { selectCheckboxMaps,
|
|
7496
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps)
|
|
7497
|
-
const halfRowMaps = Object.assign({}, treeIndeterminateMaps)
|
|
7516
|
+
const { selectCheckboxMaps, treeIndeterminateRowMaps } = internalData
|
|
7498
7517
|
const treeOpts = computeTreeOpts.value
|
|
7499
7518
|
const { transform, mapChildrenField } = treeOpts
|
|
7500
7519
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -7506,10 +7525,11 @@ export default defineComponent({
|
|
|
7506
7525
|
}
|
|
7507
7526
|
// 树结构
|
|
7508
7527
|
if (treeConfig) {
|
|
7528
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7509
7529
|
const childRowMaps: Record<string, number> = {}
|
|
7510
7530
|
const childRowList: any[][] = []
|
|
7511
7531
|
XEUtils.eachTree(afterTreeFullData, (row) => {
|
|
7512
|
-
const rowid =
|
|
7532
|
+
const rowid = handleGetRowId(row)
|
|
7513
7533
|
const childList = row[transform ? mapChildrenField : childrenField]
|
|
7514
7534
|
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
7515
7535
|
childRowMaps[rowid] = 1
|
|
@@ -7526,29 +7546,29 @@ export default defineComponent({
|
|
|
7526
7546
|
childList.forEach(
|
|
7527
7547
|
checkMethod
|
|
7528
7548
|
? (item) => {
|
|
7529
|
-
const childRowid =
|
|
7530
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7549
|
+
const childRowid = handleGetRowId(item)
|
|
7550
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid]
|
|
7531
7551
|
if (checkMethod({ row: item })) {
|
|
7532
7552
|
if (isSelect) {
|
|
7533
7553
|
sLen++
|
|
7534
|
-
} else if (
|
|
7554
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7535
7555
|
hLen++
|
|
7536
7556
|
}
|
|
7537
7557
|
vLen++
|
|
7538
7558
|
} else {
|
|
7539
7559
|
if (isSelect) {
|
|
7540
7560
|
sLen++
|
|
7541
|
-
} else if (
|
|
7561
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7542
7562
|
hLen++
|
|
7543
7563
|
}
|
|
7544
7564
|
}
|
|
7545
7565
|
}
|
|
7546
7566
|
: item => {
|
|
7547
|
-
const childRowid =
|
|
7548
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7567
|
+
const childRowid = handleGetRowId(item)
|
|
7568
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid]
|
|
7549
7569
|
if (isSelect) {
|
|
7550
7570
|
sLen++
|
|
7551
|
-
} else if (
|
|
7571
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7552
7572
|
hLen++
|
|
7553
7573
|
}
|
|
7554
7574
|
vLen++
|
|
@@ -7561,36 +7581,35 @@ export default defineComponent({
|
|
|
7561
7581
|
}
|
|
7562
7582
|
if (isSelected) {
|
|
7563
7583
|
if (!checkField) {
|
|
7564
|
-
|
|
7584
|
+
selectCheckboxMaps[rowid] = row
|
|
7565
7585
|
}
|
|
7566
|
-
if (
|
|
7567
|
-
delete
|
|
7586
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7587
|
+
delete treeIndeterminateRowMaps[rowid]
|
|
7568
7588
|
}
|
|
7569
7589
|
} else {
|
|
7570
7590
|
if (!checkField) {
|
|
7571
|
-
if (
|
|
7572
|
-
delete
|
|
7591
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7592
|
+
delete selectCheckboxMaps[rowid]
|
|
7573
7593
|
}
|
|
7574
7594
|
}
|
|
7575
7595
|
if (halfSelect) {
|
|
7576
|
-
|
|
7596
|
+
treeIndeterminateRowMaps[rowid] = row
|
|
7577
7597
|
} else {
|
|
7578
|
-
if (
|
|
7579
|
-
delete
|
|
7598
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7599
|
+
delete treeIndeterminateRowMaps[rowid]
|
|
7580
7600
|
}
|
|
7581
7601
|
}
|
|
7582
7602
|
}
|
|
7583
7603
|
})
|
|
7584
7604
|
}
|
|
7585
|
-
reactData.
|
|
7586
|
-
reactData.treeIndeterminateMaps = halfRowMaps
|
|
7605
|
+
reactData.updateCheckboxFlag++
|
|
7587
7606
|
},
|
|
7588
7607
|
updateAllCheckboxStatus () {
|
|
7589
7608
|
const { treeConfig } = props
|
|
7590
|
-
const { selectCheckboxMaps,
|
|
7609
|
+
const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData
|
|
7591
7610
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7592
7611
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts
|
|
7593
|
-
const {
|
|
7612
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7594
7613
|
|
|
7595
7614
|
let sLen = 0 // 已选
|
|
7596
7615
|
let hLen = 0 // 半选
|
|
@@ -7599,29 +7618,29 @@ export default defineComponent({
|
|
|
7599
7618
|
const rootList = (treeConfig ? afterTreeFullData : afterFullData)
|
|
7600
7619
|
rootList.forEach(checkMethod
|
|
7601
7620
|
? row => {
|
|
7602
|
-
const childRowid =
|
|
7621
|
+
const childRowid = handleGetRowId(row)
|
|
7603
7622
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid]
|
|
7604
7623
|
if (checkMethod({ row })) {
|
|
7605
7624
|
if (selected) {
|
|
7606
7625
|
sLen++
|
|
7607
|
-
} else if (
|
|
7626
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7608
7627
|
hLen++
|
|
7609
7628
|
}
|
|
7610
7629
|
vLen++
|
|
7611
7630
|
} else {
|
|
7612
7631
|
if (selected) {
|
|
7613
7632
|
sLen++
|
|
7614
|
-
} else if (
|
|
7633
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7615
7634
|
hLen++
|
|
7616
7635
|
}
|
|
7617
7636
|
}
|
|
7618
7637
|
}
|
|
7619
7638
|
: row => {
|
|
7620
|
-
const childRowid =
|
|
7639
|
+
const childRowid = handleGetRowId(row)
|
|
7621
7640
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid]
|
|
7622
7641
|
if (selected) {
|
|
7623
7642
|
sLen++
|
|
7624
|
-
} else if (
|
|
7643
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7625
7644
|
hLen++
|
|
7626
7645
|
}
|
|
7627
7646
|
vLen++
|
|
@@ -7648,13 +7667,13 @@ export default defineComponent({
|
|
|
7648
7667
|
*/
|
|
7649
7668
|
handleBatchSelectRows (rows, checked, isForce) {
|
|
7650
7669
|
const { treeConfig } = props
|
|
7651
|
-
const { selectCheckboxMaps } =
|
|
7652
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps)
|
|
7670
|
+
const { selectCheckboxMaps } = internalData
|
|
7653
7671
|
const treeOpts = computeTreeOpts.value
|
|
7654
7672
|
const { transform, mapChildrenField } = treeOpts
|
|
7655
7673
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
7656
7674
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7657
7675
|
const { checkField, checkStrictly, checkMethod } = checkboxOpts
|
|
7676
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7658
7677
|
// indeterminateField 仅支持读取
|
|
7659
7678
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
|
|
7660
7679
|
if (checkField) {
|
|
@@ -7670,18 +7689,17 @@ export default defineComponent({
|
|
|
7670
7689
|
handleCheckboxReserveRow(row, checked)
|
|
7671
7690
|
}
|
|
7672
7691
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
7673
|
-
reactData.
|
|
7692
|
+
reactData.updateCheckboxFlag++
|
|
7674
7693
|
return
|
|
7675
|
-
} else {
|
|
7676
|
-
// 列表
|
|
7677
|
-
rows.forEach(row => {
|
|
7678
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7679
|
-
XEUtils.set(row, checkField, checked)
|
|
7680
|
-
handleCheckboxReserveRow(row, checked)
|
|
7681
|
-
}
|
|
7682
|
-
})
|
|
7683
7694
|
}
|
|
7684
|
-
|
|
7695
|
+
// 列表
|
|
7696
|
+
rows.forEach(row => {
|
|
7697
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7698
|
+
XEUtils.set(row, checkField, checked)
|
|
7699
|
+
handleCheckboxReserveRow(row, checked)
|
|
7700
|
+
}
|
|
7701
|
+
})
|
|
7702
|
+
reactData.updateCheckboxFlag++
|
|
7685
7703
|
return
|
|
7686
7704
|
}
|
|
7687
7705
|
|
|
@@ -7689,39 +7707,39 @@ export default defineComponent({
|
|
|
7689
7707
|
if (treeConfig && !checkStrictly) {
|
|
7690
7708
|
// 更新子节点状态
|
|
7691
7709
|
XEUtils.eachTree(rows, (row) => {
|
|
7692
|
-
const rowid =
|
|
7710
|
+
const rowid = handleGetRowId(row)
|
|
7693
7711
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7694
7712
|
if (checked) {
|
|
7695
|
-
|
|
7713
|
+
selectCheckboxMaps[rowid] = row
|
|
7696
7714
|
} else {
|
|
7697
|
-
if (
|
|
7698
|
-
delete
|
|
7715
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7716
|
+
delete selectCheckboxMaps[rowid]
|
|
7699
7717
|
}
|
|
7700
7718
|
}
|
|
7701
7719
|
handleCheckboxReserveRow(row, checked)
|
|
7702
7720
|
}
|
|
7703
7721
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
7704
|
-
reactData.
|
|
7722
|
+
reactData.updateCheckboxFlag++
|
|
7705
7723
|
return
|
|
7706
7724
|
}
|
|
7707
7725
|
|
|
7708
7726
|
// 列表
|
|
7709
7727
|
rows.forEach(row => {
|
|
7710
|
-
const rowid =
|
|
7728
|
+
const rowid = handleGetRowId(row)
|
|
7711
7729
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7712
7730
|
if (checked) {
|
|
7713
|
-
if (!
|
|
7714
|
-
|
|
7731
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
7732
|
+
selectCheckboxMaps[rowid] = row
|
|
7715
7733
|
}
|
|
7716
7734
|
} else {
|
|
7717
|
-
if (
|
|
7718
|
-
delete
|
|
7735
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7736
|
+
delete selectCheckboxMaps[rowid]
|
|
7719
7737
|
}
|
|
7720
7738
|
}
|
|
7721
7739
|
handleCheckboxReserveRow(row, checked)
|
|
7740
|
+
reactData.updateCheckboxFlag++
|
|
7722
7741
|
}
|
|
7723
7742
|
})
|
|
7724
|
-
reactData.selectCheckboxMaps = selectRowMaps
|
|
7725
7743
|
},
|
|
7726
7744
|
/**
|
|
7727
7745
|
* 即将移除
|
|
@@ -7769,7 +7787,7 @@ export default defineComponent({
|
|
|
7769
7787
|
return
|
|
7770
7788
|
}
|
|
7771
7789
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7772
|
-
handleTooltip(evnt, thEl, cellEl,
|
|
7790
|
+
handleTooltip(evnt, thEl, thEl.querySelector<HTMLElement>('.vxe-cell--title') || cellEl, params)
|
|
7773
7791
|
}
|
|
7774
7792
|
},
|
|
7775
7793
|
/**
|
|
@@ -7796,7 +7814,7 @@ export default defineComponent({
|
|
|
7796
7814
|
}
|
|
7797
7815
|
}
|
|
7798
7816
|
if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
|
|
7799
|
-
handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--
|
|
7817
|
+
handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), params)
|
|
7800
7818
|
}
|
|
7801
7819
|
},
|
|
7802
7820
|
/**
|
|
@@ -7805,10 +7823,10 @@ export default defineComponent({
|
|
|
7805
7823
|
triggerFooterTooltipEvent (evnt, params) {
|
|
7806
7824
|
const { column } = params
|
|
7807
7825
|
const { tooltipStore } = reactData
|
|
7808
|
-
const
|
|
7826
|
+
const tdEl = evnt.currentTarget as HTMLTableCellElement
|
|
7809
7827
|
handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row)
|
|
7810
7828
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7811
|
-
handleTooltip(evnt,
|
|
7829
|
+
handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper') as HTMLElement, params)
|
|
7812
7830
|
}
|
|
7813
7831
|
},
|
|
7814
7832
|
handleTargetLeaveEvent () {
|
|
@@ -7832,17 +7850,18 @@ export default defineComponent({
|
|
|
7832
7850
|
const { _lastResizeTime } = internalData
|
|
7833
7851
|
const sortOpts = computeSortOpts.value
|
|
7834
7852
|
const columnOpts = computeColumnOpts.value
|
|
7853
|
+
const currentColumnOpts = computeCurrentColumnOpts.value
|
|
7835
7854
|
const { column } = params
|
|
7836
7855
|
const cell = evnt.currentTarget
|
|
7837
7856
|
const triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300
|
|
7838
7857
|
const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag
|
|
7839
7858
|
const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag
|
|
7840
7859
|
if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
|
|
7841
|
-
|
|
7860
|
+
$xeTable.triggerSortEvent(evnt, column, getNextSortOrder(column))
|
|
7842
7861
|
}
|
|
7843
7862
|
dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt)
|
|
7844
|
-
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
7845
|
-
|
|
7863
|
+
if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
|
|
7864
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params)
|
|
7846
7865
|
}
|
|
7847
7866
|
},
|
|
7848
7867
|
triggerHeaderCellDblclickEvent (evnt, params) {
|
|
@@ -7854,7 +7873,7 @@ export default defineComponent({
|
|
|
7854
7873
|
* 如果是双击模式,则单击后选中状态
|
|
7855
7874
|
*/
|
|
7856
7875
|
triggerCellClickEvent (evnt, params) {
|
|
7857
|
-
const { highlightCurrentRow, editConfig } = props
|
|
7876
|
+
const { highlightCurrentRow, highlightCurrentColumn, editConfig } = props
|
|
7858
7877
|
const { editStore, isDragResize } = reactData
|
|
7859
7878
|
if (isDragResize) {
|
|
7860
7879
|
return
|
|
@@ -7866,6 +7885,8 @@ export default defineComponent({
|
|
|
7866
7885
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7867
7886
|
const keyboardOpts = computeKeyboardOpts.value
|
|
7868
7887
|
const rowOpts = computeRowOpts.value
|
|
7888
|
+
const columnOpts = computeColumnOpts.value
|
|
7889
|
+
const currentColumnOpts = computeCurrentColumnOpts.value
|
|
7869
7890
|
const { actived, focused } = editStore
|
|
7870
7891
|
const { row, column } = params
|
|
7871
7892
|
const { type, treeNode } = column
|
|
@@ -7881,29 +7902,35 @@ export default defineComponent({
|
|
|
7881
7902
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7882
7903
|
// 如果是展开行
|
|
7883
7904
|
if (!triggerExpandNode && (expandOpts.trigger === 'row' || (isExpandType && expandOpts.trigger === 'cell'))) {
|
|
7884
|
-
|
|
7905
|
+
$xeTable.triggerRowExpandEvent(evnt, params)
|
|
7885
7906
|
}
|
|
7886
7907
|
// 如果是树形表格
|
|
7887
7908
|
if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
|
|
7888
|
-
|
|
7909
|
+
$xeTable.triggerTreeExpandEvent(evnt, params)
|
|
7889
7910
|
}
|
|
7890
7911
|
}
|
|
7891
7912
|
// 如果点击了树节点
|
|
7892
7913
|
if (!triggerTreeNode) {
|
|
7893
7914
|
if (!triggerExpandNode) {
|
|
7894
|
-
//
|
|
7915
|
+
// 如果是当前行
|
|
7895
7916
|
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
7896
7917
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7897
|
-
|
|
7918
|
+
$xeTable.triggerCurrentRowEvent(evnt, params)
|
|
7919
|
+
}
|
|
7920
|
+
}
|
|
7921
|
+
// 如果是当前列
|
|
7922
|
+
if ((columnOpts.isCurrent || highlightCurrentColumn) && (!currentColumnOpts.trigger || ['cell', 'default'].includes(currentColumnOpts.trigger))) {
|
|
7923
|
+
if (!triggerCheckbox && !triggerRadio) {
|
|
7924
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params)
|
|
7898
7925
|
}
|
|
7899
7926
|
}
|
|
7900
7927
|
// 如果是单选框
|
|
7901
7928
|
if (!triggerRadio && (radioOpts.trigger === 'row' || (isRadioType && radioOpts.trigger === 'cell'))) {
|
|
7902
|
-
|
|
7929
|
+
$xeTable.triggerRadioRowEvent(evnt, params)
|
|
7903
7930
|
}
|
|
7904
7931
|
// 如果是复选框
|
|
7905
7932
|
if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
|
|
7906
|
-
|
|
7933
|
+
$xeTable.handleToggleCheckRowEvent(evnt, params)
|
|
7907
7934
|
}
|
|
7908
7935
|
}
|
|
7909
7936
|
// 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
|
|
@@ -7978,7 +8005,7 @@ export default defineComponent({
|
|
|
7978
8005
|
dispatchEvent('cell-dblclick', params, evnt)
|
|
7979
8006
|
},
|
|
7980
8007
|
handleToggleCheckRowEvent (evnt, params) {
|
|
7981
|
-
const { selectCheckboxMaps } =
|
|
8008
|
+
const { selectCheckboxMaps } = internalData
|
|
7982
8009
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7983
8010
|
const { checkField, trigger } = checkboxOpts
|
|
7984
8011
|
const { row } = params
|
|
@@ -7992,43 +8019,45 @@ export default defineComponent({
|
|
|
7992
8019
|
checked = !selectCheckboxMaps[getRowid($xeTable, row)]
|
|
7993
8020
|
}
|
|
7994
8021
|
if (evnt) {
|
|
7995
|
-
|
|
8022
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked)
|
|
7996
8023
|
} else {
|
|
7997
|
-
|
|
7998
|
-
|
|
8024
|
+
$xeTable.handleBatchSelectRows([row], checked)
|
|
8025
|
+
$xeTable.checkSelectionStatus()
|
|
7999
8026
|
}
|
|
8000
8027
|
},
|
|
8001
8028
|
triggerCheckRowEvent (evnt: MouseEvent, params, checked) {
|
|
8002
|
-
const checkboxOpts = computeCheckboxOpts.value
|
|
8003
8029
|
const { row } = params
|
|
8004
8030
|
const { afterFullData } = internalData
|
|
8031
|
+
const checkboxOpts = computeCheckboxOpts.value
|
|
8005
8032
|
const { checkMethod, trigger } = checkboxOpts
|
|
8006
8033
|
if (trigger === 'manual') {
|
|
8007
8034
|
return
|
|
8008
8035
|
}
|
|
8009
8036
|
evnt.stopPropagation()
|
|
8010
8037
|
if (checkboxOpts.isShiftKey && evnt.shiftKey && !props.treeConfig) {
|
|
8011
|
-
const checkboxRecords =
|
|
8038
|
+
const checkboxRecords = $xeTable.getCheckboxRecords()
|
|
8012
8039
|
if (checkboxRecords.length) {
|
|
8013
8040
|
const firstRow = checkboxRecords[0]
|
|
8014
|
-
const _rowIndex =
|
|
8015
|
-
const _firstRowIndex =
|
|
8041
|
+
const _rowIndex = $xeTable.getVTRowIndex(row)
|
|
8042
|
+
const _firstRowIndex = $xeTable.getVTRowIndex(firstRow)
|
|
8016
8043
|
if (_rowIndex !== _firstRowIndex) {
|
|
8017
|
-
|
|
8044
|
+
$xeTable.setAllCheckboxRow(false)
|
|
8018
8045
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1)
|
|
8019
|
-
|
|
8046
|
+
nextTick(() => {
|
|
8047
|
+
handleCheckedCheckboxRow(rangeRows, true, false)
|
|
8048
|
+
})
|
|
8020
8049
|
dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt)
|
|
8021
8050
|
return
|
|
8022
8051
|
}
|
|
8023
8052
|
}
|
|
8024
8053
|
}
|
|
8025
8054
|
if (!checkMethod || checkMethod({ row })) {
|
|
8026
|
-
|
|
8027
|
-
|
|
8055
|
+
$xeTable.handleBatchSelectRows([row], checked)
|
|
8056
|
+
$xeTable.checkSelectionStatus()
|
|
8028
8057
|
dispatchEvent('checkbox-change', Object.assign({
|
|
8029
|
-
records:
|
|
8030
|
-
reserves:
|
|
8031
|
-
indeterminates:
|
|
8058
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
8059
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
8060
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
8032
8061
|
checked
|
|
8033
8062
|
}, params), evnt)
|
|
8034
8063
|
}
|
|
@@ -8099,7 +8128,8 @@ export default defineComponent({
|
|
|
8099
8128
|
* 展开行事件
|
|
8100
8129
|
*/
|
|
8101
8130
|
triggerRowExpandEvent (evnt, params) {
|
|
8102
|
-
const {
|
|
8131
|
+
const { expandColumn: column } = reactData
|
|
8132
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
8103
8133
|
const expandOpts = computeExpandOpts.value
|
|
8104
8134
|
const { row } = params
|
|
8105
8135
|
const { lazy, trigger } = expandOpts
|
|
@@ -8109,18 +8139,18 @@ export default defineComponent({
|
|
|
8109
8139
|
evnt.stopPropagation()
|
|
8110
8140
|
const rowid = getRowid($xeTable, row)
|
|
8111
8141
|
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
|
|
8112
|
-
const expanded =
|
|
8113
|
-
const columnIndex =
|
|
8114
|
-
const $columnIndex =
|
|
8115
|
-
|
|
8142
|
+
const expanded = !$xeTable.isRowExpandByRow(row)
|
|
8143
|
+
const columnIndex = $xeTable.getColumnIndex(column)
|
|
8144
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column)
|
|
8145
|
+
$xeTable.setRowExpand(row, expanded)
|
|
8116
8146
|
dispatchEvent('toggle-row-expand', {
|
|
8117
8147
|
expanded,
|
|
8118
8148
|
column,
|
|
8119
8149
|
columnIndex,
|
|
8120
8150
|
$columnIndex,
|
|
8121
8151
|
row,
|
|
8122
|
-
rowIndex:
|
|
8123
|
-
$rowIndex:
|
|
8152
|
+
rowIndex: $xeTable.getRowIndex(row),
|
|
8153
|
+
$rowIndex: $xeTable.getVMRowIndex(row)
|
|
8124
8154
|
}, evnt)
|
|
8125
8155
|
}
|
|
8126
8156
|
},
|
|
@@ -8128,7 +8158,7 @@ export default defineComponent({
|
|
|
8128
8158
|
* 展开树节点事件
|
|
8129
8159
|
*/
|
|
8130
8160
|
triggerTreeExpandEvent (evnt, params) {
|
|
8131
|
-
const { treeExpandLazyLoadedMaps } =
|
|
8161
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
8132
8162
|
const treeOpts = computeTreeOpts.value
|
|
8133
8163
|
const { row, column } = params
|
|
8134
8164
|
const { lazy, trigger } = treeOpts
|
|
@@ -8138,10 +8168,10 @@ export default defineComponent({
|
|
|
8138
8168
|
evnt.stopPropagation()
|
|
8139
8169
|
const rowid = getRowid($xeTable, row)
|
|
8140
8170
|
if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
|
|
8141
|
-
const expanded =
|
|
8142
|
-
const columnIndex =
|
|
8143
|
-
const $columnIndex =
|
|
8144
|
-
|
|
8171
|
+
const expanded = !$xeTable.isTreeExpandByRow(row)
|
|
8172
|
+
const columnIndex = $xeTable.getColumnIndex(column)
|
|
8173
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column)
|
|
8174
|
+
$xeTable.setTreeExpand(row, expanded)
|
|
8145
8175
|
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt)
|
|
8146
8176
|
}
|
|
8147
8177
|
},
|
|
@@ -8285,12 +8315,11 @@ export default defineComponent({
|
|
|
8285
8315
|
handleRowDragSwapEvent (evnt, isSyncRow, dragRow, prevDragRow, prevDragPos, prevDragToChild) {
|
|
8286
8316
|
const { treeConfig, dragConfig } = props
|
|
8287
8317
|
const rowDragOpts = computeRowDragOpts.value
|
|
8288
|
-
const { fullAllDataRowIdData } = internalData
|
|
8318
|
+
const { afterFullData, tableFullData, fullAllDataRowIdData } = internalData
|
|
8289
8319
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod, dragToChildMethod } = rowDragOpts
|
|
8290
8320
|
const treeOpts = computeTreeOpts.value
|
|
8291
8321
|
const { transform, rowField, mapChildrenField, parentField } = treeOpts
|
|
8292
8322
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
8293
|
-
const { afterFullData, tableFullData } = internalData
|
|
8294
8323
|
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null)
|
|
8295
8324
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
|
|
8296
8325
|
const errRest = {
|
|
@@ -9033,6 +9062,7 @@ export default defineComponent({
|
|
|
9033
9062
|
return
|
|
9034
9063
|
}
|
|
9035
9064
|
}
|
|
9065
|
+
|
|
9036
9066
|
let scrollTop = yHandleEl.scrollTop
|
|
9037
9067
|
let scrollLeft = xHandleEl.scrollLeft
|
|
9038
9068
|
if (leftScrollElem && fixedType === 'left') {
|
|
@@ -9162,10 +9192,10 @@ export default defineComponent({
|
|
|
9162
9192
|
}
|
|
9163
9193
|
|
|
9164
9194
|
const { highlightHoverRow } = tableProps
|
|
9165
|
-
const { scrollXLoad, scrollYLoad } = reactData
|
|
9195
|
+
const { scrollXLoad, scrollYLoad, expandColumn } = reactData
|
|
9166
9196
|
const leftFixedWidth = computeLeftFixedWidth.value
|
|
9167
9197
|
const rightFixedWidth = computeRightFixedWidth.value
|
|
9168
|
-
if (!(
|
|
9198
|
+
if (!(leftFixedWidth || rightFixedWidth || expandColumn)) {
|
|
9169
9199
|
return
|
|
9170
9200
|
}
|
|
9171
9201
|
|
|
@@ -9199,7 +9229,6 @@ export default defineComponent({
|
|
|
9199
9229
|
if (isTopWheel ? currScrollTop <= 0 : currScrollTop >= bodyScrollElem.scrollHeight - bodyScrollElem.clientHeight) {
|
|
9200
9230
|
return
|
|
9201
9231
|
}
|
|
9202
|
-
|
|
9203
9232
|
const scrollTop = currScrollTop + deltaTop
|
|
9204
9233
|
const scrollLeft = bodyScrollElem.scrollLeft + deltaLeft
|
|
9205
9234
|
const isRollX = scrollLeft !== lastScrollLeft
|
|
@@ -9418,8 +9447,8 @@ export default defineComponent({
|
|
|
9418
9447
|
},
|
|
9419
9448
|
// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
9420
9449
|
updateScrollYSpace () {
|
|
9421
|
-
const { isAllOverflow, scrollYLoad, expandColumn
|
|
9422
|
-
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData
|
|
9450
|
+
const { isAllOverflow, scrollYLoad, expandColumn } = reactData
|
|
9451
|
+
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
|
|
9423
9452
|
const { startIndex } = scrollYStore
|
|
9424
9453
|
const expandOpts = computeExpandOpts.value
|
|
9425
9454
|
const rowOpts = computeRowOpts.value
|
|
@@ -9768,6 +9797,7 @@ export default defineComponent({
|
|
|
9768
9797
|
]
|
|
9769
9798
|
|
|
9770
9799
|
if (expandColumn) {
|
|
9800
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
9771
9801
|
tableRowExpandedList.forEach((row) => {
|
|
9772
9802
|
const expandOpts = computeExpandOpts.value
|
|
9773
9803
|
const { height: expandHeight, padding } = expandOpts
|
|
@@ -9775,7 +9805,7 @@ export default defineComponent({
|
|
|
9775
9805
|
const treeOpts = computeTreeOpts.value
|
|
9776
9806
|
const { transform, seqMode } = treeOpts
|
|
9777
9807
|
const cellStyle: Record<string, string> = {}
|
|
9778
|
-
const rowid =
|
|
9808
|
+
const rowid = handleGetRowId(row)
|
|
9779
9809
|
const rest = fullAllDataRowIdData[rowid]
|
|
9780
9810
|
let rowLevel = 0
|
|
9781
9811
|
let seq: string | number = -1
|