| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- 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<WorkFilter, work>(
- '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<string>) => {
- state.patient_id = action.payload;
- }
- );
- builder.addCase(
- setName.type,
- (state: WorkFilter, action: PayloadAction<string>) => {
- state.patient_name = action.payload;
- }
- );
- builder.addCase(
- setAccNo.type,
- (state: WorkFilter, action: PayloadAction<string>) => {
- state.access_number = action.payload;
- }
- );
- builder.addCase(
- setStartTime.type,
- (state: WorkFilter, action: PayloadAction<string>) => {
- state.start_time = action.payload;
- }
- );
- builder.addCase(
- setEndTime.type,
- (state: WorkFilter, action: PayloadAction<string>) => {
- state.end_time = action.payload;
- }
- );
- builder.addCase(
- setStatus.type,
- (state: WorkFilter, action: PayloadAction<string>) => {
- state.status = action.payload;
- }
- );
- builder.addCase(
- setPage.type,
- (state: WorkFilter, action: PayloadAction<number>) => {
- state.page = action.payload;
- }
- );
- builder.addCase(
- setPageSize.type,
- (state: WorkFilter, action: PayloadAction<number>) => {
- state.page_size = action.payload;
- }
- );
- };
- // Create the worklist slices
- const {
- entitiesSlice,
- filtersSlice,
- paginationSlice,
- selectionSlice,
- uiSlice,
- } = createEntityListSlices<work, WorkFilter>(
- '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;
|