import { Button, Form, Input, notification, Select } from 'antd'; import TextArea from 'antd/lib/input/TextArea'; import { stringify } from 'qs'; import type React from 'react'; import { useImperativeHandle, useState } from 'react'; import ModalPlugin from '@/components/ModalPlugin'; import { stateOptions, userSexOptions } from '@/configs/usersConfig'; import { UserServices } from '@/services/UserServices'; import type { IRef } from '@/utils/type'; import { useRequest } from '@/utils/useRequest'; interface IProps extends IRef { onCallback?: () => void; } export type IUserEditModalType = { show: (data?: any) => void; }; export const UserEditModal: React.FC = (props) => { const [open, setOpen] = useState(false); const [title, setTitle] = useState(''); const [form] = Form.useForm(); const [data, setData] = useState(null); // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { notification.success({ message: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); // 提交成功重置表单 } }; const { loading: addLoading, request: addRequest } = useRequest(UserServices.add, { onSuccess: success }); const { loading: editLoading, request: editRequest } = useRequest(UserServices.edit, { onSuccess: success }); const save = async () => { try { const values = await form.validateFields(); // 编辑场景带上主键 if (data?.user_id) { values.user_id = data.user_id; editRequest(stringify(values)); } else { addRequest(stringify(values)); } } catch (error) { console.log('表单验证未通过', error); } }; useImperativeHandle(props.ref, () => ({ show: (data?: any) => { setTitle(data ? `${data.login_name} 编辑` : '新增'); setOpen(true); setData(data); if (data) { // 编辑场景初始化表单 form.setFieldsValue({ login_name: data.login_name, user_phone: data.user_phone, user_mail: data.user_mail, nick_name: data.nick_name, password: '', // 密码编辑可选 comments: data.comments, user_sex: String(data.user_sex), state: String(data.state), }); } else { form.resetFields(); form.setFieldsValue({ user_sex: '1', state: '1', }); } }, })); return ( setOpen(false)} title={title} footer={[ , , ]} >
不填写则系统自动生成初始密码} rules={[{ min: 6, max: 18, message: '密码需6~18位' }]} > {!data?.user_id && ( )}