什么是角色?
角色就是用户的身份,通常包含其权限信息。
权限的设置?
权限的设置就是在角色里设置该角色是否具有某一些权限。
一、问题:
- 登录账号的权限与其新建角色的可选权限是否一致?自然是一致的
二、需求:
- 选择角色权限时,可选权限应当为该登录账户下所具有的权限。不具有的权限应不显示。
权限设置的方案?
一、思路:
- 前端应具有一个全部权限的数组moduleList;
- 根据登录账号的不同匹配moduleList,生成新的数组;
- 选择角色采用element-ui的tree组件进行渲染。
二、默认的全部权限数组
数据结构参考el-tree组件的结构,如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42moduleList: [
{id: 'survey', label: '项目概况', disabled: false},
{id: 'realTime', label: '实时数据', disabled: false},
{
id: 'curve',
label: '曲线分析',
disabled: false,
children: [
{id: 'curveHistory', label: '历史曲线', disabled: false},
{id: 'curveConsume', label: '耗量曲线', disabled: false}
]
},
{
id: 'report',
label: '报表分析',
disabled: false,
children: [
{id: 'reportUserPart', label: '用户分报', disabled: false},
{id: 'reportUser', label: '用户报表', disabled: false}
]
},
{id: 'warning', label: '维保管理', disabled: false},
{id: 'push', label: '推送管理', disabled: false},
{
id: 'project',
label: '项目管理',
disabled: false,
children: [
{
id: 'projectPoint',
label: '计量点管理',
disabled: false,
children: [
{id: 'projectPointDevice', label: '设备管理', disabled: false}
{id: 'projectPointPoweroff', label: '停电纪录'}
]
}
{id: 'project_param', label: '参数详情'}
]
},
{id: 'user', label: '用户管理', disabled: false}
],
三、vuex中authority.js过滤设置当前登录用户的moduleList
需要传入用户权限表
1 | import {defaultData} from '@/assets/utils/defaultData' |
四、调用设置modultList的位置
需要在登录获取到用户信息后调用,传入用户权限表
1 | // 获取登录账户信息 |
五、使用
只需要在新增编辑角色的代码里,把state.authority.moduleList设置到el-tree就大功告成了!