index.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import { getUserInfoByIdAPI, userSaveAPI } from '@/store/action/Z1user'
  2. import { SaveUserType } from '@/types'
  3. import { MessageFu } from '@/utils/message'
  4. import { Button, Form, FormInstance, Input, Modal, Select } from 'antd'
  5. import React, { useCallback, useEffect, useRef } from 'react'
  6. import styles from './index.module.scss'
  7. import MyPopconfirm from '@/components/MyPopconfirm'
  8. type Props = {
  9. id: any
  10. closePage: () => void
  11. upTableList: () => void
  12. addTableList: () => void
  13. }
  14. function UserAdd({ id, closePage, upTableList, addTableList }: Props) {
  15. // 设置表单初始数据(区分编辑和新增)
  16. const FormBoxRef = useRef<FormInstance>(null)
  17. const getInfoInAPIFu = useCallback(async (id: number) => {
  18. const res = await getUserInfoByIdAPI(id)
  19. FormBoxRef.current?.setFieldsValue(res.data)
  20. // console.log("是编辑,在这里发请求拿数据", res);
  21. }, [])
  22. // 没有通过校验
  23. const onFinishFailed = useCallback(() => {
  24. // return MessageFu.warning("有表单不符号规则!");
  25. }, [])
  26. useEffect(() => {
  27. if (id) getInfoInAPIFu(id)
  28. else {
  29. FormBoxRef.current?.setFieldsValue({})
  30. }
  31. }, [getInfoInAPIFu, id])
  32. // 通过校验点击确定
  33. const onFinish = useCallback(
  34. async (values: any) => {
  35. const obj: SaveUserType = {
  36. ...values,
  37. id: id ? id : null
  38. }
  39. const res: any = await userSaveAPI(obj)
  40. if (res.code === 0) {
  41. MessageFu.success(id ? '编辑成功!' : '新增成功!')
  42. if (id) upTableList()
  43. else addTableList()
  44. closePage()
  45. }
  46. // console.log("通过校验,点击确定");
  47. },
  48. [addTableList, closePage, id, upTableList]
  49. )
  50. return (
  51. <Modal
  52. wrapClassName={styles.userAdd}
  53. destroyOnClose
  54. open={true}
  55. title={id ? '编辑用户' : '新增用户'}
  56. footer={
  57. [] // 设置footer为空,去掉 取消 确定默认按钮
  58. }
  59. >
  60. <div className='userAddMain'>
  61. <Form
  62. scrollToFirstError={true}
  63. ref={FormBoxRef}
  64. name='basic'
  65. labelCol={{ span: 5 }}
  66. onFinish={onFinish}
  67. onFinishFailed={onFinishFailed}
  68. autoComplete='off'
  69. >
  70. <Form.Item
  71. label='账号名'
  72. name='userName'
  73. rules={[
  74. { required: true, message: '请输入账号名!' },
  75. { min: 6, message: '最少6个字!' }
  76. ]}
  77. getValueFromEvent={e => e.target.value.replace(/\s+/g, '')}
  78. >
  79. <Input disabled={id} maxLength={15} showCount placeholder='请输入内容' />
  80. </Form.Item>
  81. <Form.Item
  82. label='真实姓名'
  83. name='realName'
  84. // rules={[{ required: true, message: "请输入真实姓名!" }]}
  85. getValueFromEvent={e => e.target.value.replace(/\s+/g, '')}
  86. >
  87. <Input maxLength={8} showCount placeholder='请输入内容' />
  88. </Form.Item>
  89. <Form.Item
  90. label='角色'
  91. name='roleId'
  92. rules={[{ required: true, message: '请选择角色!' }]}
  93. >
  94. <Select
  95. style={{ width: 240 }}
  96. placeholder='请选择'
  97. // 待完善sg -角色
  98. options={[]}
  99. fieldNames={{ value: 'id', label: 'roleName' }}
  100. />
  101. </Form.Item>
  102. {id ? null : <div className='passTit'>* 默认密码 Aa147852</div>}
  103. {/* 确定和取消按钮 */}
  104. <br />
  105. <Form.Item wrapperCol={{ offset: 9, span: 16 }}>
  106. <Button type='primary' htmlType='submit'>
  107. 提交
  108. </Button>
  109. &emsp;
  110. <MyPopconfirm txtK='取消' onConfirm={closePage} />
  111. </Form.Item>
  112. </Form>
  113. </div>
  114. </Modal>
  115. )
  116. }
  117. const MemoUserAdd = React.memo(UserAdd)
  118. export default MemoUserAdd