element-ui el-tree实现权限配置

在这里插入图片描述
element文档
核心代码块

      <el-dialog :visible.sync="visible" title="菜单授权" @close="checkedKeys = []" append-to-body>
            <el-tree 
                     ref="tree"
                     :data="menuList"
                     show-checkbox
                     default-expand-all
                     check-on-click-node
                     node-key="id"
                     :default-checked-keys="checkedKeys"
                     @check="check"
                     :props="defaultProps">
            </el-tree>
            <span slot="footer" class="dialog-footer">
                <el-button size="small" @click="visible = false">取 消</el-button>
                <el-button size="small" type="primary" @click="saveRoleMenu">确 定</el-button>
              </span>
        </el-dialog>
  data() {
   
            return {
   
                visible: false,
                menuList: [],
                defaultProps: {
   
                    children: 'children',
                    label: 'name'
                },
                checkedKeys: [], // 已配置的菜单
                checkedMenuIds: [],
                roleId: "",
                boolChecked: false, // 用于判断是否点过菜单选项,确认是否调用过check方法
            }
        },

第一步 获取树形结构menuList,根据自己字段配置defaultProps, node-key
第二步 配置默认选中,即checkedKeys,
问题:若选中项有(系统管理,角色管理,菜单管理)这个数组,父节点选中,则子节点会全部选中,就会出现用户管理也被选中了(意思就是在设置默认选中的时候只设置叶子节点)
解决:后端封装数据,若父节点有子节点,把子节点挂在父节点上。返回的List不是树形结构,但是List里每个节点都是树形结构。前端只需要把List里的每个元素的叶子节点放进checkedKeys就好了。 我之前已经写好了方法,直接调用就好,主要是方便,可根据自己需要调整。( 代码里需要的类和方法放在了最后)

 // 这里返回的不是树形结果,只是把父节点的子节点set进去 原因 element-ui el-tree 在setCheckedKeys会把所有子节点都选中
    @Override
    public List<MenuVo> getRoleMenuList(Long roleId) {
   
        List<MenuVo> menuList = menuMapper.getRoleMenuList(roleId);
        if (menuList == null || menuList.size() == 0) {
   
            return null;
        }
        // 构建children
        List<MenuVo> menuVoList = new ArrayList<>();
        // 先找到所有的一级菜单
        for (MenuVo menu : menuList) {
   
            
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值