register.available.view.list.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React from 'react';
  2. import { useSelector, useDispatch } from 'react-redux';
  3. import { Card, Row, Col, Empty } from 'antd';
  4. import type { RootState } from '@/states/store'; // 假设RootState已定义
  5. import { View } from '@/states/patient/viewSelection';
  6. import { addSelectedView } from '@/states/patient/viewSelection';
  7. const RegisterViewList: React.FC = () => {
  8. // 监听selectedViews
  9. const availableViews = useSelector(
  10. (state: RootState) => state.viewSelection.availableViews
  11. );
  12. const dispatch = useDispatch();
  13. const handleCardClick = (view: View) => {
  14. dispatch(addSelectedView(view));
  15. };
  16. return (
  17. <div>
  18. <Row gutter={[16, 16]}>
  19. {availableViews.length === 0 ? (
  20. <Col span={24}>
  21. <Empty description="暂无已选择体位" />
  22. </Col>
  23. ) : (
  24. availableViews.map((view) => (
  25. <Col key={view.internal_id} xs={24} sm={12} md={8} lg={6}>
  26. {/* 若有自定义ProcedureViewCard组件可替换Card */}
  27. <Card
  28. title={view.view_name}
  29. bordered
  30. onClick={() => handleCardClick(view)}
  31. >
  32. <div>{view.view_description}</div>
  33. {/* 可根据需要展示更多字段 */}
  34. </Card>
  35. </Col>
  36. ))
  37. )}
  38. </Row>
  39. </div>
  40. );
  41. };
  42. export default RegisterViewList;