zmdms-webui 3.2.2 → 3.2.3
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.
|
@@ -201,7 +201,7 @@ var DynamicDrawer = function (props, ref) {
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
|
-
// 2.
|
|
204
|
+
// 2. 构建互斥关系映射(包括主元素和子元素)
|
|
205
205
|
var exclusiveMap = {};
|
|
206
206
|
tempDynamicList.forEach(function (item) {
|
|
207
207
|
var key = item.key;
|
|
@@ -210,6 +210,17 @@ var DynamicDrawer = function (props, ref) {
|
|
|
210
210
|
.map(function (k) { return k.trim(); })
|
|
211
211
|
.filter(Boolean);
|
|
212
212
|
exclusiveMap[key] = new Set(__spreadArray([key], exclusiveKeys, true));
|
|
213
|
+
// 添加子元素的互斥关系
|
|
214
|
+
if (item.children) {
|
|
215
|
+
item.children.forEach(function (child) {
|
|
216
|
+
var childKey = child.key;
|
|
217
|
+
var childExclusiveKeys = (child.dimensionExclusive || "")
|
|
218
|
+
.split(",")
|
|
219
|
+
.map(function (k) { return k.trim(); })
|
|
220
|
+
.filter(Boolean);
|
|
221
|
+
exclusiveMap[childKey] = new Set(__spreadArray([childKey], childExclusiveKeys, true));
|
|
222
|
+
});
|
|
223
|
+
}
|
|
213
224
|
});
|
|
214
225
|
// 3. 检查本次勾选是否有互斥
|
|
215
226
|
var hasConflict = false;
|
|
@@ -231,52 +242,135 @@ var DynamicDrawer = function (props, ref) {
|
|
|
231
242
|
}
|
|
232
243
|
// 4. 处理依赖关系:自动勾选依赖项
|
|
233
244
|
var finalCheckedValues = __spreadArray([], checkedValues, true);
|
|
234
|
-
//
|
|
245
|
+
// 构建依赖关系映射(包括主元素和子元素)
|
|
235
246
|
var dependenciesMap = {};
|
|
236
247
|
tempDynamicList.forEach(function (item) {
|
|
237
248
|
if (item.dimensionDependencies) {
|
|
238
249
|
dependenciesMap[item.key] = item.dimensionDependencies;
|
|
239
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
|
+
}
|
|
240
259
|
});
|
|
241
260
|
// 如果本次是勾选操作(isChecked = true),检查并自动添加依赖项
|
|
242
261
|
if (isChecked && changedKey && dependenciesMap[changedKey]) {
|
|
243
262
|
var deps = dependenciesMap[changedKey];
|
|
244
263
|
var autoCheckKeys_1 = [];
|
|
264
|
+
var childrenCheckedKeys_1 = {}; // 记录需要勾选的子元素 { parentIndex: [childKeys] }
|
|
245
265
|
// 处理 required 依赖(必须全部选中)
|
|
246
266
|
if (deps.required && deps.required.length > 0) {
|
|
247
267
|
deps.required.forEach(function (depKey) {
|
|
248
|
-
|
|
268
|
+
// 检查依赖项是否在主列表中
|
|
269
|
+
var depInMain = tempDynamicList.find(function (d) { return d.key === depKey; });
|
|
270
|
+
if (depInMain && !finalCheckedValues.includes(depKey)) {
|
|
249
271
|
autoCheckKeys_1.push(depKey);
|
|
250
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
|
+
}
|
|
251
288
|
});
|
|
252
289
|
}
|
|
253
290
|
// 处理 anyOf 依赖(至少选中一个)
|
|
254
291
|
if (deps.anyOf && deps.anyOf.length > 0) {
|
|
255
|
-
// 检查 anyOf
|
|
292
|
+
// 检查 anyOf 中是否已经有被选中的(包括主列表和子元素)
|
|
256
293
|
var hasAnyOfSelected = deps.anyOf.some(function (depKey) {
|
|
257
|
-
|
|
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;
|
|
258
308
|
});
|
|
259
309
|
// 如果没有任何一个被选中,自动选中第一个
|
|
260
310
|
if (!hasAnyOfSelected && deps.anyOf[0]) {
|
|
261
|
-
|
|
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
|
+
}
|
|
262
331
|
}
|
|
263
332
|
}
|
|
264
|
-
//
|
|
333
|
+
// 添加自动勾选的主元素
|
|
334
|
+
autoCheckKeys_1.forEach(function (key) {
|
|
335
|
+
if (!finalCheckedValues.includes(key)) {
|
|
336
|
+
finalCheckedValues.push(key);
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
// 提示用户
|
|
265
340
|
if (autoCheckKeys_1.length > 0) {
|
|
266
|
-
autoCheckKeys_1.forEach(function (key) {
|
|
267
|
-
if (!finalCheckedValues.includes(key)) {
|
|
268
|
-
finalCheckedValues.push(key);
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
// 提示用户
|
|
272
341
|
var depLabels = autoCheckKeys_1
|
|
273
342
|
.map(function (key) {
|
|
343
|
+
// 先在主列表中查找
|
|
274
344
|
var item = tempDynamicList.find(function (d) { return d.key === key; });
|
|
275
|
-
|
|
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;
|
|
276
358
|
})
|
|
277
359
|
.join("、");
|
|
278
360
|
myMessage.success("\u5DF2\u81EA\u52A8\u52FE\u9009\u4F9D\u8D56\u9879\uFF1A".concat(depLabels));
|
|
279
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
|
+
}
|
|
280
374
|
}
|
|
281
375
|
// 5. 正常更新,包括联动子元素
|
|
282
376
|
var newDynamicList = tempDynamicList.map(function (item) {
|
|
@@ -303,19 +397,118 @@ var DynamicDrawer = function (props, ref) {
|
|
|
303
397
|
var changeCList = ((_b = (_a = newDynamicList[pIndex].children) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, function (item) { return (__assign({}, item)); })) ||
|
|
304
398
|
[] ||
|
|
305
399
|
[];
|
|
306
|
-
//
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
400
|
+
// 1. 找出本次变化的子元素
|
|
401
|
+
var prevCheckedKeys = new Set(checkedValues.filter(function (key) {
|
|
402
|
+
var item = changeCList.find(function (d) { return d.key === key; });
|
|
403
|
+
return item && item.checked;
|
|
404
|
+
}));
|
|
405
|
+
var currentCheckedKeys = new Set(checkedValues);
|
|
406
|
+
var changedKey = null;
|
|
407
|
+
var isChecked = false;
|
|
408
|
+
for (var _i = 0, checkedValues_2 = checkedValues; _i < checkedValues_2.length; _i++) {
|
|
409
|
+
var key = checkedValues_2[_i];
|
|
410
|
+
if (!prevCheckedKeys.has(key)) {
|
|
411
|
+
changedKey = key;
|
|
412
|
+
isChecked = true;
|
|
413
|
+
break;
|
|
310
414
|
}
|
|
311
|
-
|
|
312
|
-
|
|
415
|
+
}
|
|
416
|
+
if (!changedKey) {
|
|
417
|
+
for (var _c = 0, changeCList_1 = changeCList; _c < changeCList_1.length; _c++) {
|
|
418
|
+
var item = changeCList_1[_c];
|
|
419
|
+
if (item.checked && !currentCheckedKeys.has(item.key)) {
|
|
420
|
+
changedKey = item.key;
|
|
421
|
+
isChecked = false;
|
|
422
|
+
break;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// 2. 构建完整的依赖关系映射(包括所有主元素和子元素)
|
|
427
|
+
var dependenciesMap = {};
|
|
428
|
+
// 添加主元素的依赖
|
|
429
|
+
tempDynamicList.forEach(function (item) {
|
|
430
|
+
if (item.dimensionDependencies) {
|
|
431
|
+
dependenciesMap[item.key] = item.dimensionDependencies;
|
|
432
|
+
}
|
|
433
|
+
// 添加子元素的依赖
|
|
434
|
+
if (item.children) {
|
|
435
|
+
item.children.forEach(function (child) {
|
|
436
|
+
if (child.dimensionDependencies) {
|
|
437
|
+
dependenciesMap[child.key] = child.dimensionDependencies;
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
});
|
|
442
|
+
// 3. 如果本次是勾选操作,检查并自动添加依赖项
|
|
443
|
+
var finalCheckedValues = __spreadArray([], checkedValues, true);
|
|
444
|
+
if (isChecked && changedKey && dependenciesMap[changedKey]) {
|
|
445
|
+
var deps = dependenciesMap[changedKey];
|
|
446
|
+
var autoCheckKeys_2 = [];
|
|
447
|
+
// 处理 required 依赖(必须全部选中)
|
|
448
|
+
if (deps.required && deps.required.length > 0) {
|
|
449
|
+
deps.required.forEach(function (depKey) {
|
|
450
|
+
// 检查依赖项是否在当前子列表或主列表中
|
|
451
|
+
var depInChildren = changeCList.find(function (c) { return c.key === depKey; });
|
|
452
|
+
if (depInChildren && !finalCheckedValues.includes(depKey)) {
|
|
453
|
+
autoCheckKeys_2.push(depKey);
|
|
454
|
+
}
|
|
455
|
+
else if (!depInChildren) {
|
|
456
|
+
// 依赖项在主列表中,需要检查主列表
|
|
457
|
+
var depInMain = newDynamicList.find(function (d) { return d.key === depKey; });
|
|
458
|
+
if (depInMain && !depInMain.checked) {
|
|
459
|
+
depInMain.checked = true;
|
|
460
|
+
var depLabel = depInMain.label || depInMain.key;
|
|
461
|
+
myMessage.success("\u5DF2\u81EA\u52A8\u52FE\u9009\u4F9D\u8D56\u9879\uFF1A".concat(depLabel));
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
});
|
|
313
465
|
}
|
|
466
|
+
// 处理 anyOf 依赖(至少选中一个)
|
|
467
|
+
if (deps.anyOf && deps.anyOf.length > 0) {
|
|
468
|
+
var hasAnyOfSelected = deps.anyOf.some(function (depKey) {
|
|
469
|
+
var depInChildren = changeCList.find(function (c) { return c.key === depKey; });
|
|
470
|
+
var depInMain = newDynamicList.find(function (d) { return d.key === depKey; });
|
|
471
|
+
return ((depInChildren && finalCheckedValues.includes(depKey)) ||
|
|
472
|
+
(depInMain && depInMain.checked));
|
|
473
|
+
});
|
|
474
|
+
if (!hasAnyOfSelected && deps.anyOf[0]) {
|
|
475
|
+
var depKey_2 = deps.anyOf[0];
|
|
476
|
+
var depInChildren = changeCList.find(function (c) { return c.key === depKey_2; });
|
|
477
|
+
if (depInChildren && !finalCheckedValues.includes(depKey_2)) {
|
|
478
|
+
autoCheckKeys_2.push(depKey_2);
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
var depInMain = newDynamicList.find(function (d) { return d.key === depKey_2; });
|
|
482
|
+
if (depInMain && !depInMain.checked) {
|
|
483
|
+
depInMain.checked = true;
|
|
484
|
+
var depLabel = depInMain.label || depInMain.key;
|
|
485
|
+
myMessage.success("\u5DF2\u81EA\u52A8\u52FE\u9009\u4F9D\u8D56\u9879\uFF1A".concat(depLabel));
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
// 添加自动勾选的子项
|
|
491
|
+
if (autoCheckKeys_2.length > 0) {
|
|
492
|
+
autoCheckKeys_2.forEach(function (key) {
|
|
493
|
+
if (!finalCheckedValues.includes(key)) {
|
|
494
|
+
finalCheckedValues.push(key);
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
var depLabels = autoCheckKeys_2
|
|
498
|
+
.map(function (key) {
|
|
499
|
+
var item = changeCList.find(function (c) { return c.key === key; });
|
|
500
|
+
return (item === null || item === void 0 ? void 0 : item.label) || key;
|
|
501
|
+
})
|
|
502
|
+
.join("、");
|
|
503
|
+
myMessage.success("\u5DF2\u81EA\u52A8\u52FE\u9009\u4F9D\u8D56\u9879\uFF1A".concat(depLabels));
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
// 4. 更新子元素的选中状态
|
|
507
|
+
changeCList.forEach(function (item) {
|
|
508
|
+
item.checked = finalCheckedValues.includes(item.key);
|
|
314
509
|
});
|
|
315
510
|
newDynamicList[pIndex].children = changeCList;
|
|
316
|
-
// 联动父元素
|
|
317
|
-
// const allChildrenChecked =
|
|
318
|
-
// changeCList.length > 0 && changeCList.every((child) => child.checked);
|
|
511
|
+
// 5. 联动父元素
|
|
319
512
|
var someChildrenChecked = changeCList.some(function (child) { return child.checked; });
|
|
320
513
|
if (someChildrenChecked) {
|
|
321
514
|
// 只要有子元素选中,父元素就应该是 checked = true
|