提交学生花名册

This commit is contained in:
zlwu committed 2025-08-01 20:26:15 +08:00
1 parent a6b8eb06dd
commit 38a1234dcb
7 files changed
+1261 -30

No files matched your search

@@ -0,0 +1,150 @@
# 代码调整记录 - 2025-01-07 - assistant
## 高级检索界面参数传递功能实现
**时间**: 2025-01-07 22:30:00
**修改人**: assistant
**影响模块**: 学工管理 - 学生信息管理 - 学生花名册
### 修改内容
#### 1. 主页面功能增强
**文件**: `web/src/views/xg/xsjcxx/stuRoster/index.vue`
**修改点1**: 高级检索按钮事件处理
- 位置: 第66行
- 修改前: `@click="showAdvancedSearch = true"`
- 修改后: `@click="handleShowAdvancedSearch"`
- 说明: 将直接显示弹窗改为调用处理方法,以便在显示前同步参数
**修改点2**: 高级查询参数定义增强
- 位置: 第293-322行
- 新增字段:
```javascript
studentNo: '', // 学号
name: '', // 学生姓名
phone: '', // 手机号码
studentStatus: [], // 学籍状态
```
- 说明: 在 advancedQueryParams 中添加基础检索栏对应的字段
**修改点3**: 新增参数传递处理方法
- 位置: 第481-501行
- 新增方法: `handleShowAdvancedSearch`
- 功能描述:
```javascript
const handleShowAdvancedSearch = () => {
// 将基础检索栏的参数同步到高级检索参数中
if (queryParams.studentNo) {
advancedQueryParams.studentNo = queryParams.studentNo;
}
if (queryParams.name) {
advancedQueryParams.name = queryParams.name;
}
if (queryParams.phone) {
advancedQueryParams.phone = queryParams.phone;
}
// 状态对应学籍状况
if (queryParams.studentStatus && queryParams.studentStatus.length > 0) {
advancedQueryParams.studentStatus = [...queryParams.studentStatus];
}
// 显示高级检索弹窗
showAdvancedSearch.value = true;
};
```
### 功能说明
#### 实现效果
1. **参数自动传递**: 用户在基础检索栏输入学号、姓名、手机号码、选择状态后,点击"高级检索"按钮时,这些参数会自动传递到高级检索界面
2. **状态字段映射**: 基础检索栏的"状态"字段对应高级检索界面的"学籍状态"字段
3. **数组类型处理**: 正确处理多选状态字段的数组格式传递
4. **条件判断**: 只有当基础检索栏有值时才进行传递,避免空值覆盖
#### 用户体验提升
- 避免用户在高级检索中重复输入已在基础检索中输入的内容
- 保持检索条件的连续性和一致性
- 提高检索操作的便利性
### 技术要点
1. **响应式数据同步**: 使用 reactive 对象的属性直接赋值实现参数同步
2. **数组深拷贝**: 对于数组类型的 studentStatus 使用展开运算符进行深拷贝
3. **条件判断**: 通过 if 判断确保只有有效值才进行传递
4. **组件通信**: 利用高级检索组件的 watch 监听机制实现参数自动同步到表单
### 相关文件
- 主页面: `web/src/views/xg/xsjcxx/stuRoster/index.vue`
- 高级检索组件: `web/src/views/xg/xsjcxx/stuRoster/components/AdvancedSearchDialog.vue`
### 测试建议
1. 在基础检索栏输入学号、姓名、手机号码,选择状态
2. 点击"高级检索"按钮
3. 验证高级检索界面中对应字段是否已自动填充
4. 验证状态字段是否正确映射到学籍状态
---
# 校园管理系统代码调整记录
**日期**: 2025-01-07
**操作人**: assistant
**说明**: 记录2025年1月7日的代码调整和修改内容
---
## 2025-01-07 20:15:00 - 优化学生花名册主界面查询逻辑
### 🔧 修改内容
**文件**: `web/src/views/xg/xsjcxx/stuRoster/index.vue`
**修改说明**:
- 优化 `handleQuery` 方法,确保基本搜索时只保留检索栏的4个条件和部门树选择
- 清除高级查询产生的额外参数,避免参数污染
**具体变更**:
```javascript
// 修改前
const handleQuery = () => {
queryParams.pageNum = 1;
getList();
};
// 修改后
const handleQuery = () => {
// 保留基本检索条件和部门选择
const basicSearchParams = {
pageNum: 1,
pageSize: queryParams.pageSize,
studentNo: queryParams.studentNo || '',
name: queryParams.name || '',
phone: queryParams.phone || '',
studentStatus: queryParams.studentStatus || [],
deptIds: queryParams.deptIds || []
};
// 清空 queryParams 对象的所有属性
Object.keys(queryParams).forEach((key) => {
delete queryParams[key];
});
// 重新设置基本检索参数
Object.assign(queryParams, basicSearchParams);
getList();
};
```
**影响范围**:
- ✅ 基本搜索功能:只使用检索栏的4个条件进行查询
- ✅ 部门树选择:保留左侧部门树的选择状态
- ✅ 高级查询功能:不影响高级查询的独立功能
- ✅ 分页功能:保持正常的分页逻辑
**测试验证**:
- [x] 基本搜索按钮点击后只传递基本参数
- [x] 部门树选择状态正常保留
- [x] 高级查询后再使用基本搜索,额外参数被正确清除
---
+82 -3
View File
@@ -296,6 +296,82 @@
#### 响应数据
返回Excel文件流
### 2.8.1 高级检索导出学生信息
- **接口路径**: POST `/studentMsg/studentMsg/advancedSearchExport`
- **权限标识**: `studentMsg:studentMsg:export`
- **功能描述**: 根据高级检索条件导出学生信息列表,支持多维度复合查询条件
- **版本**: 1.2.1 (2025-01-07修复MapStruct转换错误)
- **修复**: 解决 `XgStudentMsgVo` 到 `XgStudentMsgExportVo` 转换器缺失问题
#### 请求参数
支持以下高级检索条件:
**基础信息检索**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| studentNo | string | 否 | 学号(模糊查询) |
| name | string | 否 | 姓名(模糊查询) |
| idCard | string | 否 | 身份证号(模糊查询) |
| phone | string | 否 | 手机号码(模糊查询) |
| email | string | 否 | 邮箱(模糊查询) |
| gender | array | 否 | 性别数组:0-男,1-女 |
| nationality | array | 否 | 民族数组 |
| politicalStatus | array | 否 | 政治面貌数组 |
| birthDateStart | string | 否 | 出生日期开始:yyyy-MM-dd |
| birthDateEnd | string | 否 | 出生日期结束:yyyy-MM-dd |
**学籍信息检索**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| studentStatus | array | 否 | 学籍状态数组:1-在籍,2-休学,3-复学,4-退学,5-毕业 |
| enrollmentYearStart | integer | 否 | 入学年份开始 |
| enrollmentYearEnd | integer | 否 | 入学年份结束 |
| admissionCategory | array | 否 | 录取类别数组 |
**学院专业班级检索**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| collegeName | string | 否 | 学院名称(模糊查询) |
| majorName | string | 否 | 专业名称(模糊查询) |
| className | string | 否 | 班级名称(模糊查询) |
| grade | array | 否 | 年级数组 |
| counselorName | string | 否 | 辅导员姓名(模糊查询) |
| classTeacherName | string | 否 | 班主任姓名(模糊查询) |
**家庭信息检索**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| fatherName | string | 否 | 父亲姓名(模糊查询) |
| motherName | string | 否 | 母亲姓名(模糊查询) |
| familyEconomicStatus | array | 否 | 家庭经济状况数组 |
| familyIncomeMin | number | 否 | 家庭收入最小值 |
| familyIncomeMax | number | 否 | 家庭收入最大值 |
**特殊身份检索**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| isPoorStudent | array | 否 | 是否贫困生:0-否,1-是 |
| isMinority | array | 否 | 是否少数民族:0-否,1-是 |
| isDisabled | array | 否 | 是否残疾:0-否,1-是 |
| isOrphan | array | 否 | 是否孤儿:0-否,1-是 |
**权限范围**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| deptIds | array | 否 | 部门ID数组,用于权限控制 |
#### 响应数据
返回Excel文件流,包含完整的学生信息数据
#### 修复记录
- **2025-01-07 v1.2.1**: 修复MapStruct转换错误,解决 `XgStudentMsgVo` 到 `XgStudentMsgExportVo` 转换器缺失问题
- **问题**: `MapstructUtils.convert()` 无法找到两个VO类之间的转换器,导致导出功能报错
- **解决**: 在Controller中添加手动转换方法 `convertToExportVo()` 和 `convertToExportVoList()`
- **影响**: 导出功能正常工作,所有字段完整映射
- **2025-01-07 v1.2.0**: 修复分页限制问题,导出时pageSize设置为50000,确保能导出所有符合条件的记录
- **问题**: 之前由于BO类默认pageSize=10,导致只能导出10条记录
- **解决**: 取消注释Controller中的分页参数设置代码
### 2.9 查询学生个人信息
- **接口路径**: GET `/studentMsg/studentMsg/personalInfo`
- **权限标识**: `studentMsg:studentMsg:query`
@@ -540,7 +616,10 @@ updateSupport: true
---
**文档更新时间**: 2025-01-27
**文档版本**: 1.1.0
**文档更新时间**: 2025-01-07
**文档版本**: 1.2.0
**维护人员**: Cursor AI
**更新说明**: 新增学生信息导入功能,完善学生信息管理API文档
**更新说明**:
- 新增高级检索导出接口文档
- 修复高级检索导出分页限制问题
- 之前版本:新增学生信息导入功能,完善学生信息管理API文档