import React, {useEffect, useCallback} from 'react'; import {message, Form} from 'antd'; import {UserOutlined, LockOutlined} from '@ant-design/icons'; import UserCache from '@caches/UserCache'; import md5 from 'blueimp-md5'; import {inQb, getUser} from 'frc-core-pro'; import {Loading, Button, Input} from 'frc-ui-pro'; import {useSelector} from 'react-redux'; import {FetchResult} from '@constants/types'; import trim from 'lodash/trim'; import Action from '@actions'; import axios from '@utils/axios'; import './login.less'; interface IProps { prefixCls: string; title: string; location: any; } const Login: React.FC = (props) => { const {prefixCls = 'ss', title = '', location} = props; const loginData: FetchResult = useSelector((state: any) => state.user.login); const [form] = Form.useForm(); const handleSubmit = useCallback(() => { form.validateFields().then(({username, password}) => { UserCache.login({username: trim(username), password: md5(trim(password))}); }); }, [form]); useEffect(() => { if (inQb()) { getUser(UserCache.login); } }, []); useEffect(() => { if (title) { window.document.title = title; } }, [title]); useEffect(() => { if (loginData?.success) { UserCache.user = loginData.result; axios.defaults.headers.common['userId'] = UserCache.user.userId; if (location && location.state) { Action.push(location.state); } else { Action.push('/demo'); } } else if (loginData?.fail) { message.error(loginData?.message || '登录失败'); } }, [loginData, location]); return inQb() ? ( ) : (
} placeholder='Username' onPressEnter={handleSubmit} /> } type='password' placeholder='Password' onPressEnter={handleSubmit} />
); }; export default Login;