Browse Source

fix : #6 实现曝光过程中出现进度条

sw 1 week ago
parent
commit
6633c4e4e9

+ 2 - 0
src/API/exam/triggerInspection.ts

@@ -1,4 +1,5 @@
 import axiosInstance from '../interceptor';
+import { setGeneratorToSyncStatus } from './generatorAPI';
 
 interface TriggerInspectionResponse {
   code: string;
@@ -16,6 +17,7 @@ const triggerInspection = async (): Promise<TriggerInspectionResponse> => {
 
   try {
     const response = await axiosInstance.post(url, {});
+    setGeneratorToSyncStatus('3'); // 设置发生器状态为同步状态
     return response.data;
   } catch (error) {
     throw new Error(error);

+ 2 - 0
src/app.tsx

@@ -12,6 +12,7 @@ import ProductSelector from './components/ProductSelector';
 const locale = (window.navigator.language || 'en').toLowerCase().split('-')[0]; // Get locale from browser or default to 'en'
 import messages_en from './assets/i18n/messages/en';
 import messages_zh from './assets/i18n/messages/zh';
+import AcquisitionTracer from './pages/exam/components/acquisitionTracer';
 
 const messages = locale === 'zh' ? messages_zh : messages_en;
 console.log(`process.env.USE_MSW: ${process.env.USE_MSW}`);
@@ -57,6 +58,7 @@ function App({ children }: PropsWithChildren<React.ReactNode>) {
               boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
             }}
           >
+            <AcquisitionTracer />
             {children}
             {process.env.NODE_ENV === 'development' && <ProductSelector />}
             <div

+ 3 - 1
src/domain/mqttService.ts

@@ -33,10 +33,12 @@ const handleMqttMessage = (message: MqttMessage) => {
       console.log('Task succeeded:', message);
       // Handle success, e.g., process DCM and thumbnail files
       emitter.emit('TASK_SUCCESS', message);
+      emitter.emit('ACQUISITION_SUCCESS');
       break;
     case 'TASK_Failure':
-      console.error('Task failed:', message.message);
+      console.error('Task failed:', message);
       // Handle failure
+      emitter.emit('ACQUISITION_FAILURE');
       break;
     default:
       break;

+ 37 - 0
src/pages/exam/components/acquisitionTracer.tsx

@@ -0,0 +1,37 @@
+import React from 'react';
+import { useSelector } from 'react-redux';
+import { Progress, Modal } from 'antd';
+import { RootState } from '../../../states/store';
+
+const AcquisitionTracer: React.FC = () => {
+  const acquisitionState = useSelector(
+    (state: RootState) => state.generatorMonitor.acquisitionState
+  );
+
+  const renderProgressBar = () => {
+    switch (acquisitionState) {
+      case 1:
+        return <Progress percent={50} status="active" />;
+      case 2:
+        return <Progress percent={100} status="success" />;
+      case 3:
+        return <Progress percent={100} status="exception" />;
+      default:
+        return null;
+    }
+  };
+
+  return (
+    <Modal
+      title="Acquisition Tracer"
+      open={acquisitionState === 1}
+      footer={null}
+      centered
+      style={{ top: 20 }}
+    >
+      <div>{renderProgressBar()}</div>
+    </Modal>
+  );
+};
+
+export default AcquisitionTracer;

+ 2 - 0
src/states/store.ts

@@ -25,6 +25,7 @@ import {
   workSelectionSlice,
   workUISlice,
 } from './patient/worklist/slices/workSlice';
+import generatorMonitorReducer from './exam/generatorMonitorSlice';
 
 const store = configureStore({
   reducer: {
@@ -47,6 +48,7 @@ const store = configureStore({
     workSelection: workSelectionSlice.reducer,
     workUI: workUISlice.reducer,
     search: searchReducer,
+    generatorMonitor: generatorMonitorReducer,
   },
   middleware: (getDefaultMiddleware) =>
     getDefaultMiddleware().concat(