| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import { createSlice, PayloadAction } from '@reduxjs/toolkit';
- import { saveReportThunk } from './saveReportThunk';
- import { previewReportThunk } from './previewReportThunk';
- import { Task } from '@/domain/work';
- import { ReportContent } from '@/API/report/ReportActions';
- interface DiagnosticReportState {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- report: any;
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- previewResponse: any;
- isPreviewing: boolean;
- isSaving: boolean;
- isFinished: boolean;
- visible: boolean;
- needsPreview: boolean;
- currentWork: Task | null; // 当前选中的工作
- }
- const initialState: DiagnosticReportState = {
- report: null,
- previewResponse: null,
- isPreviewing: false,
- isSaving: false,
- isFinished: false,
- visible: false,
- needsPreview: false,
- currentWork: null,
- };
- const diagnosticReportSlice = createSlice({
- name: 'diagnosticReport',
- initialState,
- reducers: {
- finishReport(state) {
- state.isFinished = true;
- },
- setVisible(state, action: PayloadAction<boolean | { visible: boolean; work?: Task }>) {
- if (typeof action.payload === 'boolean') {
- state.visible = action.payload;
- } else {
- state.visible = action.payload.visible;
- if (action.payload.work) {
- state.currentWork = action.payload.work;
- }
- }
- },
- toggleVisible(state) {
- state.visible = !state.visible;
- },
- setNeedsPreview(state, action: PayloadAction<boolean>) {
- state.needsPreview = action.payload;
- },
- setReport(state, action: PayloadAction<ReportContent>) {
- state.report = action.payload;
- },
- },
- extraReducers: (builder) => {
- builder
- .addCase(saveReportThunk.pending, (state) => {
- state.isSaving = true;
- })
- .addCase(saveReportThunk.fulfilled, (state) => {
- state.isSaving = false;
- state.isFinished = true;
- })
- .addCase(saveReportThunk.rejected, (state) => {
- state.isSaving = false;
- })
- .addCase(previewReportThunk.pending, (state) => {
- state.isPreviewing = true;
- })
- .addCase(previewReportThunk.fulfilled, (state, action) => {
- state.isPreviewing = false;
- state.needsPreview = true;
- state.previewResponse = action.payload; // Store the response in the new field
- })
- .addCase(previewReportThunk.rejected, (state) => {
- state.isPreviewing = false;
- });
- },
- });
- export const {
- finishReport,
- setVisible,
- toggleVisible,
- setNeedsPreview,
- setReport,
- } = diagnosticReportSlice.actions;
- export default diagnosticReportSlice.reducer;
|