You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<template> <view class="app-container"> <view class="login-content"> <view class="login-font"> <image style="width: 364rpx;height: 200rpx;" src="/static/login/proxy-user-copy.png" alt="" /> </view> <view class="login-main"> <view class="login-item"> <input type="tel" class="log-phone" placeholder="请输入手机号" v-model="phone" /> </view> <view class="login-item"> <input type="number" class="log-phone log-code" placeholder="请输入验证码" v-model="sms_code" /> <view class="getCode" @click="getCode" v-if="countdown==0"> 获取验证码 </view> <view class="getCode" v-else> 剩余{{countdown}}秒 </view> </view> <view class="login-btn"> <button size="default" type="default" @click="btnLogin" style="color:#ffffff;backgroundColor:#1783FF;borderColor:#1783FF;border-radius: 50rpx;height: 88rpx;line-height: 88rpx;">登录</button> </view> <view class="login-sign"> <u-checkbox-group @change="handleCheck"> <u-checkbox labelSize="13" size="20" shape="circle" name="agree" label="我同意"></u-checkbox> </u-checkbox-group> <view class="log-link" @click="handlerApply"> 《排队支付代理用户服务协议》 </view> <view class="log-link" @click="handlerProtect"> 《隐私保护协议》 </view> </view> </view> </view> <u-modal :show="show" @confirm="confirm" :title="title" :content='content'></u-modal> </view></template>
<script> import { publicSendSms, agentSmsLogin } from '../../common/api.js' import md5 from 'js-md5'
export default { data() { return { phone: '', sms_code: '', bgColor: '#bgColor', checked: false, show: false, title: '', content: '', countdown: 0 }; }, methods: { getCode() { if (!this.phone) { uni.$u.toast('请填写手机号') return }
if (!this.checked) { uni.$u.toast('需同意协议') return }
let phone = this.phone let nonce_str = md5(Math.random() + ''); let sign = md5(md5(phone) + md5(nonce_str) + nonce_str) publicSendSms({ phone, nonce_str, sign, type: 2 }).then(() => { uni.$u.toast('短信已发送') this.startCountdown() }) }, startCountdown() { this.countdown = 60; let h = setInterval(() => { this.countdown-- if (this.countdown == 0) { clearInterval(h) } }, 1000) }, handleCheck(detail) { console.log(detail) if (detail.indexOf('agree') != -1) { this.checked = true } else { this.checked = false } }, handlerApply() { this.show = true; this.title = '排队支付代理用户服务协议'; this.content = '排队支付代理用户服务协议'; }, handlerProtect() { this.show = true; this.title = '隐私保护协议'; this.content = '隐私保护协议'; }, confirm() { this.show = false; }, btnLogin() { if (!this.checked) { uni.$u.toast('需同意协议') return }
agentSmsLogin({ phone: this.phone, sms_code: this.sms_code }).then(data => { uni.setStorageSync('agent_token', data.token) uni.navigateTo({ url: '/pages/index/index' }); }) } } }</script>
<style lang="scss"> .login-content { width: 100%; height: 1500rpx; padding-left: 30rpx; padding-right: 30rpx; background: url(../../static/login/login-bg.png) no-repeat center center; background-size: cover; box-sizing: border-box;
.login-font { width: 364rpx; height: 200rpx; padding-top: 80rpx; }
.login-main { margin-top: 120rpx;
.login-item { position: relative; margin-top: 40rpx;
.log-phone { width: 100%; height: 88rpx; line-height: 88rpx; padding-left: 50rpx; border-radius: 44rpx; border: none; box-sizing: border-box; background-color: #fff; font-size: 16px; color: #454545; }
.getCode { position: absolute; right: 50rpx; top: 30rpx; font-size: 12px; color: #454545; cursor: pointer; } }
.login-btn { margin-top: 80rpx; }
.login-sign { display: flex; justify-content: flex-start; margin-top: 30rpx; padding-left: 20rpx;
.u-radio-group { flex-grow: 0; margin-right: 60rpx; }
.log-link { height: 40rpx; line-height: 40rpx; font-size: 12px; } } } }</style>
|