zmdms-webui 3.3.6 → 3.3.8

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.
@@ -87,7 +87,7 @@ function getSummaryData(summaryConfig, dataSource, options) {
87
87
  return;
88
88
  }
89
89
  // 拿到统计数据
90
- var _a = getSubtotalObj(fields, dataSource), summaryTotalObj = _a.summaryTotalObj, summaryTotalConfigObj = _a.summaryTotalConfigObj;
90
+ var _a = getSubtotalObj(fields, dataSource, columns), summaryTotalObj = _a.summaryTotalObj, summaryTotalConfigObj = _a.summaryTotalConfigObj;
91
91
  var subtotalResult = [];
92
92
  var columnResult = [];
93
93
  recursionColumns(columns, {
@@ -135,8 +135,37 @@ function getSummaryData(summaryConfig, dataSource, options) {
135
135
  }
136
136
  return _summaryData;
137
137
  }
138
+ /**
139
+ * 从 columns 中查找字段的 mergeKey 配置
140
+ * @param fieldName 字段名
141
+ * @param columns 列配置
142
+ * @returns 合并字段名(如果有 mergeKey 则返回 mergeKey,否则返回字段名本身)
143
+ */
144
+ function getFieldMergeKey(fieldName, columns) {
145
+ // 递归查找字段配置
146
+ function findFieldMergeKey(cols, targetField) {
147
+ if (!Array.isArray(cols))
148
+ return null;
149
+ for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {
150
+ var col = cols_1[_i];
151
+ // 检查当前列
152
+ if (col.key === targetField || col.dataIndex === targetField) {
153
+ return col.mergeKey || null;
154
+ }
155
+ // 如果有子列,递归查找
156
+ if (col.children && Array.isArray(col.children)) {
157
+ var result = findFieldMergeKey(col.children, targetField);
158
+ if (result !== null)
159
+ return result;
160
+ }
161
+ }
162
+ return null;
163
+ }
164
+ var mergeKey = findFieldMergeKey(columns, fieldName);
165
+ return mergeKey || fieldName; // 如果有 mergeKey 返回 mergeKey,否则返回字段名本身
166
+ }
138
167
  // 为 getSubtotalObj 编写测试用例 TODO:
139
- function getSubtotalObj(fields, dataSource) {
168
+ function getSubtotalObj(fields, dataSource, columns) {
140
169
  if (!Array.isArray(dataSource)) {
141
170
  return {
142
171
  summaryTotalObj: null,
@@ -145,27 +174,19 @@ function getSubtotalObj(fields, dataSource) {
145
174
  }
146
175
  var summaryTotalObj = {};
147
176
  var summaryTotalConfigObj = {};
148
- // 过滤掉按维度合计行和被合并的行
177
+ // 过滤掉按维度合计行
149
178
  dataSource
150
- .filter(function (item) {
151
- // 排除维度合计行
152
- if (item[IS_SUMMARY])
153
- return false;
154
- // 排除被合并的行(MERGE_ROW_SPANS 中所有合并字段都为0的行)
155
- var mergeSpans = item[MERGE_ROW_SPANS];
156
- if (mergeSpans && typeof mergeSpans === "object") {
157
- // 检查是否存在任何合并字段的 rowSpan > 0
158
- var spanValues = Object.values(mergeSpans);
159
- // 如果所有值都是 0 或 undefined,说明是被完全合并的行
160
- var hasValidSpan = spanValues.some(function (span) { return span && span > 0; });
161
- if (!hasValidSpan && spanValues.length > 0)
162
- return false;
163
- }
164
- return true;
165
- })
179
+ .filter(function (item) { return !item[IS_SUMMARY]; })
166
180
  .forEach(function (item, index) {
167
181
  fields.forEach(function (field) {
168
182
  if (typeof field === "string") {
183
+ // 检查该字段是否被合并(rowSpan为0)
184
+ // 优先使用 mergeKey,如果没有则使用字段名本身
185
+ var mergeKey = getFieldMergeKey(field, columns);
186
+ var mergeSpans = item[MERGE_ROW_SPANS];
187
+ var fieldRowSpan = mergeSpans === null || mergeSpans === void 0 ? void 0 : mergeSpans[mergeKey];
188
+ if (fieldRowSpan === 0)
189
+ return; // 该字段被合并,跳过统计
169
190
  var dataItem = Number(item === null || item === void 0 ? void 0 : item[field]);
170
191
  dataItem = isNaN(dataItem) ? 0 : dataItem;
171
192
  var summaryItem = (summaryTotalObj === null || summaryTotalObj === void 0 ? void 0 : summaryTotalObj[field]) || 0;
@@ -175,6 +196,33 @@ function getSubtotalObj(fields, dataSource) {
175
196
  }
176
197
  else {
177
198
  var key = field.key, showKey = field.showKey, toFixedNum_1 = field.toFixedNum, value = field.value, callback = field.callback;
199
+ // 检查数据源字段是否被合并
200
+ var mergeSpans_1 = item[MERGE_ROW_SPANS];
201
+ if (showKey) {
202
+ if (typeof showKey === "string") {
203
+ // 使用 mergeKey 来判断合并状态
204
+ var mergeKey = getFieldMergeKey(showKey, columns);
205
+ var fieldRowSpan = mergeSpans_1 === null || mergeSpans_1 === void 0 ? void 0 : mergeSpans_1[mergeKey];
206
+ if (fieldRowSpan === 0)
207
+ return; // 该字段被合并,跳过统计
208
+ }
209
+ else if (Array.isArray(showKey)) {
210
+ // 如果 showKey 是数组,检查是否所有字段都被合并
211
+ var allMerged = showKey.every(function (sk) {
212
+ var mergeKey = getFieldMergeKey(sk, columns);
213
+ return (mergeSpans_1 === null || mergeSpans_1 === void 0 ? void 0 : mergeSpans_1[mergeKey]) === 0;
214
+ });
215
+ if (allMerged)
216
+ return; // 所有字段都被合并,跳过统计
217
+ }
218
+ }
219
+ else {
220
+ // 如果没有 showKey,检查 key 字段
221
+ var mergeKey = getFieldMergeKey(key, columns);
222
+ var fieldRowSpan = mergeSpans_1 === null || mergeSpans_1 === void 0 ? void 0 : mergeSpans_1[mergeKey];
223
+ if (fieldRowSpan === 0)
224
+ return; // 该字段被合并,跳过统计
225
+ }
178
226
  var dataItem = Number(item === null || item === void 0 ? void 0 : item[key]);
179
227
  dataItem = isNaN(dataItem) ? 0 : dataItem;
180
228
  var summaryItem_1 = (summaryTotalObj === null || summaryTotalObj === void 0 ? void 0 : summaryTotalObj[key]) || 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zmdms-webui",
3
- "version": "3.3.6",
3
+ "version": "3.3.8",
4
4
  "private": false,
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",