<template> <view class="set-page zx-container"> <image @click="editAvatarFn" :src="userInfo.headimg || defaultHeadImg" class="head-img" /> <view class="list-wrap"> <view v-for="(item, index) in list" :key="index" class="item" @tap="routerLink(item.url)" > <view class="title">{{ item.title }}</view> <view :class="['text-right', item.hideArrow && 'hide-arrow']"> <view v-if="item.textProp == 'registrationTime'"> {{ formatTimestamp(userInfo.ctime) }}</view> <input class="inp" @blur="inpfn" v-if="item.textProp == 'nickname'" v-model="userInfo[item.textProp]" type="text" /> <!-- <view v-if="item.textProp == 'registrationTime'"" class="title">{{ userInfo[item.textProp] }}1</view> --> <block v-else> {{ userInfo[item.textProp] || '' }} </block> </view> </view> </view> <view class="zx-form-btn fix-bottom-btn logout-btn" @tap="handleQuit">退出登录</view> </view> </template> <script> const storage = require('@/common/storage.js') import { QINIU_URL, defaultHeadImg } from '@/common/constant' var config = require('../../common/config_gyq.js'); var http = require('../../common/request'); const common = require('../../common/common.js'); export default { data() { return { QINIU_URL, defaultHeadImg, userInfo: {}, list: [ { title: '昵称', url: '', textProp: 'nickname' }, { title: '注册时间', textProp: 'registrationTime', hideArrow: true }, { title: '修改密码', url: '/pages/loginRegister/changePassword' }, { title: '关于我们', url: '/pages/aboutMy/aboutMy', textProp: 'version' }, { title: '隐私协议', url: '/pages/contract/contract?contract_id=270' }, { title: '用户条款', url: '/pages/contract/contract?contract_id=102' } ] } }, onShow() { const user_token = storage.getUserToken() user_token && this.loadUserInfo() }, methods: { formatTimestamp(timestamp) { const date = new Date(timestamp * 1000); return date.toLocaleDateString('zh-CN'); // 本地化格式(如:2021/5/3) }, inpfn(e){ console.log(e.detail.value) this.editUserInfoFn() }, editAvatarFn(){ let _this = this common.upLoadImgQiNiu((imgUrl)=> { _this.userInfo.headimg = imgUrl _this.editUserInfoFn() }); }, async editUserInfoFn(){ let {data} = await http.postApi(config.API_USER_MODIFY_USER_INFO,{ nickname:this.userInfo.nickname, head_img:this.userInfo.headimg, }) storage.setUserInfoData(this.userInfo) }, loadUserInfo() { const userInfo = storage.getUserInfoData() this.setData({ userInfo }) }, routerLink(url) { uni.navigateTo({ url }) }, handleQuit() { uni.showModal({ title: '提示', content: '您确定要退出当前账号吗?', showCancel: true, cancelText: '取消', confirmText: '确定', success: function(res) { if (res.confirm) { storage.clearStorage() uni.reLaunch({ url: '/pages/index/index' }) } } }) } } } </script> <style lang="scss"> @import "@/libs/css/layout.scss"; .inp{ font-size: 30rpx; color: #060809; text-align: right; } .set-page { display: flex; flex-direction: column; align-items: center; padding: 66rpx 32rpx 48rpx; .head-img { width: 174rpx; height: 174rpx; margin: 0 auto 40rpx; border-radius: 50%; } .list-wrap { width: 100%; background: #FFFFFF; border-radius: 40rpx; padding: 8rpx 32rpx; .item { padding: 40rpx 0; display: flex; justify-content: space-between; border-bottom: 2px solid #F1F4F5; &:last-child { border-bottom: 0; } .title { font-family: PingFangSC, PingFang SC; font-weight: bold; font-size: 32rpx; color: #060809; } .text-right { font-family: Futura, Futura; font-weight: 500; font-size: 30rpx; color: #060809; display: flex; align-items: center; &::after { content: ""; width: 28rpx; height: 28rpx; margin-left: 12rpx; background: url('https://qiniu.bms16.com/FtGhNkwKlhR7hOZsaj0gmRl9KjPx'); background-size: 100%; } &.hide-arrow { &::after { display: none; } } } } } .logout-btn { color: #FA2918; background: #E4E7EC; } } </style>