element Tree 树形控件

摘要:
==200){returnthis.$message.error('获取权限数据失败!node.children){returnarr.push}node.children.forEach},}第次关闭时,清空已选中的数组,不然会叠加到下次打开的显示//权限对话框关闭事件setRightDialogClosed(){this.rightsList=[]},获取选中的节点id以逗号分隔发送给后台方法里getCheckedKeys则返回目前被选中的节点的keygetHalfCheckedNodes则返回目前半选中的节点的key点击确定时调用下面的函数确定//分配权限asyncallotRights{//获得当前选中和半选中的Idconstkeys=[...this.$refs.treeRef.getCheckedKeys(),...this.$refs.treeRef.getHalfCheckedKeys()]//join()方法用于把数组中的所有元素放入一个字符串constidStr=keys.join(',')const{data:res}=awaitthis.$http.postif(res.meta.status!
文档地址

https://element.eleme.cn/#/zh-CN/component/tree

代码地址

https://gitee.com/wBekvam/vue-shop-admin/blob/master/src/components/power/Roles.vue

后台返参
 {
    data: [
      {
        id: 101,
        authName: '商品管理',
        path: null,
        pid: 0,
        children: [
          {
            id: 104,
            authName: '商品列表',
            path: null,
            pid: 101,
            children: [
              {
                id: 105,
                authName: '添加商品',
                path: null,
                pid: '104,101'
              }
            ]
          }
        ]
      }
    ],
    meta: {
      msg: '获取权限列表成功',
      status: 200
    }
  }
html代码

加载数据

element Tree 树形控件第1张

常用属性

show-checkbox 显示复选框
node-key 指选中的值为id值
default-expand-all 是否默认展开所有节点
:default-checked-keys="defKeys" 默认选中节点ID值

      <el-tree
        :data="rightsList"
        :props="treeProps"
        ref="treeRef"
        show-checkbox
        node-key="id"
        default-expand-all
        :default-checked-keys="defKeys"
      ></el-tree>



  data () {
    return {
      // 所有角色列表
      rolesList: [],
      // 分配权限框
      setRightDialogVisible: false,
      // 权限列表
      rightsList: [105,106],
      //  树形控件的属性绑定对象
      treeProps: {
        label: 'authName',
        children: 'children'
      },
      //   默认选中节点ID值
      defKeys: [],
     
      //   当前即将分配权限的Id
      roleId: 0
    }
  },


element Tree 树形控件第2张
element Tree 树形控件第3张

显示当前角色拥有的所有权限

效果:
element Tree 树形控件第4张

 methods: {
    // 分配权限
    async showSetRightDialog (role) {
      this.roleId = role.id
      // 获取角色的所有权限
      const { data: res } = await this.$http.get('rights/tree')
      if (res.meta.status !== 200) {
        return this.$message.error('获取权限数据失败!')
      }
      //   获取权限树
      this.rightsList = res.data
      //   console.log(res)
      //   递归获取三级节点的id
      this.getLeafkeys(role, this.defKeys)

      this.setRightDialogVisible = true
    },
    // 通过递归 获取角色下三级权限的 id, 并保存到defKeys数组
    getLeafkeys (node, arr) {
      // 没有children属性,则是三级节点
      if (!node.children) {
        return arr.push(node.id)
      }
      node.children.forEach(item => this.getLeafkeys(item, arr))
    },
}

element Tree 树形控件第5张

第次关闭时,清空已选中的数组,不然会叠加到下次打开的显示

    // 权限对话框关闭事件
    setRightDialogClosed () {
      this.rightsList = []
    },

element Tree 树形控件第6张

获取选中的节点id以逗号分隔发送给后台

方法里
getCheckedKeys 则返回目前被选中的节点的 key
getHalfCheckedNodes 则返回目前半选中的节点的 key

点击确定时调用下面的函数

<el-button type="primary" @click="allotRights">确 定</el-button>

    // 分配权限
    async allotRights (roleId) {
      // 获得当前选中和半选中的Id
      const keys = [
        ...this.$refs.treeRef.getCheckedKeys(),
        ...this.$refs.treeRef.getHalfCheckedKeys()
      ]
      // join() 方法用于把数组中的所有元素放入一个字符串
      const idStr = keys.join(',')
      const { data: res } = await this.$http.post(`roles/${this.roleId}/rights`, { rids: idStr })
      if (res.meta.status !== 200) { return this.$message.error('分配权限失败!') }
      this.$message.success('分配权限成功!')
      this.getRolesList()
      this.setRightDialogVisible = false
    }

免责声明:文章转载自《element Tree 树形控件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Zynq UltraScale+ MPSoC解密学习7】Zynq UltraScale+的PMUjQuery插件获取URL参数(jQuery.query)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Dubbo分布式日志追踪

尝试{returninvoker.invoke(invoke);}最后{MDC.remove(“traceId”);}}/**获取UUID*@returnStringUUID*/publicStringgetUUID(){Stringuuid=UUID.randomUUID(().toString();...

HTTP请求报文

不仅报表样式可以传递请求参数,请求url也可以以类似于键值对的方式传递数据...

windows 常用命令行操作

目录操作˃pwd打印当前工作目录,通过此关键词可以查看当前所处的路径˃cd更改目录,用于多个目录之间的切换具体输入:cd目录名cd目录名/子目录名(可通过此方式到达最底层的目录)cd~(返回home目录)cd..(返回上一级目录)cd../..(返回上两级目录)cd盘符名:(不同盘符间跳转,cd后面跟上路径则可实现精准跳转)˃mkdir创建目录具体输入:mk...

android动态申请权限

申请权限对于安卓开发很重要,从Android6.0开始,Android系统提供动态申请权限的机制,APP在使用危险权限时,需要用户的授权才可进一步操作。...

【Lua】使用随机数(转)

游戏中有一个用于创建角色的随机命名功能,它使用随机数。我在网上找到一篇关于在Lua使用随机数的文章。标记它。Lua需要两个函数来生成随机数:数学。randomseed,数学。数学随机种子接收整数n作为随机序列种子。将系统时间视为随机种子是很自然的,也就是说,数学随机——然后连续生成i=1,5do打印结束的随机数,但问题出现了。如果程序在短时间内运行几次,您得...

Ubuntu 18.04 安装微信(附企业微信)

Ubuntu软件市场也是有的,所以安全性不用担心开源地址:https://github.com/geeeeeeeeek/electronic-wechat下面介绍几种安装的方式:1.直接解压运行先选择你系统版本:解压一下:tar-zxvfxxx.tar.gz算了,还是简单为新手分析一下==》tar命令可以解包.tar和.tar.gz。为啥我的没有微信图标?...