ExamExitFeedback.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React from 'react';
  2. import { Modal, Button, Space } from 'antd';
  3. import { ExclamationCircleFilled } from '@ant-design/icons';
  4. export interface ExamExitFeedbackProps {
  5. /** 是否显示组件 */
  6. open: boolean;
  7. /** 点击"挂起"按钮的处理函数 */
  8. onContinue: () => void;
  9. /** 点击"保存并完成"按钮的处理函数 */
  10. onSave: () => void;
  11. /** 点击"直接中止"按钮的处理函数 */
  12. onAbort: () => void;
  13. /** 自定义标题 */
  14. title?: string;
  15. /** 自定义提示内容 */
  16. message?: string;
  17. }
  18. const ExamExitFeedback: React.FC<ExamExitFeedbackProps> = ({
  19. open,
  20. onContinue,
  21. onSave,
  22. onAbort,
  23. title = '检查未完成',
  24. message = '当前检查的曝光步骤尚未完成。中止后,本次检查的进度将不会保存。',
  25. }) => {
  26. return (
  27. <Modal
  28. title={
  29. <Space>
  30. <ExclamationCircleFilled style={{ color: '#faad14' }} />
  31. <span>{title}</span>
  32. </Space>
  33. }
  34. open={open}
  35. onCancel={onContinue}
  36. footer={
  37. <Space>
  38. <Button onClick={onContinue}>继续检查</Button>
  39. <Button type="primary" onClick={onSave}>
  40. 保存并完成
  41. </Button>
  42. <Button type="primary" danger onClick={onAbort}>
  43. 直接中止
  44. </Button>
  45. </Space>
  46. }
  47. centered
  48. closable={false}
  49. >
  50. <p>{message}</p>
  51. </Modal>
  52. );
  53. };
  54. export default ExamExitFeedback;