import React, { useState, useRef, useEffect } from "react"; import { Form, Input, Button, message, Row, Col } from "antd"; import { useLocation, useNavigate } from "react-router-dom"; import { useAuth } from "../providers/auth-provider"; import DepartmentSelect from "../components/models/department/department-select"; import SineWave from "../components/animation/sine-wave"; const LoginPage: React.FC = () => { const [showLogin, setShowLogin] = useState(true); const [registerLoading, setRegisterLoading] = useState(false); const { login, isAuthenticated, signup } = useAuth() const loginFormRef = useRef(null); const registerFormRef = useRef(null); const location = useLocation(); const navigate = useNavigate(); const onFinishLogin = async (values: any) => { try { const { username, password } = values; await login(username, password); } catch (err: any) { message.error(err?.response?.data?.message || "帐号或密码错误!"); console.error(err); } }; const onFinishRegister = async (values: any) => { setRegisterLoading(true); const { username, password, deptId, officerId, showname } = values; try { await signup({ username, password, deptId, officerId, showname }); message.success("注册成功!"); setShowLogin(true); // loginFormRef.current.submit(); } catch (err: any) { message.error(err?.response?.data?.message); } finally { setRegisterLoading(false); } }; useEffect(() => { if (isAuthenticated) { const params = new URLSearchParams(location.search); const redirectUrl = params.get("redirect_url") || "/"; navigate(redirectUrl, { replace: true }); } }, [isAuthenticated, location]); return (
{showLogin ? (
没有账号?
点击注册一个属于你自己的账号吧!
setShowLogin(false)} className="hover:translate-y-1 my-8 p-2 text-center rounded-xl border-white border hover:bg-white hover:text-primary hover:shadow-xl hover:cursor-pointer transition-all"> 注册
) : (
注册小贴士
请认真填写用户信息哦!
setShowLogin(true)} className="hover:translate-y-1 my-8 rounded-xl text-center border-white border p-2 hover:bg-white hover:text-primary hover:shadow-xl hover:cursor-pointer transition-all"> 返回登录
)}
{showLogin ? ( <>
登录
) : (
注册
({ validator(_, value) { if ( !value || getFieldValue( "password" ) === value ) { return Promise.resolve(); } return Promise.reject( new Error( "两次输入的密码不一致" ) ); }, }), ]}>
)}
); }; export default LoginPage;