1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { createSlice, PayloadAction } from '@reduxjs/toolkit';
- import emitter from '../../utils/eventEmitter';
- import store from '../store';
- enum GeneratorStatus {
- GENERATOR_SYNC_ERR = -1, // 错误状态
- GENERATOR_RAD_OFF, // 手闸抬起
- GENERATOR_RAD_PREPARE, // 手闸一档按下
- GENERATOR_RAD_READY, // 手闸二档按下
- GENERATOR_RAD_XRAYON, // 发生器点片出线
- GENERATOR_RAD_XRAYOFF, // 发生器点片结束出线
- GENERATOR_FLU_OFF, // 脚闸抬起
- GENERATOR_FLU_READY, // 脚闸踩下
- GENERATOR_FLU_XRAYON, // 透视出线
- GENERATOR_FLU_XRAYOFF, // 透视结束出线
- GENERATOR_FLU_CINE_READY, // 电影模式准备
- GENERATOR_SYNC_MAX, // 状态最大值(枚举边界)
- }
- interface DeviceAreaState {
- generatorStatus: GeneratorStatus;
- exposureStatus: 'ready' | 'not_ready';
- tabletStatus: 'exposing' | 'ready' | 'error';
- }
- const initialState: DeviceAreaState = {
- generatorStatus: GeneratorStatus.GENERATOR_RAD_OFF, // Default to idle state
- exposureStatus: 'not_ready',
- tabletStatus: 'ready',
- };
- const deviceAreaSlice = createSlice({
- name: 'deviceArea',
- initialState,
- reducers: {
- setGeneratorStatus: (state, action: PayloadAction<GeneratorStatus>) => {
- state.generatorStatus = action.payload;
- },
- setExposureStatus: (
- state,
- action: PayloadAction<'ready' | 'not_ready'>
- ) => {
- state.exposureStatus = action.payload;
- },
- setTabletStatus: (
- state,
- action: PayloadAction<'exposing' | 'ready' | 'error'>
- ) => {
- state.tabletStatus = action.payload;
- },
- },
- });
- emitter.on('DETECTOR_ACQUISITION_STARTED', () => {
- store.dispatch(setTabletStatus('ready'));
- });
- emitter.on('DETECTOR_ACQUISITION_INPROGRESS', () => {
- store.dispatch(setTabletStatus('exposing'));
- });
- emitter.on('DETECTOR_ACQUISITION_ERROR', () => {
- store.dispatch(setTabletStatus('error'));
- });
- emitter.on('GENERATOR_RAD_OFF', () => {
- store.dispatch(setGeneratorStatus(GeneratorStatus.GENERATOR_RAD_OFF));
- });
- emitter.on('GENERATOR_RAD_PREPARE', () => {
- store.dispatch(setGeneratorStatus(GeneratorStatus.GENERATOR_RAD_PREPARE));
- });
- emitter.on('GENERATOR_RAD_READY', () => {
- store.dispatch(setGeneratorStatus(GeneratorStatus.GENERATOR_RAD_READY));
- });
- emitter.on('AllReady_TRUE', () => {
- store.dispatch(setExposureStatus('ready'));
- });
- emitter.on('AllReady_FALSE', () => {
- store.dispatch(setExposureStatus('not_ready'));
- });
- export const { setGeneratorStatus, setExposureStatus, setTabletStatus } =
- deviceAreaSlice.actions;
- export { GeneratorStatus };
- export default deviceAreaSlice.reducer;
|