import { LockOutlined, MobileOutlined, UserOutlined } from '@ant-design/icons'; import { LoginFormPage, ProConfigProvider, ProFormCaptcha, ProFormCheckbox, ProFormText, } from '@ant-design/pro-components'; import { Tabs, message, theme } from 'antd'; import { useState } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { login, getUserInfo } from '@/api/auth'; import { useUserStore } from '@/stores/user'; import type { LoginType } from '@/api/types/auth'; import type { LoginAccountParams } from '@/api/types/auth'; import logo from '@/assets/logo.png'; const LoginFrom = () => { const [loginType, setLoginType] = useState('account'); const { token } = theme.useToken(); const setToken = useUserStore(s => s.setToken); const setUserInfo = useUserStore(s => s.setUserInfo); const navigate = useNavigate(); const [searchParams] = useSearchParams(); const onFinish = async (values: LoginAccountParams) => { console.log(values); if (loginType !== 'account') { message.warning('暂不支持短信登录'); return; } const res = await login(values); if (res.code !== 200) { message.error(res.message); return; } const userInfo = await getUserInfo(); if (userInfo.code !== 200) { message.error(userInfo.message); return; } setToken(res.data.token); setUserInfo(userInfo.data); message.success('登录成功'); const redirect = searchParams.get('redirect') || '/dashboard'; navigate(redirect, { replace: true }); }; return (
setLoginType(key as LoginType)} activeKey={loginType} /> {loginType === 'account' && ( <> ), }} placeholder={'用户名: admin or user'} rules={[ { required: true, message: '请输入用户名!', }, ]} /> ), }} placeholder={'密码: 123456'} rules={[ { required: true, message: '请输入密码!', }, ]} /> )} {loginType === 'phone' && ( <> ), }} name="mobile" placeholder={'手机号'} rules={[ { required: true, message: '请输入手机号!', }, { pattern: /^1\d{10}$/, message: '手机号格式错误!', }, ]} /> ), }} captchaProps={{ size: 'large', }} placeholder={'请输入验证码'} captchaTextRender={(timing, count) => { if (timing) { return `${count} ${'获取验证码'}`; } return '获取验证码'; }} name="captcha" rules={[ { required: true, message: '请输入验证码!', }, ]} onGetCaptcha={async () => { message.success('获取验证码成功!验证码为:1234'); }} /> )}
自动登录 忘记密码
); }; export default function Login() { return ( ); }