import { Form, Input, message, Modal, Select } from "antd"; import { useEffect, useState } from "react"; import axiosInstance from "../../api/axios"; interface UserDTO { username: string; name: string; phone: string; password?: string; teamId: string; roleId: string; } export default function UserDetailModal({ visiable, mode = "create", user, roles, onclose, onSuccess, }) { const [form] = Form.useForm(); const [initialValues, setInitialValues] = useState(); const [teams, setTeams] = useState<{ label: string; value: string }[]>(); const fetchTeams = async () => { const data = await axiosInstance.get< unknown, { label: string; value: string }[] >("/team-label"); setTeams(data); }; useEffect(() => { fetchTeams(); }, []); useEffect(() => { if (visiable) { if (mode === "edit") { const values: UserDTO = { username: user.username, name: user.name, phone: user.phone, teamId: user.teamId, roleId: user.roleId, }; setInitialValues(values); form.setFieldsValue(values); } else { const values: UserDTO = { username: undefined, password: undefined, name: undefined, phone: undefined, teamId: undefined, roleId: undefined, }; setInitialValues(values); form.setFieldsValue(values); } } }, [visiable, mode, user, form]); const handleOk = async () => { const values = await form.validateFields(); const data = {}; Object.keys(initialValues).forEach((key) => { if (values[key] !== initialValues[key]) { data[key] = values[key]; } }); if (Object.keys(data).length > 0) { if (mode === "edit") { await axiosInstance.put(`/user/${user.userId}`, data); message.success("编辑成功"); } else { await axiosInstance.post(`/user`, data); message.success("添加成功"); } } onSuccess(); onclose(); }; return ( { onclose(); }} onOk={handleOk} okText="保存" >
{mode === "create" && ( )}
); }