src/pages/patient/worklist.tsx): 工作列表页面,处理双击事件src/pages/exam/components/AppendViewModal.tsx): 追加体位对话框组件src/pages/exam/components/BodyPositionList.tsx): 体位列表组件(参考追加体位按钮实现)src/domain/patient/risSaveLogic.ts): RIS数据保存逻辑src/API/patient/risActions.ts): RIS批量保存APIsrc/states/exam/appendViewSlice.ts): 追加体位Redux异步操作selectedBodyPosition: 当前选中的体位信息selectedViews: 用户选中的待追加视图viewSelection: 视图选择状态管理用户双击RIS条目
↓
WorklistPage.handleRowDoubleClick(record)
↓ (判断为RIS数据)
调用 saveRisData(record.entry_id, onSuccessCallback)
↓ (异步保存)
saveRisSingle(entryId, []) → API调用
↓ (保存成功)
显示成功弹框 + 执行onSuccessCallback
↓
打开 AppendViewModal 追加体位对话框
↓
用户选择体位 → 确认追加
↓
appendViewsThunk() → 追加体位到检查
↓ (追加成功)
自动调用 worklistToExam() 进入检查页面
sequenceDiagram
participant U as 用户
participant W as WorklistPage
participant S as saveRisData
participant A as AppendViewModal
participant T as appendViewsThunk
U->>W: 双击RIS条目
W->>S: saveRisData(entryId, callback)
S->>S: 调用saveRisSingle(entryId, [])
S->>W: 保存成功回调 + study信息
W->>A: 打开模态框 + 传递study信息
A->>U: 显示追加体位界面
U->>A: 选择体位
U->>A: 确认追加
A->>T: appendViewsThunk(study_id, views)
T->>A: 追加成功
A->>W: 调用onSuccess回调
W->>W: 创建Task对象 + 调用worklistToExam()
W->>U: 进入检查页面
record: Task → handleRowDoubleClick → saveRisData(entryId, onSuccess)onSuccess 函数执行 → 设置 isAppendModalOpen = trueselectedBodyPosition → setCurrentBodyPart(bodyPartId)selectedViews 数组收集用户选择的体位selectedViews + study_id + currentWork → appendViewsThunkrecord (Task): 双击的RIS条目数据,包含 entry_id 用于保存selectedBodyPosition: 当前检查的体位信息,用于初始化追加模态框采用方案1: 修改saveRisData接受成功回调参数,在保存成功后执行回调打开模态框。
saveRisData 函数使用 saveRisSingle API,返回保存的study信息studyId 和 currentWork 参数,支持worklist页面调用AppendViewModal 组件和相关状态管理,传递study信息handleRowDoubleClick 使用回调接收study信息并打开模态框在WorklistPage中添加:
isAppendModalOpen: boolean 状态控制模态框显示currentStudy: any 状态存储当前保存的study信息AppendViewModal 组件问题: 弹出的对话框中点击"追加"按钮提示"未找到当前检查信息"
原因: AppendViewModal依赖Redux状态 selectedBodyPosition,但worklist页面没有设置此状态
解决方案:
studyId 和 currentWork 参数