<template>
	<view class="content">
		<!-- <view class="bg-line" v-if="childrenslist.length > 0">

		</view> -->
		<view class="card-list" v-if="childrenslist.length > 0">
			<view class="card-item" v-for="(item,index) in childrenslist" :key="index">
				<view class="card-item-left">
					<view class="card-item-left-line1">{{item.username}}</view>
					<view class="card-item-left-line2">基本信息:{{item.sex+" "+item.age+"岁 "+item.birthday}}</view>
					<view class="card-item-left-line3">身份证号:{{item.idCard == null ? '未填' : item.idCard}}</view>
					<view class="card-item-left-line4">测试次数:{{item.recordCount+"次"}}</view>
					<view class="card-item-left-line5">当前结果:{{item.lastRecordResult ? item.lastRecordResult : '无'}}
					</view>
				</view>
				<view class="card-item-btn-del">
					<u-icon name="trash" size="20" color="#FA3534"
						@tap="userDelChildrenById(item.id,item.username)"></u-icon>
				</view>
				<view class="card-item-btn-edit">
					<u-icon name="edit-pen" size="20" color="#1BD191" @tap="goUserEditChildren(item.id)"></u-icon>
				</view>
				<view class="card-item-btn-view" @click="viewTest(item.lastRecordId,item.recordCount)">
					查看测试
				</view>
			</view>
		</view>
		<u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" v-else></u-empty>
		<u-toast ref="uToast"></u-toast>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				childrenslist: []
			}
		},
		onLoad() {
			this.userChildrenslist();
		},
		methods: {
			viewTest(recordId, recordCount) {
				if (!recordCount) {
					return uni.showToast({
						icon: 'error',
						title: '尚未进行过测试'
					})
				}
				uni.navigateTo({
					url: `/tablePackage/pages/testRecord?recordId=${recordId}`
				})

			},
			async userChildrenslist() {
				const res = await this.$myRequest({
					url: '/system/children/userChildrenslist'
				})
				for (let i = 0; i < res.data.rows.length; i++) {

					res.data.rows[i].age = this.getCurrentAgeByBirthDate(res.data.rows[i].birthday)
				}
				this.childrenslist = res.data.rows
				console.log(res);
			},
			userDelChildrenById(id, username) {
				uni.showModal({
					title: '提示',
					content: '确认删除【' + username + '】?',
					success: (res) => {
						if (res.confirm) {
							const res = this.$myRequest({
								method: 'DELETE',
								url: '/system/children/userDelChildrenById/' + id
							})
							this.$refs.uToast.show({
								type: 'success',
								message: '删除成功',
								complete: () => {
									this.userChildrenslist()
								}
							})


							// console.log(res);
						}
					}
				})
			},
			goUserEditChildren(id) {
				uni.navigateTo({
					url: "/minePackage/pages/BindChild?id=" + id
				})
			},


			getCurrentAgeByBirthDate(strBirthday) {
				// 将出生日期的字符串通过"-"分割成数组
				const strBirthdayArr = strBirthday.split("-")
				// 拿到出生日期的年
				const birthYear = strBirthdayArr[0]
				// 拿到出生日期的月
				const birthMonth = strBirthdayArr[1]
				// 拿到出生日期的日
				const birthDay = strBirthdayArr[2]
				// 创建一个时间对象
				const d = new Date()
				// 拿到当前时间的年
				const nowYear = d.getFullYear()
				// 拿到当前时间的月
				const nowMonth = d.getMonth() + 1
				// 拿到当前时间的日
				const nowDay = d.getDate()
				// 如果出生日期的年等于当前时间的年
				if (nowYear === birthYear) return 0 // 返回周岁年龄 0,并终止函数执行
				// 如果如果出生日期的年不等于于当前时间的年,则拿到年之差
				const ageDiff = nowYear - birthYear; // 年之差
				// 如果年之差是个负数,则表示用户输入的出生日期错误,晚于今天,返回 -1,并终止函数执行
				if (ageDiff < 0) return -1 // 返回错误 -1,并终止函数执行
				// 如果年之差是个正整数,但出生日期的月与当前时间的月不相等
				if (nowMonth !== birthMonth) {
					// 拿到出生日期的日与当前时间的月之差
					const monthDiff = nowMonth - birthMonth; // 月之差
					// 如果月之差是个负数,则年之差 - 1后得到周岁年龄,否则直接得到周岁年龄
					return monthDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
				}
				// 如果出生日期的月与当前时间的月相等,则拿到出生日期的日与当前时间的日之差
				const dayDiff = nowDay - birthDay;
				// 如果日之差是个负数,则年之差 - 1得到周岁年龄,否则直接得到周岁年龄
				return dayDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
			}

		}

	}
</script>

<style scoped lang="less">
	.card-list {
		width: 100%;
		position: fixed;
		z-index: 2;
		top: 100rpx;
		bottom: 0;
		left: 0;
		right: 0;
		overflow-y: auto;

		.card-item {
			width: 90%;
			height: 280rpx;
			margin: 0 auto;
			margin-bottom: 20rpx;
			box-shadow: 0rpx 4rpx 12rpx 0rpx #E4E4E4;
			background-color: #fff;
			border-radius: 20rpx;
			display: flex;
			align-items: center;
			justify-content: space-between;
			position: relative;

			.card-item-left {
				width: 100%;
				height: 100%;
				margin-left: 80rpx;
				display: flex;
				flex-direction: column;
				// justify-content: center;

				.card-item-left-line1 {
					width: 80%;
					font-size: 38rpx;
					font-weight: bold;
					margin-bottom: 10rpx;
					display: flex;
					justify-content: center;
					align-items: center;
				}

				.card-item-left-line2,
				.card-item-left-line3,
				.card-item-left-line4,
				.card-item-left-line5 {
					display: flex;
					align-items: center;
					font-size: 28rpx;
					margin-top: 8rpx;
				}
			}

			.card-item-btn-del {
				width: 60rpx;
				height: 60rpx;
				position: absolute;
				right: 50rpx;
				top: 10rpx;
				border: 2rpx #FA3534 solid;
				border-radius: 50%;
				display: flex;
				justify-content: center;
				align-items: center;
			}

			.card-item-btn-edit {
				width: 60rpx;
				height: 60rpx;
				position: absolute;
				right: 50rpx;
				top: 100rpx;
				border: 2rpx #1BD191 solid;
				border-radius: 50%;
				display: flex;
				justify-content: center;
				align-items: center;
			}

			.card-item-btn-view {
				position: absolute;
				right: 50rpx;
				bottom: 40rpx;
				background-color: #287BCE;
				color: #fff;
				border-radius: 10rpx;
				padding: 10rpx 20rpx;
				font-size: 26rpx;
			}
		}

		.card-item::after {
			content: "";
			display: inline-block;
			position: absolute;
			width: 20rpx;
			height: 20rpx;
			top: 15rpx;
			left: 15rpx;
			background-color: #287BCE;
			border-radius: 50%;
		}

		// .card-item::before {
		// 	content: "";
		// 	display: inline-block;
		// 	position: absolute;
		// 	width: 20rpx;
		// 	height: 20rpx;
		// 	bottom: 15rpx;
		// 	left: 15rpx;
		// 	background-color: #287BCE;
		// 	border-radius: 50%;
		// }

	}

	// .bg-line::before {
	// 	content: "";
	// 	position: absolute;
	// 	z-index: 1;
	// 	display: inline-block;
	// 	left: calc(5% + 20rpx);
	// 	top: 0rpx;
	// 	bottom: 0rpx;
	// 	width: 10rpx;
	// 	background-color: #287BCE;
	// }
</style>