6.2 KiB
6.2 KiB
奖学金申请功能重新设计 - 变更记录
变更时间: 2025-08-05
执行人员: AI助手
变更类型: 功能优化重构
📋 变更概述
根据用户反馈,对奖学金申请功能进行重新设计,实现以下核心变更:
- 批次选择功能 - 班主任添加奖学金申请时可以选择申报批次,选择后自动带出奖学金相关信息
- 学生勾选功能 - 学生信息不再手动添加,而是从本班级学生中勾选
- 班级信息自动获取 - 学院、专业、班级、年级等信息直接从班主任所带班级信息中读取
- 成绩信息移除 - 暂时移除成绩相关信息字段
🔧 具体变更内容
1. 后端接口变更
1.1 Controller新增接口
文件: backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/controller/JcbtScholarshipApplicationController.java
新增接口:
// 获取班主任所带班级信息
@GetMapping("/classInfo")
public R<Map<String, Object>> getClassInfoByTeacher(@RequestParam Long teacherId)
// 获取班级学生列表(用于勾选)
@GetMapping("/students")
public R<List<Map<String, Object>>> getClassStudents(@RequestParam Long classId)
// 根据批次获取可申请的奖学金类型
@GetMapping("/scholarshipTypes")
public R<List<Map<String, Object>>> getScholarshipTypesByBatch(@RequestParam Long batchId)
1.2 Service接口扩展
文件: backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/service/IJcbtScholarshipApplicationService.java
新增方法:
Map<String, Object> getClassInfoByTeacher(Long teacherId)- 获取班主任所带班级信息List<Map<String, Object>> getClassStudents(Long classId)- 获取班级学生列表List<Map<String, Object>> getScholarshipTypesByBatch(Long batchId)- 根据批次获取奖学金类型
1.3 Service实现
文件: backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/service/impl/JcbtScholarshipApplicationServiceImpl.java
实现内容:
- 添加了模拟数据返回(实际项目需要调用学工模块的RemoteService)
- 支持班主任班级信息查询
- 支持班级学生列表获取
- 支持根据批次获取奖学金类型列表
2. 前端界面重构
2.1 API接口文件
新建文件: web/src/api/jcbt/scholarshipApplication.ts
接口功能:
- 完整的奖学金申请CRUD接口
- 班主任专用接口(获取班级信息、学生列表、奖学金类型)
- 批量申请提交接口
2.2 申请表单重构
文件: web/src/views/jcbt/scholarship/application/form.vue
主要变更:
- 批次选择区域: 选择申报批次,自动加载对应奖学金类型
- 班级信息展示: 自动从班主任信息获取并显示班级信息(只读)
- 学生选择表格: 替换原有手动输入,改为班级学生勾选模式
- 申请信息简化: 移除成绩相关字段,简化申请信息录入
- 搜索功能: 支持按学号/姓名搜索学生
新增功能:
// 批次变更处理
const handleBatchChange = async () => {
// 根据选择的批次加载对应的奖学金类型
}
// 学生选择变更处理
const handleStudentSelectionChange = (selection) => {
// 处理学生勾选状态变更
}
// 班级信息加载
const loadClassInfo = async () => {
// 自动获取班主任所带班级信息
}
📊 界面效果变更
变更前
- ❌ 需要手动选择学年学期
- ❌ 需要手动输入学生信息(学号、姓名、性别等)
- ❌ 需要手动输入班级信息
- ❌ 包含复杂的成绩信息录入
变更后
- ✅ 批次选择,自动带出奖学金信息
- ✅ 班级信息自动获取并显示
- ✅ 学生信息表格勾选,支持搜索
- ✅ 申请信息简化,操作更便捷
🚀 技术实现要点
1. 跨模块数据调用
当前状态: 使用模拟数据 后续优化: 需要集成学工模块的RemoteService接口
// TODO: 实际项目中需要调用
@Autowired
private RemoteClassService remoteClassService; // 班级信息服务
@Autowired
private RemoteStudentService remoteStudentService; // 学生信息服务
2. 前端状态管理
- 使用Vue 3 Composition API
- 响应式数据管理
- 表单验证优化
3. 用户体验优化
- 实时搜索学生
- 批次联动选择
- 操作结果反馈
⚠️ 注意事项
1. 数据兼容性
- 现有奖学金申请数据结构保持兼容
- 新增字段为可选字段
2. 权限控制
- 班主任只能看到自己所带班级的学生
- 申请提交需要相应权限验证
3. 后续开发
- 模拟数据替换: 当前使用模拟数据,需要后续接入真实的学工模块数据
- 跨模块接口: 需要定义和实现RemoteClassService、RemoteStudentService
- 数据同步: 确保班级、学生信息的实时同步
📁 涉及文件清单
后端文件
backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/
├── controller/JcbtScholarshipApplicationController.java (修改)
├── service/IJcbtScholarshipApplicationService.java (修改)
└── service/impl/JcbtScholarshipApplicationServiceImpl.java (修改)
前端文件
web/src/
├── api/jcbt/scholarshipApplication.ts (新建)
└── views/jcbt/scholarship/application/form.vue (重构)
文档文件
docs/变更管理/
└── code-adjust-record-2025-08-05-scholarship-application-redesign.md (新建)
✅ 变更验证
功能验证点
- ✅ 批次选择功能正常
- ✅ 奖学金类型自动加载
- ✅ 班级信息自动显示
- ✅ 学生表格勾选功能
- ✅ 学生搜索功能
- ✅ 申请表单提交
待验证项目
- 🔄 跨模块数据调用(需要集成学工模块后验证)
- 🔄 真实数据的完整流程测试
变更状态: ✅ 已完成
验证状态: 🔄 部分验证(等待学工模块集成)
上线建议: 可以先使用模拟数据进行功能测试,后续升级为真实数据调用
说明: 本次变更按照用户需求进行了全面重构,提升了班主任申请奖学金的操作体验。当前使用模拟数据确保功能可测试,后续需要接入真实的学工模块数据。