CHANGELOG.md 25 KB

变更日志 (Changelog)

本项目的所有重要变更都将记录在此文件中。

[1.18.2] - 2025-12-22 14:07

修复 (Fixed)

  • 从历史清单进入检查后体位列表未更新问题 (src/domain/patient/worklistToExam.ts)
    • 修复从 Worklist/History 双击进入检查界面时,体位列表不更新为最新选中 work 的问题
    • 将体位列表转换和设置(transformWorksToBodyPositionssetBodyPositions)提前到判断曝光状态之前执行
    • 确保无论进入检查界面还是处理界面,体位列表都能被正确更新
    • 添加 await 关键字优化异步 dispatch 调用(clearWorksaddWork)
    • 添加调试日志便于问题排查

核心改进:

  • 数据同步优化:体位列表现在在进入任何界面前都会正确更新
  • 异步流程优化:使用 await 确保状态更新的顺序性
  • 问题排查增强:添加关键步骤的调试日志
  • 代码格式规范:修正 judged_status 字段的空格格式

技术实现:

  • 修改 worklistToExam 函数中的执行顺序
  • 将体位列表更新逻辑从 if (allExposed) 分支移到分支判断之前
  • 添加 await 关键字到 clearWorks()addWork() dispatch 调用
  • 添加 console.log 调试输出跟踪执行流程
  • 格式修正:judged_status:image.judged_statusjudged_status: image.judged_status

改动文件:

  • src/domain/patient/worklistToExam.ts
  • docs/从任务清单进入检查的流程.md (新增)
  • CHANGELOG.md
  • package.json (版本更新: 1.18.1 -> 1.18.2)

[1.18.1] - 2025-12-22 13:00

修复 (Fixed)

  • Original Size 功能在不同体位间表现不一致问题 (src/pages/view/components/viewers/stack.image.viewer.tsx)
    • 重写 setOriginalSize 函数,完全忽略 DICOM spacing,实现真正的像素级 1:1 显示
    • 修复因不同体位 spacing 不同导致的缩放结果差异
    • 第一个体位 spacing=1 时:zoomFactor=0.278,图像正确放大 ✅
    • 第二个体位 spacing=0.14 时:zoomFactor=1.987,图像意外缩小 ❌
    • 改为只基于像素尺寸计算:fitScale = min(canvas宽/图像宽, canvas高/图像高),finalZoom = 1 / fitScale
    • 添加详细的调试日志输出,包括图像尺寸、canvas 尺寸、fitScale 和 finalZoom
    • 确保所有体位都能得到一致的像素级 1:1 显示效果

核心改进:

  • 缩放算法优化:移除对 spacing 的依赖,简化计算逻辑
  • 一致性保证:不同 spacing 的体位现在都能正确放大到原始尺寸
  • 调试增强:详细的日志输出便于问题排查

改动文件:

  • src/pages/view/components/viewers/stack.image.viewer.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.18.0 -> 1.18.1)

[1.18.0] - 2025-12-22 11:27

新增 (Added)

  • 图标主题化和高分辨率升级 - 实现完整的图标系统主题化和资源优化
    • 在 ActionPanel 和 FunctionArea 中统一图标主题支持
    • 添加动态主题色和尺寸控制,使用 Ant Design useToken
    • 创建 SVG 处理脚本,自动替换 fill/stroke 为 currentColor
    • 删除低分辨率 1x PNG/SVG 图标资源,减少项目体积
    • 新增高分辨率 2x 图标目录,提升视觉质量

核心功能实现:

  • 图标主题化: 所有图标支持动态主题色,自动适配深色/浅色主题
  • 样式统一: 使用 fontSize 和 Tailwind CSS 实现灵活的图标尺寸控制
  • SVG 处理: 自动化脚本批量处理 SVG 文件,替换硬编码颜色为 currentColor
  • 资源优化: 清理旧的 1x 图标,升级到 2x 高分辨率图标
  • 代码重构: 简化图标使用方式,移除硬编码的主题和状态属性

技术实现:

  • 在 ActionPanel.tsx 中:
    • 导入 antd theme 和 useToken hook
    • 将图标 theme 属性从 "default" 改为 {themeType}
    • 添加 style={{fontSize: '48px'}} 控制图标大小
    • 添加 className={text-[${useToken().token.colorPrimary}]} 动态主题色
  • 在 FunctionArea.tsx 中:
    • 导入 antd theme 和 useToken hook
    • 重构 getIconStyle 函数,添加 fontSize 基础样式
    • 将激活状态颜色从硬编码改为动态 colorPrimary
    • 修改图标 theme 属性为 "default"
    • 添加动态 className 支持主题色
    • 优化按钮边框和背景色,使用主题色
  • 创建 scripts/replace-svg-fill.js:
    • 递归扫描 SVG 文件
    • 自动替换 fill="#000000" 为 fill="currentColor"
    • 自动替换 stroke="#000000" 为 stroke="currentColor"
    • 统计处理结果和修改文件数量
  • 图标资源升级:
    • 删除 src/assets/Icons/base/module-process/theme-default/1x/ 目录下的所有图标
    • 删除 src/assets/Icons/base/module-patient/theme-dark/1x/report.svg
    • 新增 src/assets/Icons/base/module-patient/theme-default/2x/ 目录
    • 新增 src/assets/Icons/base/module-process/theme-default/2x/ 目录

改动文件:

  • scripts/replace-svg-fill.js (新增)
  • src/assets/Icons/base/module-patient/theme-default/2x/ (新增目录)
  • src/assets/Icons/base/module-process/theme-default/2x/ (新增目录)
  • src/pages/patient/components/ActionPanel.tsx
  • src/pages/view/components/FunctionArea.tsx
  • src/assets/Icons/base/module-process/theme-default/1x/ (删除大量图标)
  • src/assets/Icons/base/module-patient/theme-dark/1x/report.svg (删除)
  • CHANGELOG.md
  • package.json (版本更新: 1.17.1 -> 1.18.0)

[1.17.1] - 2025-12-20 16:25

修复 (Fixed)

  • 出生日期选择未来日期问题修复 (src/pages/patient/components/register.form.tsx)
    • 修复患者注册表单中出生日期可以选择未来日期的问题
    • 在 DatePicker 组件中添加 disabledDate 属性,禁用大于今天的日期
    • 使用 dayjs().endOf('day') 确保包括今天整天,避免边界问题
    • 提升数据完整性,防止输入无效的出生日期

核心改进:

  • 用户体验优化:日期选择器现在自动禁用未来日期,避免用户输入错误
  • 数据验证增强:通过 UI 层面限制,配合表单验证确保数据正确性
  • 代码简洁:利用 Ant Design DatePicker 的 disabledDate 属性实现,无需额外验证逻辑

改动文件:

  • src/pages/patient/components/register.form.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.17.0 -> 1.17.1)

[1.17.0] - 2025-12-20 16:00

新增 (Added)

  • 有状态按钮工具状态自动同步功能 - 实现cornerstone工具激活状态与按钮状态的自动同步
    • 新增 ToolStateListener 类,监听cornerstone工具状态变化事件
    • 实现Redux状态管理,维护激活工具的状态映射
    • 修改按钮状态判断逻辑,有状态按钮基于工具激活状态显示激活效果
    • 在应用初始化时自动启动工具状态监听器
    • 支持"Adjust Brightness and Contrast"和"Magnifier"按钮的状态自动同步

核心功能实现:

  • 工具状态监听:监听TOOL_MODE_CHANGED事件,自动更新Redux状态
  • 按钮状态同步:有状态按钮的激活状态自动反映cornerstone工具的实际状态
  • 单例模式:确保只有一个工具状态监听器实例,避免重复监听
  • 错误处理:完善的异常处理和日志记录,确保系统稳定性

技术实现:

  • 创建src/utils/toolStateListener.ts工具状态监听器
  • 扩展functionAreaSlice.ts添加工具激活状态管理
  • 修改FunctionArea.tsx按钮状态基于工具激活状态判断
  • app.tsx应用初始化时启动监听器

改动文件:

  • src/utils/toolStateListener.ts (新增)
  • src/states/view/functionAreaSlice.ts
  • src/pages/view/components/FunctionArea.tsx
  • src/app.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.16.0 -> 1.17.0)

[1.16.0] - 2025-12-20 14:06

新增 (Added)

  • 添加掩码功能 - 实现完整的医学图像多边形遮罩系统
    • 新增 MaskTool 核心工具类,支持多边形绘制和遮罩效果应用
    • 集成测量工具管理系统,支持多视口遮罩独立管理
    • 实现 Redux 状态管理,统一 Add Mask 和 Delete Mask 操作
    • 支持工具注册和全局激活,确保跨环境兼容性

核心功能实现:

  • 多边形绘制:用户可以在图像上绘制多边形区域作为遮罩
  • 遮罩效果:多边形内部区域保持可见,外部区域变黑
  • 工具管理:支持激活、停用和清除遮罩工具
  • 交互优化:在 FunctionArea 和 RectCropPanel 中提供遮罩按钮

技术实现:

  • 新增 MaskTool.ts 工具类,继承 AnnotationTool
  • 扩展 MeasurementToolManager,支持遮罩工具生命周期管理
  • 更新 ViewerContainer,添加 Add Mask 和 Delete Mask 动作处理
  • 集成 stack.image.viewer.tsx,注册并导出遮罩相关函数
  • 更新 cornerstoneToolsSetup.ts,全局注册 MaskTool

改动文件:

  • docs/实现/添加掩码功能实现方案.md
  • src/components/tools/MaskTool.ts
  • src/pages/view/components/FunctionArea.tsx
  • src/pages/view/components/ViewerContainer.tsx
  • src/pages/view/components/viewers/stack.image.viewer.tsx
  • src/utils/cornerstoneToolsSetup.ts
  • src/utils/measurementToolManager.ts
  • CHANGELOG.md
  • package.json (版本更新: 1.15.1 -> 1.16.0)

[1.15.1] - 2025-12-20 11:22

修复 (Fixed)

  • 标记功能未选中viewport时无法添加问题 (src/pages/view/components/ViewerContainer.tsx)
    • 修复预定义标记、自定义标记和时间戳在未选中viewport时无法添加到图像的问题
    • 实现智能viewport选择:有选中时仅添加到选中的viewport,无选中时自动添加到所有可见viewport
    • 确保标记功能与测量工具保持一致的交互逻辑
    • 提升用户体验,无需手动选中图像即可添加标记

核心改进:

  • 预定义标记处理优化:支持未选中viewport时自动添加到所有可见图像
  • 自定义标记处理优化:从下拉列表选择的标记现在能正确添加到图像
  • 时间戳处理优化:时间戳标记支持自动添加到所有可见图像
  • 交互一致性:与其他功能(如测量工具)保持相同的交互模式

技术实现:

  • 添加 selectedViewportIds.length 检查条件
  • 未选中时使用 getVisibleViewportCount() 获取可见viewport数量
  • 遍历所有可见viewport并调用 addCustomMark() 函数
  • 使用 getViewportIdByUrl() 正确转换imageUrl到viewportId

改动文件:

  • src/pages/view/components/ViewerContainer.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.15.0 -> 1.15.1)

[1.15.0] - 2025-12-19 18:50

新增 (Added)

  • 二维码扫码录入病人信息功能 - 实现完整的跨平台二维码扫描录入系统
    • 支持浏览器、Electron、Cordova Android三平台二维码扫描
    • 浏览器/Electron平台使用html5-qrcode库实时扫描
    • Cordova平台使用拍照+jsQR识别方案
    • 支持解析制表符分隔的文本格式(姓名、年龄、身份证号)
    • 自动填充注册表单并支持体位自动注册
    • 完善的数据验证、错误处理和跨平台兼容性
    • 集成完整的Redux状态管理和用户交互流程

核心功能实现:

  • 跨平台兼容:智能检测运行平台,自动选择最佳扫描方案
  • 文本格式解析:支持"贾桂霞 32 岁 122410551217111712"格式的病人信息
  • 自动表单填充:扫描成功后自动填充姓名、年龄、身份证等字段
  • 体位自动注册:如果二维码包含体位信息,自动创建检查并进入检查页面
  • 用户体验优化:扫描结果确认、错误处理、状态反馈

技术实现:

  • 新增 src/components/QRCodeScanner/ 组件模块
  • 新增 src/domain/qrcode/ 业务逻辑层
  • 新增 src/states/patient/register/qrCodeScanSlice.ts 状态管理
  • 新增 src/types/qrcode.ts 类型定义
  • 新增 docs/实现/二维码扫码录入功能.md 详细设计文档
  • 集成 html5-qrcodejsqr 库支持
  • 更新 Cordova 配置支持摄像头插件

改动文件:

  • 新增文件:

    • src/components/QRCodeScanner/QRCodeScanButton.tsx
    • src/components/QRCodeScanner/QRCodeScanModal.tsx
    • src/components/QRCodeScanner/index.ts
    • src/domain/qrcode/qrCodeDataProcessor.ts
    • src/domain/qrcode/qrCodeValidator.ts
    • src/domain/qrcode/autoRegisterHandler.ts
    • src/states/patient/register/qrCodeScanSlice.ts
    • src/types/qrcode.ts
    • docs/实现/二维码扫码录入功能.md
  • 修改文件:

    • src/pages/patient/register.tsx - 添加扫码按钮
    • src/states/store.ts - 注册 qrCodeScanSlice
    • package.json - 添加 html5-qrcode 和 jsqr 依赖
    • .build/config.xml - 移除有问题的二维码插件
    • CHANGELOG.md - 新增变更记录

[1.14.3] - 2025-12-19 18:17

修复 (Fixed)

  • Cordova插件异步初始化和准备检查功能 (src/features/serverConfig/storage/CordovaStorageAdapter.ts)
    • 在CordovaStorageAdapter中添加异步插件初始化逻辑
    • 实现initializePlugin方法处理deviceready事件
    • 添加ensureReady方法确保插件准备好后再执行操作
    • 在所有存储操作前调用await this.ensureReady()

核心改进:

  • 异步初始化:确保Cordova插件在deviceready后初始化
  • 错误处理:添加超时机制和错误日志
  • 性能优化:避免插件未准备好时的操作失败

改动文件:

  • src/features/serverConfig/storage/CordovaStorageAdapter.ts
  • CHANGELOG.md
  • package.json (版本更新: 1.14.2 -> 1.14.3)

[1.14.2] - 2025-12-19 18:05

新增 (Added)

  • 功能按钮悬停状态和视觉反馈功能 (src/pages/view/components/FunctionArea.tsx)
    • 实现功能按钮的悬停状态管理,添加 isHovered 状态变量
    • 添加鼠标进入和离开事件处理函数,实现动态悬停检测
    • 实现图标样式根据状态变化:禁用时灰度显示,激活时蓝色高亮,悬停时浅蓝色显示
    • 添加按钮悬停时的边框和背景色视觉反馈,提升交互体验
    • 优化按钮样式结构,确保悬停时显示浅蓝色边框和背景

核心改进:

  • 用户体验增强:按钮现在提供清晰的视觉反馈,悬停时显示边框和背景变化
  • 状态管理优化:集成 Redux 状态管理,支持按钮激活状态检测
  • 样式系统完善:根据按钮状态动态调整图标和按钮样式
  • 交互友好性:悬停状态提供即时反馈,提升操作流畅度

改动文件:

  • src/pages/view/components/FunctionArea.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.14.1 -> 1.14.2)

[1.14.1] - 2025-12-18 17:30

修复 (Fixed)

核心改进:

  • 界面优化:移除调试边框,提升组件的视觉呈现效果
  • 代码清理:删除不必要的调试样式,保持代码整洁

改动文件:

  • src/components/HumanBody.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.14.0 -> 1.14.1)

[1.14.0] - 2025-12-18 15:00

新增 (Added)

  • 体位列表追加弹框成功回调功能 (src/pages/exam/components/BodyPositionList.tsx)
    • 为 AppendViewModal 组件添加 onSuccess 回调属性
    • 实现追加体位成功后自动关闭弹框的功能
    • 提升用户交互体验,减少手动关闭弹框的步骤

核心改进:

  • 用户体验优化:追加成功后自动关闭弹框,操作流程更流畅
  • 组件交互增强:支持成功回调处理,提升组件复用性

改动文件:

  • src/pages/exam/components/BodyPositionList.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.13.1 -> 1.14.0)

[1.13.1] - 2025-12-18 14:35

修复 (Fixed)

  • 操作者ID必填问题修复 (src/validation/patient/registerSchema.ts)
    • 移除 operator_id 字段的 .optional() 调用,使其成为必填字段
    • 修复患者注册表单中操作者ID字段的验证逻辑
    • 确保操作者ID在表单提交时必须填写

核心改进:

  • 数据验证增强:确保操作者ID字段必填,提升数据完整性
  • 用户体验优化:明确必填字段要求,减少表单提交错误

改动文件:

  • src/validation/patient/registerSchema.ts
  • CHANGELOG.md
  • package.json (版本更新: 1.13.0 -> 1.13.1)

[1.13.0] - 2025-12-18 14:18

新增 (Added)

  • 体位列表追加按钮多语言提示功能 (src/pages/exam/components/BodyPositionList.tsx)
    • 为体位列表底部的追加按钮添加多语言 Tooltip 提示
    • 新增中文和英文的多语言键值对:"exam.action.addMorePositions"
    • 集成 React Intl 的 useIntl hook 和 Tooltip 组件
    • 支持鼠标悬停时显示对应语言的提示文本

核心改进:

  • 用户体验提升:追加按钮现在有清晰的提示信息
  • 国际化支持:支持中文"添加更多体位"和英文"Add More Positions"
  • 代码架构优化:使用标准的 React Intl 多语言方案
  • 视觉反馈增强:悬停时显示提示,提升交互友好性

技术实现:

  • 新增多语言键值对到 zh.js 和 en.js
  • 在 BodyPositionList 组件中导入 Tooltip 和 useIntl
  • 使用 Tooltip 包裹追加按钮区域
  • 动态获取当前语言对应的提示文本

改动文件:

  • src/assets/i18n/messages/zh.js - 添加中文翻译
  • src/assets/i18n/messages/en.js - 添加英文翻译
  • src/pages/exam/components/BodyPositionList.tsx - 实施 Tooltip 功能
  • CHANGELOG.md
  • package.json (版本更新: 1.12.5 -> 1.13.0)

[1.12.5] - 2025-12-18 13:47

修复 (Fixed)

  • 人体部位服务端名称格式修复 (src/components/HumanBody.tsx)
    • 修复人体部位服务端名称格式,将下划线分隔改为空格分隔
    • 上肢(左/右):Human_UPPER_LIMBHuman_UPPER LIMB
    • 下肢(左/右):Human_LOWER_LIMBHuman_LOWER LIMB
    • 确保前后端数据交互时名称格式一致性
    • 提升代码可读性和系统兼容性

核心改进:

  • 数据规范化:统一服务端名称格式,使用空格而非下划线分隔
  • 系统兼容性:确保前后端通信时名称格式正确匹配
  • 可读性提升:空格分隔更符合自然语言习惯

技术实现:

  • 修改 bodyParts 配置对象中的 serverName 属性
  • 影响左右上肢和左右下肢共3处修改
  • 保持其他部位名称格式不变

改动文件:

  • src/components/HumanBody.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.12.4 -> 1.12.5)
  • package-lock.json

[1.12.4] - 2025-12-18 13:06

修复 (Fixed)

  • 体型选择器崩溃问题 (src/pages/exam/ContentAreaLarge.tsx)
    • 修复进入检查页面时,bodysize 为空导致的崩溃问题
    • 在 Select 组件的 value 属性上添加条件检查:!!bodysize ? intl.formatMessage({ id: bodysize }) : undefined
    • 避免在 bodysize 为 null/undefined 时调用 formatMessage 导致错误
    • 确保体型选择器在初始状态下正确显示占位符

核心改进:

  • 防御性编程:添加空值检查,提升代码健壮性
  • 用户体验:进入检查页面不再崩溃,正常显示体型选择器
  • 错误处理:优雅处理 bodysize 未初始化的场景

技术实现:

  • 使用 !!bodysize 进行真值检查
  • 空值时返回 undefined,让 Select 组件显示 placeholder
  • 保持与 Ant Design Select 组件的正确交互

改动文件:

  • src/pages/exam/ContentAreaLarge.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.12.3 -> 1.12.4)

[1.12.3] - 2025-12-18 10:07

修复 (Fixed)

  • 反色对比功能多选问题 (src/pages/view/components/InvertContrastThumbnailList.tsx)
    • 修复反色对比Modal打开后左侧列表可以多选的问题
    • 将 Checkbox(复选框)改为 Radio(单选按钮)
    • 修改选择逻辑:从"最多选择2个体位"改为"单选一个体位"
    • 移除 isDisabled 禁用逻辑和超过2个时的限制判断
    • 更新组件注释:从"支持多选用于对比"改为"支持单选用于反色对比"
    • 更新 UI 文案:去掉"(最多2个)"提示
    • 简化选择逻辑:handlePositionToggle 改为 handlePositionSelect,每次选择直接替换
    • 优化交互体验:整个卡片区域可点击,移除按钮嵌套

核心改进:

  • 交互更清晰:用户明确知道只能选择一个体位进行反色对比
  • 符合业务语义:反色对比的重点是反色效果,而不是两张不同图像的对比
  • 简化逻辑:去除多选相关的复杂判断和禁用逻辑
  • 提升体验:整个卡片可点击,交互更自然

技术实现:

  • 导入组件变更:Checkbox → Radio
  • 函数重构:handlePositionToggle(bodyPosition, checked) → handlePositionSelect(bodyPosition)
  • 逻辑简化:直接使用 dispatch(updateSelectedPositions({ positions: [dcmUrl] }))
  • UI 优化:移除 disabled 判断,简化点击事件处理

改动文件:

  • src/pages/view/components/InvertContrastThumbnailList.tsx
  • CHANGELOG.md
  • package.json (版本更新: 1.12.2 -> 1.12.3)

[1.12.2] - 2025-12-18 09:54

修复 (Fixed)

  • 体位卡片高度不一致和文本显示问题 (src/pages/patient/components/register.available.view.list.tsx)
    • 修复图片大小不同导致卡片高度不一致的问题
    • 将图片尺寸从响应式(100% / auto)改为固定尺寸(100px / 100px)
    • 添加文本省略样式(overflow: hidden, textOverflow: ellipsis, whiteSpace: nowrap)
    • 引入 Ant Design Tooltip 组件,鼠标悬停时显示完整的体位名称
    • 确保所有体位卡片保持统一高度,提升界面整齐度

核心改进:

  • 布局优化:固定图片高度确保所有卡片高度一致
  • 文本处理:过长文本显示省略号,不换行撑开卡片
  • 用户体验:Tooltip 悬停提示显示完整文本内容
  • 视觉统一:所有体位卡片整齐排列,界面更加美观

技术实现:

  • 添加 Tooltip 组件到 antd 导入列表
  • 修改 Image 组件样式:width: '100px', height: '100px'
  • 为文本 div 添加省略号样式
  • 使用 Tooltip 包裹文本 div,title 属性设为完整文本

改动文件:

  • src/pages/patient/components/register.available.view.list.tsx
  • package.json (版本更新: 1.12.1 -> 1.12.2)

[1.12.1] - 2025-12-18 09:48

修复 (Fixed)

  • 患者类型默认值问题 (src/states/patientTypeSlice.ts)
    • 修复登录后进入注册页面时患者类型默认为 DOG 的问题
    • 将 initialState.current 从硬编码的 DOG 对象改为 null
    • 确保患者类型选择框初始为空,需要用户手动选择
    • 避免因默认值导致的误操作

核心改进:

  • 数据规范化:移除硬编码的默认患者类型
  • 用户体验:强制用户手动选择患者类型,避免误操作
  • 代码简化:简化初始状态配置

改动文件:

  • src/states/patientTypeSlice.ts
  • package.json (版本更新: 1.12.0 -> 1.12.1)

[1.12.0] - 2025-12-18 09:25

新增 (Added)

  • SVG图标组件化并支持主题颜色 (#svg-icon-componentization)
    • 在 config/index.ts 中配置 @svgr/webpack 支持 SVG 转 React 组件
    • 在 package.json 中添加 @svgr/webpack 依赖
    • 在 ActionPanel.tsx 中更新图标使用方式,支持主题颜色
    • 修改 report.svg 使用 currentColor 以支持动态主题
    • 清理未使用的图标文件,优化项目结构

核心改进:

  • Webpack 配置增强:添加 @svgr/webpack loader,将 SVG 转换为 React 组件
  • 图标主题支持:使用 currentColor 实现动态主题颜色适配
  • 项目结构优化:删除 120+ 个未使用图标文件,减少项目体积
  • 组件化升级:图标使用 fontSize 和 Tailwind CSS 实现灵活样式控制

技术实现:

  • 配置 webpack chain API 排除 SVG 被当作普通图片处理
  • 使用 @svgr/webpack 将 Icons 目录下的 SVG 转换为 React 组件
  • 在 ActionPanel 中引入 antd theme,使用 useToken 获取主题颜色
  • SVG 文件使用 fill="currentColor" 支持动态颜色
  • 删除多个模块的未使用图标:common、configuration、device、exam、output、patient、process、security

改动文件:

  • config/index.ts
  • package.json (版本更新: 1.11.6 -> 1.12.0)
  • package-lock.json
  • src/pages/patient/components/ActionPanel.tsx
  • src/assets/Icons/base/module-patient/theme-dark/1x/report.svg
  • 删除 120+ 个未使用图标文件

格式基于 Keep a Changelog, 版本号遵循 语义化版本

版本号说明

本项目遵循语义化版本 2.0.0规范:

  • 主版本号 (Major):当你做了不兼容的 API 修改
  • 次版本号 (Minor):当你做了向下兼容的功能性新增
  • 修订号 (Patch):当你做了向下兼容的问题修正

变更类型说明

  • 新增 (Added): 添加的新功能
  • 变更 (Changed): 对现有功能的变更
  • 弃用 (Deprecated): 即将移除的功能
  • 移除 (Removed): 已移除的功能
  • 修复 (Fixed): 任何 bug 修复
  • 安全 (Security): 针对安全漏洞的修复

链接说明