diff --git a/.gitignore b/.gitignore
index 564808ab..8d96ec0d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -169,4 +169,11 @@ script/*
stgl-api-test.js
update/*
本地临时文件目录/*
-docs/变更管理/
\ No newline at end of file
+docs/变更管理/
+学生考核模块的提示词.md
+学生考核模块的上下文信息临时存储.md
+学生违纪记录界面-移动端.md
+学生考核申请界面-移动端.md
+移动端附件组件规范.md
+移动端违纪记录模块开发规范.md
+.playwright-mcp/
\ No newline at end of file
diff --git a/backend/pom.xml b/backend/pom.xml
index 66e4440d..c5e7d7cf 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -414,6 +414,7 @@
${revision}
+
+
+
+
+
+
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApplicationApprovalMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApplicationApprovalMapper.xml
new file mode 100644
index 00000000..c42d8105
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApplicationApprovalMapper.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApprovalMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApprovalMapper.xml
new file mode 100644
index 00000000..87783c2b
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentApprovalMapper.xml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentBonusApprovalMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentBonusApprovalMapper.xml
new file mode 100644
index 00000000..30a60b5e
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentBonusApprovalMapper.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorDisciplineTypeMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorDisciplineTypeMapper.xml
new file mode 100644
index 00000000..cd696acd
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorDisciplineTypeMapper.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorMapper.xml
new file mode 100644
index 00000000..1bb9b2e2
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorMapper.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorTypeMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorTypeMapper.xml
new file mode 100644
index 00000000..7376be53
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentIndicatorTypeMapper.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentPlanIndicatorMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentPlanIndicatorMapper.xml
new file mode 100644
index 00000000..956be021
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentPlanIndicatorMapper.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentPlanMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentPlanMapper.xml
new file mode 100644
index 00000000..e0ba3892
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentPlanMapper.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentScheduleMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentScheduleMapper.xml
new file mode 100644
index 00000000..4cd2fba5
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentScheduleMapper.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentSelfScoreMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentSelfScoreMapper.xml
new file mode 100644
index 00000000..a0ed91f1
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhAssessmentSelfScoreMapper.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhRewardRecordMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhRewardRecordMapper.xml
index 3c685661..2b4783b5 100644
--- a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhRewardRecordMapper.xml
+++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/xskh/XskhRewardRecordMapper.xml
@@ -131,4 +131,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by rr.create_time desc
+
+
+
diff --git a/backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/domain/bo/ZsjyGraduateInfoBo.java b/backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/domain/bo/ZsjyGraduateInfoBo.java
index d70d243c..623e073a 100644
--- a/backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/domain/bo/ZsjyGraduateInfoBo.java
+++ b/backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/domain/bo/ZsjyGraduateInfoBo.java
@@ -144,16 +144,19 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
/**
* 邮箱地址
*/
+ @Size(max = 100, message = "邮箱地址长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
private String email;
/**
* QQ号码
*/
+ @Size(max = 20, message = "QQ号码长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
private String qqNumber;
/**
* 微信号码
*/
+ @Size(max = 30, message = "微信号码长度不能超过30个字符", groups = { AddGroup.class, EditGroup.class })
private String wechatNumber;
/**
@@ -174,11 +177,14 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
/**
* 详细地址
*/
+ @Size(max = 200, message = "详细地址长度不能超过200个字符", groups = { AddGroup.class, EditGroup.class })
private String detailAddress;
/**
* 邮政编码
*/
+ @Size(max = 10, message = "邮政编码长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
+ @Pattern(regexp = "^\\d{6}$", message = "邮政编码格式不正确,应为6位数字", groups = { AddGroup.class, EditGroup.class })
private String postalCode;
/**
@@ -190,6 +196,7 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
/**
* 就业单位名称
*/
+ @Size(max = 100, message = "就业单位名称长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
private String employmentCompany;
/**
@@ -200,6 +207,7 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
/**
* 工作职位
*/
+ @Size(max = 50, message = "工作职位长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
private String jobPosition;
/**
@@ -220,11 +228,13 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
/**
* 升学院校
*/
+ @Size(max = 100, message = "升学院校长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
private String furtherSchool;
/**
* 升学专业
*/
+ @Size(max = 50, message = "升学专业长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
private String furtherMajor;
/**
diff --git a/docs/原型文件/移动端/新版配色方案展示.html b/docs/原型文件/移动端/新版配色方案展示.html
new file mode 100644
index 00000000..3f6d489b
--- /dev/null
+++ b/docs/原型文件/移动端/新版配色方案展示.html
@@ -0,0 +1,1003 @@
+
+
+
+
+
+ 2025新版移动端配色方案展示 - 校园管理系统
+
+
+
+
+
+
+
+
+
+
清新活力风格
+
Fresh Vitality - 年轻、活跃、充满活力
+
+
+
+
+
+
+
UI组件预览
+
+
+
+
+
+
+
🎯 学生活动中心
+
+ 充满活力的校园生活平台,为学生提供丰富多彩的校园活动信息和互动体验。
+
+
+ 进行中
+ 即将开始
+ 已结束
+ 报名中
+
+
+
+
+
+
+
+
+
+
🎭 社团活动
+
发现和参与精彩的校园社团活动
+
+
+
+
+
+
+
+
+
+
温暖商务风格
+
Warm Business - 专业、亲和、温暖可信
+
+
+
+
+
+
+
UI组件预览
+
+
+
+
+
+
+
🏛️ 教务管理系统
+
专业可信的教务管理平台,为教师提供温馨便捷的教学管理体验。
+
+ 已完成
+ 待处理
+ 需关注
+ 进行中
+
+
+
+
+
+
+
+
+
📋 课程管理
+
便捷的课程信息和教学计划管理
+
+
+
👥 学生管理
+
全面的学生信息和学习跟踪
+
+
+
+
+
+
+
+
+
+
深邃科技风格
+
Deep Tech - 高科技、前沿、精密
+
+
+
+
+
+
+
UI组件预览
+
+
+
+
+
+
+
🚀 智能数据中心
+
+ 基于AI和大数据的智能校园数据分析平台,提供精准的数据洞察和决策支持。
+
+
+ 在线
+ 分析中
+ 异常
+ 同步中
+
+
+
+
+
+
+
+
+
📈 实时监控
+
校园各项数据的实时监控和分析
+
+
+
+
🔍 深度分析
+
多维度数据挖掘和趋势预测
+
+
+
+
+
+
+
+
+
🔍 配色方案深度对比
+
+
+
+
+ | 对比维度 |
+ 清新活力 |
+ 温暖商务 |
+ 深邃科技 |
+
+
+
+
+ | 适用场景 |
+ 学生端、社交功能 |
+ 教师端、管理功能 |
+ 数据分析、高级功能 |
+
+
+ | 视觉风格 |
+ 年轻活跃 |
+ 专业温暖 |
+ 高科技感 |
+
+
+ | 用户感受 |
+ 活力创新 |
+ 可信亲和 |
+ 前沿精密 |
+
+
+ | 色彩饱和度 |
+ 高 |
+ 中等 |
+ 中高 |
+
+
+ | 对比度 |
+ 标准 |
+ 标准 |
+ 高 |
+
+
+ | 主要用户群 |
+ 学生、年轻用户 |
+ 教师、管理员 |
+ 技术人员、数据分析师 |
+
+
+ | 情感导向 |
+ 乐观积极 |
+ 稳重可信 |
+ 理性专业 |
+
+
+ | 应用优势 |
+ 提升用户参与度 |
+ 增强专业信任感 |
+ 突出技术实力 |
+
+
+
+
+
+
+
+
🎨 设计原则
+
+ 所有方案均基于主题色
+ #0051d9,确保品牌一致性的同时,针对不同用户群体和使用场景进行个性化设计。
+
+
+
+
📱 移动优先
+
+ 专为移动端设计,考虑触摸交互、屏幕尺寸、阅读体验等移动端特有的用户体验需求。
+
+
+
+
♿ 无障碍访问
+
+ 所有配色方案都符合WCAG
+ 2.1标准,确保良好的对比度和可访问性,支持各种视觉需求的用户。
+
+
+
+
🌓 暗色模式
+
每套方案都提供对应的暗色模式配色,适应用户在不同环境下的使用偏好。
+
+
+
🔧 易于实现
+
+ 提供完整的 uview-ui
+ 配置代码和CSS变量定义,开发团队可以快速应用到项目中。
+
+
+
+
🔄 可扩展性
+
+ 色彩体系设计具有良好的扩展性,可以根据业务需求增加新的功能色彩和主题变体。
+
+
+
+
+
+
+
diff --git a/docs/开发文档/学生考核审核功能说明.md b/docs/开发文档/学生考核审核功能说明.md
new file mode 100644
index 00000000..08f5f557
--- /dev/null
+++ b/docs/开发文档/学生考核审核功能说明.md
@@ -0,0 +1,148 @@
+# 学生考核审核功能说明
+
+## 📋 功能概述
+
+学生考核审核功能允许班主任查看和管理自己班级学生的考核申请,确保班主任只能查看已提交的申请,不能查看草稿状态的申请。
+
+## 🔐 权限控制
+
+### 班主任查看权限
+- **权限标识**: `assessment:approval:teacherClass`
+- **数据范围**: 仅限当前登录用户作为班主任的班级
+- **状态限制**: 只能查看已提交、班主任审核、已完成状态的申请
+
+### 考核计划查看权限
+- **权限标识**: `assessment:approval:available`
+- **数据范围**: 所有进行中和已结束的考核计划
+
+## 📊 数据过滤规则
+
+### 班主任班级申请列表查询
+
+#### 接口信息
+- **URL**: `GET /assessment/approval/teacherClass`
+- **权限**: `assessment:approval:teacherClass`
+
+#### 查询条件
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| scheduleId | Long | 否 | 考核计划ID |
+| studentNo | String | 否 | 学号(支持模糊查询) |
+| studentName | String | 否 | 学生姓名(支持模糊查询) |
+| status | String | 否 | 申请状态(2-已提交 3-班主任审核 6-已完成) |
+| pageNum | Integer | 否 | 页码,默认1 |
+| pageSize | Integer | 否 | 每页大小,默认10 |
+
+#### 强制过滤条件
+```sql
+-- 班主任只能查看自己班级的申请
+AND a.class_id IN (
+ SELECT id FROM xg_class_msg
+ WHERE class_teacher_id = #{teacherId}
+ AND deleted = 0 AND class_status = '1'
+)
+
+-- 排除草稿状态,只查看已提交、班主任审核、已完成的申请
+AND a.status IN ('2', '3', '6')
+```
+
+#### 状态说明
+| 状态码 | 状态名称 | 说明 |
+|--------|----------|------|
+| 1 | 草稿 | ❌ **班主任不可见** |
+| 2 | 已提交 | ✅ 班主任可见 |
+| 3 | 班主任审核 | ✅ 班主任可见 |
+| 6 | 已完成 | ✅ 班主任可见 |
+
+### 可用考核计划查询
+
+#### 接口信息
+- **URL**: `GET /assessment/approval/available`
+- **权限**: `assessment:approval:available`
+
+#### 查询条件
+```sql
+-- 只查询进行中和已结束的计划
+WHERE deleted = 0
+AND status IN ('2', '3')
+ORDER BY start_time DESC
+```
+
+#### 计划状态说明
+| 状态码 | 状态名称 | 说明 |
+|--------|----------|------|
+| 1 | 未开始 | ❌ 不可用 |
+| 2 | 进行中 | ✅ 可用 |
+| 3 | 已结束 | ✅ 可用 |
+
+## 🔍 业务逻辑
+
+### 班主任查看流程
+1. **身份验证**: 获取当前登录用户ID
+2. **班级查询**: 查询该用户作为班主任的班级列表
+3. **申请过滤**: 只查询这些班级下状态为已提交、班主任审核、已完成的申请
+4. **数据返回**: 返回过滤后的申请列表
+
+### 数据安全保证
+- **权限隔离**: 班主任只能查看自己班级的数据
+- **状态过滤**: 自动排除草稿状态的申请
+- **数据完整性**: 包含完整的申请信息、状态名称、审核人信息等
+
+## 📝 使用示例
+
+### 基本查询
+```bash
+GET /assessment/approval/teacherClass
+```
+
+### 按状态筛选
+```bash
+GET /assessment/approval/teacherClass?status=2
+```
+
+### 按学生姓名搜索
+```bash
+GET /assessment/approval/teacherClass?studentName=张三
+```
+
+### 分页查询
+```bash
+GET /assessment/approval/teacherClass?pageNum=1&pageSize=10
+```
+
+## 🧪 测试验证
+
+### 测试脚本
+使用 `test/学生考核审核API测试脚本.py` 进行功能验证:
+
+```bash
+cd test
+python 学生考核审核API测试脚本.py
+```
+
+### 测试要点
+1. ✅ 验证班主任只能查看已提交、班主任审核、已完成状态的申请
+2. ✅ 验证草稿状态的申请不会被班主任看到
+3. ✅ 验证分页查询功能正常
+4. ✅ 验证筛选条件功能正常
+5. ✅ 验证只返回班主任自己班级的数据
+
+## ⚠️ 注意事项
+
+1. **草稿状态保护**: 班主任无法查看学生草稿状态的申请,保护学生隐私
+2. **权限验证**: 所有接口都需要相应的权限标识
+3. **数据一致性**: 确保返回的数据状态与业务规则一致
+4. **性能优化**: 使用索引优化查询性能,避免全表扫描
+
+## 📚 相关文档
+
+- [学生考核管理系统API文档](./API/学生考核管理系统API.md)
+- [API文档基础规范](./API/API文档基础规范.md)
+- [后端开发规范](../.cursor/cursorrules-backend.md)
+
+---
+
+**文档版本**: v1.0.0
+**创建时间**: 2025-01-03
+**最后更新**: 2025-01-03
+**维护人员**: Cursor AI
\ No newline at end of file
diff --git a/docs/开发文档/学生考核申请指标数据获取功能开发说明.md b/docs/开发文档/学生考核申请指标数据获取功能开发说明.md
new file mode 100644
index 00000000..e91234ef
--- /dev/null
+++ b/docs/开发文档/学生考核申请指标数据获取功能开发说明.md
@@ -0,0 +1,325 @@
+# 学生考核申请指标数据获取功能开发说明
+
+## 📋 功能概述
+
+**功能名称**: 学生考核申请指标数据动态获取
+**开发时间**: 2025-01-03
+**模块**: 学工管理-学生考核管理
+**功能描述**: 当学生新增考核申请时,系统根据考核计划ID自动获取关联的指标数据,填入到指标模块中
+
+---
+
+## 🎯 业务需求
+
+### 原始问题
+- 学生考核申请表单中的指标模块数据是硬编码的
+- 无法根据不同的考核计划动态显示对应的指标
+- 指标数据应该来源于考核方案关联指标体系表
+
+### 解决方案
+- 根据考核计划ID → 获取考核方案ID → 查询考核方案关联指标体系表
+- 动态获取指标数据并填入表单
+- 支持不同考核计划显示不同的指标组合
+
+---
+
+## 🏗️ 技术实现
+
+### 1. 数据库关联关系
+```
+xskh_assessment_schedule (考核计划表)
+ ↓ plan_id
+xskh_assessment_plan (考核方案表)
+ ↓ plan_id
+xskh_assessment_plan_indicator (考核方案关联指标体系表)
+ ↓ indicator_id
+xskh_assessment_indicator (考核指标体系表)
+```
+
+### 2. 前端实现
+
+#### 2.1 API接口扩展
+**文件**: `web/src/api/xskh/assessmentApplication/assessmentApplication.ts`
+
+```typescript
+// 根据考核计划ID获取关联的指标数据
+export function getIndicatorsByScheduleId(scheduleId: string | number) {
+ return request({
+ url: `/assessment/application/indicators/${scheduleId}`,
+ method: 'get'
+ });
+}
+```
+
+#### 2.2 组件逻辑修改
+**文件**: `web/src/views/xskh/assessmentApplication/AssessmentApplicationForm.vue`
+
+**主要修改**:
+1. 导入新的API接口
+2. 添加`loadIndicatorsByScheduleId`方法
+3. 修改`openDialog`方法,新增时调用指标数据获取
+4. 修复接口类型定义,添加`fileList`属性
+
+**核心方法**:
+```typescript
+/** 根据考核计划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 = [];
+ }
+};
+```
+
+### 3. 后端实现
+
+#### 3.1 Controller层
+**文件**: `backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhAssessmentApplicationApprovalController.java`
+
+```java
+/**
+ * 根据考核计划ID获取关联的指标数据
+ */
+@SaCheckPermission("assessment:application:query")
+@GetMapping("/indicators/{scheduleId}")
+public R> getIndicatorsByScheduleId(
+ @NotNull(message = "考核计划ID不能为空") @PathVariable Long scheduleId) {
+ return R.ok(xskhAssessmentApplicationApprovalService.getIndicatorsByScheduleId(scheduleId));
+}
+```
+
+#### 3.2 Service层
+**文件**: `backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhAssessmentApplicationApprovalService.java`
+
+```java
+/**
+ * 根据考核计划ID获取关联的指标数据
+ */
+List