modal.jsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import {Form, Input, message, Modal, Select} from 'antd';
  2. import axios from '@/utils/axios.js'
  3. import {useEffect} from 'react'
  4. export default function ModalHooks({isModalOpen, closeModal, row}) {
  5. const [messageApi, contextHolder] = message.useMessage();
  6. // 表单
  7. const [form] = Form.useForm();
  8. // 下拉选项
  9. const selectOption = [
  10. {value: 0, label: '管理员'},
  11. {value: 1, label: '访客'}
  12. ]
  13. /**
  14. *确定时候的回调
  15. */
  16. function handleOk() {
  17. // 验证表单
  18. form.validateFields().then(async () => {
  19. let newData = JSON.parse(JSON.stringify(form.getFieldsValue()))
  20. if (row?.id) {
  21. // 修改数据
  22. newData.id = row.id
  23. }
  24. let {code, message} = await axios.post('/sys/saveOrUpdate', newData)
  25. if (code === 200) {
  26. messageApi.success(message)
  27. handleCancel()
  28. } else {
  29. messageApi.error(message)
  30. }
  31. })
  32. }
  33. // 关闭页面
  34. const handleCancel = () => {
  35. closeModal(false);
  36. form.resetFields()
  37. };
  38. // 表单
  39. useEffect(() => {
  40. // console.log(row)
  41. if (row.id) {
  42. let formData = JSON.parse(JSON.stringify(row))
  43. form.setFieldsValue(formData)
  44. }
  45. }, [row])
  46. return (
  47. <div className="form">
  48. {contextHolder}
  49. <Modal title={row?.id ? '修改用户' : '新增用户'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
  50. width={900}
  51. cancelText="取消" okText="确定">
  52. <Form
  53. name="basic"
  54. form={form}
  55. wrapperCol={
  56. {span: 30, offset: 0}
  57. }
  58. layout='inline'
  59. initialValues={{
  60. remember: true,
  61. }}
  62. autoComplete="off"
  63. >
  64. <Form.Item
  65. label="用户名"
  66. name="account"
  67. rules={[
  68. {
  69. required: true,
  70. message: '请输入用户名',
  71. },
  72. ]}
  73. >
  74. <Input/>
  75. </Form.Item>
  76. <Form.Item
  77. label="密码"
  78. name="password"
  79. rules={[
  80. {
  81. required: true,
  82. message: '请输入6位以上密码',
  83. min: 6
  84. },
  85. ]}
  86. >
  87. <Input.Password disabled={row?.id}/>
  88. </Form.Item>
  89. <Form.Item
  90. label="姓名"
  91. name="name"
  92. rules={[
  93. {
  94. required: true,
  95. message: '请输入姓名',
  96. },
  97. ]}
  98. >
  99. <Input/>
  100. </Form.Item>
  101. <Form.Item
  102. label="手机号"
  103. name="phone"
  104. rules={[
  105. {
  106. required: true,
  107. message: '请输入11位手机号',
  108. len: 11
  109. },
  110. ]}
  111. >
  112. <Input style={{width: 183}}/>
  113. </Form.Item>
  114. <Form.Item
  115. label="类型"
  116. name="type"
  117. rules={[
  118. {
  119. required: true,
  120. message: '请输入类型',
  121. },
  122. ]}
  123. >
  124. <Select options={selectOption} style={{width: 205}}>
  125. </Select>
  126. </Form.Item>
  127. <Form.Item
  128. label="备注"
  129. name="remark"
  130. rules={[
  131. {
  132. required: false,
  133. message: '请输入备注',
  134. },
  135. ]}
  136. >
  137. <Input.TextArea style={{width: 188}}/>
  138. </Form.Item>
  139. </Form>
  140. </Modal>
  141. </div>
  142. )
  143. }