将任务清单(worklist)和历史清单(historylist)页面中的"患者"相关字段名改为"宠物"相关字段名,以适配宠物影像工作站的业务场景。
| 原字段名 | 新字段名 | 字段ID |
|---|---|---|
| 患者ID | 宠物ID | worklistTable.PatientID |
| 患者姓名 | 宠物昵称 | worklistTable.PatientName |
| 患者年龄 | 宠物年龄 | worklistTable.PatientAge |
| 患者性别 | 宠物性别 | worklistTable.PatientSex |
文件路径: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": "宠物性别", // 新增
文件路径: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", // 新增
文件路径:src/pages/patient/components/WorklistTable.tsx
主要改动:
generateColumnsDef 函数,接收 productName 参数productName 选择对应的翻译 keyproductName 参数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]);
修改文件:
src/pages/patient/worklist.tsxsrc/pages/patient/HistoryList.tsx改动内容:
productNameconst productName = useSelector(
(state: RootState) => state.product.productName
);
<WorklistTable
productName={productName} // 新增
// ...其他 props
/>
WorklistTable.tsx 组件同时被任务清单和历史清单页面使用react-intl 的 FormattedMessage 组件修改的文件(共 2 个):
src/assets/i18n/messages/zh.jssrc/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 中添加脚本使用说明
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