diff --git a/.claude/plans/imperative-honking-kazoo.md b/.claude/plans/imperative-honking-kazoo.md new file mode 100644 index 0000000..538f1cf --- /dev/null +++ b/.claude/plans/imperative-honking-kazoo.md @@ -0,0 +1,100 @@ +# 学校端家长管理"选择孩子"列表字段完善计划 + +## 问题背景 + +学校端家长管理页面中的"选择孩子"弹窗列表(用于将学生关联到家长)缺少两个关键字段的显示: +1. **性别** (gender) - 学生性别 +2. **所属班级** (className) - 学生所在班级名称 + +## 问题分析 + +通过代码审查发现: + +### 1. 前端代码 (`ParentListView.vue`) +- 第 597-601 行定义了表格列,期望显示 `gender` 和 `className`: +```typescript +const studentTableColumns = [ + { title: '姓名', dataIndex: 'name', key: 'name', width: 120 }, + { title: '性别', dataIndex: 'gender', key: 'gender', width: 80 }, + { title: '班级', dataIndex: 'className', key: 'className', width: 120 }, +]; +``` + +### 2. 后端代码 (`SchoolStudentController.java`) +- 第 89-119 行的 `getStudentPage` 方法返回学生列表 +- 目前只设置了 `classId`,未设置 `className` + +### 3. DTO (`StudentResponse.java`) +- 有 `gender` 字段(第 29 行)✅ +- 有 `classId` 字段(第 56 行)✅ +- **缺少 `className` 字段** ❌ + +### 4. 实体类 (`Student.java`) +- 有 `gender` 字段(第 26 行)✅ + +## 根本原因 + +1. `StudentResponse` DTO 缺少 `className` 字段 +2. Controller 中只查询和设置了 `classId`,没有查询班级名称并设置 `className` + +## 修改方案 + +### 1. 添加 `className` 字段到 `StudentResponse` + +**文件**: `reading-platform-java/src/main/java/com/reading/platform/dto/response/StudentResponse.java` + +在 `classId` 字段后添加 `className` 字段: +```java +@Schema(description = "所在班级 ID") +private Long classId; + +@Schema(description = "所在班级名称") +private String className; +``` + +### 2. 在 Controller 中设置 `className` + +**文件**: `reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolStudentController.java` + +修改 `getStudentPage` 方法(第 100-118 行): +```java +for (StudentResponse vo : voList) { + // 设置班级 + var clazz = classService.getPrimaryClassByStudentId(vo.getId()); + vo.setClassId(clazz != null ? clazz.getId() : null); + vo.setClassName(clazz != null ? clazz.getName() : null); // 新增 + + // ... 其余代码不变 +} +``` + +同样修改 `getStudent` 方法(第 66-86 行),添加 `className` 的设置。 + +### 3. 验证 `gender` 字段 + +`gender` 字段应该已通过 MapStruct 自动映射。如果前端仍不显示,需要检查: +- 数据库中 `gender` 字段是否有值 +- Mapper 是否正确映射了该字段 + +## 关键文件列表 + +| 文件路径 | 修改类型 | 说明 | +|---------|---------|------| +| `reading-platform-java/src/main/java/com/reading/platform/dto/response/StudentResponse.java` | 修改 | 添加 `className` 字段 | +| `reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolStudentController.java` | 修改 | 设置 `className` 字段值 | + +## 验证步骤 + +1. 启动后端服务 +2. 进入学校端家长管理页面 +3. 点击任意家长的"孩子"按钮打开管理弹窗 +4. 点击"添加孩子"打开选择学生弹窗 +5. 验证表格中是否正确显示: + - 性别列(男/女) + - 班级列(班级名称) + +## 风险评估 + +- **低风险**:只是添加一个返回字段,不影响现有功能 +- **向后兼容**:前端已准备好接收这些字段,不会破坏现有功能 + diff --git a/reading-platform-frontend/.env.development b/reading-platform-frontend/.env.development index dbca012..2c62c58 100644 --- a/reading-platform-frontend/.env.development +++ b/reading-platform-frontend/.env.development @@ -1,3 +1,4 @@ VITE_API_BASE_URL= VITE_APP_TITLE=幼儿阅读教学服务平台 VITE_SERVER_BASE_URL= +VITE_ENABLE_DEFAULT_ACCOUNT=true diff --git a/reading-platform-frontend/.env.production b/reading-platform-frontend/.env.production new file mode 100644 index 0000000..fc45e0d --- /dev/null +++ b/reading-platform-frontend/.env.production @@ -0,0 +1,4 @@ +VITE_API_BASE_URL= +VITE_APP_TITLE=幼儿阅读教学服务平台 +VITE_SERVER_BASE_URL= +VITE_ENABLE_DEFAULT_ACCOUNT=false diff --git a/reading-platform-frontend/.env.test b/reading-platform-frontend/.env.test index 541b272..02355e7 100644 --- a/reading-platform-frontend/.env.test +++ b/reading-platform-frontend/.env.test @@ -1,2 +1,3 @@ VITE_APP_PORT=5174 VITE_BACKEND_PORT=8481 +VITE_ENABLE_DEFAULT_ACCOUNT=true diff --git a/reading-platform-frontend/src/components/course/FileUploader.vue b/reading-platform-frontend/src/components/course/FileUploader.vue index b2301e9..f3c3a66 100644 --- a/reading-platform-frontend/src/components/course/FileUploader.vue +++ b/reading-platform-frontend/src/components/course/FileUploader.vue @@ -56,7 +56,19 @@