pangu-user-platform/docs/业务功能按钮权限统一修复方案.md

113 lines
5.8 KiB
Markdown
Raw Normal View History

# 业务功能按钮权限统一修复方案
**问题**:角色管理中已取消「新增/修改/删除」等菜单权限后,学生管理、会员管理等自建业务页面上,对应按钮仍显示且可操作,与权限配置不一致。
**原因**:后端接口已使用 `@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. 超级管理员或拥有全部权限的角色,所有按钮仍正常显示。
---
**请确认是否按此方案执行修改,同意后再进行代码改动。**