diff --git a/src/pages/user/Login/index.less b/src/pages/user/Login/index.less index f2ef746d..84c5fddd 100644 --- a/src/pages/user/Login/index.less +++ b/src/pages/user/Login/index.less @@ -36,79 +36,15 @@ } } -.top { - text-align: center; -} - -.header { - height: 44px; - line-height: 44px; - a { - text-decoration: none; - } -} - -.logo { - height: 44px; - margin-right: 16px; - vertical-align: top; -} - -.title { - position: relative; - top: 2px; - color: @heading-color; - font-weight: 600; - font-size: 33px; - font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif; -} - -.desc { - margin-top: 12px; - margin-bottom: 40px; - color: @text-color-secondary; - font-size: @font-size-base; -} - -.main { - width: 328px; - margin: 0 auto; - @media screen and (max-width: @screen-sm) { - width: 95%; - max-width: 328px; - } - - :global { - .@{ant-prefix}-tabs-nav-list { - margin: auto; - font-size: 16px; - } - } - - .icon { - margin-left: 16px; - color: rgba(0, 0, 0, 0.2); - font-size: 24px; - vertical-align: middle; - cursor: pointer; - transition: color 0.3s; - - &:hover { - color: @primary-color; - } - } - - .other { - margin-top: 24px; - line-height: 22px; - text-align: left; - .register { - float: right; - } - } - - .prefixIcon { +.icon { + margin-left: 8px; + color: rgba(0, 0, 0, 0.2); + font-size: 24px; + vertical-align: middle; + cursor: pointer; + transition: color 0.3s; + + &:hover { color: @primary-color; - font-size: @font-size-base; } } diff --git a/src/pages/user/Login/index.tsx b/src/pages/user/Login/index.tsx index c7daab55..7d0fe352 100644 --- a/src/pages/user/Login/index.tsx +++ b/src/pages/user/Login/index.tsx @@ -6,10 +6,10 @@ import { UserOutlined, WeiboCircleOutlined, } from '@ant-design/icons'; -import { Alert, Space, message, Tabs } from 'antd'; +import { Alert, message, Tabs } from 'antd'; import React, { useState } from 'react'; -import ProForm, { ProFormCaptcha, ProFormCheckbox, ProFormText } from '@ant-design/pro-form'; -import { useIntl, Link, history, FormattedMessage, SelectLang, useModel } from 'umi'; +import { ProFormCaptcha, ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'; +import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'; import Footer from '@/components/Footer'; import { login } from '@/services/ant-design-pro/api'; import { getFakeCaptcha } from '@/services/ant-design-pro/login'; @@ -30,7 +30,6 @@ const LoginMessage: React.FC<{ ); const Login: React.FC = () => { - const [submitting, setSubmitting] = useState(false); const [userLoginState, setUserLoginState] = useState({}); const [type, setType] = useState('account'); const { initialState, setInitialState } = useModel('@@initialState'); @@ -48,7 +47,6 @@ const Login: React.FC = () => { }; const handleSubmit = async (values: API.LoginParams) => { - setSubmitting(true); try { // 登录 const msg = await login({ ...values, type }); @@ -66,6 +64,7 @@ const Login: React.FC = () => { history.push(redirect || '/'); return; } + console.log(msg); // 如果失败去设置用户错误信息 setUserLoginState(msg); } catch (error) { @@ -73,10 +72,8 @@ const Login: React.FC = () => { id: 'pages.login.failure', defaultMessage: '登录失败,请重试!', }); - message.error(defaultLoginFailureMessage); } - setSubmitting(false); }; const { status, type: loginType } = userLoginState; @@ -86,223 +83,200 @@ const Login: React.FC = () => { {SelectLang && }
-
-
- - logo - Ant Design - -
-
- {intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} -
-
+ } + title="Ant Design" + subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} + initialValues={{ + autoLogin: true, + }} + actions={[ + , + , + , + , + ]} + onFinish={async (values) => { + await handleSubmit(values as API.LoginParams); + }} + > + + + + -
- dom.pop(), - submitButtonProps: { - loading: submitting, - size: 'large', - style: { - width: '100%', - }, - }, - }} - onFinish={async (values) => { - await handleSubmit(values as API.LoginParams); - }} - > - - + )} + {type === 'account' && ( + <> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.username.placeholder', + defaultMessage: '用户名: admin or user', })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} /> - , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.password.placeholder', + defaultMessage: '密码: ant.design', })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} /> - + + )} - {status === 'error' && loginType === 'account' && ( - } + {type === 'mobile' && ( + <> + , + }} + name="mobile" + placeholder={intl.formatMessage({ + id: 'pages.login.phoneNumber.placeholder', + defaultMessage: '手机号', })} + rules={[ + { + required: true, + message: ( + + ), + }, + { + pattern: /^1\d{10}$/, + message: ( + + ), + }, + ]} /> - )} - {type === 'account' && ( - <> - , - }} - placeholder={intl.formatMessage({ - id: 'pages.login.username.placeholder', - defaultMessage: '用户名: admin or user', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - , - }} - placeholder={intl.formatMessage({ - id: 'pages.login.password.placeholder', - defaultMessage: '密码: ant.design', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - - )} - - {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', + , + }} + 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: '获取验证码', - }); - }} - name="captcha" - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - onGetCaptcha={async (phone) => { - const result = await getFakeCaptcha({ - phone, - }); - if (result === false) { - return; - } - message.success('获取验证码成功!验证码为:1234'); - }} - /> - - )} -
+ ), + }, + ]} + onGetCaptcha={async (phone) => { + const result = await getFakeCaptcha({ + phone, + }); + if (result === false) { + return; + } + message.success('获取验证码成功!验证码为:1234'); + }} + /> + + )} + - - - - - - - -
+ + +
+