|
@@ -1,231 +1,240 @@
|
|
|
<template>
|
|
|
- <view class="ccontainer">
|
|
|
- <view class="item-box">
|
|
|
- <view class="item-left"> 头像 : </view>
|
|
|
- <view class="item-right flex-end">
|
|
|
- <image @click="handlerUploadImg" class="img" :src="uoloadImg"></image>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <view class="item-box">
|
|
|
- <view class="item-left"> 昵称 : </view>
|
|
|
- <view class="item-right">
|
|
|
- <u--input placeholder="请输入内容" border="none" v-model="queryParams.nickname"></u--input>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <view class="item-box">
|
|
|
- <view class="item-left"> 性别 : </view>
|
|
|
- <view class="item-right">
|
|
|
- <view class="sex-item">
|
|
|
- <view class="item" v-for=" (item,index) of sexList" :class="current == index ? 'act-sex' : ''"
|
|
|
- :key="index" @click="handlerSelectGender(item)"> {{ item.name }} </view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <view class="item-box">
|
|
|
- <view class="item-left"> 生日 : </view>
|
|
|
- <view class="item-right right-time-box" @click="timeShow = true">
|
|
|
- <view class="time-left" :class="queryParams.birthday ? '' : 'gray-color'">
|
|
|
- {{ queryParams.birthday ? queryParams.birthday : '请选择您的生日' }}
|
|
|
- </view>
|
|
|
- <view class="time-right">
|
|
|
- <u-icon name="arrow-right"></u-icon>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <u-datetime-picker :show="timeShow" v-model="time_value" mode="date" @cancel='timeShow = false'
|
|
|
- @confirm='confirmTime' :minDate="0" :maxDate='maxDataTime'></u-datetime-picker>
|
|
|
-
|
|
|
- <view class="btn-box">
|
|
|
- <button class="btn" @click="handlerSubmitBtn">提交</button>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
+ <view class="ccontainer">
|
|
|
+ <view class="item-box">
|
|
|
+ <view class="item-left"> 头像 : </view>
|
|
|
+ <view class="item-right flex-end">
|
|
|
+ <image @click="handlerUploadImg" class="img" :src="uoloadImg"></image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item-box">
|
|
|
+ <view class="item-left"> 昵称 : </view>
|
|
|
+ <view class="item-right">
|
|
|
+ <u--input placeholder="请输入内容" border="none" v-model="queryParams.nickname"></u--input>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item-box">
|
|
|
+ <view class="item-left"> 性别 : </view>
|
|
|
+ <view class="item-right">
|
|
|
+ <view class="sex-item">
|
|
|
+ <view class="item" v-for=" (item,index) of sexList" :class="current == index ? 'act-sex' : ''" :key="index"
|
|
|
+ @click="handlerSelectGender(item)"> {{ item.name }} </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item-box">
|
|
|
+ <view class="item-left"> 生日 : </view>
|
|
|
+ <view class="item-right right-time-box" @click="timeShow = true">
|
|
|
+ <view class="time-left" :class="queryParams.birthday ? '' : 'gray-color'">
|
|
|
+ {{ queryParams.birthday ? queryParams.birthday : '请选择您的生日' }}
|
|
|
+ </view>
|
|
|
+ <view class="time-right">
|
|
|
+ <u-icon name="arrow-right"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <u-datetime-picker :show="timeShow" v-model="time_value" mode="date" @cancel='timeShow = false'
|
|
|
+ @confirm='confirmTime' :minDate="0" :maxDate='maxDataTime'></u-datetime-picker>
|
|
|
+
|
|
|
+ <view class="btn-box">
|
|
|
+ <button class="btn" @click="handlerSubmitBtn">提交</button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import { getUserInfo } from '@/api/user';
|
|
|
- import { uploadFile } from "@/utils/upload"
|
|
|
- export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- queryParams: {
|
|
|
- avatar: '', // 头像
|
|
|
- gender: '', //性别
|
|
|
- birthday: '', //生日
|
|
|
- nickname: '', //昵称
|
|
|
- },
|
|
|
- time_value: '',
|
|
|
- timeShow: false,
|
|
|
- sexList: [{
|
|
|
- id: 0,
|
|
|
- name: '男',
|
|
|
- type:'MALE'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- name: '女',
|
|
|
- type:'FEMALE'
|
|
|
- }
|
|
|
- ],
|
|
|
- current: 0,
|
|
|
- uoloadImg:'',
|
|
|
- maxDataTime:0
|
|
|
- }
|
|
|
- },
|
|
|
- mounted(){
|
|
|
+ import {
|
|
|
+ getUserInfo
|
|
|
+ } from '@/api/user';
|
|
|
+ import {
|
|
|
+ uploadFile
|
|
|
+ } from "@/utils/upload"
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ queryParams: {
|
|
|
+ avatar: '', // 头像
|
|
|
+ gender: '', //性别
|
|
|
+ birthday: '', //生日
|
|
|
+ nickname: '', //昵称
|
|
|
+ },
|
|
|
+ time_value: '',
|
|
|
+ timeShow: false,
|
|
|
+ sexList: [{
|
|
|
+ id: 0,
|
|
|
+ name: '男',
|
|
|
+ type: 'MALE'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ name: '女',
|
|
|
+ type: 'FEMALE'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ current: 0,
|
|
|
+ uoloadImg: '',
|
|
|
+ maxDataTime: 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
this.maxDataTime = new Date().getTime()
|
|
|
- getUserInfo().then(res=>{
|
|
|
- let { avatar , nickname , gender } = res.data
|
|
|
+ getUserInfo().then(res => {
|
|
|
+ let {
|
|
|
+ avatar,
|
|
|
+ nickname,
|
|
|
+ gender,
|
|
|
+ birthday
|
|
|
+ } = res.data
|
|
|
this.uoloadImg = avatar
|
|
|
- this.queryParams.avatar = avatar
|
|
|
- this.queryParams.nickname = nickname
|
|
|
- if(gender){
|
|
|
- for(let key in gender){
|
|
|
- this.sexList.map(rs=>{
|
|
|
- if(key == rs.type){
|
|
|
+ this.queryParams.avatar = avatar
|
|
|
+ this.queryParams.nickname = nickname
|
|
|
+ this.queryParams.birthday = uni.$u.timeFormat(birthday, 'yyyy-mm-dd');
|
|
|
+ if (gender) {
|
|
|
+ for (let key in gender) {
|
|
|
+ this.sexList.map(rs => {
|
|
|
+ if (key == rs.type) {
|
|
|
this.current = rs.id
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
- })
|
|
|
- },
|
|
|
- methods: {
|
|
|
- // 选择性别
|
|
|
- handlerSelectGender(item) {
|
|
|
- this.current = item.id
|
|
|
- },
|
|
|
- // 选择时间
|
|
|
- confirmTime(e) {
|
|
|
+ })
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 选择性别
|
|
|
+ handlerSelectGender(item) {
|
|
|
+ this.current = item.id
|
|
|
+ },
|
|
|
+ // 选择时间
|
|
|
+ confirmTime(e) {
|
|
|
this.queryParams.birthday = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
|
|
|
this.timeShow = false
|
|
|
- },
|
|
|
- // 上传头像
|
|
|
- async handlerUploadImg() {
|
|
|
- try {
|
|
|
- const res = await uni.showActionSheet({
|
|
|
- itemList: ['拍照', '从相册选择'],
|
|
|
- });
|
|
|
- if (res.tapIndex === 0) {
|
|
|
- // 用户选择拍照
|
|
|
- this.takeOrChoosePhoto(0);
|
|
|
- } else if (res.tapIndex === 1) {
|
|
|
- // 用户选择从相册选择
|
|
|
- this.takeOrChoosePhoto(1);
|
|
|
- }
|
|
|
- } catch (error) {
|
|
|
- }
|
|
|
- },
|
|
|
- // 拍照
|
|
|
- takeOrChoosePhoto(idx) {
|
|
|
- uni.chooseImage({
|
|
|
- sourceType: idx == 0 ? ['camera'] : ['album'],
|
|
|
- count: 1,
|
|
|
- success: res => {
|
|
|
- const tempFilePaths = res.tempFilePaths;
|
|
|
- // 调用上传图片的方法
|
|
|
- this.uploadAvatar(tempFilePaths[0]);
|
|
|
- },
|
|
|
- fail: error => {
|
|
|
- console.error(error);
|
|
|
- },
|
|
|
- });
|
|
|
- },
|
|
|
- // 上传头像
|
|
|
- uploadAvatar(filePath) {
|
|
|
+ },
|
|
|
+ // 上传头像
|
|
|
+ async handlerUploadImg() {
|
|
|
+ try {
|
|
|
+ const res = await uni.showActionSheet({
|
|
|
+ itemList: ['拍照', '从相册选择'],
|
|
|
+ });
|
|
|
+ if (res.tapIndex === 0) {
|
|
|
+ // 用户选择拍照
|
|
|
+ this.takeOrChoosePhoto(0);
|
|
|
+ } else if (res.tapIndex === 1) {
|
|
|
+ // 用户选择从相册选择
|
|
|
+ this.takeOrChoosePhoto(1);
|
|
|
+ }
|
|
|
+ } catch (error) {}
|
|
|
+ },
|
|
|
+ // 拍照
|
|
|
+ takeOrChoosePhoto(idx) {
|
|
|
+ uni.chooseImage({
|
|
|
+ sourceType: idx == 0 ? ['camera'] : ['album'],
|
|
|
+ count: 1,
|
|
|
+ success: res => {
|
|
|
+ const tempFilePaths = res.tempFilePaths;
|
|
|
+ // 调用上传图片的方法
|
|
|
+ this.uploadAvatar(tempFilePaths[0]);
|
|
|
+ },
|
|
|
+ fail: error => {
|
|
|
+ console.error(error);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 上传头像
|
|
|
+ uploadAvatar(filePath) {
|
|
|
this.uoloadImg = filePath
|
|
|
- uploadFile(filePath).then(res=>{
|
|
|
+ uploadFile(filePath).then(res => {
|
|
|
this.queryParams.avatar = JSON.parse(res.data).data.url;
|
|
|
})
|
|
|
- this.$forceUpdate(); // 手动触发组件的重新渲染
|
|
|
- },
|
|
|
-
|
|
|
- // 点击提交按钮
|
|
|
- handlerSubmitBtn() {
|
|
|
- this.queryParams.gender = this.sexList[this.current].type
|
|
|
- this.$store.dispatch('UpdateUserInfo',this.queryParams).then(res=>{
|
|
|
- setTimeout(()=>{
|
|
|
+ this.$forceUpdate(); // 手动触发组件的重新渲染
|
|
|
+ },
|
|
|
+
|
|
|
+ // 点击提交按钮
|
|
|
+ handlerSubmitBtn() {
|
|
|
+ this.queryParams.gender = this.sexList[this.current].type
|
|
|
+ this.$store.dispatch('UpdateUserInfo', this.queryParams).then(res => {
|
|
|
+ setTimeout(() => {
|
|
|
uni.navigateBack(-1)
|
|
|
- },1500)
|
|
|
+ }, 1500)
|
|
|
})
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
- .ccontainer {
|
|
|
- padding: 20rpx;
|
|
|
- box-sizing: border-box;
|
|
|
- font-size: 28rpx;
|
|
|
-
|
|
|
- .item-box {
|
|
|
- display: flex;
|
|
|
- padding: 20rpx;
|
|
|
- box-shadow: 0 5rpx 15rpx 0rpx rgba(0, 0, 0, 0.1);
|
|
|
- border-radius: 20rpx;
|
|
|
- margin-bottom: 20rpx;
|
|
|
- align-items: center;
|
|
|
-
|
|
|
- .item-left {
|
|
|
- margin-right: 20rpx;
|
|
|
- width: 13%;
|
|
|
- }
|
|
|
-
|
|
|
- .item-right {
|
|
|
- width: 87%;
|
|
|
-
|
|
|
- .img {
|
|
|
- width: 80rpx;
|
|
|
- height: 80rpx;
|
|
|
- border-radius: 50%;
|
|
|
- }
|
|
|
-
|
|
|
- .sex-item {
|
|
|
- display: flex;
|
|
|
-
|
|
|
- .item {
|
|
|
- padding: 20rpx 30rpx;
|
|
|
- background-color: #F7F7F7;
|
|
|
- border-radius: 10rpx;
|
|
|
- text-align: center;
|
|
|
- font-size: 28rpx;
|
|
|
- }
|
|
|
-
|
|
|
- .act-sex {
|
|
|
- border: 2rpx solid #5992BB;
|
|
|
- background-color: #5992BB;
|
|
|
- color: #fff !important;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .right-time-box {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- }
|
|
|
-
|
|
|
- .flex-end {
|
|
|
- display: flex;
|
|
|
- justify-content: flex-end;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .btn-box {
|
|
|
- margin-top: 100rpx;
|
|
|
-
|
|
|
- .btn {
|
|
|
- border-radius: 20rpx;
|
|
|
- padding: 10rpx;
|
|
|
- font-size: 28rpx;
|
|
|
- color: #fff;
|
|
|
- background: linear-gradient(to right, #e8cbc0, #636fa4);
|
|
|
- box-shadow: 0 5rpx 15rpx 0 rgba(99, 111, 164, 0.2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .gray-color {
|
|
|
- color: #D2D5DB;
|
|
|
- }
|
|
|
+ .ccontainer {
|
|
|
+ padding: 20rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ font-size: 28rpx;
|
|
|
+
|
|
|
+ .item-box {
|
|
|
+ display: flex;
|
|
|
+ padding: 20rpx;
|
|
|
+ box-shadow: 0 5rpx 15rpx 0rpx rgba(0, 0, 0, 0.1);
|
|
|
+ border-radius: 20rpx;
|
|
|
+ margin-bottom: 20rpx;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .item-left {
|
|
|
+ margin-right: 20rpx;
|
|
|
+ width: 13%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .item-right {
|
|
|
+ width: 87%;
|
|
|
+
|
|
|
+ .img {
|
|
|
+ width: 80rpx;
|
|
|
+ height: 80rpx;
|
|
|
+ border-radius: 50%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .sex-item {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ .item {
|
|
|
+ padding: 20rpx 30rpx;
|
|
|
+ background-color: #F7F7F7;
|
|
|
+ border-radius: 10rpx;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .act-sex {
|
|
|
+ border: 2rpx solid #5992BB;
|
|
|
+ background-color: #5992BB;
|
|
|
+ color: #fff !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .right-time-box {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+
|
|
|
+ .flex-end {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-box {
|
|
|
+ margin-top: 100rpx;
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ border-radius: 20rpx;
|
|
|
+ padding: 10rpx;
|
|
|
+ font-size: 28rpx;
|
|
|
+ color: #fff;
|
|
|
+ background: linear-gradient(to right, #e8cbc0, #636fa4);
|
|
|
+ box-shadow: 0 5rpx 15rpx 0 rgba(99, 111, 164, 0.2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .gray-color {
|
|
|
+ color: #D2D5DB;
|
|
|
+ }
|
|
|
</style>
|