vxe-table 3.13.4 → 3.13.6
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/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/locale/lang/ar-EG.js +2 -1
- package/es/locale/lang/de-DE.js +2 -1
- package/es/locale/lang/en-US.js +2 -1
- package/es/locale/lang/es-ES.js +2 -1
- package/es/locale/lang/fr-FR.js +2 -1
- package/es/locale/lang/hu-HU.js +2 -1
- package/es/locale/lang/hy-AM.js +2 -1
- package/es/locale/lang/id-ID.js +2 -1
- package/es/locale/lang/it-IT.js +2 -1
- package/es/locale/lang/ja-JP.js +2 -1
- package/es/locale/lang/ko-KR.js +2 -1
- package/es/locale/lang/nb-NO.js +2 -1
- package/es/locale/lang/pt-BR.js +2 -1
- package/es/locale/lang/ru-RU.js +2 -1
- package/es/locale/lang/th-TH.js +2 -1
- package/es/locale/lang/ug-CN.js +2 -1
- package/es/locale/lang/uk-UA.js +2 -1
- package/es/locale/lang/vi-VN.js +2 -1
- package/es/locale/lang/zh-CHT.js +2 -1
- package/es/locale/lang/zh-CN.js +2 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/export/export-panel.js +7 -4
- package/es/table/module/export/mixin.js +2 -2
- package/es/table/src/methods.js +287 -252
- package/es/table/src/table.js +1 -1
- package/es/table/style.css +1 -1
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +1 -1
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +340 -313
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +2 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +2 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +2 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +2 -1
- package/lib/locale/lang/es-ES.js +2 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +2 -1
- package/lib/locale/lang/fr-FR.js +2 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +2 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +2 -1
- package/lib/locale/lang/hy-AM.js +2 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +2 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +2 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +2 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +2 -1
- package/lib/locale/lang/ko-KR.js +2 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +2 -1
- package/lib/locale/lang/nb-NO.js +2 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +2 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +2 -1
- package/lib/locale/lang/ru-RU.js +2 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +2 -1
- package/lib/locale/lang/th-TH.js +2 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +2 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +2 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +2 -1
- package/lib/locale/lang/vi-VN.js +2 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +2 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +2 -1
- package/lib/locale/lang/zh-CN.js +2 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +2 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/export/export-panel.js +7 -4
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +2 -2
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/src/methods.js +324 -301
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +1 -1
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +1 -1
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +1 -1
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +2 -1
- package/packages/locale/lang/de-DE.ts +2 -1
- package/packages/locale/lang/en-US.ts +2 -1
- package/packages/locale/lang/es-ES.ts +2 -1
- package/packages/locale/lang/fr-FR.ts +2 -1
- package/packages/locale/lang/hu-HU.ts +2 -1
- package/packages/locale/lang/hy-AM.ts +2 -1
- package/packages/locale/lang/id-ID.ts +2 -1
- package/packages/locale/lang/it-IT.ts +2 -1
- package/packages/locale/lang/ja-JP.ts +2 -1
- package/packages/locale/lang/ko-KR.ts +2 -1
- package/packages/locale/lang/nb-NO.ts +2 -1
- package/packages/locale/lang/pt-BR.ts +2 -1
- package/packages/locale/lang/ru-RU.ts +2 -1
- package/packages/locale/lang/th-TH.ts +2 -1
- package/packages/locale/lang/ug-CN.ts +2 -1
- package/packages/locale/lang/uk-UA.ts +2 -1
- package/packages/locale/lang/vi-VN.ts +2 -1
- package/packages/locale/lang/zh-CHT.ts +2 -1
- package/packages/locale/lang/zh-CN.ts +2 -1
- package/packages/table/module/export/export-panel.ts +7 -4
- package/packages/table/module/export/mixin.ts +2 -2
- package/packages/table/src/methods.ts +306 -255
- package/packages/table/src/table.ts +1 -1
- package/styles/components/table.scss +1 -1
- package/styles/theme/base.scss +1 -1
- /package/es/{iconfont.1740013687420.ttf → iconfont.1740103990490.ttf} +0 -0
- /package/es/{iconfont.1740013687420.woff → iconfont.1740103990490.woff} +0 -0
- /package/es/{iconfont.1740013687420.woff2 → iconfont.1740103990490.woff2} +0 -0
- /package/lib/{iconfont.1740013687420.ttf → iconfont.1740103990490.ttf} +0 -0
- /package/lib/{iconfont.1740013687420.woff → iconfont.1740103990490.woff} +0 -0
- /package/lib/{iconfont.1740013687420.woff2 → iconfont.1740103990490.woff2} +0 -0
|
@@ -47,8 +47,10 @@ const setCustomStorageMap = (id: any, data: any) => {
|
|
|
47
47
|
localStorage.setItem(customStorageKey, XEUtils.toJSONString(maps))
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
const getRecoverRowMaps = (
|
|
51
|
-
const
|
|
50
|
+
const getRecoverRowMaps = ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, keyMaps: any) => {
|
|
51
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
52
|
+
|
|
53
|
+
const { fullAllDataRowIdData } = internalData
|
|
52
54
|
const restKeys: any = {}
|
|
53
55
|
XEUtils.each(keyMaps, (row, rowid) => {
|
|
54
56
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -58,8 +60,10 @@ const getRecoverRowMaps = (_vm: any, keyMaps: any) => {
|
|
|
58
60
|
return restKeys
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
function handleReserveRow (
|
|
62
|
-
const
|
|
63
|
+
function handleReserveRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, reserveRowMap: any) {
|
|
64
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
65
|
+
|
|
66
|
+
const { fullDataRowIdData } = internalData
|
|
63
67
|
const reserveList: any[] = []
|
|
64
68
|
XEUtils.each(reserveRowMap, (item, rowid) => {
|
|
65
69
|
if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
|
|
@@ -762,6 +766,219 @@ function updateStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
|
|
|
762
766
|
return $xeTable.$nextTick()
|
|
763
767
|
}
|
|
764
768
|
|
|
769
|
+
function handleRadioReserveRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any) {
|
|
770
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
771
|
+
|
|
772
|
+
const radioOpts = $xeTable.computeRadioOpts
|
|
773
|
+
if (radioOpts.reserve) {
|
|
774
|
+
internalData.radioReserveRow = row
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
function handleCheckboxReserveRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any, checked: boolean) {
|
|
779
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
780
|
+
|
|
781
|
+
const { checkboxReserveRowMap } = internalData
|
|
782
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts
|
|
783
|
+
if (checkboxOpts.reserve) {
|
|
784
|
+
const rowid = getRowid($xeTable, row)
|
|
785
|
+
if (checked) {
|
|
786
|
+
checkboxReserveRowMap[rowid] = row
|
|
787
|
+
} else if (checkboxReserveRowMap[rowid]) {
|
|
788
|
+
delete checkboxReserveRowMap[rowid]
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
function handleCheckedRadioRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any, isForce?: boolean) {
|
|
794
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
795
|
+
|
|
796
|
+
const radioOpts = $xeTable.computeRadioOpts
|
|
797
|
+
const { checkMethod } = radioOpts
|
|
798
|
+
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
799
|
+
reactData.selectRadioRow = row
|
|
800
|
+
handleRadioReserveRow($xeTable, row)
|
|
801
|
+
}
|
|
802
|
+
return $xeTable.$nextTick()
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
function handleCheckedCheckboxRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, rows: any[], value: boolean, isForce?: boolean) {
|
|
806
|
+
if (rows && !XEUtils.isArray(rows)) {
|
|
807
|
+
rows = [rows]
|
|
808
|
+
}
|
|
809
|
+
$xeTable.handleBatchSelectRows(rows, !!value, isForce)
|
|
810
|
+
$xeTable.checkSelectionStatus()
|
|
811
|
+
return $xeTable.$nextTick()
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
function handleCheckedAllCheckboxRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, checked: boolean, isForce?: boolean) {
|
|
815
|
+
const props = $xeTable
|
|
816
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
817
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
818
|
+
|
|
819
|
+
const { treeConfig } = props
|
|
820
|
+
const { selectCheckboxMaps } = reactData
|
|
821
|
+
const { afterFullData, checkboxReserveRowMap } = internalData
|
|
822
|
+
const treeOpts = $xeTable.computeTreeOpts
|
|
823
|
+
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
824
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts
|
|
825
|
+
const { checkField, reserve, checkMethod } = checkboxOpts
|
|
826
|
+
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
|
|
827
|
+
const selectRowMaps: Record<string, any> = {}
|
|
828
|
+
/**
|
|
829
|
+
* 绑定属性方式(高性能,有污染)
|
|
830
|
+
* 必须在行数据存在对应的属性,否则将不响应
|
|
831
|
+
*/
|
|
832
|
+
if (checkField) {
|
|
833
|
+
const checkValFn = (row: any) => {
|
|
834
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
835
|
+
if (checked) {
|
|
836
|
+
selectRowMaps[getRowid($xeTable, row)] = row
|
|
837
|
+
}
|
|
838
|
+
XEUtils.set(row, checkField, checked)
|
|
839
|
+
}
|
|
840
|
+
if (treeConfig && indeterminateField) {
|
|
841
|
+
XEUtils.set(row, indeterminateField, false)
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
// 如果存在选中方法
|
|
845
|
+
// 如果方法成立,则更新值,否则忽略该数据
|
|
846
|
+
if (treeConfig) {
|
|
847
|
+
XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField })
|
|
848
|
+
} else {
|
|
849
|
+
afterFullData.forEach(checkValFn)
|
|
850
|
+
}
|
|
851
|
+
} else {
|
|
852
|
+
/**
|
|
853
|
+
* 默认方式(低性能,无污染)
|
|
854
|
+
* 无需任何属性,直接绑定
|
|
855
|
+
*/
|
|
856
|
+
if (treeConfig) {
|
|
857
|
+
if (checked) {
|
|
858
|
+
/**
|
|
859
|
+
* 如果是树勾选
|
|
860
|
+
* 如果方法成立,则添加到临时集合中
|
|
861
|
+
*/
|
|
862
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
863
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
864
|
+
selectRowMaps[getRowid($xeTable, row)] = row
|
|
865
|
+
}
|
|
866
|
+
}, { children: childrenField })
|
|
867
|
+
} else {
|
|
868
|
+
/**
|
|
869
|
+
* 如果是树取消
|
|
870
|
+
* 如果方法成立,则不添加到临时集合中
|
|
871
|
+
*/
|
|
872
|
+
if (!isForce && checkMethod) {
|
|
873
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
874
|
+
const rowid = getRowid($xeTable, row)
|
|
875
|
+
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
876
|
+
selectRowMaps[rowid] = row
|
|
877
|
+
}
|
|
878
|
+
}, { children: childrenField })
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
} else {
|
|
882
|
+
if (checked) {
|
|
883
|
+
/**
|
|
884
|
+
* 如果是行勾选
|
|
885
|
+
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
886
|
+
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
887
|
+
*/
|
|
888
|
+
if (!isForce && checkMethod) {
|
|
889
|
+
afterFullData.forEach((row) => {
|
|
890
|
+
const rowid = getRowid($xeTable, row)
|
|
891
|
+
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
892
|
+
selectRowMaps[rowid] = row
|
|
893
|
+
}
|
|
894
|
+
})
|
|
895
|
+
} else {
|
|
896
|
+
afterFullData.forEach(row => {
|
|
897
|
+
selectRowMaps[getRowid($xeTable, row)] = row
|
|
898
|
+
})
|
|
899
|
+
}
|
|
900
|
+
} else {
|
|
901
|
+
/**
|
|
902
|
+
* 如果是行取消
|
|
903
|
+
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
904
|
+
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
905
|
+
*/
|
|
906
|
+
if (!isForce && checkMethod) {
|
|
907
|
+
afterFullData.forEach((row) => {
|
|
908
|
+
const rowid = getRowid($xeTable, row)
|
|
909
|
+
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
910
|
+
selectRowMaps[rowid] = row
|
|
911
|
+
}
|
|
912
|
+
})
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
if (reserve) {
|
|
918
|
+
if (checked) {
|
|
919
|
+
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
920
|
+
checkboxReserveRowMap[rowid] = row
|
|
921
|
+
})
|
|
922
|
+
} else {
|
|
923
|
+
afterFullData.forEach((row) => handleCheckboxReserveRow($xeTable, row, false))
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps
|
|
927
|
+
|
|
928
|
+
reactData.isAllSelected = checked
|
|
929
|
+
reactData.isIndeterminate = false
|
|
930
|
+
reactData.treeIndeterminateMaps = {}
|
|
931
|
+
internalData.treeIndeterminateRowMaps = {}
|
|
932
|
+
$xeTable.checkSelectionStatus()
|
|
933
|
+
return $xeTable.$nextTick()
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
// 还原展开、选中等相关状态
|
|
937
|
+
function handleReserveStatus ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
|
|
938
|
+
const props = $xeTable
|
|
939
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
940
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
941
|
+
|
|
942
|
+
const { treeConfig } = props
|
|
943
|
+
const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData
|
|
944
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData
|
|
945
|
+
const expandOpts = $xeTable.computeExpandOpts
|
|
946
|
+
const treeOpts = $xeTable.computeTreeOpts
|
|
947
|
+
const radioOpts = $xeTable.computeRadioOpts
|
|
948
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts
|
|
949
|
+
// 单选框
|
|
950
|
+
if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
|
|
951
|
+
reactData.selectRadioRow = null // 刷新单选行状态
|
|
952
|
+
}
|
|
953
|
+
// 还原保留选中状态
|
|
954
|
+
if (radioOpts.reserve && radioReserveRow) {
|
|
955
|
+
const rowid = getRowid($xeTable, radioReserveRow)
|
|
956
|
+
if (fullDataRowIdData[rowid]) {
|
|
957
|
+
handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true)
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
// 复选框
|
|
961
|
+
reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps) // 刷新多选行状态
|
|
962
|
+
// 还原保留选中状态
|
|
963
|
+
if (checkboxOpts.reserve) {
|
|
964
|
+
handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true)
|
|
965
|
+
}
|
|
966
|
+
if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
|
|
967
|
+
reactData.currentRow = null // 刷新当前行状态
|
|
968
|
+
}
|
|
969
|
+
// 行展开
|
|
970
|
+
reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {} // 刷新行展开状态
|
|
971
|
+
// 还原保留状态
|
|
972
|
+
if (expandColumn && expandOpts.reserve) {
|
|
973
|
+
$xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true)
|
|
974
|
+
}
|
|
975
|
+
// 树展开
|
|
976
|
+
reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {} // 刷新树展开状态
|
|
977
|
+
if (treeConfig && treeOpts.reserve) {
|
|
978
|
+
$xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true)
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
|
|
765
982
|
function calcVarRowHeightConfig ($xeTable: VxeTableConstructor, sizeKey: 'default' | 'medium' | 'small' | 'mini', sizeEl: Element) {
|
|
766
983
|
const reactData = $xeTable as unknown as TableReactData
|
|
767
984
|
|
|
@@ -2210,15 +2427,11 @@ const Methods = {
|
|
|
2210
2427
|
internalData.tableFullData = fullData
|
|
2211
2428
|
internalData.tableFullTreeData = treeData
|
|
2212
2429
|
// 缓存数据
|
|
2213
|
-
$xeTable.cacheRowMap(true
|
|
2430
|
+
$xeTable.cacheRowMap(true)
|
|
2214
2431
|
// 原始数据
|
|
2215
2432
|
internalData.tableSynchData = datas
|
|
2216
2433
|
if (isReset) {
|
|
2217
2434
|
internalData.isResizeCellHeight = false
|
|
2218
|
-
reactData.rowExpandedMaps = {}
|
|
2219
|
-
reactData.rowExpandLazyLoadedMaps = {}
|
|
2220
|
-
reactData.treeExpandedMaps = {}
|
|
2221
|
-
reactData.treeExpandLazyLoadedMaps = {}
|
|
2222
2435
|
}
|
|
2223
2436
|
// 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
2224
2437
|
if (keepSource) {
|
|
@@ -2266,7 +2479,7 @@ const Methods = {
|
|
|
2266
2479
|
}
|
|
2267
2480
|
}
|
|
2268
2481
|
|
|
2269
|
-
|
|
2482
|
+
handleReserveStatus($xeTable)
|
|
2270
2483
|
this.checkSelectionStatus()
|
|
2271
2484
|
return new Promise<void>(resolve => {
|
|
2272
2485
|
this.$nextTick()
|
|
@@ -2404,16 +2617,22 @@ const Methods = {
|
|
|
2404
2617
|
/**
|
|
2405
2618
|
* 更新数据行的 Map
|
|
2406
2619
|
*/
|
|
2407
|
-
cacheRowMap (
|
|
2408
|
-
const
|
|
2620
|
+
cacheRowMap () {
|
|
2621
|
+
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
2622
|
+
const props = $xeTable
|
|
2623
|
+
const internalData = $xeTable as unknown as TableInternalData
|
|
2624
|
+
|
|
2625
|
+
const { treeConfig } = props
|
|
2626
|
+
const treeOpts = $xeTable.computeTreeOpts
|
|
2627
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData
|
|
2409
2628
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2410
2629
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
|
|
2411
|
-
const rowkey = getRowkey(
|
|
2630
|
+
const rowkey = getRowkey($xeTable)
|
|
2412
2631
|
const isLazy = treeConfig && treeOpts.lazy
|
|
2413
2632
|
const fullAllDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = {}
|
|
2414
2633
|
const fullDataRowIdMaps: Record<string, VxeTableDefines.RowCacheItem> = {}
|
|
2415
|
-
const
|
|
2416
|
-
let rowid = getRowid(
|
|
2634
|
+
const handleRow = (row: any, index: number, items: any, path?: any[], parentRow?: any, nodes?: any[]) => {
|
|
2635
|
+
let rowid = getRowid($xeTable, row)
|
|
2417
2636
|
const seq = treeConfig && path ? toTreePathSeq(path) : index + 1
|
|
2418
2637
|
const level = nodes ? nodes.length - 1 : 0
|
|
2419
2638
|
if (eqEmptyValue(rowid)) {
|
|
@@ -2423,31 +2642,27 @@ const Methods = {
|
|
|
2423
2642
|
if (isLazy && row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
|
|
2424
2643
|
row[childrenField] = null
|
|
2425
2644
|
}
|
|
2426
|
-
let
|
|
2427
|
-
if (
|
|
2428
|
-
|
|
2429
|
-
}
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
if (isSource) {
|
|
2441
|
-
this.fullDataRowIdData = fullDataRowIdMaps
|
|
2442
|
-
}
|
|
2443
|
-
this.fullAllDataRowIdData = fullAllDataRowIdMaps
|
|
2645
|
+
let rowRest = fullAllDataRowIdData[rowid]
|
|
2646
|
+
if (!rowRest) {
|
|
2647
|
+
rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
2648
|
+
}
|
|
2649
|
+
rowRest.row = row
|
|
2650
|
+
rowRest.items = items
|
|
2651
|
+
rowRest.parent = parentRow
|
|
2652
|
+
rowRest.level = level
|
|
2653
|
+
rowRest.index = treeConfig && parentRow ? -1 : index
|
|
2654
|
+
fullDataRowIdMaps[rowid] = rowRest
|
|
2655
|
+
fullAllDataRowIdMaps[rowid] = rowRest
|
|
2656
|
+
}
|
|
2657
|
+
internalData.fullDataRowIdData = fullDataRowIdMaps
|
|
2658
|
+
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps
|
|
2444
2659
|
if (treeConfig) {
|
|
2445
|
-
XEUtils.eachTree(tableFullTreeData,
|
|
2660
|
+
XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField })
|
|
2446
2661
|
} else {
|
|
2447
|
-
tableFullData.forEach(
|
|
2662
|
+
tableFullData.forEach(handleRow)
|
|
2448
2663
|
}
|
|
2449
2664
|
},
|
|
2450
|
-
cacheSourceMap (fullData: any) {
|
|
2665
|
+
cacheSourceMap (fullData: any[]) {
|
|
2451
2666
|
let { treeConfig, treeOpts, sourceDataRowIdData } = this
|
|
2452
2667
|
const sourceData = XEUtils.clone(fullData, true)
|
|
2453
2668
|
const rowkey = getRowkey(this)
|
|
@@ -3260,7 +3475,7 @@ const Methods = {
|
|
|
3260
3475
|
const internalData = $xeTable
|
|
3261
3476
|
|
|
3262
3477
|
const { treeConfig } = props
|
|
3263
|
-
const {
|
|
3478
|
+
const { fullAllDataRowIdData } = internalData
|
|
3264
3479
|
const treeOpts = $xeTable.computeTreeOpts
|
|
3265
3480
|
const { transform, mapChildrenField } = treeOpts
|
|
3266
3481
|
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
@@ -3272,7 +3487,7 @@ const Methods = {
|
|
|
3272
3487
|
rowid = getRowid($xeTable, rowOrRowid)
|
|
3273
3488
|
}
|
|
3274
3489
|
if (rowid) {
|
|
3275
|
-
const rest =
|
|
3490
|
+
const rest = fullAllDataRowIdData[rowid]
|
|
3276
3491
|
const row = rest ? rest.row : null
|
|
3277
3492
|
if (row) {
|
|
3278
3493
|
return row[transform ? mapChildrenField : childrenField] || []
|
|
@@ -3290,7 +3505,7 @@ const Methods = {
|
|
|
3290
3505
|
const internalData = $xeTable as unknown as TableInternalData
|
|
3291
3506
|
|
|
3292
3507
|
const { treeConfig } = props
|
|
3293
|
-
const {
|
|
3508
|
+
const { fullAllDataRowIdData } = internalData
|
|
3294
3509
|
if (rowOrRowid && treeConfig) {
|
|
3295
3510
|
let rowid
|
|
3296
3511
|
if (XEUtils.isString(rowOrRowid)) {
|
|
@@ -3299,7 +3514,7 @@ const Methods = {
|
|
|
3299
3514
|
rowid = getRowid($xeTable, rowOrRowid)
|
|
3300
3515
|
}
|
|
3301
3516
|
if (rowid) {
|
|
3302
|
-
const rest =
|
|
3517
|
+
const rest = fullAllDataRowIdData[rowid]
|
|
3303
3518
|
return rest ? rest.parent : null
|
|
3304
3519
|
}
|
|
3305
3520
|
}
|
|
@@ -3319,9 +3534,9 @@ const Methods = {
|
|
|
3319
3534
|
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
3320
3535
|
const internalData = $xeTable as unknown as TableInternalData
|
|
3321
3536
|
|
|
3322
|
-
const {
|
|
3537
|
+
const { fullAllDataRowIdData } = internalData
|
|
3323
3538
|
const rowid = XEUtils.eqNull(cellValue) ? '' : encodeURIComponent(cellValue)
|
|
3324
|
-
return
|
|
3539
|
+
return fullAllDataRowIdData[rowid] ? fullAllDataRowIdData[rowid].row : null
|
|
3325
3540
|
},
|
|
3326
3541
|
/**
|
|
3327
3542
|
* 根据行获取行的唯一主键
|
|
@@ -5086,10 +5301,12 @@ const Methods = {
|
|
|
5086
5301
|
* 处理默认勾选
|
|
5087
5302
|
*/
|
|
5088
5303
|
handleDefaultSelectionChecked () {
|
|
5304
|
+
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
5305
|
+
|
|
5089
5306
|
const { fullDataRowIdData, checkboxOpts } = this
|
|
5090
5307
|
const { checkAll, checkRowKeys } = checkboxOpts
|
|
5091
5308
|
if (checkAll) {
|
|
5092
|
-
|
|
5309
|
+
handleCheckedAllCheckboxRow($xeTable, true, true)
|
|
5093
5310
|
} else if (checkRowKeys) {
|
|
5094
5311
|
const defSelection: any[] = []
|
|
5095
5312
|
checkRowKeys.forEach((rowid: any) => {
|
|
@@ -5097,18 +5314,13 @@ const Methods = {
|
|
|
5097
5314
|
defSelection.push(fullDataRowIdData[rowid].row)
|
|
5098
5315
|
}
|
|
5099
5316
|
})
|
|
5100
|
-
|
|
5317
|
+
handleCheckedCheckboxRow($xeTable, defSelection, true, true)
|
|
5101
5318
|
}
|
|
5102
5319
|
},
|
|
5103
|
-
handleCheckedCheckboxRow (rows: any, value:
|
|
5320
|
+
handleCheckedCheckboxRow (rows: any[], value: boolean, isForce?: boolean) {
|
|
5104
5321
|
const $xeTable = this
|
|
5105
5322
|
|
|
5106
|
-
|
|
5107
|
-
rows = [rows]
|
|
5108
|
-
}
|
|
5109
|
-
$xeTable.handleBatchSelectRows(rows, !!value, isForce)
|
|
5110
|
-
$xeTable.checkSelectionStatus()
|
|
5111
|
-
return this.$nextTick()
|
|
5323
|
+
return handleCheckedCheckboxRow($xeTable, rows, value, isForce)
|
|
5112
5324
|
},
|
|
5113
5325
|
/**
|
|
5114
5326
|
* 用于多选行,设置行为选中状态,第二个参数为选中与否
|
|
@@ -5121,7 +5333,7 @@ const Methods = {
|
|
|
5121
5333
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5122
5334
|
rows = [rows]
|
|
5123
5335
|
}
|
|
5124
|
-
return $xeTable
|
|
5336
|
+
return handleCheckedCheckboxRow($xeTable, rows, checked, true)
|
|
5125
5337
|
},
|
|
5126
5338
|
setCheckboxRowKey (keys: any, checked: boolean) {
|
|
5127
5339
|
const $xeTable = this
|
|
@@ -5138,7 +5350,7 @@ const Methods = {
|
|
|
5138
5350
|
rows.push(rowRest.row)
|
|
5139
5351
|
}
|
|
5140
5352
|
})
|
|
5141
|
-
return $xeTable
|
|
5353
|
+
return handleCheckedCheckboxRow($xeTable, rows, checked, true)
|
|
5142
5354
|
},
|
|
5143
5355
|
isCheckedByCheckboxRow (row: any) {
|
|
5144
5356
|
const $xeTable = this
|
|
@@ -5189,9 +5401,9 @@ const Methods = {
|
|
|
5189
5401
|
* 多选,行选中事件
|
|
5190
5402
|
*/
|
|
5191
5403
|
handleBatchSelectRows (rows: any[], checked: boolean, isForce?: boolean) {
|
|
5192
|
-
const $xeTable = this
|
|
5404
|
+
const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
|
|
5193
5405
|
const props = $xeTable
|
|
5194
|
-
const reactData = $xeTable
|
|
5406
|
+
const reactData = $xeTable as unknown as TableReactData
|
|
5195
5407
|
|
|
5196
5408
|
const { treeConfig } = props
|
|
5197
5409
|
const { selectCheckboxMaps } = reactData
|
|
@@ -5212,7 +5424,7 @@ const Methods = {
|
|
|
5212
5424
|
if (indeterminateField) {
|
|
5213
5425
|
XEUtils.set(row, indeterminateField, false)
|
|
5214
5426
|
}
|
|
5215
|
-
$xeTable
|
|
5427
|
+
handleCheckboxReserveRow($xeTable, row, checked)
|
|
5216
5428
|
}
|
|
5217
5429
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
5218
5430
|
reactData.selectCheckboxMaps = selectRowMaps
|
|
@@ -5222,7 +5434,7 @@ const Methods = {
|
|
|
5222
5434
|
rows.forEach(row => {
|
|
5223
5435
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5224
5436
|
XEUtils.set(row, checkField, checked)
|
|
5225
|
-
$xeTable
|
|
5437
|
+
handleCheckboxReserveRow($xeTable, row, checked)
|
|
5226
5438
|
}
|
|
5227
5439
|
})
|
|
5228
5440
|
}
|
|
@@ -5243,7 +5455,7 @@ const Methods = {
|
|
|
5243
5455
|
delete selectRowMaps[rowid]
|
|
5244
5456
|
}
|
|
5245
5457
|
}
|
|
5246
|
-
$xeTable
|
|
5458
|
+
handleCheckboxReserveRow($xeTable, row, checked)
|
|
5247
5459
|
}
|
|
5248
5460
|
}, { children: transform ? mapChildrenField : childrenField })
|
|
5249
5461
|
reactData.selectCheckboxMaps = selectRowMaps
|
|
@@ -5263,7 +5475,7 @@ const Methods = {
|
|
|
5263
5475
|
delete selectRowMaps[rowid]
|
|
5264
5476
|
}
|
|
5265
5477
|
}
|
|
5266
|
-
$xeTable
|
|
5478
|
+
handleCheckboxReserveRow($xeTable, row, checked)
|
|
5267
5479
|
}
|
|
5268
5480
|
})
|
|
5269
5481
|
reactData.selectCheckboxMaps = selectRowMaps
|
|
@@ -5298,6 +5510,8 @@ const Methods = {
|
|
|
5298
5510
|
}
|
|
5299
5511
|
},
|
|
5300
5512
|
triggerCheckRowEvent (evnt: any, params: any, checked: any) {
|
|
5513
|
+
const $xeTable = this
|
|
5514
|
+
|
|
5301
5515
|
const { checkboxOpts, afterFullData } = this
|
|
5302
5516
|
const { checkMethod, trigger } = checkboxOpts
|
|
5303
5517
|
const { row } = params
|
|
@@ -5314,7 +5528,7 @@ const Methods = {
|
|
|
5314
5528
|
if (_rowIndex !== _firstRowIndex) {
|
|
5315
5529
|
this.setAllCheckboxRow(false)
|
|
5316
5530
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1)
|
|
5317
|
-
|
|
5531
|
+
handleCheckedCheckboxRow($xeTable, rangeRows, true, false)
|
|
5318
5532
|
this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt)
|
|
5319
5533
|
return
|
|
5320
5534
|
}
|
|
@@ -5344,143 +5558,14 @@ const Methods = {
|
|
|
5344
5558
|
$xeTable.checkSelectionStatus()
|
|
5345
5559
|
return $xeTable.$nextTick()
|
|
5346
5560
|
},
|
|
5347
|
-
handleCheckedAllCheckboxRow (checked: any, isForce: any) {
|
|
5348
|
-
const $xeTable = this
|
|
5349
|
-
const reactData = $xeTable
|
|
5350
|
-
|
|
5351
|
-
const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this
|
|
5352
|
-
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
|
|
5353
|
-
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
|
|
5354
|
-
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
5355
|
-
const selectRowMaps: any = {}
|
|
5356
|
-
|
|
5357
|
-
// 疑惑!
|
|
5358
|
-
if (!treeConfig) {
|
|
5359
|
-
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
5360
|
-
if (!afterFullRowMaps[rowid]) {
|
|
5361
|
-
selectRowMaps[rowid] = row
|
|
5362
|
-
}
|
|
5363
|
-
})
|
|
5364
|
-
}
|
|
5365
|
-
// 疑惑!
|
|
5366
|
-
|
|
5367
|
-
if (checkStrictly) {
|
|
5368
|
-
this.isAllSelected = checked
|
|
5369
|
-
} else {
|
|
5370
|
-
/**
|
|
5371
|
-
* 绑定属性方式(高性能,有污染)
|
|
5372
|
-
* 必须在行数据存在对应的属性,否则将不响应
|
|
5373
|
-
*/
|
|
5374
|
-
if (checkField) {
|
|
5375
|
-
const checkValFn = (row: any) => {
|
|
5376
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5377
|
-
if (checked) {
|
|
5378
|
-
selectRowMaps[getRowid(this, row)] = row
|
|
5379
|
-
}
|
|
5380
|
-
XEUtils.set(row, checkField, checked)
|
|
5381
|
-
}
|
|
5382
|
-
if (treeConfig && indeterminateField) {
|
|
5383
|
-
XEUtils.set(row, indeterminateField, false)
|
|
5384
|
-
}
|
|
5385
|
-
}
|
|
5386
|
-
// 如果存在选中方法
|
|
5387
|
-
// 如果方法成立,则更新值,否则忽略该数据
|
|
5388
|
-
if (treeConfig) {
|
|
5389
|
-
XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField })
|
|
5390
|
-
} else {
|
|
5391
|
-
afterFullData.forEach(checkValFn)
|
|
5392
|
-
}
|
|
5393
|
-
} else {
|
|
5394
|
-
/**
|
|
5395
|
-
* 默认方式(低性能,无污染)
|
|
5396
|
-
* 无需任何属性,直接绑定
|
|
5397
|
-
*/
|
|
5398
|
-
if (treeConfig) {
|
|
5399
|
-
if (checked) {
|
|
5400
|
-
/**
|
|
5401
|
-
* 如果是树勾选
|
|
5402
|
-
* 如果方法成立,则添加到临时集合中
|
|
5403
|
-
*/
|
|
5404
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
5405
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5406
|
-
selectRowMaps[getRowid(this, row)] = row
|
|
5407
|
-
}
|
|
5408
|
-
}, { children: childrenField })
|
|
5409
|
-
} else {
|
|
5410
|
-
/**
|
|
5411
|
-
* 如果是树取消
|
|
5412
|
-
* 如果方法成立,则不添加到临时集合中
|
|
5413
|
-
*/
|
|
5414
|
-
if (!isForce && checkMethod) {
|
|
5415
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
5416
|
-
const rowid = getRowid(this, row)
|
|
5417
|
-
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
5418
|
-
selectRowMaps[rowid] = row
|
|
5419
|
-
}
|
|
5420
|
-
}, { children: childrenField })
|
|
5421
|
-
}
|
|
5422
|
-
}
|
|
5423
|
-
} else {
|
|
5424
|
-
if (checked) {
|
|
5425
|
-
/**
|
|
5426
|
-
* 如果是行勾选
|
|
5427
|
-
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
5428
|
-
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
5429
|
-
*/
|
|
5430
|
-
if (!isForce && checkMethod) {
|
|
5431
|
-
afterFullData.forEach((row: any) => {
|
|
5432
|
-
const rowid = getRowid(this, row)
|
|
5433
|
-
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
5434
|
-
selectRowMaps[rowid] = row
|
|
5435
|
-
}
|
|
5436
|
-
})
|
|
5437
|
-
} else {
|
|
5438
|
-
afterFullData.forEach((row: any) => {
|
|
5439
|
-
selectRowMaps[getRowid(this, row)] = row
|
|
5440
|
-
})
|
|
5441
|
-
}
|
|
5442
|
-
} else {
|
|
5443
|
-
/**
|
|
5444
|
-
* 如果是行取消
|
|
5445
|
-
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
5446
|
-
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
5447
|
-
*/
|
|
5448
|
-
if (!isForce && checkMethod) {
|
|
5449
|
-
afterFullData.forEach((row: any) => {
|
|
5450
|
-
const rowid = getRowid(this, row)
|
|
5451
|
-
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
5452
|
-
selectRowMaps[rowid] = row
|
|
5453
|
-
}
|
|
5454
|
-
})
|
|
5455
|
-
}
|
|
5456
|
-
}
|
|
5457
|
-
}
|
|
5458
|
-
}
|
|
5459
|
-
if (reserve) {
|
|
5460
|
-
if (checked) {
|
|
5461
|
-
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
5462
|
-
checkboxReserveRowMap[rowid] = row
|
|
5463
|
-
})
|
|
5464
|
-
} else {
|
|
5465
|
-
afterFullData.forEach((row: any) => this.handleCheckboxReserveRow(row, false))
|
|
5466
|
-
}
|
|
5467
|
-
}
|
|
5468
|
-
this.selectCheckboxMaps = checkField ? {} : selectRowMaps
|
|
5469
|
-
}
|
|
5470
|
-
|
|
5471
|
-
reactData.isAllSelected = checked
|
|
5472
|
-
reactData.isIndeterminate = false
|
|
5473
|
-
this.treeIndeterminateMaps = {}
|
|
5474
|
-
this.treeIndeterminateRowMaps = {}
|
|
5475
|
-
this.checkSelectionStatus()
|
|
5476
|
-
return this.$nextTick()
|
|
5477
|
-
},
|
|
5478
5561
|
/**
|
|
5479
5562
|
* 用于多选行,设置所有行的选中状态
|
|
5480
5563
|
* @param {Boolean} value 是否选中
|
|
5481
5564
|
*/
|
|
5482
|
-
setAllCheckboxRow (value:
|
|
5483
|
-
|
|
5565
|
+
setAllCheckboxRow (value: boolean) {
|
|
5566
|
+
const $xeTable = this
|
|
5567
|
+
|
|
5568
|
+
return handleCheckedAllCheckboxRow($xeTable, value, true)
|
|
5484
5569
|
},
|
|
5485
5570
|
updateCheckboxStatus () {
|
|
5486
5571
|
const $xeTable = this
|
|
@@ -5641,43 +5726,6 @@ const Methods = {
|
|
|
5641
5726
|
$xeTable.updateCheckboxStatus()
|
|
5642
5727
|
$xeTable.updateAllCheckboxStatus()
|
|
5643
5728
|
},
|
|
5644
|
-
// 还原展开、选中等相关状态
|
|
5645
|
-
handleReserveStatus () {
|
|
5646
|
-
const $xeTable = this
|
|
5647
|
-
|
|
5648
|
-
const { expandColumn, treeOpts, treeConfig, fullDataRowIdData, fullAllDataRowIdData, currentRow, selectRadioRow, radioReserveRow, radioOpts, checkboxOpts, selectCheckboxMaps, rowExpandedMaps, treeExpandedMaps, expandOpts } = this
|
|
5649
|
-
// 单选框
|
|
5650
|
-
if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
|
|
5651
|
-
this.selectRadioRow = null // 刷新单选行状态
|
|
5652
|
-
}
|
|
5653
|
-
// 还原保留选中状态
|
|
5654
|
-
if (radioOpts.reserve && radioReserveRow) {
|
|
5655
|
-
const rowid = getRowid(this, radioReserveRow)
|
|
5656
|
-
if (fullDataRowIdData[rowid]) {
|
|
5657
|
-
this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
|
|
5658
|
-
}
|
|
5659
|
-
}
|
|
5660
|
-
// 复选框
|
|
5661
|
-
this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps) // 刷新多选行状态
|
|
5662
|
-
// 还原保留选中状态
|
|
5663
|
-
if (checkboxOpts.reserve) {
|
|
5664
|
-
this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true)
|
|
5665
|
-
}
|
|
5666
|
-
if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
|
|
5667
|
-
this.currentRow = null // 刷新当前行状态
|
|
5668
|
-
}
|
|
5669
|
-
// 行展开
|
|
5670
|
-
this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : [] // 刷新行展开状态
|
|
5671
|
-
// 还原保留状态
|
|
5672
|
-
if (expandColumn && expandOpts.reserve) {
|
|
5673
|
-
this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true)
|
|
5674
|
-
}
|
|
5675
|
-
// 树展开
|
|
5676
|
-
this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : [] // 刷新树展开状态
|
|
5677
|
-
if (treeConfig && treeOpts.reserve) {
|
|
5678
|
-
this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true)
|
|
5679
|
-
}
|
|
5680
|
-
},
|
|
5681
5729
|
/**
|
|
5682
5730
|
* 获取单选框保留选中的行
|
|
5683
5731
|
*/
|
|
@@ -5710,12 +5758,6 @@ const Methods = {
|
|
|
5710
5758
|
this.radioReserveRow = null
|
|
5711
5759
|
return this.$nextTick()
|
|
5712
5760
|
},
|
|
5713
|
-
handleRadioReserveRow (row: any) {
|
|
5714
|
-
const { radioOpts } = this
|
|
5715
|
-
if (radioOpts.reserve) {
|
|
5716
|
-
this.radioReserveRow = row
|
|
5717
|
-
}
|
|
5718
|
-
},
|
|
5719
5761
|
/**
|
|
5720
5762
|
* 获取复选框保留选中的行
|
|
5721
5763
|
*/
|
|
@@ -5766,15 +5808,24 @@ const Methods = {
|
|
|
5766
5808
|
}
|
|
5767
5809
|
},
|
|
5768
5810
|
handleCheckAllEvent (evnt: any, value: any) {
|
|
5769
|
-
this
|
|
5811
|
+
const $xeTable = this
|
|
5812
|
+
|
|
5813
|
+
handleCheckedAllCheckboxRow($xeTable, value)
|
|
5770
5814
|
if (evnt) {
|
|
5771
|
-
|
|
5815
|
+
$xeTable.dispatchEvent('checkbox-all', {
|
|
5816
|
+
records: $xeTable.getCheckboxRecords(),
|
|
5817
|
+
reserves: $xeTable.getCheckboxReserveRecords(),
|
|
5818
|
+
indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
|
|
5819
|
+
checked: value
|
|
5820
|
+
}, evnt)
|
|
5772
5821
|
}
|
|
5773
5822
|
},
|
|
5774
5823
|
/**
|
|
5775
5824
|
* 多选,选中所有事件
|
|
5776
5825
|
*/
|
|
5777
5826
|
triggerCheckAllEvent (evnt: any, value: any) {
|
|
5827
|
+
const $xeTable = this
|
|
5828
|
+
|
|
5778
5829
|
const { checkboxOpts } = this
|
|
5779
5830
|
const { trigger } = checkboxOpts
|
|
5780
5831
|
if (trigger === 'manual') {
|
|
@@ -5783,7 +5834,7 @@ const Methods = {
|
|
|
5783
5834
|
if (evnt) {
|
|
5784
5835
|
evnt.stopPropagation()
|
|
5785
5836
|
}
|
|
5786
|
-
|
|
5837
|
+
$xeTable.handleCheckAllEvent(evnt, value)
|
|
5787
5838
|
},
|
|
5788
5839
|
/**
|
|
5789
5840
|
* 多选,切换所有行的选中状态
|
|
@@ -5827,11 +5878,13 @@ const Methods = {
|
|
|
5827
5878
|
* 处理单选框默认勾选
|
|
5828
5879
|
*/
|
|
5829
5880
|
handleDefaultRadioChecked () {
|
|
5881
|
+
const $xeTable = this
|
|
5882
|
+
|
|
5830
5883
|
const { radioOpts, fullDataRowIdData } = this
|
|
5831
5884
|
const { checkRowKey: rowid, reserve } = radioOpts
|
|
5832
5885
|
if (rowid) {
|
|
5833
5886
|
if (fullDataRowIdData[rowid]) {
|
|
5834
|
-
|
|
5887
|
+
handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true)
|
|
5835
5888
|
}
|
|
5836
5889
|
if (reserve) {
|
|
5837
5890
|
const rowkey = getRowkey(this)
|
|
@@ -5845,6 +5898,8 @@ const Methods = {
|
|
|
5845
5898
|
triggerRadioRowEvent (evnt: Event, params: {
|
|
5846
5899
|
row: any
|
|
5847
5900
|
}) {
|
|
5901
|
+
const $xeTable = this
|
|
5902
|
+
|
|
5848
5903
|
const { selectRadioRow: oldValue, radioOpts } = this
|
|
5849
5904
|
const { row } = params
|
|
5850
5905
|
const { trigger } = radioOpts
|
|
@@ -5855,7 +5910,7 @@ const Methods = {
|
|
|
5855
5910
|
let newValue = row
|
|
5856
5911
|
let isChange = oldValue !== newValue
|
|
5857
5912
|
if (isChange) {
|
|
5858
|
-
|
|
5913
|
+
handleCheckedRadioRow($xeTable, newValue)
|
|
5859
5914
|
} else if (!radioOpts.strict) {
|
|
5860
5915
|
isChange = oldValue === newValue
|
|
5861
5916
|
if (isChange) {
|
|
@@ -5931,15 +5986,6 @@ const Methods = {
|
|
|
5931
5986
|
}
|
|
5932
5987
|
return false
|
|
5933
5988
|
},
|
|
5934
|
-
handleCheckedRadioRow (row: any, isForce?: boolean) {
|
|
5935
|
-
const { radioOpts } = this
|
|
5936
|
-
const { checkMethod } = radioOpts
|
|
5937
|
-
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
5938
|
-
this.selectRadioRow = row
|
|
5939
|
-
this.handleRadioReserveRow(row)
|
|
5940
|
-
}
|
|
5941
|
-
return this.$nextTick()
|
|
5942
|
-
},
|
|
5943
5989
|
/**
|
|
5944
5990
|
* 用于单选行,设置某一行为选中状态
|
|
5945
5991
|
* @param {Row} row 行对象
|
|
@@ -5947,7 +5993,7 @@ const Methods = {
|
|
|
5947
5993
|
setRadioRow (row: any) {
|
|
5948
5994
|
const $xeTable = this
|
|
5949
5995
|
|
|
5950
|
-
return $xeTable
|
|
5996
|
+
return handleCheckedRadioRow($xeTable, row, true)
|
|
5951
5997
|
},
|
|
5952
5998
|
/**
|
|
5953
5999
|
* 用于单选行,设置某一行为选中状态
|
|
@@ -5960,7 +6006,7 @@ const Methods = {
|
|
|
5960
6006
|
const { fullAllDataRowIdData } = internalData
|
|
5961
6007
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
5962
6008
|
if (rowRest) {
|
|
5963
|
-
return $xeTable
|
|
6009
|
+
return handleCheckedRadioRow($xeTable, rowRest.row, true)
|
|
5964
6010
|
}
|
|
5965
6011
|
return $xeTable.$nextTick()
|
|
5966
6012
|
},
|
|
@@ -7602,11 +7648,12 @@ const Methods = {
|
|
|
7602
7648
|
const reactData = $xeTable as unknown as TableReactData
|
|
7603
7649
|
const internalData = $xeTable as unknown as TableInternalData
|
|
7604
7650
|
|
|
7605
|
-
const tExpandedMaps = { ...reactData.treeExpandedMaps }
|
|
7606
7651
|
const { fullAllDataRowIdData } = internalData
|
|
7607
7652
|
const treeOpts = $xeTable.computeTreeOpts
|
|
7608
7653
|
const { transform } = treeOpts
|
|
7654
|
+
let tExpandedMaps: Record<string, any> = {}
|
|
7609
7655
|
if (rows) {
|
|
7656
|
+
tExpandedMaps = { ...reactData.treeExpandedMaps }
|
|
7610
7657
|
if (!XEUtils.isArray(rows)) {
|
|
7611
7658
|
rows = [rows]
|
|
7612
7659
|
}
|
|
@@ -7620,8 +7667,12 @@ const Methods = {
|
|
|
7620
7667
|
}
|
|
7621
7668
|
}
|
|
7622
7669
|
})
|
|
7670
|
+
} else {
|
|
7671
|
+
XEUtils.each(fullAllDataRowIdData, (rowRest) => {
|
|
7672
|
+
rowRest.treeLoaded = false
|
|
7673
|
+
})
|
|
7623
7674
|
}
|
|
7624
|
-
reactData.treeExpandedMaps =
|
|
7675
|
+
reactData.treeExpandedMaps = {}
|
|
7625
7676
|
if (transform) {
|
|
7626
7677
|
handleVirtualTreeToList($xeTable)
|
|
7627
7678
|
return $xeTable.handleTableData()
|
|
@@ -7741,7 +7792,7 @@ const Methods = {
|
|
|
7741
7792
|
}
|
|
7742
7793
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
7743
7794
|
if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
|
|
7744
|
-
|
|
7795
|
+
handleCheckedCheckboxRow($xeTable, childRows, true)
|
|
7745
7796
|
}
|
|
7746
7797
|
return this.$nextTick().then(() => {
|
|
7747
7798
|
if (transform) {
|