菜单管理页主要包括菜单信息展示和菜单、目录、权限/按钮的增删改查操作,页面如下:
菜单分类
菜单目前分为3类
- 目录(即文件夹,可以包含目录和菜单,不能跳转路径,目录可逐级向下建立,但目前首页菜单显示只支持显示到2级子目录,建议目录层数不超过2层
- 菜单(具有跳转作用,不能建立子菜单和目录)
如系统管理为目录,下级的菜单管理等均为菜单 - 权限/按钮(页面上展示的按钮,可通过增加权限对具有不同权限的用户针对性展示)
如这里的新增按钮
目录操作
新增
点击【新增】→【目录】
3的位置选择上层目录所处位置,目录必须选定图标
修改
删除
选中目录,点击【删除】
点击【确认】,删除成功后看到如下提示:
菜单操作
新增
点击【新增】→【目录】
3的位置选择上层目录所处位置,目录不是必须选定图标。菜单的接口为controller中跳转页面的接口,如views/sys/menu/
@Controller
@RequestMapping("/views/sys/menu")
public class SysMenuViewsController {
@ApiOperation(value = "跳转至菜单页")
@GetMapping({"/list", "/"})
public String goToMenu() {
return "sys/menu";
}
}
修改
删除
选中目录,点击【删除】
点击【确认】,删除成功后看到如下提示:
权限配置
系统支持通过配置菜单权限,针对不同角色,决定是否可以调用后台的接口
1.第一步,在需要授权的接口上增加授权,如这里更新主题的后台接口配置权限(@RequiresPermissions注解,后面配置需要的授权标识)
@PostMapping("/layout/left-right/update")
@RequiresPermissions("theme:update")
@ApiOperation(value="保存左右布局",notes = "将新左右布局保存,并生成新的布局css和elementUIcss")
public JsonResult<Void> saveLeftRightLayout(@RequestBody LayoutLeftRightForm layout) throws Exception {
if(layout==null){
layout.setAdminHeaderBgColor("#3385ff");
layout.setAdminHeaderHoverBgColor("#2286e2");
layout.setAdminHeaderFontColor("#fff");
layout.setAdminLeftBgColor("#262626");
layout.setAdminLeftHoverBgColor("#151515");
layout.setAdminLeftFontColor("#fff");
layout.setAdminLeftSelectFontColor("#1890ff");
layout.setContentColor("#1890ff");
}
2.第二步,配置菜单的授权标识,【新增】或【修改菜单时】配置
3.第三步,点击【角色管理】,对角色授予对应的权限
这样,登录对应角色的账号可以正常调用接口,如果没有增增加授权标识,会出现如下提示:
按钮/权限操作
按钮/权限操作主要为赋予权限,针对不同角色的用户起到鉴别是否显示和授权的作用
1.第一步,用户需要在页面上建立这个按钮,并使用isAuth(permission)方法,permission为授权标识,如菜单页面修改菜单的标识
<el-button v-if="isAuth('sys:menu:update')"
type="text" @click="addOrUpdateHandle(scope.row.menuId)"
icon="el-icon-edit">修改
</el-button>
2.第二步,新增菜单,并增加授权标识,注意:按钮的上级菜单为按钮所在页面菜单【新增】→【按钮】
3.第三步,点击【角色管理】,对角色授予对应的权限
这样,登录对应角色的帐号可以看到按钮并正常使用,角色管理如果没有配置权限或者按钮缺少授权标识,则此按钮对此角色为不可见
[!WARNING|label:注意] [1] 菜单和目录的删除菜单需要首先删除子目录或菜单 [2] 为避免接口地址冲突,菜单的接口地址建议增加相应的标识前缀,如views等