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.
@@ -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: "FF2E5BBA" },
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: "FFE6E6E6" } },
457
- bottom: { style: "thin", color: { argb: "FFE6E6E6" } },
458
- left: { style: "thin", color: { argb: "FFE6E6E6" } },
459
- right: { style: "thin", color: { argb: "FFE6E6E6" } },
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: "FFF8F9FA" },
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);
@@ -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
- // 2. 为每行初始化合并信息
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
- // 3. 按层级处理每个合并字段
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
- // 4. 最后统一计算MERGE_INDEX(合并后的逻辑行号)
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zmdms-webui",
3
- "version": "1.9.9",
3
+ "version": "2.0.1",
4
4
  "private": false,
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",