import { createEntityListSlices } from '../../../list_template/createListSlices'; import { createFetchThunk, createDeleteThunk, } from '../../../list_template/thunk.factory'; import { work } from '../types/worklist'; import { WorkFilter } from '../types/workfilter'; import { PayloadAction } from '@reduxjs/toolkit'; import { setId, setName, setAccNo, setStartTime, setEndTime, setStatus, setPage, setPageSize, } from '../slices/searchSlice'; // Define the fetch thunk import { fetchTaskList } from '../../../../API/patient/workActions'; export const fetchWorkThunk = createFetchThunk( 'worklist', async ({ page, pageSize, filters }) => { // const filtersEx: WorkFilter = { ...filters, status: 'Arrived' } const { items, total } = await fetchTaskList(page, pageSize, filters); return { data: items, total }; } ); // Define the delete thunk const deleteWorkThunk = createDeleteThunk( 'worklist', // eslint-disable-next-line async (ids) => { // todo 还没有实现API // Implement the deleter function to delete worklist items // await fetch(`/api/worklist`, { // method: 'DELETE', // headers: { // 'Content-Type': 'application/json', // }, // body: JSON.stringify({ ids }), // }); } ); const extraReducersForFilter = (builder) => { builder.addCase( setId.type, (state: WorkFilter, action: PayloadAction) => { state.patient_id = action.payload; } ); builder.addCase( setName.type, (state: WorkFilter, action: PayloadAction) => { state.patient_name = action.payload; } ); builder.addCase( setAccNo.type, (state: WorkFilter, action: PayloadAction) => { state.access_number = action.payload; } ); builder.addCase( setStartTime.type, (state: WorkFilter, action: PayloadAction) => { state.start_time = action.payload; } ); builder.addCase( setEndTime.type, (state: WorkFilter, action: PayloadAction) => { state.end_time = action.payload; } ); builder.addCase( setStatus.type, (state: WorkFilter, action: PayloadAction) => { state.status = action.payload; } ); builder.addCase( setPage.type, (state: WorkFilter, action: PayloadAction) => { state.page = action.payload; } ); builder.addCase( setPageSize.type, (state: WorkFilter, action: PayloadAction) => { state.page_size = action.payload; } ); }; // Create the worklist slices const { entitiesSlice, filtersSlice, paginationSlice, selectionSlice, uiSlice, } = createEntityListSlices( 'historylist', fetchWorkThunk, deleteWorkThunk, 'StudyID', extraReducersForFilter, { patient_id: '', patient_name: '', start_time: '', end_time: '', access_number: '', status: 'Completed', page: 1, page_size: 10, } satisfies WorkFilter ); export const historyEntitiesSlice = entitiesSlice; export const historyFiltersSlice = filtersSlice; export const historyPaginationSlice = paginationSlice; export const historySelectionSlice = selectionSlice; export const historyUISlice = uiSlice;