modal.jsx 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import {Form, Input, InputNumber, message, Modal, Select} from 'antd';
  2. import axios from '@/utils/axios.js'
  3. import {useEffect} from 'react'
  4. import './modal.scss'
  5. export default function ModalHooks({isModalOpen, closeModal, row, lineList, option}) {
  6. const [messageApi, contextHolder] = message.useMessage();
  7. // 表单
  8. const [form] = Form.useForm();
  9. // 下拉选项
  10. const modelOption = [
  11. {value: 0, label: '上行'},
  12. {value: 1, label: '下行'}
  13. ]
  14. /**
  15. *确定时候的回调
  16. */
  17. function handleOk() {
  18. // 验证表单
  19. form.validateFields().then(async () => {
  20. let newData = JSON.parse(JSON.stringify(form.getFieldsValue()))
  21. if (row?.id) {
  22. // 修改数据
  23. newData.id = row.id
  24. }
  25. let {code, message} = await axios.post('/homePageEdit/editDepartPunctualityRate', [newData])
  26. if (code === 200) {
  27. messageApi.success(message)
  28. handleCancel()
  29. } else {
  30. messageApi.error(message)
  31. }
  32. })
  33. }
  34. // 关闭页面
  35. const handleCancel = () => {
  36. closeModal(false);
  37. form.resetFields()
  38. };
  39. /**
  40. * 线路名称下拉列表
  41. * @param id 数据
  42. */
  43. function setSelectedItems(id) {
  44. // 找到当条值
  45. let i = lineList.find(item => item.lineId === id)
  46. // 站点数据
  47. let stationList = i.lineModeList[0].modeStationsList
  48. form.setFieldValue('startStation', stationList[0].stationName)
  49. stationList.reverse()
  50. form.setFieldValue('endStation', stationList.find((item => item.direction === 1)).stationName)
  51. }
  52. // 表单
  53. useEffect(() => {
  54. if (row.id) {
  55. let formData = JSON.parse(JSON.stringify(row))
  56. form.setFieldsValue(formData)
  57. }
  58. }, [row])
  59. return (
  60. <div className="form">
  61. {contextHolder}
  62. <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
  63. width={900}
  64. cancelText="取消" okText="确定">
  65. <Form
  66. name="statics"
  67. form={form}
  68. wrapperCol={
  69. {span: 30, offset: 0}
  70. }
  71. layout='inline'
  72. initialValues={{
  73. remember: true,
  74. }}
  75. autoComplete="off"
  76. >
  77. <Form.Item
  78. label="线路名称"
  79. name="lineId"
  80. rules={[
  81. {
  82. required: true,
  83. message: '请选择线路名称',
  84. },
  85. ]}
  86. >
  87. <Select options={option} onChange={setSelectedItems}></Select>
  88. </Form.Item>
  89. <Form.Item
  90. label="跑法"
  91. name="modelId"
  92. rules={[
  93. {
  94. required: true,
  95. message: '请选择跑法',
  96. },
  97. ]}
  98. >
  99. <Select options={modelOption}></Select>
  100. </Form.Item>
  101. <Form.Item
  102. label="发车总数"
  103. name="total"
  104. rules={[
  105. {
  106. required: true,
  107. message: '请输入发车总数',
  108. },
  109. ]}
  110. >
  111. <InputNumber style={{width: '100%'}}/>
  112. </Form.Item>
  113. <Form.Item
  114. label="准点数"
  115. name="onTime"
  116. rules={[
  117. {
  118. required: true,
  119. message: '请输入准点数',
  120. },
  121. ]}
  122. >
  123. <InputNumber style={{width: '100%'}}/>
  124. </Form.Item>
  125. <Form.Item
  126. label="开始站点"
  127. name="startStation"
  128. rules={[
  129. {
  130. required: true,
  131. message: '请选择站点',
  132. },
  133. ]}
  134. >
  135. <Input style={{width: '100%'}} disabled/>
  136. </Form.Item>
  137. <Form.Item
  138. label="结束站点"
  139. name="endStation"
  140. rules={[
  141. {
  142. message: '请输入满意度',
  143. },
  144. ]}
  145. >
  146. <Input style={{width: '100%'}} disabled/>
  147. </Form.Item>
  148. <Form.Item
  149. label="车牌"
  150. name="licensePlate"
  151. rules={[
  152. {
  153. required: true,
  154. message: '请输入',
  155. },
  156. ]}
  157. >
  158. <Input></Input>
  159. </Form.Item>
  160. </Form>
  161. </Modal>
  162. </div>
  163. )
  164. }