login-short-code.vue 3.0 KB
Newer Older
芊里 已提交
1
<template>
芊里 已提交
2
	<view class="short-code-btn" hover-class="hover" @click="start">
芊里 已提交
3
		<text class="inner-text" :class="reverseNumber==0?'inner-text-active':''">{{innerText}}</text>
芊里 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
	</view>
</template>

<script>
	function debounce(func, wait) {
		let timer;
		wait = wait || 500;
		return function() {
			let context = this;
			let args = arguments;
			if (timer) clearTimeout(timer);
			let callNow = !timer;
			timer = setTimeout(() => {
				timer = null;
			}, wait)
			if (callNow) func.apply(context, args);
		}
	}
	export default {
		name: "login-short-code",
		props: {
			/**
			 * 倒计时时长 s
			 */
			count: {
				type: [String, Number],
L
123  
linju 已提交
30
				default: 60
芊里 已提交
31 32 33 34 35 36 37
			},
			/**
			 * 手机号码
			 */
			phone: {
				type: [String, Number],
				default: ''
芊里 已提交
38 39 40 41 42 43 44 45 46 47 48
			}
		},
		data() {
			return {
				reverseNumber: 0,
				reverseTimer: null
			};
		},
		computed: {
			innerText() {
				if (this.reverseNumber == 0) return '获取验证码';
DCloud_JSON's avatar
DCloud_JSON 已提交
49
				return '重新发送('+this.reverseNumber+'s)';
芊里 已提交
50 51 52 53 54 55 56
			}
		},
		created() {
			this.initClick();
		},
		methods: {
			initClick() {
芊里 已提交
57
				this.start = debounce(() => {
芊里 已提交
58
					if (this.reverseNumber != 0) return;
芊里 已提交
59 60 61 62 63 64 65 66
					this.sendMsg();
				})
			},
			sendMsg() {
				let reg_phone = /^1\d{10}$/;
				if(!reg_phone.test(this.phone))return uni.showToast({
					title: '手机号格式错误',
					icon: 'none'
L
123  
linju 已提交
67 68 69 70 71 72 73 74 75 76 77
				});
				
				this.request('user-center/sendSmsCode',
					{
						"mobile": this.phone,
						"type": "login"
					},(data,result)=>{
						console.log(data,result);
						uni.showToast({
							title: "短信验证码发送成功",
							icon: 'none'
芊里 已提交
78 79
						});
						this.reverseNumber = Number(this.count);
L
123  
linju 已提交
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
						this.getCode();
						this.$emit('getCode');
					})
				
				// uniCloud.callFunction({
				// 	"name": "user-center",
				// 	"data": {
				// 		"action": "sendSmsCode",
				// 		"params": {
				// 			"mobile": this.phone,
				// 			"type": "login"
				// 		}
				// 	},
				// 	success: (e) => {
				// 		uni.showToast({
				// 			title: "短信验证码发送成功",
				// 			icon: 'none'
				// 		});
				// 		this.reverseNumber = Number(this.count);
				// 		this.getCode();
				// 		this.$emit('getCode');
				// 	},
				// 	fail: (err) => {
				// 		console.log(err);
				// 		uni.showToast({
				// 			title: '短信验证码发送失败',
				// 			icon: 'none'
				// 		});
				// 	},
				// 	complete: () => {
				// 		uni.hideLoading()
				// 	}
				// })
芊里 已提交
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
			},
			getCode() {
				if (this.reverseNumber == 0) {
					clearTimeout(this.reverseTimer);
					this.reverseTimer = null;
					return;
				}
				this.reverseNumber--;
				this.reverseTimer = setTimeout(() => {
					this.getCode();
				}, 1000)
			}
		}
	}
</script>

芊里 已提交
129
<style scoped>
芊里 已提交
130 131
	.short-code-btn {
		width: 200rpx;
芊里 已提交
132 133 134 135 136 137 138
		height: 85rpx;
		/* #ifndef APP-NVUE */
		display: flex;
		/* #endif */
		justify-content: center;
		align-items: center;
	}
DCloud_JSON's avatar
DCloud_JSON 已提交
139 140 141
	.inner-text {
		font-size: 28rpx;
		color: #AAAAAA;
芊里 已提交
142 143 144
	}
	.inner-text-active {
		color: #007aff;
芊里 已提交
145 146
	}
</style>