import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router'; import { Button, Form, Input, message } from 'antd'; import { UserOutlined, LockOutlined } from '@ant-design/icons'; import { authService } from '../services/auth'; import type { LoginRequest } from '@/types/user'; import './LoginPage.css'; export default function LoginPage() { const navigate = useNavigate(); const [loading, setLoading] = useState(false); // 如果已登录,重定向到首页 useEffect(() => { if (authService.isAuthenticated()) { navigate('/', { replace: true }); } }, [navigate]); const onFinish = async (values: LoginRequest) => { setLoading(true); try { await authService.login(values); message.success('登录成功'); navigate('/', { replace: true }); } catch (error: any) { message.error(error.message || '登录失败,请检查用户名和密码'); } finally { setLoading(false); } }; return (

投小记

投资决策与复盘工具

} placeholder="用户名或邮箱" /> } placeholder="密码" />
); }