<template>
|
<el-card style="margin-bottom:20px;">
|
<div slot="header" class="clearfix">
|
<span>关于我</span>
|
</div>
|
|
<div class="user-profile">
|
<div class="box-center">
|
<input
|
type="file"
|
@change="changeHeadPortrait"
|
accept=".jpg, .png"
|
style="display: none"
|
ref="fileHeadPortrait"
|
id="fileHeadPortrait"
|
/>
|
|
<img :src="userInfo.imagePath?'api/files/' + userInfo.imagePath : '/static/icons/touxiang.png'"
|
height="100px"
|
width="100px"
|
style="border-radius: 50px"
|
@click="uploadImage"
|
class="img"
|
id="headPortrait">
|
</div>
|
<div class="box-center">
|
<div class="user-name text-center">{{ userInfo.userName }}</div>
|
<div class="user-role text-center text-muted">{{ enumFormat(roleEnum,userInfo.role) }}</div>
|
</div>
|
</div>
|
</el-card>
|
</template>
|
|
<script>
|
import { mapGetters, mapState } from 'vuex'
|
import userApi from '@/api/user'
|
|
export default {
|
data() {
|
return {
|
uploadUrl: 'http://localhost:8000/api/upload/upload'
|
}
|
},
|
props: {
|
userInfo: {
|
type: Object,
|
default: () => {
|
return {
|
realName: '',
|
userName: '',
|
role: '',
|
imagePath: null
|
}
|
}
|
}
|
},
|
computed: {
|
...mapGetters('enumItem', [
|
'enumFormat'
|
]),
|
...mapState('enumItem', {
|
roleEnum: state => state.user.roleEnum
|
})
|
},
|
methods: {
|
changeHeadPortrait(e) {
|
let formData = new FormData();
|
if (e.target.files[0]) {
|
formData.set("file", e.target.files[0]);
|
userApi.uploadImg(formData).then(
|
this.$message.success('上传成功'),
|
);
|
}
|
},
|
uploadImage(){
|
let logoFile = document.getElementById("fileHeadPortrait");
|
if (logoFile) {
|
logoFile.click();
|
}
|
},
|
getPage() {
|
userApi.getCurrentUser.then(re => {
|
let _this = this
|
_this.userInfo = re.data
|
})
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.box-center {
|
margin: 0 auto;
|
display: table;
|
}
|
|
.text-muted {
|
color: #777;
|
}
|
|
.user-profile {
|
.user-name {
|
font-weight: bold;
|
}
|
|
.box-center {
|
padding-top: 10px;
|
}
|
|
.user-role {
|
padding-top: 10px;
|
font-weight: 400;
|
font-size: 14px;
|
}
|
|
.box-social {
|
padding-top: 30px;
|
|
.el-table {
|
border-top: 1px solid #dfe6ec;
|
}
|
}
|
|
.user-follow {
|
padding-top: 20px;
|
}
|
}
|
|
.user-bio {
|
margin-top: 20px;
|
color: #606266;
|
|
span {
|
padding-left: 4px;
|
}
|
|
.user-bio-section {
|
font-size: 14px;
|
padding: 15px 0;
|
|
.user-bio-section-header {
|
border-bottom: 1px solid #dfe6ec;
|
padding-bottom: 10px;
|
margin-bottom: 10px;
|
font-weight: bold;
|
}
|
}
|
}
|
</style>
|