guoyu/log/教师端登录和界面完善方案.md

194 lines
6.8 KiB
Markdown
Raw Normal View History

2025-12-03 18:58:36 +08:00
# 教师端登录检查和界面完善方案
## 一、现状分析
### 1.1 登录功能现状
- ✅ 登录页面已有角色切换功能(学员/教师)
- ✅ 登录时传递了`userType`参数
-**缺少**:登录后验证用户选择的角色是否与后端返回的角色匹配
-**缺少**:路由守卫,根据角色跳转到不同页面
### 1.2 角色判断机制
- 后端通过用户的`remark`字段判断角色(`注册类型:student`/`注册类型:teacher`
- 或者通过角色`roleKey`判断(`student`/`teacher`
- 前端从`userInfo.role`获取角色(已实现)
### 1.3 教师端功能现状
- ✅ 后端已有教师相关接口:
- `/study/exam/my-exams` - 获取当前教师的考试列表
- `/study/exam/teacher/{teacherId}` - 根据教师ID获取考试列表
- `/study/classUser/allTeachers` - 查询所有教师
-**缺少**:教师端专用页面和界面
-**缺少**:教师端首页(显示教师相关功能)
-**缺少**:教师端考试管理页面
-**缺少**:教师端学生管理页面
## 二、实现方案
### 2.1 登录检查区分老师和学生
#### 2.1.1 修改登录逻辑(`bzd/src/pages/login/login.vue`
- 登录成功后,验证用户选择的角色(`userRole`)是否与后端返回的角色匹配
- 如果不匹配,提示错误并阻止登录
- 如果匹配,根据角色跳转到对应首页
#### 2.1.2 修改认证工具(`bzd/src/utils/auth.js`
- 在`login`方法中,增加角色验证逻辑
- 从后端返回的`roles`中提取角色,与前端选择的`userType`进行匹配
#### 2.1.3 修改Vuex Store`bzd/src/store/modules/auth.js`
- 在`login` action中增加角色验证
- 保存用户角色信息
#### 2.1.4 添加路由守卫(`bzd/src/App.vue`
- 在`onLaunch`中检查登录状态和角色
- 根据角色跳转到对应首页
### 2.2 完善教师端界面和接口
#### 2.2.1 创建教师端首页(`bzd/src/pages/index/teacher-index.vue`
**功能模块:**
- 我的考试管理(创建、编辑、查看考试)
- 学生管理(查看学生列表、学生成绩)
- 课程管理(查看我教授的课程)
- 数据统计(考试统计、学生统计)
**接口调用:**
- `/study/exam/my-exams` - 获取我的考试列表
- `/study/course/my-courses` - 获取我的课程(需要后端支持教师端)
- `/study/score/teacher/{teacherId}` - 获取学生成绩(需要后端支持)
#### 2.2.2 创建教师端考试管理页面(`bzd/src/pages/exam/teacher-list.vue`
**功能:**
- 显示教师创建的考试列表
- 可以创建新考试(跳转到创建页面)
- 可以编辑、删除考试
- 查看考试详情和统计
**接口调用:**
- `/study/exam/my-exams` - 获取我的考试列表
- `/study/exam/{id}` - 获取考试详情
- `/study/exam` - POST创建考试
- `/study/exam` - PUT更新考试
- `/study/exam/{id}` - DELETE删除考试
#### 2.2.3 创建教师端学生管理页面(`bzd/src/pages/student/list.vue`
**功能:**
- 显示学生列表(按班级分组)
- 查看学生详情
- 查看学生成绩
- 查看学生学习记录
**接口调用:**
- `/study/classUser/students/{classId}` - 获取班级学生列表
- `/study/score/student/{studentId}` - 获取学生成绩
- `/study/learningRecord/student/{studentId}` - 获取学生学习记录
#### 2.2.4 修改首页(`bzd/src/pages/index/index.vue`
- 根据用户角色(`userInfo.role`)显示不同内容
- 如果是教师,显示教师端首页内容
- 如果是学生,显示学生端首页内容(现有逻辑)
#### 2.2.5 修改个人中心(`bzd/src/pages/profile/profile.vue`
- 根据用户角色显示不同的功能菜单
- 教师端显示:考试管理、学生管理、数据统计等
- 学生端显示:学习记录、我的考试、我的成绩等(现有逻辑)
#### 2.2.6 修改底部导航栏(`bzd/src/components/custom-tabbar/custom-tabbar.vue`
- 根据用户角色显示不同的导航项
- 教师端:首页、考试管理、学生管理、我的
- 学生端:首页、课程、考核、我的(现有逻辑)
### 2.3 创建教师端API接口文件
#### 2.3.1 创建教师端API`bzd/src/api/study/teacher.js`
```javascript
// 获取我的考试列表
export function getMyExams() {
return request.get('/study/exam/my-exams')
}
// 获取我的课程列表
export function getMyCourses() {
return request.get('/study/course/my-courses')
}
// 获取学生列表(按班级)
export function getStudentsByClass(classId) {
return request.get(`/study/classUser/students/${classId}`)
}
// 获取所有学生
export function getAllStudents() {
return request.get('/study/classUser/allStudents')
}
```
## 三、文件清单
### 3.1 需要修改的文件
1. `bzd/src/pages/login/login.vue` - 增加角色验证
2. `bzd/src/utils/auth.js` - 增加角色验证逻辑
3. `bzd/src/store/modules/auth.js` - 增加角色验证
4. `bzd/src/App.vue` - 增加路由守卫
5. `bzd/src/pages/index/index.vue` - 根据角色显示不同内容
6. `bzd/src/pages/profile/profile.vue` - 根据角色显示不同菜单
7. `bzd/src/components/custom-tabbar/custom-tabbar.vue` - 根据角色显示不同导航
### 3.2 需要创建的文件
1. `bzd/src/pages/exam/teacher-list.vue` - 教师端考试管理页面
2. `bzd/src/pages/student/list.vue` - 教师端学生管理页面
3. `bzd/src/pages/student/detail.vue` - 学生详情页面
4. `bzd/src/api/study/teacher.js` - 教师端API接口文件
### 3.3 需要配置的文件
1. `bzd/src/pages.json` - 添加新页面路由配置
## 四、实现步骤
### 第一步:登录检查区分
1. 修改`auth.js`,增加角色验证逻辑
2. 修改`login.vue`,登录后验证角色匹配
3. 修改`App.vue`,增加路由守卫
### 第二步:教师端界面
1. 创建教师端API文件
2. 修改首页,根据角色显示不同内容
3. 创建教师端考试管理页面
4. 创建教师端学生管理页面
5. 修改个人中心,根据角色显示不同菜单
6. 修改底部导航栏,根据角色显示不同导航
### 第三步:测试验证
1. 测试教师登录流程
2. 测试学生登录流程
3. 测试角色验证功能
4. 测试教师端功能
5. 测试学生端功能
## 五、注意事项
1. **角色匹配规则**
- 前端选择的角色(`userRole`)必须与后端返回的角色(`userInfo.role`)匹配
- 角色值:`student`(学员)、`teacher`(教师)
2. **接口权限**
- 教师端接口需要后端支持
- 确保后端接口有正确的权限验证
3. **页面路由**
- 教师端和学生端使用不同的页面路由
- 需要在`pages.json`中配置新页面
4. **兼容性**
- 保持学生端现有功能不变
- 教师端功能作为新增功能
## 六、后续优化建议
1. 添加教师端数据统计功能
2. 添加教师端消息通知功能
3. 添加教师端课程管理功能
4. 优化教师端界面UI/UX