LOCKING盒子版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.tsx 2.4 KiB

3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
3 vuotta sitten
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import React, { useState } from 'react';
  2. import { Input, Button, Form } from 'antd';
  3. import styles from './login.less';
  4. import { history, useModel } from 'umi';
  5. import { MobileFilled, LockFilled } from '@ant-design/icons';
  6. import css from 'classnames';
  7. import { useCallback } from 'react';
  8. import { useEffect } from 'react';
  9. import { login } from '@/services/user';
  10. import { handleRequest } from '@/utils/tool';
  11. export default function Login() {
  12. const [errText, setErrText] = useState('');
  13. const [account, setAccount] = useState('');
  14. const [password, setPassword] = useState('');
  15. const [loading, setLoading] = useState(false);
  16. const { refresh } = useModel('@@initialState');
  17. // const { loading, signin } = useModel('useAuthModel');
  18. const onLogin = useCallback(async () => {
  19. if (!account) {
  20. setErrText('账号/手机号不能为空');
  21. return;
  22. }
  23. if (!password) {
  24. setErrText('密码不能为空');
  25. return;
  26. }
  27. setLoading(true);
  28. const res = await login(account, password);
  29. setLoading(false);
  30. handleRequest(res)
  31. .error(() => {
  32. setErrText(res.message!);
  33. })
  34. .success(() => {
  35. // history.push('/');
  36. // window.location.href = '/';
  37. history.replace('/');
  38. refresh();
  39. // window.location.reload();
  40. });
  41. }, [account, password]);
  42. useEffect(() => {
  43. setErrText('');
  44. }, [account, password]);
  45. return (
  46. <div className={styles.login}>
  47. <div className={styles.title}>
  48. <div>欢迎使用</div>
  49. <div>locking</div>
  50. </div>
  51. <Form className={styles.form}>
  52. <Input
  53. size="large"
  54. prefix={<MobileFilled className={styles.icon} />}
  55. disabled={loading}
  56. className={styles.mb24}
  57. value={account}
  58. onChange={(e) => setAccount(e.target.value)}
  59. />
  60. <Input
  61. size="large"
  62. prefix={<LockFilled className={styles.icon} />}
  63. type="password"
  64. disabled={loading}
  65. className={styles.mb4}
  66. value={password}
  67. onChange={(e) => setPassword(e.target.value)}
  68. />
  69. <div className={styles.errText}>{errText}</div>
  70. <Button
  71. loading={loading}
  72. type="primary"
  73. block
  74. onClick={onLogin}
  75. htmlType="submit"
  76. >
  77. 登录
  78. </Button>
  79. </Form>
  80. </div>
  81. );
  82. }