Переглянути джерело

refactor(patient): enhance createListSlices with initial Filter and apply to workSlice

Allow createListSlices table state factory method to accept initial Filter values
Pass initial Filter when creating workSlice using createListSlices
Update WorklistTable to use Filter created by createListSlices
dengdx 3 місяців тому
батько
коміт
569aed3e9e

+ 1 - 1
src/pages/patient/components/WorklistTable.tsx

@@ -383,7 +383,7 @@ const WorklistTable: React.FC = () => {
   const worklistData = useSelector(
     (state: RootState) => state.workEntities.data
   );
-  const filters = useSelector((state: RootState) => state.search);
+  const filters = useSelector((state: RootState) => state.workFilters);
   const page = useSelector((state: RootState) => state.workPagination.page);
   const pageSize = useSelector(
     (state: RootState) => state.workPagination.pageSize

+ 3 - 2
src/states/list_template/createListSlices.ts

@@ -11,7 +11,8 @@ export function createEntityListSlices<T, F extends object>(
   namespace: string,
   fetchThunk,
   deleteThunk,
-  extraReducersForFilter?: (builder) => void
+  extraReducersForFilter?: (builder) => void,
+  initialFilter?: F
 ) {
   const entitiesSlice = createSlice({
     name: `${namespace}/entities`,
@@ -43,7 +44,7 @@ export function createEntityListSlices<T, F extends object>(
 
   const filtersSlice = createSlice({
     name: `${namespace}/filters`,
-    initialState: {} as FiltersState<F>,
+    initialState: initialFilter as FiltersState<F>,
     reducers: {
       setFilters(state, action: PayloadAction<Partial<FiltersState<F>>>) {
         return { ...state, ...action.payload };

+ 12 - 1
src/states/patient/worklist/slices/workSlice.ts

@@ -23,6 +23,7 @@ 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 };
   }
@@ -105,7 +106,17 @@ const {
   'worklist',
   fetchWorkThunk,
   deleteWorkThunk,
-  extraReducersForFilter
+  extraReducersForFilter,
+  {
+    patient_id: '',
+    patient_name: '',
+    start_time: '',
+    end_time: '',
+    access_number: '',
+    status: 'Arrived',
+    page: 1,
+    page_size: 10,
+  } satisfies WorkFilter
 );
 
 export const workEntitiesSlice = entitiesSlice;