<template>
	<view class="my-info-page">
		<!-- 导航区域 -->
		<customNavbarVue title="个人信息" :show-back-btn="true" @back="handleBack"></customNavbarVue>
		<!-- 头像 -->
		<view class="user-img-box">
			<view class="user-title">头像</view>
			<uni-file-picker return-type="object" v-model="data.images" :del-icon="false" mode="grid" disable-preview :auto-upload="false"
				@select="handleSelect" file-mediatype="image" class="phone-file-picker user-file-picker">
			</uni-file-picker>
			<icon class="user-jt-icon" :style="{ backgroundImage: 'url(' + data.jtIcon + ')' }"></icon>
		</view>
		<!-- 姓名 -->
		<view class="form-label-input">
			<view class="phone-form-label"><text class="form-label-require">*</text>姓名</view>
			<input v-model="data.realName"  placeholder="请输入姓名" />
			<icon :style="{ backgroundImage: 'url(' + data.jtIcon + ')' }"></icon>
		</view>
		<!-- 手机号 -->
		<view class="form-label-input">
			<view class="phone-form-label"><text class="form-label-require">*</text>手机号</view>
			<input v-model="data.userName"  placeholder="请输入手机号" />
			<icon :style="{ backgroundImage: 'url(' + data.jtIcon + ')' }"></icon>
		</view>
		<!-- 证件号 -->
		<view class="form-label-input">
			<view class="phone-form-label"><text class="form-label-require">*</text>证件号</view>
			<input v-model="data.idcard"  placeholder="请输入证件号" />
			<icon :style="{ backgroundImage: 'url(' + data.jtIcon + ')' }"></icon>
		</view>
		<view class="form-label-input">
			<view class="phone-form-label"><text class="form-label-require">*</text>具体地址</view>
			<input v-model="data.dizhi"  placeholder="请输入具体地址" />
			<icon :style="{ backgroundImage: 'url(' + data.jtIcon + ')' }"></icon>
		</view>

		<button type="default" class="phone-green-btn info-btn" @click="handleUpdate">修改资料</button>
	</view>
</template>

<script setup>
	import customNavbarVue from "@/components/custom-navbar/custom-navbar.vue";
	import * as myApi from "@/api/my.js";
	import {getAliyunPolicy} from "@/api/jiazheng.js"
	import {ref,reactive} from "vue"
	import {onLoad} from "@dcloudio/uni-app"
	import cacheManager from '@/utils/cacheManager.js';
	const defaultImage1 = ref({
		url:'', extname: 'png', name: 'moren.png'
	})

	const imageStyles = ref({
		width: '50rpx',
		height: '50rpx',
		background: 'red'
	});

	const data = reactive({
		from: 'shouye', // my | kaoshi | shouye
		icon: '',
		realName: '',
		idcard: '',
		userName: '',
		userId: null,
		images: null,
		jtIcon: '',
		dizhi: ''
	})

	onLoad((options) => {
		data.from = options.from || 'shouye';
		data.jtIcon= cacheManager.get('projectImg').nav_bar_jt_bottom;
		defaultImage1.url= cacheManager.get('projectImg').user_default_img;
		initPage();
	})

	function handleSelect(e) {
		doUploadImage(e)
	}

	function genderSelect(genderValue){
		data.gender = genderValue;
	}

	function doUploadImage(params) {
		const filePath = params.tempFiles[0];
		const fileUrl = params.tempFilePaths;

		
		try {
			const suffix = filePath.file.name.split('.').pop();
			let req = {
				prefix: 'resource/',
				suffix: suffix,
			}
			uni.showLoading({
				title: '上传中...',
				mask: true
			});
			getAliyunPolicy(req).then(res => {
				if (res.code == 0) {
					const policyData = res.data;
					
					const formData = {
						key:  policyData.key,
						policy:  policyData.policy,
						signature:  policyData.signature,
						OSSAccessKeyId:  policyData.accessid,
						success_action_status:  '200',
					}
					
					uni.uploadFile({
						url: policyData.uploadUrl,
						filePath: fileUrl[0],
						name: 'file',
						formData: formData,
						success(uploadRes) {
							if (uploadRes.statusCode === 200) {
								console.log('uploadRes',uploadRes)
								data.icon = `${policyData.downloadUrl}/${policyData.key}`;
								console.log( `${policyData.downloadUrl}/${policyData.key}`)
								uni.showToast({
									title: '上传成功',
									icon: 'success'
								});
								data.images = { url: data.icon, extname: 'png', name: 'touxiang.png' }
							} else {
								uni.showToast({
									icon: 'none',
									title: '上传失败',
								});
								uni.hideLoading();
							}
			
						},
						fail(err) {
							uni.showToast({
								icon: 'none',
								title: '上传失败',
							});
							uni.hideLoading();
						}
					});

				} else {
					uni.showToast({
						title: '获取凭证失败',
					});
					uni.hideLoading();
				}
			})
		} catch (error) {
			uni.showToast({
				title: '上传失败',
				icon: 'none'
			});
			uni.hideLoading();
		}
	}

	function handleUpdate() {
		let arr = [];
		if (!data.realName) {
			arr.push('姓名');
		}
		if (!data.userName) {
			arr.push('电话');
		}
		if (!data.icon) {
			arr.push('头像');
		}
		if (!data.idcard) {
			arr.push('证件号');
		}
		if (!data.realName || !data.userName||!data.icon||!data.idcard) {
			uni.showToast({
				icon: 'none',
				title: `请完善${arr.join('、')}信息！`
			})
			return;
		}
		
		const opt = {
			dizhi: data.dizhi,
			icon: data.icon, 
			idcard: data.idcard,
			realName: data.realName,
			userId: data.userId,
			userName: data.userName,
		}
		myApi.getMineUpdate(opt).then(res => {
			if (res.data) {
				uni.showToast({
					title: '更新成功'
				})
				handleBack();
			}
		})

	}

	function handleBack() {
		uni.navigateBack()
	}

	function initPage() {
		myApi.getMineUser().then(res => {
			const {gender,icon,idcard,realName,userName,userId} = res.data;
			data.gender = res.data.gender;
			data.icon = res.data.icon;
			data.idcard = res.data.idcard;
			data.realName = res.data.realName; 
			data.userName = res.data.userName;
			data.userId = res.data.userId;
			data.images = data.icon?{ url: data.icon, extname: 'png', name: 'touxiang.png' }:defaultImage1.value
		})
	}
</script>

<style>

</style>