import React, { useState, useEffect } from 'react'; import { PageContainer, ProCard } from '@ant-design/pro-components'; import { Avatar, Button, Card, Descriptions, Form, Input, Modal, Space, Tabs, Tag, Upload, message, } from 'antd'; import { UserOutlined, MailOutlined, PhoneOutlined, KeyOutlined, UploadOutlined, } from '@ant-design/icons'; import { useModel } from '@umijs/max'; import type { UploadProps } from 'antd/es/upload'; import { getUserByIdUsingGet, updateUserUsingPost } from '@/services/hebi/userController'; import { countChartsUsingGet } from '@/services/hebi/chartController'; // 新增 import dayjs from 'dayjs'; // 新增 const { TabPane } = Tabs; const UserInfo: React.FC = () => { const { initialState } = useModel('@@initialState'); const { currentUser } = initialState || {}; const [userInfo, setUserInfo] = useState(null); const [passwordVisible, setPasswordVisible] = useState(false); const [loading, setLoading] = useState(false); const [form] = Form.useForm(); const [apiCallCount, setApiCallCount] = useState(0); // 新增 // 拉取用户信息 useEffect(() => { const fetchUserInfo = async () => { if (!currentUser?.id) return; const res = await getUserByIdUsingGet({ id: currentUser.id }); if (res && res.code === 0 && res.data) { setUserInfo(res.data); form.setFieldsValue({ userName: res.data.userName, email: res.data.userAccount, // 假设 userAccount 是邮箱 phone: res.data.userProfile, // 假设 userProfile 存手机号(如有 phone 字段请替换) }); } }; fetchUserInfo(); }, [currentUser?.id, form]); // 拉取API调用次数 useEffect(() => { const fetchApiCallCount = async () => { const res = await countChartsUsingGet(); if (res && res.code === 0) { setApiCallCount(res.data || 0); } }; fetchApiCallCount(); }, []); // 处理基本信息更新 const handleInfoUpdate = async (values: any) => { try { setLoading(true); const res = await updateUserUsingPost({ id: userInfo.id, userName: values.userName, userAvatar: userInfo.userAvatar, userProfile: values.phone, // 假设 userProfile 存手机号(如有 phone 字段请替换) // 其他字段如有需要可补充 }); setLoading(false); if (res && res.code === 0) { message.success('信息更新成功'); // 更新本地 userInfo setUserInfo({ ...userInfo, userName: values.userName, userProfile: values.phone }); } else { message.error(res?.message || '信息更新失败'); } } catch (error) { setLoading(false); message.error('信息更新失败'); } }; // 处理头像上传 const handleAvatarUpload: UploadProps['onChange'] = async (info) => { if (info.file.status === 'uploading') { setLoading(true); return; } if (info.file.status === 'done') { message.success('头像更新成功'); setLoading(false); } }; // 处理密码修改 const handlePasswordChange = async (values: any) => { try { // 这里应该调用修改密码的API // await updatePassword(values); message.success('密码修改成功'); setPasswordVisible(false); form.resetFields(); } catch (error) { message.error('密码修改失败'); } }; return (
} />

{userInfo?.userName}

{userInfo?.userRole || '普通用户'}
} /> } disabled /> {/* } /> */}
{userInfo?.createTime ? dayjs(userInfo.createTime).format('YYYY-MM-DD HH:mm:ss') : '-'} {userInfo?.updateTime ? dayjs(userInfo.updateTime).format('YYYY-MM-DD HH:mm:ss') : '-'} {apiCallCount} {apiCallCount*2|| 0}
setPasswordVisible(false)} footer={null} >
} placeholder="原密码" /> } placeholder="新密码" /> ({ validator(_, value) { if (!value || getFieldValue('newPassword') === value) { return Promise.resolve(); } return Promise.reject(new Error('两次输入的密码不一致')); }, }), ]} > } placeholder="确认新密码" />
); }; export default UserInfo;