This commit is contained in:
dute7liang
2023-12-19 22:23:45 +08:00
commit 97daeafbe7
117 changed files with 19926 additions and 0 deletions

View File

@@ -0,0 +1,180 @@
<template>
<j-nav-bar :placeholder="false" color="#FFF" nav-bar-background="#ffffff00"/>
<div class="content">
<j-gap height="50" background="#F9BF3A" opacity="0"/>
<div class="slogan">
<div class="slogan-1">注册</div>
</div>
<div class="input-box">
<!-- 允许输入数字调起带符号的纯数字键盘 -->
<van-field
v-model="loginData.phoneNumber"
class="login-btn"
label="手机号码"
placeholder="请输入手机号码"
type="tel"
/>
<van-field
v-model="loginData.code"
class="login-btn"
label="验证码"
placeholder="请输入验证码"
type="number"
>
<template #button>
<div class="password-btn">
<van-count-down v-show="countDownFlag" ref="countDown" :auto-start="false" :time="time" @finish="onFinish">
<template #default="timeData">
<span class="block">{{ timeData.seconds }}</span>
</template>
</van-count-down>
<div v-show="!countDownFlag" style="color: #bc7c1c" @click="start">发送验证码</div>
</div>
</template>
</van-field>
<!-- 允许输入数字调起带符号的纯数字键盘 -->
<van-field
v-model="loginData.password"
class="login-btn"
label="登录密码"
placeholder="请设置6-16位密码"
type="text"
/>
</div>
<van-button
:disabled="!loginData.password || !loginData.phoneNumber"
color="linear-gradient(to right, #D2A64C, #F9D88D)"
round
style="width: 100%; margin: 20px 0"
@click.stop="registerBtn"
>
注册
</van-button>
<view class="op">
<view class="register" @click="goLogin">登录</view>
</view>
</div>
</template>
<script lang="ts" setup>
import {reactive, ref} from "vue";
import {showToast} from "vant";
import {useRouter} from "vue-router";
import {register, sendSmsRegister} from "@/api/login";
import {useUserStore} from "@/store/modules/user";
const router = useRouter()
const userStore = useUserStore()
const loginData = reactive({
phone: null,
phoneNumber: '',
code: null,
password: '',
loginRole: 5,
openId: '',
ticket: null,
randStr: null
})
const time = ref(60 * 1000);
const countDown = ref();
const countDownFlag = ref(false);
const start = () => {
if (loginData.phoneNumber) {
countDown.value.start();
countDownFlag.value = true
sendSmsRegister({
phoneNumber: loginData.phoneNumber
}).then(res => {
console.log(res)
loginData.code = res
onFinish()
})
} else {
showToast('请输入手机号')
}
};
const registerBtn = () => {
register(loginData).then(res => {
// goLogin()
userStore.login({
mobile: loginData.phoneNumber,
password: loginData.password
}).then(res => {
router.replace('/home')
}, err => {
router.replace('/home')
})
})
}
const goLogin = () => {
router.back()
}
const onFinish = () => {
countDownFlag.value = false
countDown.value.reset();
}
</script>
<style lang="scss" scoped>
.content {
padding: 0 20px;
background-image: linear-gradient(to bottom, #F9BF3A, #ffffff, #ffffff, #ffffff, #ffffff);
height: 100vh;
.slogan {
padding-top: 168px;
.slogan-1 {
font-size: 70px;
color: #3f3f3f;
}
.slogan-2 {
font-weight: 400;
font-size: 32px;
color: #333333;
}
}
.input-box {
margin-top: 40px;
padding: 20px 0 10px 0;
background: #fff;
border-radius: 20px;
box-shadow: 0px 0px 7px -3px #b4b3b3;
.login-btn {
margin-bottom: 40px;
background: #12332100;
}
.password-btn {
border-left: 1px solid #CCCCCC;
padding-left: 20px;
}
}
.op {
display: flex;
justify-content: space-between;
color: #666;
}
}
</style>