|
@@ -1,7 +1,10 @@
|
|
|
import React from 'react';
|
|
|
import { Button, Tooltip, Modal, message } from 'antd';
|
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
|
-import { deleteWorkThunk } from '@/states/patient/worklist/slices/workSlice';
|
|
|
+import {
|
|
|
+ deleteWorkThunk,
|
|
|
+ lockWorkInWorklistThunk,
|
|
|
+} from '@/states/patient/worklist/slices/workSlice';
|
|
|
import { switchToSendPanel } from '@/states/patient/worklist/slices/historyPanelSwitchSlice';
|
|
|
import { FormattedMessage } from 'react-intl';
|
|
|
import { AppDispatch, RootState, useAppSelector } from '@/states/store';
|
|
@@ -38,6 +41,15 @@ const ActionPanel: React.FC = () => {
|
|
|
(state: RootState) => state.diagnosticReport.visible
|
|
|
);
|
|
|
const themeType = useAppSelector((state) => state.theme.themeType);
|
|
|
+ const currentKey = useSelector(
|
|
|
+ (state: RootState) => state.BusinessFlow.currentKey
|
|
|
+ );
|
|
|
+ const workEntities = useSelector(
|
|
|
+ (state: RootState) => state.workEntities.data
|
|
|
+ );
|
|
|
+ const workEntitiesFromHistory = useSelector(
|
|
|
+ (state: RootState) => state.historyEntities.data
|
|
|
+ );
|
|
|
// 使用 worklist 或 history 的选中项,取决于哪个有值
|
|
|
const selectedIds =
|
|
|
workSelectedIds.length > 0 ? workSelectedIds : historySelectedIds;
|
|
@@ -68,6 +80,40 @@ 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;
|
|
|
+ };
|
|
|
+ const handleLock = () => {
|
|
|
+ const selectedIds = getSelectedWorkIds();
|
|
|
+
|
|
|
+ // 2. 检查是否有选中项
|
|
|
+ if (selectedIds.length === 0) {
|
|
|
+ message.warning('请先选择要锁定/解锁的项目');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 3. 获取第一个选中项的锁定状态
|
|
|
+ const works = getWorksFromWorklistOrHistory();
|
|
|
+ const selectedItem = works.find((item) => item.StudyID === selectedIds[0]);
|
|
|
+ if (!selectedItem) return;
|
|
|
+
|
|
|
+ // 4. 根据当前状态切换
|
|
|
+ const newLockState =
|
|
|
+ selectedItem.StudyLock === 'Locked' ? 'Unlocked' : 'Locked';
|
|
|
+
|
|
|
+ // 为每个选中项执行锁定/解锁操作
|
|
|
+ selectedIds.forEach((studyId) => {
|
|
|
+ console.log(
|
|
|
+ `锁定,触发action ,目标 studyid是 ${studyId},新状态是 ${newLockState}`
|
|
|
+ );
|
|
|
+ dispatch(lockWorkInWorklistThunk({ studyId, lock: newLockState }));
|
|
|
+ });
|
|
|
+ };
|
|
|
|
|
|
return (
|
|
|
<div className="flex flex-wrap gap-2 w-full">
|
|
@@ -125,6 +171,7 @@ const ActionPanel: React.FC = () => {
|
|
|
defaultMessage="actionPanel.lockTask"
|
|
|
/>
|
|
|
}
|
|
|
+ onClick={handleLock}
|
|
|
/>
|
|
|
<ActionButton
|
|
|
icon={
|