浏览代码

锁定状态不可删除,给出提示

sw 5 天之前
父节点
当前提交
8de6256990

+ 4 - 0
src/API/patient/workActions.ts

@@ -464,6 +464,10 @@ const deleteStudies = async (
     const response = await axiosInstance.delete('/auth/study', {
       data: studyIds,
     });
+    if (response.data.code !== '0x000000') {
+      console.error('删除请求失败', response.data.description);
+      throw new Error(`删除请求失败 ${response.data.description}`);
+    }
     return response.data;
   } catch (error) {
     console.error('Error deleting studies:', error);

+ 31 - 8
src/pages/patient/components/ActionPanel.tsx

@@ -5,6 +5,7 @@ import {
   deleteWorkThunk,
   lockWorkInWorklistThunk,
 } from '@/states/patient/worklist/slices/workSlice';
+import { deleteWorkThunk as deleteWorkThunkFromHistory } from '@/states/patient/worklist/slices/history';
 import { switchToSendPanel } from '@/states/patient/worklist/slices/historyPanelSwitchSlice';
 import { FormattedMessage } from 'react-intl';
 import { AppDispatch, RootState, useAppSelector } from '@/states/store';
@@ -53,15 +54,41 @@ const ActionPanel: React.FC = () => {
   const workEntitiesFromHistory = useSelector(
     (state: RootState) => state.historyEntities.data
   );
+
+  const getSelectedWorkIds = () => {
+    const selectedIds =
+      currentKey === 'worklist' ? workSelectedIds : historySelectedIds;
+    return selectedIds;
+  };
+  const getDeleteThunk = (): typeof deleteWorkThunk => {
+    return currentKey === 'worklist'
+      ? deleteWorkThunk
+      : deleteWorkThunkFromHistory;
+  };
+  const getSelectedWorks = () => {
+    const selectedIds = getSelectedWorkIds();
+    if (currentKey === 'worklist') {
+      return workEntities.find((w) => selectedIds.includes(w.StudyID));
+    } else if (currentKey === 'historylist') {
+      return workEntitiesFromHistory.find((w) =>
+        selectedIds.includes(w.StudyID)
+      );
+    }
+  };
   // 使用 worklist 或 history 的选中项,取决于哪个有值
-  const selectedIds =
-    workSelectedIds.length > 0 ? workSelectedIds : historySelectedIds;
+  const selectedIds = getSelectedWorkIds();
 
   const handleDelete = () => {
     if (selectedIds.length === 0) {
       message.warning('请先选择要删除的项目');
       return;
     }
+    //判断是否锁定
+    const selectedWork = getSelectedWorks();
+    if (selectedWork?.StudyLock === 'Locked') {
+      message.warning('锁定状态不可删除');
+      return;
+    }
 
     Modal.confirm({
       title: '确认删除',
@@ -71,7 +98,8 @@ const ActionPanel: React.FC = () => {
       okButtonProps: { danger: true },
       centered: true,
       onOk: () => {
-        dispatch(deleteWorkThunk(selectedIds));
+        const delThunk = getDeleteThunk();
+        dispatch(delThunk(selectedIds));
       },
     });
   };
@@ -83,11 +111,6 @@ const ActionPanel: React.FC = () => {
   const handleShowReport = () => {
     dispatch(setVisible(true));
   };
-  const getSelectedWorkIds = () => {
-    const selectedIds =
-      currentKey === 'worklist' ? workSelectedIds : historySelectedIds;
-    return selectedIds;
-  };
 
   const getWorksFromWorklistOrHistory = () => {
     return currentKey === 'worklist' ? workEntities : workEntitiesFromHistory;

+ 11 - 15
src/states/patient/worklist/slices/history.ts

@@ -18,10 +18,14 @@ import {
 } from '../slices/searchSlice';
 
 // Define the fetch thunk
-import { fetchTaskList } from '../../../../API/patient/workActions';
+import {
+  deleteStudies,
+  fetchTaskList,
+} from '../../../../API/patient/workActions';
+import store from '@/states/store';
 
 export const fetchWorkThunk = createFetchThunk<WorkFilter, work>(
-  'worklist',
+  'historylist',
   async ({ page, pageSize, filters }) => {
     // const filtersEx: WorkFilter = { ...filters, status: 'Arrived' }
     const { items, total } = await fetchTaskList(page, pageSize, filters);
@@ -30,19 +34,11 @@ export const fetchWorkThunk = createFetchThunk<WorkFilter, work>(
 );
 
 // 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 }),
-    // });
+export const deleteWorkThunk = createDeleteThunk(
+  'historylist',
+  async (ids: string[]) => {
+    await deleteStudies(ids);
+    store.dispatch(selectionSlice.actions.clearSelection());
   }
 );
 const extraReducersForFilter = (builder) => {