<template>
	<view>
		<view class="personal-pet-basic-info">
			<view class="personal-pet-info-title border-bottom">
				宠物基本信息
			</view>
			<u--form labelPosition="left" :model="model" ref="uForm">
				<u-form-item required label="昵称" :prop="`petBaseInfo.nickName`" labelWidth="80" borderBottom>
					<u--input v-model="petBaseInfo.nickName" placeholder="请输入宠物昵称" @change="nameChange"
						placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
				</u-form-item>
				<u-form-item label="性别" :prop="`petBaseInfo.sex`" labelWidth="80" borderBottom @click="showSex = true">
					<u--input v-model="petBaseInfo.sex" disabled disabledColor="#ffffff" placeholder="请选择"
						placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
					<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
				</u-form-item>
				<!-- 后台获取品种数据 赶进度这里先注释 -->
				<!-- 	<u-form-item required label="品种" :prop="`petBaseInfo.breed`" labelWidth="80" borderBottom
					@click="breedSelectOpen"> -->
				<u-form-item required label="品种" :prop="`petBaseInfo.type`" labelWidth="80" borderBottom>
					<u--input v-model="petBaseInfo.type" disabledColor="#ffffff" placeholder="请输入"
						placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
					<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
				</u-form-item>
				<!-- 赶进度，先注释 -->
				<!-- <u-form-item required label="体重" :prop="`petBaseInfo.weight`" labelWidth="80" borderBottom
					@click="showWeight = true" ref="item1"> -->
				<u-form-item required label="体重" :prop="`petBaseInfo.weight`" labelWidth="80" borderBottom ref="item1">
					<u--input v-model="petBaseInfo.weight" disabledColor="#ffffff" placeholder="请输入(单位kg)"
						placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right" type="number"></u--input>
					<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
				</u-form-item>
				<u-form-item label="出生年月" :prop="`petBaseInfo.birthday`" labelWidth="80" borderBottom
					@click="yearMonthOpen">
					<u--input v-model="petBaseInfo.birthday" disabled disabledColor="#ffffff" placeholder="请选择"
						placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
					<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
				</u-form-item>
				<!-- 后台获取性格选择数据 感进度这里先注释 -->
				<!-- <u-form-item required label="性格" :prop="`petBaseInfo.personality`" labelWidth="80" borderBottom
					@click="dispositionSelectOpen"> -->
				<u-form-item required label="性格" :prop="`petBaseInfo.personality`" labelWidth="80" borderBottom>
					<u--input v-model="petBaseInfo.personality" disabledColor="#ffffff" placeholder="请输入"
						placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
					<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
				</u-form-item>
			</u--form>
		</view>

		<!-- 后台获取性格选择数据 感进度这里先注释 -->
		<!-- 	<view style="background-color: #fffcf2;padding: 10px 20px;" v-show="showDisposition">
			<view style="height: 85%;">
				<u-checkbox-group v-model="petBaseInfo.personality" @change="checkboxChange" iconPlacement="left"
					placement="row" style="flex-wrap: wrap;" activeColor="#ffbf60">
					<u-checkbox :customStyle="{margin: '8px'}" v-for="(item, index) in dispositionActions" :key="item"
						:label="item" :name="item">
					</u-checkbox>
				</u-checkbox-group>
			</view>
		</view> -->

		<u-picker :show="showSex" :showToolbar='false' :columns="sexActions" @cancel="showSex = false"
			:immediateChange="true" @change="sexSelect"></u-picker>

		<u-picker :show="showWeight" :showToolbar='false' :columns="weightActions" @cancel="showWeight = false"
			:immediateChange="true" @change="weightSelect"></u-picker>
		<u-overlay :show="showBreed">

			<view class="breed-select" style="height: 60%;">
				<u-search shape="round" :show-action="false" v-model="searchValue" @change="searchBreed"></u-search>
				<view style="padding: 10px;height: 80%;overflow: auto;">
					<u-radio-group v-model="tempBreed" placement="column">
						<u-radio v-for="(item,index) in searchBreedData" :customStyle="{marginBottom: '8px'}"
							activeColor="#ffbf60" :label="item" :name="item" :key="item"></u-radio>
					</u-radio-group>
				</view>
				<view class="personal-pet-breed-btns">
					<view class="personal-pet-breed-btn">
						<u-button color="#FFF4E4" @click="breedSelectClose">
							<view style="color: #A9A9A9;">
								取消
							</view>
						</u-button>
					</view>
					<view class="personal-pet-breed-btn" @click="breedSelectConfirm">
						<u-button color="#FFBF60">
							<view style="color: #fff;">
								确定
							</view>
						</u-button>
					</view>
				</view>
			</view>
		</u-overlay>
		<u-datetime-picker :maxDate='getMaxDate()' :minDate="getMinDate()" :show="showBirthday" v-model="tempBirthday"
			mode="year-month" @confirm="yearMonthConfirm" @cancel="yearMonthClose"></u-datetime-picker>
	</view>
</template>

<script setup>
	import {
		ref,
		onMounted,
		watch
	} from 'vue';

	// 定义 props
	const props = defineProps({
		petType: {
			type: String,
			default: 'dog'
		},
		petBaseInfo: {
			type: Object,
			default: () => ({
				nickName: '',
				sex: '',
				type: '',
				weight: '',
				birthday: '',
				personality: ''
			})
		}
	});

	// 定义 emits
	const emits = defineEmits(['update:petBaseInfo']);

	// 定义响应式数据
	const showSex = ref(false);
	const showBreed = ref(false);
	const showWeight = ref(false);
	const showBirthday = ref(false);
	const showDisposition = ref(false);
	const sexActions = ref([
		['男生', '女生']
	]);
	const weightActions = ref([
		['小型（<10 KG）', '中型（10~20KG）', '大型（20KG以上）']
	]);
	const dispositionActions = ref([]);
	const breedData = ref([]);
	const searchBreedData = ref([]);
	const tempBreed = ref('');
	const searchValue = ref('');
	const tempBirthday = ref('');
	const tempDisposition = ref('');
	const uForm = ref(null);
	const item1 = ref(null);

	// 定义方法
	const nameChange = () => {
		updatePetBaseInfo();
	};

	const sexSelect = (e) => {
		props.petBaseInfo.sex = e.index;
		showSex.value = false;
		updatePetBaseInfo();
	};

	const weightSelect = (e) => {
		props.petBaseInfo.weight = e.value[0];
		showWeight.value = false;
		updatePetBaseInfo();
	};

	const breedSelectOpen = () => {
		searchBreedData.value = breedData.value;
		searchValue.value = '';
		tempBreed.value = props.petBaseInfo.breed;
		showBreed.value = true;
	};

	const searchBreed = () => {
		if (searchValue.value && searchValue.value !== '') {
			searchBreedData.value = breedData.value.filter(e => e.includes(searchValue.value));
		} else {
			searchBreedData.value = breedData.value;
		}
	};

	const breedSelectClose = () => {
		tempBreed.value = '';
		showBreed.value = false;
	};

	const breedSelectConfirm = () => {
		props.petBaseInfo.type = tempBreed.value;
		showBreed.value = false;
		updatePetBaseInfo();
	};

	const yearMonthOpen = () => {
		if (props.petBaseInfo.birthday) {
			tempBirthday.value = Number(new Date(props.petBaseInfo.birthday));
		} else {
			tempBirthday.value = Number(new Date());
		}
		showBirthday.value = true;
	};

	const yearMonthClose = () => {
		showBirthday.value = false;
	};

	const yearMonthConfirm = (e) => {
		const timeFormat = uni.$u.timeFormat;
		props.petBaseInfo.birthday = timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss');
		showBirthday.value = false;
		updatePetBaseInfo();
	};

	const dispositionSelectOpen = () => {
		tempDisposition.value = props.petBaseInfo.personality;
		showDisposition.value = true;
	};

	const dispositionSelectClose = () => {
		tempDisposition.value = '';
		showDisposition.value = false;
	};

	const dispositionSelectConfirm = () => {
		props.petBaseInfo.personality = tempDisposition.value;
		showDisposition.value = false;
		updatePetBaseInfo();
	};

	const checkboxChange = (n) => {
		console.log('change', n);
		updatePetBaseInfo();
	};

	const updatePetBaseInfo = () => {
		// 触发 update 事件，将修改后的 petBaseInfo 对象发送给父组件
		emits('update:petBaseInfo', props.petBaseInfo);
	};

	const getPersonalityDataList = () => {
		// getDictList('pet_personality').then(res => {
		//     if (res.code === 200) {
		//         dispositionActions.value = Array.from(new Set(res.data.map(e => e.dictLabel)));
		//     } else {
		//         uni.showToast({
		//             title: '获取性格失败',
		//             icon: 'none'
		//         });
		//     }
		// });
	};

	const getPetBreed = () => {
		let petBreedType = props.petType === 'cat' ? 'pet_brand_cat' : 'pet_brand_dog';
		// getDictList(petBreedType).then(res => {
		//     if (res.code === 200) {
		//         breedData.value = Array.from(new Set(res.data.map(e => e.dictLabel)));
		//     } else {
		//         uni.showToast({
		//             title: '获取种类失败',
		//             icon: 'none'
		//         });
		//     }
		// });
	};

	const getMaxDate = () => {
		return Date.now();
	};

	const getMinDate = () => {
		let dt = new Date();
		dt.setFullYear(dt.getFullYear() - 30);
		return Date.parse(dt);
	};

	// 生命周期钩子
	onMounted(() => {
		// getPersonalityDataList();
		// getPetBreed();
	});
</script>

<style>
	.personal-pet-basic-info {
		background-color: #fff;
		margin-top: 10px;
		padding: 10px 20px;
	}

	.personal-pet-breed-btns {
		display: flex;
		justify-content: space-between;
		box-sizing: border-box;
		background-color: #FFFFFF;
		padding: 20rpx 20rpx 40rpx 20rpx;
		left: 0;
		width: 100%;
		height: 160rpx;
		position: fixed;
		bottom: 0;
		z-index: 100;
	}

	.personal-pet-breed-btn {
		width: 40%;
	}
</style>