element-ui的树型结构图,半选状态数据给后台后,返回数据带有半选父节点的剔除展示

// html
<h2 class="text-gray">功能权限</h2><el-tree    :data="permissionList"    :props="defaultProps"    show-checkbox    node-key="permissionId"    default-expand-all    ref="tree_permissions"    @check="change_permission"    v-if="current_roleId"></el-tree>

//js 只展示返回数据到渲染的半选数据的父节点的剔除

async find_function_permission_by_roleId(){
            this.isLoading = true;
            try {
                const res = await this.$http.get("scPermission/findScPermissionByRoleId/" + this.current_roleId);
                this.selectedPermissionsIds = res.data.data;
                // 将只有部分选择子节点的父节点剔除
                let arr =[];
                let arrLength = 0;
                arr = this.selectedPermissionsIds;
                arrLength = arr.length;
                let array:any = [];
                function fun(value:any,data:any,arr:any) {
                    for( let i = 0;i < data.length;i++){
                        let mod = data[i];
                        if(mod.permissionId == value) {
                            if(mod.children.length == 0){
                                arr.push(mod.permissionId);
                                return true
                            }
                            return true
                        }else {
                            if(mod.children.length != 0) {
                                fun(value, mod.children, arr);
                            }
                        }
                    }
                    return true
                }
                for(let n = 0;n < arrLength;n++) {
                    fun(arr[n],this.permissionList,array);
                }
                this.selectedPermissionsIds = array;
                let tree_permissions = this.$refs.tree_permissions as Tree;
                tree_permissions.setCheckedKeys(this.selectedPermissionsIds);
                // 数据加载完之后,修改成行内样式
                setTimeout(()=>{
                    this.$nextTick(()=>{
                        this.treeChildInline();
                    });
                },50);
            } catch (e) {
                this.$httpErrorHandle(this, e);
            }finally {
                this.isLoading = false;
            }
        },

  

原文地址:https://www.cnblogs.com/holy-amy/p/10868915.html

时间: 2024-10-12 16:50:09

element-ui的树型结构图,半选状态数据给后台后,返回数据带有半选父节点的剔除展示的相关文章

element-ui的树型结构图,带有复选框的,没有子项的,横排展示

// 修改树形图样式,如果不含有下箭头的块,要变成行内样式 treeChildInline(){ let hasCaretRight = $("#permission_panel").find(".is-leaf"); $.each(hasCaretRight,(index:number,item:any)=>{ let hasChildNodeList= item.closest('.el-tree-node'); item.closest('.el-tre

二叉苹果树(树型DP+背包)

二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号来描述一根树枝的位置.下面是一颗有4个树枝的树: 2   5 \  / 3  4 \  / 1 现在这颗树枝条太多了,需要剪枝.但是一些树枝上长有苹果. 给定需要保留的树枝数量,求出最多能留住多少苹果. 程序名:apple 输入格式: 第1行2个数,N和Q(1<=Q<= N,1<N<=

element ui改写实现两棵树

使用element ui组件库实现一个table的两棵树的效果 效果如下,左边树自动展开一级,右边树默认显示楼层,然后可以一个个展开 代码如下 <el-table :data="relativeData" :fit="isFit" height="700px" :row-style="showTr" :row-class-name="tableRowClassName" :header-row-cla

树型控件单选和多选共存

怕忘了,做个记录 <!DOCTYPE html><HTML><HEAD> <TITLE> </TITLE> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../css/demo.css" ty

php通用的树型类创建无限级树型菜单

生成树型结构所需要的2维数组,var $arr = array()数组格式如下: array( 1 => array('id'=>'1','parentID'=>0,'name'=>'一级栏目一'), 2 => array('id'=>'2','parentID'=>0,'name'=>'一级栏目二'), 3 => array('id'=>'3','parentID'=>1,'name'=>'二级栏目一'), 4 => arra

通用的树型类,可以生成任何树型结构

<?php namespace Vendor\Tree; /** * 通用的树型类,可以生成任何树型结构 */ class Tree { /** * 生成树型结构所需要的2维数组 * @var array */ public $arr = array(); /** * 生成树型结构所需修饰符号,可以换成图片 * @var array */ public $icon = array('│', '├', '└'); public $nbsp = " "; private $str =

[HAOI2010][BZOJ2427] 软件安装|tarjan|树型dp

2427: [HAOI2010]软件安装 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 463  Solved: 194[Submit][Status][Discuss] Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). 但是现在有个问题:软件之间存在依赖关系,即软件i只有在安装了软件j(

如何创建环型、树型双层布局

TWaver的Demo中有常用的环型布局和树型布局,但是当网元数量较多,又不想zoomOverView,聪明的我们自然会想到使用双层布局,整体效果既不会显得很拥挤,也能刚好充满整个窗口,如下图的效果:实现这样布局效果实现的步骤:1.将link个数最多的Node作为圆点或顶点.2.分别计算所有点的位置.查找圆点或顶点的核心代码如下: var sizes = []; this.box.forEach(function (element) { if (element instanceof twaver

树型动态规划练习总结

类型一.多叉树转二叉树进行资源分配 例如: * 例1. 选课:每门课可能有一门先选课,即某些课必须在另外的某节课被选之后才能选,每门课能得的学分不同,求最大学分. * 例2. 通向自由的钥匙:可以从一个房间通向另外多个房间,通过每个房间所需的花费不同,得到的价值也不同,用最小花费获得最大价值. 这种题目的特点是需要在多叉树上进行资源的分配,对不同的子树分配不同的资源,以求最大价值.可以直接在多叉树上用背包的方式求解,但是更常用的方法是用左孩子右兄弟表示法转化为二叉树. 转化之后的通用状态转移方程