vxe-pc-ui 4.6.9 → 4.6.10

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.
Files changed (78) hide show
  1. package/es/button/src/button.js +2 -4
  2. package/es/form/render/index.js +2 -4
  3. package/es/form/src/form.js +97 -37
  4. package/es/form-design/src/form-view.js +1 -3
  5. package/es/icon/style.css +1 -1
  6. package/es/list-design/src/layout-preview.js +5 -7
  7. package/es/list-design/src/list-view.js +5 -7
  8. package/es/modal/src/modal.js +2 -4
  9. package/es/pager/src/pager.js +1 -3
  10. package/es/style.css +1 -1
  11. package/es/style.min.css +1 -1
  12. package/es/table-select/src/table-select.js +5 -7
  13. package/es/tabs/src/tabs.js +2 -6
  14. package/es/tree/src/tree.js +238 -173
  15. package/es/ui/index.js +3 -7
  16. package/es/ui/src/log.js +1 -1
  17. package/es/upload/src/upload.js +5 -7
  18. package/lib/button/src/button.js +2 -4
  19. package/lib/button/src/button.min.js +1 -1
  20. package/lib/form/render/index.js +2 -4
  21. package/lib/form/render/index.min.js +1 -1
  22. package/lib/form/src/form.js +95 -36
  23. package/lib/form/src/form.min.js +1 -1
  24. package/lib/form-design/src/form-view.js +1 -3
  25. package/lib/form-design/src/form-view.min.js +1 -1
  26. package/lib/icon/style/style.css +1 -1
  27. package/lib/icon/style/style.min.css +1 -1
  28. package/lib/index.umd.js +422 -275
  29. package/lib/index.umd.min.js +1 -1
  30. package/lib/list-design/src/layout-preview.js +5 -7
  31. package/lib/list-design/src/layout-preview.min.js +1 -1
  32. package/lib/list-design/src/list-view.js +5 -7
  33. package/lib/list-design/src/list-view.min.js +1 -1
  34. package/lib/modal/src/modal.js +2 -4
  35. package/lib/modal/src/modal.min.js +1 -1
  36. package/lib/pager/src/pager.js +1 -3
  37. package/lib/pager/src/pager.min.js +1 -1
  38. package/lib/style.css +1 -1
  39. package/lib/style.min.css +1 -1
  40. package/lib/table-select/src/table-select.js +5 -7
  41. package/lib/table-select/src/table-select.min.js +1 -1
  42. package/lib/tabs/src/tabs.js +2 -6
  43. package/lib/tabs/src/tabs.min.js +1 -1
  44. package/lib/tree/src/tree.js +293 -179
  45. package/lib/tree/src/tree.min.js +1 -1
  46. package/lib/ui/index.js +3 -7
  47. package/lib/ui/index.min.js +1 -1
  48. package/lib/ui/src/log.js +1 -1
  49. package/lib/ui/src/log.min.js +1 -1
  50. package/lib/upload/src/upload.js +5 -7
  51. package/lib/upload/src/upload.min.js +1 -1
  52. package/package.json +1 -1
  53. package/packages/button/src/button.ts +2 -4
  54. package/packages/form/render/index.ts +2 -4
  55. package/packages/form/src/form.ts +98 -35
  56. package/packages/form-design/src/form-view.ts +1 -3
  57. package/packages/list-design/src/layout-preview.ts +5 -7
  58. package/packages/list-design/src/list-view.ts +5 -7
  59. package/packages/modal/src/modal.ts +2 -4
  60. package/packages/pager/src/pager.ts +1 -3
  61. package/packages/table-select/src/table-select.ts +5 -7
  62. package/packages/tabs/src/tabs.ts +2 -6
  63. package/packages/tree/src/tree.ts +235 -172
  64. package/packages/ui/index.ts +2 -6
  65. package/packages/upload/src/upload.ts +5 -7
  66. package/types/components/tree.d.ts +7 -5
  67. /package/es/icon/{iconfont.1747279440023.ttf → iconfont.1747318422186.ttf} +0 -0
  68. /package/es/icon/{iconfont.1747279440023.woff → iconfont.1747318422186.woff} +0 -0
  69. /package/es/icon/{iconfont.1747279440023.woff2 → iconfont.1747318422186.woff2} +0 -0
  70. /package/es/{iconfont.1747279440023.ttf → iconfont.1747318422186.ttf} +0 -0
  71. /package/es/{iconfont.1747279440023.woff → iconfont.1747318422186.woff} +0 -0
  72. /package/es/{iconfont.1747279440023.woff2 → iconfont.1747318422186.woff2} +0 -0
  73. /package/lib/icon/style/{iconfont.1747279440023.ttf → iconfont.1747318422186.ttf} +0 -0
  74. /package/lib/icon/style/{iconfont.1747279440023.woff → iconfont.1747318422186.woff} +0 -0
  75. /package/lib/icon/style/{iconfont.1747279440023.woff2 → iconfont.1747318422186.woff2} +0 -0
  76. /package/lib/{iconfont.1747279440023.ttf → iconfont.1747318422186.ttf} +0 -0
  77. /package/lib/{iconfont.1747279440023.woff → iconfont.1747318422186.woff} +0 -0
  78. /package/lib/{iconfont.1747279440023.woff2 → iconfont.1747318422186.woff2} +0 -0
@@ -56,10 +56,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
56
56
  type: String,
57
57
  default: () => (0, _ui.getConfig)().tree.hasChildField
58
58
  },
59
- // mapChildrenField: {
60
- // type: String as PropType<VxeTreePropTypes.MapChildrenField>,
61
- // default: () => getConfig().tree.mapChildrenField
62
- // },
59
+ mapChildrenField: {
60
+ type: String,
61
+ default: () => (0, _ui.getConfig)().tree.mapChildrenField
62
+ },
63
63
  transform: Boolean,
64
64
  // 已废弃
65
65
  isCurrent: Boolean,
@@ -131,16 +131,18 @@ var _default = exports.default = (0, _vue.defineComponent)({
131
131
  const refElem = (0, _vue.ref)();
132
132
  const reactData = (0, _vue.reactive)({
133
133
  currentNode: null,
134
- nodeMaps: {},
135
134
  selectRadioKey: props.checkNodeKey,
136
135
  treeList: [],
137
- treeExpandedMaps: {},
138
- treeExpandLazyLoadedMaps: {},
139
- selectCheckboxMaps: {},
140
- indeterminateCheckboxMaps: {}
136
+ updateExpandedFlag: 1,
137
+ updateCheckboxFlag: 1
141
138
  });
142
139
  const internalData = {
143
- // initialized: false
140
+ // initialized: false,
141
+ nodeMaps: {},
142
+ selectCheckboxMaps: {},
143
+ indeterminateRowMaps: {},
144
+ treeExpandedMaps: {},
145
+ treeExpandLazyLoadedMaps: {}
144
146
  };
145
147
  const refMaps = {
146
148
  refElem
@@ -161,6 +163,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
161
163
  const computeChildrenField = (0, _vue.computed)(() => {
162
164
  return props.childrenField || 'children';
163
165
  });
166
+ const computeMapChildrenField = (0, _vue.computed)(() => {
167
+ return props.mapChildrenField || 'mapChildren';
168
+ });
164
169
  const computeHasChildField = (0, _vue.computed)(() => {
165
170
  return props.hasChildField || 'hasChild';
166
171
  });
@@ -235,10 +240,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
235
240
  };
236
241
  const isExpandByNode = node => {
237
242
  const {
238
- treeExpandedMaps
243
+ updateExpandedFlag
239
244
  } = reactData;
245
+ const {
246
+ treeExpandedMaps
247
+ } = internalData;
240
248
  const nodeid = getNodeId(node);
241
- return !!treeExpandedMaps[nodeid];
249
+ return !!(updateExpandedFlag && treeExpandedMaps[nodeid]);
242
250
  };
243
251
  const isCheckedByRadioNodeId = nodeid => {
244
252
  const {
@@ -251,18 +259,24 @@ var _default = exports.default = (0, _vue.defineComponent)({
251
259
  };
252
260
  const isCheckedByCheckboxNodeId = nodeid => {
253
261
  const {
254
- selectCheckboxMaps
262
+ updateCheckboxFlag
255
263
  } = reactData;
256
- return !!selectCheckboxMaps[nodeid];
264
+ const {
265
+ selectCheckboxMaps
266
+ } = internalData;
267
+ return !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
257
268
  };
258
269
  const isCheckedByCheckboxNode = node => {
259
270
  return isCheckedByCheckboxNodeId(getNodeId(node));
260
271
  };
261
272
  const isIndeterminateByCheckboxNodeid = nodeid => {
262
273
  const {
263
- indeterminateCheckboxMaps
274
+ updateCheckboxFlag
264
275
  } = reactData;
265
- return !!indeterminateCheckboxMaps[nodeid];
276
+ const {
277
+ indeterminateRowMaps
278
+ } = internalData;
279
+ return !!(updateCheckboxFlag && indeterminateRowMaps[nodeid]);
266
280
  };
267
281
  const isIndeterminateByCheckboxNode = node => {
268
282
  return isIndeterminateByCheckboxNodeid(getNodeId(node));
@@ -284,38 +298,66 @@ var _default = exports.default = (0, _vue.defineComponent)({
284
298
  if (!_xeUtils.default.isArray(nodeList)) {
285
299
  nodeList = [nodeList];
286
300
  }
287
- handleCheckedCheckboxNode(nodeList.map(item => getNodeId(item)), checked);
301
+ handleCheckedCheckboxNode(nodeList, checked);
288
302
  }
289
303
  return (0, _vue.nextTick)();
290
304
  };
291
305
  const setCheckboxByNodeId = (nodeIds, checked) => {
306
+ const {
307
+ nodeMaps
308
+ } = internalData;
292
309
  if (nodeIds) {
293
310
  if (!_xeUtils.default.isArray(nodeIds)) {
294
311
  nodeIds = [nodeIds];
295
312
  }
296
- handleCheckedCheckboxNode(nodeIds, checked);
313
+ const nodeList = [];
314
+ nodeIds.forEach(nodeid => {
315
+ const nodeItem = nodeMaps[nodeid];
316
+ if (nodeItem) {
317
+ nodeList.push(nodeItem.item);
318
+ }
319
+ });
320
+ handleCheckedCheckboxNode(nodeList, checked);
297
321
  }
298
322
  return (0, _vue.nextTick)();
299
323
  };
300
- const handleCheckedCheckboxNode = (nodeIds, checked) => {
301
- const selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps);
302
- nodeIds.forEach(key => {
324
+ const handleCheckedCheckboxNode = (nodeList, checked) => {
325
+ const {
326
+ transform
327
+ } = props;
328
+ const {
329
+ selectCheckboxMaps
330
+ } = internalData;
331
+ const mapChildrenField = computeMapChildrenField.value;
332
+ const childrenField = computeChildrenField.value;
333
+ const checkboxOpts = computeCheckboxOpts.value;
334
+ const {
335
+ checkStrictly
336
+ } = checkboxOpts;
337
+ const handleSelect = node => {
338
+ const nodeid = getNodeId(node);
303
339
  if (checked) {
304
- selectKeyMaps[key] = true;
305
- } else if (selectKeyMaps[key]) {
306
- delete selectKeyMaps[key];
340
+ if (!selectCheckboxMaps[nodeid]) {
341
+ selectCheckboxMaps[nodeid] = node;
342
+ }
343
+ } else {
344
+ if (selectCheckboxMaps[nodeid]) {
345
+ delete selectCheckboxMaps[nodeid];
346
+ }
307
347
  }
308
- });
309
- reactData.selectCheckboxMaps = selectKeyMaps;
310
- };
311
- const updateCheckboxChecked = nodeIds => {
312
- const selectKeyMaps = {};
313
- if (nodeIds) {
314
- nodeIds.forEach(key => {
315
- selectKeyMaps[key] = true;
348
+ };
349
+ if (checkStrictly) {
350
+ nodeList.forEach(handleSelect);
351
+ } else {
352
+ _xeUtils.default.eachTree(nodeList, handleSelect, {
353
+ children: transform ? mapChildrenField : childrenField
316
354
  });
317
355
  }
318
- reactData.selectCheckboxMaps = selectKeyMaps;
356
+ reactData.updateCheckboxFlag++;
357
+ updateCheckboxStatus();
358
+ };
359
+ const updateCheckboxChecked = nodeIds => {
360
+ setCheckboxByNodeId(nodeIds, true);
319
361
  };
320
362
  const handleSetExpand = (nodeid, expanded, expandedMaps) => {
321
363
  if (expanded) {
@@ -362,9 +404,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
362
404
  },
363
405
  getCurrentNode() {
364
406
  const {
365
- currentNode,
366
- nodeMaps
407
+ currentNode
367
408
  } = reactData;
409
+ const {
410
+ nodeMaps
411
+ } = internalData;
368
412
  if (currentNode) {
369
413
  const nodeItem = nodeMaps[getNodeId(currentNode)];
370
414
  if (nodeItem) {
@@ -376,7 +420,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
376
420
  setCurrentNodeId(nodeKey) {
377
421
  const {
378
422
  nodeMaps
379
- } = reactData;
423
+ } = internalData;
380
424
  const nodeItem = nodeMaps[nodeKey];
381
425
  reactData.currentNode = nodeItem ? nodeItem.item : null;
382
426
  return (0, _vue.nextTick)();
@@ -394,9 +438,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
394
438
  },
395
439
  getRadioNode() {
396
440
  const {
397
- selectRadioKey,
398
- nodeMaps
441
+ selectRadioKey
399
442
  } = reactData;
443
+ const {
444
+ nodeMaps
445
+ } = internalData;
400
446
  if (selectRadioKey) {
401
447
  const nodeItem = nodeMaps[selectRadioKey];
402
448
  if (nodeItem) {
@@ -415,14 +461,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
415
461
  getCheckboxNodeIds() {
416
462
  const {
417
463
  selectCheckboxMaps
418
- } = reactData;
464
+ } = internalData;
419
465
  return Object.keys(selectCheckboxMaps);
420
466
  },
421
467
  getCheckboxNodes() {
422
468
  const {
423
469
  nodeMaps,
424
470
  selectCheckboxMaps
425
- } = reactData;
471
+ } = internalData;
426
472
  const list = [];
427
473
  _xeUtils.default.each(selectCheckboxMaps, (item, nodeid) => {
428
474
  const nodeItem = nodeMaps[nodeid];
@@ -433,57 +479,69 @@ var _default = exports.default = (0, _vue.defineComponent)({
433
479
  return list;
434
480
  },
435
481
  clearCheckboxNode() {
436
- reactData.selectCheckboxMaps = {};
482
+ internalData.selectCheckboxMaps = {};
483
+ reactData.updateCheckboxFlag++;
437
484
  return (0, _vue.nextTick)();
438
485
  },
439
486
  setAllCheckboxNode(checked) {
487
+ const {
488
+ transform
489
+ } = props;
440
490
  const selectMaps = {};
441
491
  const childrenField = computeChildrenField.value;
492
+ const mapChildrenField = computeMapChildrenField.value;
442
493
  if (checked) {
443
494
  _xeUtils.default.eachTree(reactData.treeList, node => {
444
495
  const nodeid = getNodeId(node);
445
496
  selectMaps[nodeid] = true;
446
497
  }, {
447
- children: childrenField
498
+ children: transform ? mapChildrenField : childrenField
448
499
  });
449
500
  }
450
- reactData.selectCheckboxMaps = selectMaps;
501
+ internalData.selectCheckboxMaps = selectMaps;
502
+ reactData.updateCheckboxFlag++;
451
503
  return (0, _vue.nextTick)();
452
504
  },
453
505
  clearExpandNode() {
454
506
  return treeMethods.clearAllExpandNode();
455
507
  },
456
508
  clearAllExpandNode() {
457
- _xeUtils.default.each(reactData.nodeMaps, nodeItem => {
509
+ const {
510
+ nodeMaps
511
+ } = internalData;
512
+ _xeUtils.default.each(nodeMaps, nodeItem => {
458
513
  nodeItem.treeLoaded = false;
459
514
  });
460
- reactData.treeExpandedMaps = {};
515
+ internalData.treeExpandedMaps = {};
516
+ reactData.updateExpandedFlag++;
461
517
  return (0, _vue.nextTick)();
462
518
  },
463
519
  setExpandByNodeId(nodeids, expanded) {
464
- const expandedMaps = Object.assign({}, reactData.treeExpandedMaps);
520
+ const {
521
+ treeExpandedMaps
522
+ } = internalData;
465
523
  if (nodeids) {
466
524
  if (!_xeUtils.default.isArray(nodeids)) {
467
525
  nodeids = [nodeids];
468
526
  }
469
527
  nodeids.forEach(nodeid => {
470
- handleSetExpand(nodeid, expanded, expandedMaps);
528
+ handleSetExpand(nodeid, expanded, treeExpandedMaps);
471
529
  });
472
- reactData.treeExpandedMaps = expandedMaps;
530
+ reactData.updateExpandedFlag++;
473
531
  }
474
532
  return (0, _vue.nextTick)();
475
533
  },
476
534
  getExpandNodeIds() {
477
535
  const {
478
536
  treeExpandedMaps
479
- } = reactData;
480
- return Object.keys(treeExpandedMaps);
537
+ } = internalData;
538
+ return _xeUtils.default.keys(treeExpandedMaps);
481
539
  },
482
540
  getExpandNodes() {
483
541
  const {
484
542
  nodeMaps,
485
543
  treeExpandedMaps
486
- } = reactData;
544
+ } = internalData;
487
545
  const list = [];
488
546
  _xeUtils.default.each(treeExpandedMaps, (item, nodeid) => {
489
547
  const nodeItem = nodeMaps[nodeid];
@@ -494,62 +552,74 @@ var _default = exports.default = (0, _vue.defineComponent)({
494
552
  return list;
495
553
  },
496
554
  setExpandNode(nodes, expanded) {
497
- const expandedMaps = Object.assign({}, reactData.treeExpandedMaps);
555
+ const {
556
+ treeExpandedMaps
557
+ } = internalData;
498
558
  if (nodes) {
499
559
  if (!_xeUtils.default.isArray(nodes)) {
500
560
  nodes = [nodes];
501
561
  }
502
562
  nodes.forEach(node => {
503
563
  const nodeid = getNodeId(node);
504
- handleSetExpand(nodeid, expanded, expandedMaps);
564
+ handleSetExpand(nodeid, expanded, treeExpandedMaps);
505
565
  });
506
- reactData.treeExpandedMaps = expandedMaps;
566
+ reactData.updateExpandedFlag++;
507
567
  }
508
568
  return (0, _vue.nextTick)();
509
569
  },
510
570
  toggleExpandByNodeId(nodeids) {
511
- const expandedMaps = Object.assign({}, reactData.treeExpandedMaps);
571
+ const {
572
+ treeExpandedMaps
573
+ } = internalData;
512
574
  if (nodeids) {
513
575
  if (!_xeUtils.default.isArray(nodeids)) {
514
576
  nodeids = [nodeids];
515
577
  }
516
578
  nodeids.forEach(nodeid => {
517
- handleSetExpand(nodeid, !expandedMaps[nodeid], expandedMaps);
579
+ handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps);
518
580
  });
519
- reactData.treeExpandedMaps = expandedMaps;
581
+ reactData.updateExpandedFlag++;
520
582
  }
521
583
  return (0, _vue.nextTick)();
522
584
  },
523
585
  toggleExpandNode(nodes) {
524
- const expandedMaps = Object.assign({}, reactData.treeExpandedMaps);
586
+ const {
587
+ treeExpandedMaps
588
+ } = internalData;
525
589
  if (nodes) {
526
590
  if (!_xeUtils.default.isArray(nodes)) {
527
591
  nodes = [nodes];
528
592
  }
529
593
  nodes.forEach(node => {
530
594
  const nodeid = getNodeId(node);
531
- handleSetExpand(nodeid, !expandedMaps[nodeid], expandedMaps);
595
+ handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps);
532
596
  });
533
- reactData.treeExpandedMaps = expandedMaps;
597
+ reactData.updateExpandedFlag++;
534
598
  }
535
599
  return (0, _vue.nextTick)();
536
600
  },
537
601
  setAllExpandNode(expanded) {
538
- const expandedMaps = {};
602
+ const {
603
+ transform
604
+ } = props;
605
+ const {
606
+ treeExpandedMaps
607
+ } = internalData;
539
608
  const childrenField = computeChildrenField.value;
609
+ const mapChildrenField = computeMapChildrenField.value;
540
610
  if (expanded) {
541
611
  _xeUtils.default.eachTree(reactData.treeList, node => {
542
612
  const childList = _xeUtils.default.get(node, childrenField);
543
613
  const hasChild = childList && childList.length;
544
614
  if (hasChild) {
545
615
  const nodeid = getNodeId(node);
546
- expandedMaps[nodeid] = true;
616
+ treeExpandedMaps[nodeid] = true;
547
617
  }
548
618
  }, {
549
- children: childrenField
619
+ children: transform ? mapChildrenField : childrenField
550
620
  });
551
621
  }
552
- reactData.treeExpandedMaps = expandedMaps;
622
+ reactData.updateExpandedFlag++;
553
623
  return (0, _vue.nextTick)();
554
624
  },
555
625
  reloadExpandNode(node) {
@@ -568,7 +638,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
568
638
  } = props;
569
639
  const {
570
640
  nodeMaps
571
- } = reactData;
641
+ } = internalData;
572
642
  if (lazy) {
573
643
  const nodeItem = nodeMaps[getNodeId(node)];
574
644
  if (nodeItem) {
@@ -587,7 +657,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
587
657
  } = props;
588
658
  const {
589
659
  nodeMaps
590
- } = reactData;
660
+ } = internalData;
591
661
  if (!lazy) {
592
662
  return Promise.resolve([]);
593
663
  }
@@ -627,24 +697,29 @@ var _default = exports.default = (0, _vue.defineComponent)({
627
697
  isCheckedByCheckboxNode,
628
698
  getCheckboxIndeterminateNodes() {
629
699
  const {
630
- treeList,
631
- indeterminateCheckboxMaps
632
- } = reactData;
633
- const indeterminateNodes = [];
634
- _xeUtils.default.eachTree(treeList, node => {
635
- if (indeterminateCheckboxMaps[getNodeId(node)]) {
636
- indeterminateNodes.push(node);
700
+ nodeMaps,
701
+ indeterminateRowMaps
702
+ } = internalData;
703
+ const list = [];
704
+ _xeUtils.default.each(indeterminateRowMaps, (item, nodeid) => {
705
+ const nodeItem = nodeMaps[nodeid];
706
+ if (nodeItem) {
707
+ list.push(nodeItem.item);
637
708
  }
638
709
  });
639
- return indeterminateNodes;
710
+ return list;
640
711
  }
641
712
  };
642
713
  const cacheNodeMap = () => {
714
+ const {
715
+ transform
716
+ } = props;
643
717
  const {
644
718
  treeList
645
719
  } = reactData;
646
720
  const valueField = computeValueField.value;
647
721
  const childrenField = computeChildrenField.value;
722
+ const mapChildrenField = computeMapChildrenField.value;
648
723
  const keyMaps = {};
649
724
  _xeUtils.default.eachTree(treeList, (item, itemIndex, items, path, parent, nodes) => {
650
725
  let nodeid = getNodeId(item);
@@ -663,11 +738,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
663
738
  treeLoaded: false
664
739
  };
665
740
  }, {
666
- children: childrenField
741
+ children: transform ? mapChildrenField : childrenField
667
742
  });
668
- reactData.nodeMaps = keyMaps;
743
+ internalData.nodeMaps = keyMaps;
669
744
  };
670
- const updateData = list => {
745
+ const loadTreeData = list => {
671
746
  const {
672
747
  expandAll,
673
748
  transform
@@ -677,28 +752,31 @@ var _default = exports.default = (0, _vue.defineComponent)({
677
752
  } = internalData;
678
753
  const keyField = computeKeyField.value;
679
754
  const parentField = computeParentField.value;
680
- const childrenField = computeChildrenField.value;
755
+ const mapChildrenField = computeMapChildrenField.value;
681
756
  if (transform) {
682
757
  reactData.treeList = _xeUtils.default.toArrayTree(list, {
683
758
  key: keyField,
684
759
  parentKey: parentField,
685
- mapChildren: childrenField
760
+ mapChildren: mapChildrenField
686
761
  });
687
762
  } else {
688
763
  reactData.treeList = list ? list.slice(0) : [];
689
764
  }
690
765
  cacheNodeMap();
691
- if (expandAll && !initialized) {
766
+ if (!initialized) {
692
767
  if (list && list.length) {
693
768
  internalData.initialized = true;
694
- $xeTree.setAllExpandNode(true);
769
+ if (expandAll) {
770
+ $xeTree.setAllExpandNode(true);
771
+ }
772
+ $xeTree.setCheckboxByNodeId(props.checkNodeKeys || [], true);
695
773
  }
696
774
  }
697
775
  };
698
776
  const handleCountLine = (item, isRoot, nodeItem) => {
699
777
  const {
700
778
  treeExpandedMaps
701
- } = reactData;
779
+ } = internalData;
702
780
  const childrenField = computeChildrenField.value;
703
781
  const nodeid = getNodeId(item);
704
782
  nodeItem.lineCount++;
@@ -713,7 +791,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
713
791
  const updateNodeLine = node => {
714
792
  const {
715
793
  nodeMaps
716
- } = reactData;
794
+ } = internalData;
717
795
  if (node) {
718
796
  const nodeid = getNodeId(node);
719
797
  const nodeItem = nodeMaps[nodeid];
@@ -783,21 +861,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
783
861
  } = checkboxOpts;
784
862
  return new Promise(resolve => {
785
863
  if (loadMethod) {
786
- const tempExpandLazyLoadedMaps = Object.assign({}, reactData.treeExpandLazyLoadedMaps);
787
864
  const {
788
865
  nodeMaps
789
- } = reactData;
866
+ } = internalData;
790
867
  const nodeid = getNodeId(node);
791
868
  const nodeItem = nodeMaps[nodeid];
792
- tempExpandLazyLoadedMaps[nodeid] = true;
793
- reactData.treeExpandLazyLoadedMaps = tempExpandLazyLoadedMaps;
869
+ internalData.treeExpandLazyLoadedMaps[nodeid] = true;
794
870
  Promise.resolve(loadMethod({
795
871
  $tree: $xeTree,
796
872
  node
797
873
  })).then(childRecords => {
798
874
  const {
799
875
  treeExpandLazyLoadedMaps
800
- } = reactData;
876
+ } = internalData;
801
877
  nodeItem.treeLoaded = true;
802
878
  if (treeExpandLazyLoadedMaps[nodeid]) {
803
879
  treeExpandLazyLoadedMaps[nodeid] = false;
@@ -806,15 +882,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
806
882
  childRecords = [];
807
883
  }
808
884
  if (childRecords) {
809
- return treeMethods.loadChildrenNode(node, childRecords).then(childRows => {
810
- const tempExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
811
- if (childRows.length && !tempExpandedMaps[nodeid]) {
812
- tempExpandedMaps[nodeid] = true;
885
+ return $xeTree.loadChildrenNode(node, childRecords).then(childRows => {
886
+ const {
887
+ treeExpandedMaps
888
+ } = internalData;
889
+ if (childRows.length && !treeExpandedMaps[nodeid]) {
890
+ treeExpandedMaps[nodeid] = true;
813
891
  }
814
- reactData.treeExpandedMaps = tempExpandedMaps;
892
+ reactData.updateExpandedFlag++;
815
893
  // 如果当前节点已选中,则展开后子节点也被选中
816
- if (!checkStrictly && treeMethods.isCheckedByCheckboxNodeId(nodeid)) {
817
- handleCheckedCheckboxNode(childRows.map(item => getNodeId(item)), true);
894
+ if (!checkStrictly && $xeTree.isCheckedByCheckboxNodeId(nodeid)) {
895
+ handleCheckedCheckboxNode(childRows, true);
818
896
  }
819
897
  updateNodeLine(node);
820
898
  dispatchEvent('load-success', {
@@ -833,7 +911,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
833
911
  }).catch(e => {
834
912
  const {
835
913
  treeExpandLazyLoadedMaps
836
- } = reactData;
914
+ } = internalData;
837
915
  nodeItem.treeLoaded = false;
838
916
  if (treeExpandLazyLoadedMaps[nodeid]) {
839
917
  treeExpandLazyLoadedMaps[nodeid] = false;
@@ -864,10 +942,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
864
942
  toggleMethod
865
943
  } = props;
866
944
  const {
867
- nodeMaps,
868
- treeExpandLazyLoadedMaps
869
- } = reactData;
870
- const tempExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
945
+ treeExpandLazyLoadedMaps,
946
+ treeExpandedMaps
947
+ } = internalData;
948
+ const {
949
+ nodeMaps
950
+ } = internalData;
871
951
  const childrenField = computeChildrenField.value;
872
952
  const hasChildField = computeHasChildField.value;
873
953
  const result = [];
@@ -884,8 +964,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
884
964
  if (nodeItem) {
885
965
  nodeItem.items.forEach(item => {
886
966
  const itemNodeId = getNodeId(item);
887
- if (tempExpandedMaps[itemNodeId]) {
888
- delete tempExpandedMaps[itemNodeId];
967
+ if (treeExpandedMaps[itemNodeId]) {
968
+ delete treeExpandedMaps[itemNodeId];
889
969
  }
890
970
  });
891
971
  }
@@ -894,7 +974,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
894
974
  if (expanded) {
895
975
  validNodes.forEach(item => {
896
976
  const itemNodeId = getNodeId(item);
897
- if (!tempExpandedMaps[itemNodeId]) {
977
+ if (!treeExpandedMaps[itemNodeId]) {
898
978
  const nodeItem = nodeMaps[itemNodeId];
899
979
  const isLoad = lazy && item[hasChildField] && !nodeItem.treeLoaded && !treeExpandLazyLoadedMaps[itemNodeId];
900
980
  // 是否使用懒加载
@@ -902,7 +982,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
902
982
  result.push(handleAsyncTreeExpandChilds(item));
903
983
  } else {
904
984
  if (item[childrenField] && item[childrenField].length) {
905
- tempExpandedMaps[itemNodeId] = true;
985
+ treeExpandedMaps[itemNodeId] = true;
906
986
  expandNodes.push(item);
907
987
  }
908
988
  }
@@ -911,13 +991,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
911
991
  } else {
912
992
  validNodes.forEach(item => {
913
993
  const itemNodeId = getNodeId(item);
914
- if (tempExpandedMaps[itemNodeId]) {
915
- delete tempExpandedMaps[itemNodeId];
994
+ if (treeExpandedMaps[itemNodeId]) {
995
+ delete treeExpandedMaps[itemNodeId];
916
996
  expandNodes.push(item);
917
997
  }
918
998
  });
919
999
  }
920
- reactData.treeExpandedMaps = tempExpandedMaps;
1000
+ reactData.updateExpandedFlag++;
921
1001
  expandNodes.forEach(updateNodeLine);
922
1002
  return Promise.all(result);
923
1003
  };
@@ -928,7 +1008,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
928
1008
  const {
929
1009
  treeExpandedMaps,
930
1010
  treeExpandLazyLoadedMaps
931
- } = reactData;
1011
+ } = internalData;
932
1012
  const nodeid = getNodeId(node);
933
1013
  const expanded = !treeExpandedMaps[nodeid];
934
1014
  evnt.stopPropagation();
@@ -936,74 +1016,107 @@ var _default = exports.default = (0, _vue.defineComponent)({
936
1016
  handleBaseTreeExpand([node], expanded);
937
1017
  }
938
1018
  };
939
- const handleNodeCheckboxStatus = (node, selectKeyMaps, indeterminateMaps) => {
940
- const childrenField = computeChildrenField.value;
941
- const childList = _xeUtils.default.get(node, childrenField);
942
- const nodeid = getNodeId(node);
943
- if (childList && childList.length) {
944
- let checkSome = false;
945
- let checkSize = 0;
946
- childList.forEach(childNode => {
947
- const childNodeid = getNodeId(childNode);
948
- const isChecked = selectKeyMaps[childNodeid];
949
- if (isChecked || indeterminateMaps[childNodeid]) {
950
- if (isChecked) {
951
- checkSize++;
952
- }
953
- checkSome = true;
954
- }
955
- });
956
- const checkAll = checkSize === childList.length;
957
- if (checkAll) {
958
- if (!selectKeyMaps[nodeid]) {
959
- selectKeyMaps[nodeid] = true;
960
- }
961
- if (indeterminateMaps[nodeid]) {
962
- delete indeterminateMaps[nodeid];
963
- }
964
- } else {
965
- if (selectKeyMaps[nodeid]) {
966
- delete selectKeyMaps[nodeid];
967
- }
968
- indeterminateMaps[nodeid] = checkSome;
969
- }
970
- } else {
971
- if (indeterminateMaps[nodeid]) {
972
- delete indeterminateMaps[nodeid];
973
- }
974
- }
975
- };
976
1019
  const updateCheckboxStatus = () => {
1020
+ const {
1021
+ transform
1022
+ } = props;
977
1023
  const {
978
1024
  treeList
979
1025
  } = reactData;
1026
+ const {
1027
+ selectCheckboxMaps,
1028
+ indeterminateRowMaps
1029
+ } = internalData;
980
1030
  const childrenField = computeChildrenField.value;
1031
+ const mapChildrenField = computeMapChildrenField.value;
981
1032
  const checkboxOpts = computeCheckboxOpts.value;
982
1033
  const {
983
- checkStrictly
1034
+ checkStrictly,
1035
+ checkMethod
984
1036
  } = checkboxOpts;
985
1037
  if (!checkStrictly) {
986
- const selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps);
987
- const indeterminateMaps = {};
988
- _xeUtils.default.eachTree(treeList, (node, index, items, path, parent, nodes) => {
989
- const childList = _xeUtils.default.get(node, childrenField);
990
- if (!childList || !childList.length) {
991
- handleNodeCheckboxStatus(node, selectKeyMaps, indeterminateMaps);
1038
+ const childRowMaps = {};
1039
+ const childRowList = [];
1040
+ _xeUtils.default.eachTree(treeList, node => {
1041
+ const nodeid = getNodeId(node);
1042
+ const childList = node[childrenField];
1043
+ if (childList && childList.length && !childRowMaps[nodeid]) {
1044
+ childRowMaps[nodeid] = 1;
1045
+ childRowList.unshift([node, nodeid, childList]);
992
1046
  }
993
- if (index === items.length - 1) {
994
- for (let len = nodes.length - 2; len >= 0; len--) {
995
- const parentItem = nodes[len];
996
- handleNodeCheckboxStatus(parentItem, selectKeyMaps, indeterminateMaps);
1047
+ }, {
1048
+ children: transform ? mapChildrenField : childrenField
1049
+ });
1050
+ childRowList.forEach(vals => {
1051
+ const node = vals[0];
1052
+ const nodeid = vals[1];
1053
+ const childList = vals[2];
1054
+ let sLen = 0; // 已选
1055
+ let hLen = 0; // 半选
1056
+ let vLen = 0; // 有效行
1057
+ childList.forEach(checkMethod ? item => {
1058
+ const childNodeid = getNodeId(item);
1059
+ const isSelect = selectCheckboxMaps[childNodeid];
1060
+ if (checkMethod({
1061
+ node: item
1062
+ })) {
1063
+ if (isSelect) {
1064
+ sLen++;
1065
+ } else if (indeterminateRowMaps[childNodeid]) {
1066
+ hLen++;
1067
+ }
1068
+ vLen++;
1069
+ } else {
1070
+ if (isSelect) {
1071
+ sLen++;
1072
+ } else if (indeterminateRowMaps[childNodeid]) {
1073
+ hLen++;
1074
+ }
1075
+ }
1076
+ } : item => {
1077
+ const childNodeid = getNodeId(item);
1078
+ const isSelect = selectCheckboxMaps[childNodeid];
1079
+ if (isSelect) {
1080
+ sLen++;
1081
+ } else if (indeterminateRowMaps[childNodeid]) {
1082
+ hLen++;
1083
+ }
1084
+ vLen++;
1085
+ });
1086
+ const isSelected = sLen >= vLen;
1087
+ const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
1088
+ if (isSelected) {
1089
+ selectCheckboxMaps[nodeid] = node;
1090
+ if (indeterminateRowMaps[nodeid]) {
1091
+ delete indeterminateRowMaps[nodeid];
1092
+ }
1093
+ } else {
1094
+ if (selectCheckboxMaps[nodeid]) {
1095
+ delete selectCheckboxMaps[nodeid];
1096
+ }
1097
+ if (halfSelect) {
1098
+ indeterminateRowMaps[nodeid] = node;
1099
+ } else {
1100
+ if (indeterminateRowMaps[nodeid]) {
1101
+ delete indeterminateRowMaps[nodeid];
1102
+ }
997
1103
  }
998
1104
  }
999
1105
  });
1000
- reactData.selectCheckboxMaps = selectKeyMaps;
1001
- reactData.indeterminateCheckboxMaps = indeterminateMaps;
1106
+ reactData.updateCheckboxFlag++;
1002
1107
  }
1003
1108
  };
1004
1109
  const changeCheckboxEvent = (evnt, node) => {
1005
1110
  evnt.preventDefault();
1006
1111
  evnt.stopPropagation();
1112
+ const {
1113
+ transform
1114
+ } = props;
1115
+ const {
1116
+ selectCheckboxMaps
1117
+ } = internalData;
1118
+ const childrenField = computeChildrenField.value;
1119
+ const mapChildrenField = computeMapChildrenField.value;
1007
1120
  const checkboxOpts = computeCheckboxOpts.value;
1008
1121
  const {
1009
1122
  checkStrictly,
@@ -1018,35 +1131,33 @@ var _default = exports.default = (0, _vue.defineComponent)({
1018
1131
  if (isDisabled) {
1019
1132
  return;
1020
1133
  }
1021
- const selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps);
1022
- const childrenField = computeChildrenField.value;
1023
1134
  const nodeid = getNodeId(node);
1024
1135
  let isChecked = false;
1025
- if (selectKeyMaps[nodeid]) {
1026
- delete selectKeyMaps[nodeid];
1136
+ if (selectCheckboxMaps[nodeid]) {
1137
+ delete selectCheckboxMaps[nodeid];
1027
1138
  } else {
1028
1139
  isChecked = true;
1029
- selectKeyMaps[nodeid] = isChecked;
1140
+ selectCheckboxMaps[nodeid] = node;
1030
1141
  }
1031
1142
  if (!checkStrictly) {
1032
1143
  _xeUtils.default.eachTree(_xeUtils.default.get(node, childrenField), childNode => {
1033
1144
  const childNodeid = getNodeId(childNode);
1034
1145
  if (isChecked) {
1035
- if (!selectKeyMaps[childNodeid]) {
1036
- selectKeyMaps[childNodeid] = true;
1146
+ if (!selectCheckboxMaps[childNodeid]) {
1147
+ selectCheckboxMaps[childNodeid] = true;
1037
1148
  }
1038
1149
  } else {
1039
- if (selectKeyMaps[childNodeid]) {
1040
- delete selectKeyMaps[childNodeid];
1150
+ if (selectCheckboxMaps[childNodeid]) {
1151
+ delete selectCheckboxMaps[childNodeid];
1041
1152
  }
1042
1153
  }
1043
1154
  }, {
1044
- children: childrenField
1155
+ children: transform ? mapChildrenField : childrenField
1045
1156
  });
1046
1157
  }
1047
- reactData.selectCheckboxMaps = selectKeyMaps;
1158
+ reactData.updateCheckboxFlag++;
1048
1159
  updateCheckboxStatus();
1049
- const value = Object.keys(reactData.selectCheckboxMaps);
1160
+ const value = _xeUtils.default.keys(selectCheckboxMaps);
1050
1161
  emitCheckboxMode(value);
1051
1162
  dispatchEvent('checkbox-change', {
1052
1163
  node,
@@ -1204,12 +1315,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
1204
1315
  showIcon
1205
1316
  } = props;
1206
1317
  const {
1207
- nodeMaps,
1208
- treeExpandedMaps,
1209
1318
  currentNode,
1210
1319
  selectRadioKey,
1211
- treeExpandLazyLoadedMaps
1320
+ updateExpandedFlag
1212
1321
  } = reactData;
1322
+ const {
1323
+ nodeMaps,
1324
+ treeExpandedMaps,
1325
+ treeExpandLazyLoadedMaps
1326
+ } = internalData;
1213
1327
  const childrenField = computeChildrenField.value;
1214
1328
  const titleField = computeTitleField.value;
1215
1329
  const hasChildField = computeHasChildField.value;
@@ -1219,7 +1333,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1219
1333
  const titleSlot = slots.title;
1220
1334
  const extraSlot = slots.extra;
1221
1335
  const nodeid = getNodeId(node);
1222
- const isExpand = treeExpandedMaps[nodeid];
1336
+ const isExpand = updateExpandedFlag && treeExpandedMaps[nodeid];
1223
1337
  const nodeItem = nodeMaps[nodeid];
1224
1338
  const nodeValue = _xeUtils.default.get(node, titleField);
1225
1339
  const childVns = [];
@@ -1357,7 +1471,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1357
1471
  dataFlag.value++;
1358
1472
  });
1359
1473
  (0, _vue.watch)(dataFlag, () => {
1360
- updateData(props.data || []);
1474
+ loadTreeData(props.data || []);
1361
1475
  });
1362
1476
  (0, _vue.watch)(() => props.checkNodeKey, val => {
1363
1477
  reactData.selectRadioKey = val;
@@ -1374,11 +1488,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
1374
1488
  });
1375
1489
  (0, _vue.onUnmounted)(() => {
1376
1490
  reactData.treeList = [];
1377
- reactData.treeExpandedMaps = {};
1378
- reactData.nodeMaps = {};
1491
+ internalData.treeExpandedMaps = {};
1492
+ internalData.indeterminateRowMaps = {};
1493
+ internalData.nodeMaps = {};
1379
1494
  });
1380
- updateData(props.data || []);
1381
- updateCheckboxChecked(props.checkNodeKeys || []);
1495
+ loadTreeData(props.data || []);
1382
1496
  $xeTree.renderVN = renderVN;
1383
1497
  return $xeTree;
1384
1498
  },