vxe-table 4.1.0 → 4.1.3
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/cell.js +70 -54
- package/es/table/src/props.js +4 -1
- package/es/table/src/table.js +208 -97
- package/es/v-x-e-table/src/conf.js +2 -3
- package/es/validator/src/hook.js +12 -5
- package/helper/vetur/attributes.json +16 -8
- package/helper/vetur/tags.json +2 -0
- 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 +536 -220
- 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/cell.js +92 -35
- package/lib/table/src/cell.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 +265 -133
- package/lib/table/src/table.min.js +1 -1
- package/lib/v-x-e-table/src/conf.js +2 -3
- 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 +2 -2
- 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/cell.ts +77 -44
- package/packages/table/src/props.ts +4 -1
- package/packages/table/src/table.ts +211 -96
- package/packages/v-x-e-table/src/conf.ts +2 -3
- 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 +49 -14
- 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,50 +2222,67 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2221
2222
|
scrollXStore = internalData.scrollXStore,
|
|
2222
2223
|
lastScrollLeft = internalData.lastScrollLeft,
|
|
2223
2224
|
lastScrollTop = internalData.lastScrollTop;
|
|
2224
|
-
var sYOpts = computeSYOpts.value;
|
|
2225
2225
|
var treeOpts = computeTreeOpts.value;
|
|
2226
|
+
var transform = treeOpts.transform;
|
|
2227
|
+
var treeData = [];
|
|
2228
|
+
var fullData = datas ? datas.slice(0) : [];
|
|
2226
2229
|
|
|
2227
|
-
if (treeConfig
|
|
2228
|
-
if (
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2230
|
+
if (treeConfig) {
|
|
2231
|
+
if (transform) {
|
|
2232
|
+
// 树结构自动转换
|
|
2233
|
+
if (process.env.NODE_ENV === 'development') {
|
|
2234
|
+
if (!treeOpts.rowField) {
|
|
2235
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.rowField']);
|
|
2236
|
+
}
|
|
2232
2237
|
|
|
2233
|
-
|
|
2234
|
-
|
|
2238
|
+
if (!treeOpts.parentField) {
|
|
2239
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.parentField']);
|
|
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
|
+
});
|
|
2235
2251
|
}
|
|
2236
|
-
}
|
|
2237
2252
|
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2253
|
+
treeData = _xeUtils.default.toArrayTree(fullData, {
|
|
2254
|
+
key: treeOpts.rowField,
|
|
2255
|
+
parentKey: treeOpts.parentField,
|
|
2256
|
+
children: treeOpts.children
|
|
2257
|
+
});
|
|
2258
|
+
fullData = treeData.slice(0);
|
|
2259
|
+
} else {
|
|
2260
|
+
treeData = fullData.slice(0);
|
|
2261
|
+
}
|
|
2243
2262
|
}
|
|
2244
2263
|
|
|
2245
|
-
var tableFullData = datas ? datas.slice(0) : [];
|
|
2246
|
-
var scrollYLoad = !treeConfig && !!sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
|
|
2247
2264
|
scrollYStore.startIndex = 0;
|
|
2248
2265
|
scrollYStore.endIndex = 1;
|
|
2249
2266
|
scrollXStore.startIndex = 0;
|
|
2250
2267
|
scrollXStore.endIndex = 1;
|
|
2251
2268
|
editStore.insertList = [];
|
|
2252
|
-
editStore.removeList = [];
|
|
2269
|
+
editStore.removeList = [];
|
|
2270
|
+
var sYLoad = updateScrollYStatus(fullData);
|
|
2271
|
+
reactData.scrollYLoad = sYLoad; // 全量数据
|
|
2253
2272
|
|
|
2254
|
-
internalData.tableFullData =
|
|
2273
|
+
internalData.tableFullData = fullData;
|
|
2274
|
+
internalData.treeFullData = treeData; // 缓存数据
|
|
2255
2275
|
|
|
2256
|
-
tablePrivateMethods.
|
|
2276
|
+
tablePrivateMethods.cacheRowMap(true); // 原始数据
|
|
2257
2277
|
|
|
2258
|
-
internalData.tableSynchData = datas;
|
|
2278
|
+
internalData.tableSynchData = datas; // 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
2259
2279
|
|
|
2260
2280
|
if (keepSource) {
|
|
2261
|
-
internalData.tableSourceData = _xeUtils.default.clone(
|
|
2281
|
+
internalData.tableSourceData = _xeUtils.default.clone(fullData, true);
|
|
2262
2282
|
}
|
|
2263
2283
|
|
|
2264
|
-
reactData.scrollYLoad = scrollYLoad;
|
|
2265
|
-
|
|
2266
2284
|
if (process.env.NODE_ENV === 'development') {
|
|
2267
|
-
if (
|
|
2285
|
+
if (sYLoad) {
|
|
2268
2286
|
if (!(props.height || props.maxHeight)) {
|
|
2269
2287
|
(0, _utils.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
|
|
2270
2288
|
}
|
|
@@ -2294,8 +2312,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2294
2312
|
}).then(function () {
|
|
2295
2313
|
computeScrollLoad();
|
|
2296
2314
|
}).then(function () {
|
|
2297
|
-
//
|
|
2298
|
-
if (
|
|
2315
|
+
// 是否启用了虚拟滚动
|
|
2316
|
+
if (sYLoad) {
|
|
2299
2317
|
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
2300
2318
|
}
|
|
2301
2319
|
|
|
@@ -2306,7 +2324,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2306
2324
|
return tableMethods.recalculate();
|
|
2307
2325
|
}).then(function () {
|
|
2308
2326
|
// 是否变更虚拟滚动
|
|
2309
|
-
if (oldScrollYLoad ===
|
|
2327
|
+
if (oldScrollYLoad === sYLoad) {
|
|
2310
2328
|
(0, _util.restoreScrollLocation)($xetable, lastScrollLeft, lastScrollTop).then(resolve);
|
|
2311
2329
|
} else {
|
|
2312
2330
|
setTimeout(function () {
|
|
@@ -2575,6 +2593,136 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2575
2593
|
return tableMethods.recalculate();
|
|
2576
2594
|
});
|
|
2577
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
|
+
};
|
|
2578
2726
|
/**
|
|
2579
2727
|
* 纵向 Y 可视渲染处理
|
|
2580
2728
|
*/
|
|
@@ -2724,7 +2872,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2724
2872
|
_xeUtils.default.clear(row, undefined);
|
|
2725
2873
|
|
|
2726
2874
|
Object.assign(row, tablePrivateMethods.defineField(Object.assign({}, record)));
|
|
2727
|
-
tablePrivateMethods.
|
|
2875
|
+
tablePrivateMethods.cacheRowMap(true);
|
|
2728
2876
|
} else {
|
|
2729
2877
|
_xeUtils.default.destructuring(oRow, _xeUtils.default.clone(row, true));
|
|
2730
2878
|
}
|
|
@@ -2744,15 +2892,16 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2744
2892
|
/**
|
|
2745
2893
|
* 用于树结构,给行数据加载子节点
|
|
2746
2894
|
*/
|
|
2747
|
-
|
|
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;
|
|
2748
2904
|
return tableMethods.createData(childRecords).then(function (rows) {
|
|
2749
|
-
var keepSource = props.keepSource;
|
|
2750
|
-
var fullDataRowIdData = internalData.fullDataRowIdData,
|
|
2751
|
-
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2752
|
-
var tableSourceData = internalData.tableSourceData;
|
|
2753
|
-
var treeOpts = computeTreeOpts.value;
|
|
2754
|
-
var children = treeOpts.children;
|
|
2755
|
-
|
|
2756
2905
|
if (keepSource) {
|
|
2757
2906
|
var rowid_1 = (0, _util.getRowid)($xetable, row);
|
|
2758
2907
|
|
|
@@ -2765,7 +2914,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2765
2914
|
}
|
|
2766
2915
|
}
|
|
2767
2916
|
|
|
2768
|
-
_xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent) {
|
|
2917
|
+
_xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
|
|
2769
2918
|
var rowid = (0, _util.getRowid)($xetable, childRow);
|
|
2770
2919
|
var rest = {
|
|
2771
2920
|
row: childRow,
|
|
@@ -2774,7 +2923,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2774
2923
|
_index: -1,
|
|
2775
2924
|
$index: -1,
|
|
2776
2925
|
items: items,
|
|
2777
|
-
parent: parent
|
|
2926
|
+
parent: parent,
|
|
2927
|
+
level: parentLevel + nodes.length
|
|
2778
2928
|
};
|
|
2779
2929
|
fullDataRowIdData[rowid] = rest;
|
|
2780
2930
|
fullAllDataRowIdData[rowid] = rest;
|
|
@@ -4120,10 +4270,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4120
4270
|
},
|
|
4121
4271
|
|
|
4122
4272
|
/**
|
|
4123
|
-
*
|
|
4273
|
+
* 重新懒加载展开行,并展开内容
|
|
4124
4274
|
* @param {Row} row 行对象
|
|
4125
4275
|
*/
|
|
4126
|
-
|
|
4276
|
+
reloadRowExpand: function reloadRowExpand(row) {
|
|
4127
4277
|
var expandLazyLoadeds = reactData.expandLazyLoadeds;
|
|
4128
4278
|
var expandOpts = computeExpandOpts.value;
|
|
4129
4279
|
var lazy = expandOpts.lazy;
|
|
@@ -4136,6 +4286,14 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4136
4286
|
|
|
4137
4287
|
return (0, _vue.nextTick)();
|
|
4138
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
|
+
},
|
|
4139
4297
|
|
|
4140
4298
|
/**
|
|
4141
4299
|
* 切换展开行
|
|
@@ -4301,23 +4459,38 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4301
4459
|
},
|
|
4302
4460
|
|
|
4303
4461
|
/**
|
|
4304
|
-
*
|
|
4462
|
+
* 重新懒加载树节点,并展开该节点
|
|
4305
4463
|
* @param {Row} row 行对象
|
|
4306
4464
|
*/
|
|
4307
|
-
|
|
4465
|
+
reloadTreeExpand: function reloadTreeExpand(row) {
|
|
4308
4466
|
var treeLazyLoadeds = reactData.treeLazyLoadeds;
|
|
4309
4467
|
var treeOpts = computeTreeOpts.value;
|
|
4310
|
-
var
|
|
4468
|
+
var transform = treeOpts.transform,
|
|
4469
|
+
lazy = treeOpts.lazy,
|
|
4311
4470
|
hasChild = treeOpts.hasChild;
|
|
4312
4471
|
|
|
4313
4472
|
if (lazy && row[hasChild] && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1) {
|
|
4314
4473
|
tableMethods.clearTreeExpandLoaded(row).then(function () {
|
|
4315
4474
|
return handleAsyncTreeExpandChilds(row);
|
|
4475
|
+
}).then(function () {
|
|
4476
|
+
if (transform) {
|
|
4477
|
+
return updateVirtualTreeData();
|
|
4478
|
+
}
|
|
4479
|
+
}).then(function () {
|
|
4480
|
+
return tableMethods.recalculate();
|
|
4316
4481
|
});
|
|
4317
4482
|
}
|
|
4318
4483
|
|
|
4319
4484
|
return (0, _vue.nextTick)();
|
|
4320
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
|
+
},
|
|
4321
4494
|
|
|
4322
4495
|
/**
|
|
4323
4496
|
* 切换/展开树节点
|
|
@@ -4356,21 +4529,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4356
4529
|
* @param {Boolean} expanded 是否展开
|
|
4357
4530
|
*/
|
|
4358
4531
|
setTreeExpand: function setTreeExpand(rows, expanded) {
|
|
4359
|
-
var treeExpandeds = reactData.treeExpandeds,
|
|
4360
|
-
treeLazyLoadeds = reactData.treeLazyLoadeds,
|
|
4361
|
-
treeNodeColumn = reactData.treeNodeColumn;
|
|
4362
|
-
var fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
4363
|
-
tableFullData = internalData.tableFullData;
|
|
4364
4532
|
var treeOpts = computeTreeOpts.value;
|
|
4365
|
-
var
|
|
4366
|
-
lazy = treeOpts.lazy,
|
|
4367
|
-
hasChild = treeOpts.hasChild,
|
|
4368
|
-
children = treeOpts.children,
|
|
4369
|
-
accordion = treeOpts.accordion,
|
|
4370
|
-
toggleMethod = treeOpts.toggleMethod;
|
|
4371
|
-
var result = [];
|
|
4372
|
-
var columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
4373
|
-
var $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
4533
|
+
var transform = treeOpts.transform;
|
|
4374
4534
|
|
|
4375
4535
|
if (rows) {
|
|
4376
4536
|
if (!_xeUtils.default.isArray(rows)) {
|
|
@@ -4378,61 +4538,12 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4378
4538
|
}
|
|
4379
4539
|
|
|
4380
4540
|
if (rows.length) {
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
expanded: expanded,
|
|
4385
|
-
column: treeNodeColumn,
|
|
4386
|
-
columnIndex: columnIndex,
|
|
4387
|
-
$columnIndex: $columnIndex,
|
|
4388
|
-
row: row
|
|
4389
|
-
});
|
|
4390
|
-
}) : rows;
|
|
4391
|
-
|
|
4392
|
-
if (accordion) {
|
|
4393
|
-
validRows_2 = validRows_2.length ? [validRows_2[validRows_2.length - 1]] : []; // 同一级只能展开一个
|
|
4394
|
-
|
|
4395
|
-
var matchObj_1 = _xeUtils.default.findTree(tableFullData, function (item) {
|
|
4396
|
-
return item === validRows_2[0];
|
|
4397
|
-
}, treeOpts);
|
|
4398
|
-
|
|
4399
|
-
if (matchObj_1) {
|
|
4400
|
-
_xeUtils.default.remove(treeExpandeds, function (item) {
|
|
4401
|
-
return matchObj_1.items.indexOf(item) > -1;
|
|
4402
|
-
});
|
|
4403
|
-
}
|
|
4404
|
-
}
|
|
4405
|
-
|
|
4406
|
-
if (expanded) {
|
|
4407
|
-
validRows_2.forEach(function (row) {
|
|
4408
|
-
if ($xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
4409
|
-
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
4410
|
-
var isLoad = lazy && row[hasChild] && !rest.treeLoaded && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1; // 是否使用懒加载
|
|
4411
|
-
|
|
4412
|
-
if (isLoad) {
|
|
4413
|
-
result.push(handleAsyncTreeExpandChilds(row));
|
|
4414
|
-
} else {
|
|
4415
|
-
if (row[children] && row[children].length) {
|
|
4416
|
-
treeExpandeds.push(row);
|
|
4417
|
-
}
|
|
4418
|
-
}
|
|
4419
|
-
}
|
|
4420
|
-
});
|
|
4541
|
+
// 如果为虚拟树
|
|
4542
|
+
if (transform) {
|
|
4543
|
+
return handleVirtualTreeExpand(rows, expanded);
|
|
4421
4544
|
} else {
|
|
4422
|
-
|
|
4423
|
-
return $xetable.findRowIndexOf(validRows_2, row) > -1;
|
|
4424
|
-
});
|
|
4545
|
+
return handleBaseTreeExpand(rows, expanded);
|
|
4425
4546
|
}
|
|
4426
|
-
|
|
4427
|
-
if (reserve) {
|
|
4428
|
-
validRows_2.forEach(function (row) {
|
|
4429
|
-
return handleTreeExpandReserve(row, expanded);
|
|
4430
|
-
});
|
|
4431
|
-
}
|
|
4432
|
-
|
|
4433
|
-
return Promise.all(result).then(function () {
|
|
4434
|
-
return tableMethods.recalculate();
|
|
4435
|
-
});
|
|
4436
4547
|
}
|
|
4437
4548
|
}
|
|
4438
4549
|
|
|
@@ -4453,19 +4564,19 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4453
4564
|
*/
|
|
4454
4565
|
clearTreeExpand: function clearTreeExpand() {
|
|
4455
4566
|
var treeExpandeds = reactData.treeExpandeds;
|
|
4456
|
-
var
|
|
4567
|
+
var treeFullData = internalData.treeFullData;
|
|
4457
4568
|
var treeOpts = computeTreeOpts.value;
|
|
4458
4569
|
var reserve = treeOpts.reserve;
|
|
4459
4570
|
var isExists = treeExpandeds.length;
|
|
4460
4571
|
reactData.treeExpandeds = [];
|
|
4461
4572
|
|
|
4462
4573
|
if (reserve) {
|
|
4463
|
-
_xeUtils.default.eachTree(
|
|
4574
|
+
_xeUtils.default.eachTree(treeFullData, function (row) {
|
|
4464
4575
|
return handleTreeExpandReserve(row, false);
|
|
4465
4576
|
}, treeOpts);
|
|
4466
4577
|
}
|
|
4467
4578
|
|
|
4468
|
-
return (
|
|
4579
|
+
return updateVirtualTreeData().then(function () {
|
|
4469
4580
|
if (isExists) {
|
|
4470
4581
|
tableMethods.recalculate();
|
|
4471
4582
|
}
|
|
@@ -5452,16 +5563,17 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5452
5563
|
* 更新数据行的 Map
|
|
5453
5564
|
* 牺牲数据组装的耗时,用来换取使用过程中的流畅
|
|
5454
5565
|
*/
|
|
5455
|
-
|
|
5566
|
+
cacheRowMap: function cacheRowMap(isSource) {
|
|
5456
5567
|
var treeConfig = props.treeConfig;
|
|
5457
5568
|
var treeOpts = computeTreeOpts.value;
|
|
5458
5569
|
var fullDataRowIdData = internalData.fullDataRowIdData,
|
|
5459
5570
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
5460
|
-
tableFullData = internalData.tableFullData
|
|
5571
|
+
tableFullData = internalData.tableFullData,
|
|
5572
|
+
treeFullData = internalData.treeFullData;
|
|
5461
5573
|
var rowkey = (0, _util.getRowkey)($xetable);
|
|
5462
5574
|
var isLazy = treeConfig && treeOpts.lazy;
|
|
5463
5575
|
|
|
5464
|
-
var handleCache = function handleCache(row, index, items, path, parent) {
|
|
5576
|
+
var handleCache = function handleCache(row, index, items, path, parent, nodes) {
|
|
5465
5577
|
var rowid = (0, _util.getRowid)($xetable, row);
|
|
5466
5578
|
|
|
5467
5579
|
if ((0, _utils.eqEmptyValue)(rowid)) {
|
|
@@ -5481,7 +5593,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5481
5593
|
_index: -1,
|
|
5482
5594
|
$index: -1,
|
|
5483
5595
|
items: items,
|
|
5484
|
-
parent: parent
|
|
5596
|
+
parent: parent,
|
|
5597
|
+
level: nodes ? nodes.length - 1 : 0
|
|
5485
5598
|
};
|
|
5486
5599
|
|
|
5487
5600
|
if (isSource) {
|
|
@@ -5498,7 +5611,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5498
5611
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData = {};
|
|
5499
5612
|
|
|
5500
5613
|
if (treeConfig) {
|
|
5501
|
-
_xeUtils.default.eachTree(
|
|
5614
|
+
_xeUtils.default.eachTree(treeFullData, handleCache, treeOpts);
|
|
5502
5615
|
} else {
|
|
5503
5616
|
tableFullData.forEach(handleCache);
|
|
5504
5617
|
}
|
|
@@ -5900,10 +6013,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5900
6013
|
var column = params.column;
|
|
5901
6014
|
var titleHelp = column.titleHelp;
|
|
5902
6015
|
|
|
5903
|
-
if (titleHelp.message) {
|
|
6016
|
+
if (titleHelp.content || titleHelp.message) {
|
|
5904
6017
|
var tooltipStore = internalData.tooltipStore;
|
|
5905
6018
|
var $tooltip = refTooltip.value;
|
|
5906
|
-
var content = (0, _utils.getFuncText)(titleHelp.message);
|
|
6019
|
+
var content = (0, _utils.getFuncText)(titleHelp.content || titleHelp.message);
|
|
5907
6020
|
handleTargetEnterEvent();
|
|
5908
6021
|
tooltipStore.visible = true;
|
|
5909
6022
|
|
|
@@ -6648,6 +6761,20 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6648
6761
|
return false;
|
|
6649
6762
|
}
|
|
6650
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
|
+
|
|
6651
6778
|
Object.assign($xetable, tableMethods, tablePrivateMethods);
|
|
6652
6779
|
/**
|
|
6653
6780
|
* 渲染浮固定列
|
|
@@ -6911,6 +7038,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6911
7038
|
if (process.env.NODE_ENV === 'development') {
|
|
6912
7039
|
var customOpts = computeCustomOpts.value;
|
|
6913
7040
|
var mouseOpts = computeMouseOpts.value;
|
|
7041
|
+
var rowOpts = computeRowOpts.value;
|
|
6914
7042
|
|
|
6915
7043
|
if (!props.id && props.customConfig && (customOpts.storage === true || customOpts.storage && customOpts.storage.resizable || customOpts.storage && customOpts.storage.visible)) {
|
|
6916
7044
|
(0, _utils.errLog)('vxe.error.reqProp', ['id']);
|
|
@@ -6920,6 +7048,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6920
7048
|
(0, _utils.errLog)('vxe.error.noTree', ['checkbox-config.range']);
|
|
6921
7049
|
}
|
|
6922
7050
|
|
|
7051
|
+
if (rowOpts.height && !props.showOverflow) {
|
|
7052
|
+
(0, _utils.warnLog)('vxe.error.notProp', ['table.show-overflow']);
|
|
7053
|
+
}
|
|
7054
|
+
|
|
6923
7055
|
if (!$xetable.handleUpdateCellAreas) {
|
|
6924
7056
|
if (props.clipConfig) {
|
|
6925
7057
|
(0, _utils.warnLog)('vxe.error.notProp', ['clip-config']);
|