layui树组件做权限管理角色赋值功能
默认选中
tree.setChecked(‘demo-id-1’, [12, 16,17]); // 勾选对应 id 值的节点
如果12为权限管理,16为角色管理,17为用户管理。那么权限管理下的用户管理,角色管理,菜单管理会全部选中。这不是我们想要的效果。
我们想要的效果应该是这样
这种情况,前台改也可以需要修改源代码。我们换一种思路。如果
tree.setChecked(‘demo-id-1’, [17]);
这样设置就能达到我们想要的效果。这个时候我们分析12,16,17这三个菜单id有什么异同。
分析结果:12,16 都是父级菜单。只有17没有儿子(不是父级菜单)
我们从查询该角色的Sql语句出发,只需要查询该角色下所有的菜单id去除有子元素(不是父元素的)id即可
菜单表如下:
关联表如下:
我们在查询角色对应菜单时Sql如下
select mid from sys_role_menu where rid = #{rid} and mid not in (
select parent_id from sys_menu
)
这样就可以了。