Files
ThriveX-Admin/src/pages/Setup/components/My/index.tsx

91 lines
2.8 KiB
TypeScript
Raw Normal View History

2024-08-08 16:56:37 +08:00
import { useEffect, useState } from "react";
2024-08-11 19:50:36 +08:00
import { Form, Input, Button, message } from "antd";
2024-08-08 16:56:37 +08:00
import { useUserStore } from "@/stores"; // 假设你有一个状态管理库类似于pinia
import { editUserDataAPI, getUserDataAPI } from "@/api/User";
2024-08-15 15:28:58 +08:00
import { User } from "@/types/app/user";
2024-08-08 16:56:37 +08:00
2024-08-11 19:50:36 +08:00
interface UserForm {
2024-08-08 16:56:37 +08:00
name: string;
email: string;
avatar: string;
info: string;
}
const UserPage = () => {
2024-08-11 19:50:36 +08:00
const [form] = Form.useForm<UserForm>();
2024-08-08 16:56:37 +08:00
const [loading, setLoading] = useState<boolean>(false);
const store = useUserStore();
2024-08-11 19:50:36 +08:00
const getUserData = async () => {
const { data } = await getUserDataAPI(store.user?.id);
store.setUser(data);
form.setFieldsValue(data);
setLoading(false);
};
2024-08-08 16:56:37 +08:00
useEffect(() => {
2024-08-11 19:50:36 +08:00
setLoading(true);
getUserData();
}, []);
2024-08-08 16:56:37 +08:00
2024-08-11 19:50:36 +08:00
const onSubmit = async (values: UserForm) => {
setLoading(false)
await editUserDataAPI({ id: store.user.id, ...values });
message.success("🎉 修改用户信息成功");
2024-08-12 23:45:02 +08:00
store.setUser(values as User);
2024-08-11 19:50:36 +08:00
getUserData();
2024-08-08 16:56:37 +08:00
};
return (
<div>
<h2 className="text-xl pb-4 text-center"></h2>
<Form
form={form}
size="large"
layout="vertical"
2024-08-11 19:50:36 +08:00
onFinish={onSubmit}
2024-08-08 16:56:37 +08:00
className="w-5/12 mx-auto"
>
<Form.Item
label="名称"
name="name"
rules={[{ required: true, message: "名称不能为空" }]}
>
<Input placeholder="宇阳" />
</Form.Item>
<Form.Item
label="邮箱"
name="email"
rules={[{ required: true, message: "邮箱不能为空" }]}
>
<Input placeholder="liuyuyang1024@yeah.net" />
</Form.Item>
<Form.Item
label="头像"
name="avatar"
rules={[{ required: true, message: "头像不能为空" }]}
>
<Input placeholder="https://liuyuyang.net/logo.png" />
</Form.Item>
<Form.Item
label="介绍"
name="info"
rules={[{ required: true, message: "介绍不能为空" }]}
>
<Input placeholder="互联网从不缺乏天才, 而努力才是最终的入场劵" />
</Form.Item>
<Form.Item>
2024-08-11 19:50:36 +08:00
<Button type="primary" htmlType="submit" className="w-full" loading={loading}></Button>
2024-08-08 16:56:37 +08:00
</Form.Item>
</Form>
</div>
);
};
export default UserPage;