Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-01-student-user-operation-restriction.md
T
2025-07-26 17:54:01 +08:00

4.1 KiB

学生用户操作限制功能开发记录

变更时间: 2025-01-01 14:30:00
开发者: Cursor AI
变更类型: 功能增强
影响模块: 系统管理-用户管理

变更概述

在用户管理界面中,当用户的 accountType 为 "2"(学生用户)时,禁用所有管理操作,包括修改、删除、状态调整、重置密码、分配角色等。

详细变更内容

1. 前端类型定义更新

文件: web/src/api/system/user/types.ts

  • 在 UserVO 接口中添加 accountType: string 字段

2. 用户管理页面功能限制

文件: web/src/views/system/user/index.vue

2.1 新增计算属性

  • isSelectedStudentUser: 判断选中的单个用户是否为学生用户
  • hasSelectedStudentUser: 判断选中的用户中是否包含学生用户

2.2 批量操作按钮限制

  • 修改按钮: 当选中学生用户时禁用 (isSelectedStudentUser)
  • 删除按钮: 当选中用户包含学生用户时禁用 (hasSelectedStudentUser)

2.3 表格操作限制

  • 状态开关: 学生用户的状态开关设为禁用状态
  • 行操作按钮: 学生用户隐藏所有操作按钮(修改、删除、重置密码、分配角色)
  • 学生用户标识: 在操作列显示"学生用户"文字提示

2.4 操作函数校验

  • handleDelete(): 检查并阻止删除学生用户
  • handleStatusChange(): 检查并阻止修改学生用户状态
  • handleAuthRole(): 检查并阻止为学生用户分配角色
  • handleResetPwd(): 检查并阻止重置学生用户密码
  • handleUpdate(): 检查并阻止修改学生用户信息

2.5 用户体验优化

  • 所有被禁止的操作都会显示友好的错误提示信息
  • 学生用户在操作列显示"学生用户"标识,鼠标悬停显示"学生用户不允许操作"提示

技术实现要点

条件判断逻辑

// 单个学生用户判断
scope.row.accountType === '2'

// 批量操作中包含学生用户判断
selectedUsers.value.some(user => user.accountType === '2')

状态开关禁用

<el-switch 
  v-model="scope.row.status" 
  active-value="0" 
  inactive-value="1" 
  :disabled="scope.row.accountType === '2'"
  @change="handleStatusChange(scope.row)"
></el-switch>

操作按钮条件显示

<el-tooltip v-if="scope.row.userId !== 1 && scope.row.accountType !== '2'" content="修改" placement="top">
  <el-button v-hasPermi="['system:user:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
</el-tooltip>

功能验证

测试场景

  1. ✅ 学生用户状态开关被禁用
  2. ✅ 学生用户不显示修改、删除、重置密码、分配角色按钮
  3. ✅ 选中学生用户时批量修改按钮被禁用
  4. ✅ 选中包含学生用户的多个用户时批量删除按钮被禁用
  5. ✅ 所有被禁止的操作都显示友好提示信息
  6. ✅ 学生用户在操作列显示"学生用户"标识

错误提示信息

  • "学生用户不允许删除操作"
  • "学生用户不允许修改状态"
  • "学生用户不允许分配角色操作"
  • "学生用户不允许重置密码操作"
  • "学生用户不允许修改操作"
  • "选中的用户中包含学生用户,不允许删除操作"

影响范围

直接影响

  • 系统管理员无法通过用户管理界面修改学生用户信息
  • 学生用户的账号状态无法通过界面调整
  • 学生用户无法被删除、重置密码或分配角色

兼容性

  • 保持了对管理员用户(userId === 1)的原有保护逻辑
  • 不影响非学生用户的正常管理功能
  • 向下兼容,对没有 accountType 字段的用户不影响

后续优化建议

  1. 考虑添加学生用户专用的管理界面,提供受限的编辑功能
  2. 可以考虑增加配置项,允许超级管理员临时开启学生用户的管理权限
  3. 添加学生用户批量导入/导出功能的特殊处理逻辑

相关文档

  • API文档: docs/开发文档/API/用户认证登录API.md
  • 数据库设计: docs/设计文档/database/mysql-database-standard.md
  • 前端开发规范: .cursor/cursorrules-frontend.md