<template>
	<view class="container">
		<!-- 头部学生信息区域 -->
		<view class="header">
			<view class="img">
				<img
					src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_bt%2F0%2F13579194276%2F1000&refer=http%3A%2F%2Finews.gtimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1671596163&t=52c9def84f0fa7832bfc5824364917e0">
			</view>
			<view class="msg">
				<view class="name">
					程佳欢
				</view>
				<view class="major">
					文法学院
				</view>
			</view>
		</view>

		<!-- 主体打卡区域 -->
		<view class="body">
			<!-- 卡片区域 -->
			<view class="card">
				<!-- 每一个卡片区域 -->
				<view class="item" v-for="item in list" :key="item.id">
					<view class="item_box">
						<view class="title">
							{{item.title}}
						</view>
						<view class="time">
							{{item.time}}
						</view>
						<view class="type">
							<img v-if="item.type=='已打卡'" src="./imgs/success.png">
							<span v-if="item.type=='已打卡'">09:00</span>
							{{item.type}}
						</view>
					</view>
				</view>

			</view>

			<!-- 打卡区域 -->
			<view :class="{clock:flags,active:!flags}" @click="handlePunch">
				<view class="info" v-if="flags&&list.length">
					打卡
				</view>
				<view class="info" v-else>
					无法打卡
				</view>
				<view class="time">
					{{nowTime}}
				</view>
			</view>

			<!-- 位置信息区域 -->
			<view class="address" v-if="flags&&list.length">
				{{address}}
			</view>
			<view class="address" v-if="addressFlags&&!flags">
				不在管理员设定范围打卡
			</view>
			<view class="address" v-if="timeFlags&&!flags">
				未到打卡时间无法打卡
			</view>
			<view class="address" v-if="!list.length">
				无打卡任务无需打卡
			</view>
			<view class="address" v-if="!list.length">
				今日休息无需打卡
			</view>

			<view class="address" v-if="!list.length">
				下一次打卡时间段为18:00-19:00
			</view>
		</view>
	</view>
</template>

<script>
	var QQMapWX = require('../../util/qqmap-wx-jssdk1.1/qqmap-wx-jssdk');
	var qqmapsdk;
	export default {
		data() {
			return {
				// 用户信息
				userInfo: {},
				// 打卡规则列表
				list: [{
						id: 1,
						title: "课间操打卡规则",
						time: "08:00-9:00",
						type: "已打卡"
					},
					{
						id: 2,
						title: "课间操打卡规则2",
						time: "08:00-10:00",
						type: "未打卡"
					},
					{
						id: 3,
						title: "课间操打卡规则3",
						time: "08:00-19:00",
						type: "已打卡"
					},
				],
				flags: true,
				addressFlags: false,
				timeFlags: false,
				// 当前时间
				nowTime: "",
				// 当前定位位置信息
				address: "",
				// 定时器标识
				timer: null
			};
		},
		onLoad() {
			// 实例化API核心类
			qqmapsdk = new QQMapWX({
				// 申请的key
				key: 'R43BZ-2XROX-L7T45-T5OQI-IBDFT-GNBOI'
			});
			this.getNowTime()
			this.getUserInfo()
			this.getLocationData()
			// this.getRulesList()
		},
		onUnload() {
			if (this.timer) {
				clearInterval(this.timer)
			}
		},
		methods: {
			// 获取当前时间
			getNowTime() {
				if (this.timer) {
					clearInterval(this.timer)
				} else {
					this.timer = setInterval(() => {
						let date = new Date()
						let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
						let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
						let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
						this.nowTime = hours + ':' + minutes + ':' + seconds
						// console.log(this.nowTime);
					}, 1000)
				}
			},
			// 从缓存中获取用户信息
			getUserInfo() {
				try {
					const value = uni.getStorageSync('userInfo')
					if (value) {
						this.userInfo = value
					}
				} catch (e) {
					console.log(e);
				}
			},
			// 获取当前定位位置信息
			getLocationData() {
				qqmapsdk.reverseGeocoder({
					success: (res) => {
						// console.log(res);
						if (res.status == 0) {
							// 获取详细地址信息
							this.address = res.result.address
						} else {
							uni.showToast({
								title: "请求定位失败",
								icon: 'none'
							})
						}
					}
				})
			},
			// 获取打卡规则列表
			async getRulesList() {
				let res = await this.$myRequest({
					url: "/attendance/api/sign/check/in/list",
					name: this.userInfo.username
				})
				console.log(res);
			},
			// 点击打卡按钮回调
			handlePunch() {
				// 获取用户位置权限
				uni.authorize({
					scope: 'scope.userLocation',
					success() {
						uni.navigateTo({
							url: "/pages/location/location"
						})
					},
					fail() {
						uni.showModal({
							title: '提示',
							content: '请先开启定位权限，否则将无法使用定位功能',
							cancelText: '不授权',
							confirmText: '授权',
							success: function(res) {
								if (res.confirm) {
									uni.openSetting({
										success(res) {}
									})
								} else if (res.cancel) {}
							}
						});
					}
				})
			},
		}
	}
</script>

<style lang="scss" scoped>
	.container {
		padding-top: 20rpx;

		.header {
			display: flex;
			margin: 0 30rpx 30rpx 30rpx;
			width: 690rpx;
			height: 130rpx;
			background-color: #fff;

			.img {
				margin: 30rpx;
				width: 70rpx;
				height: 70rpx;

				img {
					width: 100%;
					height: 100%;
				}
			}

			.msg {
				margin: 30rpx 0;
				height: 70rpx;
				line-height: 36rpx;

				.name {
					font-size: 32rpx;
					font-weight: 400;
				}

				.major {
					font-size: 24rpx;
					font-weight: 400;
					color: #A6A6A6;
				}
			}
		}

		.body {
			margin: 0 30rpx;
			width: 690rpx;
			height: 919rpx;
			background-color: #fff;

			.card {
				padding-top: 30rpx;
				white-space: nowrap;
				height: 160rpx;
				overflow-x: auto;

				.item {
					display: inline-block;
					margin: 0 15rpx;
					width: 300rpx;
					height: 130rpx;
					line-height: 12rpx;
					border-radius: 8rpx;
					font-weight: 400;
					background-color: #E6E6E6;

					.item_box {
						display: flex;
						flex-direction: column;
						justify-content: space-evenly;
						height: 130rpx;
						padding-left: 30rpx;

						.title {
							font-size: 28rpx;
						}

						.time {
							font-size: 24rpx;
						}

						.type {
							font-size: 24rpx;
							color: #808080;

							img {
								margin-right: 10rpx;
								width: 20rpx;
								height: 20rpx;
							}
						}
					}
				}
			}

			.clock {
				display: flex;
				flex-direction: column;
				justify-content: center;
				align-items: center;
				margin: auto;
				margin-top: 145rpx;
				width: 300rpx;
				height: 300rpx;
				border-radius: 150rpx;
				text-align: center;
				color: #fff;
				background: linear-gradient(180deg, #00ACFC 0%, #0082FC 100%);

				.info {
					height: 58rpx;
					font-size: 40rpx;
					font-weight: 700;
				}

				.time {
					height: 41rpx;
					font-size: 28rpx;
					font-weight: 400;
				}
			}

			.active {
				display: flex;
				flex-direction: column;
				justify-content: center;
				align-items: center;
				margin: auto;
				margin-top: 145rpx;
				width: 300rpx;
				height: 300rpx;
				border-radius: 150rpx;
				text-align: center;
				color: #fff;
				background: linear-gradient(180deg, #CCCCCC 0%, #B3B3B3 100%);

				.info {
					height: 58rpx;
					font-size: 40rpx;
					font-weight: 700;
				}

				.time {
					height: 41rpx;
					font-size: 28rpx;
					font-weight: 400;
				}
			}

			.address {
				margin-top: 34rpx;
				height: 35rpx;
				line-height: 35rpx;
				text-align: center;
				font-size: 24rpx;
				font-weight: 400;
				color: #808080;
			}
		}
	}
</style>
