zmdms-webui 3.2.4 → 3.2.6

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.
@@ -49,8 +49,9 @@ function useCanvasTableAutoHeight(isAutoScrollY, marginBottom, canvasTableId, da
49
49
  }
50
50
  // 视口模式:根据页面位置计算高度
51
51
  // 构建表格选择器
52
+ // canvasTableId 直接赋值给 canvas-table-container 元素本身
52
53
  var tableSelector = canvasTableId
53
- ? "#".concat(CSS.escape(canvasTableId), " .canvas-table-container")
54
+ ? "#".concat(CSS.escape(canvasTableId))
54
55
  : ".canvas-table-container";
55
56
  var calculateHeight = function () {
56
57
  // 查找CanvasTable元素
@@ -170,8 +170,96 @@ var DynamicDrawer = function (props, ref) {
170
170
  }, [setTempDynamicList, filterDynamicColumnsRef, isSearchFilterEnabled]);
171
171
  // 确认
172
172
  var onSureHandle = function () {
173
+ // 验证依赖关系
174
+ var validationResult = validateDependencies();
175
+ if (!validationResult.valid) {
176
+ myMessage.warning(validationResult.message);
177
+ return; // 阻止提交
178
+ }
173
179
  onSure && onSure(tempDynamicList);
174
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
+ };
175
263
  var onCheckboxChange = function (checkedValues) {
176
264
  // 1. 找出本次变化的项(新增或移除的)
177
265
  var prevCheckedKeys = new Set(checkedValues.filter(function (key) {
@@ -239,141 +327,9 @@ var DynamicDrawer = function (props, ref) {
239
327
  myMessage.warning("所选项存在互斥关系,不能同时勾选!");
240
328
  return; // 拦截本次勾选
241
329
  }
242
- // 4. 处理依赖关系:自动勾选依赖项
243
- var finalCheckedValues = __spreadArray([], checkedValues, true);
244
- // 构建依赖关系映射(包括主元素和子元素)
245
- var dependenciesMap = {};
246
- tempDynamicList.forEach(function (item) {
247
- if (item.dimensionDependencies) {
248
- dependenciesMap[item.key] = item.dimensionDependencies;
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
- }
258
- });
259
- // 如果本次是勾选操作(isChecked = true),检查并自动添加依赖项
260
- if (isChecked && changedKey && dependenciesMap[changedKey]) {
261
- var deps = dependenciesMap[changedKey];
262
- var autoCheckKeys_1 = [];
263
- var childrenCheckedKeys_1 = {}; // 记录需要勾选的子元素 { parentIndex: [childKeys] }
264
- // 处理 required 依赖(必须全部选中)
265
- if (deps.required && deps.required.length > 0) {
266
- deps.required.forEach(function (depKey) {
267
- // 检查依赖项是否在主列表中
268
- var depInMain = tempDynamicList.find(function (d) { return d.key === depKey; });
269
- if (depInMain && !finalCheckedValues.includes(depKey)) {
270
- autoCheckKeys_1.push(depKey);
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
- }
287
- });
288
- }
289
- // 处理 anyOf 依赖(至少选中一个)
290
- if (deps.anyOf && deps.anyOf.length > 0) {
291
- // 检查 anyOf 中是否已经有被选中的(包括主列表和子元素)
292
- var hasAnyOfSelected = deps.anyOf.some(function (depKey) {
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;
307
- });
308
- // 如果没有任何一个被选中,自动选中第一个
309
- if (!hasAnyOfSelected && deps.anyOf[0]) {
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
- }
330
- }
331
- }
332
- // 添加自动勾选的主元素
333
- autoCheckKeys_1.forEach(function (key) {
334
- if (!finalCheckedValues.includes(key)) {
335
- finalCheckedValues.push(key);
336
- }
337
- });
338
- // 提示用户
339
- if (autoCheckKeys_1.length > 0) {
340
- var depLabels = autoCheckKeys_1
341
- .map(function (key) {
342
- // 先在主列表中查找
343
- var item = tempDynamicList.find(function (d) { return d.key === key; });
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;
357
- })
358
- .join("、");
359
- myMessage.success("\u5DF2\u81EA\u52A8\u52FE\u9009\u4F9D\u8D56\u9879\uFF1A".concat(depLabels));
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
- }
373
- }
374
- // 5. 正常更新,包括联动子元素
330
+ // 4. 正常更新,包括联动子元素
375
331
  var newDynamicList = tempDynamicList.map(function (item) {
376
- var isItemChecked = finalCheckedValues.includes(item.key);
332
+ var isItemChecked = checkedValues.includes(item.key);
377
333
  var newItem = __assign(__assign({}, item), { checked: isItemChecked });
378
334
  // 如果当前变化的是这个主元素,并且它有子元素,联动子元素
379
335
  if (item.key === changedKey &&
@@ -442,14 +398,14 @@ var DynamicDrawer = function (props, ref) {
442
398
  var finalCheckedValues = __spreadArray([], checkedValues, true);
443
399
  if (isChecked && changedKey && dependenciesMap[changedKey]) {
444
400
  var deps = dependenciesMap[changedKey];
445
- var autoCheckKeys_2 = [];
401
+ var autoCheckKeys_1 = [];
446
402
  // 处理 required 依赖(必须全部选中)
447
403
  if (deps.required && deps.required.length > 0) {
448
404
  deps.required.forEach(function (depKey) {
449
405
  // 检查依赖项是否在当前子列表或主列表中
450
406
  var depInChildren = changeCList.find(function (c) { return c.key === depKey; });
451
407
  if (depInChildren && !finalCheckedValues.includes(depKey)) {
452
- autoCheckKeys_2.push(depKey);
408
+ autoCheckKeys_1.push(depKey);
453
409
  }
454
410
  else if (!depInChildren) {
455
411
  // 依赖项在主列表中,需要检查主列表
@@ -471,13 +427,13 @@ var DynamicDrawer = function (props, ref) {
471
427
  (depInMain && depInMain.checked));
472
428
  });
473
429
  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);
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);
478
434
  }
479
435
  else {
480
- var depInMain = newDynamicList.find(function (d) { return d.key === depKey_2; });
436
+ var depInMain = newDynamicList.find(function (d) { return d.key === depKey_1; });
481
437
  if (depInMain && !depInMain.checked) {
482
438
  depInMain.checked = true;
483
439
  var depLabel = depInMain.label || depInMain.key;
@@ -487,13 +443,13 @@ var DynamicDrawer = function (props, ref) {
487
443
  }
488
444
  }
489
445
  // 添加自动勾选的子项
490
- if (autoCheckKeys_2.length > 0) {
491
- autoCheckKeys_2.forEach(function (key) {
446
+ if (autoCheckKeys_1.length > 0) {
447
+ autoCheckKeys_1.forEach(function (key) {
492
448
  if (!finalCheckedValues.includes(key)) {
493
449
  finalCheckedValues.push(key);
494
450
  }
495
451
  });
496
- var depLabels = autoCheckKeys_2
452
+ var depLabels = autoCheckKeys_1
497
453
  .map(function (key) {
498
454
  var item = changeCList.find(function (c) { return c.key === key; });
499
455
  return (item === null || item === void 0 ? void 0 : item.label) || key;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zmdms-webui",
3
- "version": "3.2.4",
3
+ "version": "3.2.6",
4
4
  "private": false,
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",