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.
|
|
<script setup lang="ts">import { ref } from "vue";import { useRouter } from "vue-router";import { initRouter } from "/@/router/utils";import { storageSession } from "/@/utils/storage";import { addClass, removeClass } from "/@/utils/operate";import bg from "/@/assets/login/bg.png";import avatar from "/@/assets/login/avatar.svg?component";import illustration from "/@/assets/login/illustration.svg?component";
const router = useRouter();
let user = ref("admin");let pwd = ref("123456");
const onLogin = (): void => { storageSession.setItem("info", { username: "admin", accessToken: "eyJhbGciOiJIUzUxMiJ9.test" }); initRouter("admin").then(() => {}); router.push("/");};
function onUserFocus() { addClass(document.querySelector(".user"), "focus");}
function onUserBlur() { if (user.value.length === 0) removeClass(document.querySelector(".user"), "focus");}
function onPwdFocus() { addClass(document.querySelector(".pwd"), "focus");}
function onPwdBlur() { if (pwd.value.length === 0) removeClass(document.querySelector(".pwd"), "focus");}</script>
<template> <img :src="bg" class="wave" /> <div class="login-container"> <div class="img"> <illustration /> </div> <div class="login-box"> <div class="login-form"> <avatar class="avatar" /> <h2 v-motion :initial="{ opacity: 0, y: 100 }" :enter="{ opacity: 1, y: 0, transition: { delay: 100 } }" > Pure Admin </h2> <div class="input-group user focus" v-motion :initial="{ opacity: 0, y: 100 }" :enter="{ opacity: 1, y: 0, transition: { delay: 200 } }" > <div class="icon"> <IconifyIconOffline icon="user" width="14" height="14" /> </div> <div> <h5>用户名</h5> <input type="text" class="input" v-model="user" @focus="onUserFocus" @blur="onUserBlur" /> </div> </div> <div class="input-group pwd focus" v-motion :initial="{ opacity: 0, y: 100 }" :enter="{ opacity: 1, y: 0, transition: { delay: 300 } }" > <div class="icon"> <IconifyIconOffline icon="lock" width="14" height="14" /> </div> <div> <h5>密码</h5> <input type="password" class="input" v-model="pwd" @focus="onPwdFocus" @blur="onPwdBlur" /> </div> </div> <button class="btn" v-motion :initial="{ opacity: 0, y: 10 }" :enter="{ opacity: 1, y: 0, transition: { delay: 400 } }" @click="onLogin" > 登录 </button> </div> </div> </div></template>
<style scoped>@import url("/@/style/login.css");</style>
|