vxe-table 3.14.0-beta.2 → 3.14.0-beta.20
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 +78 -48
- 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/filter/panel.js +12 -2
- package/es/table/module/keyboard/mixin.js +86 -21
- package/es/table/render/index.js +90 -59
- package/es/table/src/body.js +12 -7
- package/es/table/src/cell.js +10 -9
- package/es/table/src/footer.js +9 -4
- package/es/table/src/header.js +2 -2
- package/es/table/src/methods.js +444 -231
- package/es/table/src/props.js +4 -0
- package/es/table/src/table.js +28 -6
- package/es/table/src/util.js +65 -7
- package/es/ui/index.js +1 -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 +85 -65
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +922 -448
- 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-CHT.umd.js +7 -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/filter/panel.js +8 -2
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +89 -25
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/render/index.js +99 -64
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/body.js +11 -6
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +15 -8
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/footer.js +9 -3
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +2 -1
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +491 -252
- package/lib/table/src/methods.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 +28 -6
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +72 -7
- package/lib/table/src/util.min.js +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/package.json +2 -2
- package/packages/grid/src/grid.ts +92 -57
- 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/filter/panel.ts +12 -2
- package/packages/table/module/keyboard/mixin.ts +94 -27
- package/packages/table/render/index.ts +89 -57
- package/packages/table/src/body.ts +11 -6
- package/packages/table/src/cell.ts +10 -9
- package/packages/table/src/footer.ts +9 -4
- package/packages/table/src/header.ts +2 -2
- package/packages/table/src/methods.ts +486 -249
- package/packages/table/src/props.ts +16 -12
- package/packages/table/src/table.ts +36 -6
- package/packages/table/src/util.ts +73 -7
- /package/es/{iconfont.1741079977180.ttf → iconfont.1742353673989.ttf} +0 -0
- /package/es/{iconfont.1741079977180.woff → iconfont.1742353673989.woff} +0 -0
- /package/es/{iconfont.1741079977180.woff2 → iconfont.1742353673989.woff2} +0 -0
- /package/lib/{iconfont.1741079977180.ttf → iconfont.1742353673989.ttf} +0 -0
- /package/lib/{iconfont.1741079977180.woff → iconfont.1742353673989.woff} +0 -0
- /package/lib/{iconfont.1741079977180.woff2 → iconfont.1742353673989.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -3,10 +3,11 @@ import { browse, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEv
|
|
|
3
3
|
import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
|
|
4
4
|
import { VxeUI } from '../../ui';
|
|
5
5
|
import Cell from './cell';
|
|
6
|
-
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getColReMinWidth, getRefElem } from './util';
|
|
6
|
+
import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getRefElem } from './util';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
8
8
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
9
9
|
const { getConfig, getI18n, renderer, formats, interceptor, createEvent } = VxeUI;
|
|
10
|
+
const supportMaxRow = 5e6;
|
|
10
11
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
11
12
|
const maxYHeight = 5e6;
|
|
12
13
|
const maxXWidth = 5e6;
|
|
@@ -218,7 +219,7 @@ function cacheColumnMap($xeTable) {
|
|
|
218
219
|
}
|
|
219
220
|
else {
|
|
220
221
|
if ((storage && !type) || (columnOpts.drag && (isCrossDrag || isSelfToChildDrag))) {
|
|
221
|
-
errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field
|
|
222
|
+
errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field=?`]);
|
|
222
223
|
}
|
|
223
224
|
}
|
|
224
225
|
if (!hasFixed && fixed) {
|
|
@@ -750,6 +751,25 @@ function updateStyle($xeTable) {
|
|
|
750
751
|
}
|
|
751
752
|
return $xeTable.$nextTick();
|
|
752
753
|
}
|
|
754
|
+
function checkValidate($xeTable, type) {
|
|
755
|
+
if ($xeTable.triggerValidate) {
|
|
756
|
+
return $xeTable.triggerValidate(type);
|
|
757
|
+
}
|
|
758
|
+
return $xeTable.$nextTick();
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* 当单元格发生改变时
|
|
762
|
+
* 如果存在规则,则校验
|
|
763
|
+
*/
|
|
764
|
+
function handleChangeCell($xeTable, evnt, params) {
|
|
765
|
+
checkValidate($xeTable, 'blur')
|
|
766
|
+
.catch((e) => e)
|
|
767
|
+
.then(() => {
|
|
768
|
+
$xeTable.handleEdit(params, evnt)
|
|
769
|
+
.then(() => checkValidate($xeTable, 'change'))
|
|
770
|
+
.catch((e) => e);
|
|
771
|
+
});
|
|
772
|
+
}
|
|
753
773
|
function handleRadioReserveRow($xeTable, row) {
|
|
754
774
|
const internalData = $xeTable;
|
|
755
775
|
const radioOpts = $xeTable.computeRadioOpts;
|
|
@@ -800,6 +820,8 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
800
820
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
801
821
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
802
822
|
const { checkField, reserve, checkMethod } = checkboxOpts;
|
|
823
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
824
|
+
// indeterminateField 仅支持读取
|
|
803
825
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
804
826
|
const selectRowMaps = {};
|
|
805
827
|
/**
|
|
@@ -840,7 +862,8 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
840
862
|
*/
|
|
841
863
|
XEUtils.eachTree(afterFullData, (row) => {
|
|
842
864
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
843
|
-
|
|
865
|
+
const rowid = handleGetRowId(row);
|
|
866
|
+
selectRowMaps[rowid] = row;
|
|
844
867
|
}
|
|
845
868
|
}, { children: childrenField });
|
|
846
869
|
}
|
|
@@ -851,7 +874,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
851
874
|
*/
|
|
852
875
|
if (!isForce && checkMethod) {
|
|
853
876
|
XEUtils.eachTree(afterFullData, (row) => {
|
|
854
|
-
const rowid =
|
|
877
|
+
const rowid = handleGetRowId(row);
|
|
855
878
|
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
856
879
|
selectRowMaps[rowid] = row;
|
|
857
880
|
}
|
|
@@ -868,7 +891,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
868
891
|
*/
|
|
869
892
|
if (!isForce && checkMethod) {
|
|
870
893
|
afterFullData.forEach((row) => {
|
|
871
|
-
const rowid =
|
|
894
|
+
const rowid = handleGetRowId(row);
|
|
872
895
|
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
873
896
|
selectRowMaps[rowid] = row;
|
|
874
897
|
}
|
|
@@ -876,7 +899,8 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
876
899
|
}
|
|
877
900
|
else {
|
|
878
901
|
afterFullData.forEach(row => {
|
|
879
|
-
|
|
902
|
+
const rowid = handleGetRowId(row);
|
|
903
|
+
selectRowMaps[rowid] = row;
|
|
880
904
|
});
|
|
881
905
|
}
|
|
882
906
|
}
|
|
@@ -888,7 +912,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
888
912
|
*/
|
|
889
913
|
if (!isForce && checkMethod) {
|
|
890
914
|
afterFullData.forEach((row) => {
|
|
891
|
-
const rowid =
|
|
915
|
+
const rowid = handleGetRowId(row);
|
|
892
916
|
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
893
917
|
selectRowMaps[rowid] = row;
|
|
894
918
|
}
|
|
@@ -2263,6 +2287,10 @@ const Methods = {
|
|
|
2263
2287
|
}
|
|
2264
2288
|
return [];
|
|
2265
2289
|
},
|
|
2290
|
+
getEl() {
|
|
2291
|
+
const $xeTable = this;
|
|
2292
|
+
return $xeTable.$refs.refElem;
|
|
2293
|
+
},
|
|
2266
2294
|
/**
|
|
2267
2295
|
* 获取父容器元素
|
|
2268
2296
|
*/
|
|
@@ -2274,10 +2302,26 @@ const Methods = {
|
|
|
2274
2302
|
* 获取父容器的高度
|
|
2275
2303
|
*/
|
|
2276
2304
|
getParentHeight() {
|
|
2277
|
-
const
|
|
2278
|
-
const
|
|
2279
|
-
const
|
|
2280
|
-
|
|
2305
|
+
const $xeTable = this;
|
|
2306
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
2307
|
+
const props = $xeTable;
|
|
2308
|
+
const { height } = props;
|
|
2309
|
+
const el = $xeTable.$refs.refElem;
|
|
2310
|
+
if (el) {
|
|
2311
|
+
const parentElem = el.parentNode;
|
|
2312
|
+
const parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0;
|
|
2313
|
+
let parentWrapperHeight = 0;
|
|
2314
|
+
if (parentElem) {
|
|
2315
|
+
if ($xeGrid && hasClass(parentElem, 'vxe-grid--table-wrapper')) {
|
|
2316
|
+
parentWrapperHeight = $xeGrid.getParentHeight();
|
|
2317
|
+
}
|
|
2318
|
+
else {
|
|
2319
|
+
parentWrapperHeight = parentElem.clientHeight;
|
|
2320
|
+
}
|
|
2321
|
+
}
|
|
2322
|
+
return Math.floor(parentWrapperHeight - parentPaddingSize);
|
|
2323
|
+
}
|
|
2324
|
+
return 0;
|
|
2281
2325
|
},
|
|
2282
2326
|
/**
|
|
2283
2327
|
* 获取需要排除的高度
|
|
@@ -2365,6 +2409,9 @@ const Methods = {
|
|
|
2365
2409
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2366
2410
|
let treeData = [];
|
|
2367
2411
|
let fullData = datas ? datas.slice(0) : [];
|
|
2412
|
+
if (fullData.length > supportMaxRow) {
|
|
2413
|
+
errLog('vxe.error.errMaxRow', [supportMaxRow]);
|
|
2414
|
+
}
|
|
2368
2415
|
if (treeConfig) {
|
|
2369
2416
|
// 树结构自动转换
|
|
2370
2417
|
if (treeOpts.transform) {
|
|
@@ -2459,7 +2506,7 @@ const Methods = {
|
|
|
2459
2506
|
// warnLog('vxe.error.reqProp', ['table.show-overflow'])
|
|
2460
2507
|
// }
|
|
2461
2508
|
if (this.spanMethod) {
|
|
2462
|
-
|
|
2509
|
+
errLog('vxe.error.scrollErrProp', ['table.span-method']);
|
|
2463
2510
|
}
|
|
2464
2511
|
}
|
|
2465
2512
|
handleReserveStatus($xeTable);
|
|
@@ -2612,30 +2659,13 @@ const Methods = {
|
|
|
2612
2659
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
2613
2660
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2614
2661
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
2615
|
-
const
|
|
2662
|
+
const { lazy } = treeOpts;
|
|
2616
2663
|
const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
2617
2664
|
const fullDataRowIdMaps = {};
|
|
2618
2665
|
const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
|
|
2619
|
-
const
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
const level = nodes ? nodes.length - 1 : 0;
|
|
2623
|
-
if (eqEmptyValue(rowid)) {
|
|
2624
|
-
rowid = getRowUniqueId();
|
|
2625
|
-
XEUtils.set(row, rowkey, rowid);
|
|
2626
|
-
}
|
|
2627
|
-
if (treeConfig && treeOpts.lazy) {
|
|
2628
|
-
const treeExpRest = treeExpandedMaps[rowid];
|
|
2629
|
-
if (row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
|
|
2630
|
-
row[childrenField] = null;
|
|
2631
|
-
}
|
|
2632
|
-
if (treeExpRest) {
|
|
2633
|
-
if (!row[childrenField] || !row[childrenField].length) {
|
|
2634
|
-
delete treeTempExpandedMaps[rowid];
|
|
2635
|
-
}
|
|
2636
|
-
}
|
|
2637
|
-
}
|
|
2638
|
-
let rowRest = fullAllDataRowIdData[rowid];
|
|
2666
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
2667
|
+
const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
|
|
2668
|
+
let rowRest = fullAllDataRowIdMaps[rowid];
|
|
2639
2669
|
if (!rowRest) {
|
|
2640
2670
|
rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
|
|
2641
2671
|
}
|
|
@@ -2645,35 +2675,49 @@ const Methods = {
|
|
|
2645
2675
|
rowRest.items = items;
|
|
2646
2676
|
rowRest.parent = parentRow;
|
|
2647
2677
|
rowRest.level = level;
|
|
2648
|
-
rowRest.index =
|
|
2678
|
+
rowRest.index = currIndex;
|
|
2679
|
+
rowRest.treeIndex = index;
|
|
2649
2680
|
fullDataRowIdMaps[rowid] = rowRest;
|
|
2650
2681
|
fullAllDataRowIdMaps[rowid] = rowRest;
|
|
2651
2682
|
};
|
|
2652
2683
|
if (treeConfig) {
|
|
2653
|
-
XEUtils.eachTree(tableFullTreeData,
|
|
2684
|
+
XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
2685
|
+
const rowid = handleUpdateRowId(row);
|
|
2686
|
+
if (treeConfig && lazy) {
|
|
2687
|
+
const treeExpRest = treeTempExpandedMaps[rowid];
|
|
2688
|
+
if (row[hasChildField] && row[childrenField] === undefined) {
|
|
2689
|
+
row[childrenField] = null;
|
|
2690
|
+
}
|
|
2691
|
+
if (treeExpRest) {
|
|
2692
|
+
if (!row[childrenField] || !row[childrenField].length) {
|
|
2693
|
+
delete treeTempExpandedMaps[rowid];
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2696
|
+
}
|
|
2697
|
+
handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, toTreePathSeq(path));
|
|
2698
|
+
}, { children: childrenField });
|
|
2654
2699
|
}
|
|
2655
2700
|
else {
|
|
2656
|
-
tableFullData.forEach(
|
|
2701
|
+
tableFullData.forEach((row, index, items) => {
|
|
2702
|
+
handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1);
|
|
2703
|
+
});
|
|
2657
2704
|
}
|
|
2658
2705
|
internalData.fullDataRowIdData = fullDataRowIdMaps;
|
|
2659
2706
|
internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
|
|
2660
2707
|
reactData.treeExpandedMaps = treeTempExpandedMaps;
|
|
2661
2708
|
},
|
|
2662
2709
|
cacheSourceMap(fullData) {
|
|
2663
|
-
|
|
2710
|
+
const $xeTable = this;
|
|
2711
|
+
const props = $xeTable;
|
|
2712
|
+
const internalData = $xeTable;
|
|
2713
|
+
const { treeConfig } = props;
|
|
2714
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
2664
2715
|
const sourceData = XEUtils.clone(fullData, true);
|
|
2665
|
-
const
|
|
2666
|
-
|
|
2716
|
+
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
2717
|
+
const sourceRowIdData = {};
|
|
2667
2718
|
const handleSourceRow = (row) => {
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
rowid = getRowUniqueId();
|
|
2671
|
-
XEUtils.set(row, rowkey, rowid);
|
|
2672
|
-
}
|
|
2673
|
-
sourceDataRowIdData[rowid] = {
|
|
2674
|
-
row,
|
|
2675
|
-
rowid
|
|
2676
|
-
};
|
|
2719
|
+
const rowid = handleUpdateRowId(row);
|
|
2720
|
+
sourceRowIdData[rowid] = row;
|
|
2677
2721
|
};
|
|
2678
2722
|
// 源数据缓存
|
|
2679
2723
|
if (treeConfig) {
|
|
@@ -2683,7 +2727,8 @@ const Methods = {
|
|
|
2683
2727
|
else {
|
|
2684
2728
|
sourceData.forEach(handleSourceRow);
|
|
2685
2729
|
}
|
|
2686
|
-
|
|
2730
|
+
internalData.sourceDataRowIdData = sourceRowIdData;
|
|
2731
|
+
internalData.tableSourceData = sourceData;
|
|
2687
2732
|
},
|
|
2688
2733
|
getParams() {
|
|
2689
2734
|
return this.params;
|
|
@@ -2982,12 +3027,14 @@ const Methods = {
|
|
|
2982
3027
|
const reactData = $xeTable;
|
|
2983
3028
|
const internalData = $xeTable;
|
|
2984
3029
|
const { keepSource, treeConfig } = props;
|
|
2985
|
-
const {
|
|
3030
|
+
const { editStore } = reactData;
|
|
3031
|
+
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
|
|
3032
|
+
const removeTempMaps = Object.assign({}, editStore.removeMaps);
|
|
2986
3033
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
2987
3034
|
const { transform } = treeOpts;
|
|
2988
3035
|
if (!keepSource) {
|
|
2989
3036
|
if (process.env.NODE_ENV === 'development') {
|
|
2990
|
-
|
|
3037
|
+
errLog('vxe.error.reqProp', ['keep-source']);
|
|
2991
3038
|
}
|
|
2992
3039
|
return $xeTable.$nextTick();
|
|
2993
3040
|
}
|
|
@@ -3002,23 +3049,24 @@ const Methods = {
|
|
|
3002
3049
|
}
|
|
3003
3050
|
let reDelFlag = false;
|
|
3004
3051
|
if (targetRows.length) {
|
|
3005
|
-
targetRows.forEach((
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3052
|
+
targetRows.forEach((item) => {
|
|
3053
|
+
const rowid = getRowid($xeTable, item);
|
|
3054
|
+
const rowRest = fullAllDataRowIdData[rowid];
|
|
3055
|
+
if (rowRest) {
|
|
3056
|
+
const row = rowRest.row;
|
|
3057
|
+
if (!$xeTable.isInsertByRow(row)) {
|
|
3058
|
+
const oRow = sourceDataRowIdData[rowid];
|
|
3059
|
+
if (oRow && row) {
|
|
3060
|
+
if (field) {
|
|
3061
|
+
XEUtils.set(row, field, XEUtils.clone(XEUtils.get(oRow, field), true));
|
|
3062
|
+
}
|
|
3063
|
+
else {
|
|
3064
|
+
XEUtils.destructuring(row, XEUtils.clone(oRow, true));
|
|
3065
|
+
}
|
|
3066
|
+
if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
|
|
3067
|
+
delete removeTempMaps[rowid];
|
|
3068
|
+
tableFullData.unshift(row);
|
|
3069
|
+
afterFullData.unshift(row);
|
|
3022
3070
|
reDelFlag = true;
|
|
3023
3071
|
}
|
|
3024
3072
|
}
|
|
@@ -3028,6 +3076,7 @@ const Methods = {
|
|
|
3028
3076
|
}
|
|
3029
3077
|
if (rows) {
|
|
3030
3078
|
if (reDelFlag) {
|
|
3079
|
+
editStore.removeMaps = removeTempMaps;
|
|
3031
3080
|
$xeTable.updateFooter();
|
|
3032
3081
|
$xeTable.cacheRowMap(false);
|
|
3033
3082
|
$xeTable.handleTableData(treeConfig && transform);
|
|
@@ -3190,20 +3239,25 @@ const Methods = {
|
|
|
3190
3239
|
},
|
|
3191
3240
|
/**
|
|
3192
3241
|
* 检查行或列数据是否发生改变
|
|
3193
|
-
* @param {Row}
|
|
3242
|
+
* @param {Row} rowOrId 行对象
|
|
3194
3243
|
* @param {String} field 字段名
|
|
3195
3244
|
*/
|
|
3196
|
-
isUpdateByRow(
|
|
3197
|
-
const
|
|
3245
|
+
isUpdateByRow(rowOrId, field) {
|
|
3246
|
+
const $xeTable = this;
|
|
3247
|
+
const props = $xeTable;
|
|
3248
|
+
const internalData = $xeTable;
|
|
3249
|
+
const { keepSource } = props;
|
|
3250
|
+
const { tableFullColumn, fullDataRowIdData, sourceDataRowIdData } = internalData;
|
|
3198
3251
|
if (keepSource) {
|
|
3199
|
-
const rowid = getRowid(
|
|
3252
|
+
const rowid = XEUtils.isString(rowOrId) || XEUtils.isNumber(rowOrId) ? rowOrId : getRowid($xeTable, rowOrId);
|
|
3253
|
+
const rowRest = fullDataRowIdData[rowid];
|
|
3200
3254
|
// 新增的数据不需要检测
|
|
3201
|
-
if (!
|
|
3255
|
+
if (!rowRest) {
|
|
3202
3256
|
return false;
|
|
3203
3257
|
}
|
|
3204
|
-
const
|
|
3205
|
-
|
|
3206
|
-
|
|
3258
|
+
const row = rowRest.row;
|
|
3259
|
+
const oRow = sourceDataRowIdData[rowid];
|
|
3260
|
+
if (oRow) {
|
|
3207
3261
|
if (arguments.length > 1) {
|
|
3208
3262
|
return !eqCellValue(oRow, row, field);
|
|
3209
3263
|
}
|
|
@@ -3265,6 +3319,99 @@ const Methods = {
|
|
|
3265
3319
|
tableColumn: this.tableColumn.slice(0)
|
|
3266
3320
|
};
|
|
3267
3321
|
},
|
|
3322
|
+
/**
|
|
3323
|
+
* 移动列到指定列的位置
|
|
3324
|
+
* @param fieldOrColumn
|
|
3325
|
+
* @param targetFieldOrColumn
|
|
3326
|
+
* @param options
|
|
3327
|
+
*/
|
|
3328
|
+
moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
|
|
3329
|
+
const $xeTable = this;
|
|
3330
|
+
const internalData = $xeTable;
|
|
3331
|
+
const { fullColumnIdData, visibleColumn } = internalData;
|
|
3332
|
+
const { dragToChild, dragPos, isCrossDrag } = Object.assign({}, options);
|
|
3333
|
+
const dragCol = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
3334
|
+
let prevDragCol = null;
|
|
3335
|
+
const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
|
|
3336
|
+
let defPos = 'left';
|
|
3337
|
+
if (XEUtils.isNumber(targetFieldOrColumn)) {
|
|
3338
|
+
if (colRest && targetFieldOrColumn) {
|
|
3339
|
+
let currList = colRest.items;
|
|
3340
|
+
let offsetIndex = colRest._index + targetFieldOrColumn;
|
|
3341
|
+
if (isCrossDrag) {
|
|
3342
|
+
currList = visibleColumn;
|
|
3343
|
+
offsetIndex = colRest._index + targetFieldOrColumn;
|
|
3344
|
+
}
|
|
3345
|
+
if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
|
|
3346
|
+
prevDragCol = currList[offsetIndex];
|
|
3347
|
+
}
|
|
3348
|
+
if (targetFieldOrColumn > 0) {
|
|
3349
|
+
defPos = 'right';
|
|
3350
|
+
}
|
|
3351
|
+
}
|
|
3352
|
+
}
|
|
3353
|
+
else {
|
|
3354
|
+
prevDragCol = handleFieldOrColumn($xeTable, targetFieldOrColumn);
|
|
3355
|
+
const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
|
|
3356
|
+
if (colRest && targetColRest) {
|
|
3357
|
+
if (targetColRest._index > colRest._index) {
|
|
3358
|
+
defPos = 'right';
|
|
3359
|
+
}
|
|
3360
|
+
}
|
|
3361
|
+
}
|
|
3362
|
+
return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
|
|
3363
|
+
},
|
|
3364
|
+
/**
|
|
3365
|
+
* 移动行到指定行的位置
|
|
3366
|
+
* @param rowidOrRow
|
|
3367
|
+
* @param targetRowidOrRow
|
|
3368
|
+
* @param options
|
|
3369
|
+
*/
|
|
3370
|
+
moveRowTo(rowidOrRow, targetRowidOrRow, options) {
|
|
3371
|
+
const $xeTable = this;
|
|
3372
|
+
const props = $xeTable;
|
|
3373
|
+
const internalData = $xeTable;
|
|
3374
|
+
const { treeConfig } = props;
|
|
3375
|
+
const { fullAllDataRowIdData, afterFullData } = internalData;
|
|
3376
|
+
const { dragToChild, dragPos, isCrossDrag } = Object.assign({}, options);
|
|
3377
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
3378
|
+
const dragRow = handleRowidOrRow($xeTable, rowidOrRow);
|
|
3379
|
+
let prevDragRow = null;
|
|
3380
|
+
let defPos = 'top';
|
|
3381
|
+
const rowRest = dragRow ? fullAllDataRowIdData[getRowid($xeTable, dragRow)] : null;
|
|
3382
|
+
if (XEUtils.isNumber(targetRowidOrRow)) {
|
|
3383
|
+
if (rowRest && targetRowidOrRow) {
|
|
3384
|
+
let currList = afterFullData;
|
|
3385
|
+
let offsetIndex = rowRest._index + targetRowidOrRow;
|
|
3386
|
+
if (treeConfig) {
|
|
3387
|
+
currList = rowRest.items;
|
|
3388
|
+
if (treeOpts.transform) {
|
|
3389
|
+
offsetIndex = rowRest.treeIndex + targetRowidOrRow;
|
|
3390
|
+
if (isCrossDrag) {
|
|
3391
|
+
currList = afterFullData;
|
|
3392
|
+
offsetIndex = rowRest._index + targetRowidOrRow;
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
}
|
|
3396
|
+
if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
|
|
3397
|
+
prevDragRow = currList[offsetIndex];
|
|
3398
|
+
}
|
|
3399
|
+
if (targetRowidOrRow > 0) {
|
|
3400
|
+
defPos = 'bottom';
|
|
3401
|
+
}
|
|
3402
|
+
}
|
|
3403
|
+
}
|
|
3404
|
+
else {
|
|
3405
|
+
prevDragRow = handleRowidOrRow($xeTable, targetRowidOrRow);
|
|
3406
|
+
const targetRowRest = prevDragRow ? fullAllDataRowIdData[getRowid($xeTable, prevDragRow)] : null;
|
|
3407
|
+
if (rowRest && targetRowRest) {
|
|
3408
|
+
if (targetRowRest._index > rowRest._index) {
|
|
3409
|
+
defPos = 'bottom';
|
|
3410
|
+
}
|
|
3411
|
+
}
|
|
3412
|
+
}
|
|
3413
|
+
return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
|
|
3414
|
+
},
|
|
3268
3415
|
/**
|
|
3269
3416
|
* 获取表格的全量列
|
|
3270
3417
|
*/
|
|
@@ -3285,22 +3432,30 @@ const Methods = {
|
|
|
3285
3432
|
* 用于多选行,获取已选中的数据
|
|
3286
3433
|
*/
|
|
3287
3434
|
getCheckboxRecords(isFull) {
|
|
3288
|
-
const
|
|
3435
|
+
const $xeTable = this;
|
|
3436
|
+
const props = $xeTable;
|
|
3437
|
+
const reactData = $xeTable;
|
|
3438
|
+
const internalData = $xeTable;
|
|
3439
|
+
const { treeConfig } = props;
|
|
3440
|
+
const { selectCheckboxMaps } = reactData;
|
|
3441
|
+
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps } = internalData;
|
|
3442
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
3443
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
3289
3444
|
const { transform, mapChildrenField } = treeOpts;
|
|
3290
3445
|
const { checkField } = checkboxOpts;
|
|
3291
3446
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
3292
|
-
const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
|
|
3293
3447
|
let rowList = [];
|
|
3294
3448
|
if (checkField) {
|
|
3295
3449
|
if (treeConfig) {
|
|
3450
|
+
const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
|
|
3296
3451
|
rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, checkField), { children: transform ? mapChildrenField : childrenField });
|
|
3297
3452
|
}
|
|
3298
3453
|
else {
|
|
3454
|
+
const currTableData = isFull ? tableFullData : afterFullData;
|
|
3299
3455
|
rowList = currTableData.filter((row) => XEUtils.get(row, checkField));
|
|
3300
3456
|
}
|
|
3301
3457
|
}
|
|
3302
3458
|
else {
|
|
3303
|
-
const { selectCheckboxMaps, fullDataRowIdData } = this;
|
|
3304
3459
|
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
3305
3460
|
if (isFull) {
|
|
3306
3461
|
if (fullDataRowIdData[rowid]) {
|
|
@@ -3885,8 +4040,19 @@ const Methods = {
|
|
|
3885
4040
|
}
|
|
3886
4041
|
},
|
|
3887
4042
|
getCustomStoreData() {
|
|
3888
|
-
const
|
|
3889
|
-
const
|
|
4043
|
+
const $xeTable = this;
|
|
4044
|
+
const props = $xeTable;
|
|
4045
|
+
const internalData = $xeTable;
|
|
4046
|
+
const { id } = props;
|
|
4047
|
+
const customOpts = $xeTable.computeCustomOpts;
|
|
4048
|
+
const { collectColumn } = internalData;
|
|
4049
|
+
const { storage, checkMethod } = customOpts;
|
|
4050
|
+
const isAllCustom = storage === true;
|
|
4051
|
+
const storageOpts = isAllCustom ? {} : Object.assign({}, storage || {});
|
|
4052
|
+
const isCustomResizable = isAllCustom || storageOpts.resizable;
|
|
4053
|
+
const isCustomVisible = isAllCustom || storageOpts.visible;
|
|
4054
|
+
const isCustomFixed = isAllCustom || storageOpts.fixed;
|
|
4055
|
+
const isCustomSort = isAllCustom || storageOpts.sort;
|
|
3890
4056
|
const resizableData = {};
|
|
3891
4057
|
const sortData = {};
|
|
3892
4058
|
const visibleData = {};
|
|
@@ -3903,47 +4069,37 @@ const Methods = {
|
|
|
3903
4069
|
}
|
|
3904
4070
|
let hasResizable = 0;
|
|
3905
4071
|
let hasSort = 0;
|
|
3906
|
-
let
|
|
4072
|
+
let hasFixed = 0;
|
|
3907
4073
|
let hasVisible = 0;
|
|
3908
4074
|
XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
|
|
4075
|
+
const colKey = column.getKey();
|
|
4076
|
+
if (!colKey) {
|
|
4077
|
+
errLog('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`]);
|
|
4078
|
+
return;
|
|
4079
|
+
}
|
|
3909
4080
|
// 只支持一级
|
|
3910
4081
|
if (!parentColumn) {
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
hasSort = 1;
|
|
3915
|
-
sortData[colKey] = column.renderSortNumber;
|
|
3916
|
-
}
|
|
3917
|
-
});
|
|
3918
|
-
if (column.fixed !== column.defaultFixed) {
|
|
3919
|
-
const colKey = column.getKey();
|
|
3920
|
-
if (colKey) {
|
|
3921
|
-
hasFixedt = 1;
|
|
3922
|
-
fixedData[colKey] = column.fixed;
|
|
3923
|
-
}
|
|
4082
|
+
if (isCustomSort) {
|
|
4083
|
+
hasSort = 1;
|
|
4084
|
+
sortData[colKey] = column.renderSortNumber;
|
|
3924
4085
|
}
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
if (colKey) {
|
|
3929
|
-
hasResizable = 1;
|
|
3930
|
-
resizableData[colKey] = column.renderWidth;
|
|
4086
|
+
if (isCustomFixed && column.fixed !== column.defaultFixed) {
|
|
4087
|
+
hasFixed = 1;
|
|
4088
|
+
fixedData[colKey] = column.fixed;
|
|
3931
4089
|
}
|
|
3932
4090
|
}
|
|
3933
|
-
if (
|
|
4091
|
+
if (isCustomResizable && column.resizeWidth) {
|
|
4092
|
+
hasResizable = 1;
|
|
4093
|
+
resizableData[colKey] = column.renderWidth;
|
|
4094
|
+
}
|
|
4095
|
+
if (isCustomVisible && (!checkMethod || checkMethod({ column }))) {
|
|
3934
4096
|
if (!column.visible && column.defaultVisible) {
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
hasVisible = 1;
|
|
3938
|
-
visibleData[colKey] = false;
|
|
3939
|
-
}
|
|
4097
|
+
hasVisible = 1;
|
|
4098
|
+
visibleData[colKey] = false;
|
|
3940
4099
|
}
|
|
3941
4100
|
else if (column.visible && !column.defaultVisible) {
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
hasVisible = 1;
|
|
3945
|
-
visibleData[colKey] = true;
|
|
3946
|
-
}
|
|
4101
|
+
hasVisible = 1;
|
|
4102
|
+
visibleData[colKey] = true;
|
|
3947
4103
|
}
|
|
3948
4104
|
}
|
|
3949
4105
|
});
|
|
@@ -3953,7 +4109,7 @@ const Methods = {
|
|
|
3953
4109
|
if (hasSort) {
|
|
3954
4110
|
storeData.sortData = sortData;
|
|
3955
4111
|
}
|
|
3956
|
-
if (
|
|
4112
|
+
if (hasFixed) {
|
|
3957
4113
|
storeData.fixedData = fixedData;
|
|
3958
4114
|
}
|
|
3959
4115
|
if (hasVisible) {
|
|
@@ -4626,8 +4782,22 @@ const Methods = {
|
|
|
4626
4782
|
}
|
|
4627
4783
|
}
|
|
4628
4784
|
// 兼容老版本
|
|
4629
|
-
let rest;
|
|
4630
|
-
|
|
4785
|
+
let rest = null;
|
|
4786
|
+
let isStop = false;
|
|
4787
|
+
for (let i = 0; i < evntList.length; i++) {
|
|
4788
|
+
const func = evntList[i];
|
|
4789
|
+
const fnRest = func(Object.assign({ $grid: this.$xegrid, $table: this, $event: evnt }, args));
|
|
4790
|
+
if (fnRest === false) {
|
|
4791
|
+
isStop = true;
|
|
4792
|
+
break;
|
|
4793
|
+
}
|
|
4794
|
+
else if (fnRest && fnRest.status === false) {
|
|
4795
|
+
rest = fnRest.result;
|
|
4796
|
+
isStop = true;
|
|
4797
|
+
break;
|
|
4798
|
+
}
|
|
4799
|
+
}
|
|
4800
|
+
if (!isStop) {
|
|
4631
4801
|
if (next) {
|
|
4632
4802
|
rest = next();
|
|
4633
4803
|
}
|
|
@@ -4821,7 +4991,8 @@ const Methods = {
|
|
|
4821
4991
|
if (this.isActivated) {
|
|
4822
4992
|
this.preventEvent(evnt, 'event.keydown', null, () => {
|
|
4823
4993
|
const { afterFullData } = internalData;
|
|
4824
|
-
const { filterStore, isCtxMenu, ctxMenuStore, editStore, editOpts, editConfig, mouseConfig, mouseOpts, keyboardConfig, keyboardOpts, treeConfig, treeOpts, highlightCurrentRow, currentRow, bodyCtxMenu, rowOpts } = this;
|
|
4994
|
+
const { filterStore, isCtxMenu, ctxMenuStore, editStore, editOpts, editConfig, mouseConfig, mouseOpts, keyboardConfig, keyboardOpts, treeConfig, treeOpts, highlightCurrentRow, highlightCurrentColumn, currentRow, bodyCtxMenu, rowOpts } = this;
|
|
4995
|
+
const columnOpts = $xeTable.computeColumnOpts;
|
|
4825
4996
|
const { selected, actived } = editStore;
|
|
4826
4997
|
const { keyCode } = evnt;
|
|
4827
4998
|
const hasBackspaceKey = keyCode === 8;
|
|
@@ -4975,11 +5146,15 @@ const Methods = {
|
|
|
4975
5146
|
if (!isEditStatus) {
|
|
4976
5147
|
// 如果按下了方向键
|
|
4977
5148
|
if (selected.row && selected.column) {
|
|
4978
|
-
|
|
5149
|
+
$xeTable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
|
|
5150
|
+
}
|
|
5151
|
+
// 当前行按键上下移动
|
|
5152
|
+
if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
5153
|
+
$xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
|
|
4979
5154
|
}
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
5155
|
+
// 当前行按键左右移动
|
|
5156
|
+
if ((isLeftArrow || isRightArrow) && (columnOpts.isCurrent || highlightCurrentColumn)) {
|
|
5157
|
+
$xeTable.moveCurrentColumn(isLeftArrow, isRightArrow, evnt);
|
|
4983
5158
|
}
|
|
4984
5159
|
}
|
|
4985
5160
|
}
|
|
@@ -5429,6 +5604,8 @@ const Methods = {
|
|
|
5429
5604
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
5430
5605
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
5431
5606
|
const { checkField, checkStrictly, checkMethod } = checkboxOpts;
|
|
5607
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5608
|
+
// indeterminateField 仅支持读取
|
|
5432
5609
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
5433
5610
|
if (checkField) {
|
|
5434
5611
|
// 树结构
|
|
@@ -5462,7 +5639,7 @@ const Methods = {
|
|
|
5462
5639
|
if (treeConfig && !checkStrictly) {
|
|
5463
5640
|
// 更新子节点状态
|
|
5464
5641
|
XEUtils.eachTree(rows, (row) => {
|
|
5465
|
-
const rowid =
|
|
5642
|
+
const rowid = handleGetRowId(row);
|
|
5466
5643
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5467
5644
|
if (checked) {
|
|
5468
5645
|
selectRowMaps[rowid] = row;
|
|
@@ -5480,7 +5657,7 @@ const Methods = {
|
|
|
5480
5657
|
}
|
|
5481
5658
|
// 列表
|
|
5482
5659
|
rows.forEach(row => {
|
|
5483
|
-
const rowid =
|
|
5660
|
+
const rowid = handleGetRowId(row);
|
|
5484
5661
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5485
5662
|
if (checked) {
|
|
5486
5663
|
if (!selectRowMaps[rowid]) {
|
|
@@ -5506,7 +5683,10 @@ const Methods = {
|
|
|
5506
5683
|
$xeTable.handleBatchSelectRows([row], checked, isForce);
|
|
5507
5684
|
},
|
|
5508
5685
|
handleToggleCheckRowEvent(evnt, params) {
|
|
5509
|
-
const
|
|
5686
|
+
const $xeTable = this;
|
|
5687
|
+
const reactData = $xeTable;
|
|
5688
|
+
const { selectCheckboxMaps } = reactData;
|
|
5689
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
5510
5690
|
const { checkField, trigger } = checkboxOpts;
|
|
5511
5691
|
const { row } = params;
|
|
5512
5692
|
if (trigger === 'manual') {
|
|
@@ -5520,44 +5700,46 @@ const Methods = {
|
|
|
5520
5700
|
checked = !selectCheckboxMaps[getRowid(this, row)];
|
|
5521
5701
|
}
|
|
5522
5702
|
if (evnt) {
|
|
5523
|
-
|
|
5703
|
+
$xeTable.triggerCheckRowEvent(evnt, params, checked);
|
|
5524
5704
|
}
|
|
5525
5705
|
else {
|
|
5526
|
-
|
|
5527
|
-
|
|
5706
|
+
$xeTable.handleBatchSelectRows(params, checked);
|
|
5707
|
+
$xeTable.checkSelectionStatus();
|
|
5528
5708
|
}
|
|
5529
5709
|
},
|
|
5530
5710
|
triggerCheckRowEvent(evnt, params, checked) {
|
|
5531
5711
|
const $xeTable = this;
|
|
5532
|
-
const
|
|
5533
|
-
const { checkMethod, trigger } = checkboxOpts;
|
|
5712
|
+
const internalData = $xeTable;
|
|
5534
5713
|
const { row } = params;
|
|
5714
|
+
const { afterFullData } = internalData;
|
|
5715
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
5716
|
+
const { checkMethod, trigger } = checkboxOpts;
|
|
5535
5717
|
if (trigger === 'manual') {
|
|
5536
5718
|
return;
|
|
5537
5719
|
}
|
|
5538
5720
|
evnt.stopPropagation();
|
|
5539
5721
|
if (checkboxOpts.isShiftKey && evnt.shiftKey && !this.treeConfig) {
|
|
5540
|
-
const checkboxRecords =
|
|
5722
|
+
const checkboxRecords = $xeTable.getCheckboxRecords();
|
|
5541
5723
|
if (checkboxRecords.length) {
|
|
5542
5724
|
const firstRow = checkboxRecords[0];
|
|
5543
|
-
const _rowIndex =
|
|
5544
|
-
const _firstRowIndex =
|
|
5725
|
+
const _rowIndex = $xeTable.getVTRowIndex(row);
|
|
5726
|
+
const _firstRowIndex = $xeTable.getVTRowIndex(firstRow);
|
|
5545
5727
|
if (_rowIndex !== _firstRowIndex) {
|
|
5546
|
-
|
|
5728
|
+
$xeTable.setAllCheckboxRow(false);
|
|
5547
5729
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
|
|
5548
5730
|
handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
|
|
5549
|
-
|
|
5731
|
+
$xeTable.dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
|
|
5550
5732
|
return;
|
|
5551
5733
|
}
|
|
5552
5734
|
}
|
|
5553
5735
|
}
|
|
5554
5736
|
if (!checkMethod || checkMethod({ row })) {
|
|
5555
|
-
|
|
5556
|
-
|
|
5557
|
-
|
|
5558
|
-
records:
|
|
5559
|
-
reserves:
|
|
5560
|
-
indeterminates:
|
|
5737
|
+
$xeTable.handleBatchSelectRows(params, checked);
|
|
5738
|
+
$xeTable.checkSelectionStatus();
|
|
5739
|
+
$xeTable.dispatchEvent('checkbox-change', Object.assign({
|
|
5740
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
5741
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
5742
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
5561
5743
|
checked
|
|
5562
5744
|
}, params), evnt);
|
|
5563
5745
|
}
|
|
@@ -5602,10 +5784,11 @@ const Methods = {
|
|
|
5602
5784
|
}
|
|
5603
5785
|
// 树结构
|
|
5604
5786
|
if (treeConfig) {
|
|
5787
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5605
5788
|
const childRowMaps = {};
|
|
5606
5789
|
const childRowList = [];
|
|
5607
5790
|
XEUtils.eachTree(afterTreeFullData, (row) => {
|
|
5608
|
-
const rowid =
|
|
5791
|
+
const rowid = handleGetRowId(row);
|
|
5609
5792
|
const childList = row[transform ? mapChildrenField : childrenField];
|
|
5610
5793
|
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
5611
5794
|
childRowMaps[rowid] = 1;
|
|
@@ -5621,7 +5804,7 @@ const Methods = {
|
|
|
5621
5804
|
let vLen = 0; // 有效行
|
|
5622
5805
|
childList.forEach(checkMethod
|
|
5623
5806
|
? (item) => {
|
|
5624
|
-
const childRowid =
|
|
5807
|
+
const childRowid = handleGetRowId(item);
|
|
5625
5808
|
const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
|
|
5626
5809
|
if (checkMethod({ row: item })) {
|
|
5627
5810
|
if (isSelect) {
|
|
@@ -5642,7 +5825,7 @@ const Methods = {
|
|
|
5642
5825
|
}
|
|
5643
5826
|
}
|
|
5644
5827
|
: item => {
|
|
5645
|
-
const childRowid =
|
|
5828
|
+
const childRowid = handleGetRowId(item);
|
|
5646
5829
|
const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
|
|
5647
5830
|
if (isSelect) {
|
|
5648
5831
|
sLen++;
|
|
@@ -5695,13 +5878,14 @@ const Methods = {
|
|
|
5695
5878
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
5696
5879
|
const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
|
|
5697
5880
|
const { afterFullData, afterTreeFullData, checkboxReserveRowMap } = internalData;
|
|
5881
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
5698
5882
|
let sLen = 0; // 已选
|
|
5699
5883
|
let hLen = 0; // 半选
|
|
5700
5884
|
let vLen = 0; // 有效行
|
|
5701
5885
|
const rootList = (treeConfig ? afterTreeFullData : afterFullData);
|
|
5702
5886
|
rootList.forEach(checkMethod
|
|
5703
5887
|
? row => {
|
|
5704
|
-
const childRowid =
|
|
5888
|
+
const childRowid = handleGetRowId(row);
|
|
5705
5889
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
5706
5890
|
if (checkMethod({ row })) {
|
|
5707
5891
|
if (selected) {
|
|
@@ -5722,7 +5906,7 @@ const Methods = {
|
|
|
5722
5906
|
}
|
|
5723
5907
|
}
|
|
5724
5908
|
: row => {
|
|
5725
|
-
const childRowid =
|
|
5909
|
+
const childRowid = handleGetRowId(row);
|
|
5726
5910
|
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
5727
5911
|
if (selected) {
|
|
5728
5912
|
sLen++;
|
|
@@ -5837,9 +6021,9 @@ const Methods = {
|
|
|
5837
6021
|
handleCheckedAllCheckboxRow($xeTable, value);
|
|
5838
6022
|
if (evnt) {
|
|
5839
6023
|
$xeTable.dispatchEvent('checkbox-all', {
|
|
5840
|
-
records: $xeTable.getCheckboxRecords(),
|
|
5841
|
-
reserves: $xeTable.getCheckboxReserveRecords(),
|
|
5842
|
-
indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
|
|
6024
|
+
records: () => $xeTable.getCheckboxRecords(),
|
|
6025
|
+
reserves: () => $xeTable.getCheckboxReserveRecords(),
|
|
6026
|
+
indeterminates: () => $xeTable.getCheckboxIndeterminateRecords(),
|
|
5843
6027
|
checked: value
|
|
5844
6028
|
}, evnt);
|
|
5845
6029
|
}
|
|
@@ -5874,6 +6058,7 @@ const Methods = {
|
|
|
5874
6058
|
const { tableFullData, treeConfig, treeOpts, checkboxOpts } = this;
|
|
5875
6059
|
const { checkField, reserve } = checkboxOpts;
|
|
5876
6060
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
6061
|
+
// indeterminateField 仅支持读取
|
|
5877
6062
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
5878
6063
|
if (checkField) {
|
|
5879
6064
|
const handleClearChecked = (item) => {
|
|
@@ -6092,10 +6277,12 @@ const Methods = {
|
|
|
6092
6277
|
},
|
|
6093
6278
|
triggerHeaderCellClickEvent(evnt, params) {
|
|
6094
6279
|
const $xeTable = this;
|
|
6280
|
+
const props = $xeTable;
|
|
6095
6281
|
const internalData = $xeTable;
|
|
6096
6282
|
const { _lastResizeTime } = internalData;
|
|
6097
6283
|
const sortOpts = $xeTable.computeSortOpts;
|
|
6098
6284
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
6285
|
+
const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
|
|
6099
6286
|
const { column } = params;
|
|
6100
6287
|
const cell = evnt.currentTarget;
|
|
6101
6288
|
const triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
|
|
@@ -6105,7 +6292,7 @@ const Methods = {
|
|
|
6105
6292
|
$xeTable.triggerSortEvent(evnt, column, getNextSortOrder($xeTable, column));
|
|
6106
6293
|
}
|
|
6107
6294
|
$xeTable.dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt);
|
|
6108
|
-
if (columnOpts.isCurrent ||
|
|
6295
|
+
if ((columnOpts.isCurrent || props.highlightCurrentColumn) && (!currentColumnOpts.trigger || ['header', 'default'].includes(currentColumnOpts.trigger))) {
|
|
6109
6296
|
$xeTable.triggerCurrentColumnEvent(evnt, params);
|
|
6110
6297
|
}
|
|
6111
6298
|
return $xeTable.$nextTick();
|
|
@@ -6121,13 +6308,23 @@ const Methods = {
|
|
|
6121
6308
|
* @param {ColumnInfo} fieldOrColumn 列配置
|
|
6122
6309
|
*/
|
|
6123
6310
|
setCurrentColumn(fieldOrColumn) {
|
|
6124
|
-
const
|
|
6311
|
+
const $xeTable = this;
|
|
6312
|
+
const props = $xeTable;
|
|
6313
|
+
const reactData = $xeTable;
|
|
6314
|
+
const { mouseConfig } = props;
|
|
6315
|
+
const mouseOpts = $xeTable.computeMouseOpts;
|
|
6316
|
+
const isMouseSelected = mouseConfig && mouseOpts.selected;
|
|
6317
|
+
const column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
6125
6318
|
if (column) {
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
this.currentColumn = column;
|
|
6319
|
+
$xeTable.clearCurrentColumn();
|
|
6320
|
+
reactData.currentColumn = column;
|
|
6129
6321
|
}
|
|
6130
|
-
return
|
|
6322
|
+
return $xeTable.$nextTick().then(() => {
|
|
6323
|
+
// 更新状选中态
|
|
6324
|
+
if (isMouseSelected) {
|
|
6325
|
+
$xeTable.addCellSelectedClass();
|
|
6326
|
+
}
|
|
6327
|
+
});
|
|
6131
6328
|
},
|
|
6132
6329
|
/**
|
|
6133
6330
|
* 用于当前列,手动清空当前高亮的状态
|
|
@@ -6136,25 +6333,6 @@ const Methods = {
|
|
|
6136
6333
|
this.currentColumn = null;
|
|
6137
6334
|
return this.$nextTick();
|
|
6138
6335
|
},
|
|
6139
|
-
checkValidate(type) {
|
|
6140
|
-
if (this.triggerValidate) {
|
|
6141
|
-
return this.triggerValidate(type);
|
|
6142
|
-
}
|
|
6143
|
-
return this.$nextTick();
|
|
6144
|
-
},
|
|
6145
|
-
/**
|
|
6146
|
-
* 当单元格发生改变时
|
|
6147
|
-
* 如果存在规则,则校验
|
|
6148
|
-
*/
|
|
6149
|
-
handleChangeCell(evnt, params) {
|
|
6150
|
-
this.checkValidate('blur')
|
|
6151
|
-
.catch((e) => e)
|
|
6152
|
-
.then(() => {
|
|
6153
|
-
this.handleEdit(params, evnt)
|
|
6154
|
-
.then(() => this.checkValidate('change'))
|
|
6155
|
-
.catch((e) => e);
|
|
6156
|
-
});
|
|
6157
|
-
},
|
|
6158
6336
|
/**
|
|
6159
6337
|
* 列点击事件
|
|
6160
6338
|
* 如果是单击模式,则激活为编辑状态
|
|
@@ -6164,7 +6342,7 @@ const Methods = {
|
|
|
6164
6342
|
const $xeTable = this;
|
|
6165
6343
|
const props = $xeTable;
|
|
6166
6344
|
const reactData = $xeTable;
|
|
6167
|
-
const { highlightCurrentRow, editConfig } = props;
|
|
6345
|
+
const { highlightCurrentRow, highlightCurrentColumn, editConfig } = props;
|
|
6168
6346
|
const { editStore, isDragResize } = reactData;
|
|
6169
6347
|
if (isDragResize) {
|
|
6170
6348
|
return;
|
|
@@ -6176,6 +6354,8 @@ const Methods = {
|
|
|
6176
6354
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
6177
6355
|
const keyboardOpts = $xeTable.computeKeyboardOpts;
|
|
6178
6356
|
const rowOpts = $xeTable.computeRowOpts;
|
|
6357
|
+
const columnOpts = $xeTable.computeColumnOpts;
|
|
6358
|
+
const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
|
|
6179
6359
|
const { actived, focused } = editStore;
|
|
6180
6360
|
const { row, column } = params;
|
|
6181
6361
|
const { type, treeNode } = column;
|
|
@@ -6191,11 +6371,11 @@ const Methods = {
|
|
|
6191
6371
|
if (!triggerCheckbox && !triggerRadio) {
|
|
6192
6372
|
// 如果是展开行
|
|
6193
6373
|
if (!triggerExpandNode && (expandOpts.trigger === 'row' || (isExpandType && expandOpts.trigger === 'cell'))) {
|
|
6194
|
-
|
|
6374
|
+
$xeTable.triggerRowExpandEvent(evnt, params);
|
|
6195
6375
|
}
|
|
6196
6376
|
// 如果是树形表格
|
|
6197
6377
|
if ((treeOpts.trigger === 'row' || (treeNode && treeOpts.trigger === 'cell'))) {
|
|
6198
|
-
|
|
6378
|
+
$xeTable.triggerTreeExpandEvent(evnt, params);
|
|
6199
6379
|
}
|
|
6200
6380
|
}
|
|
6201
6381
|
// 如果点击了树节点
|
|
@@ -6204,16 +6384,22 @@ const Methods = {
|
|
|
6204
6384
|
// 如果是高亮行
|
|
6205
6385
|
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
6206
6386
|
if (!triggerCheckbox && !triggerRadio) {
|
|
6207
|
-
|
|
6387
|
+
$xeTable.triggerCurrentRowEvent(evnt, params);
|
|
6388
|
+
}
|
|
6389
|
+
}
|
|
6390
|
+
// 如果是当前列
|
|
6391
|
+
if ((columnOpts.isCurrent || highlightCurrentColumn) && (!currentColumnOpts.trigger || ['cell', 'default'].includes(currentColumnOpts.trigger))) {
|
|
6392
|
+
if (!triggerCheckbox && !triggerRadio) {
|
|
6393
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params);
|
|
6208
6394
|
}
|
|
6209
6395
|
}
|
|
6210
6396
|
// 如果是单选框
|
|
6211
6397
|
if (!triggerRadio && (radioOpts.trigger === 'row' || (isRadioType && radioOpts.trigger === 'cell'))) {
|
|
6212
|
-
|
|
6398
|
+
$xeTable.triggerRadioRowEvent(evnt, params);
|
|
6213
6399
|
}
|
|
6214
6400
|
// 如果是复选框
|
|
6215
6401
|
if (!triggerCheckbox && (checkboxOpts.trigger === 'row' || (isCheckboxType && checkboxOpts.trigger === 'cell'))) {
|
|
6216
|
-
|
|
6402
|
+
$xeTable.handleToggleCheckRowEvent(evnt, params);
|
|
6217
6403
|
}
|
|
6218
6404
|
}
|
|
6219
6405
|
// 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
|
|
@@ -6225,16 +6411,16 @@ const Methods = {
|
|
|
6225
6411
|
}
|
|
6226
6412
|
if (editOpts.trigger === 'manual') {
|
|
6227
6413
|
if (actived.args && actived.row === row && column !== actived.column) {
|
|
6228
|
-
|
|
6414
|
+
handleChangeCell($xeTable, evnt, params);
|
|
6229
6415
|
}
|
|
6230
6416
|
}
|
|
6231
6417
|
else if (!actived.args || row !== actived.row || column !== actived.column) {
|
|
6232
6418
|
if (editOpts.trigger === 'click') {
|
|
6233
|
-
|
|
6419
|
+
handleChangeCell($xeTable, evnt, params);
|
|
6234
6420
|
}
|
|
6235
6421
|
else if (editOpts.trigger === 'dblclick') {
|
|
6236
6422
|
if (editOpts.mode === 'row' && actived.row === row) {
|
|
6237
|
-
|
|
6423
|
+
handleChangeCell($xeTable, evnt, params);
|
|
6238
6424
|
}
|
|
6239
6425
|
}
|
|
6240
6426
|
}
|
|
@@ -6255,7 +6441,7 @@ const Methods = {
|
|
|
6255
6441
|
}
|
|
6256
6442
|
}
|
|
6257
6443
|
}
|
|
6258
|
-
|
|
6444
|
+
$xeTable.dispatchEvent('cell-click', params, evnt);
|
|
6259
6445
|
},
|
|
6260
6446
|
/**
|
|
6261
6447
|
* 列双击点击事件
|
|
@@ -6277,17 +6463,17 @@ const Methods = {
|
|
|
6277
6463
|
if (isEnableConf(editConfig) && editOpts.trigger === 'dblclick') {
|
|
6278
6464
|
if (!actived.args || evnt.currentTarget !== actived.args.cell) {
|
|
6279
6465
|
if (editOpts.mode === 'row') {
|
|
6280
|
-
|
|
6466
|
+
checkValidate($xeTable, 'blur')
|
|
6281
6467
|
.catch((e) => e)
|
|
6282
6468
|
.then(() => {
|
|
6283
6469
|
this.handleEdit(params, evnt)
|
|
6284
|
-
.then(() =>
|
|
6470
|
+
.then(() => checkValidate($xeTable, 'change'))
|
|
6285
6471
|
.catch((e) => e);
|
|
6286
6472
|
});
|
|
6287
6473
|
}
|
|
6288
6474
|
else if (editOpts.mode === 'cell') {
|
|
6289
6475
|
this.handleEdit(params, evnt)
|
|
6290
|
-
.then(() =>
|
|
6476
|
+
.then(() => checkValidate($xeTable, 'change'))
|
|
6291
6477
|
.catch((e) => e);
|
|
6292
6478
|
}
|
|
6293
6479
|
}
|
|
@@ -6481,6 +6667,9 @@ const Methods = {
|
|
|
6481
6667
|
const { afterFullData, tableFullData } = internalData;
|
|
6482
6668
|
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
|
|
6483
6669
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
6670
|
+
const errRest = {
|
|
6671
|
+
status: false
|
|
6672
|
+
};
|
|
6484
6673
|
if (prevDragRow && dragRow) {
|
|
6485
6674
|
// 判断是否有拖动
|
|
6486
6675
|
if (prevDragRow !== dragRow) {
|
|
@@ -6495,7 +6684,7 @@ const Methods = {
|
|
|
6495
6684
|
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
6496
6685
|
return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then((status) => {
|
|
6497
6686
|
if (!status) {
|
|
6498
|
-
return;
|
|
6687
|
+
return errRest;
|
|
6499
6688
|
}
|
|
6500
6689
|
let oafIndex = -1;
|
|
6501
6690
|
let nafIndex = -1;
|
|
@@ -6520,12 +6709,12 @@ const Methods = {
|
|
|
6520
6709
|
if (isPeerDrag && !isCrossDrag) {
|
|
6521
6710
|
if (oldRest.row[parentField] !== newRest.row[parentField]) {
|
|
6522
6711
|
// 非同级
|
|
6523
|
-
return;
|
|
6712
|
+
return errRest;
|
|
6524
6713
|
}
|
|
6525
6714
|
}
|
|
6526
6715
|
else {
|
|
6527
6716
|
if (!isCrossDrag) {
|
|
6528
|
-
return;
|
|
6717
|
+
return errRest;
|
|
6529
6718
|
}
|
|
6530
6719
|
if (oldAllMaps[newRowid]) {
|
|
6531
6720
|
isSelfToChildStatus = true;
|
|
@@ -6536,7 +6725,7 @@ const Methods = {
|
|
|
6536
6725
|
content: getI18n('vxe.error.treeDragChild')
|
|
6537
6726
|
});
|
|
6538
6727
|
}
|
|
6539
|
-
return;
|
|
6728
|
+
return errRest;
|
|
6540
6729
|
}
|
|
6541
6730
|
}
|
|
6542
6731
|
}
|
|
@@ -6544,13 +6733,13 @@ const Methods = {
|
|
|
6544
6733
|
else if (oldLevel) {
|
|
6545
6734
|
// 子到根
|
|
6546
6735
|
if (!isCrossDrag) {
|
|
6547
|
-
return;
|
|
6736
|
+
return errRest;
|
|
6548
6737
|
}
|
|
6549
6738
|
}
|
|
6550
6739
|
else if (newLevel) {
|
|
6551
6740
|
// 根到子
|
|
6552
6741
|
if (!isCrossDrag) {
|
|
6553
|
-
return;
|
|
6742
|
+
return errRest;
|
|
6554
6743
|
}
|
|
6555
6744
|
if (oldAllMaps[newRowid]) {
|
|
6556
6745
|
isSelfToChildStatus = true;
|
|
@@ -6561,7 +6750,7 @@ const Methods = {
|
|
|
6561
6750
|
content: getI18n('vxe.error.treeDragChild')
|
|
6562
6751
|
});
|
|
6563
6752
|
}
|
|
6564
|
-
return;
|
|
6753
|
+
return errRest;
|
|
6565
6754
|
}
|
|
6566
6755
|
}
|
|
6567
6756
|
}
|
|
@@ -6621,27 +6810,34 @@ const Methods = {
|
|
|
6621
6810
|
if (reactData.scrollYLoad) {
|
|
6622
6811
|
$xeTable.updateScrollYSpace();
|
|
6623
6812
|
}
|
|
6624
|
-
|
|
6813
|
+
if (evnt) {
|
|
6814
|
+
$xeTable.dispatchEvent('row-dragend', {
|
|
6815
|
+
oldRow: dragRow,
|
|
6816
|
+
newRow: prevDragRow,
|
|
6817
|
+
dragRow,
|
|
6818
|
+
dragPos: prevDragPos,
|
|
6819
|
+
dragToChild: isDragToChildFlag,
|
|
6820
|
+
offsetIndex: dragOffsetIndex,
|
|
6821
|
+
_index: {
|
|
6822
|
+
newIndex: nafIndex,
|
|
6823
|
+
oldIndex: oafIndex
|
|
6824
|
+
}
|
|
6825
|
+
}, evnt);
|
|
6826
|
+
}
|
|
6827
|
+
return $xeTable.$nextTick().then(() => {
|
|
6625
6828
|
$xeTable.updateCellAreas();
|
|
6626
6829
|
$xeTable.recalculate();
|
|
6830
|
+
}).then(() => {
|
|
6831
|
+
return {
|
|
6832
|
+
status: true
|
|
6833
|
+
};
|
|
6627
6834
|
});
|
|
6628
|
-
$xeTable.dispatchEvent('row-dragend', {
|
|
6629
|
-
oldRow: dragRow,
|
|
6630
|
-
newRow: prevDragRow,
|
|
6631
|
-
dragRow,
|
|
6632
|
-
dragPos: prevDragPos,
|
|
6633
|
-
dragToChild: isDragToChildFlag,
|
|
6634
|
-
offsetIndex: dragOffsetIndex,
|
|
6635
|
-
_index: {
|
|
6636
|
-
newIndex: nafIndex,
|
|
6637
|
-
oldIndex: oafIndex
|
|
6638
|
-
}
|
|
6639
|
-
}, evnt);
|
|
6640
6835
|
}).catch(() => {
|
|
6836
|
+
return errRest;
|
|
6641
6837
|
});
|
|
6642
6838
|
}
|
|
6643
6839
|
}
|
|
6644
|
-
return Promise.resolve();
|
|
6840
|
+
return Promise.resolve(errRest);
|
|
6645
6841
|
},
|
|
6646
6842
|
handleRowDragDragendEvent(evnt) {
|
|
6647
6843
|
const $xeTable = this;
|
|
@@ -6786,6 +6982,9 @@ const Methods = {
|
|
|
6786
6982
|
const { isPeerDrag, isCrossDrag, isSelfToChildDrag, isToChildDrag, dragEndMethod, dragToChildMethod } = columnDragOpts;
|
|
6787
6983
|
const { collectColumn } = internalData;
|
|
6788
6984
|
const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
|
|
6985
|
+
const errRest = {
|
|
6986
|
+
status: false
|
|
6987
|
+
};
|
|
6789
6988
|
if (prevDragCol && dragCol) {
|
|
6790
6989
|
// 判断是否有拖动
|
|
6791
6990
|
if (prevDragCol !== dragCol) {
|
|
@@ -6802,7 +7001,7 @@ const Methods = {
|
|
|
6802
7001
|
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
6803
7002
|
return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
6804
7003
|
if (!status) {
|
|
6805
|
-
return;
|
|
7004
|
+
return errRest;
|
|
6806
7005
|
}
|
|
6807
7006
|
let oafIndex = -1;
|
|
6808
7007
|
let nafIndex = -1;
|
|
@@ -6816,12 +7015,12 @@ const Methods = {
|
|
|
6816
7015
|
if (isPeerDrag && !isCrossDrag) {
|
|
6817
7016
|
if (dragColumn.parentId !== newColumn.parentId) {
|
|
6818
7017
|
// 非同级
|
|
6819
|
-
return;
|
|
7018
|
+
return errRest;
|
|
6820
7019
|
}
|
|
6821
7020
|
}
|
|
6822
7021
|
else {
|
|
6823
7022
|
if (!isCrossDrag) {
|
|
6824
|
-
return;
|
|
7023
|
+
return errRest;
|
|
6825
7024
|
}
|
|
6826
7025
|
if (oldAllMaps[newColumn.id]) {
|
|
6827
7026
|
isSelfToChildStatus = true;
|
|
@@ -6832,7 +7031,7 @@ const Methods = {
|
|
|
6832
7031
|
content: getI18n('vxe.error.treeDragChild')
|
|
6833
7032
|
});
|
|
6834
7033
|
}
|
|
6835
|
-
return;
|
|
7034
|
+
return errRest;
|
|
6836
7035
|
}
|
|
6837
7036
|
}
|
|
6838
7037
|
}
|
|
@@ -6840,13 +7039,13 @@ const Methods = {
|
|
|
6840
7039
|
else if (dragColumn.parentId) {
|
|
6841
7040
|
// 子到根
|
|
6842
7041
|
if (!isCrossDrag) {
|
|
6843
|
-
return;
|
|
7042
|
+
return errRest;
|
|
6844
7043
|
}
|
|
6845
7044
|
}
|
|
6846
7045
|
else if (newColumn.parentId) {
|
|
6847
7046
|
// 根到子
|
|
6848
7047
|
if (!isCrossDrag) {
|
|
6849
|
-
return;
|
|
7048
|
+
return errRest;
|
|
6850
7049
|
}
|
|
6851
7050
|
if (oldAllMaps[newColumn.id]) {
|
|
6852
7051
|
isSelfToChildStatus = true;
|
|
@@ -6857,7 +7056,7 @@ const Methods = {
|
|
|
6857
7056
|
content: getI18n('vxe.error.treeDragChild')
|
|
6858
7057
|
});
|
|
6859
7058
|
}
|
|
6860
|
-
return;
|
|
7059
|
+
return errRest;
|
|
6861
7060
|
}
|
|
6862
7061
|
}
|
|
6863
7062
|
}
|
|
@@ -6918,26 +7117,32 @@ const Methods = {
|
|
|
6918
7117
|
$xeTable.clearCopyCellArea();
|
|
6919
7118
|
}
|
|
6920
7119
|
}
|
|
6921
|
-
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
|
|
7120
|
+
if (evnt) {
|
|
7121
|
+
$xeTable.dispatchEvent('column-dragend', {
|
|
7122
|
+
oldColumn: dragColumn,
|
|
7123
|
+
newColumn,
|
|
7124
|
+
dragColumn,
|
|
7125
|
+
dragPos: prevDragPos,
|
|
7126
|
+
dragToChild: isDragToChildFlag,
|
|
7127
|
+
offsetIndex: dragOffsetIndex,
|
|
7128
|
+
_index: {
|
|
7129
|
+
newIndex: nafIndex,
|
|
7130
|
+
oldIndex: oafIndex
|
|
7131
|
+
}
|
|
7132
|
+
}, evnt);
|
|
7133
|
+
}
|
|
6933
7134
|
if (isSyncColumn) {
|
|
6934
7135
|
$xeTable.handleColDragSwapColumn();
|
|
6935
7136
|
}
|
|
7137
|
+
return {
|
|
7138
|
+
status: true
|
|
7139
|
+
};
|
|
6936
7140
|
}).catch(() => {
|
|
7141
|
+
return errRest;
|
|
6937
7142
|
});
|
|
6938
7143
|
}
|
|
6939
7144
|
}
|
|
6940
|
-
return Promise.resolve();
|
|
7145
|
+
return Promise.resolve(errRest);
|
|
6941
7146
|
},
|
|
6942
7147
|
handleHeaderCellDragDragendEvent(evnt) {
|
|
6943
7148
|
const $xeTable = this;
|
|
@@ -7285,7 +7490,9 @@ const Methods = {
|
|
|
7285
7490
|
* @param {Event} evnt 事件
|
|
7286
7491
|
*/
|
|
7287
7492
|
closeFilter() {
|
|
7288
|
-
const
|
|
7493
|
+
const $xeTable = this;
|
|
7494
|
+
const reactData = $xeTable;
|
|
7495
|
+
const { filterStore } = reactData;
|
|
7289
7496
|
const { column, visible } = filterStore;
|
|
7290
7497
|
Object.assign(filterStore, {
|
|
7291
7498
|
isAllSelected: false,
|
|
@@ -7294,9 +7501,15 @@ const Methods = {
|
|
|
7294
7501
|
visible: false
|
|
7295
7502
|
});
|
|
7296
7503
|
if (visible) {
|
|
7297
|
-
|
|
7504
|
+
$xeTable.dispatchEvent('filter-visible', {
|
|
7505
|
+
column,
|
|
7506
|
+
field: column.field,
|
|
7507
|
+
property: column.field,
|
|
7508
|
+
filterList: () => $xeTable.getCheckedFilters(),
|
|
7509
|
+
visible: false
|
|
7510
|
+
}, null);
|
|
7298
7511
|
}
|
|
7299
|
-
return
|
|
7512
|
+
return $xeTable.$nextTick();
|
|
7300
7513
|
},
|
|
7301
7514
|
/**
|
|
7302
7515
|
* 判断指定列是否为筛选状态,如果为空则判断所有列
|
|
@@ -8282,10 +8495,10 @@ const Methods = {
|
|
|
8282
8495
|
return;
|
|
8283
8496
|
}
|
|
8284
8497
|
const { highlightHoverRow } = tableProps;
|
|
8285
|
-
const { scrollXLoad, scrollYLoad } = reactData;
|
|
8498
|
+
const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
|
|
8286
8499
|
const leftFixedWidth = $xeTable.computeLeftFixedWidth;
|
|
8287
8500
|
const rightFixedWidth = $xeTable.computeRightFixedWidth;
|
|
8288
|
-
if (!(scrollYLoad || leftFixedWidth || rightFixedWidth)) {
|
|
8501
|
+
if (!(scrollYLoad || leftFixedWidth || rightFixedWidth || expandColumn)) {
|
|
8289
8502
|
return;
|
|
8290
8503
|
}
|
|
8291
8504
|
const { elemStore, lastScrollTop, lastScrollLeft } = internalData;
|