vxe-table 4.1.0-beta.0 → 4.1.2
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/README.md +1 -0
- package/README.zh-TW.md +1 -0
- package/es/edit/src/hook.js +2 -2
- package/es/export/src/hook.js +24 -0
- package/es/export/src/util.js +20 -8
- package/es/footer/src/footer.js +4 -4
- package/es/form/src/form.js +13 -6
- package/es/form/src/render.js +4 -4
- package/es/grid/src/grid.js +48 -1
- package/es/header/src/header.js +7 -5
- package/es/select/src/select.js +5 -5
- package/es/table/src/body.js +18 -14
- package/es/table/src/props.js +4 -1
- package/es/table/src/table.js +212 -89
- package/es/v-x-e-table/src/conf.js +2 -1
- package/es/validator/src/hook.js +12 -5
- package/helper/vetur/attributes.json +16 -204
- package/helper/vetur/tags.json +3 -65
- package/lib/edit/src/hook.js +2 -2
- package/lib/edit/src/hook.min.js +1 -1
- package/lib/export/src/hook.js +28 -0
- package/lib/export/src/hook.min.js +1 -1
- package/lib/export/src/util.js +21 -7
- package/lib/export/src/util.min.js +1 -1
- package/lib/footer/src/footer.js +4 -4
- package/lib/footer/src/footer.min.js +1 -1
- package/lib/form/src/form.js +23 -6
- package/lib/form/src/form.min.js +1 -1
- package/lib/form/src/render.js +4 -4
- package/lib/form/src/render.min.js +1 -1
- package/lib/grid/src/grid.js +56 -1
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/header/src/header.js +7 -5
- package/lib/header/src/header.min.js +1 -1
- package/lib/index.umd.js +451 -182
- package/lib/index.umd.min.js +1 -1
- package/lib/select/src/select.js +5 -5
- package/lib/table/src/body.js +18 -14
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/props.js +4 -1
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +272 -120
- package/lib/table/src/table.min.js +1 -1
- package/lib/v-x-e-table/src/conf.js +2 -1
- package/lib/v-x-e-table/src/conf.min.js +1 -1
- package/lib/validator/src/hook.js +12 -5
- package/lib/validator/src/hook.min.js +1 -1
- package/package.json +3 -3
- package/packages/edit/src/hook.ts +2 -2
- package/packages/export/src/hook.ts +24 -0
- package/packages/export/src/util.ts +17 -5
- package/packages/footer/src/footer.ts +4 -4
- package/packages/form/src/form.ts +10 -6
- package/packages/form/src/render.ts +4 -4
- package/packages/grid/src/grid.ts +48 -1
- package/packages/header/src/header.ts +7 -5
- package/packages/select/src/select.ts +5 -5
- package/packages/table/src/body.ts +18 -14
- package/packages/table/src/props.ts +4 -1
- package/packages/table/src/table.ts +215 -88
- package/packages/v-x-e-table/src/conf.ts +2 -1
- package/packages/validator/src/hook.ts +9 -5
- package/types/column.d.ts +5 -1
- package/types/form-item.d.ts +5 -1
- package/types/form.d.ts +5 -1
- package/types/modal.d.ts +4 -5
- package/types/table.d.ts +41 -10
- package/types/validator.d.ts +5 -1
package/lib/table/src/table.js
CHANGED
|
@@ -301,6 +301,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
301
301
|
treeExpandedReserveRowMap: {},
|
|
302
302
|
// 完整数据、条件处理后
|
|
303
303
|
tableFullData: [],
|
|
304
|
+
treeFullData: [],
|
|
304
305
|
afterFullData: [],
|
|
305
306
|
tableSynchData: [],
|
|
306
307
|
tableSourceData: [],
|
|
@@ -362,7 +363,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
362
363
|
};
|
|
363
364
|
});
|
|
364
365
|
var computeColumnOpts = (0, _vue.computed)(function () {
|
|
365
|
-
return Object.assign({}, props.columnConfig);
|
|
366
|
+
return Object.assign({}, _conf.default.table.columnConfig, props.columnConfig);
|
|
367
|
+
});
|
|
368
|
+
var computeRowOpts = (0, _vue.computed)(function () {
|
|
369
|
+
return Object.assign({}, _conf.default.table.rowConfig, props.rowConfig);
|
|
366
370
|
});
|
|
367
371
|
var computeResizableOpts = (0, _vue.computed)(function () {
|
|
368
372
|
return Object.assign({}, _conf.default.table.resizableConfig, props.resizableConfig);
|
|
@@ -559,6 +563,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
559
563
|
computeValidOpts: computeValidOpts,
|
|
560
564
|
computeSXOpts: computeSXOpts,
|
|
561
565
|
computeSYOpts: computeSYOpts,
|
|
566
|
+
computeColumnOpts: computeColumnOpts,
|
|
567
|
+
computeRowOpts: computeRowOpts,
|
|
562
568
|
computeResizableOpts: computeResizableOpts,
|
|
563
569
|
computeSeqOpts: computeSeqOpts,
|
|
564
570
|
computeRadioOpts: computeRadioOpts,
|
|
@@ -1312,7 +1318,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
1312
1318
|
$index: -1,
|
|
1313
1319
|
_index: _index,
|
|
1314
1320
|
items: [],
|
|
1315
|
-
parent: null
|
|
1321
|
+
parent: null,
|
|
1322
|
+
level: 0
|
|
1316
1323
|
};
|
|
1317
1324
|
}
|
|
1318
1325
|
});
|
|
@@ -1624,7 +1631,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
1624
1631
|
var tWidth = tableWidth; // 如果是使用优化模式
|
|
1625
1632
|
|
|
1626
1633
|
if (fixedType) {
|
|
1627
|
-
if (
|
|
1634
|
+
if (scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow)) {
|
|
1628
1635
|
if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
|
|
1629
1636
|
tableColumn = fixedColumn;
|
|
1630
1637
|
} else {
|
|
@@ -1725,16 +1732,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
1725
1732
|
var showTitle = cellOverflow === 'title';
|
|
1726
1733
|
var showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
|
|
1727
1734
|
var hasEllipsis_1 = showTitle || showTooltip || showEllipsis;
|
|
1728
|
-
var listElem = elemStore[name + "-" + layout + "-list"]; //
|
|
1735
|
+
var listElem = elemStore[name + "-" + layout + "-list"]; // 纵向虚拟滚动不支持动态行高
|
|
1729
1736
|
|
|
1730
|
-
if (
|
|
1731
|
-
|
|
1732
|
-
hasEllipsis_1 = true;
|
|
1733
|
-
}
|
|
1734
|
-
} else {
|
|
1735
|
-
if ((scrollXLoad || scrollYLoad) && !hasEllipsis_1) {
|
|
1736
|
-
hasEllipsis_1 = true;
|
|
1737
|
-
}
|
|
1737
|
+
if (scrollYLoad && !hasEllipsis_1) {
|
|
1738
|
+
hasEllipsis_1 = true;
|
|
1738
1739
|
}
|
|
1739
1740
|
|
|
1740
1741
|
if (listElem) {
|
|
@@ -2060,7 +2061,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2060
2061
|
}
|
|
2061
2062
|
|
|
2062
2063
|
if (childRecords) {
|
|
2063
|
-
tableMethods.
|
|
2064
|
+
tableMethods.loadTreeChildren(row, childRecords).then(function (childRows) {
|
|
2064
2065
|
if (childRows.length && $xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
2065
2066
|
treeExpandeds.push(row);
|
|
2066
2067
|
} // 如果当前节点已选中,则展开后子节点也被选中
|
|
@@ -2221,30 +2222,67 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2221
2222
|
scrollXStore = internalData.scrollXStore,
|
|
2222
2223
|
lastScrollLeft = internalData.lastScrollLeft,
|
|
2223
2224
|
lastScrollTop = internalData.lastScrollTop;
|
|
2224
|
-
var
|
|
2225
|
-
var
|
|
2226
|
-
var
|
|
2225
|
+
var treeOpts = computeTreeOpts.value;
|
|
2226
|
+
var transform = treeOpts.transform;
|
|
2227
|
+
var treeData = [];
|
|
2228
|
+
var fullData = datas ? datas.slice(0) : [];
|
|
2229
|
+
|
|
2230
|
+
if (treeConfig) {
|
|
2231
|
+
if (transform) {
|
|
2232
|
+
// 树结构自动转换
|
|
2233
|
+
if (process.env.NODE_ENV === 'development') {
|
|
2234
|
+
if (!treeOpts.rowtKey) {
|
|
2235
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.rowtKey']);
|
|
2236
|
+
}
|
|
2237
|
+
|
|
2238
|
+
if (!treeOpts.parentKey) {
|
|
2239
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.parentKey']);
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2242
|
+
if (!treeOpts.children) {
|
|
2243
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.children']);
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
fullData.forEach(function (row) {
|
|
2247
|
+
if (row[treeOpts.children] && row[treeOpts.children].length) {
|
|
2248
|
+
(0, _utils.warnLog)('vxe.error.errConflicts', ['tree-config.transform', "row." + treeOpts.children]);
|
|
2249
|
+
}
|
|
2250
|
+
});
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
treeData = _xeUtils.default.toArrayTree(fullData, {
|
|
2254
|
+
key: treeOpts.rowtKey,
|
|
2255
|
+
parentKey: treeOpts.parentKey,
|
|
2256
|
+
children: treeOpts.children
|
|
2257
|
+
});
|
|
2258
|
+
fullData = treeData.slice(0);
|
|
2259
|
+
} else {
|
|
2260
|
+
treeData = fullData.slice(0);
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2227
2264
|
scrollYStore.startIndex = 0;
|
|
2228
2265
|
scrollYStore.endIndex = 1;
|
|
2229
2266
|
scrollXStore.startIndex = 0;
|
|
2230
2267
|
scrollXStore.endIndex = 1;
|
|
2231
2268
|
editStore.insertList = [];
|
|
2232
|
-
editStore.removeList = [];
|
|
2269
|
+
editStore.removeList = [];
|
|
2270
|
+
var sYLoad = updateScrollYStatus(fullData);
|
|
2271
|
+
reactData.scrollYLoad = sYLoad; // 全量数据
|
|
2233
2272
|
|
|
2234
|
-
internalData.tableFullData =
|
|
2273
|
+
internalData.tableFullData = fullData;
|
|
2274
|
+
internalData.treeFullData = treeData; // 缓存数据
|
|
2235
2275
|
|
|
2236
|
-
tablePrivateMethods.
|
|
2276
|
+
tablePrivateMethods.cacheRowMap(true); // 原始数据
|
|
2237
2277
|
|
|
2238
|
-
internalData.tableSynchData = datas;
|
|
2278
|
+
internalData.tableSynchData = datas; // 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
2239
2279
|
|
|
2240
2280
|
if (keepSource) {
|
|
2241
|
-
internalData.tableSourceData = _xeUtils.default.clone(
|
|
2281
|
+
internalData.tableSourceData = _xeUtils.default.clone(fullData, true);
|
|
2242
2282
|
}
|
|
2243
2283
|
|
|
2244
|
-
reactData.scrollYLoad = scrollYLoad;
|
|
2245
|
-
|
|
2246
2284
|
if (process.env.NODE_ENV === 'development') {
|
|
2247
|
-
if (
|
|
2285
|
+
if (sYLoad) {
|
|
2248
2286
|
if (!(props.height || props.maxHeight)) {
|
|
2249
2287
|
(0, _utils.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
|
|
2250
2288
|
}
|
|
@@ -2274,8 +2312,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2274
2312
|
}).then(function () {
|
|
2275
2313
|
computeScrollLoad();
|
|
2276
2314
|
}).then(function () {
|
|
2277
|
-
//
|
|
2278
|
-
if (
|
|
2315
|
+
// 是否启用了虚拟滚动
|
|
2316
|
+
if (sYLoad) {
|
|
2279
2317
|
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
2280
2318
|
}
|
|
2281
2319
|
|
|
@@ -2286,7 +2324,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2286
2324
|
return tableMethods.recalculate();
|
|
2287
2325
|
}).then(function () {
|
|
2288
2326
|
// 是否变更虚拟滚动
|
|
2289
|
-
if (oldScrollYLoad ===
|
|
2327
|
+
if (oldScrollYLoad === sYLoad) {
|
|
2290
2328
|
(0, _util.restoreScrollLocation)($xetable, lastScrollLeft, lastScrollTop).then(resolve);
|
|
2291
2329
|
} else {
|
|
2292
2330
|
setTimeout(function () {
|
|
@@ -2555,6 +2593,136 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2555
2593
|
return tableMethods.recalculate();
|
|
2556
2594
|
});
|
|
2557
2595
|
};
|
|
2596
|
+
|
|
2597
|
+
var updateScrollYStatus = function updateScrollYStatus(fullData) {
|
|
2598
|
+
var treeConfig = props.treeConfig;
|
|
2599
|
+
var sYOpts = computeSYOpts.value;
|
|
2600
|
+
var treeOpts = computeTreeOpts.value;
|
|
2601
|
+
var transform = treeOpts.transform;
|
|
2602
|
+
var scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < fullData.length;
|
|
2603
|
+
reactData.scrollYLoad = scrollYLoad;
|
|
2604
|
+
return scrollYLoad;
|
|
2605
|
+
};
|
|
2606
|
+
|
|
2607
|
+
var updateVirtualTreeData = function updateVirtualTreeData() {
|
|
2608
|
+
var oldScrollYLoad = reactData.scrollYLoad,
|
|
2609
|
+
treeExpandeds = reactData.treeExpandeds;
|
|
2610
|
+
var treeFullData = internalData.treeFullData;
|
|
2611
|
+
var treeOpts = computeTreeOpts.value;
|
|
2612
|
+
var fullData = [];
|
|
2613
|
+
|
|
2614
|
+
_xeUtils.default.eachTree(treeFullData, function (row, index, items, path, parent) {
|
|
2615
|
+
if (!parent || $xetable.findRowIndexOf(treeExpandeds, parent) > -1) {
|
|
2616
|
+
fullData.push(row);
|
|
2617
|
+
}
|
|
2618
|
+
}, treeOpts);
|
|
2619
|
+
|
|
2620
|
+
var scrollYLoad = updateScrollYStatus(fullData);
|
|
2621
|
+
internalData.tableFullData = scrollYLoad ? fullData : treeFullData;
|
|
2622
|
+
|
|
2623
|
+
if (scrollYLoad || oldScrollYLoad !== scrollYLoad) {
|
|
2624
|
+
return tablePrivateMethods.handleTableData(true).then(function () {
|
|
2625
|
+
return tableMethods.recalculate();
|
|
2626
|
+
});
|
|
2627
|
+
}
|
|
2628
|
+
|
|
2629
|
+
return (0, _vue.nextTick)();
|
|
2630
|
+
};
|
|
2631
|
+
/**
|
|
2632
|
+
* 展开与收起树节点
|
|
2633
|
+
* @param rows
|
|
2634
|
+
* @param expanded
|
|
2635
|
+
* @returns
|
|
2636
|
+
*/
|
|
2637
|
+
|
|
2638
|
+
|
|
2639
|
+
var handleBaseTreeExpand = function handleBaseTreeExpand(rows, expanded) {
|
|
2640
|
+
var treeExpandeds = reactData.treeExpandeds,
|
|
2641
|
+
treeLazyLoadeds = reactData.treeLazyLoadeds,
|
|
2642
|
+
treeNodeColumn = reactData.treeNodeColumn;
|
|
2643
|
+
var fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
2644
|
+
tableFullData = internalData.tableFullData;
|
|
2645
|
+
var treeOpts = computeTreeOpts.value;
|
|
2646
|
+
var reserve = treeOpts.reserve,
|
|
2647
|
+
lazy = treeOpts.lazy,
|
|
2648
|
+
hasChild = treeOpts.hasChild,
|
|
2649
|
+
children = treeOpts.children,
|
|
2650
|
+
accordion = treeOpts.accordion,
|
|
2651
|
+
toggleMethod = treeOpts.toggleMethod;
|
|
2652
|
+
var result = [];
|
|
2653
|
+
var columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
2654
|
+
var $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
2655
|
+
var validRows = toggleMethod ? rows.filter(function (row) {
|
|
2656
|
+
return toggleMethod({
|
|
2657
|
+
$table: $xetable,
|
|
2658
|
+
expanded: expanded,
|
|
2659
|
+
column: treeNodeColumn,
|
|
2660
|
+
columnIndex: columnIndex,
|
|
2661
|
+
$columnIndex: $columnIndex,
|
|
2662
|
+
row: row
|
|
2663
|
+
});
|
|
2664
|
+
}) : rows;
|
|
2665
|
+
|
|
2666
|
+
if (accordion) {
|
|
2667
|
+
validRows = validRows.length ? [validRows[validRows.length - 1]] : []; // 同一级只能展开一个
|
|
2668
|
+
|
|
2669
|
+
var matchObj_1 = _xeUtils.default.findTree(tableFullData, function (item) {
|
|
2670
|
+
return item === validRows[0];
|
|
2671
|
+
}, treeOpts);
|
|
2672
|
+
|
|
2673
|
+
if (matchObj_1) {
|
|
2674
|
+
_xeUtils.default.remove(treeExpandeds, function (item) {
|
|
2675
|
+
return matchObj_1.items.indexOf(item) > -1;
|
|
2676
|
+
});
|
|
2677
|
+
}
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
if (expanded) {
|
|
2681
|
+
validRows.forEach(function (row) {
|
|
2682
|
+
if ($xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
2683
|
+
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
2684
|
+
var isLoad = lazy && row[hasChild] && !rest.treeLoaded && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1; // 是否使用懒加载
|
|
2685
|
+
|
|
2686
|
+
if (isLoad) {
|
|
2687
|
+
result.push(handleAsyncTreeExpandChilds(row));
|
|
2688
|
+
} else {
|
|
2689
|
+
if (row[children] && row[children].length) {
|
|
2690
|
+
treeExpandeds.push(row);
|
|
2691
|
+
}
|
|
2692
|
+
}
|
|
2693
|
+
}
|
|
2694
|
+
});
|
|
2695
|
+
} else {
|
|
2696
|
+
_xeUtils.default.remove(treeExpandeds, function (row) {
|
|
2697
|
+
return $xetable.findRowIndexOf(validRows, row) > -1;
|
|
2698
|
+
});
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
if (reserve) {
|
|
2702
|
+
validRows.forEach(function (row) {
|
|
2703
|
+
return handleTreeExpandReserve(row, expanded);
|
|
2704
|
+
});
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
return Promise.all(result).then(function () {
|
|
2708
|
+
return tableMethods.recalculate();
|
|
2709
|
+
});
|
|
2710
|
+
};
|
|
2711
|
+
/**
|
|
2712
|
+
* 虚拟树的展开与收起
|
|
2713
|
+
* @param rows
|
|
2714
|
+
* @param expanded
|
|
2715
|
+
* @returns
|
|
2716
|
+
*/
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
var handleVirtualTreeExpand = function handleVirtualTreeExpand(rows, expanded) {
|
|
2720
|
+
return handleBaseTreeExpand(rows, expanded).then(function () {
|
|
2721
|
+
return updateVirtualTreeData();
|
|
2722
|
+
}).then(function () {
|
|
2723
|
+
return tableMethods.recalculate();
|
|
2724
|
+
});
|
|
2725
|
+
};
|
|
2558
2726
|
/**
|
|
2559
2727
|
* 纵向 Y 可视渲染处理
|
|
2560
2728
|
*/
|
|
@@ -2704,7 +2872,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2704
2872
|
_xeUtils.default.clear(row, undefined);
|
|
2705
2873
|
|
|
2706
2874
|
Object.assign(row, tablePrivateMethods.defineField(Object.assign({}, record)));
|
|
2707
|
-
tablePrivateMethods.
|
|
2875
|
+
tablePrivateMethods.cacheRowMap(true);
|
|
2708
2876
|
} else {
|
|
2709
2877
|
_xeUtils.default.destructuring(oRow, _xeUtils.default.clone(row, true));
|
|
2710
2878
|
}
|
|
@@ -2724,15 +2892,16 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2724
2892
|
/**
|
|
2725
2893
|
* 用于树结构,给行数据加载子节点
|
|
2726
2894
|
*/
|
|
2727
|
-
|
|
2895
|
+
loadTreeChildren: function loadTreeChildren(row, childRecords) {
|
|
2896
|
+
var keepSource = props.keepSource;
|
|
2897
|
+
var tableSourceData = internalData.tableSourceData,
|
|
2898
|
+
fullDataRowIdData = internalData.fullDataRowIdData,
|
|
2899
|
+
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2900
|
+
var treeOpts = computeTreeOpts.value;
|
|
2901
|
+
var children = treeOpts.children;
|
|
2902
|
+
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
2903
|
+
var parentLevel = rest ? rest.level : 0;
|
|
2728
2904
|
return tableMethods.createData(childRecords).then(function (rows) {
|
|
2729
|
-
var keepSource = props.keepSource;
|
|
2730
|
-
var fullDataRowIdData = internalData.fullDataRowIdData,
|
|
2731
|
-
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2732
|
-
var tableSourceData = internalData.tableSourceData;
|
|
2733
|
-
var treeOpts = computeTreeOpts.value;
|
|
2734
|
-
var children = treeOpts.children;
|
|
2735
|
-
|
|
2736
2905
|
if (keepSource) {
|
|
2737
2906
|
var rowid_1 = (0, _util.getRowid)($xetable, row);
|
|
2738
2907
|
|
|
@@ -2745,7 +2914,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2745
2914
|
}
|
|
2746
2915
|
}
|
|
2747
2916
|
|
|
2748
|
-
_xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent) {
|
|
2917
|
+
_xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
|
|
2749
2918
|
var rowid = (0, _util.getRowid)($xetable, childRow);
|
|
2750
2919
|
var rest = {
|
|
2751
2920
|
row: childRow,
|
|
@@ -2754,7 +2923,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2754
2923
|
_index: -1,
|
|
2755
2924
|
$index: -1,
|
|
2756
2925
|
items: items,
|
|
2757
|
-
parent: parent
|
|
2926
|
+
parent: parent,
|
|
2927
|
+
level: parentLevel + nodes.length
|
|
2758
2928
|
};
|
|
2759
2929
|
fullDataRowIdData[rowid] = rest;
|
|
2760
2930
|
fullAllDataRowIdData[rowid] = rest;
|
|
@@ -4100,10 +4270,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4100
4270
|
},
|
|
4101
4271
|
|
|
4102
4272
|
/**
|
|
4103
|
-
*
|
|
4273
|
+
* 重新懒加载展开行,并展开内容
|
|
4104
4274
|
* @param {Row} row 行对象
|
|
4105
4275
|
*/
|
|
4106
|
-
|
|
4276
|
+
reloadRowExpand: function reloadRowExpand(row) {
|
|
4107
4277
|
var expandLazyLoadeds = reactData.expandLazyLoadeds;
|
|
4108
4278
|
var expandOpts = computeExpandOpts.value;
|
|
4109
4279
|
var lazy = expandOpts.lazy;
|
|
@@ -4116,6 +4286,14 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4116
4286
|
|
|
4117
4287
|
return (0, _vue.nextTick)();
|
|
4118
4288
|
},
|
|
4289
|
+
reloadExpandContent: function reloadExpandContent(row) {
|
|
4290
|
+
if (process.env.NODE_ENV === 'development') {
|
|
4291
|
+
(0, _utils.warnLog)('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand']);
|
|
4292
|
+
} // 即将废弃
|
|
4293
|
+
|
|
4294
|
+
|
|
4295
|
+
return tableMethods.reloadRowExpand(row);
|
|
4296
|
+
},
|
|
4119
4297
|
|
|
4120
4298
|
/**
|
|
4121
4299
|
* 切换展开行
|
|
@@ -4281,23 +4459,38 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4281
4459
|
},
|
|
4282
4460
|
|
|
4283
4461
|
/**
|
|
4284
|
-
*
|
|
4462
|
+
* 重新懒加载树节点,并展开该节点
|
|
4285
4463
|
* @param {Row} row 行对象
|
|
4286
4464
|
*/
|
|
4287
|
-
|
|
4465
|
+
reloadTreeExpand: function reloadTreeExpand(row) {
|
|
4288
4466
|
var treeLazyLoadeds = reactData.treeLazyLoadeds;
|
|
4289
4467
|
var treeOpts = computeTreeOpts.value;
|
|
4290
|
-
var
|
|
4468
|
+
var transform = treeOpts.transform,
|
|
4469
|
+
lazy = treeOpts.lazy,
|
|
4291
4470
|
hasChild = treeOpts.hasChild;
|
|
4292
4471
|
|
|
4293
4472
|
if (lazy && row[hasChild] && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1) {
|
|
4294
4473
|
tableMethods.clearTreeExpandLoaded(row).then(function () {
|
|
4295
4474
|
return handleAsyncTreeExpandChilds(row);
|
|
4475
|
+
}).then(function () {
|
|
4476
|
+
if (transform) {
|
|
4477
|
+
return updateVirtualTreeData();
|
|
4478
|
+
}
|
|
4479
|
+
}).then(function () {
|
|
4480
|
+
return tableMethods.recalculate();
|
|
4296
4481
|
});
|
|
4297
4482
|
}
|
|
4298
4483
|
|
|
4299
4484
|
return (0, _vue.nextTick)();
|
|
4300
4485
|
},
|
|
4486
|
+
reloadTreeChilds: function reloadTreeChilds(row) {
|
|
4487
|
+
if (process.env.NODE_ENV === 'development') {
|
|
4488
|
+
(0, _utils.warnLog)('vxe.error.delFunc', ['reloadTreeChilds', 'reloadTreeExpand']);
|
|
4489
|
+
} // 即将废弃
|
|
4490
|
+
|
|
4491
|
+
|
|
4492
|
+
return tableMethods.reloadTreeExpand(row);
|
|
4493
|
+
},
|
|
4301
4494
|
|
|
4302
4495
|
/**
|
|
4303
4496
|
* 切换/展开树节点
|
|
@@ -4336,21 +4529,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4336
4529
|
* @param {Boolean} expanded 是否展开
|
|
4337
4530
|
*/
|
|
4338
4531
|
setTreeExpand: function setTreeExpand(rows, expanded) {
|
|
4339
|
-
var treeExpandeds = reactData.treeExpandeds,
|
|
4340
|
-
treeLazyLoadeds = reactData.treeLazyLoadeds,
|
|
4341
|
-
treeNodeColumn = reactData.treeNodeColumn;
|
|
4342
|
-
var fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
4343
|
-
tableFullData = internalData.tableFullData;
|
|
4344
4532
|
var treeOpts = computeTreeOpts.value;
|
|
4345
|
-
var
|
|
4346
|
-
lazy = treeOpts.lazy,
|
|
4347
|
-
hasChild = treeOpts.hasChild,
|
|
4348
|
-
children = treeOpts.children,
|
|
4349
|
-
accordion = treeOpts.accordion,
|
|
4350
|
-
toggleMethod = treeOpts.toggleMethod;
|
|
4351
|
-
var result = [];
|
|
4352
|
-
var columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
4353
|
-
var $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
4533
|
+
var transform = treeOpts.transform;
|
|
4354
4534
|
|
|
4355
4535
|
if (rows) {
|
|
4356
4536
|
if (!_xeUtils.default.isArray(rows)) {
|
|
@@ -4358,61 +4538,12 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4358
4538
|
}
|
|
4359
4539
|
|
|
4360
4540
|
if (rows.length) {
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
expanded: expanded,
|
|
4365
|
-
column: treeNodeColumn,
|
|
4366
|
-
columnIndex: columnIndex,
|
|
4367
|
-
$columnIndex: $columnIndex,
|
|
4368
|
-
row: row
|
|
4369
|
-
});
|
|
4370
|
-
}) : rows;
|
|
4371
|
-
|
|
4372
|
-
if (accordion) {
|
|
4373
|
-
validRows_2 = validRows_2.length ? [validRows_2[validRows_2.length - 1]] : []; // 同一级只能展开一个
|
|
4374
|
-
|
|
4375
|
-
var matchObj_1 = _xeUtils.default.findTree(tableFullData, function (item) {
|
|
4376
|
-
return item === validRows_2[0];
|
|
4377
|
-
}, treeOpts);
|
|
4378
|
-
|
|
4379
|
-
if (matchObj_1) {
|
|
4380
|
-
_xeUtils.default.remove(treeExpandeds, function (item) {
|
|
4381
|
-
return matchObj_1.items.indexOf(item) > -1;
|
|
4382
|
-
});
|
|
4383
|
-
}
|
|
4384
|
-
}
|
|
4385
|
-
|
|
4386
|
-
if (expanded) {
|
|
4387
|
-
validRows_2.forEach(function (row) {
|
|
4388
|
-
if ($xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
4389
|
-
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
4390
|
-
var isLoad = lazy && row[hasChild] && !rest.treeLoaded && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1; // 是否使用懒加载
|
|
4391
|
-
|
|
4392
|
-
if (isLoad) {
|
|
4393
|
-
result.push(handleAsyncTreeExpandChilds(row));
|
|
4394
|
-
} else {
|
|
4395
|
-
if (row[children] && row[children].length) {
|
|
4396
|
-
treeExpandeds.push(row);
|
|
4397
|
-
}
|
|
4398
|
-
}
|
|
4399
|
-
}
|
|
4400
|
-
});
|
|
4541
|
+
// 如果为虚拟树
|
|
4542
|
+
if (transform) {
|
|
4543
|
+
return handleVirtualTreeExpand(rows, expanded);
|
|
4401
4544
|
} else {
|
|
4402
|
-
|
|
4403
|
-
return $xetable.findRowIndexOf(validRows_2, row) > -1;
|
|
4404
|
-
});
|
|
4545
|
+
return handleBaseTreeExpand(rows, expanded);
|
|
4405
4546
|
}
|
|
4406
|
-
|
|
4407
|
-
if (reserve) {
|
|
4408
|
-
validRows_2.forEach(function (row) {
|
|
4409
|
-
return handleTreeExpandReserve(row, expanded);
|
|
4410
|
-
});
|
|
4411
|
-
}
|
|
4412
|
-
|
|
4413
|
-
return Promise.all(result).then(function () {
|
|
4414
|
-
return tableMethods.recalculate();
|
|
4415
|
-
});
|
|
4416
4547
|
}
|
|
4417
4548
|
}
|
|
4418
4549
|
|
|
@@ -4433,19 +4564,19 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4433
4564
|
*/
|
|
4434
4565
|
clearTreeExpand: function clearTreeExpand() {
|
|
4435
4566
|
var treeExpandeds = reactData.treeExpandeds;
|
|
4436
|
-
var
|
|
4567
|
+
var treeFullData = internalData.treeFullData;
|
|
4437
4568
|
var treeOpts = computeTreeOpts.value;
|
|
4438
4569
|
var reserve = treeOpts.reserve;
|
|
4439
4570
|
var isExists = treeExpandeds.length;
|
|
4440
4571
|
reactData.treeExpandeds = [];
|
|
4441
4572
|
|
|
4442
4573
|
if (reserve) {
|
|
4443
|
-
_xeUtils.default.eachTree(
|
|
4574
|
+
_xeUtils.default.eachTree(treeFullData, function (row) {
|
|
4444
4575
|
return handleTreeExpandReserve(row, false);
|
|
4445
4576
|
}, treeOpts);
|
|
4446
4577
|
}
|
|
4447
4578
|
|
|
4448
|
-
return (
|
|
4579
|
+
return updateVirtualTreeData().then(function () {
|
|
4449
4580
|
if (isExists) {
|
|
4450
4581
|
tableMethods.recalculate();
|
|
4451
4582
|
}
|
|
@@ -5432,16 +5563,17 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5432
5563
|
* 更新数据行的 Map
|
|
5433
5564
|
* 牺牲数据组装的耗时,用来换取使用过程中的流畅
|
|
5434
5565
|
*/
|
|
5435
|
-
|
|
5566
|
+
cacheRowMap: function cacheRowMap(isSource) {
|
|
5436
5567
|
var treeConfig = props.treeConfig;
|
|
5437
5568
|
var treeOpts = computeTreeOpts.value;
|
|
5438
5569
|
var fullDataRowIdData = internalData.fullDataRowIdData,
|
|
5439
5570
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
5440
|
-
tableFullData = internalData.tableFullData
|
|
5571
|
+
tableFullData = internalData.tableFullData,
|
|
5572
|
+
treeFullData = internalData.treeFullData;
|
|
5441
5573
|
var rowkey = (0, _util.getRowkey)($xetable);
|
|
5442
5574
|
var isLazy = treeConfig && treeOpts.lazy;
|
|
5443
5575
|
|
|
5444
|
-
var handleCache = function handleCache(row, index, items, path, parent) {
|
|
5576
|
+
var handleCache = function handleCache(row, index, items, path, parent, nodes) {
|
|
5445
5577
|
var rowid = (0, _util.getRowid)($xetable, row);
|
|
5446
5578
|
|
|
5447
5579
|
if ((0, _utils.eqEmptyValue)(rowid)) {
|
|
@@ -5461,7 +5593,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5461
5593
|
_index: -1,
|
|
5462
5594
|
$index: -1,
|
|
5463
5595
|
items: items,
|
|
5464
|
-
parent: parent
|
|
5596
|
+
parent: parent,
|
|
5597
|
+
level: nodes ? nodes.length - 1 : 0
|
|
5465
5598
|
};
|
|
5466
5599
|
|
|
5467
5600
|
if (isSource) {
|
|
@@ -5478,7 +5611,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5478
5611
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData = {};
|
|
5479
5612
|
|
|
5480
5613
|
if (treeConfig) {
|
|
5481
|
-
_xeUtils.default.eachTree(
|
|
5614
|
+
_xeUtils.default.eachTree(treeFullData, handleCache, treeOpts);
|
|
5482
5615
|
} else {
|
|
5483
5616
|
tableFullData.forEach(handleCache);
|
|
5484
5617
|
}
|
|
@@ -5880,10 +6013,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5880
6013
|
var column = params.column;
|
|
5881
6014
|
var titleHelp = column.titleHelp;
|
|
5882
6015
|
|
|
5883
|
-
if (titleHelp.message) {
|
|
6016
|
+
if (titleHelp.content || titleHelp.message) {
|
|
5884
6017
|
var tooltipStore = internalData.tooltipStore;
|
|
5885
6018
|
var $tooltip = refTooltip.value;
|
|
5886
|
-
var content = (0, _utils.getFuncText)(titleHelp.message);
|
|
6019
|
+
var content = (0, _utils.getFuncText)(titleHelp.content || titleHelp.message);
|
|
5887
6020
|
handleTargetEnterEvent();
|
|
5888
6021
|
tooltipStore.visible = true;
|
|
5889
6022
|
|
|
@@ -6628,6 +6761,20 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6628
6761
|
return false;
|
|
6629
6762
|
}
|
|
6630
6763
|
};
|
|
6764
|
+
|
|
6765
|
+
if (process.env.NODE_ENV === 'development') {
|
|
6766
|
+
'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(function (name) {
|
|
6767
|
+
$xetable[name] = function () {
|
|
6768
|
+
(0, _utils.errLog)('vxe.error.reqModule', ['Export']);
|
|
6769
|
+
};
|
|
6770
|
+
});
|
|
6771
|
+
'clearValidate,fullValidate,validate'.split(',').forEach(function (name) {
|
|
6772
|
+
$xetable[name] = function () {
|
|
6773
|
+
(0, _utils.errLog)('vxe.error.reqModule', ['Validator']);
|
|
6774
|
+
};
|
|
6775
|
+
});
|
|
6776
|
+
}
|
|
6777
|
+
|
|
6631
6778
|
Object.assign($xetable, tableMethods, tablePrivateMethods);
|
|
6632
6779
|
/**
|
|
6633
6780
|
* 渲染浮固定列
|
|
@@ -6891,6 +7038,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6891
7038
|
if (process.env.NODE_ENV === 'development') {
|
|
6892
7039
|
var customOpts = computeCustomOpts.value;
|
|
6893
7040
|
var mouseOpts = computeMouseOpts.value;
|
|
7041
|
+
var rowOpts = computeRowOpts.value;
|
|
6894
7042
|
|
|
6895
7043
|
if (!props.id && props.customConfig && (customOpts.storage === true || customOpts.storage && customOpts.storage.resizable || customOpts.storage && customOpts.storage.visible)) {
|
|
6896
7044
|
(0, _utils.errLog)('vxe.error.reqProp', ['id']);
|
|
@@ -6900,6 +7048,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6900
7048
|
(0, _utils.errLog)('vxe.error.noTree', ['checkbox-config.range']);
|
|
6901
7049
|
}
|
|
6902
7050
|
|
|
7051
|
+
if (rowOpts.height && !props.showOverflow) {
|
|
7052
|
+
(0, _utils.warnLog)('vxe.error.notProp', ['table.show-overflow']);
|
|
7053
|
+
}
|
|
7054
|
+
|
|
6903
7055
|
if (!$xetable.handleUpdateCellAreas) {
|
|
6904
7056
|
if (props.clipConfig) {
|
|
6905
7057
|
(0, _utils.warnLog)('vxe.error.notProp', ['clip-config']);
|