<template>
	<view class="checkCode">
		<view class="back-btn" @click="closeModal">
			<image src="@/static/icons/left_back@3x.png"></image>
		</view>
		<view class="wrapper">
			<view class="tips">
				<view class="tips_title">{{tips.title}}</view>
				<view class="tips_text">{{tips.text}} {{data.area}} {{data.mobile}}</view>
			</view>
			<view class="numBox">
				<uni-code-input v-model="data.mobileCheckCode" mode="line" :size="88" :fontSize="48" :space="24" :focus="true" color="rgba(0, 0, 0, 0.2)" borderColor="rgba(0, 0, 0, 0.1)"
					hairline :maxlength="6" @finish="finish"></uni-code-input>
			</view>
			<view class="cutdownBox">
				<view v-if="time>0" class="time">{{time}}s</view>
				<view v-else @click="regetCode" class="regetBtn">重新获取</view>
			</view>
		</view>


	</view>
</template>

<script>
	import uniCodeInput from '@/components/uni-code-input/uni-code-input.vue';
	export default {
		name: 'CheckCode',
		components: {
			uniCodeInput
		},
		data() {
			return {
				tips: {
					title: '输入验证码',
					text: '验证码已发送至'
				},
				time: 60,
				resetTime: 60,
				timer: null,
			}
		},
		props: {
			data: {
				default: () => {},
				type: Object,
			}
		},
		mounted() {
			this.cutdown()
		},
		destroyed() {
			this.timer && clearInterval(this.timer)
		},
		methods: {
			closeModal() {
				this.$emit('closeModal', 'code');
			},
			cutdown() {
				this.timer && clearInterval(this.timer)
				this.timer = setInterval(
					() => {
						this.time--
					}, 1000)
			},
			regetCode() {
				// 调用接口
				this.time = this.resetTime
				this.cutdown()
				this.$emit('regetCode')
			},
			finish(e) {
				console.log('输入结束，当前值为：' + e);
				this.$emit('login', this.data)
			}
		}
	}
</script>

<style lang="scss" scoped>
	.checkCode {
		width: 100vw;
		height: 100vh;
		position: relative;

		.back-btn {
			position: absolute;
			left: 40upx;
			padding-top: var(--status-bar-height);
			top: 40upx;
			font-size: 40upx;
			color: $font-color-dark;
			z-index: 9;

			image {
				width: 40rpx;
				height: 40rpx;
			}
		}

		.wrapper {
			position: relative;
			padding-top: 200upx;

			.tips {
				width: 100%;
				height: 136upx;
				padding: 0 48rpx;

				.tips_title {
					font-size: 64upx;
					margin-bottom: 26upx;
				}

				.tips_text {
					font-size: 28upx;
				}
			}

			.numBox {
				height: 80rpx;
				margin: 80rpx 0 0;
				display: flex;
				justify-content: center;
			}

			.cutdownBox {
				height: 40rpx;
				padding: 48rpx;
				color: rgba(0, 0, 0, .95);

				.time {
					color: rgba(0, 0, 0, .4)
				}
			}
		}
	}
</style>