import { Form, Input, Checkbox, Link, Button, Space } from '@arco-design/web-react'; import { FormInstance } from '@arco-design/web-react/es/Form'; import { IconLock, IconUser } from '@arco-design/web-react/icon'; import React, { useEffect, useRef, useState } from 'react'; import axios from 'axios'; import useStorage from '@/utils/useStorage'; import useLocale from '@/utils/useLocale'; import locale from './locale'; import styles from './style/index.module.less'; export default function LoginForm() { const formRef = useRef(); const [errorMessage, setErrorMessage] = useState(''); const [loading, setLoading] = useState(false); const [loginParams, setLoginParams, removeLoginParams] = useStorage('loginParams'); const t = useLocale(locale); const [rememberPassword, setRememberPassword] = useState(!!loginParams); function afterLoginSuccess(params) { // 记住密码 if (rememberPassword) { setLoginParams(JSON.stringify(params)); } else { removeLoginParams(); } // 记录登录状态 localStorage.setItem('userStatus', 'login'); // 跳转首页 window.location.href = '/dashboard/workplace'; } function login(params) { setErrorMessage(''); setLoading(true); axios .post('/api/user/login', params) .then((res) => { const { status, msg } = res.data; if (status === 'ok') { afterLoginSuccess(params); } else { setErrorMessage(msg || t['login.form.login.errMsg']); } }) .finally(() => { setLoading(false); }); } function onSubmitClick() { formRef.current.validate().then((values) => { login(values); }); } // 读取 localStorage,设置初始值 useEffect(() => { const rememberPassword = !!loginParams; setRememberPassword(rememberPassword); if (formRef.current && rememberPassword) { const parseParams = JSON.parse(loginParams); formRef.current.setFieldsValue(parseParams); } }, [loginParams]); return (
{t['login.form.title']}
{t['login.form.title']}
{errorMessage}
} placeholder={t['login.form.userName.placeholder']} onPressEnter={onSubmitClick} /> } placeholder={t['login.form.password.placeholder']} onPressEnter={onSubmitClick} />
{t['login.form.rememberPassword']}
); }