<template>
							 | 
						|
									<view class="login">
							 | 
						|
										
							 | 
						|
										<!-- <view class="title">
							 | 
						|
											瑶都万能墙
							 | 
						|
										</view>
							 | 
						|
										<view class="title">
							 | 
						|
											申请获取你的头像、昵称
							 | 
						|
										</view> -->
							 | 
						|
								
							 | 
						|
										<!-- <button class="chooseAvatar" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
							 | 
						|
											<view class="line">
							 | 
						|
												<view class="">
							 | 
						|
													头像
							 | 
						|
												</view>
							 | 
						|
												<view class="">
							 | 
						|
													<image :src="form.headImage" v-if="form.headImage" style="width: 60rpx;height: 60rpx;"
							 | 
						|
														mode=""></image>
							 | 
						|
								
							 | 
						|
													<image src="../static/auth/headImage.png" v-else style="width: 50rpx;height: 50rpx;" mode=""></image>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
										</button>
							 | 
						|
										<view class="line">
							 | 
						|
											<view class="">
							 | 
						|
												昵称
							 | 
						|
											</view>
							 | 
						|
											<view class="">
							 | 
						|
												<input type="nickname" placeholder="请输入昵称" style="text-align: right;" id="nickName"
							 | 
						|
													v-model="form.nickName" />
							 | 
						|
											</view>
							 | 
						|
										</view> -->
							 | 
						|
										
							 | 
						|
										<view class="bg1"></view>
							 | 
						|
										
							 | 
						|
										<view class="title">
							 | 
						|
											定制自己的形象
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										
							 | 
						|
										<view
							 | 
						|
										v-if="back"
							 | 
						|
										@click="$utils.navigateBack"
							 | 
						|
										style="position: absolute;top: 120rpx;left: 20rpx;">
							 | 
						|
											<uv-icon
							 | 
						|
											size="30rpx"
							 | 
						|
											color="#000"
							 | 
						|
											name="arrow-left"></uv-icon>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<button class="chooseAvatar" 
							 | 
						|
										open-type="chooseAvatar" 
							 | 
						|
										@chooseavatar="onChooseAvatar">
							 | 
						|
											<image :src="form.headImage"
							 | 
						|
											mode="aspectFill"></image>
							 | 
						|
										</button>
							 | 
						|
										
							 | 
						|
										<input type="nickname" 
							 | 
						|
										placeholder="给自己起一个响亮的名字" 
							 | 
						|
										class="nickname" id="nickName"
							 | 
						|
										v-model="form.nickName" />
							 | 
						|
										
							 | 
						|
										<view class="sexSelect">
							 | 
						|
											<view 
							 | 
						|
											@click="sexClick(item)"
							 | 
						|
											v-for="(item, index) in sexList"
							 | 
						|
											:key="index"
							 | 
						|
											:style="{color : form.sex == item.value ? item.actColor : '#333'}">
							 | 
						|
												<uv-icon
							 | 
						|
												size="30rpx"
							 | 
						|
												:color="form.sex == item.value ? item.actColor : '#333'"
							 | 
						|
												:name="item.icon"></uv-icon>
							 | 
						|
												{{ item.value }}
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<view class="address"
							 | 
						|
										@click="$refs.datetimePicker.open()">
							 | 
						|
											您出生于{{ $dayjs(form.yearDate).format("YYYY") }}年
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<view class="address"
							 | 
						|
										@click="$refs.picker.open()">
							 | 
						|
											{{ form.address || '请选择居住地址'}}
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<input type="text" 
							 | 
						|
										placeholder="初中学校名字(选填)" 
							 | 
						|
										class="school-input" 
							 | 
						|
										v-model="form.czSchool" />
							 | 
						|
										
							 | 
						|
										<input type="text" 
							 | 
						|
										placeholder="高中学校名字(选填)" 
							 | 
						|
										class="school-input" 
							 | 
						|
										v-model="form.gzSchool" />
							 | 
						|
										
							 | 
						|
										<input type="email" 
							 | 
						|
										placeholder="邮箱地址(选填)" 
							 | 
						|
										class="school-input" 
							 | 
						|
										v-model="form.mail" />
							 | 
						|
										
							 | 
						|
										<view class="line">
							 | 
						|
											<view class="">
							 | 
						|
												手机号
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class=""
							 | 
						|
											v-if="form.phone">
							 | 
						|
												<input placeholder="请输入手机号" style="text-align: right;"
							 | 
						|
												disabled
							 | 
						|
												v-model="form.phone" />
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class=""
							 | 
						|
											v-else>
							 | 
						|
												<button
							 | 
						|
												class="getPhoneNumber"
							 | 
						|
												open-type="getPhoneNumber" 
							 | 
						|
												@getphonenumber="getPhone">
							 | 
						|
													获取电话号码
							 | 
						|
												</button>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<uv-datetime-picker 
							 | 
						|
										ref="datetimePicker" 
							 | 
						|
										v-model="form.yearDate" 
							 | 
						|
										mode="year"
							 | 
						|
										:minDate="minDate" 
							 | 
						|
										:maxDate="maxDate">
							 | 
						|
										</uv-datetime-picker>
							 | 
						|
										
							 | 
						|
										<uv-picker ref="picker" 
							 | 
						|
										:columns="columns"
							 | 
						|
										keyName="name"
							 | 
						|
										@confirm="confirmAddress"></uv-picker>
							 | 
						|
										
							 | 
						|
										<view class="btn" @click="submit">
							 | 
						|
											确认
							 | 
						|
										</view>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { mapState } from 'vuex'
							 | 
						|
									import mixinsSex from '@/mixins/sex.js'
							 | 
						|
									export default {
							 | 
						|
										mixins : [mixinsSex],
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												form: {
							 | 
						|
													headImage: '',
							 | 
						|
													nickName: '',
							 | 
						|
													sex : '男',
							 | 
						|
													yearDate : this.$dayjs().add(-18, 'y').valueOf(),//默认满18岁
							 | 
						|
													address : '',
							 | 
						|
													phone : '',
							 | 
						|
													czSchool: '',
							 | 
						|
													gzSchool: '',
							 | 
						|
													mail: '',
							 | 
						|
												},
							 | 
						|
												maxDate : this.$dayjs().valueOf(),
							 | 
						|
												minDate : this.$dayjs().add(-100, 'y').valueOf(),
							 | 
						|
												// sex : [
							 | 
						|
												// 	{
							 | 
						|
												// 		value : '男',
							 | 
						|
												// 		icon : 'man',
							 | 
						|
												// 		actColor : '#5baaff',
							 | 
						|
												// 	},
							 | 
						|
												// 	{
							 | 
						|
												// 		value : '女',
							 | 
						|
												// 		icon : 'woman',
							 | 
						|
												// 		actColor : '#ff50b3',
							 | 
						|
												// 	},
							 | 
						|
												// ],
							 | 
						|
												columns : [],
							 | 
						|
												back : '',
							 | 
						|
											};
							 | 
						|
										},
							 | 
						|
										computed: {
							 | 
						|
											...mapState(['cityList', 'userInfo']),
							 | 
						|
										},
							 | 
						|
										onLoad({back}) {
							 | 
						|
											this.back = back
							 | 
						|
											// this.$nextTick(() => {
							 | 
						|
											// 	this.form.headImage = this.userInfo.headImage || this.form.headImage
							 | 
						|
											// 	this.form.nickName = this.userInfo.nickName || this.form.nickName
							 | 
						|
											// 	this.form.sex = this.userInfo.sex || this.form.sex
							 | 
						|
											// 	this.form.yearDate = this.userInfo.yearDate || this.form.yearDate
							 | 
						|
											// 	this.form.address = this.userInfo.address || this.form.address
							 | 
						|
											// })
							 | 
						|
										},
							 | 
						|
										onShow() {
							 | 
						|
											this.getCityList()
							 | 
						|
											this.getUserInfo()
							 | 
						|
										},
							 | 
						|
										computed: {},
							 | 
						|
										methods: {
							 | 
						|
											getPhone(e){
							 | 
						|
												this.$api('bindPhone', {
							 | 
						|
													phoneCode : e.detail.code
							 | 
						|
												}, res => {
							 | 
						|
													if(res.code == 200){
							 | 
						|
														let phoneObj = JSON.parse(res.result)
							 | 
						|
														if(phoneObj.errmsg == 'ok'){
							 | 
						|
															this.form.phone = phoneObj.phone_info.phoneNumber
							 | 
						|
														}else{
							 | 
						|
															uni.showModal({
							 | 
						|
																title: phoneObj.errmsg
							 | 
						|
															})
							 | 
						|
														}
							 | 
						|
														console.log(phoneObj);
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											onChooseAvatar(res) {
							 | 
						|
												let self = this
							 | 
						|
												self.$Oss.ossUpload(res.target.avatarUrl)
							 | 
						|
												.then(url => {
							 | 
						|
													self.form.headImage = url
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											sexClick(item){
							 | 
						|
												this.form.sex = item.value
							 | 
						|
											},
							 | 
						|
											confirmAddress(e){
							 | 
						|
												this.form.address = e.value[0].name
							 | 
						|
											},
							 | 
						|
											// 获取城市
							 | 
						|
											getCityList(){
							 | 
						|
												this.$api('getCityList', res => {
							 | 
						|
													if(res.code == 200){
							 | 
						|
														this.columns = [
							 | 
						|
															res.result
							 | 
						|
														]
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
																getUserInfo(){
							 | 
						|
												this.$api('getInfo', res => {
							 | 
						|
													if(res.code == 200){
							 | 
						|
														
							 | 
						|
														this.form.headImage = res.result.headImage || this.form.headImage
							 | 
						|
														
							 | 
						|
														this.form.nickName = res.result.nickName || this.form.nickName
							 | 
						|
														
							 | 
						|
														this.form.sex = res.result.sex || this.form.sex
							 | 
						|
														
							 | 
						|
														this.form.phone = res.result.phone || this.form.phone
							 | 
						|
														
							 | 
						|
														this.form.yearDate = res.result.yearDate && 
							 | 
						|
														this.$dayjs(res.result.yearDate + '-01-01').valueOf() || this.form.yearDate
							 | 
						|
														
							 | 
						|
														this.form.address = res.result.address || this.form.address
							 | 
						|
														
							 | 
						|
														this.form.czSchool = res.result.czSchool || this.form.czSchool
							 | 
						|
														
							 | 
						|
														this.form.gzSchool = res.result.gzSchool || this.form.gzSchool
							 | 
						|
														
							 | 
						|
														this.form.mail = res.result.mail || this.form.mail
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											submit() {
							 | 
						|
												let self = this
							 | 
						|
								
							 | 
						|
												uni.createSelectorQuery().in(this)
							 | 
						|
													.select("#nickName")
							 | 
						|
													.fields({
							 | 
						|
														properties: ["value"],
							 | 
						|
													})
							 | 
						|
													.exec((res) => {
							 | 
						|
														const nickName = res?.[0]?.value
							 | 
						|
														self.form.nickName = nickName
							 | 
						|
														
							 | 
						|
														if (self.$utils.verificationAll(self.form, {
							 | 
						|
																headImage: '请选择头像',
							 | 
						|
																nickName: '请填写昵称',
							 | 
						|
																address: '请选择居住地址',
							 | 
						|
																phone: '请获取手机号',
							 | 
						|
															})) {
							 | 
						|
															return
							 | 
						|
														}
							 | 
						|
														
							 | 
						|
														let data = {
							 | 
						|
															...self.form,
							 | 
						|
															yearDate : this.$dayjs(self.form.yearDate).format("YYYY")
							 | 
						|
														}
							 | 
						|
														
							 | 
						|
														self.$api('updateInfo', data, res => {
							 | 
						|
															if (res.code == 200) {
							 | 
						|
																uni.reLaunch({
							 | 
						|
																	url:'/pages/index/index'
							 | 
						|
																})
							 | 
						|
															}
							 | 
						|
														})
							 | 
						|
													})
							 | 
						|
												
							 | 
						|
											},
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
									.login {
							 | 
						|
										display: flex;
							 | 
						|
										flex-direction: column;
							 | 
						|
										justify-content: center;
							 | 
						|
										align-items: center;
							 | 
						|
										height: 100vh;
							 | 
						|
										background-color: #fff;
							 | 
						|
										overflow: hidden;
							 | 
						|
										
							 | 
						|
										
							 | 
						|
										.bg1{
							 | 
						|
											width: 700rpx;
							 | 
						|
											height: 700rpx;
							 | 
						|
											border-radius: 50%;
							 | 
						|
											background-color: #ffc0b333;
							 | 
						|
											position: absolute;
							 | 
						|
											right: -300rpx;
							 | 
						|
											top: -300rpx;
							 | 
						|
										}
							 | 
						|
								
							 | 
						|
										.title {
							 | 
						|
											line-height: 45rpx;
							 | 
						|
											font-weight: 900;
							 | 
						|
											padding-bottom: 100rpx;
							 | 
						|
											font-size: 40rpx;
							 | 
						|
										}
							 | 
						|
								
							 | 
						|
										.chooseAvatar {
							 | 
						|
											width: 100%;
							 | 
						|
											padding: 0 !important;
							 | 
						|
											margin: 0 !important;
							 | 
						|
											border: none;
							 | 
						|
											background-color: #fff !important;
							 | 
						|
											width: 220rpx;
							 | 
						|
											height: 220rpx;
							 | 
						|
											border-radius: 50%;
							 | 
						|
											image{
							 | 
						|
												width: 200rpx;
							 | 
						|
												height: 200rpx;
							 | 
						|
												border-radius: 50%;
							 | 
						|
												box-shadow: 0 0 10rpx 10rpx #00000012;
							 | 
						|
												margin: 10rpx;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										.chooseAvatar::after{
							 | 
						|
											border: none;
							 | 
						|
											padding: 0 !important;
							 | 
						|
											margin: 0 !important;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										.nickname{
							 | 
						|
											background-color: #f7f7f7;
							 | 
						|
											width: 600rpx;
							 | 
						|
											height: 80rpx;
							 | 
						|
											text-align: center;
							 | 
						|
											border-radius: 40rpx;
							 | 
						|
											margin-top: 30rpx;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										
							 | 
						|
										.line {
							 | 
						|
											display: flex;
							 | 
						|
											justify-content: space-between;
							 | 
						|
											align-items: center;
							 | 
						|
											background-color: #f7f7f7;
							 | 
						|
											width: 600rpx;
							 | 
						|
											height: 80rpx;
							 | 
						|
											padding: 0 30rpx;
							 | 
						|
											margin: 0 auto;
							 | 
						|
											border-radius: 40rpx;
							 | 
						|
											margin-top: 30rpx;
							 | 
						|
											box-sizing: border-box;
							 | 
						|
											.getPhoneNumber{
							 | 
						|
												// all: unset;
							 | 
						|
												display: flex;
							 | 
						|
												justify-content: center;
							 | 
						|
												align-items: center;
							 | 
						|
												// background: $uni-linear-gradient-btn-color;
							 | 
						|
												background: $uni-color;
							 | 
						|
												color: #fff;
							 | 
						|
												width: 200rpx;
							 | 
						|
												height: 60rpx;
							 | 
						|
												border-radius: 30rpx;
							 | 
						|
												font-size: 24rpx;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										.sexSelect{
							 | 
						|
											background-color: #f7f7f7;
							 | 
						|
											width: 600rpx;
							 | 
						|
											height: 80rpx;
							 | 
						|
											text-align: center;
							 | 
						|
											border-radius: 40rpx;
							 | 
						|
											margin-top: 30rpx;
							 | 
						|
											display: flex;
							 | 
						|
											align-items: center;
							 | 
						|
											font-size: 26rpx;
							 | 
						|
											line-height: 80rpx;
							 | 
						|
											overflow: hidden;
							 | 
						|
											&>view{
							 | 
						|
												flex: 1;
							 | 
						|
												display: flex;
							 | 
						|
												justify-content: center;
							 | 
						|
												align-content: center;
							 | 
						|
												height: 100%;
							 | 
						|
											}
							 | 
						|
											&>view:nth-child(1){
							 | 
						|
												border-right: 1px solid #000;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										.address{
							 | 
						|
											background-color: #f7f7f7;
							 | 
						|
											width: 600rpx;
							 | 
						|
											height: 80rpx;
							 | 
						|
											text-align: center;
							 | 
						|
											border-radius: 40rpx;
							 | 
						|
											margin-top: 30rpx;
							 | 
						|
											line-height: 80rpx;
							 | 
						|
											color: #555;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										.school-input{
							 | 
						|
											background-color: #f7f7f7;
							 | 
						|
											width: 600rpx;
							 | 
						|
											height: 80rpx;
							 | 
						|
											text-align: center;
							 | 
						|
											border-radius: 40rpx;
							 | 
						|
											margin-top: 30rpx;
							 | 
						|
											padding: 0 30rpx;
							 | 
						|
											box-sizing: border-box;
							 | 
						|
											color: #333;
							 | 
						|
										}
							 | 
						|
								
							 | 
						|
										.btn {
							 | 
						|
											// background: $uni-linear-gradient-btn-color;
							 | 
						|
											background: $uni-color;
							 | 
						|
											color: #fff;
							 | 
						|
											width: 80%;
							 | 
						|
											padding: 20rpx 0;
							 | 
						|
											text-align: center;
							 | 
						|
											border-radius: 15rpx;
							 | 
						|
											margin-top: 10vh;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</style>
							 |