CheckForm.jsx 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import React from 'react';
  2. import dayjs from 'dayjs';
  3. import { EditOutlined } from '@ant-design/icons';
  4. import { Card, Tabs, Button, Form, Input, DatePicker } from 'antd';
  5. import { ModalForm } from '@ant-design/pro-components';
  6. import { postTaCheck, putTaCheck } from '@/service/tacheck';
  7. import { useNavigate } from "react-router-dom";
  8. export default (props) => {
  9. const navigate = useNavigate();
  10. const { checkInfo, onChange, onTabChange } = props;
  11. const [open, setOpen] = React.useState(false);
  12. const [form] = Form.useForm();
  13. const onEdit = () => {
  14. setOpen(true);
  15. }
  16. const title = checkInfo ? checkInfo.title : <div onClick={onEdit}>点击编辑创建</div>;
  17. const dateStr = checkInfo ? `${checkInfo.startDate} ~ ${checkInfo.endDate}` : '';
  18. const onFinish = async (values) => {
  19. const data = {
  20. ...values,
  21. startDate: dayjs(values.startDate).format('YYYY-MM-DD'),
  22. endDate: dayjs(values.endDate).format('YYYY-MM-DD'),
  23. }
  24. if (!checkInfo) {
  25. const res = await postTaCheck(data);
  26. onChange(res);
  27. } else {
  28. const res = await putTaCheck(checkInfo.checkId, data);
  29. onChange(res);
  30. }
  31. return true;
  32. }
  33. React.useEffect(() => {
  34. if (checkInfo) {
  35. form.setFieldsValue({
  36. ...checkInfo,
  37. startDate: dayjs(checkInfo.startDate),
  38. endDate: dayjs(checkInfo.endDate),
  39. });
  40. }
  41. }, [checkInfo]);
  42. return (
  43. <Card bodyStyle={{ padding: 0 }}>
  44. <div style={{ display: 'flex', padding: '1em', alignItems: 'center' }}>
  45. <div style={{ flex: 'none' }}><Button type="link" onClick={onEdit} icon={<EditOutlined />} /></div>
  46. <div style={{ flex: 'none', margin: '0 1em' }}>{dateStr}</div>
  47. <div style={{ flex: '1', fontSize: '1.6em' }}>{title}</div>
  48. <div style={{ flex: 'none', fontSize: '1.6em' }}><Button type="primary" onClick={() => navigate(-1)}>返回</Button></div>
  49. </div>
  50. <Tabs
  51. defaultActiveKey='1'
  52. onChange={onTabChange}
  53. tabBarStyle={{ margin: '0 2em' }}
  54. items={[
  55. {
  56. label: '实地测评',
  57. key: '1',
  58. },
  59. {
  60. label: '问卷调查',
  61. key: '2',
  62. }
  63. ]}
  64. />
  65. <ModalForm title="测评维护" open={open} width={480} form={form} onFinish={onFinish} onOpenChange={setOpen}>
  66. <Form.Item name="title" label="测评名称" required>
  67. <Input placeholder="请输入测评名称" />
  68. </Form.Item>
  69. <Form.Item name="startDate" label="开始时间" required>
  70. <DatePicker placeholder="请选择" style={{ width: '100%' }} />
  71. </Form.Item>
  72. <Form.Item name="endDate" label="结束时间" required>
  73. <DatePicker placeholder="请选择" style={{ width: '100%' }} />
  74. </Form.Item>
  75. </ModalForm>
  76. </Card>
  77. )
  78. }