Jelajahi Sumber

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

zlwu 1 tahun lalu
induk
melakukan
6e2b440738

+ 133 - 63
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgBatchServiceImpl.java

@@ -977,6 +977,12 @@ public class XgStudentMsgBatchServiceImpl implements IXgStudentMsgBatchService {
                 return false;
             }
 
+            batchVo = baseMapper.selectVoOne(
+                    Wrappers.<XgStudentMsgBatch>lambdaQuery()
+                            .eq(XgStudentMsgBatch::getBatchId, batchId)
+                            .eq(XgStudentMsgBatch::getId, userId)
+                            .eq(XgStudentMsgBatch::getDeleted, 0));
+
             // 第二步:将 xg_student_msg_batch 的数据更新到 xg_student_msg 表
             // 手动将 XgStudentMsgBatchVo 转换为 XgStudentMsgBo
             org.dromara.xg.domain.bo.XgStudentMsgBo studentMsgBo = new org.dromara.xg.domain.bo.XgStudentMsgBo();
@@ -1169,81 +1175,145 @@ public class XgStudentMsgBatchServiceImpl implements IXgStudentMsgBatchService {
 
             // 比较字段差异
             compareAndAddChange(changedFields, "姓名", "name", originalData.getName(), batchData.getName());
-            compareAndAddChange(changedFields, "英文姓名", "nameEnglish", originalData.getNameEnglish(), batchData.getNameEnglish());
-            compareAndAddChange(changedFields, "曾用名", "formerName", originalData.getFormerName(), batchData.getFormerName());
+            compareAndAddChange(changedFields, "英文姓名", "nameEnglish", originalData.getNameEnglish(),
+                    batchData.getNameEnglish());
+            compareAndAddChange(changedFields, "曾用名", "formerName", originalData.getFormerName(),
+                    batchData.getFormerName());
             compareAndAddChange(changedFields, "性别", "gender", originalData.getGender(), batchData.getGender());
-            compareAndAddChange(changedFields, "出生日期", "birthDate", originalData.getBirthDate(), batchData.getBirthDate());
-            compareAndAddChange(changedFields, "民族", "nationality", originalData.getNationality(), batchData.getNationality());
-            compareAndAddChange(changedFields, "籍贯", "nativePlace", originalData.getNativePlace(), batchData.getNativePlace());
-            compareAndAddChange(changedFields, "政治面貌", "politicalStatus", originalData.getPoliticalStatus(), batchData.getPoliticalStatus());
-            compareAndAddChange(changedFields, "户籍所在地", "hukouLocation", originalData.getHukouLocation(), batchData.getHukouLocation());
-            compareAndAddChange(changedFields, "家庭地址", "homeAddress", originalData.getHomeAddress(), batchData.getHomeAddress());
-            compareAndAddChange(changedFields, "现住址", "currentAddress", originalData.getCurrentAddress(), batchData.getCurrentAddress());
-            compareAndAddChange(changedFields, "邮政编码", "postalCode", originalData.getPostalCode(), batchData.getPostalCode());
+            compareAndAddChange(changedFields, "出生日期", "birthDate", originalData.getBirthDate(),
+                    batchData.getBirthDate());
+            compareAndAddChange(changedFields, "民族", "nationality", originalData.getNationality(),
+                    batchData.getNationality());
+            compareAndAddChange(changedFields, "籍贯", "nativePlace", originalData.getNativePlace(),
+                    batchData.getNativePlace());
+            compareAndAddChange(changedFields, "政治面貌", "politicalStatus", originalData.getPoliticalStatus(),
+                    batchData.getPoliticalStatus());
+            compareAndAddChange(changedFields, "户籍所在地", "hukouLocation", originalData.getHukouLocation(),
+                    batchData.getHukouLocation());
+            compareAndAddChange(changedFields, "家庭地址", "homeAddress", originalData.getHomeAddress(),
+                    batchData.getHomeAddress());
+            compareAndAddChange(changedFields, "现住址", "currentAddress", originalData.getCurrentAddress(),
+                    batchData.getCurrentAddress());
+            compareAndAddChange(changedFields, "邮政编码", "postalCode", originalData.getPostalCode(),
+                    batchData.getPostalCode());
             compareAndAddChange(changedFields, "手机号码", "phone", originalData.getPhone(), batchData.getPhone());
-            compareAndAddChange(changedFields, "是否住校", "isBoarder", originalData.getIsBoarder(), batchData.getIsBoarder());
-            compareAndAddChange(changedFields, "文化程度", "educationLevel", originalData.getEducationLevel(), batchData.getEducationLevel());
-            compareAndAddChange(changedFields, "户口类型", "householdRegisterType", originalData.getHouseholdRegisterType(), batchData.getHouseholdRegisterType());
+            compareAndAddChange(changedFields, "是否住校", "isBoarder", originalData.getIsBoarder(),
+                    batchData.getIsBoarder());
+            compareAndAddChange(changedFields, "文化程度", "educationLevel", originalData.getEducationLevel(),
+                    batchData.getEducationLevel());
+            compareAndAddChange(changedFields, "户口类型", "householdRegisterType", originalData.getHouseholdRegisterType(),
+                    batchData.getHouseholdRegisterType());
             compareAndAddChange(changedFields, "宗教信仰", "religion", originalData.getReligion(), batchData.getReligion());
-            compareAndAddChange(changedFields, "生源地区", "sourceRegion", originalData.getSourceRegion(), batchData.getSourceRegion());
-            compareAndAddChange(changedFields, "毕业院校", "graduateSchool", originalData.getGraduateSchool(), batchData.getGraduateSchool());
+            compareAndAddChange(changedFields, "生源地区", "sourceRegion", originalData.getSourceRegion(),
+                    batchData.getSourceRegion());
+            compareAndAddChange(changedFields, "毕业院校", "graduateSchool", originalData.getGraduateSchool(),
+                    batchData.getGraduateSchool());
             compareAndAddChange(changedFields, "电子邮箱", "email", originalData.getEmail(), batchData.getEmail());
             compareAndAddChange(changedFields, "QQ号码", "qq", originalData.getQq(), batchData.getQq());
             compareAndAddChange(changedFields, "微信号", "wechat", originalData.getWechat(), batchData.getWechat());
-            compareAndAddChange(changedFields, "婚姻状况", "maritalStatus", originalData.getMaritalStatus(), batchData.getMaritalStatus());
-            compareAndAddChange(changedFields, "紧急联系人姓名", "emergencyContactName", originalData.getEmergencyContactName(), batchData.getEmergencyContactName());
-            compareAndAddChange(changedFields, "紧急联系人电话", "emergencyContactPhone", originalData.getEmergencyContactPhone(), batchData.getEmergencyContactPhone());
-            compareAndAddChange(changedFields, "紧急联系人关系", "emergencyContactRelation", originalData.getEmergencyContactRelation(), batchData.getEmergencyContactRelation());
-            compareAndAddChange(changedFields, "是否贫困生", "isPoorStudent", originalData.getIsPoorStudent(), batchData.getIsPoorStudent());
-            compareAndAddChange(changedFields, "是否少数民族", "isMinority", originalData.getIsMinority(), batchData.getIsMinority());
-            compareAndAddChange(changedFields, "是否残疾", "isDisabled", originalData.getIsDisabled(), batchData.getIsDisabled());
+            compareAndAddChange(changedFields, "婚姻状况", "maritalStatus", originalData.getMaritalStatus(),
+                    batchData.getMaritalStatus());
+            compareAndAddChange(changedFields, "紧急联系人姓名", "emergencyContactName",
+                    originalData.getEmergencyContactName(), batchData.getEmergencyContactName());
+            compareAndAddChange(changedFields, "紧急联系人电话", "emergencyContactPhone",
+                    originalData.getEmergencyContactPhone(), batchData.getEmergencyContactPhone());
+            compareAndAddChange(changedFields, "紧急联系人关系", "emergencyContactRelation",
+                    originalData.getEmergencyContactRelation(), batchData.getEmergencyContactRelation());
+            compareAndAddChange(changedFields, "是否贫困生", "isPoorStudent", originalData.getIsPoorStudent(),
+                    batchData.getIsPoorStudent());
+            compareAndAddChange(changedFields, "是否少数民族", "isMinority", originalData.getIsMinority(),
+                    batchData.getIsMinority());
+            compareAndAddChange(changedFields, "是否残疾", "isDisabled", originalData.getIsDisabled(),
+                    batchData.getIsDisabled());
             compareAndAddChange(changedFields, "是否孤儿", "isOrphan", originalData.getIsOrphan(), batchData.getIsOrphan());
-            compareAndAddChange(changedFields, "是否留守儿童", "isLeftBehindChild", originalData.getIsLeftBehindChild(), batchData.getIsLeftBehindChild());
-            compareAndAddChange(changedFields, "是否独生子女", "isSingleChild", originalData.getIsSingleChild(), batchData.getIsSingleChild());
-            compareAndAddChange(changedFields, "是否低保", "isLowIncome", originalData.getIsLowIncome(), batchData.getIsLowIncome());
+            compareAndAddChange(changedFields, "是否留守儿童", "isLeftBehindChild", originalData.getIsLeftBehindChild(),
+                    batchData.getIsLeftBehindChild());
+            compareAndAddChange(changedFields, "是否独生子女", "isSingleChild", originalData.getIsSingleChild(),
+                    batchData.getIsSingleChild());
+            compareAndAddChange(changedFields, "是否低保", "isLowIncome", originalData.getIsLowIncome(),
+                    batchData.getIsLowIncome());
             compareAndAddChange(changedFields, "是否有助学贷款", "hasLoan", originalData.getHasLoan(), batchData.getHasLoan());
-            compareAndAddChange(changedFields, "助学贷款金额", "loanAmount", originalData.getLoanAmount(), batchData.getLoanAmount());
-            compareAndAddChange(changedFields, "特长爱好", "specialties", originalData.getSpecialties(), batchData.getSpecialties());
+            compareAndAddChange(changedFields, "助学贷款金额", "loanAmount", originalData.getLoanAmount(),
+                    batchData.getLoanAmount());
+            compareAndAddChange(changedFields, "特长爱好", "specialties", originalData.getSpecialties(),
+                    batchData.getSpecialties());
             compareAndAddChange(changedFields, "获奖情况", "awards", originalData.getAwards(), batchData.getAwards());
-            compareAndAddChange(changedFields, "违纪记录", "violations", originalData.getViolations(), batchData.getViolations());
-            compareAndAddChange(changedFields, "社会活动", "socialActivities", originalData.getSocialActivities(), batchData.getSocialActivities());
-            compareAndAddChange(changedFields, "父亲姓名", "fatherName", originalData.getFatherName(), batchData.getFatherName());
-            compareAndAddChange(changedFields, "父亲电话", "fatherPhone", originalData.getFatherPhone(), batchData.getFatherPhone());
-            compareAndAddChange(changedFields, "父亲工作单位", "fatherWorkUnit", originalData.getFatherWorkUnit(), batchData.getFatherWorkUnit());
-            compareAndAddChange(changedFields, "母亲姓名", "motherName", originalData.getMotherName(), batchData.getMotherName());
-            compareAndAddChange(changedFields, "母亲电话", "motherPhone", originalData.getMotherPhone(), batchData.getMotherPhone());
-            compareAndAddChange(changedFields, "母亲工作单位", "motherWorkUnit", originalData.getMotherWorkUnit(), batchData.getMotherWorkUnit());
-            compareAndAddChange(changedFields, "监护人姓名", "guardianName", originalData.getGuardianName(), batchData.getGuardianName());
-            compareAndAddChange(changedFields, "监护人电话", "guardianPhone", originalData.getGuardianPhone(), batchData.getGuardianPhone());
-            compareAndAddChange(changedFields, "监护人关系", "guardianRelation", originalData.getGuardianRelation(), batchData.getGuardianRelation());
-            compareAndAddChange(changedFields, "家庭年收入", "familyIncome", originalData.getFamilyIncome(), batchData.getFamilyIncome());
-            compareAndAddChange(changedFields, "人均收入", "perCapitaIncome", originalData.getPerCapitaIncome(), batchData.getPerCapitaIncome());
-            compareAndAddChange(changedFields, "收入来源", "incomeSource", originalData.getIncomeSource(), batchData.getIncomeSource());
-            compareAndAddChange(changedFields, "家庭经济状况", "familyEconomicStatus", originalData.getFamilyEconomicStatus(), batchData.getFamilyEconomicStatus());
-            compareAndAddChange(changedFields, "家庭成员数量", "familyMembers", originalData.getFamilyMembers(), batchData.getFamilyMembers());
+            compareAndAddChange(changedFields, "违纪记录", "violations", originalData.getViolations(),
+                    batchData.getViolations());
+            compareAndAddChange(changedFields, "社会活动", "socialActivities", originalData.getSocialActivities(),
+                    batchData.getSocialActivities());
+            compareAndAddChange(changedFields, "父亲姓名", "fatherName", originalData.getFatherName(),
+                    batchData.getFatherName());
+            compareAndAddChange(changedFields, "父亲电话", "fatherPhone", originalData.getFatherPhone(),
+                    batchData.getFatherPhone());
+            compareAndAddChange(changedFields, "父亲工作单位", "fatherWorkUnit", originalData.getFatherWorkUnit(),
+                    batchData.getFatherWorkUnit());
+            compareAndAddChange(changedFields, "母亲姓名", "motherName", originalData.getMotherName(),
+                    batchData.getMotherName());
+            compareAndAddChange(changedFields, "母亲电话", "motherPhone", originalData.getMotherPhone(),
+                    batchData.getMotherPhone());
+            compareAndAddChange(changedFields, "母亲工作单位", "motherWorkUnit", originalData.getMotherWorkUnit(),
+                    batchData.getMotherWorkUnit());
+            compareAndAddChange(changedFields, "监护人姓名", "guardianName", originalData.getGuardianName(),
+                    batchData.getGuardianName());
+            compareAndAddChange(changedFields, "监护人电话", "guardianPhone", originalData.getGuardianPhone(),
+                    batchData.getGuardianPhone());
+            compareAndAddChange(changedFields, "监护人关系", "guardianRelation", originalData.getGuardianRelation(),
+                    batchData.getGuardianRelation());
+            compareAndAddChange(changedFields, "家庭年收入", "familyIncome", originalData.getFamilyIncome(),
+                    batchData.getFamilyIncome());
+            compareAndAddChange(changedFields, "人均收入", "perCapitaIncome", originalData.getPerCapitaIncome(),
+                    batchData.getPerCapitaIncome());
+            compareAndAddChange(changedFields, "收入来源", "incomeSource", originalData.getIncomeSource(),
+                    batchData.getIncomeSource());
+            compareAndAddChange(changedFields, "家庭经济状况", "familyEconomicStatus", originalData.getFamilyEconomicStatus(),
+                    batchData.getFamilyEconomicStatus());
+            compareAndAddChange(changedFields, "家庭成员数量", "familyMembers", originalData.getFamilyMembers(),
+                    batchData.getFamilyMembers());
             compareAndAddChange(changedFields, "身高", "height", originalData.getHeight(), batchData.getHeight());
             compareAndAddChange(changedFields, "体重", "weight", originalData.getWeight(), batchData.getWeight());
-            compareAndAddChange(changedFields, "血型", "bloodType", originalData.getBloodType(), batchData.getBloodType());
-            compareAndAddChange(changedFields, "健康状况", "healthStatus", originalData.getHealthStatus(), batchData.getHealthStatus());
-            compareAndAddChange(changedFields, "特殊体质或疾病", "specialCondition", originalData.getSpecialCondition(), batchData.getSpecialCondition());
-            compareAndAddChange(changedFields, "病史", "medicalHistory", originalData.getMedicalHistory(), batchData.getMedicalHistory());
-            compareAndAddChange(changedFields, "过敏史", "allergies", originalData.getAllergies(), batchData.getAllergies());
-            compareAndAddChange(changedFields, "残疾类型", "disabilityType", originalData.getDisabilityType(), batchData.getDisabilityType());
-            compareAndAddChange(changedFields, "残疾等级", "disabilityLevel", originalData.getDisabilityLevel(), batchData.getDisabilityLevel());
-            compareAndAddChange(changedFields, "录取类别", "admissionCategory", originalData.getAdmissionCategory(), batchData.getAdmissionCategory());
-            compareAndAddChange(changedFields, "学籍状态", "studentStatus", originalData.getStudentStatus(), batchData.getStudentStatus());
-            compareAndAddChange(changedFields, "入学年份", "enrollmentYear", originalData.getEnrollmentYear(), batchData.getEnrollmentYear());
-            compareAndAddChange(changedFields, "入学日期", "enrollmentDate", originalData.getEnrollmentDate(), batchData.getEnrollmentDate());
-            compareAndAddChange(changedFields, "银行卡号", "bankCardNo", originalData.getBankCardNo(), batchData.getBankCardNo());
+            compareAndAddChange(changedFields, "血型", "bloodType", originalData.getBloodType(),
+                    batchData.getBloodType());
+            compareAndAddChange(changedFields, "健康状况", "healthStatus", originalData.getHealthStatus(),
+                    batchData.getHealthStatus());
+            compareAndAddChange(changedFields, "特殊体质或疾病", "specialCondition", originalData.getSpecialCondition(),
+                    batchData.getSpecialCondition());
+            compareAndAddChange(changedFields, "病史", "medicalHistory", originalData.getMedicalHistory(),
+                    batchData.getMedicalHistory());
+            compareAndAddChange(changedFields, "过敏史", "allergies", originalData.getAllergies(),
+                    batchData.getAllergies());
+            compareAndAddChange(changedFields, "残疾类型", "disabilityType", originalData.getDisabilityType(),
+                    batchData.getDisabilityType());
+            compareAndAddChange(changedFields, "残疾等级", "disabilityLevel", originalData.getDisabilityLevel(),
+                    batchData.getDisabilityLevel());
+            compareAndAddChange(changedFields, "录取类别", "admissionCategory", originalData.getAdmissionCategory(),
+                    batchData.getAdmissionCategory());
+            compareAndAddChange(changedFields, "学籍状态", "studentStatus", originalData.getStudentStatus(),
+                    batchData.getStudentStatus());
+            compareAndAddChange(changedFields, "入学年份", "enrollmentYear", originalData.getEnrollmentYear(),
+                    batchData.getEnrollmentYear());
+            compareAndAddChange(changedFields, "入学日期", "enrollmentDate", originalData.getEnrollmentDate(),
+                    batchData.getEnrollmentDate());
+            compareAndAddChange(changedFields, "银行卡号", "bankCardNo", originalData.getBankCardNo(),
+                    batchData.getBankCardNo());
             compareAndAddChange(changedFields, "开户银行", "bankName", originalData.getBankName(), batchData.getBankName());
-            compareAndAddChange(changedFields, "开户支行", "bankBranch", originalData.getBankBranch(), batchData.getBankBranch());
-            compareAndAddChange(changedFields, "持卡人姓名", "cardHolderName", originalData.getCardHolderName(), batchData.getCardHolderName());
-            compareAndAddChange(changedFields, "扩展字段1", "extField1", originalData.getExtField1(), batchData.getExtField1());
-            compareAndAddChange(changedFields, "扩展字段2", "extField2", originalData.getExtField2(), batchData.getExtField2());
-            compareAndAddChange(changedFields, "扩展字段3", "extField3", originalData.getExtField3(), batchData.getExtField3());
-            compareAndAddChange(changedFields, "扩展字段4", "extField4", originalData.getExtField4(), batchData.getExtField4());
-            compareAndAddChange(changedFields, "扩展字段5", "extField5", originalData.getExtField5(), batchData.getExtField5());
+            compareAndAddChange(changedFields, "开户支行", "bankBranch", originalData.getBankBranch(),
+                    batchData.getBankBranch());
+            compareAndAddChange(changedFields, "持卡人姓名", "cardHolderName", originalData.getCardHolderName(),
+                    batchData.getCardHolderName());
+            compareAndAddChange(changedFields, "扩展字段1", "extField1", originalData.getExtField1(),
+                    batchData.getExtField1());
+            compareAndAddChange(changedFields, "扩展字段2", "extField2", originalData.getExtField2(),
+                    batchData.getExtField2());
+            compareAndAddChange(changedFields, "扩展字段3", "extField3", originalData.getExtField3(),
+                    batchData.getExtField3());
+            compareAndAddChange(changedFields, "扩展字段4", "extField4", originalData.getExtField4(),
+                    batchData.getExtField4());
+            compareAndAddChange(changedFields, "扩展字段5", "extField5", originalData.getExtField5(),
+                    batchData.getExtField5());
             compareAndAddChange(changedFields, "备注信息", "remark", originalData.getRemark(), batchData.getRemark());
+            compareAndAddChange(changedFields, "培养方式", "trainingType", originalData.getTrainingType(),
+                    batchData.getTrainingType());
 
             result.put("hasOriginalData", true);
             result.put("hasBatchData", true);
@@ -1272,7 +1342,7 @@ public class XgStudentMsgBatchServiceImpl implements IXgStudentMsgBatchService {
      * @param originalValue 原始值
      * @param newValue      新值
      */
-    private void compareAndAddChange(List<Map<String, Object>> changedFields, String fieldLabel, String fieldName, 
+    private void compareAndAddChange(List<Map<String, Object>> changedFields, String fieldLabel, String fieldName,
             Object originalValue, Object newValue) {
         // 处理null值比较
         boolean isChanged = false;

+ 168 - 56
docs/变更管理/code-adjust-record-2025-01-27-wuzilong.md

@@ -1,58 +1,170 @@
 # 代码调整记录 - 2025-01-27
 
-## 修改时间
-2025-01-27 10:30:00
-
-## 修改人员
-wuzilong
-
-## 修改内容
-
-### 1. 学生信息完善页面 - 信息完善按钮显示逻辑优化
-
-**文件路径**: `web/src/views/stuMsgSupply/index.vue`
-
-**修改内容**:
-- 为信息完善按钮添加了条件显示逻辑
-- 新增 `isBatchValid` 方法用于检查批次有效性
-- 按钮只在以下条件同时满足时才显示:
-  - 批次状态为正常(status === '0')
-  - 当前时间在批次的有效时间范围内(startTime <= now <= endTime)
-
-**具体修改**:
-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. 测试正常状态且在有效时间内的批次 - 按钮应正常显示
-2. 测试停用状态的批次 - 按钮应不显示
-3. 测试已过期的批次 - 按钮应不显示
-4. 测试未开始的批次 - 按钮应不显示
-
-## 备注
-- 该修改为前端显示逻辑优化,不影响后端API
-- 建议后续可以考虑添加提示信息,告知用户为什么按钮不显示 
+**调整时间**: 2025-01-27 14:30:00  
+**调整人员**: wuzilong  
+**调整类型**: 功能优化  
+
+## 📋 调整概述
+
+修复学生信息审核对话框(`web/src/views/stuMsgAudit/stuMsgDialog.vue`)中民族、籍贯、婚姻状况等字段原值显示数字代码而不是汉字的问题。
+
+## 🔧 具体调整内容
+
+### 问题描述
+在学生信息审核对话框中,当民族、籍贯、婚姻状况等字段发生变更时,原值提示显示的是数字代码(如"05"、"310010"、"1"),而不是对应的汉字标签(如"汉族"、"上海市"、"未婚")。
+
+### 解决方案
+1. **新增 `getDictLabel` 方法**: 添加字典值转标签的通用方法
+2. **新增 `getRegionName` 方法**: 添加行政区划代码转名称的方法
+3. **新增多个硬编码选项转换方法**: 添加婚姻状况、是否字段、血型、残疾类型、学历层次、学籍状态等转换方法
+4. **优化 `getFieldOriginalValue` 方法**: 根据字段类型自动转换为对应的字典标签、地区名称或硬编码选项标签
+
+### 代码修改详情
+
+#### 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 || '';
+
+  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 '';
+  };
+
+  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. **向后兼容**: 对于非字典字段和非地区字段保持原有逻辑不变
+
+## 🔄 相关规范
+
+- 遵循前端开发规范中的字典数据处理标准
+- 保持与项目中其他组件的字典处理方式一致
+- 符合用户体验优化原则,提供更友好的信息展示
+
+---
+
+**备注**: 此修复提升了用户界面的友好性,使变更提示信息更加直观易懂。现在所有字典字段、地区字段和硬编码选项字段的原值都将正确显示为汉字标签而不是数字代码。 

+ 3 - 1
web/.eslintrc-auto-import.json

@@ -318,6 +318,8 @@
     "whenever": true,
     "Slot": true,
     "Slots": true,
-    "createRef": true
+    "createRef": true,
+    "ElIcon": true,
+    "ElTooltip": true
   }
 }

+ 1 - 1
web/src/views/stuMsgAudit/stuMsgDetailDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="dialogVisible" :title="dialogTitle" width="1000px" append-to-body @close="handleClose">
+  <el-dialog v-model="dialogVisible" :title="dialogTitle" width="1100px" append-to-body @close="handleClose">
     <el-tabs
       v-model="activeTab"
       type="border-card"

File diff ditekan karena terlalu besar
+ 604 - 64
web/src/views/stuMsgAudit/stuMsgDialog.vue


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini