4.1 KiB
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>
功能验证
测试场景
- ✅ 学生用户状态开关被禁用
- ✅ 学生用户不显示修改、删除、重置密码、分配角色按钮
- ✅ 选中学生用户时批量修改按钮被禁用
- ✅ 选中包含学生用户的多个用户时批量删除按钮被禁用
- ✅ 所有被禁止的操作都显示友好提示信息
- ✅ 学生用户在操作列显示"学生用户"标识
错误提示信息
- "学生用户不允许删除操作"
- "学生用户不允许修改状态"
- "学生用户不允许分配角色操作"
- "学生用户不允许重置密码操作"
- "学生用户不允许修改操作"
- "选中的用户中包含学生用户,不允许删除操作"
影响范围
直接影响
- 系统管理员无法通过用户管理界面修改学生用户信息
- 学生用户的账号状态无法通过界面调整
- 学生用户无法被删除、重置密码或分配角色
兼容性
- 保持了对管理员用户(userId === 1)的原有保护逻辑
- 不影响非学生用户的正常管理功能
- 向下兼容,对没有 accountType 字段的用户不影响
后续优化建议
- 考虑添加学生用户专用的管理界面,提供受限的编辑功能
- 可以考虑增加配置项,允许超级管理员临时开启学生用户的管理权限
- 添加学生用户批量导入/导出功能的特殊处理逻辑
相关文档
- API文档:
docs/开发文档/API/用户认证登录API.md - 数据库设计:
docs/设计文档/database/mysql-database-standard.md - 前端开发规范:
.cursor/cursorrules-frontend.md