|
|
@@ -1,7 +1,9 @@
|
|
|
import React, { Suspense, lazy } from 'react';
|
|
|
import { Tabs } from 'antd';
|
|
|
import { FormattedMessage } from 'react-intl';
|
|
|
-
|
|
|
+interface PatientManagementProps {
|
|
|
+ className?: string;
|
|
|
+}
|
|
|
// 懒加载各子页面
|
|
|
const WorklistPage = lazy(() => import('./worklist'));
|
|
|
const OutputListPage = lazy(() => import('./OutputList'));
|
|
|
@@ -10,90 +12,121 @@ const ArchiveListPage = lazy(() => import('./ArchiveList'));
|
|
|
const BinPage = lazy(() => import('./Bin'));
|
|
|
const RegisterPage = lazy(() => import('./register'));
|
|
|
|
|
|
-const { TabPane } = Tabs;
|
|
|
|
|
|
-const PatientManagement: React.FC = () => {
|
|
|
+
|
|
|
+const PatientManagement: React.FC<PatientManagementProps> = ({ className }) => {
|
|
|
+ const items = [
|
|
|
+ {
|
|
|
+ key: 'worklist',
|
|
|
+ label: (
|
|
|
+ <FormattedMessage
|
|
|
+ id="patient.tab.worklist"
|
|
|
+ defaultMessage="Worklist"
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ children: (
|
|
|
+ <Suspense fallback={null}>
|
|
|
+ <WorklistPage />
|
|
|
+ </Suspense>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'output',
|
|
|
+ label: (
|
|
|
+ <FormattedMessage id="patient.tab.output" defaultMessage="Output" />
|
|
|
+ ),
|
|
|
+ children: (
|
|
|
+ <Suspense fallback={null}>
|
|
|
+ <OutputListPage />
|
|
|
+ </Suspense>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'history',
|
|
|
+ label: (
|
|
|
+ <FormattedMessage
|
|
|
+ id="patient.tab.history"
|
|
|
+ defaultMessage="History"
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ children: (
|
|
|
+ <Suspense fallback={null}>
|
|
|
+ <HistoryListPage />
|
|
|
+ </Suspense>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'archive',
|
|
|
+ label: (
|
|
|
+ <FormattedMessage
|
|
|
+ id="patient.tab.archive"
|
|
|
+ defaultMessage="Archive"
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ children: (
|
|
|
+ <Suspense fallback={null}>
|
|
|
+ <ArchiveListPage />
|
|
|
+ </Suspense>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'bin',
|
|
|
+ label: <FormattedMessage id="patient.tab.bin" defaultMessage="Bin" />,
|
|
|
+ children: (
|
|
|
+ <Suspense fallback={null}>
|
|
|
+ <BinPage />
|
|
|
+ </Suspense>
|
|
|
+ ),
|
|
|
+ 'data-testid': 'bin-tab-pane'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'register',
|
|
|
+ label: (
|
|
|
+ <FormattedMessage
|
|
|
+ id="patient.tab.register"
|
|
|
+ defaultMessage="Register"
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ children: (
|
|
|
+ <Suspense fallback={null}>
|
|
|
+ <RegisterPage />
|
|
|
+ </Suspense>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
return (
|
|
|
- <div className="h-full flex flex-col">
|
|
|
+ <>
|
|
|
+ <style>{`
|
|
|
+ .patient-management-tabs .ant-tabs-content-holder {
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ }
|
|
|
+
|
|
|
+ .patient-management-tabs .ant-tabs-content {
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ }
|
|
|
+
|
|
|
+ .patient-management-tabs .ant-tabs-tabpane {
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ }
|
|
|
+ `}</style>
|
|
|
+ <div className={`${className ? `${className} h-full flex flex-col` : 'h-full flex flex-col'}`}>
|
|
|
<Tabs
|
|
|
+ data-testid="patient-management-tabs"
|
|
|
defaultActiveKey="worklist"
|
|
|
type="line"
|
|
|
- className="flex-1 h-full"
|
|
|
tabBarGutter={32}
|
|
|
destroyInactiveTabPane
|
|
|
- >
|
|
|
- <TabPane
|
|
|
- tab={
|
|
|
- <FormattedMessage
|
|
|
- id="patient.tab.worklist"
|
|
|
- defaultMessage="Worklist"
|
|
|
- />
|
|
|
- }
|
|
|
- key="worklist"
|
|
|
- >
|
|
|
- <Suspense fallback={null}>
|
|
|
- <WorklistPage />
|
|
|
- </Suspense>
|
|
|
- </TabPane>
|
|
|
- <TabPane
|
|
|
- tab={
|
|
|
- <FormattedMessage id="patient.tab.output" defaultMessage="Output" />
|
|
|
- }
|
|
|
- key="output"
|
|
|
- >
|
|
|
- <Suspense fallback={null}>
|
|
|
- <OutputListPage />
|
|
|
- </Suspense>
|
|
|
- </TabPane>
|
|
|
- <TabPane
|
|
|
- tab={
|
|
|
- <FormattedMessage
|
|
|
- id="patient.tab.history"
|
|
|
- defaultMessage="History"
|
|
|
- />
|
|
|
- }
|
|
|
- key="history"
|
|
|
- >
|
|
|
- <Suspense fallback={null}>
|
|
|
- <HistoryListPage />
|
|
|
- </Suspense>
|
|
|
- </TabPane>
|
|
|
- <TabPane
|
|
|
- tab={
|
|
|
- <FormattedMessage
|
|
|
- id="patient.tab.archive"
|
|
|
- defaultMessage="Archive"
|
|
|
- />
|
|
|
- }
|
|
|
- key="archive"
|
|
|
- >
|
|
|
- <Suspense fallback={null}>
|
|
|
- <ArchiveListPage />
|
|
|
- </Suspense>
|
|
|
- </TabPane>
|
|
|
- <TabPane
|
|
|
- tab={<FormattedMessage id="patient.tab.bin" defaultMessage="Bin" />}
|
|
|
- key="bin"
|
|
|
- >
|
|
|
- <Suspense fallback={null}>
|
|
|
- <BinPage />
|
|
|
- </Suspense>
|
|
|
- </TabPane>
|
|
|
- <TabPane
|
|
|
- tab={
|
|
|
- <FormattedMessage
|
|
|
- id="patient.tab.register"
|
|
|
- defaultMessage="Register"
|
|
|
- />
|
|
|
- }
|
|
|
- key="register"
|
|
|
- >
|
|
|
- <Suspense fallback={null}>
|
|
|
- <RegisterPage />
|
|
|
- </Suspense>
|
|
|
- </TabPane>
|
|
|
- </Tabs>
|
|
|
- </div>
|
|
|
+ items={items}
|
|
|
+ className="patient-management-tabs flex-1 h-full"
|
|
|
+ />
|
|
|
+ </div></>
|
|
|
);
|
|
|
};
|
|
|
|