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.
 
 
 
 
 
 

159 lines
3.4 KiB

<template>
<div class="layout-container">
<y-header>
<div slot="nav"></div>
</y-header>
<div class="w">
<div class="content">
<div class="account-sidebar">
<div class="avatar gray-box ">
<div>
<img :src="userInfo.icon"> <h5>
{{userInfo.username}}</h5></div>
<div class="box-inner">
<ul class="account-nav">
<li v-for="(item,i) in nav" :key='i' :class="{current:item.name===title}"
@click="tab(item)">
<a href="javascript:;">{{item.name}}</a></li>
</ul>
</div>
</div>
</div>
<div class="account-content">
<router-view></router-view>
</div>
</div>
</div>
<y-footer></y-footer>
</div>
</template>
<script>
import YFooter from '/common/footer'
import YHeader from '/common/header'
import { mapState } from 'vuex'
import { getStore } from '/utils/storage'
export default {
data () {
return {
userInfo:null,
title: '我的订单',
nav: [
{name: '我的订单', path: 'orderList'},
{name: '账户资料', path: 'information'},
{name: '收货地址', path: 'addressList'},
{name: '我的优惠', path: 'coupon'},
{name: '售后服务', path: 'support'},
{name: '以旧换新', path: 'aihuishou'}
],
editAvatar: true
}
},
methods: {
tab (e) {
this.$router.push({path: '/user/' + e.path})
}
},
created () {
var userInfo = getStore('userInfo');
if (!userInfo) {
this.$router.push({ path: '/login' })
}
this.userInfo=userInfo;
let path = this.$route.path.split('/')[2]
this.nav.forEach(item => {
if (item.path === path) {
this.title = item.name
}
})
},
components: {
YFooter,
YHeader
},
watch: {
$route (to) {
let path = to.path.split('/')[2]
this.nav.forEach(item => {
if (item.path === path) {
this.title = item.name
}
})
}
}
}
</script>
<style lang="scss" rel="stylesheet/scss" scoped>
@import "../../assets/style/mixin";
.w {
padding-top: 40px;
}
.content {
display: flex;
height: 100%;
}
.account-sidebar {
width: 210px;
border-radius: 6px;
.avatar {
padding-top: 20px;
border-radius: 10px;
text-align: center;
img {
width: 168px;
height: 168px;
}
h5 {
font-size: 18px;
line-height: 48px;
font-weight: 700;
}
}
.account-nav {
padding-top: 15px;
li {
position: relative;
height: 48px;
border-top: 1px solid #EBEBEB;
line-height: 48px;
&:hover {
a {
position: relative;
z-index: 1;
height: 50px;
background-color: #98AFEE;
line-height: 50px;
color: #FFF;
}
}
a {
display: block;
}
&.current {
a {
position: relative;
z-index: 1;
height: 50px;
background-color: #98AFEE;
line-height: 50px;
color: #FFF;
}
}
}
}
}
.account-content {
margin-left: 20px;
flex: 1;
}
</style>