login.jsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import "./login.scss";
  2. import {Input, Button, message} from "antd";
  3. import {useState, useEffect} from "react";
  4. import {useNavigate} from 'react-router-dom'
  5. import axios from '@/utils/axios.js'
  6. export default function Login() {
  7. let navagite = useNavigate()
  8. // 用户名
  9. const [user, setUser] = useState("");
  10. // 密码
  11. const [password, setPassword] = useState("");
  12. const [messageApi, contextHolder] = message.useMessage();
  13. // 点击登陆调用
  14. async function goLogin() {
  15. let {data,code,message}= await axios.post('/sys/login',{account:user,password:password})
  16. if (code===200) {
  17. localStorage.setItem('user',JSON.stringify(data))
  18. messageApi.success("登陆成功");
  19. navagite("/statisticsData")
  20. } else {
  21. messageApi.error(message);
  22. }
  23. }
  24. // 全局login
  25. function enterLogin(e) {
  26. if (e.keyCode === 13) {
  27. goLogin()
  28. }
  29. }
  30. // 添加全局enter
  31. useEffect(() => {
  32. window.addEventListener('keydown', enterLogin); // 添加全局事件
  33. return () => {
  34. window.removeEventListener('keydown', enterLogin); // 销毁
  35. };
  36. }, [user, password]);
  37. return (
  38. <div className="login">
  39. {contextHolder}
  40. <div className="box">
  41. <h1>管理系统</h1>
  42. <Input
  43. placeholder="请输入用户名"
  44. className="user"
  45. value={user}
  46. onChange={(e) => setUser(e.target.value)}
  47. />
  48. <Input.Password
  49. placeholder="请输入密码"
  50. className="password"
  51. value={password}
  52. onChange={(e) => setPassword(e.target.value)}
  53. />
  54. <Button type="primary" onClick={goLogin}>
  55. 登陆
  56. </Button>
  57. </div>
  58. </div>
  59. );
  60. }