zentao-宠物影像工作站-96-字段重命名-患者改为宠物.md 6.5 KB

zentao-宠物影像工作站-96:字段重命名 - 患者改为宠物

📋 Bug 信息

  • Bug 编号:zentao-96
  • Bug 标题:任务清单页和历史清单页的表头字段名调整
  • 修复日期:2025-12-05
  • 修复人员:AI Assistant

🎯 需求描述

将任务清单(worklist)和历史清单(historylist)页面中的"患者"相关字段名改为"宠物"相关字段名,以适配宠物影像工作站的业务场景。

字段映射表

原字段名 新字段名 字段ID
患者ID 宠物ID worklistTable.PatientID
患者姓名 宠物昵称 worklistTable.PatientName
患者年龄 宠物年龄 worklistTable.PatientAge
患者性别 宠物性别 worklistTable.PatientSex

📝 修改详情

1. 中文翻译文件 (zh.js)

文件路径src/assets/i18n/messages/zh.js

修改内容

// 恢复人医翻译 + 新增宠物医专用翻译
"worklistTable.PatientID": "患者ID",
"worklistTable.PatientName": "患者姓名",
"worklistTable.PatientAge": "患者年龄",
"worklistTable.PatientSex": "患者性别",
"animal.worklistTable.PatientID": "宠物ID",        // 新增
"animal.worklistTable.PatientName": "宠物昵称",     // 新增
"animal.worklistTable.PatientAge": "宠物年龄",      // 新增
"animal.worklistTable.PatientSex": "宠物性别",      // 新增

2. 英文翻译文件 (en.js)

文件路径src/assets/i18n/messages/en.js

修改内容

// 恢复人医翻译 + 新增宠物医专用翻译
"worklistTable.PatientID": "Patient ID",
"worklistTable.PatientName": "Patient Name",
"worklistTable.PatientAge": "Patient Age",
"worklistTable.PatientSex": "Patient Sex",
"animal.worklistTable.PatientID": "Pet ID",           // 新增
"animal.worklistTable.PatientName": "Pet Nickname",   // 新增
"animal.worklistTable.PatientAge": "Pet Age",         // 新增
"animal.worklistTable.PatientSex": "Pet Sex",         // 新增

3. WorklistTable 组件改造

文件路径src/pages/patient/components/WorklistTable.tsx

主要改动

  1. 新增 generateColumnsDef 函数,接收 productName 参数
  2. 动态生成列定义,根据 productName 选择对应的翻译 key
  3. 为组件接口新增 productName 参数
  4. 使用 useMemo 根据 productName 生成列定义

代码示例

// 生成列定义的辅助函数
const generateColumnsDef = (productName?: string) => [
  // ...其他列
  {
    title: (
      <FormattedMessage
        id={productName === 'VETDROS' ? 'animal.worklistTable.PatientID' : 'worklistTable.PatientID'}
        defaultMessage={productName === 'VETDROS' ? 'animal.worklistTable.PatientID' : 'worklistTable.PatientID'}
      />
    ),
    dataIndex: 'PatientID',
  },
  // PatientName, PatientAge, PatientSex 同样处理
];

// 组件内部
const columnsDef = useMemo(() => generateColumnsDef(productName), [productName]);

4. 父组件修改

修改文件

  • src/pages/patient/worklist.tsx
  • src/pages/patient/HistoryList.tsx

改动内容

  1. 从 Redux 获取 productName
  2. 传递给 WorklistTable 组件
const productName = useSelector(
  (state: RootState) => state.product.productName
);

<WorklistTable
  productName={productName}  // 新增
  // ...其他 props
/>

🔧 技术实现

架构说明

  1. 组件复用WorklistTable.tsx 组件同时被任务清单和历史清单页面使用
  2. 国际化方案:使用 react-intlFormattedMessage 组件
  3. 影响范围:修改多语言文件后,两个页面会自动同步更新

文件清单

修改的文件(共 2 个):

  1. ✏️ src/assets/i18n/messages/zh.js
  2. ✏️ src/assets/i18n/messages/en.js

相关文件(无需修改):

  • src/pages/patient/worklist.tsx - 任务清单页面
  • src/pages/patient/HistoryList.tsx - 历史清单页面
  • src/pages/patient/components/WorklistTable.tsx - 表格组件(使用 FormattedMessage)

📦 附加工具

多语言文件提取脚本

为便于将多语言文件用于其他用途,创建了可复用的提取脚本:

脚本路径scripts/extract-i18n-json.js

功能:将 .js 格式的多语言文件转换为纯 JSON 格式(移除 export default 和结尾的 ;

使用方法

node scripts/extract-i18n-json.js

输出文件

  • scripts/output/i18n/zh.js - 中文翻译(纯JSON格式,.js扩展名)
  • scripts/output/i18n/en.js - 英文翻译(纯JSON格式,.js扩展名)

文档更新:已在 README.md 中添加脚本使用说明

✅ 测试验证

验证步骤

  1. 启动应用 bash npm run dev:h5 2. 验证中文界面 - 切换到中文语言 - 进入任务清单页面 (worklist) - 检查表头是否显示:宠物ID、宠物昵称、宠物年龄、宠物性别 - 进入历史清单页面 (historylist) - 检查表头是否显示:宠物ID、宠物昵称、宠物年龄、宠物性别 3. 验证英文界面 - 切换到英文语言 - 进入任务清单页面 (worklist) - 检查表头是否显示:Pet ID, Pet Nickname, Pet Age, Pet Sex - 进入历史清单页面 (historylist) - 检查表头是否显示:Pet ID, Pet Nickname, Pet Age, Pet Sex ### 预期结果 - ✅ 任务清单和历史清单的表头字段名同步更新 - ✅ 中文界面显示"宠物"相关字段名 - ✅ 英文界面显示"Pet"相关字段名 - ✅ 其他字段不受影响 ## 📊 影响分析 ### 影响范围 - 前端界面:任务清单、历史清单页面的表头显示 - 用户体验:字段名更贴合宠物医疗业务场景 - 后端接口:无影响(仅修改前端显示文本) - 数据结构:无影响(字段 ID 保持不变) ### 兼容性 - ✅ 向后兼容:字段 ID (PatientID, PatientName 等) 保持不变 - ✅ 数据兼容:数据库字段名不变,仅修改显示文本 - ✅ API 兼容:接口返回的字段名不变 ## 🔗 相关资源 - 多语言配置目录src/assets/i18n/messages/ - 表格组件src/pages/patient/components/WorklistTable.tsx - 任务清单页面src/pages/patient/worklist.tsx - 历史清单页面src/pages/patient/HistoryList.tsx ## 📌 备注 - 本次修改仅涉及多语言翻译文本,不涉及代码逻辑变更 - 修改后的字段名适用于宠物影像工作站业务场景 - 如需恢复为人类患者场景,只需将翻译文本改回即可 --- 修复完成时间:2025-12-05 13:20
    验证状态:✅ 待测试验证