编辑时过滤当前节点及根据限制的层数过滤数据

判断当前树节点深度

 getTreeDeep(treeData) {
    
    
     let arr = [];
     arr.push(treeData);
     let depth = 0;
     while (arr.length > 0) {
    
    
         let temp = [];
         for (let i = 0; i < arr.length; i++) {
    
    
             temp.push(arr[i]);
         }
         arr = [];
         for (let i = 0; i < temp.length; i++) {
    
    
             if (temp[i].children && temp[i].children.length > 0) {
    
    
                 for (let j = 0; j < temp[i].children.length; j++) {
    
    
                     arr.push(temp[i].children[j]);
                 }
             }
         }
         if (arr.length >= 0) {
    
    
             depth++;
         }
     }
     return depth;
 },

过滤当前节点

filterCurNode(data,id){
    
    
    let result ;
    if(id) result = data.filter(item => item.id !== id);
    else result = data;
    return result;
},

标题

let level = 5;//树限制的层级数
setTreeNode(data, currentLevel, limitLevel, id) {
    
    
    const vm = this;
     currentLevel = currentLevel + 1;
     return vm.filterCurNode(data,id).map(item => {
    
    
         item.children = item.children && item.children.length && currentLevel < level -limitLevel ? vm.setTreeNode(item.children, currentLevel, limitLevel,id) : [];
         return item
     });
 },

用法

this.setTreeNode(this.treeInfo, 0 , this.getTreeDeep(info),info.id)

其中 this.treeInfo 整棵树的数据;info 为当前选中树节点数据

猜你喜欢

转载自blog.csdn.net/baidu_39009276/article/details/123544588