|
@@ -3,7 +3,7 @@ import { Alert, message, Tabs } from 'antd'
|
|
|
import React, { useState } from 'react'
|
|
|
import ProForm, { ProFormCheckbox, ProFormText } from '@ant-design/pro-form'
|
|
|
import { useIntl, Link, history, FormattedMessage, SelectLang, useModel, useRequest } from 'umi'
|
|
|
-// import { login } from '@/services/ant-design-pro/api'
|
|
|
+import { login } from '@/services/api/login'
|
|
|
import { queryAcountList } from '@/services/api/institution'
|
|
|
|
|
|
import styles from './index.less'
|
|
@@ -21,7 +21,18 @@ const LoginMessage: React.FC<{
|
|
|
/>
|
|
|
)
|
|
|
|
|
|
+/** 此方法会跳转到 redirect 参数所在的位置 */
|
|
|
+const goto = () => {
|
|
|
+ if (!history) return
|
|
|
+ setTimeout(() => {
|
|
|
+ const { query } = history.location
|
|
|
+ const { redirect } = query as { redirect: string }
|
|
|
+ history.push(redirect || '/')
|
|
|
+ }, 10)
|
|
|
+}
|
|
|
+
|
|
|
const Login: React.FC = () => {
|
|
|
+ // const { setAuthToken } = useModel('user')
|
|
|
const [userLoginState, setUserLoginState] = useState<API.LoginResult>({})
|
|
|
const [type, setType] = useState<string>('account')
|
|
|
const { initialState, setInitialState } = useModel('@@initialState')
|
|
@@ -31,9 +42,7 @@ const Login: React.FC = () => {
|
|
|
onSuccess: async result => {
|
|
|
setInitialState({
|
|
|
...initialState,
|
|
|
- currentUser: result.staff,
|
|
|
- menuList: result.menus,
|
|
|
- roles: result.staff?.roles || []
|
|
|
+ currentUser: result.items
|
|
|
})
|
|
|
goto()
|
|
|
}
|
|
@@ -41,44 +50,62 @@ const Login: React.FC = () => {
|
|
|
|
|
|
const intl = useIntl()
|
|
|
|
|
|
- const fetchUserInfo = async () => {
|
|
|
- const userInfo = await initialState?.fetchUserInfo?.()
|
|
|
- if (userInfo) {
|
|
|
- await setInitialState(s => ({
|
|
|
- ...s,
|
|
|
- currentUser: userInfo
|
|
|
- }))
|
|
|
+ // const fetchUserInfo = async () => {
|
|
|
+ // const userInfo = await initialState?.fetchUserInfo?.()
|
|
|
+ // if (userInfo) {
|
|
|
+ // await setInitialState(s => ({
|
|
|
+ // ...s,
|
|
|
+ // currentUser: userInfo
|
|
|
+ // }))
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ const { run: tryLogin } = useRequest((values: API.LoginParams) => login(values), {
|
|
|
+ manual: true,
|
|
|
+ onSuccess: async result => {
|
|
|
+ setAuthToken(result?.token)
|
|
|
+ message.success('登录成功')
|
|
|
+ await run()
|
|
|
+ // await fetchUserInfo()
|
|
|
+ },
|
|
|
+ onError: () => {
|
|
|
+ setUserLoginState({ ...userLoginState, code: -1 })
|
|
|
}
|
|
|
- }
|
|
|
+ })
|
|
|
|
|
|
const handleSubmit = async (values: API.LoginParams) => {
|
|
|
try {
|
|
|
- // 登录
|
|
|
- const msg = await login({ ...values, type })
|
|
|
- if (msg.status === 'ok') {
|
|
|
- const defaultLoginSuccessMessage = intl.formatMessage({
|
|
|
- id: 'pages.login.success',
|
|
|
- defaultMessage: '登录成功!'
|
|
|
- })
|
|
|
- message.success(defaultLoginSuccessMessage)
|
|
|
- await fetchUserInfo()
|
|
|
- /** 此方法会跳转到 redirect 参数所在的位置 */
|
|
|
- if (!history) return
|
|
|
- const { query } = history.location
|
|
|
- const { redirect } = query as { redirect: string }
|
|
|
- history.push(redirect || '/')
|
|
|
- return
|
|
|
- }
|
|
|
- console.log(msg)
|
|
|
- // 如果失败去设置用户错误信息
|
|
|
- setUserLoginState(msg)
|
|
|
+ await tryLogin(values)
|
|
|
} catch (error) {
|
|
|
- const defaultLoginFailureMessage = intl.formatMessage({
|
|
|
- id: 'pages.login.failure',
|
|
|
- defaultMessage: '登录失败,请重试!'
|
|
|
- })
|
|
|
- message.error(defaultLoginFailureMessage)
|
|
|
+ message.error('登录失败,请重试')
|
|
|
}
|
|
|
+ // try {
|
|
|
+ // // 登录
|
|
|
+ // const msg = await login({ ...values, type })
|
|
|
+ // if (msg.status === 'ok') {
|
|
|
+ // const defaultLoginSuccessMessage = intl.formatMessage({
|
|
|
+ // id: 'pages.login.success',
|
|
|
+ // defaultMessage: '登录成功!'
|
|
|
+ // })
|
|
|
+ // message.success(defaultLoginSuccessMessage)
|
|
|
+ // await fetchUserInfo()
|
|
|
+ // /** 此方法会跳转到 redirect 参数所在的位置 */
|
|
|
+ // if (!history) return
|
|
|
+ // const { query } = history.location
|
|
|
+ // const { redirect } = query as { redirect: string }
|
|
|
+ // history.push(redirect || '/')
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // console.log(msg)
|
|
|
+ // // 如果失败去设置用户错误信息
|
|
|
+ // setUserLoginState(msg)
|
|
|
+ // } catch (error) {
|
|
|
+ // const defaultLoginFailureMessage = intl.formatMessage({
|
|
|
+ // id: 'pages.login.failure',
|
|
|
+ // defaultMessage: '登录失败,请重试!'
|
|
|
+ // })
|
|
|
+ // message.error(defaultLoginFailureMessage)
|
|
|
+ // }
|
|
|
}
|
|
|
const { status, type: loginType } = userLoginState
|
|
|
|
|
@@ -162,7 +189,7 @@ const Login: React.FC = () => {
|
|
|
}}
|
|
|
placeholder={intl.formatMessage({
|
|
|
id: 'pages.login.username.placeholder',
|
|
|
- defaultMessage: '用户名: admin or user'
|
|
|
+ defaultMessage: '请输入用户名'
|
|
|
})}
|
|
|
rules={[
|
|
|
{
|
|
@@ -184,7 +211,7 @@ const Login: React.FC = () => {
|
|
|
}}
|
|
|
placeholder={intl.formatMessage({
|
|
|
id: 'pages.login.password.placeholder',
|
|
|
- defaultMessage: '密码: 123456'
|
|
|
+ defaultMessage: '请输入密码!'
|
|
|
})}
|
|
|
rules={[
|
|
|
{
|