提交学生信息完善审核界面

This commit is contained in:
zlwu committed 2025-07-28 03:15:14 +08:00
1 parent 50ecada4d4
commit 6e2b440738
5 files changed
+1388 -255

No files matched your search

@@ -1,58 +1,170 @@
# 代码调整记录 - 2025-01-27
## 修改时间
2025-01-27 10:30:00
**调整时间**: 2025-01-27 14:30:00
**调整人员**: wuzilong
**调整类型**: 功能优化
## 修改人员
wuzilong
## 📋 调整概述
## 修改内容
修复学生信息审核对话框(`web/src/views/stuMsgAudit/stuMsgDialog.vue`)中民族、籍贯、婚姻状况等字段原值显示数字代码而不是汉字的问题。
### 1. 学生信息完善页面 - 信息完善按钮显示逻辑优化
## 🔧 具体调整内容
**文件路径**: `web/src/views/stuMsgSupply/index.vue`
### 问题描述
在学生信息审核对话框中,当民族、籍贯、婚姻状况等字段发生变更时,原值提示显示的是数字代码(如"05"、"310010"、"1"),而不是对应的汉字标签(如"汉族"、"上海市"、"未婚")。
**修改内容**:
- 为信息完善按钮添加了条件显示逻辑
- 新增 `isBatchValid` 方法用于检查批次有效性
- 按钮只在以下条件同时满足时才显示:
- 批次状态为正常(status === '0')
- 当前时间在批次的有效时间范围内(startTime <= now <= endTime)
### 解决方案
1. **新增 `getDictLabel` 方法**: 添加字典值转标签的通用方法
2. **新增 `getRegionName` 方法**: 添加行政区划代码转名称的方法
3. **新增多个硬编码选项转换方法**: 添加婚姻状况、是否字段、血型、残疾类型、学历层次、学籍状态等转换方法
4. **优化 `getFieldOriginalValue` 方法**: 根据字段类型自动转换为对应的字典标签、地区名称或硬编码选项标签
**具体修改**:
1. 在信息完善按钮的 `el-tooltip` 组件上添加 `v-if="isBatchValid(scope.row)"` 条件
2. 新增 `isBatchValid` 方法:
```javascript
const isBatchValid = (row: StuColBatchVO): boolean => {
// 检查状态是否为正常
if (row.status !== '0') {
return false;
}
// 检查是否在有效时间内
const now = new Date();
const startTime = new Date(row.startTime);
const endTime = new Date(row.endTime);
return now >= startTime && now <= endTime;
};
```
### 代码修改详情
**业务价值**:
- 提升用户体验:避免用户在无效时间段内进行信息完善操作
- 数据一致性:确保只有在有效批次内才能进行信息收集
- 界面清晰:减少用户困惑,明确操作时机
#### 1. 新增字典标签转换方法
```typescript
/** 根据字典值获取标签 */
const getDictLabel = (dictData: any[], value: string | number) => {
if (!dictData || !value) return value || '';
const item = dictData.find((item) => item.value === String(value));
return item ? item.label : value;
};
```
**影响范围**:
- 学生信息完善页面的操作按钮显示逻辑
- 不影响其他功能模块
#### 2. 新增地区名称转换方法
```typescript
/** 根据行政区划代码获取名称 */
const getRegionName = (code: string) => {
if (!code || !regionOptions.value) return code || '';
## 测试建议
1. 测试正常状态且在有效时间内的批次 - 按钮应正常显示
2. 测试停用状态的批次 - 按钮应不显示
3. 测试已过期的批次 - 按钮应不显示
4. 测试未开始的批次 - 按钮应不显示
const findRegionName = (regions: any[], targetCode: string): string => {
for (const region of regions) {
if (region.code === targetCode) {
return region.name;
}
if (region.children && region.children.length > 0) {
const found = findRegionName(region.children, targetCode);
if (found) return found;
}
}
return '';
};
## 备注
- 该修改为前端显示逻辑优化,不影响后端API
- 建议后续可以考虑添加提示信息,告知用户为什么按钮不显示
return findRegionName(regionOptions.value, code) || code;
};
```
#### 3. 优化原值获取方法
```typescript
// 获取字段的原值
const getFieldOriginalValue = (fieldName: string) => {
const changedField = changedFields.value.find((field) => field.fieldName === fieldName);
if (!changedField) return '';
const originalValue = changedField.originalValue;
// 根据字段名判断是否需要转换为字典标签
switch (fieldName) {
case 'nationality':
return getDictLabel(xg_nation.value, originalValue);
case 'gender':
return getDictLabel(sys_user_sex.value, originalValue);
case 'politicalStatus':
return getDictLabel(xg_political_status.value, originalValue);
case 'educationLevel':
return getDictLabel(wenhuachengdu.value, originalValue);
case 'nativePlace':
return getRegionName(originalValue);
case 'sourceRegion':
return getRegionName(originalValue);
case 'maritalStatus':
return getMaritalStatusLabel(originalValue);
case 'isPoorStudent':
case 'isMinority':
case 'isOrphan':
case 'isLeftBehindChild':
case 'isSingleChild':
case 'isLowIncome':
case 'hasLoan':
case 'isDisabled':
case 'hasScholarship':
return getYesNoLabel(originalValue);
case 'bloodType':
return getBloodTypeLabel(originalValue);
case 'disabilityType':
return getDisabilityTypeLabel(originalValue);
case 'academicLevel':
return getAcademicLevelLabel(originalValue);
case 'studentStatus':
return getStudentStatusLabel(originalValue);
default:
return originalValue;
}
};
```
## 🎯 影响范围
### 涉及文件
- `web/src/views/stuMsgAudit/stuMsgDialog.vue`
### 影响字段
- **民族字段** (`nationality`): 原值显示从数字代码转换为汉字标签
- **性别字段** (`gender`): 原值显示从数字代码转换为汉字标签
- **政治面貌字段** (`politicalStatus`): 原值显示从数字代码转换为汉字标签
- **文化程度字段** (`educationLevel`): 原值显示从数字代码转换为汉字标签
- **籍贯字段** (`nativePlace`): 原值显示从行政区划代码转换为地区名称
- **生源地区字段** (`sourceRegion`): 原值显示从行政区划代码转换为地区名称
- **婚姻状况字段** (`maritalStatus`): 原值显示从数字代码转换为汉字标签
- **是否类字段** (`isPoorStudent`, `isMinority`, `isOrphan`, `isLeftBehindChild`, `isSingleChild`, `isLowIncome`, `hasLoan`, `isDisabled`, `hasScholarship`): 原值显示从数字代码转换为"是"/"否"
- **血型字段** (`bloodType`): 原值显示从代码转换为汉字标签
- **残疾类型字段** (`disabilityType`): 原值显示从数字代码转换为汉字标签
- **学历层次字段** (`academicLevel`): 原值显示从数字代码转换为汉字标签
- **学籍状态字段** (`studentStatus`): 原值显示从数字代码转换为汉字标签
## ✅ 验证结果
### 修复前
- 民族原值显示: "05"
- 性别原值显示: "1" 或 "2"
- 政治面貌原值显示: "01" 等数字代码
- 籍贯原值显示: "310010"
- 生源地区原值显示: "110000" 等行政区划代码
- 婚姻状况原值显示: "1" 或 "2" 等数字代码
- 是否类字段原值显示: "0" 或 "1"
- 血型原值显示: "A" 等代码
- 残疾类型原值显示: "1" 等数字代码
- 学历层次原值显示: "1" 等数字代码
- 学籍状态原值显示: "1" 等数字代码
### 修复后
- 民族原值显示: "汉族"
- 性别原值显示: "男" 或 "女"
- 政治面貌原值显示: "群众" 等汉字标签
- 籍贯原值显示: "上海市"
- 生源地区原值显示: "北京市" 等地区名称
- 婚姻状况原值显示: "未婚" 或 "已婚" 等汉字标签
- 是否类字段原值显示: "否" 或 "是"
- 血型原值显示: "A型" 等汉字标签
- 残疾类型原值显示: "视力残疾" 等汉字标签
- 学历层次原值显示: "中级工" 等汉字标签
- 学籍状态原值显示: "在籍" 等汉字标签
## 📝 技术要点
1. **字典数据访问**: 使用 `xg_nation.value` 等响应式字典数据
2. **地区数据访问**: 使用 `regionOptions.value` 响应式地区数据
3. **类型安全**: 确保字典值比较时进行字符串转换
4. **递归查找**: 在地区树形结构中递归查找匹配的代码
5. **扩展性**: 通过 switch 语句便于后续添加其他字典字段和地区字段
6. **向后兼容**: 对于非字典字段和非地区字段保持原有逻辑不变
## 🔄 相关规范
- 遵循前端开发规范中的字典数据处理标准
- 保持与项目中其他组件的字典处理方式一致
- 符合用户体验优化原则,提供更友好的信息展示
---
**备注**: 此修复提升了用户界面的友好性,使变更提示信息更加直观易懂。现在所有字典字段、地区字段和硬编码选项字段的原值都将正确显示为汉字标签而不是数字代码。