You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
5.5 KiB
190 lines
5.5 KiB
<template> |
|
<HeaderNav title="个人信息" :is-back="true"></HeaderNav> |
|
<view class="app-wallpaper" :style="{ |
|
backgroundImage:'url('+staticImage.wallpaperBgImage+')' |
|
}"> |
|
<view class="detail-container"> |
|
<view class="detail-content-container"> |
|
<view class="detail-content"> |
|
<view class="detail-content-item"> |
|
<view class="detail-item-title">头像</view> |
|
<view class="detail-item-content"> |
|
<button open-type="chooseAvatar" class="avatarBtn" @chooseavatar="chooseAvatar"> |
|
<image class="img" mode="aspectFill" :src="user.avatar"/> |
|
</button> |
|
</view> |
|
</view> |
|
<view class="detail-content-item"> |
|
<view class="detail-item-title">昵称</view> |
|
<view class="detail-item-content"> |
|
<u-input border="none" v-model="user.name" inputAlign="right" ></u-input> |
|
<u-icon class="arrow-right" name="arrow-right"></u-icon> |
|
</view> |
|
</view> |
|
<view class="detail-content-item" @click="$refs.datetimepicker.open()"> |
|
<view class="detail-item-title">生日</view> |
|
<view class="detail-item-content"> |
|
<u-text :text="birthday" size="28" color="#636363"></u-text> |
|
<uv-datetime-picker |
|
ref="datetimepicker" |
|
v-model="user.birthday" |
|
mode="date" |
|
minDate="1900-01-01" |
|
@confirm="birthdayConfirm" |
|
></uv-datetime-picker> |
|
<u-icon class="arrow-right" name="arrow-right"></u-icon> |
|
</view> |
|
|
|
</view> |
|
<view class="detail-content-item"> |
|
<view class="detail-item-title">手机</view> |
|
<view class="detail-item-content"> |
|
<u-input border="none" v-model="user.phone" inputAlign="right" ></u-input> |
|
<u-icon class="arrow-right" name="arrow-right"></u-icon> |
|
</view> |
|
</view> |
|
<view class="detail-content-item" @click="$refs.sexPicker.open()"> |
|
<view class="detail-item-title">性别</view> |
|
<view class="detail-item-content"> |
|
<u-text :text="sexTitle" size="28" color="#636363"></u-text> |
|
<uv-picker ref="sexPicker" @confirm="sexConfirm" :default-index="[sexChecked]" key-name="title" v-model="user.sex" :columns="sexs"></uv-picker> |
|
<u-icon class="arrow-right" name="arrow-right"></u-icon> |
|
</view> |
|
</view> |
|
<view class="detail-content-item"> |
|
<view class="detail-item-title">背景</view> |
|
<view class="detail-item-content"> |
|
<u-upload :file-list="background" :maxCount="1" @delete="backgroundDel" @afterRead="backgroundRead"> |
|
</u-upload> |
|
</view> |
|
</view> |
|
<view class="detail-logout-button" @click="loginout"> |
|
退出登录 |
|
</view> |
|
</view> |
|
</view> |
|
<view class="detail-background-container"> |
|
<view class="detail-background"></view> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import { |
|
imghost |
|
} from '@/config/host.js' |
|
import api from '@/utils/functions.js'; |
|
import HeaderNav from '@/components/HeaderNav/Index.vue'; |
|
import log from "@/utils/log"; |
|
import {updateUserDetail, userDetail} from "@/api/user"; |
|
import functions from "@/utils/functions.js"; |
|
import {UserCache} from "@/config/config"; |
|
export default { |
|
components:{ |
|
HeaderNav |
|
}, |
|
data: { |
|
sexChecked:0, |
|
sexTitle:'', |
|
birthday:'', |
|
show:false, |
|
sexShow:false, |
|
sexs:[[{title: '男', value: 1}, {title:'女', value:2}]], |
|
staticImage:{ |
|
wallpaperBgImage:imghost+'/background.png', |
|
}, |
|
user:{ |
|
avatar:imghost+'/banner.png', |
|
name:'清晨的风', |
|
background_image:imghost+'/banner.png', |
|
sex:1, |
|
phone:'15012345678', |
|
coupons:221, |
|
id:88685, |
|
birthday:'2002-05-11', |
|
}, |
|
writeWaitTime:1000, |
|
writeHandler:null, |
|
background:[], |
|
}, |
|
onLoad() { |
|
this.setSexTitle(); |
|
this.getUserDetail(); |
|
}, |
|
watch:{ |
|
user:{ |
|
handler(value) { |
|
this.writeHandler && clearTimeout(this.writeHandler); |
|
|
|
this.writeHandler = setTimeout(() => { |
|
this.submit(); |
|
}, this.writeWaitTime) |
|
}, |
|
deep: true, |
|
} |
|
}, |
|
methods: { |
|
getUserDetail() { |
|
userDetail().then(({data}) => { |
|
this.user = data; |
|
this.birthday = this.user.birthday ? this.user.birthday : '2000-01-01' |
|
this.background = [{url:this.user.background_image}] |
|
this.user.birthday = this.birthday |
|
this.user.sex = this.user.sex === 1 ? 1 : 2; |
|
this.setSexTitle(this.user.sex); |
|
}) |
|
}, |
|
sexConfirm(v) { |
|
log(v); |
|
this.user.sex = v.value[0].value; |
|
this.setSexTitle(v.value[0].value); |
|
}, |
|
birthdayConfirm(v) { |
|
this.birthday = uni.$u.timeFormat(v.value, 'yyyy-mm-dd'); |
|
}, |
|
submit() { |
|
if (this.user.birthday) { |
|
this.user.birthday = uni.$u.timeFormat(this.user.birthday, 'yyyy-mm-dd') |
|
} |
|
updateUserDetail(this.user).then((data) => { |
|
UserCache.set(data.data); |
|
}); |
|
}, |
|
setSexTitle(v) { |
|
log(v); |
|
this.sexTitle = [0, '男', '女'][v ? v : this.user.sex]; |
|
log(this.sexTitle); |
|
}, |
|
chooseAvatar(v) { |
|
api.uploadOssFile(v.detail.avatarUrl).then(res => { |
|
this.user.avatar = res.show_path; |
|
}) |
|
}, |
|
backgroundRead(file, lists, name){ |
|
api.uploadOssFile(file.file.url).then((res) => { |
|
this.background = [{url:res.show_path}]; |
|
this.user.background_image = res.show_path; |
|
}) |
|
}, |
|
backgroundDel(index, file, name){ |
|
this.background = []; |
|
this.user.background = ''; |
|
}, |
|
loginout(){ |
|
api.logout(); |
|
} |
|
}, |
|
onPageScroll(res) { |
|
|
|
}, |
|
created() { |
|
// this.pagePadding = (api.navHeight().navPaddingTop+ |
|
// api.navHeight().navHeight + (api.navHeight().headerPadding *2)) |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
@import '@/pages/UserDetail/components/index.scss'; |
|
</style> |