Files
ysdH5/pages/campus/register.vue
2023-06-21 17:19:58 +08:00

239 lines
6.1 KiB
Vue

<template>
<view class="content">
<view class="campus-header">
<view class="logo">
<image src="@/static/img/campusLogin_logo.png" mode="aspectFill"></image>
<view class="title">用户注册</view>
</view>
<image class="cover" src="@/static/img/campusLogin_back_01.png" mode="aspectFill"></image>
</view>
<view class="campus-cont">
<form @submit="submitRegister">
<view class="campus-inputs">
<input class="campus-form-input" type="number" placeholder="请输入手机号" @input="getNameValue"
name="mobile"></input>
</view>
<view class="campus-inputs inputs-code">
<input class="campus-form-input" type="number" placeholder="请输入验证码" @input="getCodeValue" maxlength="4"></input>
<button class="campus-form-code" @tap="getCode" :disabled="disabled" hover-class="none">{{ codename }}</button>
</view>
<view class="campus-inputs">
<input class="campus-form-input" type="password" placeholder="请输入密码" name="password"></input>
</view>
<view class="campus-inputs">
<input class="campus-form-input" type="password" placeholder="请确认密码" name="password_confirmation"></input>
</view>
<button class="campus-form-btn" form-type="submit">注册</button>
</form>
</view>
</view>
</template>
<script>
import { send, register } from '@/apis/interfaces/auth'
export default {
data() {
return {
codename : '获取验证码',
mobileNo : '', // 手机号
code : '', // 验证码
disabled : false,
}
},
methods: {
// mobileNo
getNameValue(e) {
this.mobileNo = e.detail.value
},
// 获取code
getCode(){
let mobileNo = this.mobileNo
var _this = this
if (mobileNo == "") {
uni.showToast({
title : '手机号不能为空',
icon : 'none',
duration : 1000
})
return false;
}else{
send({mobile: mobileNo, channel: 'LOGIN'}).then(res=>{
uni.showToast({
title : '发送成功',
icon : 'success',
duration: 2000
})
var num = 61;
var timer = setInterval(function () {
num--;
if (num <= 0) {
clearInterval(timer);
_this.codename = '重新发送'
_this.disabled = false
} else {
_this.codename = num + "s后重新获取"
_this.disabled = true
}
}, 1000)
}).catch(err=>{
uni.showToast({
title : err.message,
icon :'none',
duration: 2000
})
})
}
},
// 获取后输入code
getCodeValue (e) {
this.code = e.detail.value
},
// 立即登录
submitRegister(e){
let formValue = e.detail.value
register({
mobile : formValue.mobile,
password : formValue.password,
password_confirmation : formValue.password_confirmation,
code : this.code,
parent_id : 0
}).then(res => {
this.$store.commit('setToken', res.token)
uni.showModal({
title : "提示",
content : "注册成功",
showCancel : false,
confirmText : "确定",
success : modalRes => {
if(modalRes.confirm){
uni.reLaunch({
url: '/pages/campus/index'
})
}
}
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss">
.content{
min-height: 100vh;
background-image: linear-gradient(to top right, #cbaf7f, #fcf4cb);
}
.campus-cont{
padding: 40rpx 60rpx;
.campus-inputs{
position: relative;
padding-left: 30rpx;
padding-right: 30rpx;
background-image: linear-gradient(to right, #575a85, #252f4b);
height: 90rpx;
line-height: 90rpx;
border-radius: 45rpx;
margin-bottom: 30rpx;
&.inputs-code{
padding-right: 280rpx;
.campus-form-code{
width: 260rpx;
position: absolute;
top: 0;
right: 0;
padding: 0;
margin: 0;
background-color: transparent;
font-size: 30rpx;
height: 90rpx;
line-height: 90rpx;
color: white;
&::after{
border: none;
}
&[disabled]{
color: rgba($color: white, $alpha: .5);
}
}
}
}
.campus-form-icon{
position: absolute;
left: 26rpx;
top: 26rpx;
width: 38rpx;
height: 38rpx;
}
.campus-form-input{
height: 90rpx;
color: white;
font-size: 32rpx;
}
.campus-form-btn{
margin-top: 100rpx;
width: 100%;
height: 90rpx;
line-height: 90rpx;
padding: 0;
border-radius: 45rpx;
background-image: linear-gradient(to right, #575a85, #252f4b);
font-size: 32rpx;
color: white;
}
.login-box{
display: flex;
justify-content: space-between;
font-size: 30rpx;
margin-top: 100rpx;
view{
color: #28314e;
}
}
}
.campus-header{
width: 100%;
padding-top: 70%;
position: relative;
.cover{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
}
.logo{
position: absolute;
bottom: 80rpx;
width: 100%;
z-index: 2;
text-align: center;
image{
margin-top: 20%;
width: 160rpx;
height: 160rpx;
vertical-align: top;
margin-bottom: 30rpx;
}
.title{
font-weight: bold;
color: white;
font-size: 40rpx;
}
}
}
</style>