Personal.vue
<template>
<div>
<div class="container">
<div class="p_top">
<div>
<img :src='info.head_img||defaultHeadImg' alt="头像"/>
<router-link to="/login" v-if="getToken===''">
<p>立刻登陆</p>
</router-link>
<p v-else>{{info.name}}</p>
</div>
</div>
<button v-if="getToken !== ''" class="green" @click="signOut">退出登陆</button>
</div>
<common-footer></common-footer>
</div>
</template>
<script>
import CommonFooter from "@/components/CommonFooter";
import { getUserInfo } from "@/api/getData.js";
import defaultHeadImg from "@/assets/logo.png";
export default {
components: {
CommonFooter
},
data() {
return {
info: {},
defaultHeadImg: defaultHeadImg
};
},
computed: {
getToken() {
return this.$store.state.token;
}
},
methods: {
//获取用户信息
async getInfo() {
try {
const result = await getUserInfo(this.getToken);
if (result.data.code === 0) {
this.info = result.data.data;
}
} catch (error) {
console.log(Error);
}
},
//退出登陆
async signOut() {
await this.$store.dispatch('clearToken');
localStorage.removeItem("token");
//刷新页面
location.reload();
}
},
mounted() {
if (this.getToken) {
this.getInfo();
}
}
};
</script>
<style lang="scss" scoped>
.container {
// 顶部头像区域
.p_top {
100%;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px 0;
background-color: #2c3f54;
div {
text-align: center;
img {
60px;
height: 60px;
border-radius: 50px;
}
p {
font-size: 16px;
color: #fff;
margin-top: 10px;
}
}
}
}
// 退出登录
.green {
display: block;
background-color: #3bb149;
border: none;
outline: none;
80%;
height: 40px;
margin: 20px auto 0;
color: #fff;
border-radius: 20px;
}
</style>