vxe-table 4.12.0-beta.9 → 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 +45 -36
- 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 +435 -420
- 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 +42 -40
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +500 -292
- 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 +523 -456
- 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 +49 -42
- 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 +441 -418
- package/packages/table/src/util.ts +39 -6
- package/packages/ui/index.ts +1 -0
- /package/es/{iconfont.1741337003908.ttf → iconfont.1742955995631.ttf} +0 -0
- /package/es/{iconfont.1741337003908.woff → iconfont.1742955995631.woff} +0 -0
- /package/es/{iconfont.1741337003908.woff2 → iconfont.1742955995631.woff2} +0 -0
- /package/lib/{iconfont.1741337003908.ttf → iconfont.1742955995631.ttf} +0 -0
- /package/lib/{iconfont.1741337003908.woff → iconfont.1742955995631.woff} +0 -0
- /package/lib/{iconfont.1741337003908.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
|
|
@@ -3898,6 +3893,7 @@ export default defineComponent({
|
|
|
3898
3893
|
const removeTempMaps = { ...editStore.removeMaps }
|
|
3899
3894
|
const treeOpts = computeTreeOpts.value
|
|
3900
3895
|
const { transform } = treeOpts
|
|
3896
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
3901
3897
|
if (!keepSource) {
|
|
3902
3898
|
if (process.env.VUE_APP_VXE_ENV === 'development') {
|
|
3903
3899
|
errLog('vxe.error.reqProp', ['keep-source'])
|
|
@@ -3915,7 +3911,7 @@ export default defineComponent({
|
|
|
3915
3911
|
let reDelFlag = false
|
|
3916
3912
|
if (targetRows.length) {
|
|
3917
3913
|
targetRows.forEach((item: any) => {
|
|
3918
|
-
const rowid =
|
|
3914
|
+
const rowid = handleGetRowId(item)
|
|
3919
3915
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
3920
3916
|
if (rowRest) {
|
|
3921
3917
|
const row = rowRest.row
|
|
@@ -4270,8 +4266,7 @@ export default defineComponent({
|
|
|
4270
4266
|
*/
|
|
4271
4267
|
getCheckboxRecords (isFull) {
|
|
4272
4268
|
const { treeConfig } = props
|
|
4273
|
-
const { selectCheckboxMaps } =
|
|
4274
|
-
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData
|
|
4269
|
+
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData
|
|
4275
4270
|
const treeOpts = computeTreeOpts.value
|
|
4276
4271
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4277
4272
|
const { transform, mapChildrenField } = treeOpts
|
|
@@ -4599,12 +4594,13 @@ export default defineComponent({
|
|
|
4599
4594
|
},
|
|
4600
4595
|
getRowHeightConf (isFull) {
|
|
4601
4596
|
const { fullAllDataRowIdData, afterFullData } = internalData
|
|
4597
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4602
4598
|
const rowOpts = computeRowOpts.value
|
|
4603
4599
|
const cellOpts = computeCellOpts.value
|
|
4604
4600
|
const defaultRowHeight = computeDefaultRowHeight.value
|
|
4605
4601
|
const rest: Record<string, number> = {}
|
|
4606
4602
|
afterFullData.forEach(row => {
|
|
4607
|
-
const rowid =
|
|
4603
|
+
const rowid = handleGetRowId(row)
|
|
4608
4604
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
4609
4605
|
if (rowRest) {
|
|
4610
4606
|
const resizeHeight = rowRest.resizeHeight
|
|
@@ -4628,8 +4624,9 @@ export default defineComponent({
|
|
|
4628
4624
|
rHeight = Math.floor(rHeight * bodyHeight)
|
|
4629
4625
|
}
|
|
4630
4626
|
if (rHeight) {
|
|
4627
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4631
4628
|
rows.forEach(row => {
|
|
4632
|
-
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row :
|
|
4629
|
+
const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row)
|
|
4633
4630
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
4634
4631
|
if (rowRest) {
|
|
4635
4632
|
rowRest.resizeHeight = rHeight
|
|
@@ -4781,12 +4778,11 @@ export default defineComponent({
|
|
|
4781
4778
|
*/
|
|
4782
4779
|
getCheckboxIndeterminateRecords (isFull) {
|
|
4783
4780
|
const { treeConfig } = props
|
|
4784
|
-
const { fullDataRowIdData } = internalData
|
|
4785
|
-
const { treeIndeterminateMaps } = reactData
|
|
4781
|
+
const { fullDataRowIdData, treeIndeterminateRowMaps } = internalData
|
|
4786
4782
|
if (treeConfig) {
|
|
4787
4783
|
const fullRest: any[] = []
|
|
4788
4784
|
const defRest: any[] = []
|
|
4789
|
-
XEUtils.each(
|
|
4785
|
+
XEUtils.each(treeIndeterminateRowMaps, (item, rowid) => {
|
|
4790
4786
|
if (item) {
|
|
4791
4787
|
fullRest.push(item)
|
|
4792
4788
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -4827,17 +4823,18 @@ export default defineComponent({
|
|
|
4827
4823
|
return handleCheckedCheckboxRow(rows, checked, true)
|
|
4828
4824
|
},
|
|
4829
4825
|
isCheckedByCheckboxRow (row) {
|
|
4830
|
-
const {
|
|
4826
|
+
const { updateCheckboxFlag } = reactData
|
|
4827
|
+
const { selectCheckboxMaps } = internalData
|
|
4831
4828
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4832
4829
|
const { checkField } = checkboxOpts
|
|
4833
4830
|
if (checkField) {
|
|
4834
4831
|
return XEUtils.get(row, checkField)
|
|
4835
4832
|
}
|
|
4836
|
-
return !!selectCheckboxMaps[getRowid($xeTable, row)]
|
|
4833
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[getRowid($xeTable, row)]
|
|
4837
4834
|
},
|
|
4838
4835
|
isCheckedByCheckboxRowKey (rowid: any) {
|
|
4839
|
-
const {
|
|
4840
|
-
const { fullAllDataRowIdData } = internalData
|
|
4836
|
+
const { updateCheckboxFlag } = reactData
|
|
4837
|
+
const { fullAllDataRowIdData, selectCheckboxMaps } = internalData
|
|
4841
4838
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4842
4839
|
const { checkField } = checkboxOpts
|
|
4843
4840
|
if (checkField) {
|
|
@@ -4847,21 +4844,21 @@ export default defineComponent({
|
|
|
4847
4844
|
}
|
|
4848
4845
|
return false
|
|
4849
4846
|
}
|
|
4850
|
-
return !!selectCheckboxMaps[rowid]
|
|
4847
|
+
return !!updateCheckboxFlag && !!selectCheckboxMaps[rowid]
|
|
4851
4848
|
},
|
|
4852
4849
|
isIndeterminateByCheckboxRow (row) {
|
|
4853
|
-
const {
|
|
4854
|
-
return !!
|
|
4850
|
+
const { treeIndeterminateRowMaps } = internalData
|
|
4851
|
+
return !!treeIndeterminateRowMaps[getRowid($xeTable, row)] && !$xeTable.isCheckedByCheckboxRow(row)
|
|
4855
4852
|
},
|
|
4856
4853
|
isIndeterminateByCheckboxRowKey (rowid: any) {
|
|
4857
|
-
const {
|
|
4858
|
-
return !!
|
|
4854
|
+
const { treeIndeterminateRowMaps } = internalData
|
|
4855
|
+
return !!treeIndeterminateRowMaps[rowid] && !$xeTable.isCheckedByCheckboxRowKey(rowid)
|
|
4859
4856
|
},
|
|
4860
4857
|
/**
|
|
4861
4858
|
* 多选,切换某一行的选中状态
|
|
4862
4859
|
*/
|
|
4863
4860
|
toggleCheckboxRow (row) {
|
|
4864
|
-
const { selectCheckboxMaps } =
|
|
4861
|
+
const { selectCheckboxMaps } = internalData
|
|
4865
4862
|
const checkboxOpts = computeCheckboxOpts.value
|
|
4866
4863
|
const { checkField } = checkboxOpts
|
|
4867
4864
|
const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)]
|
|
@@ -4922,14 +4919,15 @@ export default defineComponent({
|
|
|
4922
4919
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
4923
4920
|
const reserveSelection: any[] = []
|
|
4924
4921
|
if (checkboxOpts.reserve) {
|
|
4922
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
4925
4923
|
const afterFullIdMaps: { [key: string]: number } = {}
|
|
4926
4924
|
if (treeConfig) {
|
|
4927
4925
|
XEUtils.eachTree(afterFullData, row => {
|
|
4928
|
-
afterFullIdMaps[
|
|
4926
|
+
afterFullIdMaps[handleGetRowId(row)] = 1
|
|
4929
4927
|
}, { children: childrenField })
|
|
4930
4928
|
} else {
|
|
4931
4929
|
afterFullData.forEach(row => {
|
|
4932
|
-
afterFullIdMaps[
|
|
4930
|
+
afterFullIdMaps[handleGetRowId(row)] = 1
|
|
4933
4931
|
})
|
|
4934
4932
|
}
|
|
4935
4933
|
XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
|
|
@@ -4990,8 +4988,9 @@ export default defineComponent({
|
|
|
4990
4988
|
}
|
|
4991
4989
|
reactData.isAllSelected = false
|
|
4992
4990
|
reactData.isIndeterminate = false
|
|
4993
|
-
|
|
4994
|
-
|
|
4991
|
+
internalData.selectCheckboxMaps = {}
|
|
4992
|
+
internalData.treeIndeterminateRowMaps = {}
|
|
4993
|
+
reactData.updateCheckboxFlag++
|
|
4995
4994
|
return nextTick()
|
|
4996
4995
|
},
|
|
4997
4996
|
/**
|
|
@@ -5098,13 +5097,20 @@ export default defineComponent({
|
|
|
5098
5097
|
* 用于当前列,设置某列行为高亮状态
|
|
5099
5098
|
*/
|
|
5100
5099
|
setCurrentColumn (fieldOrColumn) {
|
|
5100
|
+
const { mouseConfig } = props
|
|
5101
|
+
const mouseOpts = computeMouseOpts.value
|
|
5102
|
+
const isMouseSelected = mouseConfig && mouseOpts.selected
|
|
5101
5103
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
5102
5104
|
if (column) {
|
|
5103
|
-
|
|
5104
|
-
tableMethods.clearCurrentColumn()
|
|
5105
|
+
$xeTable.clearCurrentColumn()
|
|
5105
5106
|
reactData.currentColumn = column
|
|
5106
5107
|
}
|
|
5107
|
-
return nextTick()
|
|
5108
|
+
return nextTick().then(() => {
|
|
5109
|
+
// 更新状选中态
|
|
5110
|
+
if (isMouseSelected) {
|
|
5111
|
+
$xeTable.addCellSelectedClass()
|
|
5112
|
+
}
|
|
5113
|
+
})
|
|
5108
5114
|
},
|
|
5109
5115
|
/**
|
|
5110
5116
|
* 用于当前列,手动清空当前高亮的状态
|
|
@@ -5114,57 +5120,58 @@ export default defineComponent({
|
|
|
5114
5120
|
return nextTick()
|
|
5115
5121
|
},
|
|
5116
5122
|
setPendingRow (rows: any | any[], status: boolean) {
|
|
5117
|
-
const
|
|
5123
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5124
|
+
const { pendingRowMaps } = internalData
|
|
5118
5125
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5119
5126
|
rows = [rows]
|
|
5120
5127
|
}
|
|
5121
5128
|
if (status) {
|
|
5122
5129
|
rows.forEach((row: any) => {
|
|
5123
|
-
const rowid =
|
|
5124
|
-
if (rowid && !
|
|
5125
|
-
|
|
5130
|
+
const rowid = handleGetRowId(row)
|
|
5131
|
+
if (rowid && !pendingRowMaps[rowid]) {
|
|
5132
|
+
pendingRowMaps[rowid] = row
|
|
5126
5133
|
}
|
|
5127
5134
|
})
|
|
5128
5135
|
} else {
|
|
5129
5136
|
rows.forEach((row: any) => {
|
|
5130
|
-
const rowid =
|
|
5131
|
-
if (rowid &&
|
|
5132
|
-
delete
|
|
5137
|
+
const rowid = handleGetRowId(row)
|
|
5138
|
+
if (rowid && pendingRowMaps[rowid]) {
|
|
5139
|
+
delete pendingRowMaps[rowid]
|
|
5133
5140
|
}
|
|
5134
5141
|
})
|
|
5135
5142
|
}
|
|
5136
|
-
reactData.
|
|
5143
|
+
reactData.pendingRowFlag++
|
|
5137
5144
|
return nextTick()
|
|
5138
5145
|
},
|
|
5139
5146
|
togglePendingRow (rows: any | any[]) {
|
|
5140
|
-
const
|
|
5147
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5148
|
+
const { pendingRowMaps } = internalData
|
|
5141
5149
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5142
5150
|
rows = [rows]
|
|
5143
5151
|
}
|
|
5144
5152
|
rows.forEach((row: any) => {
|
|
5145
|
-
const rowid =
|
|
5153
|
+
const rowid = handleGetRowId(row)
|
|
5146
5154
|
if (rowid) {
|
|
5147
|
-
if (
|
|
5148
|
-
delete
|
|
5155
|
+
if (pendingRowMaps[rowid]) {
|
|
5156
|
+
delete pendingRowMaps[rowid]
|
|
5149
5157
|
} else {
|
|
5150
|
-
|
|
5158
|
+
pendingRowMaps[rowid] = row
|
|
5151
5159
|
}
|
|
5152
5160
|
}
|
|
5153
5161
|
})
|
|
5154
|
-
reactData.
|
|
5162
|
+
reactData.pendingRowFlag++
|
|
5155
5163
|
return nextTick()
|
|
5156
5164
|
},
|
|
5157
5165
|
hasPendingByRow (row) {
|
|
5158
5166
|
return tableMethods.isPendingByRow(row)
|
|
5159
5167
|
},
|
|
5160
5168
|
isPendingByRow (row) {
|
|
5161
|
-
const { pendingRowMaps } =
|
|
5169
|
+
const { pendingRowMaps } = internalData
|
|
5162
5170
|
const rowid = getRowid($xeTable, row)
|
|
5163
5171
|
return !!pendingRowMaps[rowid]
|
|
5164
5172
|
},
|
|
5165
5173
|
getPendingRecords () {
|
|
5166
|
-
const { pendingRowMaps } =
|
|
5167
|
-
const { fullAllDataRowIdData } = internalData
|
|
5174
|
+
const { fullAllDataRowIdData, pendingRowMaps } = internalData
|
|
5168
5175
|
const insertRecords: any[] = []
|
|
5169
5176
|
XEUtils.each(pendingRowMaps, (row, rowid) => {
|
|
5170
5177
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -5174,7 +5181,8 @@ export default defineComponent({
|
|
|
5174
5181
|
return insertRecords
|
|
5175
5182
|
},
|
|
5176
5183
|
clearPendingRow () {
|
|
5177
|
-
|
|
5184
|
+
internalData.pendingRowMaps = {}
|
|
5185
|
+
reactData.pendingRowFlag++
|
|
5178
5186
|
return nextTick()
|
|
5179
5187
|
},
|
|
5180
5188
|
sort (sortConfs: any, sortOrder?: VxeTablePropTypes.SortOrder) {
|
|
@@ -5322,7 +5330,13 @@ export default defineComponent({
|
|
|
5322
5330
|
visible: false
|
|
5323
5331
|
})
|
|
5324
5332
|
if (visible) {
|
|
5325
|
-
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)
|
|
5326
5340
|
}
|
|
5327
5341
|
return nextTick()
|
|
5328
5342
|
},
|
|
@@ -5350,17 +5364,16 @@ export default defineComponent({
|
|
|
5350
5364
|
return rowRest && !!rowRest.expandLoaded
|
|
5351
5365
|
},
|
|
5352
5366
|
clearRowExpandLoaded (row) {
|
|
5353
|
-
const
|
|
5354
|
-
const { fullAllDataRowIdData } = internalData
|
|
5367
|
+
const { fullAllDataRowIdData, rowExpandLazyLoadedMaps } = internalData
|
|
5355
5368
|
const expandOpts = computeExpandOpts.value
|
|
5356
5369
|
const { lazy } = expandOpts
|
|
5357
5370
|
const rowid = getRowid($xeTable, row)
|
|
5358
5371
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5359
5372
|
if (lazy && rowRest) {
|
|
5360
5373
|
rowRest.expandLoaded = false
|
|
5361
|
-
delete
|
|
5374
|
+
delete rowExpandLazyLoadedMaps[rowid]
|
|
5362
5375
|
}
|
|
5363
|
-
reactData.
|
|
5376
|
+
reactData.rowExpandedFlag++
|
|
5364
5377
|
return nextTick()
|
|
5365
5378
|
},
|
|
5366
5379
|
/**
|
|
@@ -5368,12 +5381,12 @@ export default defineComponent({
|
|
|
5368
5381
|
* @param {Row} row 行对象
|
|
5369
5382
|
*/
|
|
5370
5383
|
reloadRowExpand (row) {
|
|
5371
|
-
const { rowExpandLazyLoadedMaps } =
|
|
5384
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
5372
5385
|
const expandOpts = computeExpandOpts.value
|
|
5373
5386
|
const { lazy } = expandOpts
|
|
5374
5387
|
const rowid = getRowid($xeTable, row)
|
|
5375
5388
|
if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
|
|
5376
|
-
|
|
5389
|
+
$xeTable.clearRowExpandLoaded(row)
|
|
5377
5390
|
.then(() => handleAsyncRowExpand(row))
|
|
5378
5391
|
}
|
|
5379
5392
|
return nextTick()
|
|
@@ -5383,13 +5396,13 @@ export default defineComponent({
|
|
|
5383
5396
|
warnLog('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand'])
|
|
5384
5397
|
}
|
|
5385
5398
|
// 即将废弃
|
|
5386
|
-
return
|
|
5399
|
+
return $xeTable.reloadRowExpand(row)
|
|
5387
5400
|
},
|
|
5388
5401
|
/**
|
|
5389
5402
|
* 切换展开行
|
|
5390
5403
|
*/
|
|
5391
5404
|
toggleRowExpand (row) {
|
|
5392
|
-
return
|
|
5405
|
+
return $xeTable.setRowExpand(row, !$xeTable.isRowExpandByRow(row))
|
|
5393
5406
|
},
|
|
5394
5407
|
/**
|
|
5395
5408
|
* 设置所有行的展开与否
|
|
@@ -5417,9 +5430,9 @@ export default defineComponent({
|
|
|
5417
5430
|
* @param {Boolean} expanded 是否展开
|
|
5418
5431
|
*/
|
|
5419
5432
|
setRowExpand (rows, expanded) {
|
|
5420
|
-
const {
|
|
5421
|
-
|
|
5422
|
-
|
|
5433
|
+
const { expandColumn } = reactData
|
|
5434
|
+
let { fullAllDataRowIdData, rowExpandedMaps, rowExpandLazyLoadedMaps } = internalData
|
|
5435
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
5423
5436
|
const expandOpts = computeExpandOpts.value
|
|
5424
5437
|
const { reserve, lazy, accordion, toggleMethod } = expandOpts
|
|
5425
5438
|
const lazyRests: any[] = []
|
|
@@ -5431,28 +5444,29 @@ export default defineComponent({
|
|
|
5431
5444
|
}
|
|
5432
5445
|
if (accordion) {
|
|
5433
5446
|
// 只能同时展开一个
|
|
5434
|
-
|
|
5447
|
+
rowExpandedMaps = {}
|
|
5448
|
+
internalData.rowExpandedMaps = rowExpandedMaps
|
|
5435
5449
|
rows = rows.slice(rows.length - 1, rows.length)
|
|
5436
5450
|
}
|
|
5437
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
|
|
5438
5452
|
if (expanded) {
|
|
5439
5453
|
validRows.forEach((row: any) => {
|
|
5440
|
-
const rowid =
|
|
5441
|
-
if (!
|
|
5454
|
+
const rowid = handleGetRowId(row)
|
|
5455
|
+
if (!rowExpandedMaps[rowid]) {
|
|
5442
5456
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5443
5457
|
const isLoad = lazy && !rowRest.expandLoaded && !rowExpandLazyLoadedMaps[rowid]
|
|
5444
5458
|
if (isLoad) {
|
|
5445
5459
|
lazyRests.push(handleAsyncRowExpand(row))
|
|
5446
5460
|
} else {
|
|
5447
|
-
|
|
5461
|
+
rowExpandedMaps[rowid] = row
|
|
5448
5462
|
}
|
|
5449
5463
|
}
|
|
5450
5464
|
})
|
|
5451
5465
|
} else {
|
|
5452
5466
|
validRows.forEach(item => {
|
|
5453
|
-
const rowid =
|
|
5454
|
-
if (
|
|
5455
|
-
delete
|
|
5467
|
+
const rowid = handleGetRowId(item)
|
|
5468
|
+
if (rowExpandedMaps[rowid]) {
|
|
5469
|
+
delete rowExpandedMaps[rowid]
|
|
5456
5470
|
}
|
|
5457
5471
|
})
|
|
5458
5472
|
}
|
|
@@ -5460,7 +5474,7 @@ export default defineComponent({
|
|
|
5460
5474
|
validRows.forEach((row) => handleRowExpandReserve(row, expanded))
|
|
5461
5475
|
}
|
|
5462
5476
|
}
|
|
5463
|
-
reactData.
|
|
5477
|
+
reactData.rowExpandedFlag++
|
|
5464
5478
|
return Promise.all(lazyRests)
|
|
5465
5479
|
.then(() => nextTick())
|
|
5466
5480
|
.then(() => $xeTable.recalculate(true))
|
|
@@ -5476,9 +5490,10 @@ export default defineComponent({
|
|
|
5476
5490
|
* @param {Row} row 行对象
|
|
5477
5491
|
*/
|
|
5478
5492
|
isRowExpandByRow (row) {
|
|
5479
|
-
const {
|
|
5493
|
+
const { rowExpandedFlag } = reactData
|
|
5494
|
+
const { rowExpandedMaps } = internalData
|
|
5480
5495
|
const rowid = getRowid($xeTable, row)
|
|
5481
|
-
return !!rowExpandedMaps[rowid]
|
|
5496
|
+
return !!rowExpandedFlag && !!rowExpandedMaps[rowid]
|
|
5482
5497
|
},
|
|
5483
5498
|
isExpandByRow (row) {
|
|
5484
5499
|
// 已废弃
|
|
@@ -5495,7 +5510,8 @@ export default defineComponent({
|
|
|
5495
5510
|
const expandOpts = computeExpandOpts.value
|
|
5496
5511
|
const { reserve } = expandOpts
|
|
5497
5512
|
const expList = $xeTable.getRowExpandRecords()
|
|
5498
|
-
|
|
5513
|
+
internalData.rowExpandedMaps = {}
|
|
5514
|
+
reactData.rowExpandedFlag++
|
|
5499
5515
|
if (reserve) {
|
|
5500
5516
|
tableFullData.forEach((row) => handleRowExpandReserve(row, false))
|
|
5501
5517
|
}
|
|
@@ -5516,7 +5532,7 @@ export default defineComponent({
|
|
|
5516
5532
|
},
|
|
5517
5533
|
getRowExpandRecords () {
|
|
5518
5534
|
const rest: any[] = []
|
|
5519
|
-
XEUtils.each(
|
|
5535
|
+
XEUtils.each(internalData.rowExpandedMaps, item => {
|
|
5520
5536
|
if (item) {
|
|
5521
5537
|
rest.push(item)
|
|
5522
5538
|
}
|
|
@@ -5525,7 +5541,7 @@ export default defineComponent({
|
|
|
5525
5541
|
},
|
|
5526
5542
|
getTreeExpandRecords () {
|
|
5527
5543
|
const rest: any[] = []
|
|
5528
|
-
XEUtils.each(
|
|
5544
|
+
XEUtils.each(internalData.treeExpandedMaps, item => {
|
|
5529
5545
|
if (item) {
|
|
5530
5546
|
rest.push(item)
|
|
5531
5547
|
}
|
|
@@ -5542,12 +5558,10 @@ export default defineComponent({
|
|
|
5542
5558
|
return rowRest && !!rowRest.treeLoaded
|
|
5543
5559
|
},
|
|
5544
5560
|
clearTreeExpandLoaded (rows: any) {
|
|
5545
|
-
const { fullAllDataRowIdData } = internalData
|
|
5561
|
+
const { fullAllDataRowIdData, treeExpandedMaps } = internalData
|
|
5546
5562
|
const treeOpts = computeTreeOpts.value
|
|
5547
5563
|
const { transform } = treeOpts
|
|
5548
|
-
let tExpandedMaps: Record<string, any> = {}
|
|
5549
5564
|
if (rows) {
|
|
5550
|
-
tExpandedMaps = { ...reactData.treeExpandedMaps }
|
|
5551
5565
|
if (!XEUtils.isArray(rows)) {
|
|
5552
5566
|
rows = [rows]
|
|
5553
5567
|
}
|
|
@@ -5556,8 +5570,8 @@ export default defineComponent({
|
|
|
5556
5570
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5557
5571
|
if (rowRest) {
|
|
5558
5572
|
rowRest.treeLoaded = false
|
|
5559
|
-
if (
|
|
5560
|
-
delete
|
|
5573
|
+
if (treeExpandedMaps[rowid]) {
|
|
5574
|
+
delete treeExpandedMaps[rowid]
|
|
5561
5575
|
}
|
|
5562
5576
|
}
|
|
5563
5577
|
})
|
|
@@ -5566,7 +5580,8 @@ export default defineComponent({
|
|
|
5566
5580
|
rowRest.treeLoaded = false
|
|
5567
5581
|
})
|
|
5568
5582
|
}
|
|
5569
|
-
|
|
5583
|
+
internalData.treeExpandedMaps = {}
|
|
5584
|
+
reactData.treeExpandedFlag++
|
|
5570
5585
|
if (transform) {
|
|
5571
5586
|
handleVirtualTreeToList()
|
|
5572
5587
|
return $xeTable.handleTableData()
|
|
@@ -5578,7 +5593,7 @@ export default defineComponent({
|
|
|
5578
5593
|
* @param {Row} row 行对象
|
|
5579
5594
|
*/
|
|
5580
5595
|
reloadTreeExpand (row) {
|
|
5581
|
-
const { treeExpandLazyLoadedMaps } =
|
|
5596
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
5582
5597
|
const treeOpts = computeTreeOpts.value
|
|
5583
5598
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
5584
5599
|
const { transform, lazy } = treeOpts
|
|
@@ -5663,8 +5678,9 @@ export default defineComponent({
|
|
|
5663
5678
|
* @param {Row} row 行对象
|
|
5664
5679
|
*/
|
|
5665
5680
|
isTreeExpandByRow (row) {
|
|
5666
|
-
const {
|
|
5667
|
-
|
|
5681
|
+
const { treeExpandedFlag } = reactData
|
|
5682
|
+
const { treeExpandedMaps } = internalData
|
|
5683
|
+
return !!treeExpandedFlag && !!treeExpandedMaps[getRowid($xeTable, row)]
|
|
5668
5684
|
},
|
|
5669
5685
|
/**
|
|
5670
5686
|
* 手动清空树形节点的展开状态,数据会恢复成未展开的状态
|
|
@@ -5674,19 +5690,20 @@ export default defineComponent({
|
|
|
5674
5690
|
const treeOpts = computeTreeOpts.value
|
|
5675
5691
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
5676
5692
|
const { transform, reserve } = treeOpts
|
|
5677
|
-
const expList =
|
|
5678
|
-
|
|
5693
|
+
const expList = $xeTable.getTreeExpandRecords()
|
|
5694
|
+
internalData.treeExpandedMaps = {}
|
|
5695
|
+
reactData.treeExpandedFlag++
|
|
5679
5696
|
if (reserve) {
|
|
5680
5697
|
XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), { children: childrenField })
|
|
5681
5698
|
}
|
|
5682
|
-
return
|
|
5699
|
+
return $xeTable.handleTableData().then(() => {
|
|
5683
5700
|
if (transform) {
|
|
5684
5701
|
handleVirtualTreeToList()
|
|
5685
|
-
return
|
|
5702
|
+
return $xeTable.handleTableData()
|
|
5686
5703
|
}
|
|
5687
5704
|
}).then(() => {
|
|
5688
5705
|
if (expList.length) {
|
|
5689
|
-
return
|
|
5706
|
+
return $xeTable.recalculate()
|
|
5690
5707
|
}
|
|
5691
5708
|
})
|
|
5692
5709
|
},
|
|
@@ -5945,7 +5962,13 @@ export default defineComponent({
|
|
|
5945
5962
|
const { id } = props
|
|
5946
5963
|
const customOpts = computeCustomOpts.value
|
|
5947
5964
|
const { collectColumn } = internalData
|
|
5948
|
-
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
|
|
5949
5972
|
const resizableData: Record<string, number> = {}
|
|
5950
5973
|
const sortData: Record<string, number> = {}
|
|
5951
5974
|
const visibleData: Record<string, boolean> = {}
|
|
@@ -5965,43 +5988,33 @@ export default defineComponent({
|
|
|
5965
5988
|
let hasFixed = 0
|
|
5966
5989
|
let hasVisible = 0
|
|
5967
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
|
+
}
|
|
5968
5996
|
// 只支持一级
|
|
5969
5997
|
if (!parentColumn) {
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
hasSort = 1
|
|
5974
|
-
sortData[colKey] = column.renderSortNumber
|
|
5975
|
-
}
|
|
5976
|
-
})
|
|
5977
|
-
if (column.fixed !== column.defaultFixed) {
|
|
5978
|
-
const colKey = column.getKey()
|
|
5979
|
-
if (colKey) {
|
|
5980
|
-
hasFixed = 1
|
|
5981
|
-
fixedData[colKey] = column.fixed
|
|
5982
|
-
}
|
|
5998
|
+
if (isCustomSort) {
|
|
5999
|
+
hasSort = 1
|
|
6000
|
+
sortData[colKey] = column.renderSortNumber
|
|
5983
6001
|
}
|
|
5984
|
-
|
|
5985
|
-
|
|
5986
|
-
|
|
5987
|
-
if (colKey) {
|
|
5988
|
-
hasResizable = 1
|
|
5989
|
-
resizableData[colKey] = column.renderWidth
|
|
6002
|
+
if (isCustomFixed && column.fixed !== column.defaultFixed) {
|
|
6003
|
+
hasFixed = 1
|
|
6004
|
+
fixedData[colKey] = column.fixed
|
|
5990
6005
|
}
|
|
5991
6006
|
}
|
|
5992
|
-
if (
|
|
6007
|
+
if (isCustomResizable && column.resizeWidth) {
|
|
6008
|
+
hasResizable = 1
|
|
6009
|
+
resizableData[colKey] = column.renderWidth
|
|
6010
|
+
}
|
|
6011
|
+
if (isCustomVisible && (!checkMethod || checkMethod({ column }))) {
|
|
5993
6012
|
if (!column.visible && column.defaultVisible) {
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
hasVisible = 1
|
|
5997
|
-
visibleData[colKey] = false
|
|
5998
|
-
}
|
|
6013
|
+
hasVisible = 1
|
|
6014
|
+
visibleData[colKey] = false
|
|
5999
6015
|
} else if (column.visible && !column.defaultVisible) {
|
|
6000
|
-
|
|
6001
|
-
|
|
6002
|
-
hasVisible = 1
|
|
6003
|
-
visibleData[colKey] = true
|
|
6004
|
-
}
|
|
6016
|
+
hasVisible = 1
|
|
6017
|
+
visibleData[colKey] = true
|
|
6005
6018
|
}
|
|
6006
6019
|
}
|
|
6007
6020
|
})
|
|
@@ -6351,7 +6364,7 @@ export default defineComponent({
|
|
|
6351
6364
|
if (keyboardOpts.enterToTab) {
|
|
6352
6365
|
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt)
|
|
6353
6366
|
} else {
|
|
6354
|
-
$xeTable.
|
|
6367
|
+
$xeTable.moveEnterSelected(activeParams, isLeftArrow, true, isRightArrow, false, evnt)
|
|
6355
6368
|
}
|
|
6356
6369
|
} else {
|
|
6357
6370
|
if (keyboardOpts.enterToTab) {
|
|
@@ -6383,7 +6396,7 @@ export default defineComponent({
|
|
|
6383
6396
|
return
|
|
6384
6397
|
}
|
|
6385
6398
|
}
|
|
6386
|
-
$xeTable.
|
|
6399
|
+
$xeTable.moveEnterSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt)
|
|
6387
6400
|
if (enterMethod) {
|
|
6388
6401
|
enterMethod(etrParams)
|
|
6389
6402
|
}
|
|
@@ -6412,10 +6425,7 @@ export default defineComponent({
|
|
|
6412
6425
|
if (!isEditStatus) {
|
|
6413
6426
|
// 如果按下了方向键
|
|
6414
6427
|
if (selected.row && selected.column) {
|
|
6415
|
-
$xeTable.
|
|
6416
|
-
} else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
6417
|
-
// 当前行按键上下移动
|
|
6418
|
-
$xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt)
|
|
6428
|
+
$xeTable.moveArrowSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt)
|
|
6419
6429
|
}
|
|
6420
6430
|
}
|
|
6421
6431
|
} else if (isTab && keyboardConfig && keyboardOpts.isTab) {
|
|
@@ -6793,8 +6803,9 @@ export default defineComponent({
|
|
|
6793
6803
|
* @param {Event} evnt 事件
|
|
6794
6804
|
* @param {Row} row 行对象
|
|
6795
6805
|
*/
|
|
6796
|
-
const handleTooltip = (evnt: MouseEvent, tdEl: HTMLTableCellElement, overflowElem: HTMLElement
|
|
6797
|
-
|
|
6806
|
+
const handleTooltip = (evnt: MouseEvent, tdEl: HTMLTableCellElement, overflowElem: HTMLElement | null, params: any) => {
|
|
6807
|
+
const tipOverEl = overflowElem || tdEl
|
|
6808
|
+
if (!tipOverEl) {
|
|
6798
6809
|
return nextTick()
|
|
6799
6810
|
}
|
|
6800
6811
|
params.cell = tdEl
|
|
@@ -6804,9 +6815,8 @@ export default defineComponent({
|
|
|
6804
6815
|
const { showAll, contentMethod } = tooltipOpts
|
|
6805
6816
|
const customContent = contentMethod ? contentMethod(params) : null
|
|
6806
6817
|
const useCustom = contentMethod && !XEUtils.eqNull(customContent)
|
|
6807
|
-
const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ?
|
|
6808
|
-
|
|
6809
|
-
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))) {
|
|
6810
6820
|
Object.assign(tooltipStore, {
|
|
6811
6821
|
row,
|
|
6812
6822
|
column,
|
|
@@ -6816,7 +6826,7 @@ export default defineComponent({
|
|
|
6816
6826
|
nextTick(() => {
|
|
6817
6827
|
const $tooltip = refTooltip.value
|
|
6818
6828
|
if ($tooltip && $tooltip.open) {
|
|
6819
|
-
$tooltip.open(
|
|
6829
|
+
$tooltip.open(tipOverEl, formatText(content))
|
|
6820
6830
|
}
|
|
6821
6831
|
})
|
|
6822
6832
|
}
|
|
@@ -6958,19 +6968,15 @@ export default defineComponent({
|
|
|
6958
6968
|
*/
|
|
6959
6969
|
cacheRowMap () {
|
|
6960
6970
|
const { treeConfig } = props
|
|
6961
|
-
const { treeExpandedMaps } =
|
|
6962
|
-
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData
|
|
6971
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData, treeExpandedMaps } = internalData
|
|
6963
6972
|
const treeOpts = computeTreeOpts.value
|
|
6964
6973
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
6965
6974
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
6966
6975
|
const { lazy } = treeOpts
|
|
6967
|
-
const rowkey = getRowkey($xeTable)
|
|
6968
|
-
const isDeepKey = rowkey.indexOf('.') > -1
|
|
6969
6976
|
const fullAllDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = { ...fullAllDataRowIdData } // 存在已删除数据
|
|
6970
6977
|
const fullDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = {}
|
|
6971
|
-
const treeTempExpandedMaps = { ...treeExpandedMaps }
|
|
6972
6978
|
|
|
6973
|
-
const
|
|
6979
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
|
|
6974
6980
|
const handleRowCache = (row: any, index: number, items: any, currIndex: number, parentRow: any, rowid: string, level: number, seq: string | number) => {
|
|
6975
6981
|
let rowRest = fullAllDataRowIdMaps[rowid]
|
|
6976
6982
|
if (!rowRest) {
|
|
@@ -6994,15 +7000,14 @@ export default defineComponent({
|
|
|
6994
7000
|
|
|
6995
7001
|
if (treeConfig) {
|
|
6996
7002
|
XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
6997
|
-
const rowid =
|
|
7003
|
+
const rowid = handleUpdateRowId(row)
|
|
6998
7004
|
if (treeConfig && lazy) {
|
|
6999
|
-
const treeExpRest = treeTempExpandedMaps[rowid]
|
|
7000
7005
|
if (row[hasChildField] && row[childrenField] === undefined) {
|
|
7001
7006
|
row[childrenField] = null
|
|
7002
7007
|
}
|
|
7003
|
-
if (
|
|
7008
|
+
if (treeExpandedMaps[rowid]) {
|
|
7004
7009
|
if (!row[childrenField] || !row[childrenField].length) {
|
|
7005
|
-
delete
|
|
7010
|
+
delete treeExpandedMaps[rowid]
|
|
7006
7011
|
}
|
|
7007
7012
|
}
|
|
7008
7013
|
}
|
|
@@ -7010,28 +7015,23 @@ export default defineComponent({
|
|
|
7010
7015
|
}, { children: childrenField })
|
|
7011
7016
|
} else {
|
|
7012
7017
|
tableFullData.forEach((row, index, items) => {
|
|
7013
|
-
handleRowCache(row, index, items, index, null,
|
|
7018
|
+
handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1)
|
|
7014
7019
|
})
|
|
7015
7020
|
}
|
|
7016
7021
|
|
|
7017
7022
|
internalData.fullDataRowIdData = fullDataRowIdMaps
|
|
7018
7023
|
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps
|
|
7019
|
-
reactData.
|
|
7024
|
+
reactData.treeExpandedFlag++
|
|
7020
7025
|
},
|
|
7021
7026
|
cacheSourceMap (fullData) {
|
|
7022
7027
|
const { treeConfig } = props
|
|
7023
7028
|
const treeOpts = computeTreeOpts.value
|
|
7024
|
-
let { sourceDataRowIdData } = internalData
|
|
7025
7029
|
const sourceData = XEUtils.clone(fullData, true)
|
|
7026
|
-
const
|
|
7027
|
-
|
|
7030
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
|
|
7031
|
+
const sourceRowIdData: Record<string, any> = {}
|
|
7028
7032
|
const handleSourceRow = (row: any) => {
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
rowid = getRowUniqueId()
|
|
7032
|
-
XEUtils.set(row, rowkey, rowid)
|
|
7033
|
-
}
|
|
7034
|
-
sourceDataRowIdData[rowid] = row
|
|
7033
|
+
const rowid = handleUpdateRowId(row)
|
|
7034
|
+
sourceRowIdData[rowid] = row
|
|
7035
7035
|
}
|
|
7036
7036
|
// 源数据缓存
|
|
7037
7037
|
if (treeConfig) {
|
|
@@ -7040,6 +7040,7 @@ export default defineComponent({
|
|
|
7040
7040
|
} else {
|
|
7041
7041
|
sourceData.forEach(handleSourceRow)
|
|
7042
7042
|
}
|
|
7043
|
+
internalData.sourceDataRowIdData = sourceRowIdData
|
|
7043
7044
|
internalData.tableSourceData = sourceData
|
|
7044
7045
|
},
|
|
7045
7046
|
/**
|
|
@@ -7486,8 +7487,21 @@ export default defineComponent({
|
|
|
7486
7487
|
}
|
|
7487
7488
|
// 兼容老版本
|
|
7488
7489
|
|
|
7489
|
-
let rest
|
|
7490
|
-
|
|
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) {
|
|
7491
7505
|
if (next) {
|
|
7492
7506
|
rest = next()
|
|
7493
7507
|
}
|
|
@@ -7499,9 +7513,7 @@ export default defineComponent({
|
|
|
7499
7513
|
},
|
|
7500
7514
|
updateCheckboxStatus () {
|
|
7501
7515
|
const { treeConfig } = props
|
|
7502
|
-
const { selectCheckboxMaps,
|
|
7503
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps)
|
|
7504
|
-
const halfRowMaps = Object.assign({}, treeIndeterminateMaps)
|
|
7516
|
+
const { selectCheckboxMaps, treeIndeterminateRowMaps } = internalData
|
|
7505
7517
|
const treeOpts = computeTreeOpts.value
|
|
7506
7518
|
const { transform, mapChildrenField } = treeOpts
|
|
7507
7519
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -7513,10 +7525,11 @@ export default defineComponent({
|
|
|
7513
7525
|
}
|
|
7514
7526
|
// 树结构
|
|
7515
7527
|
if (treeConfig) {
|
|
7528
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7516
7529
|
const childRowMaps: Record<string, number> = {}
|
|
7517
7530
|
const childRowList: any[][] = []
|
|
7518
7531
|
XEUtils.eachTree(afterTreeFullData, (row) => {
|
|
7519
|
-
const rowid =
|
|
7532
|
+
const rowid = handleGetRowId(row)
|
|
7520
7533
|
const childList = row[transform ? mapChildrenField : childrenField]
|
|
7521
7534
|
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
7522
7535
|
childRowMaps[rowid] = 1
|
|
@@ -7533,29 +7546,29 @@ export default defineComponent({
|
|
|
7533
7546
|
childList.forEach(
|
|
7534
7547
|
checkMethod
|
|
7535
7548
|
? (item) => {
|
|
7536
|
-
const childRowid =
|
|
7537
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7549
|
+
const childRowid = handleGetRowId(item)
|
|
7550
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid]
|
|
7538
7551
|
if (checkMethod({ row: item })) {
|
|
7539
7552
|
if (isSelect) {
|
|
7540
7553
|
sLen++
|
|
7541
|
-
} else if (
|
|
7554
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7542
7555
|
hLen++
|
|
7543
7556
|
}
|
|
7544
7557
|
vLen++
|
|
7545
7558
|
} else {
|
|
7546
7559
|
if (isSelect) {
|
|
7547
7560
|
sLen++
|
|
7548
|
-
} else if (
|
|
7561
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7549
7562
|
hLen++
|
|
7550
7563
|
}
|
|
7551
7564
|
}
|
|
7552
7565
|
}
|
|
7553
7566
|
: item => {
|
|
7554
|
-
const childRowid =
|
|
7555
|
-
const isSelect = checkField ? XEUtils.get(item, checkField) :
|
|
7567
|
+
const childRowid = handleGetRowId(item)
|
|
7568
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectCheckboxMaps[childRowid]
|
|
7556
7569
|
if (isSelect) {
|
|
7557
7570
|
sLen++
|
|
7558
|
-
} else if (
|
|
7571
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7559
7572
|
hLen++
|
|
7560
7573
|
}
|
|
7561
7574
|
vLen++
|
|
@@ -7568,36 +7581,35 @@ export default defineComponent({
|
|
|
7568
7581
|
}
|
|
7569
7582
|
if (isSelected) {
|
|
7570
7583
|
if (!checkField) {
|
|
7571
|
-
|
|
7584
|
+
selectCheckboxMaps[rowid] = row
|
|
7572
7585
|
}
|
|
7573
|
-
if (
|
|
7574
|
-
delete
|
|
7586
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7587
|
+
delete treeIndeterminateRowMaps[rowid]
|
|
7575
7588
|
}
|
|
7576
7589
|
} else {
|
|
7577
7590
|
if (!checkField) {
|
|
7578
|
-
if (
|
|
7579
|
-
delete
|
|
7591
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7592
|
+
delete selectCheckboxMaps[rowid]
|
|
7580
7593
|
}
|
|
7581
7594
|
}
|
|
7582
7595
|
if (halfSelect) {
|
|
7583
|
-
|
|
7596
|
+
treeIndeterminateRowMaps[rowid] = row
|
|
7584
7597
|
} else {
|
|
7585
|
-
if (
|
|
7586
|
-
delete
|
|
7598
|
+
if (treeIndeterminateRowMaps[rowid]) {
|
|
7599
|
+
delete treeIndeterminateRowMaps[rowid]
|
|
7587
7600
|
}
|
|
7588
7601
|
}
|
|
7589
7602
|
}
|
|
7590
7603
|
})
|
|
7591
7604
|
}
|
|
7592
|
-
reactData.
|
|
7593
|
-
reactData.treeIndeterminateMaps = halfRowMaps
|
|
7605
|
+
reactData.updateCheckboxFlag++
|
|
7594
7606
|
},
|
|
7595
7607
|
updateAllCheckboxStatus () {
|
|
7596
7608
|
const { treeConfig } = props
|
|
7597
|
-
const { selectCheckboxMaps,
|
|
7609
|
+
const { afterFullData, afterTreeFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData
|
|
7598
7610
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7599
7611
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts
|
|
7600
|
-
const {
|
|
7612
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7601
7613
|
|
|
7602
7614
|
let sLen = 0 // 已选
|
|
7603
7615
|
let hLen = 0 // 半选
|
|
@@ -7606,29 +7618,29 @@ export default defineComponent({
|
|
|
7606
7618
|
const rootList = (treeConfig ? afterTreeFullData : afterFullData)
|
|
7607
7619
|
rootList.forEach(checkMethod
|
|
7608
7620
|
? row => {
|
|
7609
|
-
const childRowid =
|
|
7621
|
+
const childRowid = handleGetRowId(row)
|
|
7610
7622
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid]
|
|
7611
7623
|
if (checkMethod({ row })) {
|
|
7612
7624
|
if (selected) {
|
|
7613
7625
|
sLen++
|
|
7614
|
-
} else if (
|
|
7626
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7615
7627
|
hLen++
|
|
7616
7628
|
}
|
|
7617
7629
|
vLen++
|
|
7618
7630
|
} else {
|
|
7619
7631
|
if (selected) {
|
|
7620
7632
|
sLen++
|
|
7621
|
-
} else if (
|
|
7633
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7622
7634
|
hLen++
|
|
7623
7635
|
}
|
|
7624
7636
|
}
|
|
7625
7637
|
}
|
|
7626
7638
|
: row => {
|
|
7627
|
-
const childRowid =
|
|
7639
|
+
const childRowid = handleGetRowId(row)
|
|
7628
7640
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid]
|
|
7629
7641
|
if (selected) {
|
|
7630
7642
|
sLen++
|
|
7631
|
-
} else if (
|
|
7643
|
+
} else if (treeIndeterminateRowMaps[childRowid]) {
|
|
7632
7644
|
hLen++
|
|
7633
7645
|
}
|
|
7634
7646
|
vLen++
|
|
@@ -7655,13 +7667,13 @@ export default defineComponent({
|
|
|
7655
7667
|
*/
|
|
7656
7668
|
handleBatchSelectRows (rows, checked, isForce) {
|
|
7657
7669
|
const { treeConfig } = props
|
|
7658
|
-
const { selectCheckboxMaps } =
|
|
7659
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps)
|
|
7670
|
+
const { selectCheckboxMaps } = internalData
|
|
7660
7671
|
const treeOpts = computeTreeOpts.value
|
|
7661
7672
|
const { transform, mapChildrenField } = treeOpts
|
|
7662
7673
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
7663
7674
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7664
7675
|
const { checkField, checkStrictly, checkMethod } = checkboxOpts
|
|
7676
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
7665
7677
|
// indeterminateField 仅支持读取
|
|
7666
7678
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
|
|
7667
7679
|
if (checkField) {
|
|
@@ -7677,18 +7689,17 @@ export default defineComponent({
|
|
|
7677
7689
|
handleCheckboxReserveRow(row, checked)
|
|
7678
7690
|
}
|
|
7679
7691
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
7680
|
-
reactData.
|
|
7692
|
+
reactData.updateCheckboxFlag++
|
|
7681
7693
|
return
|
|
7682
|
-
} else {
|
|
7683
|
-
// 列表
|
|
7684
|
-
rows.forEach(row => {
|
|
7685
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7686
|
-
XEUtils.set(row, checkField, checked)
|
|
7687
|
-
handleCheckboxReserveRow(row, checked)
|
|
7688
|
-
}
|
|
7689
|
-
})
|
|
7690
7694
|
}
|
|
7691
|
-
|
|
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++
|
|
7692
7703
|
return
|
|
7693
7704
|
}
|
|
7694
7705
|
|
|
@@ -7696,39 +7707,39 @@ export default defineComponent({
|
|
|
7696
7707
|
if (treeConfig && !checkStrictly) {
|
|
7697
7708
|
// 更新子节点状态
|
|
7698
7709
|
XEUtils.eachTree(rows, (row) => {
|
|
7699
|
-
const rowid =
|
|
7710
|
+
const rowid = handleGetRowId(row)
|
|
7700
7711
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7701
7712
|
if (checked) {
|
|
7702
|
-
|
|
7713
|
+
selectCheckboxMaps[rowid] = row
|
|
7703
7714
|
} else {
|
|
7704
|
-
if (
|
|
7705
|
-
delete
|
|
7715
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7716
|
+
delete selectCheckboxMaps[rowid]
|
|
7706
7717
|
}
|
|
7707
7718
|
}
|
|
7708
7719
|
handleCheckboxReserveRow(row, checked)
|
|
7709
7720
|
}
|
|
7710
7721
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
7711
|
-
reactData.
|
|
7722
|
+
reactData.updateCheckboxFlag++
|
|
7712
7723
|
return
|
|
7713
7724
|
}
|
|
7714
7725
|
|
|
7715
7726
|
// 列表
|
|
7716
7727
|
rows.forEach(row => {
|
|
7717
|
-
const rowid =
|
|
7728
|
+
const rowid = handleGetRowId(row)
|
|
7718
7729
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
7719
7730
|
if (checked) {
|
|
7720
|
-
if (!
|
|
7721
|
-
|
|
7731
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
7732
|
+
selectCheckboxMaps[rowid] = row
|
|
7722
7733
|
}
|
|
7723
7734
|
} else {
|
|
7724
|
-
if (
|
|
7725
|
-
delete
|
|
7735
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7736
|
+
delete selectCheckboxMaps[rowid]
|
|
7726
7737
|
}
|
|
7727
7738
|
}
|
|
7728
7739
|
handleCheckboxReserveRow(row, checked)
|
|
7740
|
+
reactData.updateCheckboxFlag++
|
|
7729
7741
|
}
|
|
7730
7742
|
})
|
|
7731
|
-
reactData.selectCheckboxMaps = selectRowMaps
|
|
7732
7743
|
},
|
|
7733
7744
|
/**
|
|
7734
7745
|
* 即将移除
|
|
@@ -7776,7 +7787,7 @@ export default defineComponent({
|
|
|
7776
7787
|
return
|
|
7777
7788
|
}
|
|
7778
7789
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7779
|
-
handleTooltip(evnt, thEl, cellEl,
|
|
7790
|
+
handleTooltip(evnt, thEl, thEl.querySelector<HTMLElement>('.vxe-cell--title') || cellEl, params)
|
|
7780
7791
|
}
|
|
7781
7792
|
},
|
|
7782
7793
|
/**
|
|
@@ -7803,7 +7814,7 @@ export default defineComponent({
|
|
|
7803
7814
|
}
|
|
7804
7815
|
}
|
|
7805
7816
|
if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
|
|
7806
|
-
handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--
|
|
7817
|
+
handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), params)
|
|
7807
7818
|
}
|
|
7808
7819
|
},
|
|
7809
7820
|
/**
|
|
@@ -7812,10 +7823,10 @@ export default defineComponent({
|
|
|
7812
7823
|
triggerFooterTooltipEvent (evnt, params) {
|
|
7813
7824
|
const { column } = params
|
|
7814
7825
|
const { tooltipStore } = reactData
|
|
7815
|
-
const
|
|
7826
|
+
const tdEl = evnt.currentTarget as HTMLTableCellElement
|
|
7816
7827
|
handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row)
|
|
7817
7828
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7818
|
-
handleTooltip(evnt,
|
|
7829
|
+
handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper') as HTMLElement, params)
|
|
7819
7830
|
}
|
|
7820
7831
|
},
|
|
7821
7832
|
handleTargetLeaveEvent () {
|
|
@@ -7839,17 +7850,18 @@ export default defineComponent({
|
|
|
7839
7850
|
const { _lastResizeTime } = internalData
|
|
7840
7851
|
const sortOpts = computeSortOpts.value
|
|
7841
7852
|
const columnOpts = computeColumnOpts.value
|
|
7853
|
+
const currentColumnOpts = computeCurrentColumnOpts.value
|
|
7842
7854
|
const { column } = params
|
|
7843
7855
|
const cell = evnt.currentTarget
|
|
7844
7856
|
const triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300
|
|
7845
7857
|
const triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag
|
|
7846
7858
|
const triggerFilter = getEventTargetNode(evnt, cell, 'vxe-cell--filter').flag
|
|
7847
7859
|
if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
|
|
7848
|
-
|
|
7860
|
+
$xeTable.triggerSortEvent(evnt, column, getNextSortOrder(column))
|
|
7849
7861
|
}
|
|
7850
7862
|
dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt)
|
|
7851
|
-
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
7852
|
-
|
|
7863
|
+
if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
|
|
7864
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params)
|
|
7853
7865
|
}
|
|
7854
7866
|
},
|
|
7855
7867
|
triggerHeaderCellDblclickEvent (evnt, params) {
|
|
@@ -7861,7 +7873,7 @@ export default defineComponent({
|
|
|
7861
7873
|
* 如果是双击模式,则单击后选中状态
|
|
7862
7874
|
*/
|
|
7863
7875
|
triggerCellClickEvent (evnt, params) {
|
|
7864
|
-
const { highlightCurrentRow, editConfig } = props
|
|
7876
|
+
const { highlightCurrentRow, highlightCurrentColumn, editConfig } = props
|
|
7865
7877
|
const { editStore, isDragResize } = reactData
|
|
7866
7878
|
if (isDragResize) {
|
|
7867
7879
|
return
|
|
@@ -7873,6 +7885,8 @@ export default defineComponent({
|
|
|
7873
7885
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7874
7886
|
const keyboardOpts = computeKeyboardOpts.value
|
|
7875
7887
|
const rowOpts = computeRowOpts.value
|
|
7888
|
+
const columnOpts = computeColumnOpts.value
|
|
7889
|
+
const currentColumnOpts = computeCurrentColumnOpts.value
|
|
7876
7890
|
const { actived, focused } = editStore
|
|
7877
7891
|
const { row, column } = params
|
|
7878
7892
|
const { type, treeNode } = column
|
|
@@ -7888,29 +7902,35 @@ export default defineComponent({
|
|
|
7888
7902
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7889
7903
|
// 如果是展开行
|
|
7890
7904
|
if (!triggerExpandNode && (expandOpts.trigger === 'row' || (isExpandType && expandOpts.trigger === 'cell'))) {
|
|
7891
|
-
|
|
7905
|
+
$xeTable.triggerRowExpandEvent(evnt, params)
|
|
7892
7906
|
}
|
|
7893
7907
|
// 如果是树形表格
|
|
7894
7908
|
if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
|
|
7895
|
-
|
|
7909
|
+
$xeTable.triggerTreeExpandEvent(evnt, params)
|
|
7896
7910
|
}
|
|
7897
7911
|
}
|
|
7898
7912
|
// 如果点击了树节点
|
|
7899
7913
|
if (!triggerTreeNode) {
|
|
7900
7914
|
if (!triggerExpandNode) {
|
|
7901
|
-
//
|
|
7915
|
+
// 如果是当前行
|
|
7902
7916
|
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
7903
7917
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7904
|
-
|
|
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)
|
|
7905
7925
|
}
|
|
7906
7926
|
}
|
|
7907
7927
|
// 如果是单选框
|
|
7908
7928
|
if (!triggerRadio && (radioOpts.trigger === 'row' || (isRadioType && radioOpts.trigger === 'cell'))) {
|
|
7909
|
-
|
|
7929
|
+
$xeTable.triggerRadioRowEvent(evnt, params)
|
|
7910
7930
|
}
|
|
7911
7931
|
// 如果是复选框
|
|
7912
7932
|
if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
|
|
7913
|
-
|
|
7933
|
+
$xeTable.handleToggleCheckRowEvent(evnt, params)
|
|
7914
7934
|
}
|
|
7915
7935
|
}
|
|
7916
7936
|
// 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
|
|
@@ -7985,7 +8005,7 @@ export default defineComponent({
|
|
|
7985
8005
|
dispatchEvent('cell-dblclick', params, evnt)
|
|
7986
8006
|
},
|
|
7987
8007
|
handleToggleCheckRowEvent (evnt, params) {
|
|
7988
|
-
const { selectCheckboxMaps } =
|
|
8008
|
+
const { selectCheckboxMaps } = internalData
|
|
7989
8009
|
const checkboxOpts = computeCheckboxOpts.value
|
|
7990
8010
|
const { checkField, trigger } = checkboxOpts
|
|
7991
8011
|
const { row } = params
|
|
@@ -7999,43 +8019,45 @@ export default defineComponent({
|
|
|
7999
8019
|
checked = !selectCheckboxMaps[getRowid($xeTable, row)]
|
|
8000
8020
|
}
|
|
8001
8021
|
if (evnt) {
|
|
8002
|
-
|
|
8022
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked)
|
|
8003
8023
|
} else {
|
|
8004
|
-
|
|
8005
|
-
|
|
8024
|
+
$xeTable.handleBatchSelectRows([row], checked)
|
|
8025
|
+
$xeTable.checkSelectionStatus()
|
|
8006
8026
|
}
|
|
8007
8027
|
},
|
|
8008
8028
|
triggerCheckRowEvent (evnt: MouseEvent, params, checked) {
|
|
8009
|
-
const checkboxOpts = computeCheckboxOpts.value
|
|
8010
8029
|
const { row } = params
|
|
8011
8030
|
const { afterFullData } = internalData
|
|
8031
|
+
const checkboxOpts = computeCheckboxOpts.value
|
|
8012
8032
|
const { checkMethod, trigger } = checkboxOpts
|
|
8013
8033
|
if (trigger === 'manual') {
|
|
8014
8034
|
return
|
|
8015
8035
|
}
|
|
8016
8036
|
evnt.stopPropagation()
|
|
8017
8037
|
if (checkboxOpts.isShiftKey && evnt.shiftKey && !props.treeConfig) {
|
|
8018
|
-
const checkboxRecords =
|
|
8038
|
+
const checkboxRecords = $xeTable.getCheckboxRecords()
|
|
8019
8039
|
if (checkboxRecords.length) {
|
|
8020
8040
|
const firstRow = checkboxRecords[0]
|
|
8021
|
-
const _rowIndex =
|
|
8022
|
-
const _firstRowIndex =
|
|
8041
|
+
const _rowIndex = $xeTable.getVTRowIndex(row)
|
|
8042
|
+
const _firstRowIndex = $xeTable.getVTRowIndex(firstRow)
|
|
8023
8043
|
if (_rowIndex !== _firstRowIndex) {
|
|
8024
|
-
|
|
8044
|
+
$xeTable.setAllCheckboxRow(false)
|
|
8025
8045
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1)
|
|
8026
|
-
|
|
8046
|
+
nextTick(() => {
|
|
8047
|
+
handleCheckedCheckboxRow(rangeRows, true, false)
|
|
8048
|
+
})
|
|
8027
8049
|
dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt)
|
|
8028
8050
|
return
|
|
8029
8051
|
}
|
|
8030
8052
|
}
|
|
8031
8053
|
}
|
|
8032
8054
|
if (!checkMethod || checkMethod({ row })) {
|
|
8033
|
-
|
|
8034
|
-
|
|
8055
|
+
$xeTable.handleBatchSelectRows([row], checked)
|
|
8056
|
+
$xeTable.checkSelectionStatus()
|
|
8035
8057
|
dispatchEvent('checkbox-change', Object.assign({
|
|
8036
|
-
records:
|
|
8037
|
-
reserves:
|
|
8038
|
-
indeterminates:
|
|
8058
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
8059
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
8060
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
8039
8061
|
checked
|
|
8040
8062
|
}, params), evnt)
|
|
8041
8063
|
}
|
|
@@ -8106,7 +8128,8 @@ export default defineComponent({
|
|
|
8106
8128
|
* 展开行事件
|
|
8107
8129
|
*/
|
|
8108
8130
|
triggerRowExpandEvent (evnt, params) {
|
|
8109
|
-
const {
|
|
8131
|
+
const { expandColumn: column } = reactData
|
|
8132
|
+
const { rowExpandLazyLoadedMaps } = internalData
|
|
8110
8133
|
const expandOpts = computeExpandOpts.value
|
|
8111
8134
|
const { row } = params
|
|
8112
8135
|
const { lazy, trigger } = expandOpts
|
|
@@ -8116,18 +8139,18 @@ export default defineComponent({
|
|
|
8116
8139
|
evnt.stopPropagation()
|
|
8117
8140
|
const rowid = getRowid($xeTable, row)
|
|
8118
8141
|
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
|
|
8119
|
-
const expanded =
|
|
8120
|
-
const columnIndex =
|
|
8121
|
-
const $columnIndex =
|
|
8122
|
-
|
|
8142
|
+
const expanded = !$xeTable.isRowExpandByRow(row)
|
|
8143
|
+
const columnIndex = $xeTable.getColumnIndex(column)
|
|
8144
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column)
|
|
8145
|
+
$xeTable.setRowExpand(row, expanded)
|
|
8123
8146
|
dispatchEvent('toggle-row-expand', {
|
|
8124
8147
|
expanded,
|
|
8125
8148
|
column,
|
|
8126
8149
|
columnIndex,
|
|
8127
8150
|
$columnIndex,
|
|
8128
8151
|
row,
|
|
8129
|
-
rowIndex:
|
|
8130
|
-
$rowIndex:
|
|
8152
|
+
rowIndex: $xeTable.getRowIndex(row),
|
|
8153
|
+
$rowIndex: $xeTable.getVMRowIndex(row)
|
|
8131
8154
|
}, evnt)
|
|
8132
8155
|
}
|
|
8133
8156
|
},
|
|
@@ -8135,7 +8158,7 @@ export default defineComponent({
|
|
|
8135
8158
|
* 展开树节点事件
|
|
8136
8159
|
*/
|
|
8137
8160
|
triggerTreeExpandEvent (evnt, params) {
|
|
8138
|
-
const { treeExpandLazyLoadedMaps } =
|
|
8161
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
8139
8162
|
const treeOpts = computeTreeOpts.value
|
|
8140
8163
|
const { row, column } = params
|
|
8141
8164
|
const { lazy, trigger } = treeOpts
|
|
@@ -8145,10 +8168,10 @@ export default defineComponent({
|
|
|
8145
8168
|
evnt.stopPropagation()
|
|
8146
8169
|
const rowid = getRowid($xeTable, row)
|
|
8147
8170
|
if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
|
|
8148
|
-
const expanded =
|
|
8149
|
-
const columnIndex =
|
|
8150
|
-
const $columnIndex =
|
|
8151
|
-
|
|
8171
|
+
const expanded = !$xeTable.isTreeExpandByRow(row)
|
|
8172
|
+
const columnIndex = $xeTable.getColumnIndex(column)
|
|
8173
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column)
|
|
8174
|
+
$xeTable.setTreeExpand(row, expanded)
|
|
8152
8175
|
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt)
|
|
8153
8176
|
}
|
|
8154
8177
|
},
|
|
@@ -8292,12 +8315,11 @@ export default defineComponent({
|
|
|
8292
8315
|
handleRowDragSwapEvent (evnt, isSyncRow, dragRow, prevDragRow, prevDragPos, prevDragToChild) {
|
|
8293
8316
|
const { treeConfig, dragConfig } = props
|
|
8294
8317
|
const rowDragOpts = computeRowDragOpts.value
|
|
8295
|
-
const { fullAllDataRowIdData } = internalData
|
|
8318
|
+
const { afterFullData, tableFullData, fullAllDataRowIdData } = internalData
|
|
8296
8319
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod, dragToChildMethod } = rowDragOpts
|
|
8297
8320
|
const treeOpts = computeTreeOpts.value
|
|
8298
8321
|
const { transform, rowField, mapChildrenField, parentField } = treeOpts
|
|
8299
8322
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
8300
|
-
const { afterFullData, tableFullData } = internalData
|
|
8301
8323
|
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null)
|
|
8302
8324
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
|
|
8303
8325
|
const errRest = {
|
|
@@ -9040,6 +9062,7 @@ export default defineComponent({
|
|
|
9040
9062
|
return
|
|
9041
9063
|
}
|
|
9042
9064
|
}
|
|
9065
|
+
|
|
9043
9066
|
let scrollTop = yHandleEl.scrollTop
|
|
9044
9067
|
let scrollLeft = xHandleEl.scrollLeft
|
|
9045
9068
|
if (leftScrollElem && fixedType === 'left') {
|
|
@@ -9169,10 +9192,10 @@ export default defineComponent({
|
|
|
9169
9192
|
}
|
|
9170
9193
|
|
|
9171
9194
|
const { highlightHoverRow } = tableProps
|
|
9172
|
-
const { scrollXLoad, scrollYLoad } = reactData
|
|
9195
|
+
const { scrollXLoad, scrollYLoad, expandColumn } = reactData
|
|
9173
9196
|
const leftFixedWidth = computeLeftFixedWidth.value
|
|
9174
9197
|
const rightFixedWidth = computeRightFixedWidth.value
|
|
9175
|
-
if (!(
|
|
9198
|
+
if (!(leftFixedWidth || rightFixedWidth || expandColumn)) {
|
|
9176
9199
|
return
|
|
9177
9200
|
}
|
|
9178
9201
|
|
|
@@ -9206,7 +9229,6 @@ export default defineComponent({
|
|
|
9206
9229
|
if (isTopWheel ? currScrollTop <= 0 : currScrollTop >= bodyScrollElem.scrollHeight - bodyScrollElem.clientHeight) {
|
|
9207
9230
|
return
|
|
9208
9231
|
}
|
|
9209
|
-
|
|
9210
9232
|
const scrollTop = currScrollTop + deltaTop
|
|
9211
9233
|
const scrollLeft = bodyScrollElem.scrollLeft + deltaLeft
|
|
9212
9234
|
const isRollX = scrollLeft !== lastScrollLeft
|
|
@@ -9425,8 +9447,8 @@ export default defineComponent({
|
|
|
9425
9447
|
},
|
|
9426
9448
|
// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
9427
9449
|
updateScrollYSpace () {
|
|
9428
|
-
const { isAllOverflow, scrollYLoad, expandColumn
|
|
9429
|
-
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData
|
|
9450
|
+
const { isAllOverflow, scrollYLoad, expandColumn } = reactData
|
|
9451
|
+
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
|
|
9430
9452
|
const { startIndex } = scrollYStore
|
|
9431
9453
|
const expandOpts = computeExpandOpts.value
|
|
9432
9454
|
const rowOpts = computeRowOpts.value
|
|
@@ -9775,6 +9797,7 @@ export default defineComponent({
|
|
|
9775
9797
|
]
|
|
9776
9798
|
|
|
9777
9799
|
if (expandColumn) {
|
|
9800
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
9778
9801
|
tableRowExpandedList.forEach((row) => {
|
|
9779
9802
|
const expandOpts = computeExpandOpts.value
|
|
9780
9803
|
const { height: expandHeight, padding } = expandOpts
|
|
@@ -9782,7 +9805,7 @@ export default defineComponent({
|
|
|
9782
9805
|
const treeOpts = computeTreeOpts.value
|
|
9783
9806
|
const { transform, seqMode } = treeOpts
|
|
9784
9807
|
const cellStyle: Record<string, string> = {}
|
|
9785
|
-
const rowid =
|
|
9808
|
+
const rowid = handleGetRowId(row)
|
|
9786
9809
|
const rest = fullAllDataRowIdData[rowid]
|
|
9787
9810
|
let rowLevel = 0
|
|
9788
9811
|
let seq: string | number = -1
|