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
package/es/table/src/methods.js
CHANGED
|
@@ -38,8 +38,9 @@ const setCustomStorageMap = (id, data) => {
|
|
|
38
38
|
maps._v = version;
|
|
39
39
|
localStorage.setItem(customStorageKey, XEUtils.toJSONString(maps));
|
|
40
40
|
};
|
|
41
|
-
const getRecoverRowMaps = (
|
|
42
|
-
const
|
|
41
|
+
const getRecoverRowMaps = ($xeTable, keyMaps) => {
|
|
42
|
+
const internalData = $xeTable;
|
|
43
|
+
const { fullAllDataRowIdData } = internalData;
|
|
43
44
|
const restKeys = {};
|
|
44
45
|
XEUtils.each(keyMaps, (row, rowid) => {
|
|
45
46
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -48,8 +49,9 @@ const getRecoverRowMaps = (_vm, keyMaps) => {
|
|
|
48
49
|
});
|
|
49
50
|
return restKeys;
|
|
50
51
|
};
|
|
51
|
-
function handleReserveRow(
|
|
52
|
-
const
|
|
52
|
+
function handleReserveRow($xeTable, reserveRowMap) {
|
|
53
|
+
const internalData = $xeTable;
|
|
54
|
+
const { fullDataRowIdData } = internalData;
|
|
53
55
|
const reserveList = [];
|
|
54
56
|
XEUtils.each(reserveRowMap, (item, rowid) => {
|
|
55
57
|
if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
|
|
@@ -716,6 +718,215 @@ function updateStyle($xeTable) {
|
|
|
716
718
|
}
|
|
717
719
|
return $xeTable.$nextTick();
|
|
718
720
|
}
|
|
721
|
+
function handleRadioReserveRow($xeTable, row) {
|
|
722
|
+
const internalData = $xeTable;
|
|
723
|
+
const radioOpts = $xeTable.computeRadioOpts;
|
|
724
|
+
if (radioOpts.reserve) {
|
|
725
|
+
internalData.radioReserveRow = row;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
function handleCheckboxReserveRow($xeTable, row, checked) {
|
|
729
|
+
const internalData = $xeTable;
|
|
730
|
+
const { checkboxReserveRowMap } = internalData;
|
|
731
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
732
|
+
if (checkboxOpts.reserve) {
|
|
733
|
+
const rowid = getRowid($xeTable, row);
|
|
734
|
+
if (checked) {
|
|
735
|
+
checkboxReserveRowMap[rowid] = row;
|
|
736
|
+
}
|
|
737
|
+
else if (checkboxReserveRowMap[rowid]) {
|
|
738
|
+
delete checkboxReserveRowMap[rowid];
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
function handleCheckedRadioRow($xeTable, row, isForce) {
|
|
743
|
+
const reactData = $xeTable;
|
|
744
|
+
const radioOpts = $xeTable.computeRadioOpts;
|
|
745
|
+
const { checkMethod } = radioOpts;
|
|
746
|
+
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
747
|
+
reactData.selectRadioRow = row;
|
|
748
|
+
handleRadioReserveRow($xeTable, row);
|
|
749
|
+
}
|
|
750
|
+
return $xeTable.$nextTick();
|
|
751
|
+
}
|
|
752
|
+
function handleCheckedCheckboxRow($xeTable, rows, value, isForce) {
|
|
753
|
+
if (rows && !XEUtils.isArray(rows)) {
|
|
754
|
+
rows = [rows];
|
|
755
|
+
}
|
|
756
|
+
$xeTable.handleBatchSelectRows(rows, !!value, isForce);
|
|
757
|
+
$xeTable.checkSelectionStatus();
|
|
758
|
+
return $xeTable.$nextTick();
|
|
759
|
+
}
|
|
760
|
+
function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
761
|
+
const props = $xeTable;
|
|
762
|
+
const reactData = $xeTable;
|
|
763
|
+
const internalData = $xeTable;
|
|
764
|
+
const { treeConfig } = props;
|
|
765
|
+
const { selectCheckboxMaps } = reactData;
|
|
766
|
+
const { afterFullData, checkboxReserveRowMap } = internalData;
|
|
767
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
768
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
769
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
770
|
+
const { checkField, reserve, checkMethod } = checkboxOpts;
|
|
771
|
+
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
772
|
+
const selectRowMaps = {};
|
|
773
|
+
/**
|
|
774
|
+
* 绑定属性方式(高性能,有污染)
|
|
775
|
+
* 必须在行数据存在对应的属性,否则将不响应
|
|
776
|
+
*/
|
|
777
|
+
if (checkField) {
|
|
778
|
+
const checkValFn = (row) => {
|
|
779
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
780
|
+
if (checked) {
|
|
781
|
+
selectRowMaps[getRowid($xeTable, row)] = row;
|
|
782
|
+
}
|
|
783
|
+
XEUtils.set(row, checkField, checked);
|
|
784
|
+
}
|
|
785
|
+
if (treeConfig && indeterminateField) {
|
|
786
|
+
XEUtils.set(row, indeterminateField, false);
|
|
787
|
+
}
|
|
788
|
+
};
|
|
789
|
+
// 如果存在选中方法
|
|
790
|
+
// 如果方法成立,则更新值,否则忽略该数据
|
|
791
|
+
if (treeConfig) {
|
|
792
|
+
XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
|
|
793
|
+
}
|
|
794
|
+
else {
|
|
795
|
+
afterFullData.forEach(checkValFn);
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
else {
|
|
799
|
+
/**
|
|
800
|
+
* 默认方式(低性能,无污染)
|
|
801
|
+
* 无需任何属性,直接绑定
|
|
802
|
+
*/
|
|
803
|
+
if (treeConfig) {
|
|
804
|
+
if (checked) {
|
|
805
|
+
/**
|
|
806
|
+
* 如果是树勾选
|
|
807
|
+
* 如果方法成立,则添加到临时集合中
|
|
808
|
+
*/
|
|
809
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
810
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
811
|
+
selectRowMaps[getRowid($xeTable, row)] = row;
|
|
812
|
+
}
|
|
813
|
+
}, { children: childrenField });
|
|
814
|
+
}
|
|
815
|
+
else {
|
|
816
|
+
/**
|
|
817
|
+
* 如果是树取消
|
|
818
|
+
* 如果方法成立,则不添加到临时集合中
|
|
819
|
+
*/
|
|
820
|
+
if (!isForce && checkMethod) {
|
|
821
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
822
|
+
const rowid = getRowid($xeTable, row);
|
|
823
|
+
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
824
|
+
selectRowMaps[rowid] = row;
|
|
825
|
+
}
|
|
826
|
+
}, { children: childrenField });
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
else {
|
|
831
|
+
if (checked) {
|
|
832
|
+
/**
|
|
833
|
+
* 如果是行勾选
|
|
834
|
+
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
835
|
+
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
836
|
+
*/
|
|
837
|
+
if (!isForce && checkMethod) {
|
|
838
|
+
afterFullData.forEach((row) => {
|
|
839
|
+
const rowid = getRowid($xeTable, row);
|
|
840
|
+
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
841
|
+
selectRowMaps[rowid] = row;
|
|
842
|
+
}
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
else {
|
|
846
|
+
afterFullData.forEach(row => {
|
|
847
|
+
selectRowMaps[getRowid($xeTable, row)] = row;
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
else {
|
|
852
|
+
/**
|
|
853
|
+
* 如果是行取消
|
|
854
|
+
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
855
|
+
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
856
|
+
*/
|
|
857
|
+
if (!isForce && checkMethod) {
|
|
858
|
+
afterFullData.forEach((row) => {
|
|
859
|
+
const rowid = getRowid($xeTable, row);
|
|
860
|
+
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
861
|
+
selectRowMaps[rowid] = row;
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
if (reserve) {
|
|
869
|
+
if (checked) {
|
|
870
|
+
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
871
|
+
checkboxReserveRowMap[rowid] = row;
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
else {
|
|
875
|
+
afterFullData.forEach((row) => handleCheckboxReserveRow($xeTable, row, false));
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
879
|
+
reactData.isAllSelected = checked;
|
|
880
|
+
reactData.isIndeterminate = false;
|
|
881
|
+
reactData.treeIndeterminateMaps = {};
|
|
882
|
+
internalData.treeIndeterminateRowMaps = {};
|
|
883
|
+
$xeTable.checkSelectionStatus();
|
|
884
|
+
return $xeTable.$nextTick();
|
|
885
|
+
}
|
|
886
|
+
// 还原展开、选中等相关状态
|
|
887
|
+
function handleReserveStatus($xeTable) {
|
|
888
|
+
const props = $xeTable;
|
|
889
|
+
const reactData = $xeTable;
|
|
890
|
+
const internalData = $xeTable;
|
|
891
|
+
const { treeConfig } = props;
|
|
892
|
+
const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData;
|
|
893
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
|
|
894
|
+
const expandOpts = $xeTable.computeExpandOpts;
|
|
895
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
896
|
+
const radioOpts = $xeTable.computeRadioOpts;
|
|
897
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
898
|
+
// 单选框
|
|
899
|
+
if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
|
|
900
|
+
reactData.selectRadioRow = null; // 刷新单选行状态
|
|
901
|
+
}
|
|
902
|
+
// 还原保留选中状态
|
|
903
|
+
if (radioOpts.reserve && radioReserveRow) {
|
|
904
|
+
const rowid = getRowid($xeTable, radioReserveRow);
|
|
905
|
+
if (fullDataRowIdData[rowid]) {
|
|
906
|
+
handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
// 复选框
|
|
910
|
+
reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps); // 刷新多选行状态
|
|
911
|
+
// 还原保留选中状态
|
|
912
|
+
if (checkboxOpts.reserve) {
|
|
913
|
+
handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true);
|
|
914
|
+
}
|
|
915
|
+
if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
|
|
916
|
+
reactData.currentRow = null; // 刷新当前行状态
|
|
917
|
+
}
|
|
918
|
+
// 行展开
|
|
919
|
+
reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {}; // 刷新行展开状态
|
|
920
|
+
// 还原保留状态
|
|
921
|
+
if (expandColumn && expandOpts.reserve) {
|
|
922
|
+
$xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true);
|
|
923
|
+
}
|
|
924
|
+
// 树展开
|
|
925
|
+
reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {}; // 刷新树展开状态
|
|
926
|
+
if (treeConfig && treeOpts.reserve) {
|
|
927
|
+
$xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
719
930
|
function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
|
|
720
931
|
const reactData = $xeTable;
|
|
721
932
|
const { rowHeightStore } = reactData;
|
|
@@ -2113,15 +2324,11 @@ const Methods = {
|
|
|
2113
2324
|
internalData.tableFullData = fullData;
|
|
2114
2325
|
internalData.tableFullTreeData = treeData;
|
|
2115
2326
|
// 缓存数据
|
|
2116
|
-
$xeTable.cacheRowMap(true
|
|
2327
|
+
$xeTable.cacheRowMap(true);
|
|
2117
2328
|
// 原始数据
|
|
2118
2329
|
internalData.tableSynchData = datas;
|
|
2119
2330
|
if (isReset) {
|
|
2120
2331
|
internalData.isResizeCellHeight = false;
|
|
2121
|
-
reactData.rowExpandedMaps = {};
|
|
2122
|
-
reactData.rowExpandLazyLoadedMaps = {};
|
|
2123
|
-
reactData.treeExpandedMaps = {};
|
|
2124
|
-
reactData.treeExpandLazyLoadedMaps = {};
|
|
2125
2332
|
}
|
|
2126
2333
|
// 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
2127
2334
|
if (keepSource) {
|
|
@@ -2166,7 +2373,7 @@ const Methods = {
|
|
|
2166
2373
|
}
|
|
2167
2374
|
}
|
|
2168
2375
|
}
|
|
2169
|
-
|
|
2376
|
+
handleReserveStatus($xeTable);
|
|
2170
2377
|
this.checkSelectionStatus();
|
|
2171
2378
|
return new Promise(resolve => {
|
|
2172
2379
|
this.$nextTick()
|
|
@@ -2305,16 +2512,21 @@ const Methods = {
|
|
|
2305
2512
|
/**
|
|
2306
2513
|
* 更新数据行的 Map
|
|
2307
2514
|
*/
|
|
2308
|
-
cacheRowMap(
|
|
2309
|
-
const
|
|
2515
|
+
cacheRowMap() {
|
|
2516
|
+
const $xeTable = this;
|
|
2517
|
+
const props = $xeTable;
|
|
2518
|
+
const internalData = $xeTable;
|
|
2519
|
+
const { treeConfig } = props;
|
|
2520
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
2521
|
+
const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
|
|
2310
2522
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2311
2523
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
2312
|
-
const rowkey = getRowkey(
|
|
2524
|
+
const rowkey = getRowkey($xeTable);
|
|
2313
2525
|
const isLazy = treeConfig && treeOpts.lazy;
|
|
2314
2526
|
const fullAllDataRowIdMaps = {};
|
|
2315
2527
|
const fullDataRowIdMaps = {};
|
|
2316
|
-
const
|
|
2317
|
-
let rowid = getRowid(
|
|
2528
|
+
const handleRow = (row, index, items, path, parentRow, nodes) => {
|
|
2529
|
+
let rowid = getRowid($xeTable, row);
|
|
2318
2530
|
const seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
|
|
2319
2531
|
const level = nodes ? nodes.length - 1 : 0;
|
|
2320
2532
|
if (eqEmptyValue(rowid)) {
|
|
@@ -2324,29 +2536,25 @@ const Methods = {
|
|
|
2324
2536
|
if (isLazy && row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
|
|
2325
2537
|
row[childrenField] = null;
|
|
2326
2538
|
}
|
|
2327
|
-
let
|
|
2328
|
-
if (
|
|
2329
|
-
|
|
2330
|
-
}
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
}
|
|
2339
|
-
fullAllDataRowIdMaps[rowid] = cacheItem;
|
|
2539
|
+
let rowRest = fullAllDataRowIdData[rowid];
|
|
2540
|
+
if (!rowRest) {
|
|
2541
|
+
rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
|
|
2542
|
+
}
|
|
2543
|
+
rowRest.row = row;
|
|
2544
|
+
rowRest.items = items;
|
|
2545
|
+
rowRest.parent = parentRow;
|
|
2546
|
+
rowRest.level = level;
|
|
2547
|
+
rowRest.index = treeConfig && parentRow ? -1 : index;
|
|
2548
|
+
fullDataRowIdMaps[rowid] = rowRest;
|
|
2549
|
+
fullAllDataRowIdMaps[rowid] = rowRest;
|
|
2340
2550
|
};
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
}
|
|
2344
|
-
this.fullAllDataRowIdData = fullAllDataRowIdMaps;
|
|
2551
|
+
internalData.fullDataRowIdData = fullDataRowIdMaps;
|
|
2552
|
+
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
|
|
2345
2553
|
if (treeConfig) {
|
|
2346
|
-
XEUtils.eachTree(tableFullTreeData,
|
|
2554
|
+
XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField });
|
|
2347
2555
|
}
|
|
2348
2556
|
else {
|
|
2349
|
-
tableFullData.forEach(
|
|
2557
|
+
tableFullData.forEach(handleRow);
|
|
2350
2558
|
}
|
|
2351
2559
|
},
|
|
2352
2560
|
cacheSourceMap(fullData) {
|
|
@@ -3168,7 +3376,7 @@ const Methods = {
|
|
|
3168
3376
|
const props = $xeTable;
|
|
3169
3377
|
const internalData = $xeTable;
|
|
3170
3378
|
const { treeConfig } = props;
|
|
3171
|
-
const {
|
|
3379
|
+
const { fullAllDataRowIdData } = internalData;
|
|
3172
3380
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
3173
3381
|
const { transform, mapChildrenField } = treeOpts;
|
|
3174
3382
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -3181,7 +3389,7 @@ const Methods = {
|
|
|
3181
3389
|
rowid = getRowid($xeTable, rowOrRowid);
|
|
3182
3390
|
}
|
|
3183
3391
|
if (rowid) {
|
|
3184
|
-
const rest =
|
|
3392
|
+
const rest = fullAllDataRowIdData[rowid];
|
|
3185
3393
|
const row = rest ? rest.row : null;
|
|
3186
3394
|
if (row) {
|
|
3187
3395
|
return row[transform ? mapChildrenField : childrenField] || [];
|
|
@@ -3198,7 +3406,7 @@ const Methods = {
|
|
|
3198
3406
|
const props = $xeTable;
|
|
3199
3407
|
const internalData = $xeTable;
|
|
3200
3408
|
const { treeConfig } = props;
|
|
3201
|
-
const {
|
|
3409
|
+
const { fullAllDataRowIdData } = internalData;
|
|
3202
3410
|
if (rowOrRowid && treeConfig) {
|
|
3203
3411
|
let rowid;
|
|
3204
3412
|
if (XEUtils.isString(rowOrRowid)) {
|
|
@@ -3208,7 +3416,7 @@ const Methods = {
|
|
|
3208
3416
|
rowid = getRowid($xeTable, rowOrRowid);
|
|
3209
3417
|
}
|
|
3210
3418
|
if (rowid) {
|
|
3211
|
-
const rest =
|
|
3419
|
+
const rest = fullAllDataRowIdData[rowid];
|
|
3212
3420
|
return rest ? rest.parent : null;
|
|
3213
3421
|
}
|
|
3214
3422
|
}
|
|
@@ -3226,9 +3434,9 @@ const Methods = {
|
|
|
3226
3434
|
getRowById(cellValue) {
|
|
3227
3435
|
const $xeTable = this;
|
|
3228
3436
|
const internalData = $xeTable;
|
|
3229
|
-
const {
|
|
3437
|
+
const { fullAllDataRowIdData } = internalData;
|
|
3230
3438
|
const rowid = XEUtils.eqNull(cellValue) ? '' : encodeURIComponent(cellValue);
|
|
3231
|
-
return
|
|
3439
|
+
return fullAllDataRowIdData[rowid] ? fullAllDataRowIdData[rowid].row : null;
|
|
3232
3440
|
},
|
|
3233
3441
|
/**
|
|
3234
3442
|
* 根据行获取行的唯一主键
|
|
@@ -4990,10 +5198,11 @@ const Methods = {
|
|
|
4990
5198
|
* 处理默认勾选
|
|
4991
5199
|
*/
|
|
4992
5200
|
handleDefaultSelectionChecked() {
|
|
5201
|
+
const $xeTable = this;
|
|
4993
5202
|
const { fullDataRowIdData, checkboxOpts } = this;
|
|
4994
5203
|
const { checkAll, checkRowKeys } = checkboxOpts;
|
|
4995
5204
|
if (checkAll) {
|
|
4996
|
-
|
|
5205
|
+
handleCheckedAllCheckboxRow($xeTable, true, true);
|
|
4997
5206
|
}
|
|
4998
5207
|
else if (checkRowKeys) {
|
|
4999
5208
|
const defSelection = [];
|
|
@@ -5002,17 +5211,12 @@ const Methods = {
|
|
|
5002
5211
|
defSelection.push(fullDataRowIdData[rowid].row);
|
|
5003
5212
|
}
|
|
5004
5213
|
});
|
|
5005
|
-
|
|
5214
|
+
handleCheckedCheckboxRow($xeTable, defSelection, true, true);
|
|
5006
5215
|
}
|
|
5007
5216
|
},
|
|
5008
5217
|
handleCheckedCheckboxRow(rows, value, isForce) {
|
|
5009
5218
|
const $xeTable = this;
|
|
5010
|
-
|
|
5011
|
-
rows = [rows];
|
|
5012
|
-
}
|
|
5013
|
-
$xeTable.handleBatchSelectRows(rows, !!value, isForce);
|
|
5014
|
-
$xeTable.checkSelectionStatus();
|
|
5015
|
-
return this.$nextTick();
|
|
5219
|
+
return handleCheckedCheckboxRow($xeTable, rows, value, isForce);
|
|
5016
5220
|
},
|
|
5017
5221
|
/**
|
|
5018
5222
|
* 用于多选行,设置行为选中状态,第二个参数为选中与否
|
|
@@ -5024,7 +5228,7 @@ const Methods = {
|
|
|
5024
5228
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5025
5229
|
rows = [rows];
|
|
5026
5230
|
}
|
|
5027
|
-
return $xeTable
|
|
5231
|
+
return handleCheckedCheckboxRow($xeTable, rows, checked, true);
|
|
5028
5232
|
},
|
|
5029
5233
|
setCheckboxRowKey(keys, checked) {
|
|
5030
5234
|
const $xeTable = this;
|
|
@@ -5040,7 +5244,7 @@ const Methods = {
|
|
|
5040
5244
|
rows.push(rowRest.row);
|
|
5041
5245
|
}
|
|
5042
5246
|
});
|
|
5043
|
-
return $xeTable
|
|
5247
|
+
return handleCheckedCheckboxRow($xeTable, rows, checked, true);
|
|
5044
5248
|
},
|
|
5045
5249
|
isCheckedByCheckboxRow(row) {
|
|
5046
5250
|
const $xeTable = this;
|
|
@@ -5109,7 +5313,7 @@ const Methods = {
|
|
|
5109
5313
|
if (indeterminateField) {
|
|
5110
5314
|
XEUtils.set(row, indeterminateField, false);
|
|
5111
5315
|
}
|
|
5112
|
-
$xeTable
|
|
5316
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5113
5317
|
}
|
|
5114
5318
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
5115
5319
|
reactData.selectCheckboxMaps = selectRowMaps;
|
|
@@ -5120,7 +5324,7 @@ const Methods = {
|
|
|
5120
5324
|
rows.forEach(row => {
|
|
5121
5325
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5122
5326
|
XEUtils.set(row, checkField, checked);
|
|
5123
|
-
$xeTable
|
|
5327
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5124
5328
|
}
|
|
5125
5329
|
});
|
|
5126
5330
|
}
|
|
@@ -5141,7 +5345,7 @@ const Methods = {
|
|
|
5141
5345
|
delete selectRowMaps[rowid];
|
|
5142
5346
|
}
|
|
5143
5347
|
}
|
|
5144
|
-
$xeTable
|
|
5348
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5145
5349
|
}
|
|
5146
5350
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
5147
5351
|
reactData.selectCheckboxMaps = selectRowMaps;
|
|
@@ -5161,7 +5365,7 @@ const Methods = {
|
|
|
5161
5365
|
delete selectRowMaps[rowid];
|
|
5162
5366
|
}
|
|
5163
5367
|
}
|
|
5164
|
-
$xeTable
|
|
5368
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5165
5369
|
}
|
|
5166
5370
|
});
|
|
5167
5371
|
reactData.selectCheckboxMaps = selectRowMaps;
|
|
@@ -5197,6 +5401,7 @@ const Methods = {
|
|
|
5197
5401
|
}
|
|
5198
5402
|
},
|
|
5199
5403
|
triggerCheckRowEvent(evnt, params, checked) {
|
|
5404
|
+
const $xeTable = this;
|
|
5200
5405
|
const { checkboxOpts, afterFullData } = this;
|
|
5201
5406
|
const { checkMethod, trigger } = checkboxOpts;
|
|
5202
5407
|
const { row } = params;
|
|
@@ -5213,7 +5418,7 @@ const Methods = {
|
|
|
5213
5418
|
if (_rowIndex !== _firstRowIndex) {
|
|
5214
5419
|
this.setAllCheckboxRow(false);
|
|
5215
5420
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
|
|
5216
|
-
|
|
5421
|
+
handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
|
|
5217
5422
|
this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
|
|
5218
5423
|
return;
|
|
5219
5424
|
}
|
|
@@ -5242,147 +5447,13 @@ const Methods = {
|
|
|
5242
5447
|
$xeTable.checkSelectionStatus();
|
|
5243
5448
|
return $xeTable.$nextTick();
|
|
5244
5449
|
},
|
|
5245
|
-
handleCheckedAllCheckboxRow(checked, isForce) {
|
|
5246
|
-
const $xeTable = this;
|
|
5247
|
-
const reactData = $xeTable;
|
|
5248
|
-
const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this;
|
|
5249
|
-
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts;
|
|
5250
|
-
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
5251
|
-
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
5252
|
-
const selectRowMaps = {};
|
|
5253
|
-
// 疑惑!
|
|
5254
|
-
if (!treeConfig) {
|
|
5255
|
-
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
5256
|
-
if (!afterFullRowMaps[rowid]) {
|
|
5257
|
-
selectRowMaps[rowid] = row;
|
|
5258
|
-
}
|
|
5259
|
-
});
|
|
5260
|
-
}
|
|
5261
|
-
// 疑惑!
|
|
5262
|
-
if (checkStrictly) {
|
|
5263
|
-
this.isAllSelected = checked;
|
|
5264
|
-
}
|
|
5265
|
-
else {
|
|
5266
|
-
/**
|
|
5267
|
-
* 绑定属性方式(高性能,有污染)
|
|
5268
|
-
* 必须在行数据存在对应的属性,否则将不响应
|
|
5269
|
-
*/
|
|
5270
|
-
if (checkField) {
|
|
5271
|
-
const checkValFn = (row) => {
|
|
5272
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5273
|
-
if (checked) {
|
|
5274
|
-
selectRowMaps[getRowid(this, row)] = row;
|
|
5275
|
-
}
|
|
5276
|
-
XEUtils.set(row, checkField, checked);
|
|
5277
|
-
}
|
|
5278
|
-
if (treeConfig && indeterminateField) {
|
|
5279
|
-
XEUtils.set(row, indeterminateField, false);
|
|
5280
|
-
}
|
|
5281
|
-
};
|
|
5282
|
-
// 如果存在选中方法
|
|
5283
|
-
// 如果方法成立,则更新值,否则忽略该数据
|
|
5284
|
-
if (treeConfig) {
|
|
5285
|
-
XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
|
|
5286
|
-
}
|
|
5287
|
-
else {
|
|
5288
|
-
afterFullData.forEach(checkValFn);
|
|
5289
|
-
}
|
|
5290
|
-
}
|
|
5291
|
-
else {
|
|
5292
|
-
/**
|
|
5293
|
-
* 默认方式(低性能,无污染)
|
|
5294
|
-
* 无需任何属性,直接绑定
|
|
5295
|
-
*/
|
|
5296
|
-
if (treeConfig) {
|
|
5297
|
-
if (checked) {
|
|
5298
|
-
/**
|
|
5299
|
-
* 如果是树勾选
|
|
5300
|
-
* 如果方法成立,则添加到临时集合中
|
|
5301
|
-
*/
|
|
5302
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
5303
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5304
|
-
selectRowMaps[getRowid(this, row)] = row;
|
|
5305
|
-
}
|
|
5306
|
-
}, { children: childrenField });
|
|
5307
|
-
}
|
|
5308
|
-
else {
|
|
5309
|
-
/**
|
|
5310
|
-
* 如果是树取消
|
|
5311
|
-
* 如果方法成立,则不添加到临时集合中
|
|
5312
|
-
*/
|
|
5313
|
-
if (!isForce && checkMethod) {
|
|
5314
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
5315
|
-
const rowid = getRowid(this, row);
|
|
5316
|
-
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
5317
|
-
selectRowMaps[rowid] = row;
|
|
5318
|
-
}
|
|
5319
|
-
}, { children: childrenField });
|
|
5320
|
-
}
|
|
5321
|
-
}
|
|
5322
|
-
}
|
|
5323
|
-
else {
|
|
5324
|
-
if (checked) {
|
|
5325
|
-
/**
|
|
5326
|
-
* 如果是行勾选
|
|
5327
|
-
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
5328
|
-
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
5329
|
-
*/
|
|
5330
|
-
if (!isForce && checkMethod) {
|
|
5331
|
-
afterFullData.forEach((row) => {
|
|
5332
|
-
const rowid = getRowid(this, row);
|
|
5333
|
-
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
5334
|
-
selectRowMaps[rowid] = row;
|
|
5335
|
-
}
|
|
5336
|
-
});
|
|
5337
|
-
}
|
|
5338
|
-
else {
|
|
5339
|
-
afterFullData.forEach((row) => {
|
|
5340
|
-
selectRowMaps[getRowid(this, row)] = row;
|
|
5341
|
-
});
|
|
5342
|
-
}
|
|
5343
|
-
}
|
|
5344
|
-
else {
|
|
5345
|
-
/**
|
|
5346
|
-
* 如果是行取消
|
|
5347
|
-
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
5348
|
-
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
5349
|
-
*/
|
|
5350
|
-
if (!isForce && checkMethod) {
|
|
5351
|
-
afterFullData.forEach((row) => {
|
|
5352
|
-
const rowid = getRowid(this, row);
|
|
5353
|
-
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
5354
|
-
selectRowMaps[rowid] = row;
|
|
5355
|
-
}
|
|
5356
|
-
});
|
|
5357
|
-
}
|
|
5358
|
-
}
|
|
5359
|
-
}
|
|
5360
|
-
}
|
|
5361
|
-
if (reserve) {
|
|
5362
|
-
if (checked) {
|
|
5363
|
-
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
5364
|
-
checkboxReserveRowMap[rowid] = row;
|
|
5365
|
-
});
|
|
5366
|
-
}
|
|
5367
|
-
else {
|
|
5368
|
-
afterFullData.forEach((row) => this.handleCheckboxReserveRow(row, false));
|
|
5369
|
-
}
|
|
5370
|
-
}
|
|
5371
|
-
this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
5372
|
-
}
|
|
5373
|
-
reactData.isAllSelected = checked;
|
|
5374
|
-
reactData.isIndeterminate = false;
|
|
5375
|
-
this.treeIndeterminateMaps = {};
|
|
5376
|
-
this.treeIndeterminateRowMaps = {};
|
|
5377
|
-
this.checkSelectionStatus();
|
|
5378
|
-
return this.$nextTick();
|
|
5379
|
-
},
|
|
5380
5450
|
/**
|
|
5381
5451
|
* 用于多选行,设置所有行的选中状态
|
|
5382
5452
|
* @param {Boolean} value 是否选中
|
|
5383
5453
|
*/
|
|
5384
5454
|
setAllCheckboxRow(value) {
|
|
5385
|
-
|
|
5455
|
+
const $xeTable = this;
|
|
5456
|
+
return handleCheckedAllCheckboxRow($xeTable, value, true);
|
|
5386
5457
|
},
|
|
5387
5458
|
updateCheckboxStatus() {
|
|
5388
5459
|
const $xeTable = this;
|
|
@@ -5544,42 +5615,6 @@ const Methods = {
|
|
|
5544
5615
|
$xeTable.updateCheckboxStatus();
|
|
5545
5616
|
$xeTable.updateAllCheckboxStatus();
|
|
5546
5617
|
},
|
|
5547
|
-
// 还原展开、选中等相关状态
|
|
5548
|
-
handleReserveStatus() {
|
|
5549
|
-
const $xeTable = this;
|
|
5550
|
-
const { expandColumn, treeOpts, treeConfig, fullDataRowIdData, fullAllDataRowIdData, currentRow, selectRadioRow, radioReserveRow, radioOpts, checkboxOpts, selectCheckboxMaps, rowExpandedMaps, treeExpandedMaps, expandOpts } = this;
|
|
5551
|
-
// 单选框
|
|
5552
|
-
if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
|
|
5553
|
-
this.selectRadioRow = null; // 刷新单选行状态
|
|
5554
|
-
}
|
|
5555
|
-
// 还原保留选中状态
|
|
5556
|
-
if (radioOpts.reserve && radioReserveRow) {
|
|
5557
|
-
const rowid = getRowid(this, radioReserveRow);
|
|
5558
|
-
if (fullDataRowIdData[rowid]) {
|
|
5559
|
-
this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
|
|
5560
|
-
}
|
|
5561
|
-
}
|
|
5562
|
-
// 复选框
|
|
5563
|
-
this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps); // 刷新多选行状态
|
|
5564
|
-
// 还原保留选中状态
|
|
5565
|
-
if (checkboxOpts.reserve) {
|
|
5566
|
-
this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true);
|
|
5567
|
-
}
|
|
5568
|
-
if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
|
|
5569
|
-
this.currentRow = null; // 刷新当前行状态
|
|
5570
|
-
}
|
|
5571
|
-
// 行展开
|
|
5572
|
-
this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : []; // 刷新行展开状态
|
|
5573
|
-
// 还原保留状态
|
|
5574
|
-
if (expandColumn && expandOpts.reserve) {
|
|
5575
|
-
this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true);
|
|
5576
|
-
}
|
|
5577
|
-
// 树展开
|
|
5578
|
-
this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : []; // 刷新树展开状态
|
|
5579
|
-
if (treeConfig && treeOpts.reserve) {
|
|
5580
|
-
this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true);
|
|
5581
|
-
}
|
|
5582
|
-
},
|
|
5583
5618
|
/**
|
|
5584
5619
|
* 获取单选框保留选中的行
|
|
5585
5620
|
*/
|
|
@@ -5614,12 +5649,6 @@ const Methods = {
|
|
|
5614
5649
|
this.radioReserveRow = null;
|
|
5615
5650
|
return this.$nextTick();
|
|
5616
5651
|
},
|
|
5617
|
-
handleRadioReserveRow(row) {
|
|
5618
|
-
const { radioOpts } = this;
|
|
5619
|
-
if (radioOpts.reserve) {
|
|
5620
|
-
this.radioReserveRow = row;
|
|
5621
|
-
}
|
|
5622
|
-
},
|
|
5623
5652
|
/**
|
|
5624
5653
|
* 获取复选框保留选中的行
|
|
5625
5654
|
*/
|
|
@@ -5673,15 +5702,22 @@ const Methods = {
|
|
|
5673
5702
|
}
|
|
5674
5703
|
},
|
|
5675
5704
|
handleCheckAllEvent(evnt, value) {
|
|
5676
|
-
this
|
|
5705
|
+
const $xeTable = this;
|
|
5706
|
+
handleCheckedAllCheckboxRow($xeTable, value);
|
|
5677
5707
|
if (evnt) {
|
|
5678
|
-
|
|
5708
|
+
$xeTable.dispatchEvent('checkbox-all', {
|
|
5709
|
+
records: $xeTable.getCheckboxRecords(),
|
|
5710
|
+
reserves: $xeTable.getCheckboxReserveRecords(),
|
|
5711
|
+
indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
|
|
5712
|
+
checked: value
|
|
5713
|
+
}, evnt);
|
|
5679
5714
|
}
|
|
5680
5715
|
},
|
|
5681
5716
|
/**
|
|
5682
5717
|
* 多选,选中所有事件
|
|
5683
5718
|
*/
|
|
5684
5719
|
triggerCheckAllEvent(evnt, value) {
|
|
5720
|
+
const $xeTable = this;
|
|
5685
5721
|
const { checkboxOpts } = this;
|
|
5686
5722
|
const { trigger } = checkboxOpts;
|
|
5687
5723
|
if (trigger === 'manual') {
|
|
@@ -5690,7 +5726,7 @@ const Methods = {
|
|
|
5690
5726
|
if (evnt) {
|
|
5691
5727
|
evnt.stopPropagation();
|
|
5692
5728
|
}
|
|
5693
|
-
|
|
5729
|
+
$xeTable.handleCheckAllEvent(evnt, value);
|
|
5694
5730
|
},
|
|
5695
5731
|
/**
|
|
5696
5732
|
* 多选,切换所有行的选中状态
|
|
@@ -5735,11 +5771,12 @@ const Methods = {
|
|
|
5735
5771
|
* 处理单选框默认勾选
|
|
5736
5772
|
*/
|
|
5737
5773
|
handleDefaultRadioChecked() {
|
|
5774
|
+
const $xeTable = this;
|
|
5738
5775
|
const { radioOpts, fullDataRowIdData } = this;
|
|
5739
5776
|
const { checkRowKey: rowid, reserve } = radioOpts;
|
|
5740
5777
|
if (rowid) {
|
|
5741
5778
|
if (fullDataRowIdData[rowid]) {
|
|
5742
|
-
|
|
5779
|
+
handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
|
|
5743
5780
|
}
|
|
5744
5781
|
if (reserve) {
|
|
5745
5782
|
const rowkey = getRowkey(this);
|
|
@@ -5751,6 +5788,7 @@ const Methods = {
|
|
|
5751
5788
|
* 单选,行选中事件
|
|
5752
5789
|
*/
|
|
5753
5790
|
triggerRadioRowEvent(evnt, params) {
|
|
5791
|
+
const $xeTable = this;
|
|
5754
5792
|
const { selectRadioRow: oldValue, radioOpts } = this;
|
|
5755
5793
|
const { row } = params;
|
|
5756
5794
|
const { trigger } = radioOpts;
|
|
@@ -5761,7 +5799,7 @@ const Methods = {
|
|
|
5761
5799
|
let newValue = row;
|
|
5762
5800
|
let isChange = oldValue !== newValue;
|
|
5763
5801
|
if (isChange) {
|
|
5764
|
-
|
|
5802
|
+
handleCheckedRadioRow($xeTable, newValue);
|
|
5765
5803
|
}
|
|
5766
5804
|
else if (!radioOpts.strict) {
|
|
5767
5805
|
isChange = oldValue === newValue;
|
|
@@ -5832,22 +5870,13 @@ const Methods = {
|
|
|
5832
5870
|
}
|
|
5833
5871
|
return false;
|
|
5834
5872
|
},
|
|
5835
|
-
handleCheckedRadioRow(row, isForce) {
|
|
5836
|
-
const { radioOpts } = this;
|
|
5837
|
-
const { checkMethod } = radioOpts;
|
|
5838
|
-
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
5839
|
-
this.selectRadioRow = row;
|
|
5840
|
-
this.handleRadioReserveRow(row);
|
|
5841
|
-
}
|
|
5842
|
-
return this.$nextTick();
|
|
5843
|
-
},
|
|
5844
5873
|
/**
|
|
5845
5874
|
* 用于单选行,设置某一行为选中状态
|
|
5846
5875
|
* @param {Row} row 行对象
|
|
5847
5876
|
*/
|
|
5848
5877
|
setRadioRow(row) {
|
|
5849
5878
|
const $xeTable = this;
|
|
5850
|
-
return $xeTable
|
|
5879
|
+
return handleCheckedRadioRow($xeTable, row, true);
|
|
5851
5880
|
},
|
|
5852
5881
|
/**
|
|
5853
5882
|
* 用于单选行,设置某一行为选中状态
|
|
@@ -5859,7 +5888,7 @@ const Methods = {
|
|
|
5859
5888
|
const { fullAllDataRowIdData } = internalData;
|
|
5860
5889
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5861
5890
|
if (rowRest) {
|
|
5862
|
-
return $xeTable
|
|
5891
|
+
return handleCheckedRadioRow($xeTable, rowRest.row, true);
|
|
5863
5892
|
}
|
|
5864
5893
|
return $xeTable.$nextTick();
|
|
5865
5894
|
},
|
|
@@ -7459,11 +7488,12 @@ const Methods = {
|
|
|
7459
7488
|
const $xeTable = this;
|
|
7460
7489
|
const reactData = $xeTable;
|
|
7461
7490
|
const internalData = $xeTable;
|
|
7462
|
-
const tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
|
|
7463
7491
|
const { fullAllDataRowIdData } = internalData;
|
|
7464
7492
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
7465
7493
|
const { transform } = treeOpts;
|
|
7494
|
+
let tExpandedMaps = {};
|
|
7466
7495
|
if (rows) {
|
|
7496
|
+
tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
|
|
7467
7497
|
if (!XEUtils.isArray(rows)) {
|
|
7468
7498
|
rows = [rows];
|
|
7469
7499
|
}
|
|
@@ -7478,7 +7508,12 @@ const Methods = {
|
|
|
7478
7508
|
}
|
|
7479
7509
|
});
|
|
7480
7510
|
}
|
|
7481
|
-
|
|
7511
|
+
else {
|
|
7512
|
+
XEUtils.each(fullAllDataRowIdData, (rowRest) => {
|
|
7513
|
+
rowRest.treeLoaded = false;
|
|
7514
|
+
});
|
|
7515
|
+
}
|
|
7516
|
+
reactData.treeExpandedMaps = {};
|
|
7482
7517
|
if (transform) {
|
|
7483
7518
|
handleVirtualTreeToList($xeTable);
|
|
7484
7519
|
return $xeTable.handleTableData();
|
|
@@ -7595,7 +7630,7 @@ const Methods = {
|
|
|
7595
7630
|
}
|
|
7596
7631
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
7597
7632
|
if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
|
|
7598
|
-
|
|
7633
|
+
handleCheckedCheckboxRow($xeTable, childRows, true);
|
|
7599
7634
|
}
|
|
7600
7635
|
return this.$nextTick().then(() => {
|
|
7601
7636
|
if (transform) {
|