<!--
 * @Author: euzhi
 * @Description: 描述
-->
<template>
<view class="appCotent">
    <div class="userInfo">
        <div class="info__cover" @click="select">
            <span class="cover__name">头像</span>
            <div class="cover">
                <image v-if="image" :src="image" />
				 <image v-else src="@/static/my/my2.png" />
              <!-- 此处应该有默认头像 -->
<!--                <image v-else src="@/static/my/my2.png" />-->
                <span>
                    <image src="@/static/my/my6.png" /></span>
            </div>
        </div>
        <u-popup :show="show" @close="close" closeOnClickOverlay>
            <view class="user__title">
                填写昵称
            </view>
            <div class="user__input"><input v-model="user__nikename" placeholder="输入昵称(最多输入20个字符)" type="text">
                <div class="user__name__border"></div>
                <div class="user__save" @click="save">保存</div>
            </div>
        </u-popup>
        <u-popup :show="show__six" @close="close__sex" closeOnClickOverlay>
            <div class="user__input user__sex" @click="select__sex('男')">
                男
            </div>
			<div class="user__input user__sex" @click="select__sex('女')">
				女
			</div>
        </u-popup>
        <u-datetime-picker :show="show__date" v-model="dateValue" ref='datetimePicker' mode="date" @confirm='confirm' @close='close__date' @cancel='close__date' :formatter="formatter" closeOnClickOverlay></u-datetime-picker>
        <view class="info__content">
            <active-form @clickFn='clickFn' :formDate.sync="formData"></active-form>
        </view>
    </div>
</view>
</template>

<script>
export default {
    data() {
        return {
            dateValue: Number(new Date()),
            user__nikename: '',
            show__six: false,
            show: false,
            show__date: false,
            image: '',
            userInfo: {
              nickName: '默认昵称',
            },
            formData: [{
                    id: "kjjns", //id必须唯一 可以是数字
                    placeholder: "请填写",
                    label: "手机号", // 提示输入名
                    type: "text", //类型
                    rules: {
                        name: "mobile", //字段名 即提交给后端的字段
                        value: "12563996933",
                        verify: false, //是否开启校验
                        errMess: "手机号未填写", //校验不通过的错误提示
                    },
                },
                {
                    id: "kjjns", //id必须唯一 可以是数字
                    placeholder: "请填写",
                    label: "昵称", // 提示输入名
                    type: "text", //类型
                    rules: {
                        name: "nickName", //字段名 即提交给后端的字段
                        value: "",
                        label: ""
                    },
                },
                {
                    id: "kjjns", //id必须唯一 可以是数字
                    placeholder: "请选择",
                    label: "性别", // 提示输入名
                    type: "select", //类型
                    rules: {
                        name: "sex", //字段名 即提交给后端的字段
                        value: "",
                        verify: false, //是否开启校验
                        label: ''
                    },
                },
                {
                    id: "kjjns", //id必须唯一 可以是数字
                    placeholder: "请选择",
                    label: "生日", // 提示输入名
                    type: "select", //类型
                    rules: {
                        name: "birthday", //字段名 即提交给后端的字段
                        value: "",
                        verify: false, //是否开启校验
                        label: ''
                    },
                },

            ],
        }
    },
    onReady() {
      // 微信小程序需要用此写法
      this.$refs.datetimePicker.setFormatter(this.formatter)
    },
    methods: {
      formatter(type, value) {
        if (type === 'year') {
          return `${value}年`
        }
        if (type === 'month') {
          return `${value}月`
        }
        if (type === 'day') {
          return `${value}日`
        }
        return value
      },
      transformTime(timestamp) {
        if (timestamp) {
          var time = new Date(timestamp);
          console.log(time);
          var y = time.getFullYear(); //getFullYear方法以四位数字返回年份
          var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11)，返回结果需要手动加一
          var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31)
          return y + '-' + M + '-' + d
        } else {
          return '';
        }
      },
      confirm(e) {
        this.formData.forEach(element => {
          if (element.label === '生日') {
            element.rules.label = this.transformTime(e.value)
          }
        });
        this.show__date = false
      },
      select__sex(val) {
        this.formData.forEach(element => {
          if (element.label === '性别') {
            element.rules.label = val
			let opts = { url: '/app/user/update', method: 'post' };
			let sex = (val=='男'?"0":"1")
			let userInfoItem = { type: 3, val: sex };
			this.http.httpTokenRequest(opts, userInfoItem).then(response => {
			  if (response.data.code == 200) {
			    
			  }
			})
          }
        });
		
        this.show__six = false
      },
      save() {
        this.formData.forEach(element => {
          if (element.label === '昵称') {
            element.rules.value = this.user__nikename
			let opts = { url: '/app/user/update', method: 'post' };
			let userInfoItem = { type: 2, val: this.user__nikename };
			that.http.httpTokenRequest(opts, userInfoItem).then(response => {
			  if (response.data.code == 200) {
			    
			  }
			})
          }
        });
        this.show = false
      },
      clickFn(e) {
        console.log(e)
        switch (e) {
          case 1:
            this.show = true
            break;
          case 2:
            this.show__six = true
            break;
          case 3:
            this.show__date = true
            break;
        }
      },
		close() {
			this.show = false;
		},
		close__sex() {
			this.show__six = false;
		},
      close__date() {
        this.show__date = false;
      },
		select() {
			let that = this
			uni.chooseImage({
				count: 1, //默认9
				sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
				sourceType: ['album'], //从相册选择
					success: function (res) {
					const tempFilePaths = res.tempFilePaths;
						uni.uploadFile({
						url: that.http.baseUrl + '/common/upload',
						//url: 'http://192.168.2.21:7001/upload',//仅为示例，非真实的接口地址
						method: 'POST',
						filePath: tempFilePaths[0],
						name: 'file',
						formData: {
							file: tempFilePaths[0]
						},
						// 请求头一定要加，否则 iOS 图片上传会失败
						header: {
							'content-type': 'multipart/form-data'
						},
						success: (res) => {
							let uploadData = JSON.parse(res.data)
							let opts = { url: '/app/user/update', method: 'post' };
							let userInfoItem = { type: 1, val: uploadData.data.fileName };
							that.http.httpTokenRequest(opts, userInfoItem).then(response => {
								if (response.data.code == 200) {
									that.image = that.http.baseUrl + uploadData.data.fileName
								}
							})
						}
					});
				}
			});

		},
        select() {
			let that = this
            uni.chooseImage({
                count: 1, //默认9
                sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
                sourceType: ['album'], //从相册选择
                success: function (res) {
					const tempFilePaths = res.tempFilePaths;
					uni.uploadFile({
						url: that.http.baseUrl + '/common/upload',
						//url: 'http://192.168.2.21:7001/upload',//仅为示例，非真实的接口地址
						method: 'POST',
						filePath: tempFilePaths[0],
						name: 'file',
						formData: {
							file: tempFilePaths[0]
						},
						success: (res) => {
							let uploadData = JSON.parse(res.data)
							let opts = { url: '/app/user/update', method: 'post' };
							let userInfoItem = { type: 1, val: uploadData.data.fileName };
							console.log(userInfoItem)
							that.http.httpTokenRequest(opts, userInfoItem).then(response => {
								if (response.data.code == 200) {
									that.userInfo.avatar = res.data.url
								}
							})
						}
					});
                }
            });
        },
		getUserInfo(){
			let opts = { url: '/app/user/info', method: 'get' };
			this.http.httpTokenRequest(opts, {}).then(res => {
				if (res.data.code == 200) {
					this.userInfo = res.data.data
					this.image = this.http.baseUrl + this.userInfo.avatar
					this.formData.forEach(element => {
						if (element.label === '手机号') {
							element.rules.value = this.userInfo.mobile
						}
						if (element.label === '昵称') {
							element.rules.value = this.userInfo.nickName
						}
						if (element.label === '性别') {
							element.rules.label = this.userInfo.sex=="0"?"男":"女"
						}
						if (element.label === '生日') {
							element.rules.value = this.userInfo.birthday
						}
					})
				}
			})
		},
		editUserInfo(){
			let user = {}
			for(let i in this.formData){
				let name = this.formData[i].rules.name
				this.user[name] = this.formData[i].rules.value
			}
		},
    },
    onShow() {
      this.getUserInfo()
    },

}
</script>

<style lang="scss" scoped>
.userInfo {
    .user__save {
        font-size: 32rpx;
        font-family: PingFang SC;
        font-weight: 500;
        color: #3A86F7;
        line-height: 42rpx;
        text-align: center;
        padding: 30rpx 0;
    }

    .user__title {
        font-size: 36rpx;
        font-family: PingFang SC;
        font-weight: bold;
        color: #333333;
        line-height: 42rpx;
        text-align: center;
        padding: 30rpx 0;
    }

    /deep/ .u-popup__content {
        border-radius: 20rpx 20rpx 0px 0px;
    }

    .user__input {
        padding: 0 30rpx;
        padding-bottom: 40rpx;
        text-align: center;

        .user__name__border {
            width: 100%;
            height: 2rpx;
            background: url('@/static/my/border.png') no-repeat;
            background-size: contain;
            margin-top: 30rpx;
        }

        .user__name__border__sex {
            margin-bottom: 30rpx;
        }
    }

    .user__sex {
        font-size: 36rpx;
        font-family: PingFang SC;
        font-weight: 500;
        color: #333333;
        line-height: 42rpx;
        padding: 30rpx 0;
        padding-bottom: 60rpx;
    }

    padding: 40rpx;

    .info__cover {
        height: 140rpx;
        background: #FFFFFF;
        box-shadow: 0rpx 0rpx 28rpx 1rpx rgba(232, 232, 232, 0.2);
        border-radius: 20rpx;
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 0 30rpx;

        .cover__name {
            font-size: 32fpx;
            font-family: PingFang SC;
            font-weight: 500;
            color: #333333;
        }

        .cover {
            display: flex;
            align-items: center;

            image {
                width: 100rpx;
                height: 100rpx;
                border-radius: 50%;
            }

            span {
                margin-left: 10rpx;

                image {
                    width: 11rpx;
                    height: 18rpx;
                }
            }
        }
    }

    .info__content {
        margin-top: 30rpx;
        background: #FFFFFF;
        box-shadow: 0rpx 0rpx 28rpx 1rpx rgba(232, 232, 232, 0.2);
        border-radius: 20rpx;
    }
}
</style>
