Files
XiaoLingHou_web/pages/register/register.vue
2023-12-29 00:08:10 +08:00

355 lines
8.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<!-- <u-navbar :autoBack="true" bgColor="#fff0e7" title="登录"></u-navbar> -->
<view class="top-background-raduis">智能寄信</view>
<view class="login-box">
<view class="login-card-title">
<view class="login-card-title-content">
手机号注册
</view>
</view>
<view class="login-card-input login-card-input-account"
v-if="loginPattern==='forgotPassword'||loginPattern==='captchaLogin'">
<!-- 输入框头部图标 -->
<u--input class="hj-input" v-model="captchaInfo.mobile" focus maxlength="30" :trim="true"
@focus="UserNamePassWrodFocusBorderStyle" :styles="inputColorConfigToUserName"
@blur="UserNamePassWrodBlurBorderStyle" placeholder="请输入手机号"></u--input>
<view class="hj-input" style="display: flex;justify-content: center;"
v-if="$isPhoneNumber(captchaInfo.mobile)">
<u-code-input :disabledKeyboard="!$isPhoneNumber(captchaInfo.mobile)" :maxlength="4"
v-model="captchaInfo.captcha"></u-code-input>
<view style="margin-left: 10rpx;">
<u-toast ref="uToast"></u-toast>
<u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
<u-button @tap="getCode">{{captchaButtonText}}</u-button>
</view>
</view>
</view>
<view class="login-card-loginIn" @click="submitLoginData"
v-if="$isPhoneNumber(captchaInfo.mobile)&&captchaInfo.captcha.length===4">
<view class="login-card-loginIn-btn">
注册
</view>
</view>
<view class="login-bottom-info">
<view class="info-item" @click="toLogin" >
返回登陆
</view>
</view>
</view>
<view class="bottom-message">
登录/注册 代表你已同意用户使用协议
</view>
<view class="top-background-raduis-bootom"></view>
</view>
</template>
<script>
import {
userLogin,
phonenumberLogin,
sendVerifyCode,
retrievePassword
} from '@/request/api.js'
export default {
data() {
return {
// 输入框边框颜色默认值
colorDefault: '#b4b4b4',
// 输入框边框聚焦值
colorFocusColor: '#3cb79a',
// 输入框颜色配置
inputColorConfigToUserName: {
color: "#000000",
disableColor: "#eee",
borderColor: "#b4b4b4",
},
// 输入框颜色配置
inputColorConfigToPassWord: {
color: "#000000",
disableColor: "#eee",
borderColor: "#b4b4b4",
},
value: "",
userInfo: {
account: '',
password: ''
},
captchaInfo: {
mobile: '',
captcha: '',
},
forgotPasswordInfo: {
mobile: '',
captcha: '',
newpassword: ''
},
// registerInfo: {
// }
showCaptchInput: false,
seconds: 60,
captchaButtonText: '获取验证码',
loginPattern: 'captchaLogin', //userLogin captchaLogin forgotPassword
};
},
onLoad() {},
//监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object用于页面传参触发时机早于 onLoad
onInit() {},
//监听页面加载,其参数为上个页面传递的数据,参数类型为 Object用于页面传参
//监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
async onReady() {
// #ifdef H5
if (await this.$isWechat()) {
console.log('当前登录环境微信H5');
if (this.$getUrlParams('code')) {
this.$wechatloginAfter(this.$getUrlParams('code'))
return
} else if (uni.getStorageSync('token')) {
uni.navigateTo({
url: '/'
})
return
} else {
this.$login()
}
} else {
console.log('当前登录环境普通H5');
}
// #endif
//
// #ifdef MP-WEIXIN
console.log('当前登录环境:微信')
this.$login()
// #endif
},
//监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
beforeDestroy() {},
//页面滚动到底部的事件不是scroll-view滚到底常用于下拉下一页数据。
onReachBottom() {},
onShareAppMessage() {},
created() {},
methods: {
toLogin(){
uni.navigateTo({
url:'/pages/login/login'
})
},
async getCode() {
try {
if (this.$refs.uCode.canGetCode) {
uni.showLoading({
title: '正在获取验证码'
})
let {
data
} = await sendVerifyCode({
mobile: this.captchaInfo.mobile,
event:'register'
})
this.$refs.uCode.start();
} else {
uni.$u.toast('倒计时结束后再发送');
}
} catch (e) {
console.log(e);
}
},
toRegister() {
uni.navigateTo({
url: 'pages/register/register'
})
},
async submitLoginData() {
// loginPattern: 'userLogin', // captchaLogin forgotPassword
try {
let {
data
} = await phonenumberLogin(this.captchaInfo)
if (!data.code) throw (data.msg)
res = data.data
uni.setStorageSync('userInfo', res.userinfo)
uni.setStorageSync('token', res.userinfo.token)
uni.redirectTo({
url: '/pages/index/index'
})
} catch (e) {
uni.$u.toast(e);
console.log(e);
}
// console.log(data);
},
codeChange(text) {
this.captchaButtonText = text
},
end() {
// uni.$u.toast('倒计时结束');
},
start() {
uni.$u.toast('验证码发送成功');
},
// 输入框聚焦变换边框样式
UserNamePassWrodFocusBorderStyle() {
this.inputColorConfigToUserName.borderColor = this.colorFocusColor;
},
PassWordFocusBorderStyle() {
this.inputColorConfigToPassWord.borderColor = this.colorFocusColor;
},
// 输入框失去焦点变换边框样式
UserNamePassWrodBlurBorderStyle() {
this.inputColorConfigToUserName.borderColor = this.colorDefault;
},
PassWordBlurBorderStyle() {
this.inputColorConfigToPassWord.borderColor = this.colorDefault;
},
},
};
</script>
<style lang="scss" scoped>
* {
box-sizing: border-box;
}
uni-page-body {
padding: 0 0 0 0 !important;
}
.page {
position: relative;
height: 100vh;
}
.top-background-raduis {
height: 30%;
background-color: #3cb79a;
padding-top: 100rpx;
display: flex;
align-items: flex-start;
color: white;
font-weight: bold;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;
font-size: 50rpx;
// background-image: url(/static/01banner.png);
background-size: 100% cover;
justify-content: center;
// background-color: #ffd0b1;
// border-bottom-left-radius: 50%;
// border-bottom-right-radius: 50%;
border-radius: 0 0 0 100%;
}
.top-background-raduis-bootom {
height: 500rpx;
border-radius: 0 100% 0 0;
width: 100%;
// border-top-left-radius: 50%;
// border-top-right-radius: 50%;
background-color: #3cb79a;
position: fixed;
bottom: 0;
}
/deep/ .is-input-border {
border-radius: 7px !important;
}
/deep/ .uni-easyinput__content {
min-height: 39px !important;
}
.hj-input {
margin-bottom: 20rpx;
margin-top: 15rpx;
}
.hj-input:nth-child(2) {
margin-top: 35rpx;
}
.login-box {
top: 20%;
position: absolute;
width: 80%;
left: 10%;
right: 10%;
max-height: 650rpx;
padding: 30rpx;
background-color: white;
border-radius: 40rpx;
box-shadow: 9px 9px 6px #e3e3e3;
z-index: 1;
.login-card-input {
// background-color: violet;
// height: 50%;
padding: 5rpx;
}
.login-card-title {
height: 20%;
// background-color: black;
padding: 10rpx;
display: flex;
justify-content: center;
.login-card-title-content {
font-size: 1.2em;
color: #3cb79a;
border-bottom: 3px solid #3cb79a;
}
}
.login-card-loginIn {
height: 110rpx;
display: flex;
justify-content: center;
padding: 10rpx;
align-items: center;
.login-card-loginIn-btn {
display: flex;
align-items: center;
justify-content: center;
background-color: #3cb79a;
width: 100%;
font-size: 1.2em;
height: 70rpx;
border-radius: 40rpx;
color: white;
}
}
.login-bottom-info {
height: 50rpx;
display: flex;
font-size: 20rpx;
color: #3cb79a;
justify-content: center;
align-items: center;
}
.info-item {
margin-left: 30rpx;
}
}
.bottom-message {
position: absolute;
height: 70rpx;
display: flex;
z-index: 99;
width: 100%;
justify-content: center;
align-items: center;
font-size: 20rpx;
overflow: hidden;
color: white;
bottom: 80rpx;
}
</style>