# 变更日志 (Changelog) 本项目的所有重要变更都将记录在此文件中. ## [1.60.0] - 2026-01-07 15:20 ### 新增 (Added) - **实现检查退出反馈组件多语言支持** - 为 ExamExitFeedback 组件添加完整的多语言支持,包括按钮文本和默认标题/消息内容 - 在多语言文件中添加检查退出反馈相关的翻译键 - 修改 ExamExitFeedback 组件使用 FormattedMessage 显示按钮文本 - 实现默认标题和消息内容的动态多语言支持,保持组件接口的向后兼容性 **改动文件:** - src/assets/i18n/messages/zh.js - src/assets/i18n/messages/en.js - src/pages/exam/components/ExamExitFeedback.tsx ## [1.59.1] - 2026-01-07 14:57 ### 修复 (Fixed) - **修复 bug 179 - 在历史列表页面添加报告按钮条件显示** - 在 ActionPanel.tsx 中为报告按钮添加 currentKey === 'historylist' 条件显示 **改动文件:** - src/pages/patient/components/ActionPanel.tsx ## [1.59.0] - 2026-01-07 14:44 ### 新增 (Added) - **实现图像处理页面退出反馈功能** - 在图像处理页面添加退出检查反馈模态框,支持继续、保存、取消操作,并扩展业务流程中间件逻辑处理离开处理流程的判断 **改动文件:** - src/states/businessFlowMiddlewareLogic.ts - src/pages/view/ImageProcessingPageLarge.tsx ## [1.58.0] - 2026-01-07 13:52 ### 新增 (Added) - **实现Reset Cursor功能,停用所有图像处理工具** - 在ViewerContainer中添加Reset Cursor case实现停用所有工具,在FunctionArea中从未实现列表移除 - 添加Reset Cursor处理逻辑,停用所有选中的viewport工具 - 在未实现功能列表中移除Reset Cursor,支持功能激活 **改动文件:** - src/pages/view/components/FunctionArea.tsx - src/pages/view/components/ViewerContainer.tsx ## [1.57.6] - 2026-01-07 13:31 ### 修复 (Fixed) - **修复 bug 199 - 添加离开图像处理流程时的清理逻辑** - 在业务流程中间件中添加离开process流程的判断和清理机制,再次进入处理时单分格 - 添加 resetViewerContainer 的导入和调用,重置viewer容器状态 - 新增 isLeavingProcess 函数用于判断离开process的条件 - 确保离开图像处理时正确清理相关状态,避免状态残留问题 **改动文件:** - src/states/businessFlowMiddlewareLogic.ts ## [1.57.5] - 2026-01-07 13:03 ### 修复 (Fixed) - **修复组件渲染黑屏问题** - 提取useToken钩子调用避免渲染时钩子调用数量不一致导致的黑屏问题 - 在ActionPanel和ImageStateControl组件中提取useToken钩子调用,确保钩子调用顺序稳定 **改动文件:** - src/pages/patient/components/ActionPanel.tsx - src/pages/view/components/ImageStateControl.tsx ## [1.57.4] - 2026-01-07 11:14 ### 修复 (Fixed) - **修复图像状态控制组件图标样式问题** - 导入 antd 主题相关模块,使用 useToken 钩子获取主题颜色,为图标添加字体大小和主题颜色样式 **改动文件:** - src/pages/view/components/ImageStateControl.tsx - package.json ## [1.57.3] - 2026-01-07 10:50 ### 修复 (Fixed) - **修复bug 199 - 修正功能区域布局按钮的action值** - 将2x2 Layout按钮的action改为2x1 Layout,将4x4 Layout按钮的action改为2x2 Layout **改动文件:** - src/pages/view/components/FunctionArea.tsx ## [1.57.2] - 2026-01-07 10:24 ### 优化 (Optimized) - **优化登录初始化流程,避免重复请求后端** - 通过函数引用稳定性和状态跟踪减少不必要的后端请求 - 在 AppInitializer 中使用 useRef 跟踪 userInfo 变化,防止不必要的重新初始化 - 在 Index 页面使用 useCallback 优化 handleInitialized 回调函数 - 添加调试日志用于监控组件渲染和状态变化 - 通过函数引用稳定性优化,减少子组件不必要的重渲染 **改动文件:** - src/pages/index/AppInitializer.tsx - src/pages/index/index.tsx ## [1.57.1] - 2026-01-06 19:45 ### 修复 (Fixed) - **优化报告下载错误处理机制** - 在 downloadReportXlsx 函数中添加 try-catch 错误捕获逻辑 - 增加详细的错误日志记录,便于问题排查 - 提供用户友好的中文错误提示信息 **改动文件:** - src/API/report/ReportActions.ts ## [1.57.0] - 2026-01-06 19:07 ### 新增 (Added) - **添加采集失败错误信息传递功能** - 在采集失败时传递错误信息到 Redux 状态 - 在 GeneratorMonitorState 接口中添加 errorMessage 字段 - 在 ACQUISITION_FAILURE 事件中传递错误信息 - 更新 mqttService.ts 以传递 message.message **改动文件:** - src/states/exam/generatorMonitorSlice.ts - src/domain/mqttService.ts ## [1.56.0] - 2026-01-06 18:58 ### 新增 (Added) - **添加采集失败时的异常提示弹框** - 当采集状态为异常时弹出确认弹框,提示用户采集失败并提供确定按钮 - 在 AcquisitionTracer 组件中添加状态管理和弹框显示逻辑 - 当 acquisitionState 为 3 时显示异常进度条和提示文本 - 添加确定按钮关闭弹框,提升用户体验 - 修复 MQTT 消息处理中的 ACQUISITION_STARTED 触发逻辑,避免重复发射 **改动文件:** - src/pages/exam/components/acquisitionTracer.tsx - src/domain/mqttService.ts - src/domain/mqttServiceForDevice.ts ## [1.55.0] - 2026-01-06 16:56 ### 新增 (Added) - **实现诊断报告科室管理功能** - 增强诊断报告表单,添加科室选择和管理功能,提升用户体验 - 在 BaseInfo 和 AnimalBaseInfo 组件中集成科室选择下拉框,支持动态数据加载 - 优化 DepartmentModal 组件,添加防重复提交策略,提高表单安全性 - 重构组件结构,移除未使用导入,改进代码格式和可读性 - 新增科室管理相关的中英文翻译,支持国际化显示 **改动文件:** - scripts/output/i18n/en.js - scripts/output/i18n/zh.js - src/pages/patient/DiagnosticReport/components/AnimalBaseInfo.tsx - src/pages/patient/DiagnosticReport/components/BaseInfo.tsx - src/pages/patient/DiagnosticReport/components/DepartmentModal.tsx ## [1.54.0] - 2026-01-06 16:57 ### 新增 (Added) - **实现急诊按钮多语言支持** - 将硬编码的急诊标签替换为 FormattedMessage 组件,实现国际化支持 **改动文件:** - src/layouts/BusinessZone.tsx ## [1.53.2] - 2026-01-06 16:17 ### 修复 (Fixed) - **优化关于系统页面显示版本信息** - 增强系统信息展示,添加服务器版本显示功能 - 在 AboutSystem 组件中集成版本更新状态,显示最新的服务器版本信息 - 优化设置模态框代码格式,提高代码可读性和一致性 - 改进本地存储操作的代码布局,提升代码维护性 **改动文件:** - src/pages/system/SettingsModal/SettingsModal.tsx - src/pages/system/SettingsModal/sections/SystemHome/AboutSystem.tsx ## [1.53.1] - 2026-01-06 14:19 ### 修复 (Fixed) - **修复反色对比模态框中反色应用时机问题** - 重构反色应用逻辑,确保在图像栈设置成功后才应用反色,避免时机问题 - 重构 InvertContrastModal 组件,移除基于 setTimeout 的反色应用逻辑 - 添加 applyInvertContrast 函数,实现更可靠的反色应用 - 在 StackViewer 组件中添加 onSetStackComplete 回调,确保图像栈设置成功后才应用反色 - 扩展 safeSetStack 函数,支持开始和完成回调,提高异步操作的可观察性 **改动文件:** - src/pages/view/components/InvertContrastModal.tsx - src/pages/view/components/viewers/stack.image.viewer.tsx ## [1.53.0] - 2026-01-06 14:03 ### 修复 (Fixed) - **优化网络设置IP配置功能** - 重构IP设置组件,使用真实网络API替代模拟数据,提升功能完整性和用户体验 - 在 ip.tsx 中移除硬编码的模拟网络数据,实现异步网络信息获取 - 添加 ServerConfig 类型约束,提高代码类型安全性 - 改进网络接口列表渲染逻辑,过滤无效IP地址 - 优化错误处理和API响应验证,确保数据获取的可靠性 **改动文件:** - .vscode/launch.json - src/pages/system/SettingsModal/sections/Network/ip.tsx ## [1.52.0] - 2026-01-06 13:14 ### 新增 (Added) - **实现图像加载进度指示器功能** - 为图像加载过程添加进度条和遮罩层,提升用户体验 - 在 StackViewer 中集成图像加载进度条,支持准备和加载阶段的实时进度显示 - 在 OperationPanel 中添加全局加载遮罩层,防止用户在加载期间进行其他操作 - 新增 imageLoadingSlice 状态管理模块,实现多视口加载状态的集中管理 - 在 Redux store 中注册 imageLoading reducer,支持异步加载状态的统一处理 **改动文件:** - src/pages/view/components/OperationPanel.tsx - src/pages/view/components/viewers/stack.image.viewer.tsx - src/states/store.ts - src/states/view/imageLoadingSlice.ts ## [1.51.2] - 2026-01-06 11:25 ## [1.51.0] - 2026-01-06 11:25 ### 重构 (Refactored) - **重构诊断报告申请科室模态框多语言支持** - 为 DepartmentModal 组件实现完整的多语言国际化支持 - 在 DepartmentModal.tsx 中集成 react-intl,替换所有硬编码文本为多语言键 - 移除未使用的导入和代码,优化组件结构和可读性 - 添加 getDepartmentData 函数,优化数据获取逻辑 - 改进表单提交成功后的用户反馈,自动刷新数据并关闭模态框 - 在 zh.js 中添加申请科室管理相关的中文翻译键 - 在 en.js 中添加申请科室管理相关的英文翻译键 - 支持标题、按钮文本、提示信息、验证消息的多语言切换 **改动文件:** - src/pages/patient/DiagnosticReport/components/DepartmentModal.tsx - src/assets/i18n/messages/zh.js - src/assets/i18n/messages/en.js ## [1.51.1] - 2026-01-06 10:50 ### 修复 (Fixed) - **修复 bug 180 - 优化日期选择器交互体验,解决联动日历操作不便问题** - 将 RangePicker 替换为独立的日期选择器,解决跨年份选择时需要重复调整日历的用户体验问题 - 移除 RangePicker 组件,替换为两个独立的 DatePicker - 开始时间和结束时间各自独立选择,互不影响 - 添加 disabledDate 逻辑,防止选择无效日期范围 - 开始时间选择器禁用结束时间之后的日期 - 结束时间选择器禁用开始时间之前的日期 **改动文件:** - src/pages/patient/components/SearchPanel.tsx - CHANGELOG.md - package.json ## [1.51.0] - 2026-01-05 21:38 ### 新增 (Added) - **新增 SVG 交互式人体模型组件** - 使用 SVG 技术重构人体部位选择组件,支持点击交互和高亮反馈 - 新增 HumanBodySvg 组件,基于 SVG 实现可交互的人体模型 - 添加 human.svg 人体模型矢量图资源 - 配置 webpack SVGR 支持 VirtualHuman 目录的 SVG 加载 - 在 bodyPositionFilter 中替换为新的 SVG 人体模型组件 - 优化 RegisterAvailableFilterBar 布局样式 **改动文件:** - src/components/HumanBodySvg.tsx - src/assets/imgs/VirtualHuman/human.svg - config/index.ts - src/pages/patient/components/bodyPositionFilter.tsx - src/pages/patient/components/RegisterAvailableFilterBar.tsx ## [1.50.0] - 2026-01-05 19:30 ## [1.49.7] - 2026-01-05 19:30 ### 修复 (Fixed) - **解决 bug 189 - 修复多次选择同一标记不触发事件的问题** - 将 Select 组件的 onChange 改为 onSelect,确保多次选择同一选项时都能触发事件 **改动文件:** - src/pages/view/components/MarkPanel.tsx ## [1.49.6] - 2026-01-05 19:22 ### 修复 (Fixed) - **修复注册成功后未清理已选择视图列表的问题** - 在executeRegisterLogic中添加注册成功后的状态清理逻辑,确保每次注册后可以开始新的流程 **改动文件:** - src/domain/patient/registerLogic.ts - src/pages/patient/register.tsx ## [1.49.5] - 2026-01-05 18:32 ### 修复 (Fixed) - **修复反色对比缩略图列表显示拒绝状态体位问题** - 过滤掉 judged_status 为 'Reject' 的体位,避免在反色对比中显示拒绝的图像 **改动文件:** - src/pages/view/components/InvertContrastThumbnailList.tsx ## [1.49.4] - 2026-01-05 18:19 ### 重构 (Refactored) - **优化反色对比模态框界面** - 移除图像标签显示,简化用户界面 **改动文件:** - src/pages/view/components/InvertContrastModal.tsx ## [1.49.3] - 2026-01-05 14:00 ### 重构 (Refactored) - **重构网络设置模块组件命名** - 重构网络设置相关组件和配置的命名,提升代码可读性和可维护性 - 将 Connection 组件重命名为 TaskNode (管接 → 任务节点) - 将 NetworkPreferences 组件重命名为 ArchiveNode (首选项 → 归档节点) - 将 TagMapping 组件重命名为 PrintNode (标记映射 → 打印节点) - 将 NetworkTest 组件重命名为 MppsNode (测试 → MPPS节点) - 更新配置文件以使用新的组件名称和ID - 删除注释掉的代码,提高代码可维护性 **改动文件:** - src/pages/system/SettingsModal/sections/Network/index.tsx - src/pages/system/SettingsModal/config.tsx ## [1.49.2] - 2026-01-05 12:45 ### 样式 (Style) - **优化任意角度旋转图标设计** - 简化SVG图标结构,提升视觉呈现和渲染性能 - 将复杂的多路径SVG设计替换为单一路径结构 - 优化图标视觉呈现,提升UI一致性和可读性 - 减少SVG代码复杂度,提高渲染性能 **改动文件:** - src/assets/Icons/base/module-process/theme-default/2x/RotateAnyDegree_normal.svg ## [1.49.1] - 2026-01-05 11:59 ### 样式 (Style) - **优化缩略图列表布局和显示** - 调整响应式网格布局,隐藏状态标识以简化界面 - 在 ThumbnailList 中调整响应式列配置,大屏幕显示更多列(lg从6改为3,xl从4改为2) - 注释掉判断状态徽章(judged_status badge)的显示 - 注释掉曝光状态标签(expose_status tag)的显示 **改动文件:** - src/pages/patient/components/ThumbnailList.tsx ## [1.49.0] - 2026-01-03 20:25 ### 新增 (Added) - **优化分页和缩略图组件UI布局** - 调整组件间距和布局,提升用户界面紧凑性和美观性 - 在 GenericPagination 中将 padding 从 p-4 调整为 p-1 - 在 ThumbnailList 中调整 padding、隐藏标题和描述、减小缩略图高度 **改动文件:** - src/components/GenericPagination.tsx - src/pages/patient/components/ThumbnailList.tsx ## [1.48.0] - 2026-01-03 20:13 ### 新增 (Added) - **实现 AccessionNumber 列默认可见配置** - 在表格列配置中将 AccessionNumber 列设置为默认可见,提升用户查看检查信息的便利性 - 在 LocalColumnConfigAdapter.ts 中将 AccessionNumber 列的 visible 属性从 false 改为 true **改动文件:** - src/config/tableColumns/adapters/LocalColumnConfigAdapter.ts ## [1.47.1] - 2026-01-03 19:52 ### 修复 (Fixed) - **修复注册成功后表单清理逻辑** - 修复注册页面中表单清理时机问题,确保只在注册成功时才清理表单,避免注册失败时表单被意外清空 - 在 register.tsx 中将表单清理逻辑包装在注册成功条件中 **改动文件:** - src/pages/patient/register.tsx ## [1.47.0] - 2026-01-03 19:42 ### 新增 (Added) - **实现患者注册重复检查功能** - 在患者注册时添加重复检查机制,如果发现已有检查记录则弹出确认对话框 - 在workActions.ts中添加检查患者检查的API接口和响应类型 - 在registerLogic.ts中集成重复检查逻辑,注册时检查重复并弹出确认对话框 - 新增duplicateCheck.ts文件,实现患者重复检查的核心逻辑 **改动文件:** - src/API/patient/workActions.ts - src/domain/patient/registerLogic.ts - src/domain/patient/duplicateCheck.ts ## [1.46.2] - 2026-01-03 19:24 ### 重构 (Refactored) - **重构注册页面逻辑,将注册处理逻辑提取到独立函数中** - 将复杂的注册逻辑从组件中提取到domain层,提高代码可维护性和可测试性 - 在registerLogic.ts中实现executeRegisterLogic函数,封装完整的注册流程 - 修改register.tsx中的handleRegister函数,调用executeRegisterLogic处理注册 - 注释掉不再使用的useRegisterState相关代码,简化组件依赖 **改动文件:** - src/pages/patient/register.tsx ## [1.46.1] - 2026-01-03 18:39 ### 修复 (Fixed) - **修复任务清单process按钮可用性逻辑并添加新按钮权限** - 修复worklist和historylist页面中process按钮的可用性判断逻辑,确保只有选中且有图像时才允许进入处理,同时添加patient_management和emergency按钮的权限配置 - 在BtnKey类型中添加patient_management和emergency按钮键 - 在所有页面权限配置中添加这两个按钮的权限设置 - 在动态填充逻辑中包含新按钮的权限配置 - 修复worklist/historylist页面process按钮逻辑:在任务清单中,无选中或者选中无曝光时,不可进入处理 **改动文件:** - src/domain/permissionMap.ts ## [1.46.0] - 2026-01-03 18:26 ### 新增 (Added) - **实现任意角度旋转工具的状态管理** - 将"Rotate Any Angle"工具加入状态管理按钮系统 - 在functionAreaSlice中将"Rotate Any Angle"添加到互斥工具列表 - 在stack.image.viewer中添加activateRotateAnyAngle和deactivateRotateAnyAngle函数 - 在ViewerContainer中添加工具激活/停用处理逻辑 - 在FunctionArea中已包含"Rotate Any Angle"在状态按钮列表中 **改动文件:** - src/states/view/functionAreaSlice.ts - src/pages/view/components/viewers/stack.image.viewer.tsx - src/pages/view/components/ViewerContainer.tsx - src/pages/view/components/FunctionArea.tsx ## [1.45.0] - 2026-01-03 17:57 ### 新增 (Added) - **实现工作清单表格状态字段多语言化** - 为 StudyLock 和 StudyStatus 字段添加多语言支持 - 在翻译文件中添加 StudyLock 状态翻译键 (unlocked/locked) - 在翻译文件中添加 StudyStatus 状态翻译键 (arrived/inprogress/completed) - 在 WorklistTable 组件中为两个字段添加 render 函数,实现多语言状态显示 - 支持中英文状态文本自动切换,提升国际化体验 **改动文件:** - src/assets/i18n/messages/zh.js - src/assets/i18n/messages/en.js - src/pages/patient/components/WorklistTable.tsx ## [1.44.2] - 2026-01-03 17:40 ### 修复 (Fixed) - **修复bug 188 - HistoryList页面缩略图区域样式问题** - 修复缩略图区域的样式配置,确保正确显示和滚动 **改动文件:** - src/pages/patient/HistoryList.tsx ## [1.44.1] - 2026-01-03 17:32 ### 修复 (Fixed) - 注册页面不能再次扫码录入的问题,修复了扫码页面重新扫码失败的问题 - **修复二维码扫描模态框稳定性问题** - 重构扫描器实例管理,每次打开模态框新建实例,关闭时正确清理,避免重复扫描和实例冲突 **改动文件:** - src/components/QRCodeScanner/QRCodeScanModal.tsx ## [1.44.0] - 2026-01-03 16:40 ### 新增 (Added) - **实现图像查看器工具互斥管理系统** - 重构工具管理架构,支持Zoom和Pan工具的互斥使用 - 在FunctionArea组件中实现有状态工具按钮的切换逻辑 - 在ViewerContainer中添加工具激活/停用action处理 - 在stack.image.viewer中实现工具函数的精确控制 - 在functionAreaSlice中添加互斥工具管理机制 **改动文件:** - src/pages/view/components/FunctionArea.tsx - src/pages/view/components/ViewerContainer.tsx - src/pages/view/components/viewers/stack.image.viewer.tsx - src/states/view/functionAreaSlice.ts ## [1.43.1] - 2026-01-03 16:24 ### 修复 (Fixed) - **修复登录页面图片预览问题** - 禁用图片预览功能,避免用户交互问题 **改动文件:** - src/pages/security/Login.tsx ## [1.43.0] - 2026-01-03 16:16 ### 新增 (Added) - **实现自定义标记保存功能** - 修复标记数据无法持久化问题 - 在 API/mark.ts 中新增标记相关API接口,支持获取、新建、删除标记 - 在 states/view/markPanelSlice.ts 中重构状态管理,支持异步API调用和错误处理 - 在 pages/view/components/MarkPanel.tsx 中更新组件逻辑,实现标记的自动保存和加载 **改动文件:** - src/API/mark.ts - src/states/view/markPanelSlice.ts - src/pages/view/components/MarkPanel.tsx ## [1.42.3] - 2026-01-03 13:51 ### 修复 (Fixed) - **修复 Redux state 序列化警告** - 将 Date 类型改为 ISO 字符串存储 - 在 global.d.ts 中将 lastChecked 和 remindLaterTime 类型从 Date 改为 string - 在 versionUpdateSlice.ts 中将 Date 对象转换为 ISO 字符串存储 - 在 VersionUpdateService.ts 中将稍后提醒时间转换为 ISO 字符串 - 在 versionUtils.ts 中适配 string 类型的时间戳比较 - 解决周期性 setQuota 时 Redux 序列化检查产生的控制台警告 **改动文件:** - src/types/global.d.ts - src/states/versionUpdateSlice.ts - src/services/VersionUpdateService.ts - src/utils/versionUtils.ts ## [1.42.2] - 2026-01-03 13:16 ### 修复 (Fixed) - **修复 HistoryList 和 OutputList 无限渲染问题** - 解决因默认参数创建新对象引用导致的无限渲染 - 在 GenericDataTable 中移除 columnConfig 的空数组默认值,添加 undefined 检查 - 在 WorklistTable 中将 exposureProgressMap 默认值从空对象改为 null - 避免每次渲染创建新的对象引用,防止触发 React 依赖项检查失败 - 提升应用性能和稳定性,确保列表组件正常工作 **改动文件:** - src/components/GenericDataTable.tsx - src/pages/patient/components/WorklistTable.tsx