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