import React, { useState } from 'react'; import { Form, Input, Button, Card, App, } from 'antd'; import { UserOutlined, LockOutlined, EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons'; import { useNavigate } from 'react-router'; import { useAuth, } from '../hooks/AuthProvider'; // 登录页面 export const LoginPage = () => { const { message } = App.useApp(); const { login } = useAuth(); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const navigate = useNavigate(); const handleSubmit = async (values: { username: string; password: string }) => { try { setLoading(true); // 获取地理位置 let latitude: number | undefined; let longitude: number | undefined; try { if (navigator.geolocation) { const position = await new Promise((resolve, reject) => { navigator.geolocation.getCurrentPosition(resolve, reject); }); latitude = position.coords.latitude; longitude = position.coords.longitude; } } catch (geoError) { console.warn('获取地理位置失败:', geoError); } await login(values.username, values.password, latitude, longitude); // 登录成功后跳转到管理后台首页 navigate('/admin/dashboard'); } catch (error: any) { message.error(error instanceof Error ? error.message : '登录失败'); } finally { setLoading(false); } }; return (

管理后台登录

请输入您的账号和密码

} placeholder="请输入用户名" size="large" className="transition-all duration-200 focus:border-primary focus:ring-1 focus:ring-primary" /> } placeholder="请输入密码" size="large" iconRender={(visible) => (visible ? : )} className="transition-all duration-200 focus:border-primary focus:ring-1 focus:ring-primary" />

测试账号: admin / admin123

© {new Date().getFullYear()} 管理系统. 保留所有权利.

); };