modal.jsx 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. import {Form, Input, InputNumber, message, Modal, Select, TimePicker} from 'antd';
  2. import axios from '@/utils/axios.js'
  3. import {useEffect} from 'react'
  4. import './modal.scss'
  5. import dayjs from "dayjs";
  6. import customParseFormat from 'dayjs/plugin/customParseFormat'
  7. export default function ModalHooks({isModalOpen, closeModal, row, lineList, option, val}) {
  8. const [messageApi, contextHolder] = message.useMessage();
  9. // 表单
  10. const [form] = Form.useForm();
  11. const directionOption = [
  12. {value: 2, label: '下行'},
  13. {value: 1, label: '上行'}
  14. ]
  15. let typeOptions = [
  16. {value: 1, label: '已完成'},
  17. {value: 2, label: '执行中'},
  18. {value: 3, label: '已处理'},
  19. {value: 4, label: '已下发'},
  20. {value: 5, label: '待发'},
  21. {value: 6, label: '调停'},
  22. {value: 7, label: '非运营'},
  23. ]
  24. /**
  25. *确定时候的回调
  26. */
  27. function handleOk() {
  28. // 验证表单
  29. form.validateFields().then(async () => {
  30. let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
  31. formData.dispatchTime = dayjs(formData.dispatchTime).format('HH:mm')
  32. formData.realityTime = dayjs(formData.realityTime).format('HH:mm')
  33. if (row?.id) {
  34. // 修改数据
  35. formData.id = row.id
  36. }
  37. let {code, message} = await axios.post('/lineOperateEdit/editBusLineOperate', [formData])
  38. if (code === 200) {
  39. messageApi.success(message)
  40. handleCancel()
  41. } else {
  42. messageApi.error(message)
  43. }
  44. })
  45. }
  46. // 关闭页面
  47. const handleCancel = () => {
  48. closeModal(false);
  49. form.resetFields()
  50. };
  51. // 表单
  52. useEffect(() => {
  53. form.setFieldValue('lineId', val)
  54. if (row.id) {
  55. dayjs.extend(customParseFormat)
  56. let formData = JSON.parse(JSON.stringify(row))
  57. formData.dispatchTime = dayjs(formData.dispatchTime, 'HH:mm')
  58. formData.realityTime = dayjs(formData.realityTime, 'HH:mm')
  59. form.setFieldsValue(formData)
  60. }
  61. }, [row])
  62. return (
  63. <div className="form">
  64. {contextHolder}
  65. <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
  66. width={900}
  67. cancelText="取消" okText="确定">
  68. <Form
  69. name="statics"
  70. form={form}
  71. wrapperCol={
  72. {span: 30, offset: 0}
  73. }
  74. layout='inline'
  75. initialValues={{
  76. remember: true,
  77. }}
  78. autoComplete="off"
  79. >
  80. <Form.Item
  81. label="线路"
  82. name="lineId"
  83. rules={[
  84. {
  85. required: true,
  86. message: '请输入',
  87. },
  88. ]}
  89. >
  90. <Select options={option} style={{width: '100%'}} disabled></Select>
  91. </Form.Item>
  92. <Form.Item
  93. label="电量"
  94. name="electricity"
  95. rules={[
  96. {
  97. required: true,
  98. message: '请输入',
  99. },
  100. ]}
  101. >
  102. <InputNumber style={{width: '100%'}}></InputNumber>
  103. </Form.Item>
  104. <Form.Item
  105. label="车牌号"
  106. name="licensePlate"
  107. rules={[
  108. {
  109. required: true,
  110. message: '请选择',
  111. },
  112. ]}
  113. >
  114. <Input></Input>
  115. </Form.Item>
  116. <Form.Item
  117. label="司机名称"
  118. name="driver"
  119. rules={[
  120. {
  121. required: true,
  122. message: '请输入',
  123. },
  124. ]}
  125. >
  126. <Input style={{width: '100%'}}/>
  127. </Form.Item>
  128. <Form.Item
  129. label="调度时间"
  130. name="dispatchTime"
  131. rules={[
  132. {
  133. required: true,
  134. message: '请输入',
  135. type: "object"
  136. },
  137. ]}
  138. >
  139. <TimePicker format={'HH:mm'} style={{width: '100%'}}></TimePicker>
  140. </Form.Item>
  141. <Form.Item
  142. label="实际发车时间"
  143. name="realityTime"
  144. rules={[
  145. {
  146. required: true,
  147. message: '请输入',
  148. type: "object"
  149. },
  150. ]}
  151. >
  152. <TimePicker format={'HH:mm'} style={{width: '100%'}}></TimePicker>
  153. </Form.Item>
  154. <Form.Item
  155. label="发车间隔-分钟"
  156. name="intervalTime"
  157. rules={[
  158. {
  159. required: true,
  160. message: '请输入',
  161. },
  162. ]}
  163. >
  164. <InputNumber style={{width: '100%'}}></InputNumber>
  165. </Form.Item>
  166. <Form.Item
  167. label="上/下行"
  168. name="direction"
  169. rules={[
  170. {
  171. required: true,
  172. message: '请输入',
  173. },
  174. ]}
  175. >
  176. <Select options={directionOption}></Select>
  177. </Form.Item>
  178. <Form.Item
  179. label="类型"
  180. name="type"
  181. rules={[
  182. {
  183. required: true,
  184. message: '请输入',
  185. },
  186. ]}
  187. >
  188. <Select options={typeOptions}></Select>
  189. </Form.Item>
  190. </Form>
  191. </Modal>
  192. </div>
  193. )
  194. }