Skip to content

Commit db0ee01

Browse files
committed
显示按钮权限树
1 parent 4fc579c commit db0ee01

File tree

2 files changed

+55
-7
lines changed

2 files changed

+55
-7
lines changed

browser2/src/views/_system/perm/meta.vue

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131
</el-col>
3232

3333

34-
<!--左侧菜单按钮权限树-->
34+
<!--按钮权限树-->
3535
<el-col :span="8">
3636
<el-card class="box-card">
3737
<div slot="header">
3838
<div class="title-box">
39-
<span>菜单、按钮权限元数据</span>
39+
<span>按钮权限元数据</span>
4040
<el-tooltip content="添加顶级菜单" placement="top">
4141
<el-button style="font-size: 25px;" type="text" @click="handleAddTopNode(permType.MENU)"
4242
icon="el-icon-circle-plus-outline" circle></el-button>
@@ -47,10 +47,10 @@
4747
<el-input class="mgb-15" placeholder="输入关键字进行过滤" v-model="filterMenuButtonText">
4848
</el-input>
4949
<el-tree draggable ref="menuButtonTreeRef" :filter-node-method="filterNode" @node-drop="handleMenuButtonDrop"
50-
:data="menuButtonTree" :props="treeProps" node-key="pid" default-expand-all>
50+
:data="buttonPermissionTree" :props="treeProps" node-key="pid" default-expand-all>
5151
<span class="custom-tree-node" slot-scope="{ node, data }">
5252
<span>
53-
<span class="mgl-10">{{ node.label }}</span>
53+
<span class="mgl-10">{{ data.pname }}</span>
5454
<el-tag v-if="data.ptype==1" type="success" size="mini">菜单</el-tag>
5555
<el-tag v-else-if="data.ptype==2" type="warning" size="mini"><i class="el-icon-rank"></i>按钮</el-tag>
5656
<i class="el-icon-rank mgl-10"></i>
@@ -190,8 +190,12 @@
190190
menuPermValSet: new Set(),
191191
buttonPermList: [],
192192
apiPermList: [],
193+
btnPermMap:{},//按parent字段分组的map
194+
195+
menuPermissionTree: [],//菜单权限树
196+
buttonPermissionTree: [],//菜单权限树
197+
193198
194-
menuPermissionTree: [],
195199
permType,
196200
filterMenuButtonText: '',
197201
filterApiText: '',
@@ -264,13 +268,17 @@
264268
//获取后台权限数据
265269
initData() {
266270
listAllPermissions().then(res => {
271+
this.btnPermMap = res.data.btnPermMap
267272
this.menuPermList = res.data.permMap[permType.MENU]
268273
this.buttonPermList = res.data.permMap[permType.BUTTON]
269274
this.apiPermList = res.data.permMap[permType.API]
270275
this.menuPermValSet = new Set(this.menuPermList.map(p=>p.pval))
271-
console.log(this.menuPermValSet)
276+
277+
272278
//显示菜单权限树
273279
this.generateMenuPermissionTree()
280+
//显示按钮权限树
281+
this.generateButtonPermissionTree()
274282
})
275283
},
276284
@@ -473,6 +481,44 @@
473481
this.handleNodeDrop(permType.API, draggingNode, dropNode, dropType, event)
474482
},
475483
484+
/**
485+
* 根据菜单树,生成按钮权限树
486+
*/
487+
generateButtonPermissionTree() {
488+
console.log("this.btnPermMap: %o",JSON.stringify(this.btnPermMap))
489+
console.log("==this.menuPermissionTree: "+JSON.stringify(this.menuPermissionTree))
490+
this.buttonPermissionTree = this.mapToButtonPermissionTree(this.menuPermissionTree)
491+
console.log("this.buttonPermissionTree: %o",JSON.stringify(this.buttonPermissionTree))
492+
},
493+
494+
/**
495+
* 根据菜单树,生成按钮权限树
496+
* @param menuPermissionTree 菜单树
497+
*/
498+
mapToButtonPermissionTree(menuPermissionTree) {
499+
return menuPermissionTree.map(perm => {
500+
501+
if(perm){
502+
if(!perm.children){
503+
perm.children = []
504+
}
505+
if(perm.ptype==permType.MENU){
506+
let btnPerms = this.btnPermMap[perm.pval]
507+
if(btnPerms){
508+
btnPerms.forEach(p=>{
509+
perm.children.push(p)
510+
})
511+
}
512+
}
513+
if(perm.children&&perm.children.length>0){
514+
this.mapToButtonPermissionTree(perm.children)
515+
}
516+
}
517+
return perm;
518+
519+
})
520+
},
521+
476522
477523
/**
478524
* 根据前端定义的路由表,生成菜单权限列表

server/src/main/java/com/abc/controller/SysPermController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ public Json listMenuButtonPermission(){
4646
params.in("ptype", new Integer[]{PermType.MENU,PermType.BUTTON,PermType.API});
4747
List<SysPerm> list = permService.selectList(params);
4848
Map<Integer, List<SysPerm>> permMap = list.stream().collect(Collectors.groupingBy(SysPerm::getPtype));
49-
return Json.succ(oper,"permMap",permMap);
49+
List<SysPerm> buttonPermList = permMap.get(PermType.BUTTON);
50+
Map<String, List<SysPerm>> buttonsGroupedByParent = buttonPermList.stream().collect(Collectors.groupingBy(SysPerm::getParent));
51+
return Json.succ(oper,"permMap",permMap).data("btnPermMap",buttonsGroupedByParent);
5052
}
5153

5254
/**

0 commit comments

Comments
 (0)