石广澎
2023-11-29 20913c80c3f5fc8e533cb92b90e6f20bcd68e032
admin-web/src/views/foundation/store/edit.vue
@@ -41,6 +41,7 @@
import winSm from '@/components/win/win-sm';
import myButton from '@/components/myButton/myButton';
import * as finsystenant from '@/api/baseSetting/finsystenant';
import {findParentIds} from '@/utils/index';
export default {
  components: { winSm, myButton },
@@ -92,7 +93,7 @@
      finsystenant.getTree().then((res) => {
        if (res) {
          this.treeList = res;
          this.$set(this.formData,'agencyIds',this.findParentIds(this.treeList,this.formData.agencyId))
          this.$set(this.formData,'agencyIds',findParentIds(this.treeList,this.formData.agencyId))
        }
      });
    },
@@ -134,41 +135,6 @@
          this.$message.error('校验未通过,请检查。');
        }
      });
    },
    // 通过子集id查到所以相关父级id并返回数组
    findParentIds(dataSource, nodeId) {
      const parentIds = [nodeId]; // 用于存储所有父节点ID的数组
      // 定义一个递归函数,用于遍历整棵树并查找子节点的所有父节点
      function traverse(node, nodeId) {
        if (node.id === nodeId) {
          // 如果当前节点的ID等于子节点的ID,则表示已经找到了子节点,可以开始向上查找父节点
          return true; // 返回true表示已经找到了子节点
        }
        if (node.children) {
          // 如果当前节点有子节点,则继续遍历子节点
          for (const childNode of node.children) {
            if (traverse(childNode, nodeId)) {
              // 如果在子节点中找到了子节点的父节点,则将当前节点的ID添加到父节点ID数组中,并返回true表示已经找到了子节点
              parentIds.unshift(node.id);
              return true;
            }
          }
        }
        return false; // 如果当前节点不是子节点的父节点,则返回false
      }
      // 从根节点开始遍历整棵树,并调用递归函数查找子节点的所有父节点
      for (const node of dataSource) {
        if (traverse(node, nodeId)) {
          // 如果在当前节点的子树中找到了子节点的父节点,则直接退出循环
          break;
        }
      }
      return parentIds; // 返回所有父节点ID的数组
    },
  },
};