import React, { useCallback, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Form, Input, Button, Card, Typography } from 'antd'; import { UserOutlined, LockOutlined } from '@ant-design/icons'; import api from '../../api'; import { message } from '../../ui/app-message'; import { writePermissions } from '../../auth/permission-store'; const { Title } = Typography; const LoginPage: React.FC = () => { const [loading, setLoading] = useState(false); const navigate = useNavigate(); const onFinish = useCallback(async (values: any) => { setLoading(true); try { const res: any = await api.post('/auth/login', values); localStorage.setItem('token', res.access_token); localStorage.setItem('user', JSON.stringify(res.user)); writePermissions(res.user.permissions || []); message.success('登录成功'); navigate('/dashboard'); } catch (err: any) { message.error(err?.message || '登录失败'); } finally { setLoading(false); } }, [navigate]); return (
恭学教育基地管理系统

水电费精准计费平台

} placeholder="用户名" /> } placeholder="密码" />
); }; export default LoginPage;