login.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <div class="login">
  3. <info :ruleForm="contextInfo" @on-behavior="onLogin" @refreshVerify="refreshVerify" />
  4. </div>
  5. </template>
  6. <script lang="ts">
  7. import { reactive, onBeforeMount } from "vue";
  8. import info, { ContextProps } from "../components/info/index.vue";
  9. import { getVerify, getLogin } from "/@/api/user";
  10. import { useRouter } from "vue-router";
  11. import { storageSession } from "/@/utils/storage";
  12. import { warnMessage, successMessage } from "/@/utils/message";
  13. export default {
  14. name: "login",
  15. components: {
  16. info
  17. },
  18. setup() {
  19. const router = useRouter();
  20. // 刷新验证码
  21. const refreshGetVerify = async () => {
  22. let { svg } = await getVerify();
  23. contextInfo.svg = svg;
  24. };
  25. const contextInfo: ContextProps = reactive({
  26. userName: "",
  27. passWord: "",
  28. verify: null,
  29. svg: null
  30. });
  31. const toPage = (info: Object): void => {
  32. storageSession.setItem("info", info);
  33. router.push("/");
  34. };
  35. // 登录
  36. const onLogin = async () => {
  37. let { userName, passWord, verify } = contextInfo;
  38. let { code, info, accessToken } = await getLogin({
  39. username: userName,
  40. password: passWord,
  41. verify: verify
  42. });
  43. code === 0
  44. ? successMessage(info) &&
  45. toPage({
  46. username: userName,
  47. accessToken
  48. })
  49. : warnMessage(info);
  50. };
  51. const refreshVerify = (): void => {
  52. refreshGetVerify();
  53. };
  54. onBeforeMount(() => {
  55. // refreshGetVerify();
  56. });
  57. return {
  58. contextInfo,
  59. onLogin,
  60. router,
  61. toPage,
  62. refreshVerify
  63. };
  64. }
  65. };
  66. </script>