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