register.tsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import React from 'react';
  2. import { Row, Col, Collapse, Grid, Divider, Button, Space, Form } from 'antd';
  3. import { FormattedMessage } from 'react-intl';
  4. import BasicInfoForm from './components/register.form';
  5. import SelectedProtocolList from './components/register.selected.view.list';
  6. import RegisterAvailableList from './components/register.available.list';
  7. import { registerWork } from '@/API/patient/workActions';
  8. import useRegisterState from '@/hooks/useRegisterState';
  9. const { useBreakpoint } = Grid;
  10. const { Panel } = Collapse;
  11. const RegisterPage: React.FC = () => {
  12. const screens = useBreakpoint();
  13. const [form] = Form.useForm();
  14. const { selectedViews, currentPatientType } = useRegisterState();
  15. const handleRegister = async () => {
  16. try {
  17. const work = {
  18. ...form.getFieldsValue(),
  19. patient_type: currentPatientType?.patient_type_id,
  20. modality: 'dx',
  21. study_type: 'Normal',
  22. views: selectedViews.map((view) => ({
  23. view_id: view.view_id,
  24. procedure_id: 'aaa',
  25. })),
  26. };
  27. const response = await registerWork(work);
  28. console.log('Work registered successfully:', response);
  29. } catch (error) {
  30. console.error('Error registering work:', error);
  31. }
  32. };
  33. return (
  34. <>
  35. {screens.xl || screens.xxl ? (
  36. <Row className="flex-1 h-full">
  37. <Col
  38. xs={24}
  39. sm={24}
  40. md={8}
  41. lg={8}
  42. xl={8}
  43. xxl={8}
  44. style={{
  45. display: 'flex',
  46. flexDirection: 'column',
  47. }}
  48. className="h-full"
  49. >
  50. <BasicInfoForm form={form} style={{ overflow: 'auto' }} />
  51. </Col>
  52. <Col xs={24} sm={24} md={8} lg={8} xl={8} xxl={8} className="h-full">
  53. <RegisterAvailableList />
  54. </Col>
  55. <Col xs={24} sm={24} md={8} lg={8} xl={8} xxl={8}>
  56. <SelectedProtocolList />
  57. </Col>
  58. </Row>
  59. ) : screens.md || screens.lg ? (
  60. <Row className="h-full flex-1 ">
  61. <Col
  62. xs={24}
  63. sm={24}
  64. md={12}
  65. lg={12}
  66. className="h-full flex flex-column"
  67. >
  68. <BasicInfoForm
  69. form={form}
  70. style={{ overflow: 'auto', width: '100%' }}
  71. />
  72. </Col>
  73. <Col xs={24} sm={24} md={12} lg={12}>
  74. <Row gutter={[0, 16]}>
  75. <Col span={24}>
  76. <RegisterAvailableList />
  77. </Col>
  78. <Divider />
  79. <Col span={24}>
  80. <SelectedProtocolList className="" />
  81. </Col>
  82. </Row>
  83. </Col>
  84. </Row>
  85. ) : (
  86. <Collapse
  87. accordion
  88. defaultActiveKey={['1']}
  89. style={{ overflow: 'auto', height: '100%' }}
  90. >
  91. <Panel
  92. header={
  93. <FormattedMessage
  94. id="register.basicInfoPanel"
  95. defaultMessage="register.basicInfoPanel"
  96. />
  97. }
  98. key="1"
  99. >
  100. <BasicInfoForm form={form} />
  101. </Panel>
  102. <Panel
  103. header={
  104. <FormattedMessage
  105. id="register.protocolListPanel"
  106. defaultMessage="register.protocolListPanel"
  107. />
  108. }
  109. key="2"
  110. >
  111. <RegisterAvailableList />
  112. </Panel>
  113. <Panel
  114. header={
  115. <FormattedMessage
  116. id="register.selectedProtocolListPanel"
  117. defaultMessage="register.selectedProtocolListPanel"
  118. />
  119. }
  120. key="3"
  121. >
  122. <SelectedProtocolList />
  123. </Panel>
  124. </Collapse>
  125. )}
  126. <Space
  127. style={{
  128. position: 'fixed',
  129. bottom: '20px',
  130. right: '20px',
  131. zIndex: 1000,
  132. }}
  133. >
  134. <Button type="primary" onClick={handleRegister}>
  135. 注册
  136. </Button>
  137. <Button type="default">检查</Button>
  138. </Space>
  139. </>
  140. );
  141. };
  142. export default RegisterPage;