117 lines
4.1 KiB
Markdown
117 lines
4.1 KiB
Markdown
# 学生用户操作限制功能开发记录
|
|
|
|
**变更时间**: 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 用户体验优化
|
|
- 所有被禁止的操作都会显示友好的错误提示信息
|
|
- 学生用户在操作列显示"学生用户"标识,鼠标悬停显示"学生用户不允许操作"提示
|
|
|
|
## 技术实现要点
|
|
|
|
### 条件判断逻辑
|
|
```javascript
|
|
// 单个学生用户判断
|
|
scope.row.accountType === '2'
|
|
|
|
// 批量操作中包含学生用户判断
|
|
selectedUsers.value.some(user => user.accountType === '2')
|
|
```
|
|
|
|
### 状态开关禁用
|
|
```vue
|
|
<el-switch
|
|
v-model="scope.row.status"
|
|
active-value="0"
|
|
inactive-value="1"
|
|
:disabled="scope.row.accountType === '2'"
|
|
@change="handleStatusChange(scope.row)"
|
|
></el-switch>
|
|
```
|
|
|
|
### 操作按钮条件显示
|
|
```vue
|
|
<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` |