zmdms-webui 1.9.9 → 2.0.1
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 +61 -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,12 @@ 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 groupedResult = groupByLastMergeKey(result, mergeKeys, summaryKeys);
|
|
467
|
+
result = groupedResult;
|
|
468
|
+
}
|
|
469
|
+
// 2. 首先插入维度合计行
|
|
464
470
|
if (dimensionSummaryKeys &&
|
|
465
471
|
dimensionSummaryKeys.length > 0 &&
|
|
466
472
|
summaryKeys &&
|
|
@@ -468,11 +474,11 @@ function flattenRecordsOptimized(records, mergeKeys, dimensionSummaryKeys, summa
|
|
|
468
474
|
result = insertDimensionSummaryRows(result, mergeKeys, // 传入完整的维度字段列表
|
|
469
475
|
dimensionSummaryKeys, summaryKeys);
|
|
470
476
|
}
|
|
471
|
-
//
|
|
477
|
+
// 3. 为每行初始化合并信息
|
|
472
478
|
for (var i = 0; i < result.length; i++) {
|
|
473
479
|
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
480
|
}
|
|
475
|
-
//
|
|
481
|
+
// 4. 按层级处理每个合并字段
|
|
476
482
|
for (var keyIndex = 0; keyIndex < mergeKeys.length; keyIndex++) {
|
|
477
483
|
var currentKey = mergeKeys[keyIndex];
|
|
478
484
|
// 找出所有需要处理的分组起始点
|
|
@@ -522,7 +528,7 @@ function flattenRecordsOptimized(records, mergeKeys, dimensionSummaryKeys, summa
|
|
|
522
528
|
}
|
|
523
529
|
}
|
|
524
530
|
}
|
|
525
|
-
//
|
|
531
|
+
// 5. 最后统一计算MERGE_INDEX(合并后的逻辑行号)
|
|
526
532
|
var logicalRowIndex = 0;
|
|
527
533
|
var _loop_2 = function (i) {
|
|
528
534
|
// 检查当前行是否是被合并的行(不是第一行)
|
|
@@ -702,6 +708,57 @@ function hasParentGroupChanged(records, currentIndex, mergeKeys, currentKeyIndex
|
|
|
702
708
|
}
|
|
703
709
|
}
|
|
704
710
|
return false;
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* 按所有合并键的组合进行分组并计算合计值
|
|
714
|
+
* 确保相同维度组合的记录被正确分组
|
|
715
|
+
*/
|
|
716
|
+
function groupByLastMergeKey(records, mergeKeys, // 改为传入所有合并键
|
|
717
|
+
summaryKeys) {
|
|
718
|
+
var groups = new Map();
|
|
719
|
+
var _loop_6 = function (record) {
|
|
720
|
+
var key = mergeKeys.map(function (k) { return record[k]; });
|
|
721
|
+
var keyStr = JSON.stringify(key);
|
|
722
|
+
if (!groups.has(keyStr)) {
|
|
723
|
+
groups.set(keyStr, []);
|
|
724
|
+
}
|
|
725
|
+
groups.get(keyStr).push(record);
|
|
726
|
+
};
|
|
727
|
+
// 按所有合并键的组合进行分组
|
|
728
|
+
for (var _i = 0, records_2 = records; _i < records_2.length; _i++) {
|
|
729
|
+
var record = records_2[_i];
|
|
730
|
+
_loop_6(record);
|
|
731
|
+
}
|
|
732
|
+
// 为每个分组创建合计行
|
|
733
|
+
var result = [];
|
|
734
|
+
for (var _a = 0, _b = Array.from(groups.entries()); _a < _b.length; _a++) {
|
|
735
|
+
var _c = _b[_a], keyStr = _c[0], items = _c[1];
|
|
736
|
+
var summaryRow = {};
|
|
737
|
+
// 复制第一条记录的所有字段作为基础
|
|
738
|
+
if (items.length > 0) {
|
|
739
|
+
Object.assign(summaryRow, items[0]);
|
|
740
|
+
}
|
|
741
|
+
// 设置所有合并键的值
|
|
742
|
+
var keyValues = JSON.parse(keyStr);
|
|
743
|
+
for (var i = 0; i < mergeKeys.length; i++) {
|
|
744
|
+
summaryRow[mergeKeys[i]] = keyValues[i];
|
|
745
|
+
}
|
|
746
|
+
var _loop_7 = function (summaryKey) {
|
|
747
|
+
summaryRow[summaryKey] = items
|
|
748
|
+
.filter(function (item) { return !isSummaryRow(item); }) // 排除已有的合计行
|
|
749
|
+
.reduce(function (sum, item) {
|
|
750
|
+
var value = parseFloat(item[summaryKey]) || 0;
|
|
751
|
+
return plus(sum, value);
|
|
752
|
+
}, 0);
|
|
753
|
+
};
|
|
754
|
+
// 计算合计值
|
|
755
|
+
for (var _d = 0, summaryKeys_2 = summaryKeys; _d < summaryKeys_2.length; _d++) {
|
|
756
|
+
var summaryKey = summaryKeys_2[_d];
|
|
757
|
+
_loop_7(summaryKey);
|
|
758
|
+
}
|
|
759
|
+
result.push(summaryRow);
|
|
760
|
+
}
|
|
761
|
+
return result;
|
|
705
762
|
}
|
|
706
763
|
|
|
707
764
|
export { copyColData, flattenRecordsOptimized, getFilterRecords, getNextColumn, getTableColumns, parsePasteData, startColumnInsertTableData };
|