<template>
	<view class="u-page">
		<view class="u-demo-block">
			<text class="u-demo-block__title">基础功能</text>
			<view class="u-demo-block__content">
				<u-code
				    ref="uCode"
				    @change="codeChange"
				    seconds="20"
					change-text="XS获取"
					@start="disabled1 = true"
					@end="disabled1 = false"
				></u-code>
				<u-button
				    @tap="getCode"
				    :text="tips"
				    type="success"
					size="small"
					:disabled="disabled1"
				></u-button>
			</view>
		</view>
		<view class="u-demo-block">
			<text class="u-demo-block__title">保持倒计时(开始后,左上角返退出此页面再进入,会发现倒计时还在继续)</text>
			<view class="u-demo-block__content">
				<u-code
				    ref="uCode1"
				    @change="codeChange1"
				    keep-running
				    change-text="倒计时XS"
					@start="disabled2 = true"
					@end="disabled2 = false"
				></u-code>
				<u-button
					type="primary"
				    @tap="getCode1"
				    :text="tips1"
					size="small"
					:disabled="disabled2"
				></u-button>
			</view>
		</view>
		<view class="u-demo-block">
			<text class="u-demo-block__title">文本样式</text>
			<view class="u-demo-block__content">
				<u-code
				    ref="uCode2"
				    @change="codeChange2"
				    keep-running
					start-text="点我获取验证码"
				></u-code>
				<text
				    @tap="getCode2"
				    :text="tips2"
					class="u-page__code-text"
				>{{tips2}}</text>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				tips: '',
				// 此为错误定义,见下方说明
				// refCode: null,
				tips1: '',
				tips2: '',
				disabled1: false,
				disabled2: false,
				disabled3: false
			}
		},
		onReady() {
			// 注意这里不能将一个组件赋值给data的一个变量,否则在微信小程序会
			// 造成循环引用而报错,如果你想这样做,请在onReady或者onLoad生命周期中定义,如下
			// this.refCode = this.$refs.uCode;
		},
		methods: {
			codeChange(text) {
				this.tips = text;
			},
			codeChange1(text) {
				this.tips1 = text;
			},
			codeChange2(text) {
				this.tips2 = text;
			},
			getCode() {
				if (this.$refs.uCode.canGetCode) {
					// 模拟向后端请求验证码
					uni.showLoading({
						title: '正在获取验证码'
					})
					setTimeout(() => {
						uni.hideLoading();
						// 这里此提示会被this.start()方法中的提示覆盖
						uni.$u.toast('验证码已发送');
						// 通知验证码组件内部开始倒计时
						this.$refs.uCode.start();
					}, 2000);
				} else {
					uni.$u.toast('倒计时结束后再发送');
				}
			},
			getCode1() {
				if (this.$refs.uCode1.canGetCode) {
					// 模拟向后端请求验证码
					uni.showLoading({
						title: '正在获取验证码'
					})
					setTimeout(() => {
						uni.hideLoading();
						// 这里此提示会被this.start()方法中的提示覆盖
						uni.$u.toast('验证码已发送');
						// 通知验证码组件内部开始倒计时
						this.$refs.uCode1.start();
					}, 2000);
				} else {
					uni.$u.toast('倒计时结束后再发送');
				}
			},
			getCode2() {
				if (this.$refs.uCode2.canGetCode) {
					// 模拟向后端请求验证码
					uni.showLoading({
						title: '正在获取验证码'
					})
					setTimeout(() => {
						uni.hideLoading();
						// 这里此提示会被this.start()方法中的提示覆盖
						uni.$u.toast('验证码已发送');
						// 通知验证码组件内部开始倒计时
						this.$refs.uCode2.start();
					}, 2000);
				} else {
					uni.$u.toast('倒计时结束后再发送');
				}
			}
		}
	}
</script>

<style lang="scss">
	.u-page {
		&__code-text {
			color: $u-primary;
			font-size: 15px;
		}
	}
	
	.u-demo-block__content {
		@include flex;
	}
</style>