import { App, Button, Form, Input, Select } from 'antd'; import { stringify } from 'qs'; import type React from 'react'; import { useImperativeHandle, useState } from 'react'; import ModalPlugin from '@/components/ModalPlugin'; import { statusOptions } from '@/configs/adminConfig'; import { AdminDepartmentServices } from '@/services/AdminDepartmentServices'; import { AdminGroupServices } from '@/services/AdminGroupServices'; import { AdminServices } from '@/services/AdminServices'; import { toArray } from '@/utils/common'; import type { IOption, IRef } from '@/utils/type'; import { useRequest } from '@/utils/useRequest'; interface IProps extends IRef { onCallback?: () => void; } export type IAdminEditModalType = { show: (data?: any) => void; }; export const AdminEditModal: React.FC = (props) => { const [open, setOpen] = useState(false); const [title, setTitle] = useState(''); const [form] = Form.useForm(); const [data, setData] = useState(null); const [department, setDepartment] = useState([]); const [group, setGroup] = useState([]); const { notification } = App.useApp(); const { request: getAdminDepartmentAjaxListRequest } = useRequest( AdminDepartmentServices.getAdminDepartmentAjaxList, { onSuccessCodeZero: (res) => { setDepartment(toArray(res.data).map((el) => ({ value: el.department_id, label: el.department_name }))); }, }, ); const { request: getAdminGroupAjaxListRequest } = useRequest(AdminGroupServices.getAdminGroupAjaxList, { onSuccessCodeZero: (res) => { setGroup(toArray(res.data).map((el) => ({ value: el.group_id, label: el.name }))); }, }); // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { notification.success({ title: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); // 提交成功重置表单 } }; const { loading: addLoading, request: addRequest } = useRequest(AdminServices.add, { onSuccess: success }); const { loading: editLoading, request: editRequest } = useRequest(AdminServices.edit, { onSuccess: success }); const save = async () => { try { const values = await form.validateFields(); //values.group_id = values.group_id?.join(',') ?? ''; // 编辑场景带上主键 if (data?.admin_id) { values.admin_id = data.admin_id; editRequest(stringify(values)); } else { addRequest(stringify(values)); } } catch (error) { console.log('表单验证未通过', error); } }; useImperativeHandle(props.ref, () => ({ show: async (data?: any) => { setTitle(data ? `${data.username} 编辑` : '新增'); setOpen(true); setData(data); await getAdminDepartmentAjaxListRequest(); await getAdminGroupAjaxListRequest(); if (data) { console.log(data.group_id); console.log(data.group_id.split(',')); console.log(data.group_id.split(',').map(Number)); // 编辑场景初始化表单 form.setFieldsValue({ username: data.username, mobile: data.mobile, email: data.email, nickname: data.nickname, password: '', // 密码编辑可选 status: String(data.status), department_id: data.department_id, group_id: data.group_id ? data.group_id.split(',').map(Number) : [], }); } else { form.resetFields(); form.setFieldsValue({ status: '1', group_id: [], }); } }, })); return ( setOpen(false)} title={title} footer={[ , , ]} >
不填写则系统自动生成初始密码} rules={[{ min: 6, max: 18, message: '密码需6~18位' }]} >