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.
259 lines
5.8 KiB
259 lines
5.8 KiB
<template>
|
|
<view class="login">
|
|
<view class="refund-navbar">
|
|
<u-navbar title="" :border-bottom="false" :background="background"></u-navbar>
|
|
</view>
|
|
<view class="login-hd">
|
|
<view class="a">验证码登录</view>
|
|
<view class="b">若该手机号未注册,我们将自动为您注册</view>
|
|
</view>
|
|
<view class="login-bd">
|
|
<view class="a">+86<input v-model="phoneNum" type="tel" placeholder="请输入手机号" /></view>
|
|
<view class="b">
|
|
<input v-model="semCode" placeholder="请输入验证码" />
|
|
<text @click="getCode" v-if="!showCountDown">获取验证码</text>
|
|
<text v-if="showCountDown">{{countdown}}</text>
|
|
</view>
|
|
<view class="c">
|
|
查看并同意<text @click="toTextPage(1)">《用户服务协议》</text>和<text @click="toTextPage(2)">《隐私政策》</text>
|
|
</view>
|
|
</view>
|
|
<view class="login-fd login-fd-on" @click="login">登录</view>
|
|
<view class="" v-if="isCheckout">
|
|
<mpWeiXinMobile :refereeId="refereeId"></mpWeiXinMobile>
|
|
</view>
|
|
<view class="" v-else>
|
|
<mpWeiXinMobile :refereeId="refereeId"></mpWeiXinMobile>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import * as UserApi from '@/api/user'
|
|
import * as CaptchaApi from '@/api/captcha';
|
|
import mpWeiXinMobile from './components/mp-weixin-mobile.vue'
|
|
import store from '@/store';
|
|
import {
|
|
isEmpty
|
|
} from '@/utils/util'
|
|
export default {
|
|
components: {
|
|
mpWeiXinMobile
|
|
},
|
|
data() {
|
|
return {
|
|
isCheckout: false,
|
|
showCountDown: false,
|
|
currentIndex: 0,
|
|
background: {
|
|
background: `url(${this.$picUrl}/static/news/login-bg.png) center top no-repeat`,
|
|
backgroundSize: '100% auto',
|
|
},
|
|
phoneNum: '',
|
|
semCode: '',
|
|
countdown: 60,
|
|
countDownFun: null,
|
|
code: '',
|
|
refereeId: ""
|
|
}
|
|
},
|
|
onLoad(o) {
|
|
this.refereeId = o.refereeId
|
|
},
|
|
methods: {
|
|
toTextPage(n) {
|
|
uni.navigateTo({
|
|
url: "/pages/news1/text?pageFlag=" + n
|
|
})
|
|
},
|
|
validatePhoneNumber(phone) {
|
|
// 定义手机号码的正则表达式
|
|
var regExp = /^1[3456789]\d{9}$/;
|
|
|
|
if (regExp.test(phone)) {
|
|
return true; // 符合手机号码格式要求
|
|
} else {
|
|
return false; // 不符合手机号码格式要求
|
|
}
|
|
},
|
|
getCode() {
|
|
// 获取验证码
|
|
const that = this
|
|
if (!that.validatePhoneNumber(that.phoneNum)) {
|
|
uni.showToast({
|
|
title: '请输入正确的手机号'
|
|
})
|
|
return
|
|
}
|
|
that.showCountDown = !that.showCountDown
|
|
that.countDownFun = setInterval(() => {
|
|
if (that.countdown >= 1) {
|
|
that.countdown = that.countdown - 1
|
|
} else {
|
|
that.showCountDown = false
|
|
that.countdown = 60
|
|
clearInterval(that.countDownFun)
|
|
}
|
|
|
|
}, 1000)
|
|
CaptchaApi.sendSmsCaptcha({
|
|
form: {
|
|
mobile: that.phoneNum
|
|
}
|
|
}).then(res => {
|
|
if (res.status == 200) {
|
|
uni.showToast({
|
|
title: res.message
|
|
})
|
|
} else {
|
|
uni.showToast({
|
|
title: res.message
|
|
})
|
|
}
|
|
})
|
|
},
|
|
login() {
|
|
// 登录
|
|
if (!this.validatePhoneNumber(this.phoneNum)) {
|
|
this.$toast('请输入正确的手机号')
|
|
return
|
|
}
|
|
if (this.semCode == '') {
|
|
this.$toast('请输入验证码')
|
|
return
|
|
}
|
|
const that = this;
|
|
store.dispatch('Login', {
|
|
smsCode: that.semCode,
|
|
mobile: that.phoneNum,
|
|
refereeId: this.refereeId,
|
|
isParty: false,
|
|
partyData: {},
|
|
refereeId: false
|
|
}).then(res => {
|
|
uni.setStorageSync('token', res.data.token)
|
|
that.$toast(res.message)
|
|
that.getUserInfo()
|
|
setTimeout(() => that.onNavigateBack(1), 2000)
|
|
})
|
|
},
|
|
getUserInfo() {
|
|
UserApi.info()
|
|
.then(result => {
|
|
uni.setStorageSync('userInfo', result.data.userInfo)
|
|
})
|
|
},
|
|
onNavigateBack(delta = 1) {
|
|
// 登录成功返回原页面
|
|
const pages = getCurrentPages()
|
|
if (pages.length > 1) {
|
|
uni.navigateBack({
|
|
delta: Number(delta || 1)
|
|
})
|
|
} else {
|
|
this.$navTo('pages/index/index')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.login {
|
|
width: 100%;
|
|
background: #fffafb url(https://www.royaum.com.cn/static/news/login-bg.png) center top no-repeat;
|
|
background-size: 100% auto;
|
|
min-height: 100vh;
|
|
|
|
&-hd {
|
|
padding: 90rpx 75rpx 75rpx;
|
|
overflow: hidden;
|
|
|
|
.a {
|
|
line-height: 80rpx;
|
|
font-size: 40rpx;
|
|
font-weight: 500;
|
|
color: #000000;
|
|
}
|
|
|
|
.b {
|
|
font-size: 28rpx;
|
|
font-weight: 400;
|
|
color: #5A5A5A;
|
|
line-height: 50rpx;
|
|
}
|
|
}
|
|
|
|
&-bd {
|
|
padding: 0 75rpx;
|
|
overflow: hidden;
|
|
|
|
.a {
|
|
padding: 20rpx 0;
|
|
border-bottom: 1px solid #F2F2F2;
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 32rpx;
|
|
font-weight: 400;
|
|
color: #212121;
|
|
|
|
input {
|
|
flex: 1;
|
|
margin-left: 30rpx;
|
|
line-height: 50rpx;
|
|
border-left: 1px solid #C4C4C4;
|
|
padding-left: 30rpx;
|
|
font-size: 28rpx;
|
|
color: #212121;
|
|
}
|
|
}
|
|
|
|
.b {
|
|
padding: 30rpx 0;
|
|
border-bottom: 1px solid #F2F2F2;
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 28rpx;
|
|
font-weight: 400;
|
|
color: #F3202A;
|
|
|
|
input {
|
|
flex: 1;
|
|
margin-right: 30rpx;
|
|
line-height: 50rpx;
|
|
font-size: 28rpx;
|
|
color: #212121;
|
|
}
|
|
}
|
|
|
|
.c {
|
|
padding: 28rpx 0;
|
|
font-size: 28rpx;
|
|
font-weight: 400;
|
|
color: #A0A0A0;
|
|
|
|
text {
|
|
color: #FF343C;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-fd {
|
|
width: 680rpx;
|
|
line-height: 88rpx;
|
|
background: #FFBDBA;
|
|
border-radius: 88rpx;
|
|
text-align: center;
|
|
margin: 0 auto;
|
|
margin-top: 120rpx;
|
|
font-size: 28rpx;
|
|
font-weight: 600;
|
|
color: #FFFFFF;
|
|
|
|
&-on {
|
|
background-color: #FF343C;
|
|
}
|
|
}
|
|
}
|
|
</style> |