import React, { useState, useEffect } from 'react'; import { Row, Col, Button, Drawer, Grid } from 'antd'; import { SettingOutlined } from '@ant-design/icons'; import { FormattedMessage } from 'react-intl'; import WorklistTable from './components/WorklistTable'; import BinOperationPanel from './components/BinOperationPanel'; import GenericPagination from '../../components/GenericPagination'; import PatientPortraitFloat from './components/PatientPortraitFloat'; import { useAppDispatch, useAppSelector } from '../../states/store'; import { fetchBinThunk, binSelectionSlice, binPaginationSlice, binFiltersSlice, } from '../../states/patient/bin/slices/binSlice'; import { fetchDiskInfoThunk } from '../../states/patient/bin/slices/binDiskInfoSlice'; import { Task } from '@/domain/work'; const { useBreakpoint } = Grid; const BinPage: React.FC = () => { const screens = useBreakpoint(); const [drawerVisible, setDrawerVisible] = useState(false); const [selectedPatientForPortrait, setSelectedPatientForPortrait] = useState(null); const dispatch = useAppDispatch(); // 从Redux获取状态 const binData = useAppSelector((state) => state.binEntities.data); const page = useAppSelector((state) => state.binPagination.page); const pageSize = useAppSelector((state) => state.binPagination.pageSize); const filters = useAppSelector((state) => state.binFilters); const selectedIds = useAppSelector((state) => state.binSelection.selectedIds); // 初始加载数据 useEffect(() => { console.log('Bin页面加载,获取回收站数据'); dispatch(fetchBinThunk({ page, pageSize, filters })); dispatch(fetchDiskInfoThunk()); }, []); // 监听filters和分页变化,重新获取数据 useEffect(() => { console.log('回收站过滤条件或分页变化,重新获取数据'); dispatch(fetchBinThunk({ page, pageSize, filters })); }, [filters, page, pageSize, dispatch]); // 同步分页到filters useEffect(() => { dispatch( binFiltersSlice.actions.setFilters({ page, page_size: pageSize, }) ); }, [dispatch, page, pageSize]); // 处理行点击事件 const handleRowClick = (record: Task) => { const studyId = record.StudyID; const newSelectedIds = [studyId]; // 设置选中患者用于显示照片 setSelectedPatientForPortrait(record); // 更新 Redux 状态 dispatch(binSelectionSlice.actions.setSelectedIds(newSelectedIds)); }; return (
{/* 患者照片浮动组件 */} setSelectedPatientForPortrait(null)} /> {screens.xs ? ( <>
{}} />
state.binPagination} entitiesSelector={(state) => state.binEntities} paginationActions={binPaginationSlice.actions} className="border-t" />
); }; export default BinPage;