<template> 
 | 
    <view class="setup"> 
 | 
        <div class="setup-tx"> 
 | 
            <view class="setup-tx-image"> 
 | 
                <image v-if="fullCoverImage && fullCoverImage !=''" :src="fullCoverImage" mode="widthFix"></image> 
 | 
                <image v-else src="/static/logo.png" mode="widthFix"></image> 
 | 
            </view> 
 | 
            <button open-type="chooseAvatar"  @chooseavatar="onChooseAvatar" class="setup-tx-btn">更换头像</button> 
 | 
        </div> 
 | 
        <view class="setup-list"> 
 | 
            <view class="setup-list-item"> 
 | 
                <view class="label">昵称</view> 
 | 
                <view class="val"> 
 | 
                    <input type="text"  v-model='nickName' placeholder="请输入" /> 
 | 
                </view> 
 | 
            </view> 
 | 
            <view class="setup-list-item"> 
 | 
                <view class="label">真实姓名</view> 
 | 
                <view class="val"> 
 | 
                    <input type="text" v-model='name' placeholder="请输入" /> 
 | 
                </view> 
 | 
            </view> 
 | 
            <view class="setup-list-item"> 
 | 
                <view class="label">绑定手机号</view> 
 | 
                <view class="val"> 
 | 
                     {{userInfo.telephone}} 
 | 
                </view> 
 | 
            </view> 
 | 
        </view> 
 | 
        <view class="setup-sub" @click="updateMemberInfo">保存</view> 
 | 
    </view> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
    import { mapState } from 'vuex' 
 | 
    export default { 
 | 
        computed: { 
 | 
            ...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid']) 
 | 
        }, 
 | 
        data() { 
 | 
            return { 
 | 
                name:null, 
 | 
                coverImage:null, 
 | 
                nickName:null, 
 | 
                fullCoverImage:null 
 | 
            }; 
 | 
        }, 
 | 
        onShow(options){  
 | 
            console.log(this.userInfo) 
 | 
            this.coverImage = this.userInfo.coverImage 
 | 
            this.nickName = this.userInfo.nickName 
 | 
            this.fullCoverImage = this.userInfo.fullCoverImage 
 | 
            this.name = this.userInfo.name 
 | 
        }, 
 | 
        methods: { 
 | 
            onChooseAvatar(e){ 
 | 
             const { detail } = e 
 | 
             var that =this 
 | 
              uni.compressImage({ 
 | 
                src: detail.avatarUrl, 
 | 
                quality: 80, 
 | 
                success: res => { 
 | 
                  that.uploadFile(res.tempFilePath); 
 | 
                } 
 | 
              }) 
 | 
            }, 
 | 
            uploadFile(fileUrl) { 
 | 
              var that = this 
 | 
              console.log(fileUrl, 'fileUrl') 
 | 
              uni.uploadFile({ 
 | 
                    url: this.$baseUrl + 'web/public/upload', 
 | 
                    filePath: fileUrl, 
 | 
                    name: 'file', 
 | 
                    formData: { 
 | 
                        'folder': 'member' 
 | 
                    }, 
 | 
                    success:(data)=>{ 
 | 
                         const res = JSON.parse(data.data) 
 | 
                         that.coverImage = res.data.imgaddr 
 | 
                         that.fullCoverImage = res.data.url 
 | 
                         that.updateMemberInfo() 
 | 
                    }, 
 | 
                    fail:(e)=>{ 
 | 
                        uni.showToast({ 
 | 
                            title: '上传失败', 
 | 
                            duration: 2000, 
 | 
                            icon: "none" 
 | 
                        }); 
 | 
                    } 
 | 
              })  
 | 
            }, 
 | 
            updateMemberInfo() { 
 | 
              if((!this.name ||this.name.trim() =='' ) 
 | 
                  &&(!this.nickName ||this.nickName.trim() =='') 
 | 
                  &&(!this.coverImage ||this.coverImage.trim() =='')){ 
 | 
                  uni.showToast({ 
 | 
                        title: '对不起,请按要求填写信息!', 
 | 
                        icon: "none", 
 | 
                        duration: 2000 
 | 
                  }); 
 | 
                  return 
 | 
              } 
 | 
              var that = this 
 | 
              this.$u.api.editMemberInfo({ 
 | 
                    name:that.name, 
 | 
                    nickName:that.nickName, 
 | 
                    coverImage:that.coverImage, 
 | 
               }).then(res =>{ 
 | 
                    that.userInfo.name = this.name 
 | 
                    that.userInfo.nickName = this.nickName 
 | 
                    that.userInfo.coverImage = this.coverImage 
 | 
                    that.userInfo.fullCoverImage = this.fullCoverImage 
 | 
                    uni.showToast({ 
 | 
                        title: '更新成功', 
 | 
                        icon: "none", 
 | 
                        duration: 2000 
 | 
                     }); 
 | 
               }) 
 | 
            }  
 | 
        } 
 | 
    } 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
    .setup { 
 | 
        width: 100%; 
 | 
        padding: 0 40rpx; 
 | 
        box-sizing: border-box; 
 | 
        .setup-tx { 
 | 
            display: flex; 
 | 
            flex-direction: column; 
 | 
            align-items: center; 
 | 
            justify-content: center; 
 | 
            margin-top: 64rpx; 
 | 
            .setup-tx-image { 
 | 
                width: 160rpx; 
 | 
                height: 160rpx; 
 | 
                border-radius: 50%; 
 | 
                display: flex; 
 | 
                align-items: center; 
 | 
                justify-content: center; 
 | 
                overflow: hidden; 
 | 
                background: rgba(91,190,56,0.3); 
 | 
                border: 2rpx solid rgba(91,190,56,0.35); 
 | 
                image { 
 | 
                    width: 100%; 
 | 
                } 
 | 
            } 
 | 
            .setup-tx-btn { 
 | 
                width: 176rpx; 
 | 
                height: 48rpx; 
 | 
                line-height: 48rpx; 
 | 
                text-align: center; 
 | 
                border-radius: 32rpx; 
 | 
                font-weight: 400; 
 | 
                font-size: 26rpx; 
 | 
                color: #5BBE38; 
 | 
                border: 1rpx solid #5BBE38; 
 | 
                background-color: #ffffff; 
 | 
                margin-top: 24rpx; 
 | 
            } 
 | 
        } 
 | 
        .setup-list { 
 | 
            width: 100%; 
 | 
            display: flex; 
 | 
            flex-direction: column; 
 | 
            margin-top: 40rpx; 
 | 
            .setup-list-item { 
 | 
                width: 100%; 
 | 
                height: 112rpx; 
 | 
                display: flex; 
 | 
                align-items: center; 
 | 
                justify-content: space-between; 
 | 
                border-bottom: 1rpx solid #E5E5E5; 
 | 
                .label { 
 | 
                    font-weight: 400; 
 | 
                    font-size: 30rpx; 
 | 
                    color: #222222; 
 | 
                    flex-shrink: 0; 
 | 
                    width: 150rpx; 
 | 
                    margin-right: 30rpx; 
 | 
                } 
 | 
                .val { 
 | 
                    flex: 1; 
 | 
                    height: 100%; 
 | 
                    display: flex; 
 | 
                    align-items: center; 
 | 
                    justify-content: flex-end; 
 | 
                    input { 
 | 
                        width: 100%; 
 | 
                        height: 100%; 
 | 
                        font-weight: 400; 
 | 
                        font-size: 28rpx; 
 | 
                        color: #222222; 
 | 
                        text-align: right; 
 | 
                    } 
 | 
                    button { 
 | 
                        width: 148rpx; 
 | 
                        height: 60rpx; 
 | 
                        line-height: 60rpx; 
 | 
                        text-align: center; 
 | 
                        background: #5BBE38; 
 | 
                        border-radius: 30rpx; 
 | 
                        font-weight: 500; 
 | 
                        font-size: 28rpx; 
 | 
                        color: #FFFFFF; 
 | 
                        margin: 0 !important; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        .setup-sub { 
 | 
            width: 100%; 
 | 
            height: 88rpx; 
 | 
            line-height: 88rpx; 
 | 
            text-align: center; 
 | 
            box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16); 
 | 
            border-radius: 44rpx; 
 | 
            font-weight: 500; 
 | 
            font-size: 32rpx; 
 | 
            color: white; 
 | 
            background-color: #15CF52; 
 | 
            margin-top: 80rpx; 
 | 
            border: 1rpx solid #15CF52; 
 | 
        } 
 | 
    } 
 | 
</style> 
 |