7 changed files with 189 additions and 22 deletions
@ -0,0 +1,142 @@ |
|||
<template> |
|||
<view class="register"> |
|||
<view class="title">用户注册</view> |
|||
<uni-forms class="form" :modelValue="dataForm" :rules="rules" validate-trigger="bind" label-width="80px"> |
|||
<uni-forms-item name="userName" label="用户名"> |
|||
<uni-easyinput type="text" v-model="dataForm.userName" placeholder="用户名" /> |
|||
</uni-forms-item> |
|||
<uni-forms-item name="nickName" label="昵称"> |
|||
<uni-easyinput type="text" v-model="dataForm.nickName" placeholder="昵称" /> |
|||
</uni-forms-item> |
|||
<uni-forms-item name="password" label="密码"> |
|||
<uni-easyinput type="password" v-model="dataForm.password" placeholder="密码" /> |
|||
</uni-forms-item> |
|||
<uni-forms-item name="corfirmPassword" label="确认密码"> |
|||
<uni-easyinput type="password" v-model="dataForm.corfirmPassword" placeholder="确认密码" /> |
|||
</uni-forms-item> |
|||
<button class="btn-submit" @click="submit" type="warn">注册并登陆</button> |
|||
</uni-forms> |
|||
<navigator class="nav-login" url="/pages/login/login" render-link="true" hover-class="other-navigator-hover"> |
|||
返回登陆页面 |
|||
</navigator> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
dataForm: { |
|||
userName: '', |
|||
nickName: '', |
|||
password: '', |
|||
corfirmPassword: '' |
|||
}, |
|||
rules: { |
|||
userName: { |
|||
rules: [{ |
|||
required: true, |
|||
errorMessage: '请输入用户名', |
|||
}] |
|||
}, |
|||
nickName: { |
|||
rules: [{ |
|||
required: true, |
|||
errorMessage: '请输入昵称', |
|||
}] |
|||
}, |
|||
password: { |
|||
rules: [{ |
|||
required: true, |
|||
errorMessage: '请输入密码', |
|||
}] |
|||
}, |
|||
corfirmPassword: { |
|||
rules: [{ |
|||
required: true, |
|||
errorMessage: '请输入确认密码', |
|||
}, { |
|||
validateFunction: (rule, value, data, callback) => { |
|||
console.log("validateFunction") |
|||
if (data.password != value) { |
|||
callback('两次密码输入不一致') |
|||
} |
|||
return true; |
|||
} |
|||
}] |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
submit() { |
|||
this.$http({ |
|||
url: '/register', |
|||
data: this.dataForm, |
|||
method: 'POST' |
|||
}).then(() => { |
|||
uni.showToast({ |
|||
title: "注册成功", |
|||
icon: 'none' |
|||
}) |
|||
this.login(); |
|||
}) |
|||
}, |
|||
login() { |
|||
const loginForm = { |
|||
terminal: this.$enums.TERMINAL_TYPE.APP, |
|||
userName: this.dataForm.userName, |
|||
password: this.dataForm.password |
|||
} |
|||
this.$http({ |
|||
url: '/login', |
|||
data: loginForm, |
|||
method: 'POST' |
|||
}).then((loginInfo) => { |
|||
console.log("登录成功,自动跳转到聊天页面...") |
|||
uni.setStorageSync("userName", loginForm.userName); |
|||
uni.setStorageSync("password", loginForm.password); |
|||
loginInfo.expireTime = new Date().getTime() + loginInfo.refreshTokenExpiresIn * 1000; |
|||
uni.setStorageSync("loginInfo", loginInfo); |
|||
// 调用App.vue的初始化方法 |
|||
getApp().init() |
|||
// 跳转到聊天页面 |
|||
uni.switchTab({ |
|||
url: "/pages/chat/chat" |
|||
}) |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.register { |
|||
.title { |
|||
padding-top: 150rpx; |
|||
padding-bottom: 100rpx; |
|||
color: royalblue; |
|||
text-align: center; |
|||
font-size: 60rpx; |
|||
font-weight: 600; |
|||
} |
|||
|
|||
.form { |
|||
padding: 50rpx; |
|||
|
|||
.btn-submit { |
|||
margin-top: 80rpx; |
|||
border-radius: 50rpx; |
|||
} |
|||
} |
|||
|
|||
.nav-login { |
|||
position: fixed; |
|||
width: 100%; |
|||
bottom: 100rpx; |
|||
color: royalblue; |
|||
text-align: center; |
|||
font-size: 32rpx; |
|||
} |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue