7.9 KiB
7.9 KiB
审批状态显示问题修复记录
日期: 2025-01-26
操作人员: AI Assistant
模块: 财务项目申报管理 - 审批状态显示修复
📋 问题描述
🚨 用户反馈问题
- 现象: 审批状态列显示数字"1",而不是中文描述"草稿"
- 影响: 用户无法直观了解申报状态,影响用户体验
- 范围: 影响所有财务项目申报记录的状态显示
🔍 问题排查过程
排查步骤
1. 前端代码检查 ✅
- 字典引用:
const { cw_approval_status } = proxy.useDict('cw_approval_status') - 组件使用:
<dict-tag :options="cw_approval_status" :value="scope.row.approvalStatus"/> - 结论: 前端代码正确,问题在于数据层面
2. 数据库数据检查 ❌
-- 排查结果
SELECT approval_status, COUNT(*) as record_count
FROM cw_project_application
GROUP BY approval_status;
-- 结果显示
+-----------------+--------------+
| approval_status | record_count |
+-----------------+--------------+
| 1 | 2 | # ❌ 数字格式
+-----------------+--------------+
3. 字典配置检查 ✅
-- 字典类型存在
SELECT * FROM sys_dict_type WHERE dict_type = 'cw_approval_status';
# 结果:字典类型配置正确
-- 字典数据完整
SELECT dict_sort, dict_label, dict_value FROM sys_dict_data
WHERE dict_type = 'cw_approval_status' ORDER BY dict_sort;
-- 结果显示完整的7个状态映射
+-----------+------------+------------+
| dict_sort | dict_label | dict_value |
+-----------+------------+------------+
| 0 | 草稿 | draft | # ✅ 正确的字典值
| 1 | 已提交 | submitted |
| 2 | 审批中 | approving |
| 3 | 已通过 | approved |
| 4 | 已拒绝 | rejected |
| 5 | 已退回 | returned |
| 6 | 已取消 | cancelled |
+-----------+------------+------------+
根本原因分析
问题根因: 数据格式不匹配
- 数据库存储: 数字格式状态值 (
"1","2","7") - 字典配置: 英文格式字典值 (
"draft","submitted","cancelled") - 匹配失败: 数字
"1"无法匹配字典值"draft",导致显示原始数字
问题来源: 历史代码遗留
- 早期开发使用数字状态码
- 后期改为标准字典值,但历史数据未迁移
- 新的后端代码已修改为使用字典值,但历史数据仍为数字格式
🔧 修复方案实施
修复策略: 数据迁移 + 代码统一
步骤1: 数据安全备份
-- 创建备份表
CREATE TABLE IF NOT EXISTS cw_project_application_backup_20250126 AS
SELECT * FROM cw_project_application
WHERE approval_status IN ('1', '2', '3', '4', '5', '6', '7');
-- 备份结果: 2条记录
步骤2: 状态值映射迁移
-- 执行数据修复
UPDATE cw_project_application
SET approval_status = CASE
WHEN approval_status = '1' THEN 'draft'
WHEN approval_status = '2' THEN 'submitted'
WHEN approval_status = '3' THEN 'approving'
WHEN approval_status = '4' THEN 'approved'
WHEN approval_status = '5' THEN 'rejected'
WHEN approval_status = '6' THEN 'returned'
WHEN approval_status = '7' THEN 'cancelled'
ELSE approval_status
END
WHERE approval_status IN ('1', '2', '3', '4', '5', '6', '7');
状态值映射关系:
| 原数字值 | 新字典值 | 中文显示 | 说明 |
|---|---|---|---|
1 |
draft |
草稿 | 新建申报的初始状态 |
2 |
submitted |
已提交 | 提交待审批状态 |
3 |
approving |
审批中 | 正在审批流程中 |
4 |
approved |
已通过 | 审批通过状态 |
5 |
rejected |
已拒绝 | 审批拒绝状态 |
6 |
returned |
已退回 | 退回修改状态 |
7 |
cancelled |
已取消 | 申报取消状态 |
步骤3: 修复验证
-- 验证修复结果
SELECT approval_status, COUNT(*) as record_count
FROM cw_project_application
GROUP BY approval_status;
-- 修复后结果 ✅
+-----------------+--------------+
| approval_status | record_count |
+-----------------+--------------+
| draft | 2 | # ✅ 字典格式
+-----------------+--------------+
-- 问题数据检查 ✅
SELECT COUNT(*) as problem_count
FROM cw_project_application
WHERE approval_status IN ('1', '2', '3', '4', '5', '6', '7');
-- 结果: 0条问题数据
步骤4: 前端调试清理
<!-- 移除临时调试信息 -->
<template #default="scope">
<dict-tag :options="cw_approval_status" :value="scope.row.approvalStatus"/>
<!-- 已移除调试信息 -->
</template>
✅ 修复效果验证
修复前后对比
修复前 ❌
- 数据库值:
1(数字) - 前端显示:
1(原始数字) - 用户体验: 无法理解状态含义
修复后 ✅
- 数据库值:
draft(字典值) - 前端显示:
草稿(中文描述) - 用户体验: 状态含义清晰直观
功能完整性验证
状态显示测试 ✅
- ✅ 新建申报 → 显示 "草稿"
- ✅ 提交申报 → 显示 "已提交"
- ✅ 审批过程 → 显示对应状态
- ✅ 颜色标识 → 根据字典配置显示颜色
状态流转测试 ✅
- ✅ 草稿 → 已提交 → 审批中 → 已通过
- ✅ 草稿 → 已提交 → 已退回 → 草稿
- ✅ 草稿 → 已取消
- ✅ 各状态对应的操作按钮正确显示
兼容性验证 ✅
- ✅ 新增申报自动使用字典值
- ✅ 现有申报状态正确显示
- ✅ 审批流程状态变更正常
- ✅ 搜索过滤功能正常
🎯 技术价值与改进
用户体验提升
- ✅ 状态可读性: 从数字"1"变为中文"草稿",直观易懂
- ✅ 视觉识别: 支持颜色标识,不同状态一目了然
- ✅ 操作指导: 状态描述帮助用户理解当前阶段和可执行操作
系统健壮性
- ✅ 数据一致性: 所有状态值统一使用标准字典格式
- ✅ 可维护性: 状态描述和颜色配置可通过字典管理调整
- ✅ 扩展性: 新增状态只需在字典中配置,无需修改代码
开发规范化
- ✅ 统一标准: 建立了状态值使用字典的标准规范
- ✅ 数据迁移: 提供了历史数据迁移的标准流程
- ✅ 文档完整: 状态映射关系和修复过程完整记录
📋 后续维护建议
数据质量保障
- 新增数据检查: 确保新增申报使用正确的字典值
- 定期验证: 定期检查是否有异常状态值
- 监控告警: 建立数据质量监控,及时发现问题
开发规范强化
- 代码审查: 状态值设置必须使用字典常量
- 单元测试: 覆盖状态流转的各个场景
- 集成测试: 验证前端显示与后端数据的一致性
用户培训
- 状态说明: 为用户提供各状态含义的说明文档
- 操作指引: 针对不同状态提供相应的操作指导
- FAQ文档: 整理常见状态相关问题的解答
📊 修复记录总结
| 项目 | 修复前 | 修复后 | 说明 |
|---|---|---|---|
| 数据库状态值 | 1 (数字) |
draft (字典值) |
数据格式标准化 |
| 前端显示 | 1 |
草稿 |
用户体验提升 |
| 字典匹配 | ❌ 失败 | ✅ 成功 | 功能正常化 |
| 状态可读性 | ❌ 不直观 | ✅ 清晰易懂 | 可用性提升 |
| 颜色标识 | ❌ 无 | ✅ 有颜色区分 | 视觉体验优化 |
| 数据一致性 | ❌ 不一致 | ✅ 完全一致 | 系统健壮性提升 |
✅ 状态: 审批状态显示问题完全修复
🎯 目标: 提升用户体验,确保状态显示的准确性和可读性
📈 价值: 建立了数据迁移的标准流程,提高了系统的用户友好性
📞 后续支持: 如遇到类似问题,可参考本修复记录进行处理