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

5.8 KiB
Raw Permalink Blame 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-hasPermidirective/permission/hasPermi.js),无权限时移除 DOM与系统管理页面用法一致。
  • 权限字符:与后端 @SaCheckPermission 完全一致,保证「角色未勾选该权限 → 前端不显示按钮、后端接口 403」。
  • 后端:不改动,已具备接口级校验。
  • 菜单/角色:不改动,仅依赖现有「菜单权限」配置(角色管理里勾选的子权限如「学生新增」「学生修改」等)。

四、验收方式

  1. 使用分公司用户(如 wuhan登录在角色管理中仅保留「学生管理」下的「学生查询」去掉「学生新增」「学生修改」「学生删除」「学生导入」。
  2. 进入学生管理页:不应出现「新增」「导入」按钮,表格操作列不应出现「编辑」「删除」。
  3. 对会员、学校、应用、接口字典、年级/班级/学科/区域做同类配置,验证对应按钮按权限显隐。
  4. 超级管理员或拥有全部权限的角色,所有按钮仍正常显示。

请确认是否按此方案执行修改,同意后再进行代码改动。