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.
- package/dist/es/table/useSummary.js +67 -19
- package/package.json +1 -1
|
@@ -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;
|