index.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React from 'react';
  2. import { LockOutlined, UserOutlined } from '@ant-design/icons';
  3. import { Button, Form, Input } from 'antd';
  4. import { useNavigate } from 'react-router-dom';
  5. import sha265 from 'sha256';
  6. import { api_login } from '../../api/system';
  7. import './index.css';
  8. const Login: React.FC = () => {
  9. const navigate = useNavigate();
  10. const onFinish = async (values: api_login_params) => {
  11. const res = (await api_login({
  12. ...values,
  13. loginPassword: sha265(values.loginPassword)
  14. })) as any;
  15. if (!res.token) return;
  16. localStorage.setItem('token', res.token);
  17. navigate('/home');
  18. };
  19. return (
  20. <div className='login'>
  21. <div className='login_main'>
  22. <Form
  23. name='normal_login'
  24. className='login-form'
  25. initialValues={{ remember: true }}
  26. onFinish={onFinish}
  27. >
  28. <Form.Item name='loginName' rules={[{ required: true, message: '请输入用户名!' }]}>
  29. <Input prefix={<UserOutlined className='site-form-item-icon' />} placeholder='用户名' />
  30. </Form.Item>
  31. <Form.Item name='loginPassword' rules={[{ required: true, message: '请输入密码!' }]}>
  32. <Input
  33. prefix={<LockOutlined className='site-form-item-icon' />}
  34. type='password'
  35. placeholder='密码'
  36. />
  37. </Form.Item>
  38. <Form.Item>
  39. <Button type='primary' htmlType='submit' className='login-form-button'>
  40. 登录
  41. </Button>
  42. </Form.Item>
  43. </Form>
  44. </div>
  45. </div>
  46. );
  47. };
  48. export default Login;