feat: 首页登录注销

merge-requests/6/head
xiaoguang 2 years ago
parent 440189d305
commit 00788dbd5c

@ -113,7 +113,15 @@ this.$store.commit('setToken')
this.$store.commit('setLoginOut') this.$store.commit('setLoginOut')
// 获取登录的用户信息 // 获取登录的用户信息
this.$store.state.userInfo this.$store.state.userInfo
// 是否需要登录拦截
this.$isLoginValidate(); // 登录拦截
// 示例:点击购买课程前需要判断当前用户是否登录
function onPurchaseCourse() {
if (!this.$isLoginValidate()) {
return;
}
// 此处省略其他业务代码...
}
``` ```

@ -147,7 +147,11 @@ export default {
Message.error("请勾选同意《用户协议》和《隐私协议》"); Message.error("请勾选同意《用户协议》和《隐私协议》");
return; return;
} }
const { result } = await ApiPostLogin({ ...this.form }); const { result } = await ApiPostLogin({
...this.form,
clientId: 1,
systemId: 1,
});
if (result) { if (result) {
this.dialogTableVisible = false; this.dialogTableVisible = false;
this.$store.commit("setToken", result.token); this.$store.commit("setToken", result.token);

@ -6,33 +6,42 @@
<div class="header-wrap__logo">马士兵严选欢迎你</div> <div class="header-wrap__logo">马士兵严选欢迎你</div>
<div class="header-wrap__content flex flex-middle"> <div class="header-wrap__content flex flex-middle">
<div class="header-wrap-content__login"> <div class="header-wrap-content__login">
<el-dropdown v-if="isLogin" @visible-change="menuVisible = $event"> <!-- 已登录 -->
<el-dropdown
v-if="token"
@visible-change="menuVisible = $event"
@command="handleCommandClick"
>
<div <div
class="wrap-content-login__info flex flex-middle flex-center" class="wrap-content-login__info flex flex-middle flex-center"
:class="{ 'wrap-content-login__info--hover': menuVisible }" :class="{ 'wrap-content-login__info--hover': menuVisible }"
> >
<span>你好{{ userInfo.name }}</span> <span>你好{{ userInfo.nickname }}</span>
<img class="content-login-info__logo" :src="menuIcon" /> <img class="content-login-info__logo" :src="menuIcon" />
</div> </div>
<el-dropdown-menu slot="dropdown" class="dropdown-menu-self"> <el-dropdown-menu slot="dropdown" class="dropdown-menu-self">
<div class="menu-item__wrap flex flex-middle"> <div class="menu-item__wrap flex flex-middle">
<img class="menu-item-wrap__avatar" /> <img class="menu-item-wrap__avatar" :src="userInfo.avatar" />
<span>{{ userInfo.name }}</span> <span>{{ userInfo.nickname }}</span>
</div> </div>
<div class="menu-item__line"></div> <div class="menu-item__line"></div>
<el-dropdown-item <el-dropdown-item
class="flex flex-between flex-middle" class="flex flex-between flex-middle"
v-for="item in menuList" v-for="item in menuList"
:key="item.value" :key="item.value"
:command="item.value"
> >
<span> {{ item.label }}</span> <span> {{ item.label }}</span>
<img src="@/static/images/layout/icon-arrow.png" /> <img src="@/static/images/layout/icon-arrow.png" />
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<!-- 未登录 -->
<div v-else class="wrap-content-login__text flex"> <div v-else class="wrap-content-login__text flex">
<span>请先</span> <span>请先</span>
<span class="content-login-text--light">登录/注册</span> <span class="content-login-text--light" @click="onLoginClick">
登录/注册
</span>
</div> </div>
</div> </div>
<template> <template>
@ -58,6 +67,7 @@
</div> </div>
</template> </template>
<script> <script>
import { mapState } from "vuex";
const MENU_VALUE = { const MENU_VALUE = {
PERSONAL: 1, PERSONAL: 1,
ADDRESS: 2, ADDRESS: 2,
@ -65,12 +75,9 @@ const MENU_VALUE = {
}; };
export default { export default {
name: "HeaderInfoBar",
data() { data() {
return { return {
isLogin: true,
userInfo: {
name: "仙女广",
},
menuVisible: false, menuVisible: false,
menuList: [ menuList: [
{ {
@ -89,6 +96,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapState(["userInfo", "token"]),
menuIcon() { menuIcon() {
return this.menuVisible return this.menuVisible
? require("@/static/images/layout/icon-up-light.png") ? require("@/static/images/layout/icon-up-light.png")
@ -96,7 +104,19 @@ export default {
}, },
}, },
methods: { methods: {
onMenuClick() {}, onLoginClick() {
this.$isLoginValidate();
},
handleCommandClick(event) {
switch (event) {
case MENU_VALUE.PERSONAL:
this.$router.push('/account');
case MENU_VALUE.ADDRESS:
this.$router.push('/account');
case MENU_VALUE.LOGON_OUT:
this.$store.commit("setLoginOut");
}
},
}, },
}; };
</script> </script>

@ -81,7 +81,7 @@
</div> </div>
<div <div
v-show="categrayHoverVisible" v-show="categrayHoverVisible"
class="tab-category-menu__right flex flex-wrap" class="tab-category-menu__right"
@mouseenter="categrayHoverVisible = true" @mouseenter="categrayHoverVisible = true"
@mouseleave="categrayHoverVisible = false" @mouseleave="categrayHoverVisible = false"
> >
@ -178,7 +178,7 @@ export default {
if (resultGoods && resultGoods.length > 0) { if (resultGoods && resultGoods.length > 0) {
return { return {
...item, ...item,
list: resultGoods.data, list: resultGoods,
}; };
} }
}) })
@ -291,6 +291,7 @@ export default {
background: linear-gradient(270deg, #ffa25a 0%, #ff7f39 100%); background: linear-gradient(270deg, #ffa25a 0%, #ff7f39 100%);
border-radius: 0px 8px 8px 0px; border-radius: 0px 8px 8px 0px;
z-index: 2; z-index: 2;
cursor: pointer;
img { img {
width: 26px; width: 26px;
height: 26px; height: 26px;
@ -373,13 +374,11 @@ export default {
box-shadow: 7px 0px 10px 1px rgba(0, 0, 0, 0.10000000149011612); box-shadow: 7px 0px 10px 1px rgba(0, 0, 0, 0.10000000149011612);
border: 1px solid #eeeeee; border: 1px solid #eeeeee;
background: #ffffff; background: #ffffff;
.menu-right__item:last-child {
margin-bottom: 0;
}
.menu-right__item:hover { .menu-right__item:hover {
color: #ff875b; color: #ff875b;
} }
.menu-right__item { .menu-right__item {
display: inline-block;
font-size: 12px; font-size: 12px;
color: #999999; color: #999999;
margin-right: 20px; margin-right: 20px;

@ -17,8 +17,5 @@ import Banner from "./module/Banner.vue";
import Seckil from "./module/Seckill.vue"; import Seckil from "./module/Seckill.vue";
export default { export default {
components: { Banner, Seckil }, components: { Banner, Seckil },
mounted() {
this.$isLoginValidate();
},
}; };
</script> </script>

Loading…
Cancel
Save