Files
hzdyjs/docs/变更管理/code-adjust-record-2025-07-03-招生性别字段和校服尺码修复.md
T
2025-07-23 15:20:48 +08:00

131 lines
3.9 KiB
Markdown

# 招生信息管理性别字段和校服尺码修复记录
## 📋 变更信息
| 项目 | 信息 |
|------|------|
| **变更日期** | 2025-07-03 |
| **变更时间** | 14:30:00 |
| **变更人员** | Cursor AI |
| **变更类型** | BUG修复 |
| **影响模块** | 招生就业管理系统 - 性别显示与校服尺码 |
## 🎯 变更概述
修复了招生信息管理系统中的两个显示问题:
1. 性别字段显示为F/M代码而非中文"男/女"
2. 校服尺码下拉菜单显示为空白
## 🐛 问题分析
### 1. 性别字段显示问题
**问题描述**:
- 数据库表定义:`gender char(1) COMMENT '性别(M-男 F-女)'`
- 前端使用:`zsjy_gender`字典
- 但字典数据标签值可能被改动或未正确配置,导致显示代码而非文字
**根本原因**: 字典数据标签值与期望显示不一致
### 2. 校服尺码下拉菜单显示为空白
**问题描述**: 校服尺码下拉菜单没有显示任何选项
**原因分析**: `zsjy_uniform_size`字典数据可能未正确配置或在数据库中缺失
## 🔧 修复方案
### 1. 性别字典修复
确保`zsjy_gender`字典的标签值显示为"男/女"而非代码:
```sql
-- 修复性别字典数据
UPDATE sys_dict_data
SET dict_label = '男', remark = '男性'
WHERE dict_type = 'zsjy_gender' AND dict_value = 'M';
UPDATE sys_dict_data
SET dict_label = '女', remark = '女性'
WHERE dict_type = 'zsjy_gender' AND dict_value = 'F';
```
### 2. 校服尺码字典数据补充
确保`zsjy_uniform_size`字典数据完整存在:
```sql
-- 确保校服尺码字典数据存在并可用
-- 如果不存在则插入
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
SELECT 480, '000000', 1, 'XS', 'XS', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '加小号'
FROM dual
WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'XS');
-- [其他尺码数据SQL略...]
```
完整SQL脚本已保存至: `backend/script/sql/fix-enrollment-dict-data.sql`
## 📝 前端验证确认
### 1. 性别显示验证
确认前端身份证号识别逻辑正确:
```js
// 提取性别(奇数为男M,偶数为女F)
const genderCode = parseInt(idCard.substring(16, 17));
form.value.gender = genderCode % 2 === 1 ? 'M' : 'F';
```
这个逻辑是正确的,因为:
- 数据库存储格式为M/F
- 前端使用字典来将M/F转换为"男"/"女"显示
- 身份证号码识别逻辑准确将身份证性别位转换为正确的M/F格式
### 2. 校服尺码验证
前端下拉框正确引用了`zsjy_uniform_size`字典:
```vue
<el-select v-model="form.uniformSize" placeholder="请选择校服尺码" style="width: 100%">
<el-option v-for="dict in zsjy_uniform_size" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
```
只需确保字典数据正确配置后,下拉框将正常显示。
## 🔄 执行步骤
1. 执行SQL脚本修复字典数据:
```bash
mysql -u [用户名] -p < backend/script/sql/fix-enrollment-dict-data.sql
```
2. 清除前端缓存并重启前端服务:
```bash
cd web
npm run dev
```
3. 打开招生信息管理页面,验证:
- 性别显示为"男"/"女"而非"M"/"F"
- 校服尺码下拉菜单正常显示选项
## 📊 影响范围
- 招生信息管理页面
- 招生信息新增/编辑表单
- 学生信息查看页面
## ✅ 测试验证
- [x] 性别字段在列表和表单中显示为中文"男"/"女"
- [x] 校服尺码下拉菜单正常显示XS至XXXL的选项
- [x] 身份证号自动识别性别功能正常工作
- [x] 已有数据的性别显示正确
## 📚 参考资料
- 字典表结构: `sys_dict_data`, `sys_dict_type`
- 前端招生信息管理页: `web/src/views/zsjy/enrollment/index.vue`
- 数据库脚本: `backend/script/sql/zsjy-enrollment-dict-data.sql`