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

3.9 KiB

招生信息管理性别字段和校服尺码修复记录

📋 变更信息

项目 信息
变更日期 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字典的标签值显示为"男/女"而非代码:

-- 修复性别字典数据
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字典数据完整存在:

-- 确保校服尺码字典数据存在并可用
-- 如果不存在则插入
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. 性别显示验证

确认前端身份证号识别逻辑正确:

// 提取性别(奇数为男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字典:

<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脚本修复字典数据:
mysql -u [用户名] -p < backend/script/sql/fix-enrollment-dict-data.sql
  1. 清除前端缓存并重启前端服务:
cd web
npm run dev
  1. 打开招生信息管理页面,验证:
    • 性别显示为"男"/"女"而非"M"/"F"
    • 校服尺码下拉菜单正常显示选项

📊 影响范围

  • 招生信息管理页面
  • 招生信息新增/编辑表单
  • 学生信息查看页面

✅ 测试验证

  • 性别字段在列表和表单中显示为中文"男"/"女"
  • 校服尺码下拉菜单正常显示XS至XXXL的选项
  • 身份证号自动识别性别功能正常工作
  • 已有数据的性别显示正确

📚 参考资料

  • 字典表结构: sys_dict_data, sys_dict_type
  • 前端招生信息管理页: web/src/views/zsjy/enrollment/index.vue
  • 数据库脚本: backend/script/sql/zsjy-enrollment-dict-data.sql