10 changed files with 210 additions and 55 deletions
@ -0,0 +1,14 @@ |
|||||
|
.block { |
||||
|
border-radius: 8px; |
||||
|
overflow: hidden; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
/deep/ .van-cell__title { |
||||
|
width: 6.2em; |
||||
|
flex: 0 0 6.2em; |
||||
|
margin-right: 12px |
||||
|
} |
||||
|
.gender { |
||||
|
display: flex; |
||||
|
} |
@ -0,0 +1,98 @@ |
|||||
|
<template> |
||||
|
<div class="container"> |
||||
|
<div class="block"> |
||||
|
<van-field v-model="phone" label="手机号" placeholder="请输入" required /> |
||||
|
<van-field v-model="smsCode" label="验证码" placeholder="请输入" required> |
||||
|
<template #button> |
||||
|
<van-button v-if="time === 60" round size="mini" type="info" @click="getCode">获取验证码</van-button> |
||||
|
<van-button v-else disabled round size="mini" type="info">{{ time }}s后重试</van-button> |
||||
|
</template> |
||||
|
</van-field> |
||||
|
</div> |
||||
|
<van-button block color="linear-gradient(to right, #81B5FB, #3E92FF)" round @click="submit">注册</van-button> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { register, sendsmscode } from '@/api/user' |
||||
|
|
||||
|
var leftTime |
||||
|
export default { |
||||
|
name: 'userInfo', |
||||
|
data() { |
||||
|
return { |
||||
|
form: {}, |
||||
|
time: 60, |
||||
|
userInfo: {}, |
||||
|
phone: '', |
||||
|
smsCode: '', |
||||
|
surName: '', |
||||
|
gender: '', |
||||
|
userId: '' |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
mounted() { |
||||
|
this.init() |
||||
|
}, |
||||
|
destroyed() { |
||||
|
clearInterval(leftTime) |
||||
|
}, |
||||
|
methods: { |
||||
|
init() { |
||||
|
this.type = this.$route.params.type ? this.$route.params.type : '' |
||||
|
this.userInfo = this.$store.state.app.userInfo |
||||
|
this.gender = this.userInfo.gender |
||||
|
this.surName = this.userInfo.realName || this.userInfo.nickname |
||||
|
}, |
||||
|
submit() { |
||||
|
let params = { |
||||
|
phone: this.phone, |
||||
|
smsCode: this.smsCode, |
||||
|
surName: this.surName, |
||||
|
appid: this.$store.state.app.appId |
||||
|
} |
||||
|
if (!params.phone) { |
||||
|
this.$toast.fail('请输入手机号') |
||||
|
return |
||||
|
} |
||||
|
if (!params.smsCode) { |
||||
|
this.$toast.fail('请输入验证码') |
||||
|
return |
||||
|
} |
||||
|
register(params).then(res => { |
||||
|
localStorage.setItem('token', res.token) |
||||
|
this.$toast.success('登录成功') |
||||
|
let path = '/' |
||||
|
this.$router.replace(path) |
||||
|
}) |
||||
|
}, |
||||
|
getCode() { |
||||
|
if (!this.phone) { |
||||
|
this.$toast.fail('请输入手机号') |
||||
|
return false |
||||
|
} |
||||
|
if (!/1[3456789]\d{9}/.test(this.phone)) { |
||||
|
this.$toast.fail('手机号格式错误') |
||||
|
return false |
||||
|
} |
||||
|
sendsmscode({ |
||||
|
phone: this.phone |
||||
|
}).then(() => { |
||||
|
leftTime = setInterval(() => { |
||||
|
if (this.time > 0) { |
||||
|
this.time-- |
||||
|
} else { |
||||
|
this.time = 60 |
||||
|
clearInterval(leftTime) |
||||
|
} |
||||
|
}, 1000) |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
@import './index'; |
||||
|
</style> |
Loading…
Reference in new issue