控件树动态获取数据

控件树动态获取数据

<el-tree
     ref="treeListData"
     :data="rightsList"
     node-key="id" 
     :props="treeProps"
     :default-checked-keys="checkArr"
     default-expand
     show-checkbox
     @check-change="propsSele">
</el-tree>
data() {
    return {
      rightsList: [], //权限列表的树形结构
      checkArr: [], //要保存的id
      treeProps: {
        children: "children",
        label: "priorityName",
      },
    roleId:[] } }, created() {
this.getMenuTree(); // 初始化 }, methods:{ // 控件树 async getMenuTree() { try { const data = await getPageTree(); // 接口函数名 console.log(data.data); this.rightsList = JSON.parse(JSON.stringify(data.data)); // 获取当前角色拥有的权限列表 this.checkArr = getTreeIds(row); // 引入的js文件 this.roleId = row.id; } catch (errror) {} },
  // 选择子级 拿到改子级的所有父id
   propsSele(val) {
        let arr = this.$refs.treeListData.getCheckedNodes(); //获取选中的内容
        let arr1 = this.$refs.treeListData.getHalfCheckedKeys(); // 选中的父级
        let array = arr.map((item) => item.id);
        arr1.forEach((item) => {
          let index = array.findIndex((ele) => ele === item); // 去重
          if (index === -1) {
            array.push(item);
          }
        });
        this.menuIds = array; // 传参给后台id
        // console.log(array);
    },

}
// js文件
//封装一个提取树形结构的数据id的方法
export function getTreeIds(tree) {
    //存放id的数组
    let resultArr = [];
    //存放当前要处理的权限数组
    let tempArr = [];
  
    tempArr = tempArr.concat(JSON.parse(JSON.stringify(tree)));
    console.log("tempArr:", tempArr);
  
    while (tempArr.length) {
      let node = tempArr.shift();
      if (node.children) {
        tempArr = tempArr.concat(node.children);
        delete node["children"];
      } else {
        resultArr.push(node.id);
      }
    }
  
    return resultArr;
  }

 

posted @ 2021-03-17 17:42  挽你手  阅读(306)  评论(0编辑  收藏  举报