/* eslint-disable @typescript-eslint/no-unused-vars */ import { // AlipayCircleOutlined, LockOutlined, MobileOutlined, // TaobaoCircleOutlined, UserOutlined, // WeiboCircleOutlined, } from '@ant-design/icons'; import { Alert, Col, message, Row, Tabs, Image } from 'antd'; import React, { useEffect, useState } from 'react'; import { ProFormCaptcha, ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'; import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'; // import Footer from '@/components/Footer'; import { getCaptchaImage, getFakeCaptcha, login } from '@/services/login'; import styles from './index.less'; import { clearSessionToken, setSessionToken } from '@/access'; const LoginMessage: React.FC<{ content: string; }> = ({ content }) => ( ); const Login: React.FC = () => { const [userLoginState, setUserLoginState] = useState({}); const [type, setType] = useState('account'); const { initialState, setInitialState } = useModel('@@initialState'); const [captchaCode, setCaptchaCode] = useState(''); const [uuid, setUuid] = useState(''); const intl = useIntl(); const fetchUserInfo = async () => { const userInfo = await initialState?.fetchUserInfo?.(); if (userInfo) { await setInitialState((s) => ({ ...s, currentUser: userInfo, })); } }; const getCaptchaCode = async () => { const response = await getCaptchaImage() const imgdata = `data:image/png;base64,${response.img}`; setCaptchaCode(imgdata); setUuid(response.uuid); }; const handleSubmit = async (values: API.LoginParams) => { try { // 登录 const response = await login({ ...values, uuid }); if (response.code === 200) { const defaultLoginSuccessMessage = intl.formatMessage({ id: 'pages.login.success', defaultMessage: '登录成功!', }); const current = new Date(); const expireTime = current.setTime(current.getTime() + 1000 * 12 * 60 * 60); setSessionToken(response.token, response.token, expireTime); message.success(defaultLoginSuccessMessage); await fetchUserInfo(); /** 此方法会跳转到 redirect 参数所在的位置 */ if (!history) return; const { query } = history.location; const { redirect } = query as { redirect: string }; history.push(redirect || '/'); return; } else{ clearSessionToken(); // 如果失败去设置用户错误信息 setUserLoginState({status: 'error', type: 'account', massage: response.msg}); message.error(response.msg); // getCaptchaCode(); } } catch (error) { clearSessionToken(); const defaultLoginFailureMessage = intl.formatMessage({ id: 'pages.login.failure', defaultMessage: '登录失败,请重试!', }); message.error(defaultLoginFailureMessage); // getCaptchaCode(); } }; const { status, type: loginType, massage } = userLoginState; useEffect(() => { // getCaptchaCode(); }, []); return (
{SelectLang && }
} title="Salpa" // subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} initialValues={{ autoLogin: true, }} onFinish={async (values) => { await handleSubmit(values as API.LoginParams); }} > {/* */} {status === 'error' && loginType === 'account' && ( )} {type === 'account' && ( <> , }} placeholder={intl.formatMessage({ id: 'pages.login.username.placeholder', defaultMessage: '用户名: admin', })} rules={[ { required: true, message: ( ), }, ]} /> , }} placeholder={intl.formatMessage({ id: 'pages.login.password.placeholder', defaultMessage: '密码: admin123', })} rules={[ { required: true, message: ( ), }, ]} /> {/* ), }, ]} /> 验证码 getCaptchaCode()} /> */} )} {/* {status === 'error' && loginType === 'mobile' && } {type === 'mobile' && ( <> , }} name="mobile" placeholder={intl.formatMessage({ id: 'pages.login.phoneNumber.placeholder', defaultMessage: '手机号', })} rules={[ { required: true, message: ( ), }, { pattern: /^1\d{10}$/, message: ( ), }, ]} /> , }} captchaProps={{ size: 'large', }} placeholder={intl.formatMessage({ id: 'pages.login.captcha.placeholder', defaultMessage: '请输入验证码', })} captchaTextRender={(timing, count) => { if (timing) { return `${count} ${intl.formatMessage({ id: 'pages.getCaptchaSecondText', defaultMessage: '获取验证码', })}`; } return intl.formatMessage({ id: 'pages.login.phoneLogin.getVerificationCode', defaultMessage: '获取验证码', }); }} name="captcha" rules={[ { required: true, message: ( ), }, ]} onGetCaptcha={async (phone) => { const result = await getFakeCaptcha({ phone, }); if (result === false) { return; } message.success('获取验证码成功!验证码为:1234'); }} /> )} */} {/* */}
{/*
); }; export default Login;