hy-virtual-tree 1.1.50 → 1.1.52

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  ## Changelog
2
2
 
3
+ ### 1.1.52
4
+
5
+ _2025-12-18_
6
+
7
+ - 扩展[VirtualTree] 功能
8
+ (1)优化树父节点的选中逻辑
9
+
10
+ ### 1.1.51
11
+
12
+ _2025-12-12_
13
+
14
+ - 扩展[VirtualTree] 功能
15
+ (1)修复通道树在过滤时统计在线设备错误问题
16
+
3
17
  ### 1.1.50
4
18
 
5
19
  _2025-12-09_
package/dist/index.js CHANGED
@@ -1503,6 +1503,51 @@ function useCheck(props, tree) {
1503
1503
  updateCheckedKeys();
1504
1504
  }
1505
1505
  }
1506
+ // 获取切换选中后的值
1507
+ function getSwitchCheckedValue(node) {
1508
+ if (!isIndeterminate(node) || props.rowSelection.checkStrictly || !node.children?.length)
1509
+ return !isChecked(node);
1510
+ const { isAllSelect } = getNodeCheckInfo(node.children || []);
1511
+ console.log('isAllSelect', isAllSelect);
1512
+ return !isAllSelect;
1513
+ }
1514
+ // 获取当前项选中信息
1515
+ function getNodeCheckInfo(children) {
1516
+ const { checkStrictly } = props.rowSelection;
1517
+ let isAllDisabled = true;
1518
+ let isCanAllSelect = true;
1519
+ let isAllSelect = true;
1520
+ for (const node of children) {
1521
+ if (isChecked(node))
1522
+ continue;
1523
+ // 严格模式 或 非严格模式下没有子元素
1524
+ if (checkStrictly || (!checkStrictly && !node.children?.length)) {
1525
+ if (getDisabled(props, node)) {
1526
+ isCanAllSelect = false;
1527
+ }
1528
+ else if (!isChecked(node)) {
1529
+ isAllSelect = false;
1530
+ isAllDisabled = false;
1531
+ }
1532
+ if (!isAllDisabled && !isCanAllSelect && !isAllSelect) {
1533
+ break;
1534
+ }
1535
+ }
1536
+ // 递归子元素
1537
+ if (node.children?.length) {
1538
+ const checkInfo = getNodeCheckInfo(node.children);
1539
+ if (!checkStrictly) {
1540
+ isAllDisabled = checkInfo.isAllDisabled && isAllDisabled;
1541
+ isCanAllSelect = checkInfo.isCanAllSelect && isCanAllSelect;
1542
+ isAllSelect = checkInfo.isAllSelect && isAllSelect;
1543
+ }
1544
+ }
1545
+ if (!isAllDisabled && !isCanAllSelect && !isAllSelect) {
1546
+ break;
1547
+ }
1548
+ }
1549
+ return { isAllDisabled, isCanAllSelect, isAllSelect };
1550
+ }
1506
1551
  return {
1507
1552
  checkedKeys,
1508
1553
  updateCheckedKeys,
@@ -1518,7 +1563,8 @@ function useCheck(props, tree) {
1518
1563
  getHalfCheckedNodes,
1519
1564
  setChecked,
1520
1565
  setCheckedKeys,
1521
- setCheckedNodes
1566
+ setCheckedNodes,
1567
+ getSwitchCheckedValue,
1522
1568
  };
1523
1569
  }
1524
1570
 
@@ -1650,9 +1696,14 @@ function useFilter(config, filterMethod, tree = {
1650
1696
  count += childCount;
1651
1697
  total += childTotal;
1652
1698
  }
1653
- else if (!hiddenKeys.has(node.key)) {
1654
- count++;
1655
- total++;
1699
+ // 拥有道通的设备
1700
+ else if (!hiddenKeys.has(node.key) && node.data.dataType === 3 && !node.isLeaf) {
1701
+ if (isCountFiler && countFilter) {
1702
+ count += countFilter(node.data) ? 1 : 0;
1703
+ }
1704
+ if (isTotalFiler && totalFilter) {
1705
+ total += totalFilter(node.data) ? 1 : 0;
1706
+ }
1656
1707
  }
1657
1708
  }
1658
1709
  else if (!hiddenKeys.has(node.key)) {
@@ -1814,7 +1865,7 @@ const useStatus = (config, data, node) => {
1814
1865
  }
1815
1866
  };
1816
1867
  function checkDeviceTypeFn(config, data) {
1817
- // [设备类型]{1:执法记录仪;2:对讲机;3:消防调度台;4:消防值班台;5:PhoneAPP;6:布控球;7:IPC摄像头;8:头盔;9:手电筒;10:工牌;11:无人机;12:车载云台;13:向下级联设备;14:JT808设备;15:国标记录仪;16:RTOS设备;17:手表;18:sip}
1868
+ // [设备类型]{1:执法记录仪;2:对讲机;3:消防调度台;4:消防值班台;5:PhoneAPP;6:布控球;7:IPC摄像头;8:头盔;9:手电筒;10:工牌;11:无人机;12:车载云台;13:向下级联设备;14:JT808设备;15:国标记录仪;16:RTOS设备;17:手表;18:sip;19:RTC报警器;20:FLV设备}
1818
1869
  const deviceTypeMap = {
1819
1870
  1: 'lawEnforcement',
1820
1871
  2: 'walkieTalkie',
@@ -9086,7 +9137,7 @@ class VirtualTree {
9086
9137
  getCheckedKeys, getCheckedNodes,
9087
9138
  // getHalfCheckedKeys,
9088
9139
  // getHalfCheckedNodes,
9089
- setChecked, setCheckedKeys, setCheckedNodes } = useCheck(config, this._tree);
9140
+ setChecked, setCheckedKeys, setCheckedNodes, getSwitchCheckedValue, } = useCheck(config, this._tree);
9090
9141
  this._updateCheckedKeys = updateCheckedKeys;
9091
9142
  this.getChecked = getChecked;
9092
9143
  this.getCheckedKeys = getCheckedKeys;
@@ -9225,11 +9276,7 @@ class VirtualTree {
9225
9276
  onClick: () => {
9226
9277
  if (getDisabled(config, item))
9227
9278
  return;
9228
- item.checkedMark = item.children?.length ? !(isChecked(item) || item.checkedMark) : !isChecked(item);
9229
- toggleCheckbox(item, item.checkedMark, true, true, false, this._hiddenNodeKeySet);
9230
- if (isChecked(item) || isIndeterminate(item)) {
9231
- item.checkedMark = true;
9232
- }
9279
+ toggleCheckbox(item, getSwitchCheckedValue(item), true, true, false, this._hiddenNodeKeySet);
9233
9280
  this.refresh();
9234
9281
  }
9235
9282
  }).mount(el);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hy-virtual-tree",
3
- "version": "1.1.50",
3
+ "version": "1.1.52",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",