import { Button, Col, Form, Input, message, Row } from "antd"; import { useForm } from "antd/es/form/Form"; import { useEffect, useState } from "react"; import { useSelector } from "react-redux"; import axiosInstance from "../../api/axios"; import { selectUserId } from "../../features/auth/authSlice"; export default function UserDetail() { const [form] = useForm(); const [showPassword, setShowPassword] = useState(false); const [user, setUser] = useState({ username: "", team: "", name: "", phone: "", }); const userId = useSelector(selectUserId); const fetchUser = async (userId) => { const user = await axiosInstance.get(`/userdetail/${userId}`); setUser(user); form.setFieldsValue(user); }; useEffect(() => { fetchUser(userId); }, []); const handleReset = () => { form.resetFields(); }; const handleSubmit = async (values) => { if (values.password && values.password !== values.confirmPassword) { message.error("两次输入的密码不一致"); return; } const changedFields = {}; for (const key in values) { if (values[key] !== user[key] && values[key] !== undefined) { changedFields[key] = values[key]; } } delete changedFields.confirmPassword; const newUser = await axiosInstance.patch(`/user/${userId}`, changedFields); setUser(newUser); form.setFieldsValue(newUser); message.success("修改成功"); }; return (
{showPassword && ( <> ({ validator(_, value) { if (!value || getFieldValue("password") === value) { return Promise.resolve(); } return Promise.reject(new Error("两次输入密码不一致")); }, }), ]} > )}
); }