| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | <template>  <view class="container">    <view class="user-info">      <view class="info-item">        <view class="label">头像:</view>        <view class="info" @click="handleAvatarClick">          <u-avatar size="60" :src="userInfo.avatar"></u-avatar>          <u-icon class="btn" name="arrow-right"></u-icon>        </view>      </view>      <view class="info-item">        <view class="label">昵称:</view>        <view v-if="!nameEditOn" class="info">          <view class="value">{{ userInfo.nickname }}</view>          <u-icon            class="btn"            name="edit-pen"            @click="              tempName = userInfo.nickname              nameEditOn = true            "          ></u-icon>        </view>        <view v-else class="name-edit">          <u--input maxlength="10" border="bottom" v-model="tempName"></u--input>          <view class="edit-btn-group">            <u-tag class="edit-btn" text="保存" plain size="mini" type="primary" @click="handleSaveBtnClick"></u-tag>            <u-tag              class="edit-btn"              text="取消"              plain              size="mini"              type="info"              @click="                tempName = ''                nameEditOn = false              "            ></u-tag>          </view>        </view>      </view>      <view class="info-item">        <view class="label">手机:</view>        <view class="info">          <view class="value">{{ userInfo.mobile }}</view>          <u-icon class="btn" name="edit-pen"></u-icon>        </view>      </view>    </view>  </view></template><script>import { getUserInfo, updateAvatar, updateNickname } from '../../api/user'export default {  data() {    return {      userInfo: {        nickname: '',        avatar: '',        mobile: ''      },      avatarFiles: [],      nameEditOn: false,      tempName: ''    }  },  onLoad() {    this.loadUserInfoData()  },  methods: {    loadUserInfoData() {      getUserInfo().then(res => {        this.userInfo = res.data      })    },    handleAvatarClick() {      uni.chooseImage({        success: chooseImageRes => {          const tempFilePaths = chooseImageRes.tempFilePaths          updateAvatar(tempFilePaths[0]).then(res => {            this.userInfo.avatar = res.data            this.$store.commit('SET_USER_INFO', this.userInfo)          })        }      })    },    handleSaveBtnClick() {      updateNickname({ nickname: this.tempName }).then(res => {        this.nameEditOn = false;        this.userInfo.nickname = this.tempName        this.$store.commit('SET_USER_INFO', this.userInfo)      })    }  }}</script><style lang="scss" scoped>.user-info {  .info-item {    padding: 20rpx 60rpx;    border-bottom: $custom-border-style;    @include flex-space-between;    .label {      font-size: 30rpx;    }    .info {      @include flex-right;      .value {        font-size: 30rpx;      }      .btn {        margin-left: 30rpx;      }    }    .name-edit {      @include flex-left;      .edit-btn-group {        @include flex;        .edit-btn {          margin-left: 20rpx;        }      }    }  }}</style>
 |