功能名称: 学生考核申请指标数据动态获取
开发时间: 2025-01-03
模块: 学工管理-学生考核管理
功能描述: 当学生新增考核申请时,系统根据考核计划ID自动获取关联的指标数据,填入到指标模块中
xskh_assessment_schedule (考核计划表)
↓ plan_id
xskh_assessment_plan (考核方案表)
↓ plan_id
xskh_assessment_plan_indicator (考核方案关联指标体系表)
↓ indicator_id
xskh_assessment_indicator (考核指标体系表)
文件: web/src/api/xskh/assessmentApplication/assessmentApplication.ts
// 根据考核计划ID获取关联的指标数据
export function getIndicatorsByScheduleId(scheduleId: string | number) {
return request({
url: `/assessment/application/indicators/${scheduleId}`,
method: 'get'
});
}
文件: web/src/views/xskh/assessmentApplication/AssessmentApplicationForm.vue
主要修改:
loadIndicatorsByScheduleId方法openDialog方法,新增时调用指标数据获取fileList属性核心方法:
/** 根据考核计划ID获取关联的指标数据 */
const loadIndicatorsByScheduleId = async (scheduleId: string | number) => {
try {
const response = await getIndicatorsByScheduleId(scheduleId);
if (response.code === 200 && response.data) {
// 将指标数据转换为自评得分列表格式
form.value.selfScoreList = response.data.map((item: any) => ({
id: undefined,
applicationId: undefined,
indicatorId: item.indicatorId,
indicatorName: item.indicatorName,
indicatorCode: item.indicatorCode,
indicatorDescription: item.description,
indicatorMaxScore: item.maxScore,
planMaxScore: item.maxScore, // 使用方案中设置的最高分值
sortOrder: item.sortOrder,
selfScore: 0,
selfRemark: '',
teacherScore: 0,
teacherRemark: ''
}));
}
} catch (error) {
console.error('获取指标数据失败:', error);
form.value.selfScoreList = [];
}
};
文件: backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhAssessmentApplicationApprovalController.java
/**
* 根据考核计划ID获取关联的指标数据
*/
@SaCheckPermission("assessment:application:query")
@GetMapping("/indicators/{scheduleId}")
public R<List<Object>> getIndicatorsByScheduleId(
@NotNull(message = "考核计划ID不能为空") @PathVariable Long scheduleId) {
return R.ok(xskhAssessmentApplicationApprovalService.getIndicatorsByScheduleId(scheduleId));
}
文件: backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhAssessmentApplicationApprovalService.java
/**
* 根据考核计划ID获取关联的指标数据
*/
List<Object> getIndicatorsByScheduleId(Long scheduleId);
实现类: backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhAssessmentApplicationApprovalServiceImpl.java
/**
* 根据考核计划ID获取关联的指标数据
*/
@Override
public List<Object> getIndicatorsByScheduleId(Long scheduleId) {
// 1. 根据考核计划ID获取考核方案ID
XskhAssessmentScheduleVo schedule = assessmentScheduleService.queryById(scheduleId);
if (schedule == null) {
return new ArrayList<>();
}
Long planId = schedule.getPlanId();
if (planId == null) {
return new ArrayList<>();
}
// 2. 根据考核方案ID查询关联的指标数据
List<Object> indicators = baseMapper.selectIndicatorsByPlanId(planId);
return indicators;
}
文件: backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhAssessmentApplicationApprovalMapper.java
/**
* 根据考核方案ID查询关联的指标数据
*/
List<Object> selectIndicatorsByPlanId(Long planId);
XML文件: backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApplicationApprovalMapper.xml
<!-- 根据考核方案ID查询关联的指标数据 -->
<select id="selectIndicatorsByPlanId" parameterType="Long" resultType="java.util.Map">
SELECT
i.id as indicatorId,
i.indicator_code as indicatorCode,
i.indicator_name as indicatorName,
i.description,
pi.max_score as maxScore,
pi.weight,
pi.sort_order as sortOrder
FROM xskh_assessment_plan_indicator pi
INNER JOIN xskh_assessment_indicator i ON pi.indicator_id = i.id
WHERE pi.plan_id = #{planId}
AND pi.deleted = 0
AND i.deleted = 0
ORDER BY pi.sort_order ASC, i.sort_order ASC
</select>
1. 学生选择考核计划
2. 系统根据考核计划ID获取考核方案ID
3. 根据考核方案ID查询关联的指标数据
4. 将指标数据转换为表单格式
5. 填入指标模块表格中
6. 学生可以进行自评打分
前端选择考核计划 → 调用API接口 → 后端查询数据库 → 返回指标数据 → 前端渲染表格
{
"code": 200,
"msg": "操作成功",
"data": [
{
"indicatorId": 1,
"indicatorCode": "ZD001",
"indicatorName": "思想道德",
"description": "思想道德表现",
"maxScore": 20.00,
"weight": 1.00,
"sortOrder": 1
},
{
"indicatorId": 2,
"indicatorCode": "ZD002",
"indicatorName": "学习表现",
"description": "学习表现情况",
"maxScore": 30.00,
"weight": 1.00,
"sortOrder": 2
}
]
}
{
id: undefined,
applicationId: undefined,
indicatorId: 1,
indicatorName: "思想道德",
indicatorCode: "ZD001",
indicatorDescription: "思想道德表现",
indicatorMaxScore: 20,
planMaxScore: 20,
sortOrder: 1,
selfScore: 0,
selfRemark: "",
teacherScore: 0,
teacherRemark: ""
}
assessment:application:query📅 开发完成时间: 2025-01-03
👨💻 开发人员: 系统开发团队
📋 文档版本: v1.0.0