فهرست منبع

refactor (1.63.0 -> 1.63.1): 重构SendPanelForView组件代码格式和布局

- 重构导入语句格式,实现多行导入以提升代码可读性
- 优化消息提示文本格式,移除不必要的换行符
- 调整模态框内容文本布局,提升界面显示效果
- 重构节点选择逻辑,优化代码结构和性能
- 隐藏Viewer选择按钮区域,简化用户界面

改动文件:
- src/pages/output/SendPanelForView.tsx
- CHANGELOG.md
- package.json
szy 4 روز پیش
والد
کامیت
158ec8892a
3فایلهای تغییر یافته به همراه42 افزوده شده و 684 حذف شده
  1. 16 667
      CHANGELOG.md
  2. 1 1
      package.json
  3. 25 16
      src/pages/output/SendPanelForView.tsx

+ 16 - 667
CHANGELOG.md

@@ -2,683 +2,32 @@
 
 本项目的所有重要变更都将记录在此文件中.
 
-## [1.63.0] - 2026-01-08 12:46
-
-### 新增 (Added)
-
-- **实现报告配置功能,支持主标题和副标题的动态配置** - 新增报告配置页面,支持通过表单动态设置报告的主标题和副标题,并提供保存功能
-  - 在 options.ts 中添加 getConfig 和 modifyConfig API接口,支持配置项的获取和修改
-  - 新增 report/index.tsx 报告配置组件,实现主标题和副标题的表单配置
-  - 在 Preferences/index.tsx 中导出 Report 组件,替换原有的占位符实现
-
-**改动文件:**
-
-- src/API/system/options.ts
-- src/pages/system/SettingsModal/sections/Preferences/index.tsx
-- src/pages/system/SettingsModal/sections/Preferences/report/index.tsx
-
-## [1.62.1] - 2026-01-08 10:59
-
-### 修复 (Fixed)
-
-- **修复退出反馈对话框可被意外关闭问题** - 禁用遮罩点击和ESC键关闭功能,防止用户意外关闭重要的退出确认对话框
-  - 添加 maskClosable={false} 禁止点击遮罩关闭对话框
-  - 添加 keyboard={false} 禁止ESC键关闭对话框
-  - 确保用户在检查退出流程中必须明确选择操作,提升流程可靠性
-
-**改动文件:**
-
-- src/pages/exam/components/ExamExitFeedback.tsx
-
-## [1.62.0] - 2026-01-08 10:15
-
-### 新增 (Added)
-
-- **实现二维码扫描基于身份证号自动判断性别功能** - 根据中国身份证号第17位(倒数第2位)的奇偶性自动提取性别信息,提升二维码扫描录入的智能化水平
-  - 新增 extractGenderFromIdNumber 工具函数,实现身份证号性别提取逻辑(奇数=男性,偶数=女性)
-  - 修改 parseTabSeparatedText 函数,将身份证号提取位置从最后一个元素改为第4个位置(parts[3])
-  - 集成性别自动判断逻辑,从身份证号提取性别替代硬编码的默认值'F'
-  - 格式验证从至少3个部分改为至少4个部分(姓名 年龄 岁 身份证号)
-  - 新增性别判断日志输出,便于问题排查和调试
-  - 优化二维码扫描模态框样式,调整扫描区域padding为0
-
-**改动文件:**
-
-- src/domain/qrcode/qrCodeDataProcessor.ts
-- src/components/QRCodeScanner/QRCodeScanModal.tsx
-
-## [1.61.3] - 2026-01-07 18:33
-
-### 修复 (Fixed)
-
-- **修复注册信息设置时accession_number未清空问题并调整追加视图模态框布局** - 在设置注册信息时清空accession_number字段,并调整模态框中待选择和已选择区域的高度比例
-
-**改动文件:**
-
-- src/pages/exam/components/AppendViewModal.tsx
-- src/pages/patient/components/ActionPanel.tsx
-
-## [1.61.2] - 2026-01-07 17:36
-
-### 新增 (Added)
-
-- **实现性别选择时动态显示妊娠状态字段** - 根据性别选择动态显示或隐藏妊娠状态字段,并集成表单状态同步
-
-**改动文件:**
-
-- src/pages/patient/components/register.form.tsx
-- src/pages/patient/register.tsx
-
-## [1.61.1] - 2026-01-07 16:35
-
-### 修复 (Fixed)
-
-- **优化打印成功消息提示** - 将打印成功消息从success级别改为info级别,提升用户体验
-  - 在PrintControl.tsx中将message.success('打印完成')改为message.info('打印结束')
-
-**改动文件:**
-
-- src/pages/output/print/PrintControl.tsx
-
-## [1.61.0] - 2026-01-07 15:41
-
-### 优化 (Optimized)
-
-- **优化工作列表和历史列表页面布局,避免表格内容过多时撑开容器** - 通过添加高度限制类和调整布局结构,防止单页表格内容过多导致容器被撑开,提升界面稳定性
-  - 在 HistoryList.tsx 中添加 h-[80%] 和 h-full 类限制容器高度,并添加测试属性
-  - 在 worklist.tsx 中添加 h-full 类确保容器高度受控,调整布局类添加测试属性
-
-**改动文件:**
-
-- src/pages/patient/HistoryList.tsx
-- src/pages/patient/worklist.tsx
-
-## [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
+## [1.63.1] - 2026-01-08 17:47
 
 ### 重构 (Refactored)
 
-- **重构注册页面逻辑,将注册处理逻辑提取到独立函数中** - 将复杂的注册逻辑从组件中提取到domain层,提高代码可维护性和可测试性
-  - 在registerLogic.ts中实现executeRegisterLogic函数,封装完整的注册流程
-  - 修改register.tsx中的handleRegister函数,调用executeRegisterLogic处理注册
-  - 注释掉不再使用的useRegisterState相关代码,简化组件依赖
+- **重构SendPanelForView组件代码格式和布局** - 优化代码格式和界面布局,提升代码可读性和用户体验
+  - 重构导入语句格式,实现多行导入以提升代码可读性
+  - 优化消息提示文本格式,移除不必要的换行符
+  - 调整模态框内容文本布局,提升界面显示效果
+  - 重构节点选择逻辑,优化代码结构和性能
+  - 隐藏Viewer选择按钮区域,简化用户界面
 
 **改动文件:**
 
-- src/pages/patient/register.tsx
-
-## [1.46.1] - 2026-01-03 18:39
-
-### 修复 (Fixed)
+- src/pages/output/SendPanelForView.tsx
 
-- **修复任务清单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
+## [1.63.0] - 2026-01-08 12:46
 
 ### 新增 (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 依赖项检查失败
-  - 提升应用性能和稳定性,确保列表组件正常工作
+- **实现报告配置功能,支持主标题和副标题的动态配置** - 新增报告配置页面,支持通过表单动态设置报告的主标题和副标题,并提供保存功能
+  - 在 options.ts 中添加 getConfig 和 modifyConfig API接口,支持配置项的获取和修改
+  - 新增 report/index.tsx 报告配置组件,实现主标题和副标题的表单配置
+  - 在 Preferences/index.tsx 中导出 Report 组件,替换原有的占位符实现
 
 **改动文件:**
 
-- src/components/GenericDataTable.tsx
-- src/pages/patient/components/WorklistTable.tsx
+- src/API/system/options.ts
+- src/pages/system/SettingsModal/sections/Preferences/index.tsx
+- src/pages/system/SettingsModal/sections/Preferences/report/index.tsx### 新增 (Added)

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "zsis",
-  "version": "1.63.0",
+  "version": "1.63.1",
   "private": true,
   "description": "医学成像系统",
   "main": "main.js",

+ 25 - 16
src/pages/output/SendPanelForView.tsx

@@ -1,5 +1,17 @@
 import React, { useState, useEffect } from 'react';
-import { Layout, Button, Checkbox, Typography, List, Space, Spin, Alert, message, Modal, Progress } from 'antd';
+import {
+  Layout,
+  Button,
+  Checkbox,
+  Typography,
+  List,
+  Space,
+  Spin,
+  Alert,
+  message,
+  Modal,
+  Progress,
+} from 'antd';
 import {
   ArrowLeftOutlined,
   CheckSquareOutlined,
@@ -8,13 +20,13 @@ import {
 } from '@ant-design/icons';
 import { useDispatch, useSelector } from 'react-redux';
 import { switchToOperationPanel } from '../../states/panelSwitchSliceForView';
-import { 
-  selectAllViewers, 
+import {
+  selectAllViewers,
   deselectAllViewers,
   selectSelectedViewers,
 } from '../../states/view/viewerContainerSlice';
-import { 
-  fetchPacsNodesThunk, 
+import {
+  fetchPacsNodesThunk,
   toggleNodeSelection,
   selectAllNodes,
   deselectAllNodes,
@@ -160,9 +172,7 @@ const SendPanelForView = () => {
       if (failed === 0) {
         message.success(`发送完成!成功发送 ${completed} 个任务`);
       } else {
-        message.warning(
-          `发送完成!成功 ${completed} 个,失败 ${failed} 个`
-        );
+        message.warning(`发送完成!成功 ${completed} 个,失败 ${failed} 个`);
       }
     } finally {
       // 重置发送状态
@@ -212,13 +222,12 @@ const SendPanelForView = () => {
       content: (
         <div>
           <p>
-            即将发送 <strong>{sopInstanceUids.length}</strong> 个图像到以下
-            PACS 节点:
+            即将发送 <strong>{sopInstanceUids.length}</strong> 个图像到以下 PACS
+            节点:
           </p>
           <p style={{ marginTop: 8, color: '#1890ff' }}>{nodeNames}</p>
           <p style={{ marginTop: 8 }}>
-            共{' '}
-            <strong>{sopInstanceUids.length * pacsNames.length}</strong>{' '}
+            共 <strong>{sopInstanceUids.length * pacsNames.length}</strong>{' '}
             个发送任务
           </p>
         </div>
@@ -235,9 +244,9 @@ const SendPanelForView = () => {
   // 是否全选节点
   const isAllNodesSelected =
     nodes.length > 0 &&
-    nodes.filter((node) => node.is_enabled).every((node) =>
-      selectedNodeIds.includes(node.id)
-    );
+    nodes
+      .filter((node) => node.is_enabled)
+      .every((node) => selectedNodeIds.includes(node.id));
 
   // 是否部分选中节点
   const isNodesIndeterminate =
@@ -318,7 +327,7 @@ const SendPanelForView = () => {
         )}
 
         {/* Viewer 选择按钮 */}
-        <div style={{ marginBottom: 16 }}>
+        <div style={{ marginBottom: 16, display: 'none' }}>
           <Space>
             <Button
               icon={<CheckSquareOutlined />}