zmdms-webui 1.9.9 → 2.0.0
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/dist/es/table/excel.js +6 -7
- package/dist/es/table/utils.js +54 -4
- package/package.json +1 -1
package/dist/es/table/excel.js
CHANGED
|
@@ -441,9 +441,8 @@ function applyExcelStyles(worksheet, data, numKeys, columns, headerRowCount, has
|
|
|
441
441
|
};
|
|
442
442
|
var descriptionStyle = {
|
|
443
443
|
font: {
|
|
444
|
-
bold: true,
|
|
445
444
|
size: 11,
|
|
446
|
-
color: { argb: "
|
|
445
|
+
color: { argb: "FF374151" },
|
|
447
446
|
name: "微软雅黑",
|
|
448
447
|
},
|
|
449
448
|
alignment: {
|
|
@@ -453,15 +452,15 @@ function applyExcelStyles(worksheet, data, numKeys, columns, headerRowCount, has
|
|
|
453
452
|
indent: 1,
|
|
454
453
|
},
|
|
455
454
|
border: {
|
|
456
|
-
top: { style: "thin", color: { argb: "
|
|
457
|
-
bottom: { style: "thin", color: { argb: "
|
|
458
|
-
left: { style: "thin", color: { argb: "
|
|
459
|
-
right: { style: "thin", color: { argb: "
|
|
455
|
+
top: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
456
|
+
bottom: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
457
|
+
left: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
458
|
+
right: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
460
459
|
},
|
|
461
460
|
fill: {
|
|
462
461
|
type: "pattern",
|
|
463
462
|
pattern: "solid",
|
|
464
|
-
fgColor: { argb: "
|
|
463
|
+
fgColor: { argb: "FFFFFFFF" },
|
|
465
464
|
},
|
|
466
465
|
};
|
|
467
466
|
var totalCols = Math.max(1, (columns === null || columns === void 0 ? void 0 : columns.length) || 1);
|
package/dist/es/table/utils.js
CHANGED
|
@@ -447,6 +447,7 @@ function startColumnInsertTableData(options) {
|
|
|
447
447
|
* @param mergeKeys 合并字段
|
|
448
448
|
* @param dimensionSummaryKeys 维度合计字段
|
|
449
449
|
* @param summaryKeys 合计字段
|
|
450
|
+
* @param isDimensionDynamic 维度合并
|
|
450
451
|
*/
|
|
451
452
|
function flattenRecordsOptimized(records, mergeKeys, dimensionSummaryKeys, summaryKeys, isDimensionDynamic) {
|
|
452
453
|
var _a;
|
|
@@ -460,7 +461,13 @@ function flattenRecordsOptimized(records, mergeKeys, dimensionSummaryKeys, summa
|
|
|
460
461
|
var result = isDimensionDynamic
|
|
461
462
|
? sortByDimensions(__spreadArray([], records, true), mergeKeys)
|
|
462
463
|
: __spreadArray([], records, true);
|
|
463
|
-
// 1.
|
|
464
|
+
// 1. 如果开启了维度合并,按 mergeKeys 的最后一位来计算合计值
|
|
465
|
+
if (isDimensionDynamic && mergeKeys.length > 0) {
|
|
466
|
+
var lastMergeKey = mergeKeys[mergeKeys.length - 1];
|
|
467
|
+
var groupedResult = groupByLastMergeKey(result, lastMergeKey, summaryKeys);
|
|
468
|
+
result = groupedResult;
|
|
469
|
+
}
|
|
470
|
+
// 2. 首先插入维度合计行
|
|
464
471
|
if (dimensionSummaryKeys &&
|
|
465
472
|
dimensionSummaryKeys.length > 0 &&
|
|
466
473
|
summaryKeys &&
|
|
@@ -468,11 +475,11 @@ function flattenRecordsOptimized(records, mergeKeys, dimensionSummaryKeys, summa
|
|
|
468
475
|
result = insertDimensionSummaryRows(result, mergeKeys, // 传入完整的维度字段列表
|
|
469
476
|
dimensionSummaryKeys, summaryKeys);
|
|
470
477
|
}
|
|
471
|
-
//
|
|
478
|
+
// 3. 为每行初始化合并信息
|
|
472
479
|
for (var i = 0; i < result.length; i++) {
|
|
473
480
|
result[i] = __assign(__assign({}, result[i]), (_a = {}, _a[MERGE_ROW_SPANS] = {}, _a[MERGE_KEY] = Date.now() + Math.floor(Math.random() * 100000), _a[MERGE_INDEX] = -1, _a));
|
|
474
481
|
}
|
|
475
|
-
//
|
|
482
|
+
// 4. 按层级处理每个合并字段
|
|
476
483
|
for (var keyIndex = 0; keyIndex < mergeKeys.length; keyIndex++) {
|
|
477
484
|
var currentKey = mergeKeys[keyIndex];
|
|
478
485
|
// 找出所有需要处理的分组起始点
|
|
@@ -522,7 +529,7 @@ function flattenRecordsOptimized(records, mergeKeys, dimensionSummaryKeys, summa
|
|
|
522
529
|
}
|
|
523
530
|
}
|
|
524
531
|
}
|
|
525
|
-
//
|
|
532
|
+
// 5. 最后统一计算MERGE_INDEX(合并后的逻辑行号)
|
|
526
533
|
var logicalRowIndex = 0;
|
|
527
534
|
var _loop_2 = function (i) {
|
|
528
535
|
// 检查当前行是否是被合并的行(不是第一行)
|
|
@@ -702,6 +709,49 @@ function hasParentGroupChanged(records, currentIndex, mergeKeys, currentKeyIndex
|
|
|
702
709
|
}
|
|
703
710
|
}
|
|
704
711
|
return false;
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* 按最后一个合并键进行分组并计算合计值
|
|
715
|
+
*/
|
|
716
|
+
function groupByLastMergeKey(records, lastMergeKey, summaryKeys) {
|
|
717
|
+
var groups = new Map();
|
|
718
|
+
// 按最后一个合并键分组
|
|
719
|
+
for (var _i = 0, records_2 = records; _i < records_2.length; _i++) {
|
|
720
|
+
var record = records_2[_i];
|
|
721
|
+
var key = record[lastMergeKey];
|
|
722
|
+
var keyStr = String(key);
|
|
723
|
+
if (!groups.has(keyStr)) {
|
|
724
|
+
groups.set(keyStr, []);
|
|
725
|
+
}
|
|
726
|
+
groups.get(keyStr).push(record);
|
|
727
|
+
}
|
|
728
|
+
// 为每个分组创建合计行
|
|
729
|
+
var result = [];
|
|
730
|
+
for (var _a = 0, _b = Array.from(groups.entries()); _a < _b.length; _a++) {
|
|
731
|
+
var _c = _b[_a], keyStr = _c[0], items = _c[1];
|
|
732
|
+
var summaryRow = {};
|
|
733
|
+
// 复制第一条记录的所有字段作为基础
|
|
734
|
+
if (items.length > 0) {
|
|
735
|
+
Object.assign(summaryRow, items[0]);
|
|
736
|
+
}
|
|
737
|
+
// 设置最后一个合并键的值
|
|
738
|
+
summaryRow[lastMergeKey] = keyStr;
|
|
739
|
+
var _loop_6 = function (summaryKey) {
|
|
740
|
+
summaryRow[summaryKey] = items
|
|
741
|
+
.filter(function (item) { return !isSummaryRow(item); }) // 排除已有的合计行
|
|
742
|
+
.reduce(function (sum, item) {
|
|
743
|
+
var value = parseFloat(item[summaryKey]) || 0;
|
|
744
|
+
return plus(sum, value);
|
|
745
|
+
}, 0);
|
|
746
|
+
};
|
|
747
|
+
// 计算合计值
|
|
748
|
+
for (var _d = 0, summaryKeys_2 = summaryKeys; _d < summaryKeys_2.length; _d++) {
|
|
749
|
+
var summaryKey = summaryKeys_2[_d];
|
|
750
|
+
_loop_6(summaryKey);
|
|
751
|
+
}
|
|
752
|
+
result.push(summaryRow);
|
|
753
|
+
}
|
|
754
|
+
return result;
|
|
705
755
|
}
|
|
706
756
|
|
|
707
757
|
export { copyColData, flattenRecordsOptimized, getFilterRecords, getNextColumn, getTableColumns, parsePasteData, startColumnInsertTableData };
|