修改登录页面

This commit is contained in:
algerkong
2021-09-29 22:26:29 +08:00
parent a7f1453609
commit ba642e5003
4 changed files with 47 additions and 13 deletions
+5
View File
@@ -24,3 +24,8 @@ export function getLoginStatus() {
export function getUserDetail() { export function getUserDetail() {
return request.get("/user/account"); return request.get("/user/account");
} }
// /logout
export function logout() {
return request.get("/logout");
}
+8 -6
View File
@@ -9,12 +9,14 @@
<search-bar /> <search-bar />
<!-- 主页面路由 --> <!-- 主页面路由 -->
<n-layout class="main-content bg-black" :native-scrollbar="false"> <n-layout class="main-content bg-black" :native-scrollbar="false">
<router-view class="main-page" v-slot="{ Component }"> <n-message-provider>
<keep-alive> <router-view class="main-page" v-slot="{ Component }">
<component :is="Component" v-if="$route.meta.keepAlive" /> <keep-alive>
</keep-alive> <component :is="Component" v-if="$route.meta.keepAlive" />
<component :is="Component" v-if="!$route.meta.keepAlive" /> </keep-alive>
</router-view> <component :is="Component" v-if="!$route.meta.keepAlive" />
</router-view>
</n-message-provider>
</n-layout> </n-layout>
</div> </div>
</div> </div>
+5 -2
View File
@@ -39,7 +39,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { getSearchKeyword, getHotSearch } from '@/api/home'; import { getSearchKeyword, getHotSearch } from '@/api/home';
import { getUserDetail } from '@/api/login'; import { getUserDetail, logout } from '@/api/login';
import { onMounted, ref } from 'vue'; import { onMounted, ref } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { useStore } from 'vuex'; import { useStore } from 'vuex';
@@ -108,7 +108,10 @@ const selectItem = (key: any) => {
// switch 判断 // switch 判断
switch (key) { switch (key) {
case 'logout': case 'logout':
store.state.user = null logout().then(() => {
store.state.user = null
localStorage.clear()
})
break; break;
} }
} }
+29 -5
View File
@@ -2,6 +2,13 @@
import { getQrKey, createQr, checkQr, getLoginStatus } from '@/api/login' import { getQrKey, createQr, checkQr, getLoginStatus } from '@/api/login'
import { onMounted } from '@vue/runtime-core'; import { onMounted } from '@vue/runtime-core';
import { ref } from 'vue'; import { ref } from 'vue';
import { getUserDetail } from '@/api/login';
import { useStore } from 'vuex';
import { useMessage } from 'naive-ui'
const message = useMessage()
const store = useStore();
const qrUrl = ref<string>() const qrUrl = ref<string>()
onMounted(() => { onMounted(() => {
@@ -16,15 +23,24 @@ const loadLogin = async () => {
timerIsQr(key) timerIsQr(key)
} }
const timerIsQr = (key: string) => { const timerIsQr = (key: string) => {
const timer = setInterval(async () => { const timer = setInterval(async () => {
const { data } = await checkQr(key) const { data } = await checkQr(key)
console.log(data);
if (data.code === 800) { if (data.code === 800) {
clearInterval(timer) clearInterval(timer)
} }
if (data.code === 803) { if (data.code === 803) {
// 将token存入localStorage // 将token存入localStorage
localStorage.setItem('token', data.cookie) localStorage.setItem('token', data.cookie)
const user = await getUserDetail()
store.state.user = user.data.profile
message.success('登录成功')
await getLoginStatus().then(res => { await getLoginStatus().then(res => {
console.log(res); console.log(res);
}) })
@@ -32,19 +48,27 @@ const timerIsQr = (key: string) => {
} }
}, 5000); }, 5000);
} }
</script> </script>
<template> <template>
<div class="login-page"> <div class="login-page">
<div>登录</div> <div class="login-title">扫码登陆</div>
<div> <img class="qr-img" :src="qrUrl" />
<img :src="qrUrl" /> <div class="text">使用网易云APP扫码登录</div>
</div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.login-page { .login-page {
@apply p-4; @apply p-4 flex flex-col items-center justify-center p-20;
}
.login-title {
@apply text-3xl font-bold mb-6;
}
.text {
@apply mt-4 text-green-500 text-xs;
} }
</style> </style>