AddRecord.jsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import React, { useRef, useState } from 'react'
  2. import { Form, Button, Radio, DatePicker, Switch } from 'antd'
  3. import { dayjsFormat } from '@/utils/utils'
  4. import { Plus } from '@icon-park/react'
  5. import dayjs from 'dayjs'
  6. import ModalDragForm from '@/components/Modal/src/components/ModalDragForm'
  7. import { ProFormTextArea } from '@ant-design/pro-form'
  8. const AddRecord = props => {
  9. const formRef = useRef(null)
  10. const { onConfirm } = props
  11. const [showExtraItem, setShowExtraItem] = useState(false)
  12. const onChange = value => {
  13. setShowExtraItem(value)
  14. }
  15. const disabledDate = current => {
  16. return current && current < dayjs().endOf('day')
  17. }
  18. return (
  19. <ModalDragForm
  20. modalProps={{ zIndex: 1060, getContainer: false }}
  21. layout="vertical"
  22. title="添加服务记录"
  23. formRef={formRef}
  24. onVisibleChange={e => !e && onChange(e)}
  25. trigger={
  26. <Button type="primary" ghost size="small" className="mr-1">
  27. <Plus className="mr-1" /> 添加服务记录
  28. </Button>
  29. }
  30. onFinish={async values => {
  31. try {
  32. const newVal = { ...values }
  33. formRef.current?.resetFields()
  34. if (values.date) {
  35. newVal.date = dayjsFormat(values.date, 'YYYY-MM-DD')
  36. }
  37. if (values.remindTime) {
  38. newVal.remindTime = dayjsFormat(values.remindTime, 'YYYY-MM-DD')
  39. }
  40. await onConfirm(newVal)
  41. return true
  42. } catch (error) {
  43. return false
  44. }
  45. }}>
  46. <Form.Item name="status" rules={[{ required: true, message: '请选择类型' }]}>
  47. <Radio.Group>
  48. <Radio value={1}>上门服务</Radio>
  49. <Radio value={2}>电话拜访</Radio>
  50. <Radio value={3}>其他事项</Radio>
  51. <Radio value={4}>在线服务</Radio>
  52. </Radio.Group>
  53. </Form.Item>
  54. <Form.Item name="date" label="服务日期" initialValue={dayjs(new Date())}>
  55. <DatePicker style={{ width: '100%' }} />
  56. </Form.Item>
  57. <ProFormTextArea name="mark" label="内容" />
  58. <div className="pb-5">
  59. <Switch onChange={onChange} checked={showExtraItem} />
  60. <span className="ml-2">添加备忘录</span>
  61. </div>
  62. {showExtraItem ? (
  63. <>
  64. <Form.Item name="remindTime" label="备忘日期" required={true}>
  65. <DatePicker style={{ width: '100%' }} disabledDate={disabledDate} />
  66. </Form.Item>
  67. <ProFormTextArea name="remarks" label="备忘内容" />
  68. </>
  69. ) : null}
  70. </ModalDragForm>
  71. )
  72. }
  73. export default AddRecord