vxe-table 3.15.4 → 3.15.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 +3 -2
- package/es/locale/lang/de-DE.js +3 -2
- package/es/locale/lang/en-US.js +2 -1
- package/es/locale/lang/es-ES.js +3 -2
- 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/custom/mixin.js +62 -37
- package/es/table/module/custom/panel.js +7 -7
- package/es/table/module/export/mixin.js +13 -12
- package/es/table/module/keyboard/mixin.js +3 -2
- package/es/table/src/body.js +49 -16
- package/es/table/src/cell.js +137 -45
- package/es/table/src/column.js +2 -0
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/methods.js +979 -497
- package/es/table/src/props.js +9 -7
- package/es/table/src/table.js +108 -35
- package/es/table/style.css +71 -41
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +13 -1
- package/es/ui/src/dom.js +3 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +71 -41
- 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 +1730 -860
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +3 -2
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +3 -2
- 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 +3 -2
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +3 -2
- 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/custom/mixin.js +74 -48
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/custom/panel.js +6 -2
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +13 -5
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +2 -1
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/src/body.js +39 -15
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +157 -36
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +2 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/methods.js +1159 -564
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +9 -7
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +104 -34
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +71 -41
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +13 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +4 -0
- package/lib/ui/src/dom.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 +71 -41
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +3 -2
- package/packages/locale/lang/de-DE.ts +3 -2
- package/packages/locale/lang/en-US.ts +2 -1
- package/packages/locale/lang/es-ES.ts +3 -2
- 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/custom/mixin.ts +85 -51
- package/packages/table/module/custom/panel.ts +8 -8
- package/packages/table/module/export/mixin.ts +19 -18
- package/packages/table/module/keyboard/mixin.ts +3 -2
- package/packages/table/src/body.ts +50 -17
- package/packages/table/src/cell.ts +136 -45
- package/packages/table/src/column.ts +2 -0
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/methods.ts +1012 -514
- package/packages/table/src/props.ts +9 -7
- package/packages/table/src/table.ts +122 -38
- package/packages/ui/index.ts +12 -0
- package/packages/ui/src/dom.ts +4 -0
- package/styles/components/table.scss +133 -93
- /package/es/{iconfont.1744768256934.ttf → iconfont.1745197894601.ttf} +0 -0
- /package/es/{iconfont.1744768256934.woff → iconfont.1745197894601.woff} +0 -0
- /package/es/{iconfont.1744768256934.woff2 → iconfont.1745197894601.woff2} +0 -0
- /package/lib/{iconfont.1744768256934.ttf → iconfont.1745197894601.ttf} +0 -0
- /package/lib/{iconfont.1744768256934.woff → iconfont.1745197894601.woff} +0 -0
- /package/lib/{iconfont.1744768256934.woff2 → iconfont.1745197894601.woff2} +0 -0
package/lib/table/src/methods.js
CHANGED
|
@@ -214,6 +214,7 @@ function restoreCustomStorage($xeTable) {
|
|
|
214
214
|
const storeData = getCustomStorageMap(tableId);
|
|
215
215
|
if (restoreStore) {
|
|
216
216
|
return Promise.resolve(restoreStore({
|
|
217
|
+
$table: $xeTable,
|
|
217
218
|
id: tableId,
|
|
218
219
|
type: 'restore',
|
|
219
220
|
storeData
|
|
@@ -257,6 +258,7 @@ function cacheColumnMap($xeTable) {
|
|
|
257
258
|
const rowOpts = $xeTable.computeRowOpts;
|
|
258
259
|
const isGroup = collectColumn.some(_utils.hasChildrenList);
|
|
259
260
|
let isAllOverflow = !!props.showOverflow;
|
|
261
|
+
let rowGroupColumn;
|
|
260
262
|
let expandColumn;
|
|
261
263
|
let treeNodeColumn;
|
|
262
264
|
let checkboxColumn;
|
|
@@ -269,7 +271,8 @@ function cacheColumnMap($xeTable) {
|
|
|
269
271
|
field,
|
|
270
272
|
fixed,
|
|
271
273
|
type,
|
|
272
|
-
treeNode
|
|
274
|
+
treeNode,
|
|
275
|
+
rowGroupNode
|
|
273
276
|
} = column;
|
|
274
277
|
const rest = {
|
|
275
278
|
$index: -1,
|
|
@@ -305,7 +308,16 @@ function cacheColumnMap($xeTable) {
|
|
|
305
308
|
if (!treeNodeColumn) {
|
|
306
309
|
treeNodeColumn = column;
|
|
307
310
|
}
|
|
308
|
-
}
|
|
311
|
+
}
|
|
312
|
+
if (rowGroupNode) {
|
|
313
|
+
if (treeNodeColumn) {
|
|
314
|
+
(0, _log.warnLog)('vxe.error.colRepet', ['row-group-node', rowGroupNode]);
|
|
315
|
+
}
|
|
316
|
+
if (!rowGroupColumn) {
|
|
317
|
+
rowGroupColumn = column;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
if (type === 'expand') {
|
|
309
321
|
if (expandColumn) {
|
|
310
322
|
(0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
|
|
311
323
|
}
|
|
@@ -356,6 +368,7 @@ function cacheColumnMap($xeTable) {
|
|
|
356
368
|
}
|
|
357
369
|
}
|
|
358
370
|
reactData.isGroup = isGroup;
|
|
371
|
+
reactData.rowGroupColumn = rowGroupColumn;
|
|
359
372
|
reactData.treeNodeColumn = treeNodeColumn;
|
|
360
373
|
reactData.expandColumn = expandColumn;
|
|
361
374
|
reactData.isAllOverflow = isAllOverflow;
|
|
@@ -392,7 +405,7 @@ function handleBaseTreeExpand($xeTable, rows, expanded) {
|
|
|
392
405
|
} = reactData;
|
|
393
406
|
const {
|
|
394
407
|
fullAllDataRowIdData,
|
|
395
|
-
|
|
408
|
+
tableFullTreeData,
|
|
396
409
|
treeExpandedMaps,
|
|
397
410
|
treeExpandLazyLoadedMaps
|
|
398
411
|
} = internalData;
|
|
@@ -422,7 +435,7 @@ function handleBaseTreeExpand($xeTable, rows, expanded) {
|
|
|
422
435
|
if (accordion) {
|
|
423
436
|
validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
|
|
424
437
|
// 同一级只能展开一个
|
|
425
|
-
const matchObj = _xeUtils.default.findTree(
|
|
438
|
+
const matchObj = _xeUtils.default.findTree(tableFullTreeData, item => item === validRows[0], {
|
|
426
439
|
children: childrenField
|
|
427
440
|
});
|
|
428
441
|
if (matchObj) {
|
|
@@ -475,9 +488,96 @@ function handleBaseTreeExpand($xeTable, rows, expanded) {
|
|
|
475
488
|
* @returns
|
|
476
489
|
*/
|
|
477
490
|
function handleVirtualTreeExpand($xeTable, rows, expanded) {
|
|
491
|
+
const reactData = $xeTable;
|
|
478
492
|
return handleBaseTreeExpand($xeTable, rows, expanded).then(() => {
|
|
479
493
|
handleVirtualTreeToList($xeTable);
|
|
480
494
|
$xeTable.handleTableData();
|
|
495
|
+
reactData.treeExpandedFlag++;
|
|
496
|
+
updateAfterDataIndex($xeTable);
|
|
497
|
+
return $xeTable.$nextTick();
|
|
498
|
+
}).then(() => {
|
|
499
|
+
return $xeTable.recalculate(true);
|
|
500
|
+
}).then(() => {
|
|
501
|
+
setTimeout(() => {
|
|
502
|
+
$xeTable.updateCellAreas();
|
|
503
|
+
}, 30);
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* 展开与收起行分组节点
|
|
508
|
+
* @param rows
|
|
509
|
+
* @param expanded
|
|
510
|
+
* @returns
|
|
511
|
+
*/
|
|
512
|
+
function handleRowGroupBaseExpand($xeTable, rows, expanded) {
|
|
513
|
+
const reactData = $xeTable;
|
|
514
|
+
const internalData = $xeTable;
|
|
515
|
+
const {
|
|
516
|
+
fullAllDataRowIdData,
|
|
517
|
+
tableFullGroupData,
|
|
518
|
+
rowGroupExpandedMaps
|
|
519
|
+
} = internalData;
|
|
520
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
521
|
+
const {
|
|
522
|
+
mapChildrenField,
|
|
523
|
+
accordion
|
|
524
|
+
} = rowGroupOpts;
|
|
525
|
+
const {
|
|
526
|
+
handleGetRowId
|
|
527
|
+
} = (0, _util.createHandleGetRowId)($xeTable);
|
|
528
|
+
let validRows = rows;
|
|
529
|
+
if (mapChildrenField) {
|
|
530
|
+
if (accordion) {
|
|
531
|
+
validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
|
|
532
|
+
// 同一级只能展开一个
|
|
533
|
+
const matchObj = _xeUtils.default.findTree(tableFullGroupData, item => (0, _util.getRowid)($xeTable, item) === (0, _util.getRowid)($xeTable, validRows[0]), {
|
|
534
|
+
children: mapChildrenField
|
|
535
|
+
});
|
|
536
|
+
if (matchObj) {
|
|
537
|
+
matchObj.items.forEach(item => {
|
|
538
|
+
const rowid = handleGetRowId(item);
|
|
539
|
+
if (rowGroupExpandedMaps[rowid]) {
|
|
540
|
+
delete rowGroupExpandedMaps[rowid];
|
|
541
|
+
}
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
if (expanded) {
|
|
546
|
+
validRows.forEach(row => {
|
|
547
|
+
const rowid = handleGetRowId(row);
|
|
548
|
+
if (!rowGroupExpandedMaps[rowid]) {
|
|
549
|
+
const rowRest = fullAllDataRowIdData[rowid];
|
|
550
|
+
if (rowRest) {
|
|
551
|
+
if (row[mapChildrenField] && row[mapChildrenField].length) {
|
|
552
|
+
rowGroupExpandedMaps[rowid] = row;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
} else {
|
|
558
|
+
validRows.forEach(item => {
|
|
559
|
+
const rowid = handleGetRowId(item);
|
|
560
|
+
if (rowGroupExpandedMaps[rowid]) {
|
|
561
|
+
delete rowGroupExpandedMaps[rowid];
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
reactData.rowGroupExpandedFlag++;
|
|
567
|
+
return $xeTable.recalculate();
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* 行分组的展开与收起
|
|
571
|
+
* @param rows
|
|
572
|
+
* @param expanded
|
|
573
|
+
* @returns
|
|
574
|
+
*/
|
|
575
|
+
function handleRowGroupVirtualExpand($xeTable, rows, expanded) {
|
|
576
|
+
const reactData = $xeTable;
|
|
577
|
+
return handleRowGroupBaseExpand($xeTable, rows, expanded).then(() => {
|
|
578
|
+
handleVirtualTreeToList($xeTable);
|
|
579
|
+
$xeTable.handleTableData();
|
|
580
|
+
reactData.rowGroupExpandedFlag++;
|
|
481
581
|
updateAfterDataIndex($xeTable);
|
|
482
582
|
return $xeTable.$nextTick();
|
|
483
583
|
}).then(() => {
|
|
@@ -599,27 +699,33 @@ function updateAfterDataIndex($xeTable) {
|
|
|
599
699
|
}
|
|
600
700
|
}
|
|
601
701
|
/**
|
|
602
|
-
*
|
|
702
|
+
* 如果为虚拟树、行分组、则将树结构拍平
|
|
603
703
|
* @returns
|
|
604
704
|
*/
|
|
605
705
|
function handleVirtualTreeToList($xeTable) {
|
|
606
706
|
const props = $xeTable;
|
|
707
|
+
const reactData = $xeTable;
|
|
607
708
|
const internalData = $xeTable;
|
|
608
709
|
const {
|
|
609
710
|
treeConfig
|
|
610
711
|
} = props;
|
|
712
|
+
const {
|
|
713
|
+
isRowGroupStatus
|
|
714
|
+
} = reactData;
|
|
611
715
|
const {
|
|
612
716
|
fullAllDataRowIdData,
|
|
613
|
-
treeExpandedMaps
|
|
717
|
+
treeExpandedMaps,
|
|
718
|
+
rowGroupExpandedMaps
|
|
614
719
|
} = internalData;
|
|
720
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
615
721
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
616
|
-
const
|
|
722
|
+
const {
|
|
723
|
+
handleGetRowId
|
|
724
|
+
} = (0, _util.createHandleGetRowId)($xeTable);
|
|
725
|
+
const fullData = [];
|
|
726
|
+
const expandMaps = {};
|
|
617
727
|
if (treeConfig && treeOpts.transform) {
|
|
618
|
-
const
|
|
619
|
-
handleGetRowId
|
|
620
|
-
} = (0, _util.createHandleGetRowId)($xeTable);
|
|
621
|
-
const fullData = [];
|
|
622
|
-
const expandMaps = {};
|
|
728
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
623
729
|
_xeUtils.default.eachTree(internalData.afterTreeFullData, (row, index, items, path, parentRow) => {
|
|
624
730
|
const rowid = handleGetRowId(row);
|
|
625
731
|
const parentRowid = handleGetRowId(parentRow);
|
|
@@ -637,9 +743,336 @@ function handleVirtualTreeToList($xeTable) {
|
|
|
637
743
|
internalData.afterFullData = fullData;
|
|
638
744
|
updateScrollYStatus($xeTable, fullData);
|
|
639
745
|
return fullData;
|
|
746
|
+
} else if (isRowGroupStatus) {
|
|
747
|
+
const {
|
|
748
|
+
childrenField
|
|
749
|
+
} = rowGroupOpts;
|
|
750
|
+
_xeUtils.default.eachTree(internalData.afterGroupFullData, (row, index, items, path, parentRow) => {
|
|
751
|
+
const rowid = handleGetRowId(row);
|
|
752
|
+
const parentRowid = handleGetRowId(parentRow);
|
|
753
|
+
if (!parentRow || expandMaps[parentRowid] && rowGroupExpandedMaps[parentRowid]) {
|
|
754
|
+
const rowRest = fullAllDataRowIdData[rowid];
|
|
755
|
+
if (rowRest) {
|
|
756
|
+
rowRest._index = fullData.length;
|
|
757
|
+
}
|
|
758
|
+
expandMaps[rowid] = 1;
|
|
759
|
+
fullData.push(row);
|
|
760
|
+
}
|
|
761
|
+
}, {
|
|
762
|
+
children: childrenField
|
|
763
|
+
});
|
|
764
|
+
internalData.afterFullData = fullData;
|
|
765
|
+
updateScrollYStatus($xeTable, fullData);
|
|
766
|
+
return fullData;
|
|
640
767
|
}
|
|
641
768
|
return internalData.afterFullData;
|
|
642
769
|
}
|
|
770
|
+
/**
|
|
771
|
+
* 编译处理后全量的表格数据
|
|
772
|
+
* 如果存在筛选条件,继续处理
|
|
773
|
+
*/
|
|
774
|
+
function updateAfterFullData($xeTable) {
|
|
775
|
+
const props = $xeTable;
|
|
776
|
+
const reactData = $xeTable;
|
|
777
|
+
const internalData = $xeTable;
|
|
778
|
+
const {
|
|
779
|
+
treeConfig
|
|
780
|
+
} = props;
|
|
781
|
+
const {
|
|
782
|
+
isRowGroupStatus
|
|
783
|
+
} = reactData;
|
|
784
|
+
const {
|
|
785
|
+
tableFullColumn,
|
|
786
|
+
tableFullData,
|
|
787
|
+
tableFullTreeData,
|
|
788
|
+
tableFullGroupData
|
|
789
|
+
} = internalData;
|
|
790
|
+
const filterOpts = $xeTable.computeFilterOpts;
|
|
791
|
+
const sortOpts = $xeTable.computeSortOpts;
|
|
792
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
793
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
794
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
795
|
+
const {
|
|
796
|
+
transform,
|
|
797
|
+
rowField,
|
|
798
|
+
parentField,
|
|
799
|
+
mapChildrenField
|
|
800
|
+
} = treeOpts;
|
|
801
|
+
const {
|
|
802
|
+
isEvery,
|
|
803
|
+
remote: allRemoteFilter,
|
|
804
|
+
filterMethod: allFilterMethod
|
|
805
|
+
} = filterOpts;
|
|
806
|
+
const {
|
|
807
|
+
remote: allRemoteSort,
|
|
808
|
+
sortMethod: allSortMethod,
|
|
809
|
+
multiple: sortMultiple,
|
|
810
|
+
chronological
|
|
811
|
+
} = sortOpts;
|
|
812
|
+
let tableData = [];
|
|
813
|
+
let tableTree = [];
|
|
814
|
+
// 处理数据
|
|
815
|
+
if (!allRemoteFilter || !allRemoteSort) {
|
|
816
|
+
const filterColumns = [];
|
|
817
|
+
let orderColumns = [];
|
|
818
|
+
tableFullColumn.forEach(column => {
|
|
819
|
+
const {
|
|
820
|
+
field,
|
|
821
|
+
sortable,
|
|
822
|
+
order,
|
|
823
|
+
filters
|
|
824
|
+
} = column;
|
|
825
|
+
if (!allRemoteFilter && filters && filters.length) {
|
|
826
|
+
const valueList = [];
|
|
827
|
+
const itemList = [];
|
|
828
|
+
filters.forEach(item => {
|
|
829
|
+
if (item.checked) {
|
|
830
|
+
itemList.push(item);
|
|
831
|
+
valueList.push(item.value);
|
|
832
|
+
}
|
|
833
|
+
});
|
|
834
|
+
if (itemList.length) {
|
|
835
|
+
filterColumns.push({
|
|
836
|
+
column,
|
|
837
|
+
valueList,
|
|
838
|
+
itemList
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
if (!allRemoteSort && sortable && order) {
|
|
843
|
+
orderColumns.push({
|
|
844
|
+
column,
|
|
845
|
+
field,
|
|
846
|
+
property: field,
|
|
847
|
+
order: order,
|
|
848
|
+
sortTime: column.sortTime
|
|
849
|
+
});
|
|
850
|
+
}
|
|
851
|
+
});
|
|
852
|
+
if (sortMultiple && chronological && orderColumns.length > 1) {
|
|
853
|
+
orderColumns = _xeUtils.default.orderBy(orderColumns, 'sortTime');
|
|
854
|
+
}
|
|
855
|
+
// 处理筛选
|
|
856
|
+
// 支持单列、多列、组合筛选
|
|
857
|
+
if (!allRemoteFilter && filterColumns.length) {
|
|
858
|
+
const handleFilter = row => {
|
|
859
|
+
return filterColumns.every(({
|
|
860
|
+
column,
|
|
861
|
+
valueList,
|
|
862
|
+
itemList
|
|
863
|
+
}) => {
|
|
864
|
+
const {
|
|
865
|
+
filterMethod,
|
|
866
|
+
filterRender
|
|
867
|
+
} = column;
|
|
868
|
+
const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
|
|
869
|
+
const compFilterMethod = compConf ? compConf.tableFilterMethod || compConf.filterMethod : null;
|
|
870
|
+
const tdFilterMethod = compConf ? compConf.tableFilterDefaultMethod || compConf.defaultTableFilterMethod || compConf.defaultFilterMethod : null;
|
|
871
|
+
const cellValue = (0, _util.getCellValue)(row, column);
|
|
872
|
+
if (filterMethod) {
|
|
873
|
+
return itemList.some(item => filterMethod({
|
|
874
|
+
value: item.value,
|
|
875
|
+
option: item,
|
|
876
|
+
cellValue,
|
|
877
|
+
row,
|
|
878
|
+
column,
|
|
879
|
+
$table: $xeTable
|
|
880
|
+
}));
|
|
881
|
+
} else if (compFilterMethod) {
|
|
882
|
+
return itemList.some(item => compFilterMethod({
|
|
883
|
+
value: item.value,
|
|
884
|
+
option: item,
|
|
885
|
+
cellValue,
|
|
886
|
+
row,
|
|
887
|
+
column,
|
|
888
|
+
$table: $xeTable
|
|
889
|
+
}));
|
|
890
|
+
} else if (allFilterMethod) {
|
|
891
|
+
return allFilterMethod({
|
|
892
|
+
$table: $xeTable,
|
|
893
|
+
options: itemList,
|
|
894
|
+
values: valueList,
|
|
895
|
+
cellValue,
|
|
896
|
+
row,
|
|
897
|
+
column
|
|
898
|
+
});
|
|
899
|
+
} else if (tdFilterMethod) {
|
|
900
|
+
return itemList.some(item => tdFilterMethod({
|
|
901
|
+
value: item.value,
|
|
902
|
+
option: item,
|
|
903
|
+
cellValue,
|
|
904
|
+
row,
|
|
905
|
+
column,
|
|
906
|
+
$table: $xeTable
|
|
907
|
+
}));
|
|
908
|
+
}
|
|
909
|
+
return valueList.indexOf(_xeUtils.default.get(row, column.field)) > -1;
|
|
910
|
+
});
|
|
911
|
+
};
|
|
912
|
+
if (isRowGroupStatus) {
|
|
913
|
+
// 行分组
|
|
914
|
+
tableTree = _xeUtils.default.searchTree(tableFullGroupData, handleFilter, {
|
|
915
|
+
original: true,
|
|
916
|
+
isEvery: true,
|
|
917
|
+
children: rowGroupOpts.mapChildrenField,
|
|
918
|
+
mapChildren: rowGroupOpts.childrenField
|
|
919
|
+
});
|
|
920
|
+
tableData = tableTree;
|
|
921
|
+
} else if (treeConfig && transform) {
|
|
922
|
+
// 筛选虚拟树
|
|
923
|
+
tableTree = _xeUtils.default.searchTree(tableFullTreeData, handleFilter, {
|
|
924
|
+
original: true,
|
|
925
|
+
isEvery,
|
|
926
|
+
children: mapChildrenField,
|
|
927
|
+
mapChildren: childrenField
|
|
928
|
+
});
|
|
929
|
+
tableData = tableTree;
|
|
930
|
+
} else {
|
|
931
|
+
tableData = treeConfig ? tableFullTreeData.filter(handleFilter) : tableFullData.filter(handleFilter);
|
|
932
|
+
tableTree = tableData;
|
|
933
|
+
}
|
|
934
|
+
} else {
|
|
935
|
+
if (isRowGroupStatus) {
|
|
936
|
+
// 还原行分组
|
|
937
|
+
tableTree = _xeUtils.default.searchTree(tableFullGroupData, () => true, {
|
|
938
|
+
original: true,
|
|
939
|
+
isEvery: true,
|
|
940
|
+
children: rowGroupOpts.mapChildrenField,
|
|
941
|
+
mapChildren: rowGroupOpts.childrenField
|
|
942
|
+
});
|
|
943
|
+
tableData = tableTree;
|
|
944
|
+
} else if (treeConfig && transform) {
|
|
945
|
+
// 还原虚拟树
|
|
946
|
+
tableTree = _xeUtils.default.searchTree(tableFullTreeData, () => true, {
|
|
947
|
+
original: true,
|
|
948
|
+
isEvery,
|
|
949
|
+
children: mapChildrenField,
|
|
950
|
+
mapChildren: childrenField
|
|
951
|
+
});
|
|
952
|
+
tableData = tableTree;
|
|
953
|
+
} else {
|
|
954
|
+
tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0);
|
|
955
|
+
tableTree = tableData;
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
// 处理排序
|
|
959
|
+
// 支持单列、多列、组合排序
|
|
960
|
+
if (!allRemoteSort && orderColumns.length) {
|
|
961
|
+
if (isRowGroupStatus) {
|
|
962
|
+
// 行分组的排序
|
|
963
|
+
if (allSortMethod) {
|
|
964
|
+
const sortRests = allSortMethod({
|
|
965
|
+
data: tableTree,
|
|
966
|
+
sortList: orderColumns,
|
|
967
|
+
$table: $xeTable
|
|
968
|
+
});
|
|
969
|
+
tableTree = _xeUtils.default.isArray(sortRests) ? sortRests : tableTree;
|
|
970
|
+
} else {
|
|
971
|
+
const treeList = _xeUtils.default.toTreeArray(tableTree, {
|
|
972
|
+
key: rowGroupOpts.rowField,
|
|
973
|
+
parentKey: rowGroupOpts.parentField,
|
|
974
|
+
children: rowGroupOpts.mapChildrenField
|
|
975
|
+
});
|
|
976
|
+
tableTree = _xeUtils.default.toArrayTree(_xeUtils.default.orderBy(treeList, orderColumns.map(({
|
|
977
|
+
column,
|
|
978
|
+
order
|
|
979
|
+
}) => [getOrderField($xeTable, column), order])), {
|
|
980
|
+
key: rowGroupOpts.rowField,
|
|
981
|
+
parentKey: rowGroupOpts.parentField,
|
|
982
|
+
children: rowGroupOpts.childrenField,
|
|
983
|
+
mapChildren: rowGroupOpts.mapChildrenField
|
|
984
|
+
});
|
|
985
|
+
}
|
|
986
|
+
tableData = tableTree;
|
|
987
|
+
} else if (treeConfig && transform) {
|
|
988
|
+
// 虚拟树的排序
|
|
989
|
+
if (allSortMethod) {
|
|
990
|
+
const sortRests = allSortMethod({
|
|
991
|
+
data: tableTree,
|
|
992
|
+
sortList: orderColumns,
|
|
993
|
+
$table: $xeTable
|
|
994
|
+
});
|
|
995
|
+
tableTree = _xeUtils.default.isArray(sortRests) ? sortRests : tableTree;
|
|
996
|
+
} else {
|
|
997
|
+
const treeList = _xeUtils.default.toTreeArray(tableTree, {
|
|
998
|
+
children: mapChildrenField
|
|
999
|
+
});
|
|
1000
|
+
tableTree = _xeUtils.default.toArrayTree(_xeUtils.default.orderBy(treeList, orderColumns.map(({
|
|
1001
|
+
column,
|
|
1002
|
+
order
|
|
1003
|
+
}) => [getOrderField($xeTable, column), order])), {
|
|
1004
|
+
key: rowField,
|
|
1005
|
+
parentKey: parentField,
|
|
1006
|
+
children: childrenField,
|
|
1007
|
+
mapChildren: mapChildrenField
|
|
1008
|
+
});
|
|
1009
|
+
}
|
|
1010
|
+
tableData = tableTree;
|
|
1011
|
+
} else {
|
|
1012
|
+
if (allSortMethod) {
|
|
1013
|
+
const sortRests = allSortMethod({
|
|
1014
|
+
data: tableData,
|
|
1015
|
+
sortList: orderColumns,
|
|
1016
|
+
$table: $xeTable
|
|
1017
|
+
});
|
|
1018
|
+
tableData = _xeUtils.default.isArray(sortRests) ? sortRests : tableData;
|
|
1019
|
+
} else {
|
|
1020
|
+
// 兼容 v4
|
|
1021
|
+
if (sortMultiple) {
|
|
1022
|
+
tableData = _xeUtils.default.orderBy(tableData, orderColumns.map(({
|
|
1023
|
+
column,
|
|
1024
|
+
order
|
|
1025
|
+
}) => [getOrderField($xeTable, column), order]));
|
|
1026
|
+
} else {
|
|
1027
|
+
const firstOrderColumn = orderColumns[0];
|
|
1028
|
+
let sortByConfs;
|
|
1029
|
+
// 已废弃,兼容 v2,在 v4 中废弃, sortBy 不能为数组
|
|
1030
|
+
if (_xeUtils.default.isArray(firstOrderColumn.sortBy)) {
|
|
1031
|
+
sortByConfs = firstOrderColumn.sortBy.map(item => [item, firstOrderColumn.order]);
|
|
1032
|
+
}
|
|
1033
|
+
tableData = _xeUtils.default.orderBy(tableData, sortByConfs || [firstOrderColumn].map(({
|
|
1034
|
+
column,
|
|
1035
|
+
order
|
|
1036
|
+
}) => [getOrderField($xeTable, column), order]));
|
|
1037
|
+
}
|
|
1038
|
+
tableData = _xeUtils.default.orderBy(tableData, orderColumns.map(({
|
|
1039
|
+
column,
|
|
1040
|
+
order
|
|
1041
|
+
}) => [getOrderField($xeTable, column), order]));
|
|
1042
|
+
}
|
|
1043
|
+
tableTree = tableData;
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
} else {
|
|
1047
|
+
if (isRowGroupStatus) {
|
|
1048
|
+
// 还原行分组
|
|
1049
|
+
// 还原虚拟树
|
|
1050
|
+
tableTree = _xeUtils.default.searchTree(tableFullGroupData, () => true, {
|
|
1051
|
+
original: true,
|
|
1052
|
+
isEvery: true,
|
|
1053
|
+
children: rowGroupOpts.mapChildrenField,
|
|
1054
|
+
mapChildren: rowGroupOpts.childrenField
|
|
1055
|
+
});
|
|
1056
|
+
tableData = tableTree;
|
|
1057
|
+
} else if (treeConfig && transform) {
|
|
1058
|
+
// 还原虚拟树
|
|
1059
|
+
tableTree = _xeUtils.default.searchTree(tableFullTreeData, () => true, {
|
|
1060
|
+
original: true,
|
|
1061
|
+
isEvery,
|
|
1062
|
+
children: mapChildrenField,
|
|
1063
|
+
mapChildren: childrenField
|
|
1064
|
+
});
|
|
1065
|
+
tableData = tableTree;
|
|
1066
|
+
} else {
|
|
1067
|
+
tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0);
|
|
1068
|
+
tableTree = tableData;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
internalData.afterFullData = tableData;
|
|
1072
|
+
internalData.afterTreeFullData = tableTree;
|
|
1073
|
+
internalData.afterGroupFullData = tableTree;
|
|
1074
|
+
updateAfterDataIndex($xeTable);
|
|
1075
|
+
}
|
|
643
1076
|
function updateStyle($xeTable) {
|
|
644
1077
|
const props = $xeTable;
|
|
645
1078
|
const reactData = $xeTable;
|
|
@@ -1098,6 +1531,7 @@ function handleCheckedRadioRow($xeTable, row, isForce) {
|
|
|
1098
1531
|
checkMethod
|
|
1099
1532
|
} = radioOpts;
|
|
1100
1533
|
if (row && (isForce || !checkMethod || checkMethod({
|
|
1534
|
+
$table: $xeTable,
|
|
1101
1535
|
row
|
|
1102
1536
|
}))) {
|
|
1103
1537
|
reactData.selectRadioRow = row;
|
|
@@ -1120,12 +1554,18 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1120
1554
|
const {
|
|
1121
1555
|
treeConfig
|
|
1122
1556
|
} = props;
|
|
1557
|
+
const {
|
|
1558
|
+
isRowGroupStatus
|
|
1559
|
+
} = reactData;
|
|
1123
1560
|
const {
|
|
1124
1561
|
afterFullData,
|
|
1562
|
+
afterTreeFullData,
|
|
1563
|
+
afterGroupFullData,
|
|
1125
1564
|
checkboxReserveRowMap,
|
|
1126
1565
|
selectCheckboxMaps
|
|
1127
1566
|
} = internalData;
|
|
1128
1567
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
1568
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
1129
1569
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
1130
1570
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
1131
1571
|
const {
|
|
@@ -1140,12 +1580,13 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1140
1580
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
1141
1581
|
const selectRowMaps = {};
|
|
1142
1582
|
/**
|
|
1143
|
-
*
|
|
1583
|
+
* 绑定属性方式(有污染)
|
|
1144
1584
|
* 必须在行数据存在对应的属性,否则将不响应
|
|
1145
1585
|
*/
|
|
1146
1586
|
if (checkField) {
|
|
1147
1587
|
const checkValFn = row => {
|
|
1148
1588
|
if (isForce || !checkMethod || checkMethod({
|
|
1589
|
+
$table: $xeTable,
|
|
1149
1590
|
row
|
|
1150
1591
|
})) {
|
|
1151
1592
|
if (checked) {
|
|
@@ -1153,13 +1594,13 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1153
1594
|
}
|
|
1154
1595
|
_xeUtils.default.set(row, checkField, checked);
|
|
1155
1596
|
}
|
|
1156
|
-
if (treeConfig && indeterminateField) {
|
|
1597
|
+
if ((treeConfig || isRowGroupStatus) && indeterminateField) {
|
|
1157
1598
|
_xeUtils.default.set(row, indeterminateField, false);
|
|
1158
1599
|
}
|
|
1159
1600
|
};
|
|
1160
1601
|
// 如果存在选中方法
|
|
1161
1602
|
// 如果方法成立,则更新值,否则忽略该数据
|
|
1162
|
-
if (treeConfig) {
|
|
1603
|
+
if (treeConfig || isRowGroupStatus) {
|
|
1163
1604
|
_xeUtils.default.eachTree(afterFullData, checkValFn, {
|
|
1164
1605
|
children: childrenField
|
|
1165
1606
|
});
|
|
@@ -1168,17 +1609,54 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1168
1609
|
}
|
|
1169
1610
|
} else {
|
|
1170
1611
|
/**
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
if (
|
|
1612
|
+
* 默认方式(无污染)
|
|
1613
|
+
* 无需任何属性,直接绑定
|
|
1614
|
+
*/
|
|
1615
|
+
if (isRowGroupStatus) {
|
|
1175
1616
|
if (checked) {
|
|
1176
1617
|
/**
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
_xeUtils.default.eachTree(
|
|
1618
|
+
* 如果是行分组勾选
|
|
1619
|
+
* 如果方法成立,则添加到临时集合中
|
|
1620
|
+
*/
|
|
1621
|
+
_xeUtils.default.eachTree(afterGroupFullData, row => {
|
|
1181
1622
|
if (isForce || !checkMethod || checkMethod({
|
|
1623
|
+
$table: $xeTable,
|
|
1624
|
+
row
|
|
1625
|
+
})) {
|
|
1626
|
+
const rowid = handleGetRowId(row);
|
|
1627
|
+
selectRowMaps[rowid] = row;
|
|
1628
|
+
}
|
|
1629
|
+
}, {
|
|
1630
|
+
children: rowGroupOpts.mapChildrenField
|
|
1631
|
+
});
|
|
1632
|
+
} else {
|
|
1633
|
+
/**
|
|
1634
|
+
* 如果是树取消
|
|
1635
|
+
* 如果方法成立,则不添加到临时集合中
|
|
1636
|
+
*/
|
|
1637
|
+
if (!isForce && checkMethod) {
|
|
1638
|
+
_xeUtils.default.eachTree(afterGroupFullData, row => {
|
|
1639
|
+
const rowid = handleGetRowId(row);
|
|
1640
|
+
if (checkMethod({
|
|
1641
|
+
$table: $xeTable,
|
|
1642
|
+
row
|
|
1643
|
+
}) ? false : selectCheckboxMaps[rowid]) {
|
|
1644
|
+
selectRowMaps[rowid] = row;
|
|
1645
|
+
}
|
|
1646
|
+
}, {
|
|
1647
|
+
children: rowGroupOpts.mapChildrenField
|
|
1648
|
+
});
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
} else if (treeConfig) {
|
|
1652
|
+
if (checked) {
|
|
1653
|
+
/**
|
|
1654
|
+
* 如果是树勾选
|
|
1655
|
+
* 如果方法成立,则添加到临时集合中
|
|
1656
|
+
*/
|
|
1657
|
+
_xeUtils.default.eachTree(afterTreeFullData, row => {
|
|
1658
|
+
if (isForce || !checkMethod || checkMethod({
|
|
1659
|
+
$table: $xeTable,
|
|
1182
1660
|
row
|
|
1183
1661
|
})) {
|
|
1184
1662
|
const rowid = handleGetRowId(row);
|
|
@@ -1189,15 +1667,16 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1189
1667
|
});
|
|
1190
1668
|
} else {
|
|
1191
1669
|
/**
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1670
|
+
* 如果是树取消
|
|
1671
|
+
* 如果方法成立,则不添加到临时集合中
|
|
1672
|
+
*/
|
|
1195
1673
|
if (!isForce && checkMethod) {
|
|
1196
|
-
_xeUtils.default.eachTree(
|
|
1674
|
+
_xeUtils.default.eachTree(afterTreeFullData, row => {
|
|
1197
1675
|
const rowid = handleGetRowId(row);
|
|
1198
1676
|
if (checkMethod({
|
|
1677
|
+
$table: $xeTable,
|
|
1199
1678
|
row
|
|
1200
|
-
}) ?
|
|
1679
|
+
}) ? false : selectCheckboxMaps[rowid]) {
|
|
1201
1680
|
selectRowMaps[rowid] = row;
|
|
1202
1681
|
}
|
|
1203
1682
|
}, {
|
|
@@ -1208,14 +1687,15 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1208
1687
|
} else {
|
|
1209
1688
|
if (checked) {
|
|
1210
1689
|
/**
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1690
|
+
* 如果是行勾选
|
|
1691
|
+
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
1692
|
+
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
1693
|
+
*/
|
|
1215
1694
|
if (!isForce && checkMethod) {
|
|
1216
1695
|
afterFullData.forEach(row => {
|
|
1217
1696
|
const rowid = handleGetRowId(row);
|
|
1218
1697
|
if (selectCheckboxMaps[rowid] || checkMethod({
|
|
1698
|
+
$table: $xeTable,
|
|
1219
1699
|
row
|
|
1220
1700
|
})) {
|
|
1221
1701
|
selectRowMaps[rowid] = row;
|
|
@@ -1229,16 +1709,17 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
|
1229
1709
|
}
|
|
1230
1710
|
} else {
|
|
1231
1711
|
/**
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1712
|
+
* 如果是行取消
|
|
1713
|
+
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
1714
|
+
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
1715
|
+
*/
|
|
1236
1716
|
if (!isForce && checkMethod) {
|
|
1237
1717
|
afterFullData.forEach(row => {
|
|
1238
1718
|
const rowid = handleGetRowId(row);
|
|
1239
1719
|
if (checkMethod({
|
|
1720
|
+
$table: $xeTable,
|
|
1240
1721
|
row
|
|
1241
|
-
}) ?
|
|
1722
|
+
}) ? false : selectCheckboxMaps[rowid]) {
|
|
1242
1723
|
selectRowMaps[rowid] = row;
|
|
1243
1724
|
}
|
|
1244
1725
|
});
|
|
@@ -2113,9 +2594,11 @@ function updateRowDropTipContent($xeTable, tdEl) {
|
|
|
2113
2594
|
const rTooltipMethod = tooltipMethod || (dragConfig ? dragConfig.rowTooltipMethod : null);
|
|
2114
2595
|
let tipContent = '';
|
|
2115
2596
|
if (rTooltipMethod) {
|
|
2116
|
-
|
|
2597
|
+
const rtParams = {
|
|
2598
|
+
$table: $xeTable,
|
|
2117
2599
|
row: dragRow
|
|
2118
|
-
}
|
|
2600
|
+
};
|
|
2601
|
+
tipContent = `${rTooltipMethod(rtParams) || ''}`;
|
|
2119
2602
|
} else {
|
|
2120
2603
|
tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
|
|
2121
2604
|
}
|
|
@@ -2155,9 +2638,11 @@ function updateColDropTipContent($xeTable, tdEl) {
|
|
|
2155
2638
|
} = columnDragOpts;
|
|
2156
2639
|
let tipContent = '';
|
|
2157
2640
|
if (tooltipMethod) {
|
|
2158
|
-
|
|
2641
|
+
const dtParams = {
|
|
2642
|
+
$table: $xeTable,
|
|
2159
2643
|
column: dragCol
|
|
2160
|
-
}
|
|
2644
|
+
};
|
|
2645
|
+
tipContent = `${tooltipMethod(dtParams) || ''}`;
|
|
2161
2646
|
} else {
|
|
2162
2647
|
tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
|
|
2163
2648
|
}
|
|
@@ -2489,8 +2974,275 @@ function handleRecalculateLayout($xeTable, reFull) {
|
|
|
2489
2974
|
}
|
|
2490
2975
|
});
|
|
2491
2976
|
}
|
|
2492
|
-
|
|
2493
|
-
|
|
2977
|
+
const handleUpdateRowGroup = ($xeTable, groupFields) => {
|
|
2978
|
+
const reactData = $xeTable;
|
|
2979
|
+
reactData.rowGroupList = groupFields ? (_xeUtils.default.isArray(groupFields) ? groupFields : [groupFields]).map(field => {
|
|
2980
|
+
return {
|
|
2981
|
+
field
|
|
2982
|
+
};
|
|
2983
|
+
}) : [];
|
|
2984
|
+
};
|
|
2985
|
+
function handleGroupData($xeTable, list, rowGroups) {
|
|
2986
|
+
let fullData = list;
|
|
2987
|
+
let treeData = list;
|
|
2988
|
+
if (rowGroups) {
|
|
2989
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
2990
|
+
const {
|
|
2991
|
+
rowField,
|
|
2992
|
+
parentField,
|
|
2993
|
+
childrenField,
|
|
2994
|
+
mapChildrenField
|
|
2995
|
+
} = rowGroupOpts;
|
|
2996
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
2997
|
+
const {
|
|
2998
|
+
checkField
|
|
2999
|
+
} = checkboxOpts;
|
|
3000
|
+
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
3001
|
+
const rgItem = rowGroups[0];
|
|
3002
|
+
if (rgItem && rowField && parentField && childrenField && mapChildrenField) {
|
|
3003
|
+
fullData = [];
|
|
3004
|
+
treeData = [];
|
|
3005
|
+
const groupField = rgItem.field;
|
|
3006
|
+
const groupColumn = $xeTable.getColumnByField(groupField);
|
|
3007
|
+
const groupMaps = {};
|
|
3008
|
+
const rowkey = (0, _util.getRowkey)($xeTable);
|
|
3009
|
+
list.forEach(row => {
|
|
3010
|
+
const cellValue = groupColumn ? $xeTable.getCellLabel(row, groupColumn) : _xeUtils.default.get(row, groupField);
|
|
3011
|
+
const groupValue = _xeUtils.default.eqNull(cellValue) ? '' : cellValue;
|
|
3012
|
+
let childList = groupMaps[groupValue];
|
|
3013
|
+
if (!childList) {
|
|
3014
|
+
childList = [];
|
|
3015
|
+
groupMaps[groupValue] = childList;
|
|
3016
|
+
}
|
|
3017
|
+
if (row.isAggregate) {
|
|
3018
|
+
row.isAggregate = undefined;
|
|
3019
|
+
}
|
|
3020
|
+
childList.push(row);
|
|
3021
|
+
});
|
|
3022
|
+
_xeUtils.default.objectEach(groupMaps, (childList, groupValue) => {
|
|
3023
|
+
const {
|
|
3024
|
+
fullData: childFullData,
|
|
3025
|
+
treeData: childTreeData
|
|
3026
|
+
} = handleGroupData($xeTable, childList, rowGroups.slice(1));
|
|
3027
|
+
const groupRow = {
|
|
3028
|
+
isAggregate: true,
|
|
3029
|
+
groupContent: groupValue,
|
|
3030
|
+
groupField,
|
|
3031
|
+
[rowField]: (0, _util.getRowUniqueId)(),
|
|
3032
|
+
[parentField]: null,
|
|
3033
|
+
[rowkey]: (0, _util.getRowUniqueId)(),
|
|
3034
|
+
[childrenField]: childTreeData,
|
|
3035
|
+
[mapChildrenField]: childTreeData
|
|
3036
|
+
};
|
|
3037
|
+
if (checkField) {
|
|
3038
|
+
groupRow[checkField] = false;
|
|
3039
|
+
}
|
|
3040
|
+
if (indeterminateField) {
|
|
3041
|
+
groupRow[indeterminateField] = false;
|
|
3042
|
+
}
|
|
3043
|
+
treeData.push(groupRow);
|
|
3044
|
+
fullData.push(groupRow);
|
|
3045
|
+
if (childFullData.length) {
|
|
3046
|
+
fullData.push(...childFullData);
|
|
3047
|
+
}
|
|
3048
|
+
});
|
|
3049
|
+
}
|
|
3050
|
+
}
|
|
3051
|
+
return {
|
|
3052
|
+
treeData,
|
|
3053
|
+
fullData
|
|
3054
|
+
};
|
|
3055
|
+
}
|
|
3056
|
+
/**
|
|
3057
|
+
* 加载表格数据
|
|
3058
|
+
* @param {Array} datas 数据
|
|
3059
|
+
*/
|
|
3060
|
+
function loadTableData($xeTable, datas, isReset) {
|
|
3061
|
+
const props = $xeTable;
|
|
3062
|
+
const reactData = $xeTable;
|
|
3063
|
+
const internalData = $xeTable;
|
|
3064
|
+
const {
|
|
3065
|
+
keepSource,
|
|
3066
|
+
treeConfig,
|
|
3067
|
+
rowGroupConfig
|
|
3068
|
+
} = props;
|
|
3069
|
+
const {
|
|
3070
|
+
rowGroupList,
|
|
3071
|
+
scrollYLoad: oldScrollYLoad
|
|
3072
|
+
} = reactData;
|
|
3073
|
+
const {
|
|
3074
|
+
scrollYStore,
|
|
3075
|
+
scrollXStore,
|
|
3076
|
+
lastScrollLeft,
|
|
3077
|
+
lastScrollTop
|
|
3078
|
+
} = internalData;
|
|
3079
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
3080
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
3081
|
+
const expandOpts = $xeTable.computeExpandOpts;
|
|
3082
|
+
const {
|
|
3083
|
+
transform
|
|
3084
|
+
} = treeOpts;
|
|
3085
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
3086
|
+
let treeData = [];
|
|
3087
|
+
let fullData = datas ? datas.slice(0) : []; // 转为响应式数据
|
|
3088
|
+
if (fullData.length > supportMaxRow) {
|
|
3089
|
+
(0, _log.errLog)('vxe.error.errMaxRow', [supportMaxRow]);
|
|
3090
|
+
}
|
|
3091
|
+
if (treeConfig && rowGroupList.length) {
|
|
3092
|
+
(0, _log.errLog)('vxe.error.noTree', ['row-group-config']);
|
|
3093
|
+
return $xeTable.$nextTick();
|
|
3094
|
+
}
|
|
3095
|
+
if (rowOpts.drag && rowGroupList.length) {
|
|
3096
|
+
(0, _log.errLog)('vxe.error.errConflicts', ['row-config.drag', 'row-group-config']);
|
|
3097
|
+
return $xeTable.$nextTick();
|
|
3098
|
+
}
|
|
3099
|
+
let isRGroup = false;
|
|
3100
|
+
if (treeConfig) {
|
|
3101
|
+
if (transform) {
|
|
3102
|
+
// 树结构自动转换
|
|
3103
|
+
if (!treeOpts.rowField) {
|
|
3104
|
+
(0, _log.errLog)('vxe.error.reqProp', ['tree-config.rowField']);
|
|
3105
|
+
}
|
|
3106
|
+
if (!treeOpts.parentField) {
|
|
3107
|
+
(0, _log.errLog)('vxe.error.reqProp', ['tree-config.parentField']);
|
|
3108
|
+
}
|
|
3109
|
+
if (!childrenField) {
|
|
3110
|
+
(0, _log.errLog)('vxe.error.reqProp', ['tree-config.childrenField']);
|
|
3111
|
+
}
|
|
3112
|
+
if (!treeOpts.mapChildrenField) {
|
|
3113
|
+
(0, _log.errLog)('vxe.error.reqProp', ['tree-config.mapChildrenField']);
|
|
3114
|
+
}
|
|
3115
|
+
if (childrenField === treeOpts.mapChildrenField) {
|
|
3116
|
+
(0, _log.errLog)('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
|
|
3117
|
+
}
|
|
3118
|
+
// fullData.forEach(row => {
|
|
3119
|
+
// if (row[treeOpts.children] && row[treeOpts.children].length) {
|
|
3120
|
+
// warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
|
|
3121
|
+
// }
|
|
3122
|
+
// })
|
|
3123
|
+
treeData = _xeUtils.default.toArrayTree(fullData, {
|
|
3124
|
+
key: treeOpts.rowField,
|
|
3125
|
+
parentKey: treeOpts.parentField,
|
|
3126
|
+
children: childrenField,
|
|
3127
|
+
mapChildren: treeOpts.mapChildrenField
|
|
3128
|
+
});
|
|
3129
|
+
fullData = treeData.slice(0);
|
|
3130
|
+
} else {
|
|
3131
|
+
treeData = fullData.slice(0);
|
|
3132
|
+
}
|
|
3133
|
+
} else if (rowGroupConfig && rowGroupList.length) {
|
|
3134
|
+
const groupRest = handleGroupData($xeTable, fullData, rowGroupList);
|
|
3135
|
+
treeData = groupRest.treeData;
|
|
3136
|
+
fullData = groupRest.fullData;
|
|
3137
|
+
isRGroup = true;
|
|
3138
|
+
}
|
|
3139
|
+
reactData.isRowGroupStatus = isRGroup;
|
|
3140
|
+
scrollYStore.startIndex = 0;
|
|
3141
|
+
scrollYStore.endIndex = 1;
|
|
3142
|
+
scrollXStore.startIndex = 0;
|
|
3143
|
+
scrollXStore.endIndex = 1;
|
|
3144
|
+
reactData.isRowLoading = true;
|
|
3145
|
+
reactData.scrollVMLoading = false;
|
|
3146
|
+
internalData.insertRowMaps = {};
|
|
3147
|
+
internalData.removeRowMaps = {};
|
|
3148
|
+
const sYLoad = updateScrollYStatus($xeTable, fullData);
|
|
3149
|
+
reactData.isDragColMove = false;
|
|
3150
|
+
reactData.isDragRowMove = false;
|
|
3151
|
+
// 全量数据
|
|
3152
|
+
internalData.tableFullData = fullData;
|
|
3153
|
+
internalData.tableFullTreeData = isRGroup ? [] : treeData;
|
|
3154
|
+
internalData.tableFullGroupData = isRGroup ? treeData : [];
|
|
3155
|
+
// 缓存数据
|
|
3156
|
+
$xeTable.cacheRowMap(isReset);
|
|
3157
|
+
// 原始数据
|
|
3158
|
+
internalData.tableSynchData = datas;
|
|
3159
|
+
if (isReset) {
|
|
3160
|
+
internalData.isResizeCellHeight = false;
|
|
3161
|
+
}
|
|
3162
|
+
// 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
3163
|
+
if (keepSource) {
|
|
3164
|
+
$xeTable.cacheSourceMap(fullData);
|
|
3165
|
+
}
|
|
3166
|
+
if ($xeTable.clearCellAreas && props.mouseConfig) {
|
|
3167
|
+
$xeTable.clearCellAreas();
|
|
3168
|
+
$xeTable.clearCopyCellArea();
|
|
3169
|
+
}
|
|
3170
|
+
$xeTable.clearMergeCells();
|
|
3171
|
+
$xeTable.clearMergeFooterItems();
|
|
3172
|
+
$xeTable.handleTableData(true);
|
|
3173
|
+
$xeTable.updateFooter();
|
|
3174
|
+
$xeTable.handleUpdateBodyMerge();
|
|
3175
|
+
return $xeTable.$nextTick().then(() => {
|
|
3176
|
+
updateHeight($xeTable);
|
|
3177
|
+
updateStyle($xeTable);
|
|
3178
|
+
}).then(() => {
|
|
3179
|
+
computeScrollLoad($xeTable);
|
|
3180
|
+
}).then(() => {
|
|
3181
|
+
// 是否启用了虚拟滚动
|
|
3182
|
+
if (sYLoad) {
|
|
3183
|
+
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
3184
|
+
}
|
|
3185
|
+
if (sYLoad) {
|
|
3186
|
+
if (reactData.expandColumn && expandOpts.mode !== 'fixed') {
|
|
3187
|
+
(0, _log.errLog)('vxe.error.notConflictProp', ['column.type="expand', 'expand-config.mode="fixed"']);
|
|
3188
|
+
}
|
|
3189
|
+
// if (showOverflow) {
|
|
3190
|
+
// if (!rowOpts.height) {
|
|
3191
|
+
// const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
|
|
3192
|
+
// if (errColumn) {
|
|
3193
|
+
// errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
|
|
3194
|
+
// }
|
|
3195
|
+
// }
|
|
3196
|
+
// }
|
|
3197
|
+
if (!(props.height || props.maxHeight)) {
|
|
3198
|
+
(0, _log.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
|
|
3199
|
+
}
|
|
3200
|
+
// if (!props.showOverflow) {
|
|
3201
|
+
// warnLog('vxe.error.reqProp', ['table.show-overflow'])
|
|
3202
|
+
// }
|
|
3203
|
+
if (props.spanMethod) {
|
|
3204
|
+
(0, _log.errLog)('vxe.error.scrollErrProp', ['table.span-method']);
|
|
3205
|
+
}
|
|
3206
|
+
}
|
|
3207
|
+
handleReserveStatus($xeTable);
|
|
3208
|
+
$xeTable.checkSelectionStatus();
|
|
3209
|
+
return new Promise(resolve => {
|
|
3210
|
+
$xeTable.$nextTick().then(() => handleRecalculateLayout($xeTable, false)).then(() => {
|
|
3211
|
+
calcCellHeight($xeTable);
|
|
3212
|
+
updateRowOffsetTop($xeTable);
|
|
3213
|
+
return handleRecalculateLayout($xeTable, false);
|
|
3214
|
+
}).then(() => {
|
|
3215
|
+
let targetScrollLeft = lastScrollLeft;
|
|
3216
|
+
let targetScrollTop = lastScrollTop;
|
|
3217
|
+
const virtualXOpts = $xeTable.computeVirtualXOpts;
|
|
3218
|
+
const virtualYOpts = $xeTable.computeVirtualYOpts;
|
|
3219
|
+
// 是否在更新数据之后自动滚动重置滚动条
|
|
3220
|
+
if (virtualXOpts.scrollToLeftOnChange) {
|
|
3221
|
+
targetScrollLeft = 0;
|
|
3222
|
+
}
|
|
3223
|
+
if (virtualYOpts.scrollToTopOnChange) {
|
|
3224
|
+
targetScrollTop = 0;
|
|
3225
|
+
}
|
|
3226
|
+
reactData.isRowLoading = false;
|
|
3227
|
+
handleRecalculateLayout($xeTable, false);
|
|
3228
|
+
// 是否变更虚拟滚动
|
|
3229
|
+
if (oldScrollYLoad === sYLoad) {
|
|
3230
|
+
(0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
|
|
3231
|
+
resolve();
|
|
3232
|
+
});
|
|
3233
|
+
} else {
|
|
3234
|
+
setTimeout(() => {
|
|
3235
|
+
(0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
|
|
3236
|
+
resolve();
|
|
3237
|
+
});
|
|
3238
|
+
});
|
|
3239
|
+
}
|
|
3240
|
+
});
|
|
3241
|
+
});
|
|
3242
|
+
});
|
|
3243
|
+
}
|
|
3244
|
+
/**
|
|
3245
|
+
* 处理数据加载默认行为
|
|
2494
3246
|
* 默认执行一次,除非被重置
|
|
2495
3247
|
*/
|
|
2496
3248
|
function handleLoadDefaults($xeTable) {
|
|
@@ -3246,16 +3998,23 @@ const Methods = {
|
|
|
3246
3998
|
clearAll() {
|
|
3247
3999
|
return (0, _util.clearTableAllStatus)(this);
|
|
3248
4000
|
},
|
|
4001
|
+
handleUpdateRowGroup(groupFields) {
|
|
4002
|
+
const $xeTable = this;
|
|
4003
|
+
handleUpdateRowGroup($xeTable, groupFields);
|
|
4004
|
+
},
|
|
3249
4005
|
/**
|
|
3250
4006
|
* 同步 data 数据(即将废弃)
|
|
3251
4007
|
* 如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
|
|
3252
4008
|
* 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
|
|
3253
4009
|
*/
|
|
3254
4010
|
syncData() {
|
|
4011
|
+
const $xeTable = this;
|
|
4012
|
+
const reactData = $xeTable;
|
|
4013
|
+
const internalData = $xeTable;
|
|
3255
4014
|
(0, _log.errLog)('vxe.error.delFunc', ['syncData', 'getData']);
|
|
3256
|
-
return
|
|
3257
|
-
|
|
3258
|
-
return
|
|
4015
|
+
return $xeTable.$nextTick().then(() => {
|
|
4016
|
+
reactData.tableData = [];
|
|
4017
|
+
return $xeTable.$nextTick().then(() => loadTableData($xeTable, internalData.tableFullData, true));
|
|
3259
4018
|
});
|
|
3260
4019
|
},
|
|
3261
4020
|
/**
|
|
@@ -3303,23 +4062,23 @@ const Methods = {
|
|
|
3303
4062
|
// 是否进行数据处理
|
|
3304
4063
|
if (force) {
|
|
3305
4064
|
// 更新数据,处理筛选和排序
|
|
3306
|
-
|
|
4065
|
+
updateAfterFullData($xeTable);
|
|
3307
4066
|
// 如果为虚拟树,将树结构拍平
|
|
3308
4067
|
fullList = handleVirtualTreeToList($xeTable);
|
|
3309
4068
|
}
|
|
3310
4069
|
const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
|
|
3311
4070
|
const visibleDataRowIdMaps = {};
|
|
3312
4071
|
tableData.forEach((row, $index) => {
|
|
3313
|
-
const rowid = (0, _util.getRowid)(
|
|
4072
|
+
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
3314
4073
|
const rest = fullDataRowIdData[rowid];
|
|
3315
4074
|
if (rest) {
|
|
3316
4075
|
rest.$index = $index;
|
|
3317
4076
|
}
|
|
3318
4077
|
visibleDataRowIdMaps[rowid] = row;
|
|
3319
4078
|
});
|
|
3320
|
-
|
|
4079
|
+
reactData.tableData = tableData;
|
|
3321
4080
|
internalData.visibleDataRowIdData = visibleDataRowIdMaps;
|
|
3322
|
-
return
|
|
4081
|
+
return $xeTable.$nextTick();
|
|
3323
4082
|
},
|
|
3324
4083
|
/**
|
|
3325
4084
|
* 加载表格数据
|
|
@@ -3327,169 +4086,7 @@ const Methods = {
|
|
|
3327
4086
|
*/
|
|
3328
4087
|
loadTableData(datas, isReset) {
|
|
3329
4088
|
const $xeTable = this;
|
|
3330
|
-
|
|
3331
|
-
const reactData = $xeTable;
|
|
3332
|
-
const internalData = $xeTable;
|
|
3333
|
-
const {
|
|
3334
|
-
keepSource,
|
|
3335
|
-
treeConfig
|
|
3336
|
-
} = props;
|
|
3337
|
-
const {
|
|
3338
|
-
scrollYLoad: oldScrollYLoad
|
|
3339
|
-
} = reactData;
|
|
3340
|
-
const {
|
|
3341
|
-
scrollYStore,
|
|
3342
|
-
scrollXStore,
|
|
3343
|
-
lastScrollLeft,
|
|
3344
|
-
lastScrollTop
|
|
3345
|
-
} = internalData;
|
|
3346
|
-
const treeOpts = $xeTable.computeTreeOpts;
|
|
3347
|
-
const expandOpts = $xeTable.computeExpandOpts;
|
|
3348
|
-
const {
|
|
3349
|
-
transform
|
|
3350
|
-
} = treeOpts;
|
|
3351
|
-
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
3352
|
-
let treeData = [];
|
|
3353
|
-
let fullData = datas ? datas.slice(0) : [];
|
|
3354
|
-
if (fullData.length > supportMaxRow) {
|
|
3355
|
-
(0, _log.errLog)('vxe.error.errMaxRow', [supportMaxRow]);
|
|
3356
|
-
}
|
|
3357
|
-
if (treeConfig) {
|
|
3358
|
-
// 树结构自动转换
|
|
3359
|
-
if (transform) {
|
|
3360
|
-
if (!treeOpts.rowField) {
|
|
3361
|
-
(0, _log.errLog)('vxe.error.reqProp', ['table.tree-config.rowField']);
|
|
3362
|
-
}
|
|
3363
|
-
if (!treeOpts.parentField) {
|
|
3364
|
-
(0, _log.errLog)('vxe.error.reqProp', ['table.tree-config.parentField']);
|
|
3365
|
-
}
|
|
3366
|
-
if (!childrenField) {
|
|
3367
|
-
(0, _log.errLog)('vxe.error.reqProp', ['tree-config.childrenField']);
|
|
3368
|
-
}
|
|
3369
|
-
if (!treeOpts.mapChildrenField) {
|
|
3370
|
-
(0, _log.errLog)('vxe.error.reqProp', ['tree-config.mapChildrenField']);
|
|
3371
|
-
}
|
|
3372
|
-
if (childrenField === treeOpts.mapChildrenField) {
|
|
3373
|
-
(0, _log.errLog)('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
|
|
3374
|
-
}
|
|
3375
|
-
// fullData.forEach(row => {
|
|
3376
|
-
// if (row[childrenField] && row[childrenField].length) {
|
|
3377
|
-
// warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${childrenField}`])
|
|
3378
|
-
// }
|
|
3379
|
-
// })
|
|
3380
|
-
treeData = _xeUtils.default.toArrayTree(fullData, {
|
|
3381
|
-
key: treeOpts.rowField,
|
|
3382
|
-
parentKey: treeOpts.parentField,
|
|
3383
|
-
children: childrenField,
|
|
3384
|
-
mapChildren: treeOpts.mapChildrenField
|
|
3385
|
-
});
|
|
3386
|
-
fullData = treeData.slice(0);
|
|
3387
|
-
} else {
|
|
3388
|
-
treeData = fullData.slice(0);
|
|
3389
|
-
}
|
|
3390
|
-
}
|
|
3391
|
-
scrollYStore.startIndex = 0;
|
|
3392
|
-
scrollYStore.endIndex = 1;
|
|
3393
|
-
scrollXStore.startIndex = 0;
|
|
3394
|
-
scrollXStore.endIndex = 1;
|
|
3395
|
-
reactData.isRowLoading = true;
|
|
3396
|
-
reactData.scrollVMLoading = false;
|
|
3397
|
-
internalData.insertRowMaps = {};
|
|
3398
|
-
internalData.removeRowMaps = {};
|
|
3399
|
-
const sYLoad = updateScrollYStatus($xeTable, fullData);
|
|
3400
|
-
reactData.isDragColMove = false;
|
|
3401
|
-
reactData.isDragRowMove = false;
|
|
3402
|
-
// 全量数据
|
|
3403
|
-
internalData.tableFullData = fullData;
|
|
3404
|
-
internalData.tableFullTreeData = treeData;
|
|
3405
|
-
// 缓存数据
|
|
3406
|
-
$xeTable.cacheRowMap(isReset);
|
|
3407
|
-
// 原始数据
|
|
3408
|
-
internalData.tableSynchData = datas;
|
|
3409
|
-
if (isReset) {
|
|
3410
|
-
internalData.isResizeCellHeight = false;
|
|
3411
|
-
}
|
|
3412
|
-
// 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
3413
|
-
if (keepSource) {
|
|
3414
|
-
$xeTable.cacheSourceMap(fullData);
|
|
3415
|
-
}
|
|
3416
|
-
if ($xeTable.clearCellAreas && props.mouseConfig) {
|
|
3417
|
-
$xeTable.clearCellAreas();
|
|
3418
|
-
$xeTable.clearCopyCellArea();
|
|
3419
|
-
}
|
|
3420
|
-
$xeTable.clearMergeCells();
|
|
3421
|
-
$xeTable.clearMergeFooterItems();
|
|
3422
|
-
$xeTable.handleTableData(true);
|
|
3423
|
-
$xeTable.updateFooter();
|
|
3424
|
-
$xeTable.handleUpdateBodyMerge();
|
|
3425
|
-
return $xeTable.$nextTick().then(() => {
|
|
3426
|
-
updateHeight($xeTable);
|
|
3427
|
-
updateStyle($xeTable);
|
|
3428
|
-
}).then(() => {
|
|
3429
|
-
computeScrollLoad($xeTable);
|
|
3430
|
-
}).then(() => {
|
|
3431
|
-
// 是否启用了虚拟滚动
|
|
3432
|
-
if (sYLoad) {
|
|
3433
|
-
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
3434
|
-
}
|
|
3435
|
-
if (sYLoad) {
|
|
3436
|
-
if (reactData.expandColumn && expandOpts.mode !== 'fixed') {
|
|
3437
|
-
(0, _log.errLog)('vxe.error.notConflictProp', ['column.type="expand', 'expand-config.mode="fixed"']);
|
|
3438
|
-
}
|
|
3439
|
-
// if (showOverflow) {
|
|
3440
|
-
// if (!rowOpts.height) {
|
|
3441
|
-
// const errColumn = internalData.tableFullColumn.find((column: any) => column.showOverflow === false)
|
|
3442
|
-
// if (errColumn) {
|
|
3443
|
-
// errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
|
|
3444
|
-
// }
|
|
3445
|
-
// }
|
|
3446
|
-
// }
|
|
3447
|
-
if (!(props.height || props.maxHeight)) {
|
|
3448
|
-
(0, _log.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
|
|
3449
|
-
}
|
|
3450
|
-
// if (!props.showOverflow) {
|
|
3451
|
-
// warnLog('vxe.error.reqProp', ['table.show-overflow'])
|
|
3452
|
-
// }
|
|
3453
|
-
if (props.spanMethod) {
|
|
3454
|
-
(0, _log.errLog)('vxe.error.scrollErrProp', ['table.span-method']);
|
|
3455
|
-
}
|
|
3456
|
-
}
|
|
3457
|
-
handleReserveStatus($xeTable);
|
|
3458
|
-
$xeTable.checkSelectionStatus();
|
|
3459
|
-
return new Promise(resolve => {
|
|
3460
|
-
this.$nextTick().then(() => handleRecalculateLayout($xeTable, false)).then(() => {
|
|
3461
|
-
calcCellHeight($xeTable);
|
|
3462
|
-
updateRowOffsetTop($xeTable);
|
|
3463
|
-
return handleRecalculateLayout($xeTable, false);
|
|
3464
|
-
}).then(() => {
|
|
3465
|
-
let targetScrollLeft = lastScrollLeft;
|
|
3466
|
-
let targetScrollTop = lastScrollTop;
|
|
3467
|
-
const virtualXOpts = $xeTable.computeVirtualXOpts;
|
|
3468
|
-
const virtualYOpts = $xeTable.computeVirtualYOpts;
|
|
3469
|
-
// 是否在更新数据之后自动滚动重置滚动条
|
|
3470
|
-
if (virtualXOpts.scrollToLeftOnChange) {
|
|
3471
|
-
targetScrollLeft = 0;
|
|
3472
|
-
}
|
|
3473
|
-
if (virtualYOpts.scrollToTopOnChange) {
|
|
3474
|
-
targetScrollTop = 0;
|
|
3475
|
-
}
|
|
3476
|
-
reactData.isRowLoading = false;
|
|
3477
|
-
handleRecalculateLayout($xeTable, false);
|
|
3478
|
-
// 是否变更虚拟滚动
|
|
3479
|
-
if (oldScrollYLoad === sYLoad) {
|
|
3480
|
-
(0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
|
|
3481
|
-
resolve();
|
|
3482
|
-
});
|
|
3483
|
-
} else {
|
|
3484
|
-
setTimeout(() => {
|
|
3485
|
-
(0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
|
|
3486
|
-
resolve();
|
|
3487
|
-
});
|
|
3488
|
-
});
|
|
3489
|
-
}
|
|
3490
|
-
});
|
|
3491
|
-
});
|
|
3492
|
-
});
|
|
4089
|
+
return loadTableData($xeTable, datas, isReset);
|
|
3493
4090
|
},
|
|
3494
4091
|
/**
|
|
3495
4092
|
* 重新加载数据,不会清空表格状态
|
|
@@ -3500,7 +4097,7 @@ const Methods = {
|
|
|
3500
4097
|
const {
|
|
3501
4098
|
initStatus
|
|
3502
4099
|
} = this;
|
|
3503
|
-
return
|
|
4100
|
+
return loadTableData($xeTable, datas, false).then(() => {
|
|
3504
4101
|
this.inited = true;
|
|
3505
4102
|
this.initStatus = true;
|
|
3506
4103
|
if (!initStatus) {
|
|
@@ -3518,7 +4115,7 @@ const Methods = {
|
|
|
3518
4115
|
return this.clearAll().then(() => {
|
|
3519
4116
|
this.inited = true;
|
|
3520
4117
|
this.initStatus = true;
|
|
3521
|
-
return
|
|
4118
|
+
return loadTableData($xeTable, datas, true);
|
|
3522
4119
|
}).then(() => {
|
|
3523
4120
|
handleLoadDefaults($xeTable);
|
|
3524
4121
|
return this.recalculate();
|
|
@@ -3608,18 +4205,16 @@ const Methods = {
|
|
|
3608
4205
|
const {
|
|
3609
4206
|
treeConfig
|
|
3610
4207
|
} = props;
|
|
4208
|
+
const {
|
|
4209
|
+
isRowGroupStatus
|
|
4210
|
+
} = reactData;
|
|
3611
4211
|
const {
|
|
3612
4212
|
fullAllDataRowIdData,
|
|
3613
4213
|
tableFullData,
|
|
3614
4214
|
tableFullTreeData,
|
|
4215
|
+
tableFullGroupData,
|
|
3615
4216
|
treeExpandedMaps
|
|
3616
4217
|
} = internalData;
|
|
3617
|
-
const treeOpts = $xeTable.computeTreeOpts;
|
|
3618
|
-
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
3619
|
-
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
3620
|
-
const {
|
|
3621
|
-
lazy
|
|
3622
|
-
} = treeOpts;
|
|
3623
4218
|
const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
3624
4219
|
const fullDataRowIdMaps = {};
|
|
3625
4220
|
const {
|
|
@@ -3657,6 +4252,12 @@ const Methods = {
|
|
|
3657
4252
|
fullAllDataRowIdMaps[rowid] = rowRest;
|
|
3658
4253
|
};
|
|
3659
4254
|
if (treeConfig) {
|
|
4255
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
4256
|
+
const {
|
|
4257
|
+
lazy
|
|
4258
|
+
} = treeOpts;
|
|
4259
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4260
|
+
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
3660
4261
|
_xeUtils.default.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
|
|
3661
4262
|
const rowid = handleUpdateRowId(row);
|
|
3662
4263
|
if (treeConfig && lazy) {
|
|
@@ -3673,6 +4274,17 @@ const Methods = {
|
|
|
3673
4274
|
}, {
|
|
3674
4275
|
children: childrenField
|
|
3675
4276
|
});
|
|
4277
|
+
} else if (isRowGroupStatus) {
|
|
4278
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
4279
|
+
const {
|
|
4280
|
+
mapChildrenField
|
|
4281
|
+
} = rowGroupOpts;
|
|
4282
|
+
_xeUtils.default.eachTree(tableFullGroupData, (row, index, items, path, parentRow, nodes) => {
|
|
4283
|
+
const rowid = handleUpdateRowId(row);
|
|
4284
|
+
handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, (0, _util.toTreePathSeq)(path));
|
|
4285
|
+
}, {
|
|
4286
|
+
children: mapChildrenField
|
|
4287
|
+
});
|
|
3676
4288
|
} else {
|
|
3677
4289
|
tableFullData.forEach((row, index, items) => {
|
|
3678
4290
|
handleRowCache(row, index, items, index, null, handleUpdateRowId(row), 0, index + 1);
|
|
@@ -4485,7 +5097,6 @@ const Methods = {
|
|
|
4485
5097
|
const {
|
|
4486
5098
|
tableFullData,
|
|
4487
5099
|
afterFullData,
|
|
4488
|
-
afterTreeFullData,
|
|
4489
5100
|
tableFullTreeData,
|
|
4490
5101
|
fullDataRowIdData,
|
|
4491
5102
|
afterFullRowMaps,
|
|
@@ -4501,278 +5112,33 @@ const Methods = {
|
|
|
4501
5112
|
checkField
|
|
4502
5113
|
} = checkboxOpts;
|
|
4503
5114
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4504
|
-
let rowList = [];
|
|
4505
|
-
if (updateCheckboxFlag) {
|
|
4506
|
-
if (checkField) {
|
|
4507
|
-
if (treeConfig) {
|
|
4508
|
-
const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ?
|
|
4509
|
-
rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
|
|
4510
|
-
children: transform ? mapChildrenField : childrenField
|
|
4511
|
-
});
|
|
4512
|
-
} else {
|
|
4513
|
-
const currTableData = isFull ? tableFullData : afterFullData;
|
|
4514
|
-
rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
|
|
4515
|
-
}
|
|
4516
|
-
} else {
|
|
4517
|
-
_xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
|
|
4518
|
-
if (isFull) {
|
|
4519
|
-
if (fullDataRowIdData[rowid]) {
|
|
4520
|
-
rowList.push(fullDataRowIdData[rowid].row);
|
|
4521
|
-
}
|
|
4522
|
-
} else {
|
|
4523
|
-
if (afterFullRowMaps[rowid]) {
|
|
4524
|
-
rowList.push(afterFullRowMaps[rowid]);
|
|
4525
|
-
}
|
|
4526
|
-
}
|
|
4527
|
-
});
|
|
4528
|
-
}
|
|
4529
|
-
}
|
|
4530
|
-
return rowList;
|
|
4531
|
-
},
|
|
4532
|
-
/**
|
|
4533
|
-
* 获取处理后全量的表格数据
|
|
4534
|
-
* 如果存在筛选条件,继续处理
|
|
4535
|
-
*/
|
|
4536
|
-
updateAfterFullData() {
|
|
4537
|
-
const $xeTable = this;
|
|
4538
|
-
const props = $xeTable;
|
|
4539
|
-
const internalData = $xeTable;
|
|
4540
|
-
const {
|
|
4541
|
-
treeConfig
|
|
4542
|
-
} = props;
|
|
4543
|
-
const {
|
|
4544
|
-
tableFullColumn,
|
|
4545
|
-
tableFullData,
|
|
4546
|
-
tableFullTreeData
|
|
4547
|
-
} = internalData;
|
|
4548
|
-
const filterOpts = $xeTable.computeFilterOpts;
|
|
4549
|
-
const sortOpts = $xeTable.computeSortOpts;
|
|
4550
|
-
const treeOpts = $xeTable.computeTreeOpts;
|
|
4551
|
-
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4552
|
-
const {
|
|
4553
|
-
transform,
|
|
4554
|
-
rowField,
|
|
4555
|
-
parentField,
|
|
4556
|
-
mapChildrenField
|
|
4557
|
-
} = treeOpts;
|
|
4558
|
-
const {
|
|
4559
|
-
isEvery,
|
|
4560
|
-
remote: allRemoteFilter,
|
|
4561
|
-
filterMethod: allFilterMethod
|
|
4562
|
-
} = filterOpts;
|
|
4563
|
-
const {
|
|
4564
|
-
remote: allRemoteSort,
|
|
4565
|
-
sortMethod: allSortMethod,
|
|
4566
|
-
multiple: sortMultiple,
|
|
4567
|
-
chronological
|
|
4568
|
-
} = sortOpts;
|
|
4569
|
-
let tableData = [];
|
|
4570
|
-
let tableTree = [];
|
|
4571
|
-
// 处理数据
|
|
4572
|
-
if (!allRemoteFilter || !allRemoteSort) {
|
|
4573
|
-
const filterColumns = [];
|
|
4574
|
-
let orderColumns = [];
|
|
4575
|
-
tableFullColumn.forEach(column => {
|
|
4576
|
-
const {
|
|
4577
|
-
field,
|
|
4578
|
-
sortable,
|
|
4579
|
-
order,
|
|
4580
|
-
filters
|
|
4581
|
-
} = column;
|
|
4582
|
-
if (!allRemoteFilter && filters && filters.length) {
|
|
4583
|
-
const valueList = [];
|
|
4584
|
-
const itemList = [];
|
|
4585
|
-
filters.forEach(item => {
|
|
4586
|
-
if (item.checked) {
|
|
4587
|
-
itemList.push(item);
|
|
4588
|
-
valueList.push(item.value);
|
|
4589
|
-
}
|
|
4590
|
-
});
|
|
4591
|
-
if (itemList.length) {
|
|
4592
|
-
filterColumns.push({
|
|
4593
|
-
column,
|
|
4594
|
-
valueList,
|
|
4595
|
-
itemList
|
|
4596
|
-
});
|
|
4597
|
-
}
|
|
4598
|
-
}
|
|
4599
|
-
if (!allRemoteSort && sortable && order) {
|
|
4600
|
-
orderColumns.push({
|
|
4601
|
-
column,
|
|
4602
|
-
field,
|
|
4603
|
-
property: field,
|
|
4604
|
-
order: order,
|
|
4605
|
-
sortTime: column.sortTime
|
|
4606
|
-
});
|
|
4607
|
-
}
|
|
4608
|
-
});
|
|
4609
|
-
if (sortMultiple && chronological && orderColumns.length > 1) {
|
|
4610
|
-
orderColumns = _xeUtils.default.orderBy(orderColumns, 'sortTime');
|
|
4611
|
-
}
|
|
4612
|
-
// 处理筛选
|
|
4613
|
-
// 支持单列、多列、组合筛选
|
|
4614
|
-
if (!allRemoteFilter && filterColumns.length) {
|
|
4615
|
-
const handleFilter = row => {
|
|
4616
|
-
return filterColumns.every(({
|
|
4617
|
-
column,
|
|
4618
|
-
valueList,
|
|
4619
|
-
itemList
|
|
4620
|
-
}) => {
|
|
4621
|
-
const {
|
|
4622
|
-
filterMethod,
|
|
4623
|
-
filterRender
|
|
4624
|
-
} = column;
|
|
4625
|
-
const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
|
|
4626
|
-
const compFilterMethod = compConf ? compConf.tableFilterMethod || compConf.filterMethod : null;
|
|
4627
|
-
const tdFilterMethod = compConf ? compConf.tableFilterDefaultMethod || compConf.defaultTableFilterMethod || compConf.defaultFilterMethod : null;
|
|
4628
|
-
const cellValue = (0, _util.getCellValue)(row, column);
|
|
4629
|
-
if (filterMethod) {
|
|
4630
|
-
return itemList.some(item => filterMethod({
|
|
4631
|
-
value: item.value,
|
|
4632
|
-
option: item,
|
|
4633
|
-
cellValue,
|
|
4634
|
-
row,
|
|
4635
|
-
column,
|
|
4636
|
-
$table: $xeTable
|
|
4637
|
-
}));
|
|
4638
|
-
} else if (compFilterMethod) {
|
|
4639
|
-
return itemList.some(item => compFilterMethod({
|
|
4640
|
-
value: item.value,
|
|
4641
|
-
option: item,
|
|
4642
|
-
cellValue,
|
|
4643
|
-
row,
|
|
4644
|
-
column,
|
|
4645
|
-
$table: $xeTable
|
|
4646
|
-
}));
|
|
4647
|
-
} else if (allFilterMethod) {
|
|
4648
|
-
return allFilterMethod({
|
|
4649
|
-
options: itemList,
|
|
4650
|
-
values: valueList,
|
|
4651
|
-
cellValue,
|
|
4652
|
-
row,
|
|
4653
|
-
column
|
|
4654
|
-
});
|
|
4655
|
-
} else if (tdFilterMethod) {
|
|
4656
|
-
return itemList.some(item => tdFilterMethod({
|
|
4657
|
-
value: item.value,
|
|
4658
|
-
option: item,
|
|
4659
|
-
cellValue,
|
|
4660
|
-
row,
|
|
4661
|
-
column,
|
|
4662
|
-
$table: $xeTable
|
|
4663
|
-
}));
|
|
4664
|
-
}
|
|
4665
|
-
return valueList.indexOf(_xeUtils.default.get(row, column.field)) > -1;
|
|
4666
|
-
});
|
|
4667
|
-
};
|
|
4668
|
-
if (treeConfig && transform) {
|
|
4669
|
-
// 筛选虚拟树
|
|
4670
|
-
tableTree = _xeUtils.default.searchTree(tableFullTreeData, handleFilter, {
|
|
4671
|
-
original: true,
|
|
4672
|
-
isEvery,
|
|
4673
|
-
children: mapChildrenField,
|
|
4674
|
-
mapChildren: childrenField
|
|
5115
|
+
let rowList = [];
|
|
5116
|
+
if (updateCheckboxFlag) {
|
|
5117
|
+
if (checkField) {
|
|
5118
|
+
if (treeConfig) {
|
|
5119
|
+
const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? tableFullTreeData : afterFullData;
|
|
5120
|
+
rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
|
|
5121
|
+
children: transform ? mapChildrenField : childrenField
|
|
4675
5122
|
});
|
|
4676
|
-
tableData = tableTree;
|
|
4677
5123
|
} else {
|
|
4678
|
-
|
|
4679
|
-
|
|
5124
|
+
const currTableData = isFull ? tableFullData : afterFullData;
|
|
5125
|
+
rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
|
|
4680
5126
|
}
|
|
4681
5127
|
} else {
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
children: mapChildrenField,
|
|
4688
|
-
mapChildren: childrenField
|
|
4689
|
-
});
|
|
4690
|
-
tableData = tableTree;
|
|
4691
|
-
} else {
|
|
4692
|
-
tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0);
|
|
4693
|
-
tableTree = tableData;
|
|
4694
|
-
}
|
|
4695
|
-
}
|
|
4696
|
-
// 处理排序(不能用于树形结构)
|
|
4697
|
-
// 支持单列、多列、组合排序
|
|
4698
|
-
if (!allRemoteSort && orderColumns.length) {
|
|
4699
|
-
if (treeConfig && transform) {
|
|
4700
|
-
// 虚拟树和列表一样,只能排序根级节点
|
|
4701
|
-
if (allSortMethod) {
|
|
4702
|
-
const sortRests = allSortMethod({
|
|
4703
|
-
data: tableTree,
|
|
4704
|
-
sortList: orderColumns,
|
|
4705
|
-
$table: $xeTable
|
|
4706
|
-
});
|
|
4707
|
-
tableTree = _xeUtils.default.isArray(sortRests) ? sortRests : tableTree;
|
|
4708
|
-
} else {
|
|
4709
|
-
const treeList = _xeUtils.default.toTreeArray(tableTree, {
|
|
4710
|
-
children: mapChildrenField
|
|
4711
|
-
});
|
|
4712
|
-
tableTree = _xeUtils.default.toArrayTree(_xeUtils.default.orderBy(treeList, orderColumns.map(({
|
|
4713
|
-
column,
|
|
4714
|
-
order
|
|
4715
|
-
}) => [getOrderField($xeTable, column), order])), {
|
|
4716
|
-
key: rowField,
|
|
4717
|
-
parentKey: parentField,
|
|
4718
|
-
children: childrenField,
|
|
4719
|
-
mapChildren: mapChildrenField
|
|
4720
|
-
});
|
|
4721
|
-
}
|
|
4722
|
-
tableData = tableTree;
|
|
4723
|
-
} else {
|
|
4724
|
-
if (allSortMethod) {
|
|
4725
|
-
const sortRests = allSortMethod({
|
|
4726
|
-
data: tableData,
|
|
4727
|
-
sortList: orderColumns,
|
|
4728
|
-
$table: $xeTable
|
|
4729
|
-
});
|
|
4730
|
-
tableData = _xeUtils.default.isArray(sortRests) ? sortRests : tableData;
|
|
5128
|
+
_xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
|
|
5129
|
+
if (isFull) {
|
|
5130
|
+
if (fullDataRowIdData[rowid]) {
|
|
5131
|
+
rowList.push(fullDataRowIdData[rowid].row);
|
|
5132
|
+
}
|
|
4731
5133
|
} else {
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
tableData = _xeUtils.default.orderBy(tableData, orderColumns.map(({
|
|
4735
|
-
column,
|
|
4736
|
-
order
|
|
4737
|
-
}) => [getOrderField(this, column), order]));
|
|
4738
|
-
} else {
|
|
4739
|
-
const firstOrderColumn = orderColumns[0];
|
|
4740
|
-
let sortByConfs;
|
|
4741
|
-
// 已废弃,兼容 v2,在 v4 中废弃, sortBy 不能为数组
|
|
4742
|
-
if (_xeUtils.default.isArray(firstOrderColumn.sortBy)) {
|
|
4743
|
-
sortByConfs = firstOrderColumn.sortBy.map(item => [item, firstOrderColumn.order]);
|
|
4744
|
-
}
|
|
4745
|
-
tableData = _xeUtils.default.orderBy(tableData, sortByConfs || [firstOrderColumn].map(({
|
|
4746
|
-
column,
|
|
4747
|
-
order
|
|
4748
|
-
}) => [getOrderField(this, column), order]));
|
|
5134
|
+
if (afterFullRowMaps[rowid]) {
|
|
5135
|
+
rowList.push(afterFullRowMaps[rowid]);
|
|
4749
5136
|
}
|
|
4750
|
-
tableData = _xeUtils.default.orderBy(tableData, orderColumns.map(({
|
|
4751
|
-
column,
|
|
4752
|
-
order
|
|
4753
|
-
}) => [getOrderField($xeTable, column), order]));
|
|
4754
5137
|
}
|
|
4755
|
-
tableTree = tableData;
|
|
4756
|
-
}
|
|
4757
|
-
}
|
|
4758
|
-
} else {
|
|
4759
|
-
if (treeConfig && transform) {
|
|
4760
|
-
// 还原虚拟树
|
|
4761
|
-
tableTree = _xeUtils.default.searchTree(tableFullTreeData, () => true, {
|
|
4762
|
-
original: true,
|
|
4763
|
-
isEvery,
|
|
4764
|
-
children: treeOpts.mapChildrenField,
|
|
4765
|
-
mapChildren: childrenField
|
|
4766
5138
|
});
|
|
4767
|
-
tableData = tableTree;
|
|
4768
|
-
} else {
|
|
4769
|
-
tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0);
|
|
4770
|
-
tableTree = tableData;
|
|
4771
5139
|
}
|
|
4772
5140
|
}
|
|
4773
|
-
|
|
4774
|
-
internalData.afterTreeFullData = tableTree;
|
|
4775
|
-
updateAfterDataIndex($xeTable);
|
|
5141
|
+
return rowList;
|
|
4776
5142
|
},
|
|
4777
5143
|
/**
|
|
4778
5144
|
* 预编译
|
|
@@ -5156,6 +5522,7 @@ const Methods = {
|
|
|
5156
5522
|
const storeData = getCustomStorageMap(tableId);
|
|
5157
5523
|
if (restoreStore) {
|
|
5158
5524
|
return Promise.resolve(restoreStore({
|
|
5525
|
+
$table: $xeTable,
|
|
5159
5526
|
id: tableId,
|
|
5160
5527
|
type: 'restore',
|
|
5161
5528
|
storeData
|
|
@@ -5231,6 +5598,7 @@ const Methods = {
|
|
|
5231
5598
|
resizableData[colKey] = column.renderWidth;
|
|
5232
5599
|
}
|
|
5233
5600
|
if (isCustomVisible && (!checkMethod || checkMethod({
|
|
5601
|
+
$table: $xeTable,
|
|
5234
5602
|
column
|
|
5235
5603
|
}))) {
|
|
5236
5604
|
if (!column.visible && column.defaultVisible) {
|
|
@@ -5291,6 +5659,7 @@ const Methods = {
|
|
|
5291
5659
|
} : this.getCustomStoreData();
|
|
5292
5660
|
if (updateStore) {
|
|
5293
5661
|
return updateStore({
|
|
5662
|
+
$table: $xeTable,
|
|
5294
5663
|
id: tableId,
|
|
5295
5664
|
type,
|
|
5296
5665
|
storeData
|
|
@@ -6284,8 +6653,7 @@ const Methods = {
|
|
|
6284
6653
|
const hasDeleteKey = keyCode === 46;
|
|
6285
6654
|
const isF2 = keyCode === 113;
|
|
6286
6655
|
const isContextMenu = keyCode === 93;
|
|
6287
|
-
const
|
|
6288
|
-
const hasCtrlKey = evnt.ctrlKey;
|
|
6656
|
+
const isControlKey = (0, _dom.hasControlKey)(evnt);
|
|
6289
6657
|
const hasShiftKey = evnt.shiftKey;
|
|
6290
6658
|
const hasAltKey = evnt.altKey;
|
|
6291
6659
|
const operArrow = isLeftArrow || isUpArrow || isRightArrow || isDwArrow;
|
|
@@ -6351,7 +6719,7 @@ const Methods = {
|
|
|
6351
6719
|
enterMethod
|
|
6352
6720
|
} = keyboardOpts;
|
|
6353
6721
|
// 退出选中
|
|
6354
|
-
if (
|
|
6722
|
+
if (isControlKey) {
|
|
6355
6723
|
// 如果是激活编辑状态,则取消编辑
|
|
6356
6724
|
if (actived.row) {
|
|
6357
6725
|
const params = actived.args;
|
|
@@ -6526,7 +6894,7 @@ const Methods = {
|
|
|
6526
6894
|
};
|
|
6527
6895
|
$xeTable.setTreeExpand(parentRow, false).then(() => $xeTable.scrollToRow(parentRow)).then(() => $xeTable.triggerCurrentRowEvent(evnt, params));
|
|
6528
6896
|
}
|
|
6529
|
-
} else if (keyboardConfig && keyboardOpts.isEdit && !
|
|
6897
|
+
} else if (keyboardConfig && keyboardOpts.isEdit && !isControlKey && (isSpacebar || keyCode >= 48 && keyCode <= 57 || keyCode >= 65 && keyCode <= 90 || keyCode >= 96 && keyCode <= 111 || keyCode >= 186 && keyCode <= 192 || keyCode >= 219 && keyCode <= 222)) {
|
|
6530
6898
|
const {
|
|
6531
6899
|
editMethod
|
|
6532
6900
|
} = keyboardOpts;
|
|
@@ -6976,9 +7344,13 @@ const Methods = {
|
|
|
6976
7344
|
const {
|
|
6977
7345
|
treeConfig
|
|
6978
7346
|
} = props;
|
|
7347
|
+
const {
|
|
7348
|
+
isRowGroupStatus
|
|
7349
|
+
} = reactData;
|
|
6979
7350
|
const {
|
|
6980
7351
|
selectCheckboxMaps
|
|
6981
7352
|
} = internalData;
|
|
7353
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
6982
7354
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
6983
7355
|
const {
|
|
6984
7356
|
transform,
|
|
@@ -6998,10 +7370,11 @@ const Methods = {
|
|
|
6998
7370
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
6999
7371
|
if (checkField) {
|
|
7000
7372
|
// 树结构
|
|
7001
|
-
if (treeConfig && !checkStrictly) {
|
|
7373
|
+
if ((treeConfig || isRowGroupStatus) && !checkStrictly) {
|
|
7002
7374
|
// 更新子节点状态
|
|
7003
7375
|
_xeUtils.default.eachTree(rows, row => {
|
|
7004
7376
|
if (isForce || !checkMethod || checkMethod({
|
|
7377
|
+
$table: $xeTable,
|
|
7005
7378
|
row
|
|
7006
7379
|
})) {
|
|
7007
7380
|
_xeUtils.default.set(row, checkField, checked);
|
|
@@ -7019,6 +7392,7 @@ const Methods = {
|
|
|
7019
7392
|
// 列表
|
|
7020
7393
|
rows.forEach(row => {
|
|
7021
7394
|
if (isForce || !checkMethod || checkMethod({
|
|
7395
|
+
$table: $xeTable,
|
|
7022
7396
|
row
|
|
7023
7397
|
})) {
|
|
7024
7398
|
_xeUtils.default.set(row, checkField, checked);
|
|
@@ -7029,32 +7403,58 @@ const Methods = {
|
|
|
7029
7403
|
return;
|
|
7030
7404
|
}
|
|
7031
7405
|
// 树结构
|
|
7032
|
-
if (
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7406
|
+
if (!checkStrictly) {
|
|
7407
|
+
if (isRowGroupStatus) {
|
|
7408
|
+
// 更新行分组节点状态
|
|
7409
|
+
_xeUtils.default.eachTree(rows, row => {
|
|
7410
|
+
const rowid = handleGetRowId(row);
|
|
7411
|
+
if (isForce || !checkMethod || checkMethod({
|
|
7412
|
+
$table: $xeTable,
|
|
7413
|
+
row
|
|
7414
|
+
})) {
|
|
7415
|
+
if (checked) {
|
|
7416
|
+
selectCheckboxMaps[rowid] = row;
|
|
7417
|
+
} else {
|
|
7418
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7419
|
+
delete selectCheckboxMaps[rowid];
|
|
7420
|
+
}
|
|
7044
7421
|
}
|
|
7422
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
7045
7423
|
}
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7424
|
+
}, {
|
|
7425
|
+
children: rowGroupOpts.mapChildrenField
|
|
7426
|
+
});
|
|
7427
|
+
reactData.updateCheckboxFlag++;
|
|
7428
|
+
return;
|
|
7429
|
+
} else if (treeConfig) {
|
|
7430
|
+
// 更新子节点状态
|
|
7431
|
+
_xeUtils.default.eachTree(rows, row => {
|
|
7432
|
+
const rowid = handleGetRowId(row);
|
|
7433
|
+
if (isForce || !checkMethod || checkMethod({
|
|
7434
|
+
$table: $xeTable,
|
|
7435
|
+
row
|
|
7436
|
+
})) {
|
|
7437
|
+
if (checked) {
|
|
7438
|
+
selectCheckboxMaps[rowid] = row;
|
|
7439
|
+
} else {
|
|
7440
|
+
if (selectCheckboxMaps[rowid]) {
|
|
7441
|
+
delete selectCheckboxMaps[rowid];
|
|
7442
|
+
}
|
|
7443
|
+
}
|
|
7444
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
7445
|
+
}
|
|
7446
|
+
}, {
|
|
7447
|
+
children: transform ? mapChildrenField : childrenField
|
|
7448
|
+
});
|
|
7449
|
+
reactData.updateCheckboxFlag++;
|
|
7450
|
+
return;
|
|
7451
|
+
}
|
|
7053
7452
|
}
|
|
7054
7453
|
// 列表
|
|
7055
7454
|
rows.forEach(row => {
|
|
7056
7455
|
const rowid = handleGetRowId(row);
|
|
7057
7456
|
if (isForce || !checkMethod || checkMethod({
|
|
7457
|
+
$table: $xeTable,
|
|
7058
7458
|
row
|
|
7059
7459
|
})) {
|
|
7060
7460
|
if (checked) {
|
|
@@ -7114,10 +7514,17 @@ const Methods = {
|
|
|
7114
7514
|
triggerCheckRowEvent(evnt, params, checked) {
|
|
7115
7515
|
const $xeTable = this;
|
|
7116
7516
|
const props = $xeTable;
|
|
7517
|
+
const reactData = $xeTable;
|
|
7117
7518
|
const internalData = $xeTable;
|
|
7519
|
+
const {
|
|
7520
|
+
treeConfig
|
|
7521
|
+
} = props;
|
|
7118
7522
|
const {
|
|
7119
7523
|
row
|
|
7120
7524
|
} = params;
|
|
7525
|
+
const {
|
|
7526
|
+
isRowGroupStatus
|
|
7527
|
+
} = reactData;
|
|
7121
7528
|
const {
|
|
7122
7529
|
afterFullData
|
|
7123
7530
|
} = internalData;
|
|
@@ -7130,7 +7537,7 @@ const Methods = {
|
|
|
7130
7537
|
return;
|
|
7131
7538
|
}
|
|
7132
7539
|
evnt.stopPropagation();
|
|
7133
|
-
if (checkboxOpts.isShiftKey && evnt.shiftKey && !
|
|
7540
|
+
if (checkboxOpts.isShiftKey && evnt.shiftKey && !(treeConfig || isRowGroupStatus)) {
|
|
7134
7541
|
const checkboxRecords = $xeTable.getCheckboxRecords();
|
|
7135
7542
|
if (checkboxRecords.length) {
|
|
7136
7543
|
const firstRow = checkboxRecords[0];
|
|
@@ -7150,6 +7557,7 @@ const Methods = {
|
|
|
7150
7557
|
}
|
|
7151
7558
|
}
|
|
7152
7559
|
if (!checkMethod || checkMethod({
|
|
7560
|
+
$table: $xeTable,
|
|
7153
7561
|
row
|
|
7154
7562
|
})) {
|
|
7155
7563
|
$xeTable.handleBatchSelectRows([row], checked);
|
|
@@ -7197,14 +7605,16 @@ const Methods = {
|
|
|
7197
7605
|
treeConfig
|
|
7198
7606
|
} = props;
|
|
7199
7607
|
const {
|
|
7608
|
+
isRowGroupStatus
|
|
7609
|
+
} = reactData;
|
|
7610
|
+
const {
|
|
7611
|
+
afterTreeFullData,
|
|
7612
|
+
afterGroupFullData,
|
|
7200
7613
|
selectCheckboxMaps,
|
|
7201
7614
|
treeIndeterminateRowMaps
|
|
7202
7615
|
} = internalData;
|
|
7616
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
7203
7617
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
7204
|
-
const {
|
|
7205
|
-
transform,
|
|
7206
|
-
mapChildrenField
|
|
7207
|
-
} = treeOpts;
|
|
7208
7618
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
7209
7619
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
7210
7620
|
const {
|
|
@@ -7212,29 +7622,47 @@ const Methods = {
|
|
|
7212
7622
|
checkStrictly,
|
|
7213
7623
|
checkMethod
|
|
7214
7624
|
} = checkboxOpts;
|
|
7215
|
-
const {
|
|
7216
|
-
afterTreeFullData
|
|
7217
|
-
} = internalData;
|
|
7218
7625
|
if (checkStrictly) {
|
|
7219
7626
|
return;
|
|
7220
7627
|
}
|
|
7221
|
-
|
|
7222
|
-
if (treeConfig) {
|
|
7628
|
+
if (isRowGroupStatus || treeConfig) {
|
|
7223
7629
|
const {
|
|
7224
7630
|
handleGetRowId
|
|
7225
7631
|
} = (0, _util.createHandleGetRowId)($xeTable);
|
|
7226
7632
|
const childRowMaps = {};
|
|
7227
7633
|
const childRowList = [];
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
const
|
|
7231
|
-
if (
|
|
7232
|
-
|
|
7233
|
-
|
|
7634
|
+
if (isRowGroupStatus) {
|
|
7635
|
+
// 行分组
|
|
7636
|
+
const mapChildrenField = rowGroupOpts.mapChildrenField;
|
|
7637
|
+
if (mapChildrenField) {
|
|
7638
|
+
_xeUtils.default.eachTree(afterGroupFullData, row => {
|
|
7639
|
+
const rowid = handleGetRowId(row);
|
|
7640
|
+
const childList = row[mapChildrenField];
|
|
7641
|
+
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
7642
|
+
childRowMaps[rowid] = 1;
|
|
7643
|
+
childRowList.unshift([row, rowid, childList]);
|
|
7644
|
+
}
|
|
7645
|
+
}, {
|
|
7646
|
+
children: mapChildrenField
|
|
7647
|
+
});
|
|
7234
7648
|
}
|
|
7235
|
-
}
|
|
7236
|
-
|
|
7237
|
-
|
|
7649
|
+
} else if (treeConfig) {
|
|
7650
|
+
// 树结构
|
|
7651
|
+
const {
|
|
7652
|
+
transform,
|
|
7653
|
+
mapChildrenField
|
|
7654
|
+
} = treeOpts;
|
|
7655
|
+
_xeUtils.default.eachTree(afterTreeFullData, row => {
|
|
7656
|
+
const rowid = handleGetRowId(row);
|
|
7657
|
+
const childList = row[transform ? mapChildrenField : childrenField];
|
|
7658
|
+
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
7659
|
+
childRowMaps[rowid] = 1;
|
|
7660
|
+
childRowList.unshift([row, rowid, childList]);
|
|
7661
|
+
}
|
|
7662
|
+
}, {
|
|
7663
|
+
children: transform ? mapChildrenField : childrenField
|
|
7664
|
+
});
|
|
7665
|
+
}
|
|
7238
7666
|
childRowList.forEach(vals => {
|
|
7239
7667
|
const row = vals[0];
|
|
7240
7668
|
const rowid = vals[1];
|
|
@@ -7246,6 +7674,7 @@ const Methods = {
|
|
|
7246
7674
|
const childRowid = handleGetRowId(item);
|
|
7247
7675
|
const isSelect = checkField ? _xeUtils.default.get(item, checkField) : selectCheckboxMaps[childRowid];
|
|
7248
7676
|
if (checkMethod({
|
|
7677
|
+
$table: $xeTable,
|
|
7249
7678
|
row: item
|
|
7250
7679
|
})) {
|
|
7251
7680
|
if (isSelect) {
|
|
@@ -7309,9 +7738,13 @@ const Methods = {
|
|
|
7309
7738
|
const {
|
|
7310
7739
|
treeConfig
|
|
7311
7740
|
} = props;
|
|
7741
|
+
const {
|
|
7742
|
+
isRowGroupStatus
|
|
7743
|
+
} = reactData;
|
|
7312
7744
|
const {
|
|
7313
7745
|
afterFullData,
|
|
7314
7746
|
afterTreeFullData,
|
|
7747
|
+
afterGroupFullData,
|
|
7315
7748
|
checkboxReserveRowMap,
|
|
7316
7749
|
selectCheckboxMaps,
|
|
7317
7750
|
treeIndeterminateRowMaps
|
|
@@ -7328,11 +7761,12 @@ const Methods = {
|
|
|
7328
7761
|
let sLen = 0; // 已选
|
|
7329
7762
|
let hLen = 0; // 半选
|
|
7330
7763
|
let vLen = 0; // 有效行
|
|
7331
|
-
const rootList = treeConfig ? afterTreeFullData : afterFullData;
|
|
7764
|
+
const rootList = treeConfig ? afterTreeFullData : isRowGroupStatus ? afterGroupFullData : afterFullData;
|
|
7332
7765
|
rootList.forEach(checkMethod ? row => {
|
|
7333
7766
|
const childRowid = handleGetRowId(row);
|
|
7334
7767
|
const selected = checkField ? _xeUtils.default.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
7335
7768
|
if (checkMethod({
|
|
7769
|
+
$table: $xeTable,
|
|
7336
7770
|
row
|
|
7337
7771
|
})) {
|
|
7338
7772
|
if (selected) {
|
|
@@ -7921,6 +8355,7 @@ const Methods = {
|
|
|
7921
8355
|
const radioOpts = $xeTable.computeRadioOpts;
|
|
7922
8356
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
7923
8357
|
const keyboardOpts = $xeTable.computeKeyboardOpts;
|
|
8358
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
7924
8359
|
const rowOpts = $xeTable.computeRowOpts;
|
|
7925
8360
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
7926
8361
|
const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
|
|
@@ -7934,7 +8369,8 @@ const Methods = {
|
|
|
7934
8369
|
} = params;
|
|
7935
8370
|
const {
|
|
7936
8371
|
type,
|
|
7937
|
-
treeNode
|
|
8372
|
+
treeNode,
|
|
8373
|
+
rowGroupNode
|
|
7938
8374
|
} = column;
|
|
7939
8375
|
const isRadioType = type === 'radio';
|
|
7940
8376
|
const isCheckboxType = type === 'checkbox';
|
|
@@ -7942,8 +8378,9 @@ const Methods = {
|
|
|
7942
8378
|
const cell = evnt.currentTarget;
|
|
7943
8379
|
const triggerRadio = isRadioType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--radio').flag;
|
|
7944
8380
|
const triggerCheckbox = isCheckboxType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--checkbox').flag;
|
|
7945
|
-
const triggerTreeNode = treeNode && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-tree
|
|
8381
|
+
const triggerTreeNode = treeNode && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--tree-btn').flag;
|
|
7946
8382
|
const triggerExpandNode = isExpandType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-table--expanded').flag;
|
|
8383
|
+
const triggerRowGroupNode = isExpandType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-row-group--node-btn').flag;
|
|
7947
8384
|
params = Object.assign({
|
|
7948
8385
|
cell,
|
|
7949
8386
|
triggerRadio,
|
|
@@ -7960,11 +8397,15 @@ const Methods = {
|
|
|
7960
8397
|
if (treeOpts.trigger === 'row' || treeNode && treeOpts.trigger === 'cell') {
|
|
7961
8398
|
$xeTable.triggerTreeExpandEvent(evnt, params);
|
|
7962
8399
|
}
|
|
8400
|
+
// 如果是行分组
|
|
8401
|
+
if (rowGroupOpts.trigger === 'row' || rowGroupNode && rowGroupOpts.trigger === 'cell') {
|
|
8402
|
+
$xeTable.triggerRowGroupExpandEvent(evnt, params);
|
|
8403
|
+
}
|
|
7963
8404
|
}
|
|
7964
8405
|
// 如果点击了树节点
|
|
7965
8406
|
if (!triggerTreeNode) {
|
|
7966
|
-
if (!triggerExpandNode) {
|
|
7967
|
-
//
|
|
8407
|
+
if (!triggerExpandNode && !triggerRowGroupNode) {
|
|
8408
|
+
// 如果是当前行
|
|
7968
8409
|
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
7969
8410
|
if (!triggerCheckbox && !triggerRadio) {
|
|
7970
8411
|
$xeTable.triggerCurrentRowEvent(evnt, params);
|
|
@@ -8230,7 +8671,7 @@ const Methods = {
|
|
|
8230
8671
|
const triggerInput = cell && cell.tagName && cell.tagName.toLowerCase() === 'input';
|
|
8231
8672
|
const triggerRadio = isRadioType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--radio').flag;
|
|
8232
8673
|
const triggerCheckbox = isCheckboxType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--checkbox').flag;
|
|
8233
|
-
const triggerTreeNode = treeNode && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-tree
|
|
8674
|
+
const triggerTreeNode = treeNode && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-cell--tree-btn').flag;
|
|
8234
8675
|
const triggerExpandNode = isExpandType && (0, _dom.getEventTargetNode)(evnt, cell, 'vxe-table--expanded').flag;
|
|
8235
8676
|
let isColDragCell = false;
|
|
8236
8677
|
if (rowOpts.drag) {
|
|
@@ -8547,7 +8988,7 @@ const Methods = {
|
|
|
8547
8988
|
evnt.preventDefault();
|
|
8548
8989
|
return;
|
|
8549
8990
|
}
|
|
8550
|
-
const
|
|
8991
|
+
const isControlKey = (0, _dom.hasControlKey)(evnt);
|
|
8551
8992
|
const trEl = evnt.currentTarget;
|
|
8552
8993
|
const rowid = trEl.getAttribute('rowid') || '';
|
|
8553
8994
|
const rest = fullAllDataRowIdData[rowid];
|
|
@@ -8561,10 +9002,10 @@ const Methods = {
|
|
|
8561
9002
|
} = reactData;
|
|
8562
9003
|
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
|
|
8563
9004
|
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
|
|
8564
|
-
internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag &&
|
|
9005
|
+
internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && isControlKey);
|
|
8565
9006
|
internalData.prevDragRow = row;
|
|
8566
9007
|
internalData.prevDragPos = dragPos;
|
|
8567
|
-
if ($xeTable.eqRow(dragRow, row) ||
|
|
9008
|
+
if ($xeTable.eqRow(dragRow, row) || isControlKey && treeConfig && lazy && row[hasChildField] && rowRest && !rowRest.treeLoaded || !isCrossDrag && treeConfig && transform && (isPeerDrag ? dragRow[parentField] !== row[parentField] : rest.level)) {
|
|
8568
9009
|
showDropTip($xeTable, evnt, trEl, null, false, dragPos);
|
|
8569
9010
|
return;
|
|
8570
9011
|
}
|
|
@@ -8863,7 +9304,7 @@ const Methods = {
|
|
|
8863
9304
|
evnt.preventDefault();
|
|
8864
9305
|
return;
|
|
8865
9306
|
}
|
|
8866
|
-
const
|
|
9307
|
+
const isControlKey = (0, _dom.hasControlKey)(evnt);
|
|
8867
9308
|
const thEl = evnt.currentTarget;
|
|
8868
9309
|
const colid = thEl.getAttribute('colid');
|
|
8869
9310
|
const column = $xeTable.getColumnById(colid);
|
|
@@ -8874,7 +9315,7 @@ const Methods = {
|
|
|
8874
9315
|
} = evnt;
|
|
8875
9316
|
const offsetX = clientX - thEl.getBoundingClientRect().x;
|
|
8876
9317
|
const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right';
|
|
8877
|
-
internalData.prevDragToChild = !!(isCrossDrag && isToChildDrag &&
|
|
9318
|
+
internalData.prevDragToChild = !!(isCrossDrag && isToChildDrag && isControlKey);
|
|
8878
9319
|
internalData.prevDragCol = column;
|
|
8879
9320
|
internalData.prevDragPos = dragPos;
|
|
8880
9321
|
if (column.fixed || dragCol && dragCol.id === column.id || !isCrossDrag && (isPeerDrag ? dragCol.parentId !== column.parentId : column.parentId)) {
|
|
@@ -9337,7 +9778,7 @@ const Methods = {
|
|
|
9337
9778
|
const reactData = $xeTable;
|
|
9338
9779
|
const internalData = $xeTable;
|
|
9339
9780
|
const {
|
|
9340
|
-
expandColumn
|
|
9781
|
+
expandColumn
|
|
9341
9782
|
} = reactData;
|
|
9342
9783
|
const {
|
|
9343
9784
|
rowExpandLazyLoadedMaps
|
|
@@ -9357,12 +9798,12 @@ const Methods = {
|
|
|
9357
9798
|
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
9358
9799
|
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
|
|
9359
9800
|
const expanded = !$xeTable.isRowExpandByRow(row);
|
|
9360
|
-
const columnIndex = $xeTable.getColumnIndex(
|
|
9361
|
-
const $columnIndex = $xeTable.getVMColumnIndex(
|
|
9801
|
+
const columnIndex = expandColumn ? $xeTable.getColumnIndex(expandColumn) : -1;
|
|
9802
|
+
const $columnIndex = expandColumn ? $xeTable.getVMColumnIndex(expandColumn) : -1;
|
|
9362
9803
|
$xeTable.setRowExpand(row, expanded);
|
|
9363
9804
|
$xeTable.dispatchEvent('toggle-row-expand', {
|
|
9364
9805
|
expanded,
|
|
9365
|
-
column,
|
|
9806
|
+
column: expandColumn,
|
|
9366
9807
|
columnIndex,
|
|
9367
9808
|
$columnIndex,
|
|
9368
9809
|
row,
|
|
@@ -9431,8 +9872,8 @@ const Methods = {
|
|
|
9431
9872
|
toggleMethod
|
|
9432
9873
|
} = expandOpts;
|
|
9433
9874
|
const lazyRests = [];
|
|
9434
|
-
const columnIndex = $xeTable.getColumnIndex(expandColumn);
|
|
9435
|
-
const $columnIndex = $xeTable.getVMColumnIndex(expandColumn);
|
|
9875
|
+
const columnIndex = expandColumn ? $xeTable.getColumnIndex(expandColumn) : -1;
|
|
9876
|
+
const $columnIndex = expandColumn ? $xeTable.getVMColumnIndex(expandColumn) : -1;
|
|
9436
9877
|
if (rows) {
|
|
9437
9878
|
if (!_xeUtils.default.isArray(rows)) {
|
|
9438
9879
|
rows = [rows];
|
|
@@ -9556,6 +9997,104 @@ const Methods = {
|
|
|
9556
9997
|
});
|
|
9557
9998
|
return rest;
|
|
9558
9999
|
},
|
|
10000
|
+
setRowGroups(fieldOrColumns) {
|
|
10001
|
+
const $xeTable = this;
|
|
10002
|
+
const props = $xeTable;
|
|
10003
|
+
const internalData = $xeTable;
|
|
10004
|
+
const {
|
|
10005
|
+
rowGroupConfig
|
|
10006
|
+
} = props;
|
|
10007
|
+
if (!rowGroupConfig) {
|
|
10008
|
+
(0, _log.errLog)('vxe.error.reqProp', ['row-group-config']);
|
|
10009
|
+
return $xeTable.$nextTick();
|
|
10010
|
+
}
|
|
10011
|
+
if (fieldOrColumns) {
|
|
10012
|
+
handleUpdateRowGroup($xeTable, (_xeUtils.default.isArray(fieldOrColumns) ? fieldOrColumns : [fieldOrColumns]).map(fieldOrColumn => {
|
|
10013
|
+
return _xeUtils.default.isString(fieldOrColumn) ? fieldOrColumn : fieldOrColumn.field;
|
|
10014
|
+
}));
|
|
10015
|
+
return loadTableData($xeTable, internalData.tableSynchData, true);
|
|
10016
|
+
}
|
|
10017
|
+
return $xeTable.$nextTick();
|
|
10018
|
+
},
|
|
10019
|
+
clearRowGroups() {
|
|
10020
|
+
const $xeTable = this;
|
|
10021
|
+
const props = $xeTable;
|
|
10022
|
+
const internalData = $xeTable;
|
|
10023
|
+
const {
|
|
10024
|
+
rowGroupConfig
|
|
10025
|
+
} = props;
|
|
10026
|
+
if (!rowGroupConfig) {
|
|
10027
|
+
(0, _log.errLog)('vxe.error.reqProp', ['row-group-config']);
|
|
10028
|
+
return $xeTable.$nextTick();
|
|
10029
|
+
}
|
|
10030
|
+
handleUpdateRowGroup($xeTable, []);
|
|
10031
|
+
return loadTableData($xeTable, internalData.tableSynchData, true);
|
|
10032
|
+
},
|
|
10033
|
+
isRowGroupRecord(row) {
|
|
10034
|
+
const $xeTable = this;
|
|
10035
|
+
const reactData = $xeTable;
|
|
10036
|
+
const {
|
|
10037
|
+
isRowGroupStatus
|
|
10038
|
+
} = reactData;
|
|
10039
|
+
return isRowGroupStatus && row.isAggregate;
|
|
10040
|
+
},
|
|
10041
|
+
isRowGroupExpandByRow(row) {
|
|
10042
|
+
const $xeTable = this;
|
|
10043
|
+
const reactData = $xeTable;
|
|
10044
|
+
const internalData = $xeTable;
|
|
10045
|
+
const {
|
|
10046
|
+
rowGroupExpandedFlag
|
|
10047
|
+
} = reactData;
|
|
10048
|
+
const {
|
|
10049
|
+
rowGroupExpandedMaps
|
|
10050
|
+
} = internalData;
|
|
10051
|
+
return !!rowGroupExpandedFlag && !!rowGroupExpandedMaps[(0, _util.getRowid)($xeTable, row)];
|
|
10052
|
+
},
|
|
10053
|
+
setRowGroupExpand(rows, expanded) {
|
|
10054
|
+
const $xeTable = this;
|
|
10055
|
+
if (rows) {
|
|
10056
|
+
if (!_xeUtils.default.isArray(rows)) {
|
|
10057
|
+
rows = [rows];
|
|
10058
|
+
}
|
|
10059
|
+
return handleRowGroupVirtualExpand($xeTable, rows, expanded);
|
|
10060
|
+
}
|
|
10061
|
+
return $xeTable.$nextTick();
|
|
10062
|
+
},
|
|
10063
|
+
setAllRowGroupExpand(expanded) {
|
|
10064
|
+
const $xeTable = this;
|
|
10065
|
+
const reactData = $xeTable;
|
|
10066
|
+
const internalData = $xeTable;
|
|
10067
|
+
const {
|
|
10068
|
+
tableFullGroupData
|
|
10069
|
+
} = internalData;
|
|
10070
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
10071
|
+
const {
|
|
10072
|
+
mapChildrenField
|
|
10073
|
+
} = rowGroupOpts;
|
|
10074
|
+
const rgExpandedMaps = {};
|
|
10075
|
+
if (expanded && mapChildrenField) {
|
|
10076
|
+
_xeUtils.default.eachTree(tableFullGroupData, row => {
|
|
10077
|
+
if (row[mapChildrenField] && row[mapChildrenField].length) {
|
|
10078
|
+
rgExpandedMaps[(0, _util.getRowid)($xeTable, row)] = row;
|
|
10079
|
+
}
|
|
10080
|
+
}, {
|
|
10081
|
+
children: mapChildrenField
|
|
10082
|
+
});
|
|
10083
|
+
}
|
|
10084
|
+
internalData.rowGroupExpandedMaps = rgExpandedMaps;
|
|
10085
|
+
handleVirtualTreeToList($xeTable);
|
|
10086
|
+
reactData.rowGroupExpandedFlag++;
|
|
10087
|
+
return $xeTable.handleTableData();
|
|
10088
|
+
},
|
|
10089
|
+
clearRowGroupExpand() {
|
|
10090
|
+
const $xeTable = this;
|
|
10091
|
+
const reactData = $xeTable;
|
|
10092
|
+
const internalData = $xeTable;
|
|
10093
|
+
internalData.rowGroupExpandedMaps = {};
|
|
10094
|
+
handleVirtualTreeToList($xeTable);
|
|
10095
|
+
reactData.rowGroupExpandedFlag++;
|
|
10096
|
+
return $xeTable.handleTableData();
|
|
10097
|
+
},
|
|
9559
10098
|
getTreeExpandRecords() {
|
|
9560
10099
|
const $xeTable = this;
|
|
9561
10100
|
const internalData = $xeTable;
|
|
@@ -9623,11 +10162,11 @@ const Methods = {
|
|
|
9623
10162
|
});
|
|
9624
10163
|
}
|
|
9625
10164
|
internalData.treeExpandedMaps = {};
|
|
9626
|
-
reactData.treeExpandedFlag++;
|
|
9627
10165
|
if (transform) {
|
|
9628
10166
|
handleVirtualTreeToList($xeTable);
|
|
9629
|
-
|
|
10167
|
+
$xeTable.handleTableData();
|
|
9630
10168
|
}
|
|
10169
|
+
reactData.treeExpandedFlag++;
|
|
9631
10170
|
return $xeTable.$nextTick();
|
|
9632
10171
|
},
|
|
9633
10172
|
/**
|
|
@@ -9636,6 +10175,7 @@ const Methods = {
|
|
|
9636
10175
|
*/
|
|
9637
10176
|
reloadTreeExpand(row) {
|
|
9638
10177
|
const $xeTable = this;
|
|
10178
|
+
const reactData = $xeTable;
|
|
9639
10179
|
const internalData = $xeTable;
|
|
9640
10180
|
const {
|
|
9641
10181
|
treeExpandLazyLoadedMaps
|
|
@@ -9653,8 +10193,9 @@ const Methods = {
|
|
|
9653
10193
|
}).then(() => {
|
|
9654
10194
|
if (transform) {
|
|
9655
10195
|
handleVirtualTreeToList($xeTable);
|
|
9656
|
-
|
|
10196
|
+
$xeTable.handleTableData();
|
|
9657
10197
|
}
|
|
10198
|
+
reactData.treeExpandedFlag++;
|
|
9658
10199
|
}).then(() => {
|
|
9659
10200
|
return $xeTable.recalculate();
|
|
9660
10201
|
});
|
|
@@ -9669,6 +10210,40 @@ const Methods = {
|
|
|
9669
10210
|
// 即将废弃
|
|
9670
10211
|
return $xeTable.reloadTreeExpand(row);
|
|
9671
10212
|
},
|
|
10213
|
+
/**
|
|
10214
|
+
* 行分组事件
|
|
10215
|
+
*/
|
|
10216
|
+
triggerRowGroupExpandEvent(evnt, params) {
|
|
10217
|
+
const $xeTable = this;
|
|
10218
|
+
const internalData = $xeTable;
|
|
10219
|
+
const {
|
|
10220
|
+
rowGroupExpandedMaps
|
|
10221
|
+
} = internalData;
|
|
10222
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
10223
|
+
const {
|
|
10224
|
+
row,
|
|
10225
|
+
column
|
|
10226
|
+
} = params;
|
|
10227
|
+
const {
|
|
10228
|
+
trigger
|
|
10229
|
+
} = rowGroupOpts;
|
|
10230
|
+
if (trigger === 'manual') {
|
|
10231
|
+
return;
|
|
10232
|
+
}
|
|
10233
|
+
evnt.stopPropagation();
|
|
10234
|
+
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
10235
|
+
const expanded = !rowGroupExpandedMaps[rowid];
|
|
10236
|
+
const columnIndex = $xeTable.getColumnIndex(column);
|
|
10237
|
+
const $columnIndex = $xeTable.getVMColumnIndex(column);
|
|
10238
|
+
$xeTable.setRowGroupExpand(row, expanded);
|
|
10239
|
+
$xeTable.dispatchEvent('toggle-row-group-expand', {
|
|
10240
|
+
expanded,
|
|
10241
|
+
column,
|
|
10242
|
+
columnIndex,
|
|
10243
|
+
$columnIndex,
|
|
10244
|
+
row
|
|
10245
|
+
}, evnt);
|
|
10246
|
+
},
|
|
9672
10247
|
/**
|
|
9673
10248
|
* 展开树节点事件
|
|
9674
10249
|
*/
|
|
@@ -9729,11 +10304,15 @@ const Methods = {
|
|
|
9729
10304
|
* @param {Boolean} expanded 是否展开
|
|
9730
10305
|
*/
|
|
9731
10306
|
setAllTreeExpand(expanded) {
|
|
10307
|
+
const $xeTable = this;
|
|
10308
|
+
const reactData = $xeTable;
|
|
10309
|
+
const internalData = $xeTable;
|
|
9732
10310
|
const {
|
|
9733
|
-
tableFullData
|
|
9734
|
-
|
|
9735
|
-
|
|
10311
|
+
tableFullData
|
|
10312
|
+
} = internalData;
|
|
10313
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
9736
10314
|
const {
|
|
10315
|
+
transform,
|
|
9737
10316
|
lazy
|
|
9738
10317
|
} = treeOpts;
|
|
9739
10318
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -9746,7 +10325,13 @@ const Methods = {
|
|
|
9746
10325
|
}, {
|
|
9747
10326
|
children: childrenField
|
|
9748
10327
|
});
|
|
9749
|
-
return
|
|
10328
|
+
return $xeTable.setTreeExpand(expandeds, expanded).then(() => {
|
|
10329
|
+
if (transform) {
|
|
10330
|
+
handleVirtualTreeToList($xeTable);
|
|
10331
|
+
reactData.treeExpandedFlag++;
|
|
10332
|
+
return $xeTable.recalculate();
|
|
10333
|
+
}
|
|
10334
|
+
});
|
|
9750
10335
|
},
|
|
9751
10336
|
/**
|
|
9752
10337
|
* 设置展开树形节点,二个参数设置这一行展开与否
|
|
@@ -9812,7 +10397,6 @@ const Methods = {
|
|
|
9812
10397
|
} = treeOpts;
|
|
9813
10398
|
const expList = $xeTable.getTreeExpandRecords();
|
|
9814
10399
|
internalData.treeExpandedMaps = {};
|
|
9815
|
-
reactData.treeExpandedFlag++;
|
|
9816
10400
|
if (reserve) {
|
|
9817
10401
|
_xeUtils.default.eachTree(tableFullTreeData, row => handleTreeExpandReserve($xeTable, row, false), {
|
|
9818
10402
|
children: childrenField
|
|
@@ -9821,8 +10405,9 @@ const Methods = {
|
|
|
9821
10405
|
return $xeTable.handleTableData().then(() => {
|
|
9822
10406
|
if (transform) {
|
|
9823
10407
|
handleVirtualTreeToList($xeTable);
|
|
9824
|
-
|
|
10408
|
+
$xeTable.handleTableData();
|
|
9825
10409
|
}
|
|
10410
|
+
reactData.treeExpandedFlag++;
|
|
9826
10411
|
}).then(() => {
|
|
9827
10412
|
if (expList.length) {
|
|
9828
10413
|
$xeTable.recalculate();
|
|
@@ -10713,27 +11298,37 @@ const Methods = {
|
|
|
10713
11298
|
* @param {Row} row 行对象
|
|
10714
11299
|
*/
|
|
10715
11300
|
scrollToTreeRow(row) {
|
|
11301
|
+
const $xeTable = this;
|
|
11302
|
+
const props = $xeTable;
|
|
11303
|
+
const reactData = $xeTable;
|
|
11304
|
+
const internalData = $xeTable;
|
|
10716
11305
|
const {
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
11306
|
+
treeConfig
|
|
11307
|
+
} = props;
|
|
11308
|
+
const {
|
|
11309
|
+
isRowGroupStatus
|
|
11310
|
+
} = reactData;
|
|
11311
|
+
const {
|
|
11312
|
+
tableFullData
|
|
11313
|
+
} = internalData;
|
|
10722
11314
|
const rests = [];
|
|
10723
|
-
if (treeConfig) {
|
|
10724
|
-
const
|
|
10725
|
-
|
|
11315
|
+
if (treeConfig || isRowGroupStatus) {
|
|
11316
|
+
const rowGroupOpts = $xeTable.computeRowGroupOpts;
|
|
11317
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
11318
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
11319
|
+
const matchObj = _xeUtils.default.findTree(tableFullData, item => $xeTable.eqRow(item, row), {
|
|
11320
|
+
children: isRowGroupStatus ? rowGroupOpts.mapChildrenField : childrenField
|
|
10726
11321
|
});
|
|
10727
11322
|
if (matchObj) {
|
|
10728
11323
|
const nodes = matchObj.nodes;
|
|
10729
11324
|
nodes.forEach((row, index) => {
|
|
10730
|
-
if (index < nodes.length - 1 &&
|
|
10731
|
-
rests.push(
|
|
11325
|
+
if (index < nodes.length - 1 && !$xeTable.isTreeExpandByRow(row)) {
|
|
11326
|
+
rests.push($xeTable.setTreeExpand(row, true));
|
|
10732
11327
|
}
|
|
10733
11328
|
});
|
|
10734
11329
|
}
|
|
10735
11330
|
}
|
|
10736
|
-
return Promise.all(rests).then(() => (0, _util.rowToVisible)(
|
|
11331
|
+
return Promise.all(rests).then(() => (0, _util.rowToVisible)($xeTable, row));
|
|
10737
11332
|
},
|
|
10738
11333
|
/**
|
|
10739
11334
|
* 手动清除滚动相关信息,还原到初始状态
|