| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- <template>
 
- 	<view class="mix-get-code" @click="getCode">
 
- 		<view v-if="loading" class="loading">
 
- 			<mix-icon-loading size="28rpx" color="#0083ff"></mix-icon-loading>
 
- 		</view>
 
- 		<text class="text" :class="{disabled: timeDown > 0}">
 
- 			{{ timeDown > 0 ? '重新获取 ' + timeDown + 's' : '获取验证码' }}
 
- 		</text>
 
- 	</view>
 
- </template>
 
- <script>
 
- 	/**
 
- 	 * 手机验证码
 
- 	 * @prop mobile 手机号
 
- 	 * @prop templateCode 短信模版id
 
- 	 */
 
- 	import {checkStr} from '@/common/js/util'
 
- 	export default {
 
- 		//获取手机验证码
 
- 		name: 'MixMobileCode',
 
- 		data() {
 
- 			return {
 
- 				loading: false,
 
- 				timeDown: ''
 
- 			}
 
- 		},
 
- 		props: {
 
- 			mobile: {
 
- 				type: String,
 
- 				default: ''
 
- 			},
 
- 			templateCode: {
 
- 				type: String,
 
- 				default: ''
 
- 			},
 
- 			action: {
 
- 				type: String,
 
- 				default: '用户注册' //设置支付密码
 
- 			}
 
- 		},
 
- 		methods: {
 
- 			//获取验证码
 
- 			async getCode(){
 
- 				if(this.timeDown > 0){
 
- 					return;
 
- 				}
 
- 				this.$util.throttle(()=>{
 
- 					const mobile = this.mobile || this.$store.state.userInfo.username;;
 
- 					if(!checkStr(mobile, 'mobile')){
 
- 						this.$util.msg('手机号码格式不正确');
 
- 						return;
 
- 					}
 
- 					this.loading = true;
 
- 					this.$request('smsCode', 'send', {
 
- 						mobile,
 
- 						action: this.action, //uni短信必填
 
- 						TemplateCode: this.templateCode, //阿里云必填
 
- 					}).then(response=>{
 
- 						this.$util.msg(response.msg);
 
- 						this.loading = false;
 
- 						if(response.status === 1){
 
- 							this.countDown(60);
 
- 						}
 
- 					}).catch(err=>{
 
- 						this.$util.msg('验证码发送失败');
 
- 						this.loading = false;
 
- 						console.log(err);
 
- 					})
 
- 				}, 2000)
 
- 			},
 
- 			//倒计时
 
- 			countDown(timer){
 
- 				timer --;
 
- 				this.timeDown = timer;
 
- 				if(timer > 0){
 
- 					setTimeout(()=>{
 
- 						this.countDown(timer);
 
- 					}, 1000)
 
- 				}
 
- 			},
 
- 		}
 
- 	}
 
- </script>
 
- <style scoped lang="scss">
 
- 	.mix-get-code{
 
- 		flex-shrink: 0;
 
- 		display: flex;
 
- 		justify-content: space-between;
 
- 		align-items: center;
 
- 		height: 36rpx;
 
- 		
 
- 		&:before{
 
- 			content: '';
 
- 			width: 0;
 
- 			height: 40;
 
- 			border-right: 1px solid #f0f0f0;
 
- 		}
 
- 		.loading{
 
- 			margin-right: 8rpx;
 
- 		}
 
- 		.text{
 
- 			line-height: 28rpx;
 
- 			font-size: 26rpx;
 
- 			color: #40a2ff;
 
- 			
 
- 			&.disabled{
 
- 				color: #ccc;
 
- 			}
 
- 		}
 
- 	}
 
- </style>
 
 
  |