# 业务功能按钮权限统一修复方案 **问题**:角色管理中已取消「新增/修改/删除」等菜单权限后,学生管理、会员管理等自建业务页面上,对应按钮仍显示且可操作,与权限配置不一致。 **原因**:后端接口已使用 `@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」。 - **后端**:不改动,已具备接口级校验。 - **菜单/角色**:不改动,仅依赖现有「菜单权限」配置(角色管理里勾选的子权限如「学生新增」「学生修改」等)。 --- ## 四、验收方式 1. 使用**分公司用户**(如 wuhan)登录,在角色管理中仅保留「学生管理」下的「学生查询」,去掉「学生新增」「学生修改」「学生删除」「学生导入」。 2. 进入学生管理页:不应出现「新增」「导入」按钮,表格操作列不应出现「编辑」「删除」。 3. 对会员、学校、应用、接口字典、年级/班级/学科/区域做同类配置,验证对应按钮按权限显隐。 4. 超级管理员或拥有全部权限的角色,所有按钮仍正常显示。 --- **请确认是否按此方案执行修改,同意后再进行代码改动。**