<template>
	<view class="personal-pet">
		<view v-if="petList.length > 0" class="personal-pet-list">
			<view v-for="(item, index) in petList" :key="index">
				<view
					:class="['personal-pet-list-item', item.sex === 0 ? 'personal-pet-list-item_backgroud_m' : 'personal-pet-list-item_backgroud_f' ]">
					<view class="personal-pet-info">
						<view>
							<u-avatar :src="item.headImage || defaultPhoto" size="60" shape="circle"></u-avatar>
						</view>
						<view class="personal-pet-info-1">
							<view class="personal-pet-info-2">
								<view class="personal-pet-name">
									{{ item.nickName }}
								</view>
								<view class="personal-pet-sex">
									<img :src="item.sex === 0 ? '../../../static/images/sex/boy.svg' : '../../../static/images/sex/girl.svg'"
										alt="sex" style="width: 16px;height: 16px;" />
								</view>
							</view>
							<view class="personal-pet-info-3" style="width: 100%;">
								<view style="max-width: 35%;">
									{{ item.type || '未知' }}
								</view>
								<view class="personal-pet-info-age" style="max-width: 90px;">
									{{ item.age || '未知' }}
								</view>
								<view style="max-width: 25%;">
									体重{{ item.weight }}kg
								</view>
							</view>
						</view>
					</view>
					<view class="personal-pet-info-disposition ellipsis">
						性格： {{ item.personality }}
					</view>
					<view class="personal-pet-info-btns">
						<view class="personal-pet-info-btn" @click="editPet(item)">
							<u-icon name="edit-pen" color="#7d8196" size="16" style="margin-right: 5px;"></u-icon>
							<view style="margin-left: 5px;">
								编辑
							</view>
						</view>
						<view class="personal-pet-info-btn" @click="deletePet(item)">
							<u-icon name="trash" color="#7d8196" size="16"></u-icon>
							<view style="margin-left: 5px;">
								删除
							</view>
						</view>
					</view>
				</view>
			</view>
		</view>
		<view v-else class="personal-pet-none">
			<img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/pet/catdog.png" alt="pet"
				style="width: 149px;height: 124px;" mode="widthFix" />
			<view class="personal-pet-none-text">这里还没有您的宠物,请点击添加吧~</view>
		</view>

		<view class="personal-pet-add">
			<button class="personal-pet-add-btn" @click="addPet">
				<view style="font-size: 16px;font-weight: 500;">
					添加宠物
				</view>
			</button>
		</view>

		<view>
			<u-picker :show="show" :columns="petTypes" @confirm="petTypeChange" @cancel="cancel"
				:immediateChange="true"></u-picker>
		</view>

		<u-modal :show="showDel" @confirm="confirmDel" @cancel="cancelDel" ref="uModal" showCancelButton
			:asyncClose="true" :content="delContent"></u-modal>
	</view>
</template>

<script setup>
	import {
		ref,
		onMounted,
		computed
	} from 'vue';
	// import {
	// 	getDictList
	// } from "@/api/system/user.js"
	import {
		getpetList,
		delByPetId
	} from "@/api/pet/index.js";
	import {
		useRouter
	} from 'vue-router';
	import {
		onShow,
		onPullDownRefresh
	} from '@dcloudio/uni-app'
	import {
		useStore
	} from "vuex"

	const store = useStore();
	const userInfo = computed(() => {
		return store.getters.userInfo
	})

	const router = useRouter();
	const defaultPhoto = ref('https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/pet/catdog.png');
	const petList = ref([]);
	const show = ref(false);
	const showDel = ref(false);
	const petTypes = ref([
		[
			'猫咪', '狗狗'
		]
	]);
	const delContent = ref('');
	const deleteId = ref('');
	const petType = ref('');

	const getPetList = async () => {
		petList.value = [];
		try {
			const res = await getpetList({
				userId: userInfo.value.userId
			});
			if (res && res.data) {
				petList.value = res.data;
				showDel.value = false;
			}
		} catch (error) {
			console.error('获取宠物列表失败', error);
		}
	};

	// const getPetTypeList = async () => {
	//   try {
	//     const res = await getDictList('pet_type');
	//     if (res.code === 200) {
	//       const petType = res.data.map(e => e.dictLabel);
	//       petTypes.value = [petType];
	//     } else {
	//       console.error('获取pet type失败');
	//     }
	//   } catch (error) {
	//     console.error('获取pet type列表失败', error);
	//   }
	// };

	const addPet = () => {
		show.value = true;
	};

	const cancel = () => {
		show.value = false;
	};

	const petTypeChange = (e) => {
		petType.value = e.value[0];
		show.value = false;
		if (petType.value === '猫咪') {
			uni.navigateTo({
				url: "/otherPages/userManage/pet/petInfo?petType=0&optionType=add&userId="+userInfo.value.userId
			})
		}
		if (petType.value === '狗狗') {
			uni.navigateTo({
				url: "/otherPages/userManage/pet/petInfo?petType=1&optionType=add&userId="+userInfo.value.userId
			})
		}
	};

	const editPet = (item) => {
		if (item.petType === '猫咪' || item.petType === 0) {
			uni.navigateTo({
				url: `/otherPages/userManage/pet/petInfo?petType=0&optionType=edit&petId=${item.id}`
			})
		}
		if (item.petType === '狗狗' || item.petType === 1) {
			uni.navigateTo({
				url: `/otherPages/userManage/pet/petInfo?petType=1&optionType=edit&petId=${item.id}`
			})
		}
	};

	const deletePet = (item) => {
		delContent.value = "确定要删除" + item.nickName + '?';
		showDel.value = true;
		deleteId.value = item.id;
	};

	const confirmDel = async () => {
		try {
			await delByPetId({
				id: deleteId.value
			});
			getPetList();
		} catch (error) {
			console.error('删除宠物失败', error);
		}
	};

	const cancelDel = () => {
		showDel.value = false;
		deleteId.value = '';
	};

	// onMounted(() => {
	// 	// getPetTypeList();
	// 	getPetList();
	// });

	onShow(() => {
		getPetList();
	});

	onPullDownRefresh(() => {
		getPetList();
	});
</script>

<style lang="scss" scoped>
	.personal-pet {
		position: relative;
		height: 100%;
		padding-bottom: 90px;

		.personal-pet-add {
			box-sizing: border-box;
			background-color: #FFFFFF;
			padding: 20rpx 20rpx 40rpx 20rpx;
			width: 100%;
			height: 160rpx;
			position: fixed;
			bottom: 0;
			z-index: 100;
			display: flex;

			.personal-pet-add-btn {
				width: 100%;
				height: 90rpx;
				border-radius: 6px;
				background: #FFB13F;
				font-size: 16px;
				color: #FFFFFF;
			}
		}

		.personal-pet-list {
			.personal-pet-list-add {
				width: 100%;
				height: 44px;
				background-color: #FFFFFF;
				display: flex;
				justify-content: space-between;
				align-items: center;
				padding: 0 15px;

				.personal-pet-list-add-btn {
					font-size: 14px;
					color: #AAA;
					display: flex;
					align-items: center;
				}

			}

			.personal-pet-list-item_backgroud_m {
				background: linear-gradient(179deg, #EDF5FE 0.75%, #FFF 34.11%);
			}

			.personal-pet-list-item_backgroud_f {
				background: linear-gradient(179deg, #FFF4F6 0.75%, #FFF 34.11%);
			}

			.personal-pet-list-item {
				margin: 10px 10px 0 10px;
				border-radius: 5px;
				padding: 20px 10px 10px;

				.personal-pet-info {
					display: flex;
					align-items: center;
					justify-content: flex-start;

					.personal-pet-info-1 {
						margin-left: 10px;
						width: calc(100% - 60px);

						.personal-pet-info-2 {
							display: flex;
							flex-wrap: wrap;

							.personal-pet-name {
								color: #333;
								font-size: 16px;
								margin-right: 10px;
							}
						}

						.personal-pet-info-3 {
							display: flex;
							align-items: baseline;
							font-size: 14px;
							margin-top: 5px;
							color: #7D8196;

							.personal-pet-info-age {
								padding: 0 10px;
								margin: 0 10px;
								border-left: solid 2px #7D8196;
								border-right: solid 2px #7D8196;
							}

						}

					}

				}

				.personal-pet-info-disposition {
					padding: 10px;
					color: #7D8196;
					font-size: 14px;
					background: #f9f9f9;
					border-radius: 5px;
					margin-top: 10px;
				}

				.personal-pet-info-btns {
					display: flex;
					justify-content: flex-end;
					margin-top: 10px;

					.personal-pet-info-btn {
						display: flex;
						font-size: 14px;
						color: #7D8196;
						margin-left: 20px;
					}
				}
			}

		}

		.personal-pet-none {
			display: flex;
			justify-content: center;
			align-items: center;
			flex-wrap: wrap;
			margin-top: 40%;

			.personal-pet-none-text {
				color: #666;
				text-align: center;
				font-size: 14px;
				width: 100%;
				margin-top: 10px;
			}
		}

	}
</style>