Skip to content

Commit 5b2e57d

Browse files
committed
添加用户卡片
1 parent ca733a2 commit 5b2e57d

File tree

1 file changed

+59
-15
lines changed

1 file changed

+59
-15
lines changed

src/components/userCard.vue

Lines changed: 59 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
11
<template>
22
<v-card class="user-card d-flex no-select">
33
<div class="avatar">
4-
<v-avatar size="50" class="pointer" color="primary">
5-
<img :src="qiNiuImgLink+avatar" v-if="avatar" alt="John">
4+
<v-avatar size="50" class="pointer" color="primary" @click="viewUserProfile">
5+
<img :src="qiNiuImgLink+avatar" v-if="avatar" :alt="nickname">
66
<span class="white--text text-h6" v-else>{{nickname|preNickname}}</span>
77
</v-avatar>
88
<v-spacer></v-spacer>
99
</div>
1010
<div class="user-info flex-1 d-flex">
1111
<div class="d-flex flex-clo info-text">
12-
<span class="nickname text-md">{{nickname}}</span>
13-
<span class="about text-xs">{{about}}</span>
12+
<span class="nickname text-md pointer" @click="viewUserProfile">{{nickname}}</span>
13+
<span class="about text-xs">{{about||'ta还没想好怎么描述自己...'}}</span>
1414
</div>
1515
<div v-if="!isSelf" class="btn-opt">
16-
<v-btn color="#3c3c3c" v-if="myFollow">
17-
<v-icon left>mdi-plus</v-icon>取消关注
18-
</v-btn>
19-
<v-btn color="primary" v-else>
20-
<v-icon left>mdi-plus</v-icon>关注
21-
</v-btn>
16+
<v-btn color="#3C3C3C" v-if="myFollow" @click="unFollow" width="90" :loading="loading">取消关注</v-btn>
17+
<v-btn color="primary" v-else @click="follow" width="90" :loading="loading">关注</v-btn>
2218
</div>
2319
</div>
2420
</v-card>
2521
</template>
2622

2723
<script>
28-
import { qiNiuImgLink } from '@utils/publicData'
2924
import { mapState } from 'vuex'
25+
import { qiNiuImgLink } from '@utils/publicData'
3026
export default {
3127
props: {
3228
avatar: String,
@@ -38,6 +34,7 @@ export default {
3834
data() {
3935
return {
4036
qiNiuImgLink,
37+
loading: false,
4138
}
4239
},
4340
computed: {
@@ -46,8 +43,55 @@ export default {
4643
return this.loginInfo.username === this.username
4744
},
4845
},
49-
methods: {},
50-
components: {},
46+
methods: {
47+
async follow() {
48+
if (!this.loginState) {
49+
this.$message.info('请登录后再进行相关操作!')
50+
return void 0
51+
}
52+
this.loading = true
53+
try {
54+
const res = await this.$http.addFollow({
55+
username: this.loginInfo.username,
56+
followUsername: this.username,
57+
})
58+
if (res.state) {
59+
this.$message.success('关注成功!')
60+
this.$emit('setFollow', true)
61+
} else {
62+
this.$message.error('关注失败!')
63+
}
64+
} catch (err) {
65+
console.log(err)
66+
}
67+
this.loading = false
68+
},
69+
async unFollow() {
70+
if (!this.loginState) {
71+
this.$message.info('请登录后再进行相关操作!')
72+
return void 0
73+
}
74+
this.loading = true
75+
try {
76+
const res = await this.$http.delFollow({
77+
username: this.loginInfo.username,
78+
followUsername: this.username,
79+
})
80+
if (res.state) {
81+
this.$message.success('取消关注成功!')
82+
this.$emit('setFollow', false)
83+
} else {
84+
this.$message.error('取消关注失败!')
85+
}
86+
} catch (err) {
87+
console.log(err)
88+
}
89+
this.loading = false
90+
},
91+
viewUserProfile() {
92+
this.$router.push(`/user/${this.username}`)
93+
},
94+
},
5195
}
5296
</script>
5397

@@ -70,11 +114,11 @@ export default {
70114
.about {
71115
margin-top: 5px;
72116
display: block;
73-
color: #f8f8f8;
117+
color: #eeeeee;
74118
@include text-ellipsis;
75119
}
76120
}
77-
.btn-opt{
121+
.btn-opt {
78122
margin-top: 5px;
79123
}
80124
}

0 commit comments

Comments
 (0)