| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { saveRisSingle } from '@/API/patient/risActions';
- import { Modal } from 'antd';
- import store from '@/states/store';
- import { setPage, setPageSize } from '@/states/patient/worklist/slices/searchSlice';
- import { fetchWorkThunk } from '@/states/patient/worklist/slices/workSlice';
- import { WorkFilter } from '@/states/patient/worklist/types/workfilter';
- import mapToTask from './mapToTask';
- import { Task } from '../work';
- /**
- * RIS数据保存成功弹框
- */
- const showSaveSuccessModal = (count: number, onSuccess?: () => void) => {
- Modal.success({
- title: '🎉 保存成功',
- content: `成功保存 ${count} 条RIS数据到本地\n\n系统将自动刷新列表显示最新数据`,
- okText: '确定',
- centered: true,
- afterClose: () => {
- // 弹框自动消失后执行列表刷新
- triggerSearch();
- // 执行成功回调(如果提供)
- if (onSuccess) {
- onSuccess();
- }
- }
- });
- };
- /**
- * 触发搜索刷新列表(复用SearchPanel的逻辑)
- */
- const triggerSearch = () => {
- const dispatch = store.dispatch;
- const searchState = store.getState().search;
- // 重置分页
- dispatch(setPage(1));
- dispatch(setPageSize(10));
- // 构建过滤条件
- const filters: WorkFilter = {
- patient_id: searchState.id,
- patient_name: searchState.name,
- access_number: searchState.acc_no,
- start_time: searchState.start_time,
- end_time: searchState.end_time,
- status: 'Arrived,InProgress',
- };
- // 调用搜索
- dispatch(fetchWorkThunk({ page: 1, pageSize: 10, filters }));
- };
- /**
- * 保存单个RIS数据到本地
- * @param entryId RIS条目ID
- * @param onSuccess 可选的成功回调函数,接收保存的task信息
- */
- export const saveRisData = async (entryId: string, onSuccess?: (task: Task) => void) => {
- try {
- console.log('RIS双击保存本地参数:', entryId);
- // 调用RIS单个保存API(传递entryId和空views数组)
- const response = await saveRisSingle({
- entry_id: entryId,
- views: [] // 保存时不指定体位,后面可以追加
- });
- console.log('RIS双击保存本地成功,Study ID:', response.data.study_id);
- // 显示成功弹框(暂逝后自动刷新)
- showSaveSuccessModal(1, () => {
- // 执行成功回调,传递task信息
- if (onSuccess) {
- onSuccess(mapToTask(response.data));
- }
- });
- } catch (error) {
- console.error('RIS双击保存本地失败:', error);
- const errorMessage = error instanceof Error ? error.message : '保存过程中发生未知错误';
- Modal.error({
- title: '❌ 保存失败',
- content: `${errorMessage}\n\n请检查网络连接或联系技术支持`,
- okText: '确定',
- centered: true
- });
- }
- };
|