index.vue 2.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
<template>
    <span class="headerAvatar">
        <template v-if="picType === 'avatar'">
            <el-avatar :size="30" :src="avatar" v-if="userInfo.headerImg"></el-avatar>
            <el-avatar :size="30" :src="require('@/assets/noBody.png')" v-else></el-avatar>
        </template>
        <template v-if="picType === 'img'">
            <img :src="avatar" class="avatar" v-if="userInfo.headerImg" />
            <img :src="require('@/assets/noBody.png')" class="avatar" v-else/>
        </template>
        <template v-if="picType === 'file'">
            <img :src="file" class="file"/>
        </template>
    </span>
</template>

<script>
import { mapGetters } from 'vuex'
const path = process.env.VUE_APP_BASE_API
export default {
    name: "customPic",
    props: {
        picType: {
            type: String,
            required: false,
            default: "avatar"
        },
        picSrc: {
            type: String,
            required: false,
            default: ""
        }
    },
    data(){
        return{
            path: path,
        }
    },
    computed:{
        ...mapGetters('user', ['userInfo']),
        avatar(){
            if(this.picSrc === ''){
                if(this.userInfo.headerImg !== '' && this.userInfo.headerImg.slice(0, 4) === "http"){
                    return this.userInfo.headerImg
                }
                return this.path + this.userInfo.headerImg
            }else{
                if(this.picSrc !== '' && this.picSrc.slice(0, 4) === "http"){
                    return this.picSrc
                }
                return this.path + this.picSrc
            }
        },
        file(){
            if(this.picSrc && this.picSrc.slice(0, 4) !== "http"){
                return this.path + this.picSrc
            }
            return this.picSrc
        }
    }
}
</script>

<style scoped>
.headerAvatar{
    display: flex;
    justify-content: center;
    align-items: center;
}
.file{
    width: 80px;
    height: 80px;
    position: relative;
}
</style>