Skip to content

Commit 7519a00

Browse files
authoredMay 23, 2021
fix(avatar): show current user's avatar (#640)
在显示头像的地方正确显示当前登录用户的头像,已补充mock接口返回的avatar字段。
1 parent d8ff30d commit 7519a00

File tree

9 files changed

+60
-23
lines changed

9 files changed

+60
-23
lines changed
 

‎mock/sys/user.ts

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ function createFakeUserList() {
77
userId: '1',
88
username: 'vben',
99
realName: 'Vben Admin',
10+
avatar: 'http://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
1011
desc: 'manager',
1112
password: '123456',
1213
token: 'fakeToken1',
@@ -22,6 +23,7 @@ function createFakeUserList() {
2223
username: 'test',
2324
password: '123456',
2425
realName: 'test user',
26+
avatar: 'http://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
2527
desc: 'tester',
2628
token: 'fakeToken2',
2729
roles: [

‎src/api/sys/model/userModel.ts

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ export interface GetUserInfoByUserIdModel {
3838
username: string;
3939
// 真实名字
4040
realName: string;
41+
// 头像
42+
avatar: string;
4143
// 介绍
4244
desc?: string;
4345
}

‎src/layouts/default/header/components/lock/LockModal.vue

+7-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
>
99
<div :class="`${prefixCls}__entry`">
1010
<div :class="`${prefixCls}__header`">
11-
<img :src="headerImg" :class="`${prefixCls}__header-img`" />
11+
<img :src="avatar" :class="`${prefixCls}__header-img`" />
1212
<p :class="`${prefixCls}__header-name`">
1313
{{ getRealName }}
1414
</p>
@@ -71,14 +71,19 @@
7171
await resetFields();
7272
}
7373
74+
const avatar = computed(() => {
75+
const { avatar } = userStore.getUserInfo;
76+
return avatar || headerImg;
77+
});
78+
7479
return {
7580
t,
7681
prefixCls,
7782
getRealName,
7883
register,
7984
registerForm,
8085
handleLock,
81-
headerImg,
86+
avatar,
8287
};
8388
},
8489
});

‎src/layouts/default/header/components/user-dropdown/index.vue

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<Dropdown placement="bottomLeft" :overlayClassName="`${prefixCls}-dropdown-overlay`">
33
<span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex">
4-
<img :class="`${prefixCls}__header`" :src="headerImg" />
4+
<img :class="`${prefixCls}__header`" :src="getUserInfo.avatar" />
55
<span :class="`${prefixCls}__info hidden md:block`">
66
<span :class="`${prefixCls}__name `" class="truncate">
77
{{ getUserInfo.realName }}
@@ -75,8 +75,8 @@
7575
const userStore = useUserStore();
7676
7777
const getUserInfo = computed(() => {
78-
const { realName = '', desc } = userStore.getUserInfo || {};
79-
return { realName, desc };
78+
const { realName = '', avatar, desc } = userStore.getUserInfo || {};
79+
return { realName, avatar: avatar || headerImg, desc };
8080
});
8181
8282
const [register, { openModal }] = useModal();
@@ -115,7 +115,6 @@
115115
getUserInfo,
116116
handleMenuClick,
117117
getShowDoc,
118-
headerImg,
119118
register,
120119
getUseLockPage,
121120
};

‎src/views/dashboard/workbench/components/WorkbenchHeader.vue

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<template>
22
<div class="lg:flex">
3-
<Avatar :src="headerImg" :size="72" class="!mx-auto !block" />
3+
<Avatar :src="userinfo.avatar || headerImg" :size="72" class="!mx-auto !block" />
44
<div class="md:ml-6 flex flex-col justify-center md:mt-0 mt-2">
5-
<h1 class="md:text-lg text-md">早安, Vben, 开始您一天的工作吧!</h1>
5+
<h1 class="md:text-lg text-md">早安, {{ userinfo.realName }}, 开始您一天的工作吧!</h1>
66
<span class="text-secondary"> 今日晴,20℃ - 32℃! </span>
77
</div>
88
<div class="flex flex-1 justify-end md:mt-0 mt-4">
@@ -23,15 +23,18 @@
2323
</div>
2424
</template>
2525
<script lang="ts">
26-
import { defineComponent } from 'vue';
26+
import { computed, defineComponent } from 'vue';
2727
2828
import { Avatar } from 'ant-design-vue';
29+
import { useUserStore } from '/@/store/modules/user';
2930
3031
import headerImg from '/@/assets/images/header.jpg';
3132
export default defineComponent({
3233
components: { Avatar },
3334
setup() {
34-
return { headerImg };
35+
const userStore = useUserStore();
36+
const userinfo = computed(() => userStore.getUserInfo);
37+
return { userinfo, headerImg };
3538
},
3639
});
3740
</script>

‎src/views/demo/page/account/center/index.vue

+6-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<a-row>
66
<a-col :span="8">
77
<div :class="`${prefixCls}-top__avatar`">
8-
<img width="70" :src="headerImg" />
8+
<img width="70" :src="avatar" />
99
<span>Vben</span>
1010
<div>海纳百川,有容乃大</div>
1111
</div>
@@ -54,7 +54,7 @@
5454

5555
<script lang="ts">
5656
import { Tag, Tabs, Row, Col } from 'ant-design-vue';
57-
import { defineComponent } from 'vue';
57+
import { defineComponent, computed } from 'vue';
5858
import { CollapseContainer } from '/@/components/Container/index';
5959
import Icon from '/@/components/Icon/index';
6060
import Article from './Article.vue';
@@ -63,6 +63,7 @@
6363
6464
import headerImg from '/@/assets/images/header.jpg';
6565
import { tags, teams, details, achieveList } from './data';
66+
import { useUserStore } from '/@/store/modules/user';
6667
6768
export default defineComponent({
6869
components: {
@@ -78,9 +79,11 @@
7879
[Col.name]: Col,
7980
},
8081
setup() {
82+
const userStore = useUserStore();
83+
const avatar = computed(() => userStore.getUserInfo.avatar || headerImg);
8184
return {
8285
prefixCls: 'account-center',
83-
headerImg,
86+
avatar,
8487
tags,
8588
teams,
8689
details,

‎src/views/demo/page/account/setting/BaseSetting.vue

+10-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<a-col :span="10">
88
<div class="change-avatar">
99
<div class="mb-2"> 头像 </div>
10-
<img width="140" :src="headerImg" />
10+
<img width="140" :src="avatar" />
1111
<Upload :showUploadList="false">
1212
<Button class="ml-5"> <Icon icon="feather:upload" />更换头像 </Button>
1313
</Upload>
@@ -19,7 +19,7 @@
1919
</template>
2020
<script lang="ts">
2121
import { Button, Upload, Row, Col } from 'ant-design-vue';
22-
import { defineComponent, onMounted } from 'vue';
22+
import { computed, defineComponent, onMounted } from 'vue';
2323
import { BasicForm, useForm } from '/@/components/Form/index';
2424
import { CollapseContainer } from '/@/components/Container/index';
2525
import Icon from '/@/components/Icon/index';
@@ -29,6 +29,7 @@
2929
import headerImg from '/@/assets/images/header.jpg';
3030
import { accountInfoApi } from '/@/api/demo/account';
3131
import { baseSetschemas } from './data';
32+
import { useUserStore } from '/@/store/modules/user';
3233
3334
export default defineComponent({
3435
components: {
@@ -42,6 +43,7 @@
4243
},
4344
setup() {
4445
const { createMessage } = useMessage();
46+
const userStore = useUserStore();
4547
4648
const [register, { setFieldsValue }] = useForm({
4749
labelWidth: 120,
@@ -54,8 +56,13 @@
5456
setFieldsValue(data);
5557
});
5658
59+
const avatar = computed(() => {
60+
const { avatar } = userStore.getUserInfo;
61+
return avatar || headerImg;
62+
});
63+
5764
return {
58-
headerImg,
65+
avatar,
5966
register,
6067
handleSubmit: () => {
6168
createMessage.success('更新成功!');

‎src/views/sys/lock/LockPage.vue

+22-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,23 @@
55
>
66
<div
77
:class="`${prefixCls}__unlock`"
8-
class="absolute top-0 left-1/2 flex pt-5 h-16 items-center justify-center sm:text-md xl:text-xl text-white flex-col cursor-pointer transform translate-x-1/2"
8+
class="
9+
absolute
10+
top-0
11+
left-1/2
12+
flex
13+
pt-5
14+
h-16
15+
items-center
16+
justify-center
17+
sm:text-md
18+
xl:text-xl
19+
text-white
20+
flex-col
21+
cursor-pointer
22+
transform
23+
translate-x-1/2
24+
"
925
@click="handleShowForm(false)"
1026
v-show="showDate"
1127
>
@@ -28,9 +44,9 @@
2844
<div :class="`${prefixCls}-entry`" v-show="!showDate">
2945
<div :class="`${prefixCls}-entry-content`">
3046
<div :class="`${prefixCls}-entry__header enter-x`">
31-
<img :src="headerImg" :class="`${prefixCls}-entry__header-img`" />
47+
<img :src="userinfo.avatar || headerImg" :class="`${prefixCls}-entry__header-img`" />
3248
<p :class="`${prefixCls}-entry__header-name`">
33-
{{ realName }}
49+
{{ userinfo.realName }}
3450
</p>
3551
</div>
3652
<InputPassword
@@ -108,9 +124,8 @@
108124
109125
const { t } = useI18n();
110126
111-
const realName = computed(() => {
112-
const { realName } = userStore.getUserInfo || {};
113-
return realName;
127+
const userinfo = computed(() => {
128+
return userStore.getUserInfo || {};
114129
});
115130
116131
/**
@@ -141,7 +156,7 @@
141156
142157
return {
143158
goLogin,
144-
realName,
159+
userinfo,
145160
unLock,
146161
errMsg,
147162
loading,

‎types/store.ts

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export interface UserInfo {
3333
userId: string | number;
3434
username: string;
3535
realName: string;
36+
avatar: string;
3637
desc?: string;
3738
}
3839

0 commit comments

Comments
 (0)