优化个人主页

dev
truthhun 1 year ago
parent 9a11482e47
commit c9f2580bf3

@ -0,0 +1,135 @@
<template>
<div class="com-user-card2">
<el-row :gutter="20">
<el-col :span="16">
<div class="user">
<div class="user-card-avatar">
<nuxt-link :to="'/user/' + user.id">
<UserAvatar :size="64" :user="user" />
</nuxt-link>
</div>
<div class="user-profile">
<h2 class="user-card-username">{{ user.username }}</h2>
<div class="help-block signature">
{{ user.signature || '暂无个性签名' }}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="user-card-stat">
<el-row class="help-block">
<el-col :span="8">
<div>文档</div>
<div class="el-link el-link--primary">
{{ user.doc_count || 0 }}
</div>
</el-col>
<el-col :span="8">
<div>收藏</div>
<div class="el-link el-link--primary">
{{ user.favorite_count || 0 }}
</div>
</el-col>
<el-col :span="8"
><div>{{ settings.system.credit_name || '魔豆' }}</div>
<div class="el-link el-link--primary">
{{ user.credit_count || 0 }}
</div>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
//
export default {
name: 'UserCard2',
props: {
user: {
type: Object,
default: () => {
return {
id: 0,
name: '',
avatar: '',
signature: '',
doc_count: 0,
favorite_count: 0,
credit_count: 0,
}
},
},
hideActions: {
type: Boolean,
default: false,
},
hideSignature: {
type: Boolean,
default: false,
},
},
data() {
return {}
},
async created() {},
computed: {
...mapGetters('setting', ['settings']),
},
methods: {},
}
</script>
<style lang="scss" scoped>
.com-user-card2 {
.user {
display: flex;
.user-card-avatar {
width: 70px;
}
.user-profile {
flex: 1;
margin-left: 10px;
}
}
.el-avatar {
border: 2px solid #ddd;
padding: 3px;
background-color: #fff;
width: 80px;
height: 80px;
&:hover {
border: 2px solid #409eff;
}
img {
border-radius: 50%;
}
}
.user-card-username {
margin: 0 0 10px;
font-size: 25px;
}
.user-card-stat {
text-align: center;
.help-block {
font-size: 14px;
.el-link {
font-size: 18px;
margin-top: 8px;
}
.el-col {
border-right: 1px solid #eee;
&:first-child {
border-left: 1px solid #eee;
}
}
}
}
.signature {
margin-top: 10px;
font-size: 13px;
}
}
</style>

@ -78,7 +78,10 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="ucenter"
><i class="fa fa-user-o"></i> 个人主页</el-dropdown-item
><i class="fa fa-home"></i> 个人主页</el-dropdown-item
>
<el-dropdown-item command="me"
><i class="fa fa-user-o"></i> 个人中心</el-dropdown-item
>
<el-dropdown-item command="profile"
><i class="fa fa-edit"></i> 个人资料</el-dropdown-item
@ -317,7 +320,12 @@
@click="goToLink(`/user/${user.id}`)"
class="el-link el-link--default"
>
<i class="fa fa-user-o"></i> &nbsp;个人主页
<i class="fa fa-home"></i> &nbsp;个人主页
</div>
</li>
<li>
<div class="el-link el-link--default" @click="goToLink(`/me`)">
<i class="fa fa-user-o"></i> &nbsp;个人中心
</div>
</li>
<li>
@ -509,6 +517,9 @@ export default {
case 'ucenter':
this.$router.push(`/user/${this.user.id}`)
break
case 'me':
this.$router.push(`/me`)
break
case 'profile':
this.userinfoDialogVisible = true
break

@ -0,0 +1,17 @@
<template>
<div class="page page-me">
<el-row :gutter="20">
<el-col :span="6">
<el-card shadow="never"></el-card>
</el-col>
<el-col :span="18">
<el-card shadow="never"></el-card>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
name: 'PageMe',
}
</script>

@ -1,61 +1,53 @@
<template>
<div class="page page-user">
<el-row :gutter="20">
<el-col :span="6" class="user-profile">
<el-row>
<el-col :span="24">
<el-card shadow="never">
<div slot="header">个人主页</div>
<user-card :user="user" />
<user-card2 :user="user" />
<el-tabs
v-model="activeTab"
class="user-tabs mgt-20px"
@tab-click="tabClick"
>
<el-tab-pane name="user-id">
<span slot="label">
<nuxt-link
class="el-link el-link--default"
:to="{
name: 'user-id',
params: { id: user.id },
}"
><i class="el-icon-magic-stick"></i>&nbsp;动态</nuxt-link
>
</span>
</el-tab-pane>
<el-tab-pane name="user-id-document">
<span slot="label">
<nuxt-link
class="el-link el-link--default"
:to="{
name: 'user-id-document',
params: { id: user.id },
}"
><i class="el-icon-document"></i>&nbsp;文档</nuxt-link
>
</span>
</el-tab-pane>
<el-tab-pane name="user-id-favorite">
<span slot="label">
<nuxt-link
class="el-link el-link--default"
:to="{
name: 'user-id-favorite',
params: { id: user.id },
}"
><i class="el-icon-star-off"></i>&nbsp;收藏</nuxt-link
>
</span>
</el-tab-pane>
<nuxt-child :user="user" />
</el-tabs>
</el-card>
<el-card shadow="never" class="mgt-20px shared-user hidden-xs-only">
<div slot="header">分享达人</div>
<user-list />
</el-card>
</el-col>
<el-col :span="18" class="user-right">
<el-tabs
v-model="activeTab"
class="user-tabs"
type="border-card"
@tab-click="tabClick"
>
<el-tab-pane name="user-id">
<span slot="label">
<nuxt-link
class="el-link el-link--default"
:to="{
name: 'user-id',
params: { id: user.id },
}"
><i class="el-icon-magic-stick"></i>&nbsp;动态</nuxt-link
>
</span>
</el-tab-pane>
<el-tab-pane name="user-id-document">
<span slot="label">
<nuxt-link
class="el-link el-link--default"
:to="{
name: 'user-id-document',
params: { id: user.id },
}"
><i class="el-icon-document"></i>&nbsp;文档</nuxt-link
>
</span>
</el-tab-pane>
<el-tab-pane name="user-id-favorite">
<span slot="label">
<nuxt-link
class="el-link el-link--default"
:to="{
name: 'user-id-favorite',
params: { id: user.id },
}"
><i class="el-icon-star-off"></i>&nbsp;收藏</nuxt-link
>
</span>
</el-tab-pane>
<nuxt-child :user="user" />
</el-tabs>
</el-col>
</el-row>
</div>
@ -123,26 +115,9 @@ export default {
padding-top: 0;
}
}
.user-right {
.user-tabs.el-tabs--border-card {
box-shadow: none;
border: 0;
border-radius: 5px;
& > .el-tabs__header {
background-color: $background-grey-light;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.el-tabs__item.is-active {
margin-top: 0;
border-top: 1px solid #dcdfe6;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
& > .el-tabs__content {
padding-top: 5px;
min-height: 805px;
}
.user-tabs {
& > .el-tabs__content {
min-height: calc(100vh - 280px);
}
}
}

Loading…
Cancel
Save