@sy-common/organize-select-help 1.0.0-beta.64 → 1.0.0-beta.66

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sy-common/organize-select-help",
3
- "version": "1.0.0-beta.64",
3
+ "version": "1.0.0-beta.66",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
package/src/index.vue CHANGED
@@ -146,7 +146,7 @@
146
146
  :autoExpandParent="true"
147
147
  :isSingleSelect="true"
148
148
  :default-org-unit-id="defaultOrgUnitId"
149
- :is-custom-tree="!!defaultOrgUnitId"
149
+ :is-custom-tree="true"
150
150
  :disable-lazy-load="false"
151
151
  ></organizeTree>
152
152
  </div>
@@ -296,7 +296,7 @@ export default {
296
296
  parentOrgList: [],
297
297
  orgTagList:[],
298
298
  postTagList:[],
299
- selectedPositionId: null, // 新增:岗位单选的选中状态存储
299
+ selectedPositionId: null, // 岗位单选的选中状态存储
300
300
  selectedOrgTagKey: '', // 存储选中标签的唯一标识
301
301
  selectedPostTagKey: '', // 存储选中标签的唯一标识
302
302
  //人员选择
@@ -304,8 +304,8 @@ export default {
304
304
  staffTagList:[],
305
305
  staffOrgList:[],
306
306
  staffSearchList:[],
307
- selectedStaffOrgId: '', // 新增:选中的组织节点ID
308
- proStaffOrgList: [], // 新增:暂存选中的组织节点
307
+ selectedStaffOrgId: '', // 选中的组织节点ID
308
+ proStaffOrgList: [], // 暂存选中的组织节点
309
309
  initialDefaultOrgUnitId: '', // 缓存初始defaultOrgUnitId
310
310
  // staffTreeInited: false, // 组织树初始化完成标记
311
311
  // 树加载完成标记
@@ -1517,7 +1517,7 @@ export default {
1517
1517
  continue;
1518
1518
  }
1519
1519
 
1520
- // 父节点追溯与节点链挂载(修复:使用当前Tab的树数据originalTreeData,而非固定orgTree)
1520
+ // 父节点追溯与节点链挂载(使用当前Tab的树数据originalTreeData,而非固定orgTree)
1521
1521
  let targetParent = null;
1522
1522
  let nodeChain = [currentNode];
1523
1523
  const MAX_DEPTH = 8;
@@ -1542,7 +1542,7 @@ export default {
1542
1542
  }
1543
1543
 
1544
1544
  parentNode.orgNodeName = parentNode.orgNodeName || parentNode.orgUnitName || `未命名组织(${parentId})`;
1545
- // 修复:查询父节点是否在当前Tab的树数据中(originalTreeData),而非固定orgTree
1545
+ // 查询父节点是否在当前Tab的树数据中(originalTreeData),而非固定orgTree
1546
1546
  const parentInTree = this.findNodeInTree(originalTreeData, parentNode.orgUnitId);
1547
1547
 
1548
1548
  if (parentInTree) {
@@ -1629,7 +1629,7 @@ export default {
1629
1629
  treeRef.handleChange(matchedNodes);
1630
1630
  }
1631
1631
 
1632
- // 提示信息(通用逻辑)
1632
+ // 提示信息
1633
1633
  this.$Message.success(`成功选中${matchedNodes.length}个组织节点`);
1634
1634
  });
1635
1635
  } else {
@@ -1647,11 +1647,10 @@ export default {
1647
1647
  });
1648
1648
  },
1649
1649
 
1650
- // 新增:移除树数据中的 parent 引用,避免子组件处理时形成循环
1650
+ // 移除树数据中的 parent 引用,避免子组件处理时形成循环
1651
1651
  removeParentReferences(treeData) {
1652
1652
  if (!Array.isArray(treeData)) return;
1653
1653
  treeData.forEach(node => {
1654
- // 删除可能存在的 parent 引用(如果节点有此属性)
1655
1654
  if (node.parent) delete node.parent;
1656
1655
  // 递归处理子节点
1657
1656
  if (Array.isArray(node.orgChildrenList)) {
@@ -1686,7 +1685,6 @@ export default {
1686
1685
  return null;
1687
1686
  },
1688
1687
 
1689
- // 增强安全深拷贝,主动移除循环引用字段
1690
1688
  safeDeepCopy(obj, hash = new WeakMap()) {
1691
1689
  if (obj === null || typeof obj !== 'object') {
1692
1690
  return obj;
@@ -1715,15 +1713,12 @@ export default {
1715
1713
  hash.set(obj, copy);
1716
1714
  for (let key in obj) {
1717
1715
  if (obj.hasOwnProperty(key)) {
1718
- // 仅过滤vue内部字段,保留业务字段
1719
1716
  if (['__vue__', '__ob__', '$parent', '$children'].includes(key)) {
1720
1717
  continue;
1721
1718
  }
1722
- // 子节点数组特殊处理
1723
1719
  if (['orgChildrenList', 'children'].includes(key) && Array.isArray(obj[key])) {
1724
1720
  copy[key] = obj[key].map(child => this.safeDeepCopy(child, hash));
1725
1721
  } else {
1726
- // 保留所有业务字段,不额外过滤
1727
1722
  copy[key] = this.safeDeepCopy(obj[key], hash);
1728
1723
  }
1729
1724
  }
@@ -1735,9 +1730,9 @@ export default {
1735
1730
  },
1736
1731
 
1737
1732
  /**
1738
- * 查询单个节点的原生详情(适配后端接口,返回原生字段)
1739
- * @param {string} orgUnitId - 节点ID(如11510101)
1740
- * @returns {Promise<Object|null>} 原生节点详情(无数据返回null)
1733
+ * 查询单个节点的原生详情
1734
+ * @param {string} orgUnitId
1735
+ * @returns {Promise<Object|null>}
1741
1736
  */
1742
1737
  getOrgNodeDetail(orgUnitId) {
1743
1738
  return new Promise((resolve) => {
@@ -1745,13 +1740,12 @@ export default {
1745
1740
  params: { orgUnitId: orgUnitId }
1746
1741
  }).then((res) => {
1747
1742
  if (res.data.code === 1 && res.data.data) {
1748
- // 仅保留原生树结构必需字段(过滤业务冗余字段)
1749
1743
  const { orgUnitId, parentOrgUnitId, orgNodeName, orgChildrenList } = res.data.data;
1750
1744
  resolve({
1751
1745
  orgUnitId,
1752
1746
  parentOrgUnitId,
1753
1747
  orgNodeName,
1754
- orgChildrenList: orgChildrenList || [] // 兼容接口返回空的情况
1748
+ orgChildrenList: orgChildrenList || []
1755
1749
  });
1756
1750
  } else {
1757
1751
  resolve(null);
@@ -1764,7 +1758,7 @@ export default {
1764
1758
  },
1765
1759
 
1766
1760
  /**
1767
- * 迭代查找节点(替代递归,避免栈溢出)
1761
+ * 迭代查找节点
1768
1762
  * @param {Array} treeData - 树形数据
1769
1763
  * @param {string} targetOrgUnitId - 目标节点ID
1770
1764
  * @returns {Object|null} 找到的节点
@@ -1777,7 +1771,6 @@ export default {
1777
1771
  const queue = [...treeData];
1778
1772
  while (queue.length > 0) {
1779
1773
  const currentNode = queue.shift();
1780
- // 兼容子组件可能的字段映射(orgUnitId可能存储在id字段)
1781
1774
  const nodeId = currentNode.orgUnitId || currentNode.id || '';
1782
1775
  if (nodeId === targetOrgUnitId) {
1783
1776
  return currentNode;
@@ -201,7 +201,7 @@ export default {
201
201
  },
202
202
 
203
203
  async loadData(item, callback) {
204
- // 核心修改:即使禁用懒加载,也允许加载已有子节点
204
+ // 即使禁用懒加载,也允许加载已有子节点
205
205
  if (this.disableLazyLoad) {
206
206
  let children = item.orgChildrenList || item.children || [];
207
207
  const formattedChildren = this.safeDeepCopy(children).map(child => ({
@@ -305,7 +305,7 @@ export default {
305
305
  return;
306
306
  }
307
307
 
308
- // 单选逻辑强化:清空所有选中状态
308
+ // 单选,清空所有选中状态
309
309
  this.clearAllChecked(this.data);
310
310
 
311
311
  const targetList = this.isSingleSelect
@@ -412,34 +412,27 @@ export default {
412
412
  }
413
413
  return null;
414
414
  },
415
- // organize-tree.vue - 重构 initTree 方法,确保递归处理所有层级
415
+
416
416
  initTree(treeList) {
417
417
  // 递归处理节点的内部方法
418
418
  const recursiveInitNode = (node) => {
419
- // 1. 统一节点标题(优先级:orgUnitName > orgNodeName > name > 兜底)
420
419
  node.title = node.orgUnitName || node.orgNodeName || node.name || `未命名组织(${node.orgUnitId || node.id || ''})`;
421
- // 2. 初始化基础字段
422
420
  node.loading = false;
423
421
  node.expand = false;
424
422
  node.checked = false;
425
- // 3. 关键:无论是否有子节点,先初始化 children 空数组(让 Tree 组件识别可懒加载)
426
423
  node.children = node.children || [];
427
- // 4. 同步 orgChildrenList 和 children(双向绑定,避免字段不一致)
428
424
  node.orgChildrenList = node.orgChildrenList || node.children || [];
429
- // 5. 禁用状态处理
430
425
  if (this.disabled) {
431
426
  node.disabled = true;
432
427
  }
433
- // 6. 叶子节点判断:如果明确标记为 leafNode,删除 loading 和 children(禁止展开)
434
428
  if (node.leafNode) {
435
429
  delete node.loading;
436
430
  delete node.children;
437
431
  delete node.orgChildrenList;
438
432
  } else {
439
- // 7. 非叶子节点:递归处理已有子节点(确保下级节点也完成初始化)
440
433
  if (Array.isArray(node.orgChildrenList) && node.orgChildrenList.length > 0) {
441
434
  node.children = node.orgChildrenList.map(child => recursiveInitNode(child));
442
- node.expand = true; // 默认展开已有子节点的节点
435
+ node.expand = true;
443
436
  }
444
437
  }
445
438
  return node;
@@ -509,18 +502,16 @@ export default {
509
502
  flex: 1,
510
503
  pointerEvents: 'none',
511
504
  userSelect: 'none',
512
- // 新增:防止文字溢出导致的截断(可选,解决orgUnitId显示不全问题)
513
505
  whiteSpace: 'normal',
514
506
  wordWrap: 'break-word'
515
507
  }
516
- }, nodeText) // 使用调整优先级后的节点文字
508
+ }, nodeText)
517
509
  ]);
518
510
  },
519
511
  collectCurrentCheckedNodes(nodeList) {
520
512
  let checkedNodes = [];
521
513
  nodeList.forEach(node => {
522
514
  if (node.checked) {
523
- // 强制补全orgUnitId,过滤无效节点
524
515
  const nodeId = node.orgUnitId || node.id || '';
525
516
  if (nodeId && typeof nodeId === 'string' && nodeId.trim()) {
526
517
  const validNode = {
@@ -551,7 +542,6 @@ export default {
551
542
  watch: {
552
543
  'treeList': {
553
544
  handler(val) {
554
- // 自定义树场景:直接使用父组件传递的树数据,不初始化旧接口
555
545
  if (this.isCustomTree || this.isDisableLazyLoad) {
556
546
  let tree = this.safeDeepCopy(val);
557
547
  this.initTree(tree);