index.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import styles from "./index.module.scss";
  2. import { Input, Button } from "antd";
  3. import { UserOutlined, LockOutlined } from "@ant-design/icons";
  4. import { useState } from "react";
  5. import { Base64 } from "js-base64";
  6. import encodeStr from "@/utils/pass";
  7. import { setTokenInfo } from "@/utils/storage";
  8. import history from "@/utils/history";
  9. import { MessageFu } from "@/utils/message";
  10. import { userLoginAPI } from "@/store/action/layout";
  11. export default function Login() {
  12. // 账号密码
  13. const [userName, setUserName] = useState("admin");
  14. const [passWord, setPassWord] = useState("");
  15. // 键盘按下回车事件
  16. const keyUpEntFu = (e: React.KeyboardEvent<HTMLInputElement>) => {
  17. if (e.key === "Enter") loginClickFu();
  18. };
  19. // 点击登录
  20. const loginClickFu = async () => {
  21. // 非空判断
  22. if (userName === "") return MessageFu.warning("请输入用户名!");
  23. else if (passWord === "") return MessageFu.warning("请输入密码!");
  24. const obj = {
  25. userName,
  26. passWord: encodeStr(Base64.encode(passWord)),
  27. };
  28. const res: any = await userLoginAPI(obj);
  29. if (res.code === 0) {
  30. MessageFu.success("登录成功");
  31. // 用户信息存到本地
  32. setTokenInfo(res.data);
  33. history.push("/");
  34. } else if (res.code === 3014)
  35. MessageFu.warning("用户名不存在或密码错误,请联系管理员!");
  36. };
  37. return (
  38. <div className={styles.Login}>
  39. <div className="main">
  40. <h3>本地大场景管理</h3>
  41. {/* 账号密码输入框 */}
  42. <div className="inputBox">
  43. <div className="inputBoxRow">
  44. <Input
  45. onKeyUp={(e) => keyUpEntFu(e)}
  46. value={userName}
  47. onChange={(e) => setUserName(e.target.value.trim())}
  48. prefix={<UserOutlined />}
  49. placeholder="请输入用户名"
  50. maxLength={15}
  51. />
  52. </div>
  53. <div className="inputBoxRow">
  54. <Input.Password
  55. onKeyUp={(e) => keyUpEntFu(e)}
  56. value={passWord}
  57. onChange={(e) => setPassWord(e.target.value.trim())}
  58. prefix={<LockOutlined />}
  59. placeholder="请输入用户密码"
  60. maxLength={15}
  61. />
  62. </div>
  63. </div>
  64. {/* 登录按钮 */}
  65. <div className="loginBtn">
  66. <Button type="primary" size="large" onClick={loginClickFu}>
  67. 登 录
  68. </Button>
  69. </div>
  70. </div>
  71. </div>
  72. );
  73. }