فهرست منبع

fix: 重构体位选择逻辑以解决错误处理问题 close #56

- 创建体位选择协调器统一处理自动和手动选中逻辑
- 改进错误处理和用户反馈机制
- 将业务逻辑从组件层提取到域层
- 文件:src/domain/exam/bodyPositionSelection.ts, src/pages/exam/components/BodyPositionList.tsx
sw 2 هفته پیش
والد
کامیت
9201e2b035
2فایلهای تغییر یافته به همراه11 افزوده شده و 4 حذف شده
  1. 2 2
      src/domain/exam/bodyPositionSelection.ts
  2. 9 2
      src/pages/exam/components/BodyPositionList.tsx

+ 2 - 2
src/domain/exam/bodyPositionSelection.ts

@@ -77,7 +77,7 @@ export const autoSelectFirstBodyPosition = async (
   bodyPositions: ExtendedBodyPosition[],
   dispatch: AppDispatch,
   currentKey: string
-) => {
+): Promise<void> => {
   if (bodyPositions.length > 0) {
     console.log('[bodyPositionSelection] Auto-selecting first body position');
     await selectBodyPositionWithFullLogic(
@@ -96,7 +96,7 @@ export const manualSelectBodyPosition = async (
   bodyPosition: ExtendedBodyPosition,
   dispatch: AppDispatch,
   currentKey: string
-) => {
+): Promise<void> => {
   console.log(
     `[bodyPositionSelection] Manual selection: ${bodyPosition.view_name}`
   );

+ 9 - 2
src/pages/exam/components/BodyPositionList.tsx

@@ -2,7 +2,7 @@ import React, { useEffect } from 'react';
 import { useSelector, useDispatch } from 'react-redux';
 import { ExtendedBodyPosition } from '../../../states/exam/bodyPositionListSlice';
 import { RootState, AppDispatch } from '../../../states/store';
-import { Button, Image } from 'antd';
+import { Button, Image, message } from 'antd';
 import AppendViewIcon from '@/assets/imgs/append-view.svg';
 import ImageViewer from './ImageViewer';
 import { getExposedImageUrl, getViewIconUrl } from '../../../API/bodyPosition';
@@ -41,7 +41,14 @@ const BodyPositionList: React.FC<BodyPositionListProps> = ({
       console.log(
         '[BodyPositionList] Auto-selecting first body position on component mount'
       );
-      autoSelectFirstBodyPosition(bodyPositions, dispatch, currentKey);
+      autoSelectFirstBodyPosition(bodyPositions, dispatch, currentKey).catch(
+        (error) => {
+          message.error(
+            'Failed to auto-select the first body position 00000',
+            error
+          );
+        }
+      );
     }
   }, [bodyPositions, selectedBodyPosition, dispatch, currentKey]);