zmdms-webui 3.2.3 → 3.2.5
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.
|
@@ -41,7 +41,6 @@ var DynamicDrawer = function (props, ref) {
|
|
|
41
41
|
var isSearchFilterEnabled = getFinalValue(enableSearchFilter, isSearchFilter);
|
|
42
42
|
// 自定义配置是否增加模板配置功能
|
|
43
43
|
var isTemplateSettingEnabled = getFinalValue(enableTemplateSetting, isTemplateSetting);
|
|
44
|
-
console.log(isSearchFilterEnabled, isTemplateSettingEnabled);
|
|
45
44
|
// 根据外部传入的list 和本地存储信息 生成一个内部的currentDynamicList
|
|
46
45
|
// 这个currentDynamicList 是可以是负责显示最终结果的
|
|
47
46
|
// tempDynamicList 是操作时的临时变量 可能操作后不点击确认 直接点击取消 那么需要重置到之前的状态
|
|
@@ -171,8 +170,96 @@ var DynamicDrawer = function (props, ref) {
|
|
|
171
170
|
}, [setTempDynamicList, filterDynamicColumnsRef, isSearchFilterEnabled]);
|
|
172
171
|
// 确认
|
|
173
172
|
var onSureHandle = function () {
|
|
173
|
+
// 验证依赖关系
|
|
174
|
+
var validationResult = validateDependencies();
|
|
175
|
+
if (!validationResult.valid) {
|
|
176
|
+
myMessage.warning(validationResult.message);
|
|
177
|
+
return; // 阻止提交
|
|
178
|
+
}
|
|
174
179
|
onSure && onSure(tempDynamicList);
|
|
175
180
|
};
|
|
181
|
+
// 验证依赖关系
|
|
182
|
+
var validateDependencies = function () {
|
|
183
|
+
// 获取所有已勾选的主元素和子元素
|
|
184
|
+
var checkedKeys = new Set();
|
|
185
|
+
tempDynamicList.forEach(function (item) {
|
|
186
|
+
if (item.checked) {
|
|
187
|
+
checkedKeys.add(item.key);
|
|
188
|
+
}
|
|
189
|
+
if (item.children) {
|
|
190
|
+
item.children.forEach(function (child) {
|
|
191
|
+
if (child.checked) {
|
|
192
|
+
checkedKeys.add(child.key);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
// 构建依赖关系映射(包括主元素和子元素)
|
|
198
|
+
var dependenciesMap = {};
|
|
199
|
+
tempDynamicList.forEach(function (item) {
|
|
200
|
+
if (item.dimensionDependencies) {
|
|
201
|
+
dependenciesMap[item.key] = item.dimensionDependencies;
|
|
202
|
+
}
|
|
203
|
+
// 添加子元素的依赖
|
|
204
|
+
if (item.children) {
|
|
205
|
+
item.children.forEach(function (child) {
|
|
206
|
+
if (child.dimensionDependencies) {
|
|
207
|
+
dependenciesMap[child.key] = child.dimensionDependencies;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
// 检查每个已勾选项的依赖关系是否满足
|
|
213
|
+
var checkedKeysArray = Array.from(checkedKeys);
|
|
214
|
+
for (var _i = 0, checkedKeysArray_1 = checkedKeysArray; _i < checkedKeysArray_1.length; _i++) {
|
|
215
|
+
var checkedKey = checkedKeysArray_1[_i];
|
|
216
|
+
var deps = dependenciesMap[checkedKey];
|
|
217
|
+
if (!deps)
|
|
218
|
+
continue;
|
|
219
|
+
// 获取当前项的标签
|
|
220
|
+
var getItemLabel = function (key) {
|
|
221
|
+
var item = tempDynamicList.find(function (d) { return d.key === key; });
|
|
222
|
+
if (item)
|
|
223
|
+
return String((item === null || item === void 0 ? void 0 : item.label) || key);
|
|
224
|
+
var label = key;
|
|
225
|
+
tempDynamicList.forEach(function (pItem) {
|
|
226
|
+
if (pItem.children) {
|
|
227
|
+
var child = pItem.children.find(function (c) { return c.key === key; });
|
|
228
|
+
if (child) {
|
|
229
|
+
label = String(child.label || key);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
return label;
|
|
234
|
+
};
|
|
235
|
+
var currentLabel = getItemLabel(checkedKey);
|
|
236
|
+
// 检查 required 依赖(必须全部选中)
|
|
237
|
+
if (deps.required && deps.required.length > 0) {
|
|
238
|
+
var missingRequired = deps.required.filter(function (depKey) { return !checkedKeys.has(depKey); });
|
|
239
|
+
if (missingRequired.length > 0) {
|
|
240
|
+
var missingLabels = missingRequired.map(getItemLabel).join("、");
|
|
241
|
+
return {
|
|
242
|
+
valid: false,
|
|
243
|
+
message: "\u3010".concat(currentLabel, "\u3011\u9700\u8981\u4F9D\u8D56\u3010").concat(missingLabels, "\u3011\uFF0C\u8BF7\u5148\u52FE\u9009\u8FD9\u4E9B\u4F9D\u8D56\u9879\uFF01"),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// 检查 anyOf 依赖(至少选中一个)
|
|
248
|
+
if (deps.anyOf && deps.anyOf.length > 0) {
|
|
249
|
+
var hasAnyOfSelected = deps.anyOf.some(function (depKey) {
|
|
250
|
+
return checkedKeys.has(depKey);
|
|
251
|
+
});
|
|
252
|
+
if (!hasAnyOfSelected) {
|
|
253
|
+
var anyOfLabels = deps.anyOf.map(getItemLabel).join("、");
|
|
254
|
+
return {
|
|
255
|
+
valid: false,
|
|
256
|
+
message: "\u3010".concat(currentLabel, "\u3011\u9700\u8981\u81F3\u5C11\u4F9D\u8D56\u4EE5\u4E0B\u4E00\u9879\uFF1A\u3010").concat(anyOfLabels, "\u3011\uFF0C\u8BF7\u5148\u52FE\u9009\u5176\u4E2D\u4E00\u9879\uFF01"),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return { valid: true };
|
|
262
|
+
};
|
|
176
263
|
var onCheckboxChange = function (checkedValues) {
|
|
177
264
|
// 1. 找出本次变化的项(新增或移除的)
|
|
178
265
|
var prevCheckedKeys = new Set(checkedValues.filter(function (key) {
|
|
@@ -240,141 +327,9 @@ var DynamicDrawer = function (props, ref) {
|
|
|
240
327
|
myMessage.warning("所选项存在互斥关系,不能同时勾选!");
|
|
241
328
|
return; // 拦截本次勾选
|
|
242
329
|
}
|
|
243
|
-
// 4.
|
|
244
|
-
var finalCheckedValues = __spreadArray([], checkedValues, true);
|
|
245
|
-
// 构建依赖关系映射(包括主元素和子元素)
|
|
246
|
-
var dependenciesMap = {};
|
|
247
|
-
tempDynamicList.forEach(function (item) {
|
|
248
|
-
if (item.dimensionDependencies) {
|
|
249
|
-
dependenciesMap[item.key] = item.dimensionDependencies;
|
|
250
|
-
}
|
|
251
|
-
// 添加子元素的依赖
|
|
252
|
-
if (item.children) {
|
|
253
|
-
item.children.forEach(function (child) {
|
|
254
|
-
if (child.dimensionDependencies) {
|
|
255
|
-
dependenciesMap[child.key] = child.dimensionDependencies;
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
// 如果本次是勾选操作(isChecked = true),检查并自动添加依赖项
|
|
261
|
-
if (isChecked && changedKey && dependenciesMap[changedKey]) {
|
|
262
|
-
var deps = dependenciesMap[changedKey];
|
|
263
|
-
var autoCheckKeys_1 = [];
|
|
264
|
-
var childrenCheckedKeys_1 = {}; // 记录需要勾选的子元素 { parentIndex: [childKeys] }
|
|
265
|
-
// 处理 required 依赖(必须全部选中)
|
|
266
|
-
if (deps.required && deps.required.length > 0) {
|
|
267
|
-
deps.required.forEach(function (depKey) {
|
|
268
|
-
// 检查依赖项是否在主列表中
|
|
269
|
-
var depInMain = tempDynamicList.find(function (d) { return d.key === depKey; });
|
|
270
|
-
if (depInMain && !finalCheckedValues.includes(depKey)) {
|
|
271
|
-
autoCheckKeys_1.push(depKey);
|
|
272
|
-
}
|
|
273
|
-
else if (!depInMain) {
|
|
274
|
-
// 依赖项可能在子元素中,查找并记录
|
|
275
|
-
tempDynamicList.forEach(function (item, pIndex) {
|
|
276
|
-
if (item.children) {
|
|
277
|
-
var child = item.children.find(function (c) { return c.key === depKey; });
|
|
278
|
-
if (child && !child.checked) {
|
|
279
|
-
if (!childrenCheckedKeys_1[pIndex]) {
|
|
280
|
-
childrenCheckedKeys_1[pIndex] = [];
|
|
281
|
-
}
|
|
282
|
-
childrenCheckedKeys_1[pIndex].push(depKey);
|
|
283
|
-
autoCheckKeys_1.push(depKey);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
// 处理 anyOf 依赖(至少选中一个)
|
|
291
|
-
if (deps.anyOf && deps.anyOf.length > 0) {
|
|
292
|
-
// 检查 anyOf 中是否已经有被选中的(包括主列表和子元素)
|
|
293
|
-
var hasAnyOfSelected = deps.anyOf.some(function (depKey) {
|
|
294
|
-
var inMain = finalCheckedValues.includes(depKey);
|
|
295
|
-
if (inMain)
|
|
296
|
-
return true;
|
|
297
|
-
// 检查子元素
|
|
298
|
-
var foundInChild = false;
|
|
299
|
-
tempDynamicList.forEach(function (item) {
|
|
300
|
-
if (item.children) {
|
|
301
|
-
var child = item.children.find(function (c) { return c.key === depKey; });
|
|
302
|
-
if (child && child.checked) {
|
|
303
|
-
foundInChild = true;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
return foundInChild;
|
|
308
|
-
});
|
|
309
|
-
// 如果没有任何一个被选中,自动选中第一个
|
|
310
|
-
if (!hasAnyOfSelected && deps.anyOf[0]) {
|
|
311
|
-
var depKey_1 = deps.anyOf[0];
|
|
312
|
-
var depInMain = tempDynamicList.find(function (d) { return d.key === depKey_1; });
|
|
313
|
-
if (depInMain && !finalCheckedValues.includes(depKey_1)) {
|
|
314
|
-
autoCheckKeys_1.push(depKey_1);
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
// 查找子元素
|
|
318
|
-
tempDynamicList.forEach(function (item, pIndex) {
|
|
319
|
-
if (item.children) {
|
|
320
|
-
var child = item.children.find(function (c) { return c.key === depKey_1; });
|
|
321
|
-
if (child && !child.checked) {
|
|
322
|
-
if (!childrenCheckedKeys_1[pIndex]) {
|
|
323
|
-
childrenCheckedKeys_1[pIndex] = [];
|
|
324
|
-
}
|
|
325
|
-
childrenCheckedKeys_1[pIndex].push(depKey_1);
|
|
326
|
-
autoCheckKeys_1.push(depKey_1);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// 添加自动勾选的主元素
|
|
334
|
-
autoCheckKeys_1.forEach(function (key) {
|
|
335
|
-
if (!finalCheckedValues.includes(key)) {
|
|
336
|
-
finalCheckedValues.push(key);
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
// 提示用户
|
|
340
|
-
if (autoCheckKeys_1.length > 0) {
|
|
341
|
-
var depLabels = autoCheckKeys_1
|
|
342
|
-
.map(function (key) {
|
|
343
|
-
// 先在主列表中查找
|
|
344
|
-
var item = tempDynamicList.find(function (d) { return d.key === key; });
|
|
345
|
-
if (item)
|
|
346
|
-
return (item === null || item === void 0 ? void 0 : item.label) || key;
|
|
347
|
-
// 在子元素中查找
|
|
348
|
-
var label = key;
|
|
349
|
-
tempDynamicList.forEach(function (pItem) {
|
|
350
|
-
if (pItem.children) {
|
|
351
|
-
var child = pItem.children.find(function (c) { return c.key === key; });
|
|
352
|
-
if (child) {
|
|
353
|
-
label = child.label || key;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
return label;
|
|
358
|
-
})
|
|
359
|
-
.join("、");
|
|
360
|
-
myMessage.success("\u5DF2\u81EA\u52A8\u52FE\u9009\u4F9D\u8D56\u9879\uFF1A".concat(depLabels));
|
|
361
|
-
}
|
|
362
|
-
// 6. 更新子元素的选中状态(针对依赖项)
|
|
363
|
-
if (Object.keys(childrenCheckedKeys_1).length > 0) {
|
|
364
|
-
tempDynamicList.forEach(function (item, pIndex) {
|
|
365
|
-
if (item.children && childrenCheckedKeys_1[pIndex]) {
|
|
366
|
-
item.children.forEach(function (child) {
|
|
367
|
-
if (childrenCheckedKeys_1[pIndex].includes(child.key)) {
|
|
368
|
-
child.checked = true;
|
|
369
|
-
}
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
// 5. 正常更新,包括联动子元素
|
|
330
|
+
// 4. 正常更新,包括联动子元素
|
|
376
331
|
var newDynamicList = tempDynamicList.map(function (item) {
|
|
377
|
-
var isItemChecked =
|
|
332
|
+
var isItemChecked = checkedValues.includes(item.key);
|
|
378
333
|
var newItem = __assign(__assign({}, item), { checked: isItemChecked });
|
|
379
334
|
// 如果当前变化的是这个主元素,并且它有子元素,联动子元素
|
|
380
335
|
if (item.key === changedKey &&
|
|
@@ -443,14 +398,14 @@ var DynamicDrawer = function (props, ref) {
|
|
|
443
398
|
var finalCheckedValues = __spreadArray([], checkedValues, true);
|
|
444
399
|
if (isChecked && changedKey && dependenciesMap[changedKey]) {
|
|
445
400
|
var deps = dependenciesMap[changedKey];
|
|
446
|
-
var
|
|
401
|
+
var autoCheckKeys_1 = [];
|
|
447
402
|
// 处理 required 依赖(必须全部选中)
|
|
448
403
|
if (deps.required && deps.required.length > 0) {
|
|
449
404
|
deps.required.forEach(function (depKey) {
|
|
450
405
|
// 检查依赖项是否在当前子列表或主列表中
|
|
451
406
|
var depInChildren = changeCList.find(function (c) { return c.key === depKey; });
|
|
452
407
|
if (depInChildren && !finalCheckedValues.includes(depKey)) {
|
|
453
|
-
|
|
408
|
+
autoCheckKeys_1.push(depKey);
|
|
454
409
|
}
|
|
455
410
|
else if (!depInChildren) {
|
|
456
411
|
// 依赖项在主列表中,需要检查主列表
|
|
@@ -472,13 +427,13 @@ var DynamicDrawer = function (props, ref) {
|
|
|
472
427
|
(depInMain && depInMain.checked));
|
|
473
428
|
});
|
|
474
429
|
if (!hasAnyOfSelected && deps.anyOf[0]) {
|
|
475
|
-
var
|
|
476
|
-
var depInChildren = changeCList.find(function (c) { return c.key ===
|
|
477
|
-
if (depInChildren && !finalCheckedValues.includes(
|
|
478
|
-
|
|
430
|
+
var depKey_1 = deps.anyOf[0];
|
|
431
|
+
var depInChildren = changeCList.find(function (c) { return c.key === depKey_1; });
|
|
432
|
+
if (depInChildren && !finalCheckedValues.includes(depKey_1)) {
|
|
433
|
+
autoCheckKeys_1.push(depKey_1);
|
|
479
434
|
}
|
|
480
435
|
else {
|
|
481
|
-
var depInMain = newDynamicList.find(function (d) { return d.key ===
|
|
436
|
+
var depInMain = newDynamicList.find(function (d) { return d.key === depKey_1; });
|
|
482
437
|
if (depInMain && !depInMain.checked) {
|
|
483
438
|
depInMain.checked = true;
|
|
484
439
|
var depLabel = depInMain.label || depInMain.key;
|
|
@@ -488,13 +443,13 @@ var DynamicDrawer = function (props, ref) {
|
|
|
488
443
|
}
|
|
489
444
|
}
|
|
490
445
|
// 添加自动勾选的子项
|
|
491
|
-
if (
|
|
492
|
-
|
|
446
|
+
if (autoCheckKeys_1.length > 0) {
|
|
447
|
+
autoCheckKeys_1.forEach(function (key) {
|
|
493
448
|
if (!finalCheckedValues.includes(key)) {
|
|
494
449
|
finalCheckedValues.push(key);
|
|
495
450
|
}
|
|
496
451
|
});
|
|
497
|
-
var depLabels =
|
|
452
|
+
var depLabels = autoCheckKeys_1
|
|
498
453
|
.map(function (key) {
|
|
499
454
|
var item = changeCList.find(function (c) { return c.key === key; });
|
|
500
455
|
return (item === null || item === void 0 ? void 0 : item.label) || key;
|
|
@@ -19,6 +19,7 @@ function recursionDynamicItems(list, currentDynamicList) {
|
|
|
19
19
|
currentData.dimensionPriority = result.dimensionPriority;
|
|
20
20
|
currentData.dimensionGroup = result.dimensionGroup;
|
|
21
21
|
currentData.dimensionExclusive = result.dimensionExclusive;
|
|
22
|
+
currentData.dimensionDependencies = result.dimensionDependencies;
|
|
22
23
|
// 判断是否是多级表头,这里的逻辑处理是为了兼容
|
|
23
24
|
// 后面改造成多级表头的情况
|
|
24
25
|
if (item.children) {
|