5.8 KiB
5.8 KiB
业务功能按钮权限统一修复方案
问题:角色管理中已取消「新增/修改/删除」等菜单权限后,学生管理、会员管理等自建业务页面上,对应按钮仍显示且可操作,与权限配置不一致。
原因:后端接口已使用 @SaCheckPermission 做权限校验(无权限会 403),但前端列表/表格上的「新增」「编辑」「删除」「导入」等按钮未做权限控制,未使用项目已有的 v-hasPermi 指令,导致仅靠菜单可见性无法隐藏这些操作按钮。
修复思路:在前端为所有业务模块的增删改等操作按钮增加 v-hasPermi="['权限字符']",与后端 @SaCheckPermission 使用的权限字符一致。不修改后端(后端已校验),不修改菜单/角色配置方式。
一、涉及范围
以下为自建业务页面,需统一加按钮权限控制(系统管理下用户/角色/部门等已有 v-hasPermi,不在此次范围):
| 模块 | 前端路径 | 后端权限前缀 |
|---|---|---|
| 学生管理 | views/business/student/index.vue |
business:student:* |
| 会员管理 | views/business/member/index.vue |
business:member:* |
| 学校管理 | views/business/school/index.vue |
business:school:* |
| 应用管理 | views/business/application/index.vue |
business:application:* |
| 接口字典 | views/business/apiDict/index.vue |
business:apiDict:* |
| 基础数据-年级 | views/business/base/grade/index.vue |
business:grade:* |
| 基础数据-班级 | views/business/base/class/index.vue |
business:class:* |
| 基础数据-学科 | views/business/base/subject/index.vue |
business:subject:* |
| 基础数据-区域 | views/business/base/region/index.vue |
business:region:* |
二、各页面具体修改
1. 学生管理 student/index.vue
- 工具栏「新增」:
v-hasPermi="['business:student:add']" - 工具栏「导入」:
v-hasPermi="['business:student:import']" - 表格操作「编辑」:
v-hasPermi="['business:student:edit']" - 表格操作「删除」:
v-hasPermi="['business:student:remove']"
2. 会员管理 member/index.vue
- 工具栏「新增」:
v-hasPermi="['business:member:add']" - 表格操作「编辑」:
v-hasPermi="['business:member:edit']" - 表格操作「重置密码」:
v-hasPermi="['business:member:resetPwd']" - 表格操作「删除」:
v-hasPermi="['business:member:remove']"
3. 学校管理 school/index.vue
- 工具栏「新增」:
v-hasPermi="['business:school:add']" - 表格内「编辑」:
v-hasPermi="['business:school:edit']" - 表格内「新增年级」:
v-hasPermi="['business:school:edit']" - 表格内「新增班级」:
v-hasPermi="['business:school:edit']" - 表格内「删除」(学校/年级/班级):
v-hasPermi="['business:school:remove']"
4. 应用管理 application/index.vue
- 工具栏「新增」:
v-hasPermi="['business:application:add']" - 表格操作「编辑」:
v-hasPermi="['business:application:edit']" - 表格操作「重置密钥」:
v-hasPermi="['business:application:edit']" - 表格操作「删除」:
v-hasPermi="['business:application:remove']"
5. 接口字典 apiDict/index.vue
- 工具栏「新增」:
v-hasPermi="['business:apiDict:add']" - 工具栏「批量删除」:
v-hasPermi="['business:apiDict:remove']" - 表格操作「编辑」:
v-hasPermi="['business:apiDict:edit']" - 表格操作「删除」:
v-hasPermi="['business:apiDict:remove']"
6. 基础数据 - 年级 base/grade/index.vue
- 工具栏「新增」:
v-hasPermi="['business:grade:add']" - 表格操作「编辑」:
v-hasPermi="['business:grade:edit']" - 表格操作「删除」:
v-hasPermi="['business:grade:remove']"
7. 基础数据 - 班级 base/class/index.vue
- 工具栏「新增」:
v-hasPermi="['business:class:add']" - 表格操作「编辑」:
v-hasPermi="['business:class:edit']" - 表格操作「删除」:
v-hasPermi="['business:class:remove']"
8. 基础数据 - 学科 base/subject/index.vue
- 工具栏「新增」:
v-hasPermi="['business:subject:add']" - 表格操作「编辑」:
v-hasPermi="['business:subject:edit']" - 表格操作「删除」:
v-hasPermi="['business:subject:remove']"
9. 基础数据 - 区域 base/region/index.vue
- 工具栏「新增」:
v-hasPermi="['business:region:add']" - 表格操作「新增下级」:
v-hasPermi="['business:region:add']" - 表格操作「编辑」:
v-hasPermi="['business:region:edit']" - 表格操作「删除」:
v-hasPermi="['business:region:remove']"
三、技术说明
- 指令:使用现有
v-hasPermi(directive/permission/hasPermi.js),无权限时移除 DOM,与系统管理页面用法一致。 - 权限字符:与后端
@SaCheckPermission完全一致,保证「角色未勾选该权限 → 前端不显示按钮、后端接口 403」。 - 后端:不改动,已具备接口级校验。
- 菜单/角色:不改动,仅依赖现有「菜单权限」配置(角色管理里勾选的子权限如「学生新增」「学生修改」等)。
四、验收方式
- 使用分公司用户(如 wuhan)登录,在角色管理中仅保留「学生管理」下的「学生查询」,去掉「学生新增」「学生修改」「学生删除」「学生导入」。
- 进入学生管理页:不应出现「新增」「导入」按钮,表格操作列不应出现「编辑」「删除」。
- 对会员、学校、应用、接口字典、年级/班级/学科/区域做同类配置,验证对应按钮按权限显隐。
- 超级管理员或拥有全部权限的角色,所有按钮仍正常显示。
请确认是否按此方案执行修改,同意后再进行代码改动。