YNEduApp/pages/login/login.vue

313 lines
7.2 KiB
Vue

<template>
<view class="page">
<view class="upper-bgd">
<view class="inner-tit">考试培训</view>
</view>
<view class="lower-form">
<view class="choose-form">
<text
v-for="(item, index) in formBox"
:key="item.id"
:class="[ 'form-box', { active: formCount === item.id } ]"
@click="chooseForm(item.id)"
>
{{ item.text }}
</text>
</view>
<view
class="pwd-form"
v-show="formCount === 0"
>
<uni-forms
:modelValue="pwdForm"
ref="uPwdForm"
:rules="pwdRules"
>
<uni-forms-item name="username">
<uni-easyinput type="text" v-model="pwdForm.username" placeholder="请输入用户名" />
</uni-forms-item>
<uni-forms-item name="password">
<uni-easyinput type="password" v-model="pwdForm.password" placeholder="请输入密码" />
</uni-forms-item>
<text
style="width: 100%; font-size: 14px; display: flex; justify-content: right; color: #469FF9;"
>忘记密码?</text>
<view
class="log-btn"
@click="subPwdForm"
>
登录
</view>
</uni-forms>
</view>
<view
class="code-form"
v-show="formCount === 1"
>
<uni-forms
:modelValue="codeForm"
ref="uCodeForm"
:rules="codeRules"
>
<uni-forms-item name="phone">
<uni-easyinput placeholder="请输入手机号码" type="number" v-model="codeForm.phone"
maxlength="11"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="code">
<uni-easyinput type="number" maxlength="6" placeholder="请输入验证码"
v-model="codeForm.code"></uni-easyinput>
<button class="count-down" :disabled="sendDisabled" @click="sendVeriCode" style="font-size: 14px;">
<span v-if="countDownStatus === 0">发送验证码</span>
<span v-if="countDownStatus === 1">
{{ countDown }}s
</span>
</button>
</uni-forms-item>
<view
class="log-btn"
@click="subCodeForm"
>
登录
</view>
</uni-forms>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
formCount: 0,
formBox: [
{ text: '密码登录', id: 0 },
{ text: '验证码登录', id: 1 }
],
pwdForm: {
username: '',
password: ''
},
pwdRules: {
username: {
rules: [{
required: true,
errorMessage: '请输入用户名!',
}]
},
password: {
rules: [{
required: true,
errorMessage: '请输入密码!',
}]
},
},
codeForm: {
phone: '',
code: ''
},
codeRules: {
phone: {
rules: [{
required: true,
errorMessage: '请输入手机号!',
}]
},
code: {
rules: [{
required: true,
errorMessage: '请输入验证码!',
}]
},
},
sendDisabled: false,
countDown: 60,
countDownStatus: 0,
}
},
methods: {
chooseForm(count) {
this.formCount = count
},
subPwdForm() {
this.$refs.uPwdForm.validate().then(pwdForm => {
console.log(pwdForm)
uni.showToast({
icon: 'none',
title: '登录成功!',
success: () => {
uni.switchTab({
url: '/pages/index/index'
})
}
})
})
},
subCodeForm() {
this.$refs.uCodeForm.validate().then(codeForm => {
console.log(codeForm)
/*uni.switchTab({
url: '/pages/index/index'
})*/
})
},
sendVeriCode() {
let that = this
let phoneReg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
if (!phoneReg.test(that.codeForm.phone)) {
uni.showToast({
icon: 'none',
title: '请输入正确格式的手机号!'
})
} else {
/*that.$api.login.codeLogin({
phone: String(that.veriFormData.phone)
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})*/
that.countDownStatus = 1
that.sendDisabled = true
let timeInterval = setInterval(() => {
that.countDown -= 1
}, 1000)
let timeOut = setTimeout(() => {
that.countDownStatus = 0
that.countDown = 60
that.sendDisabled = false
clearInterval(timeInterval)
clearTimeout(timeOut)
}, 1000 * 60)
}
},
},
/*onReady() {
// 需要在onReady中设置规则
this.$refs.uPwdForm.setRules(this.pwdRules)
this.$refs.uCodeForm.setRules(this.codeRules)
},*/
}
</script>
<style lang="scss">
.page{
width: 100vw;
height: 100vh;
background-color: #F8F8F8;
display: flex;
flex-direction: column;
.upper-bgd{
width: 100%;
height: 30vh;
background: url("/static/login-bgd.png");
background-size: 100% 100%;
background-repeat: no-repeat;
position: relative;
.inner-tit{
position: absolute;
top: 12vh;
left: 10vw;
font-size: 36px;
color: #fff;
}
}
.lower-form{
flex: 1;
box-sizing: border-box;
padding: 15vw;
display: flex;
flex-direction: column;
.choose-form{
width: 100%;
display: flex;
justify-content: space-around;
align-items: center;
margin-bottom: 3vh;
.form-box{
position: relative;
&.active{
color: #1989FA;
&::before{
content: '';
box-sizing: border-box;
width: 20%;
height: 0;
position: absolute;
bottom: 0;
left: 40%;
border: 2px solid #1989FA;
border-radius: 15px;
}
}
}
text{
width: 50%;
box-sizing: border-box;
font-size: 16px;
padding: 1vh;
color: #747474;
background-color: transparent;
display: flex;
justify-content: center;
align-items: center;
}
}
.pwd-form, .code-form{
width: 100%;
height: 30vh;
.log-btn{
width: 100%;
margin-top: 8vh;
display: flex;
font-size: 18px;
justify-content: center;
align-items: center;
background-color: #1989FA;
color: #fff;
padding: 1.5vh 0;
border-radius: 30px;
}
.uni-forms-item__content[data-v-61dfc0d0] {
display: flex;
}
}
}
}
</style>