소스 검색

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 5 달 전
부모
커밋
569aed3e9e
3개의 변경된 파일16개의 추가작업 그리고 4개의 파일을 삭제
  1. 1 1
      src/pages/patient/components/WorklistTable.tsx
  2. 3 2
      src/states/list_template/createListSlices.ts
  3. 12 1
      src/states/patient/worklist/slices/workSlice.ts

+ 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;