Browse Source

添加登录逻辑

master
j1ack 3 years ago
parent
commit
8efb1241a1
  1. 13
      pages.json
  2. 68
      pages/login/forget.vue
  3. 30
      pages/login/index.vue
  4. 143
      pages/login/register.vue
  5. 7
      utils/language/en_US.js

13
pages.json

@ -3,34 +3,35 @@
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pages
//
//
{
"path": "pages/home/index",
"path": "pages/login/index",
"style": {
"navigationStyle": "custom"
}
},
//
{
"path": "pages/login/index",
"path": "pages/login/forget",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/login/forget",
"path": "pages/login/register",
"style": {
"navigationStyle": "custom"
}
},
//
{
"path": "pages/login/register",
"path": "pages/home/index",
"style": {
"navigationStyle": "custom"
}
},
// markets
{
"path": "pages/markets/index",

68
pages/login/forget.vue

@ -13,14 +13,17 @@
</u-input>
</u-form-item>
<!-- 验证码 -->
<u-form-item class="input-item vCode" prop="verificationCode" ref="item1">
<u-form-item class="input-item vCode" prop="code" ref="item1">
<u-icon class="icon"
:name="userInfo.verificationCode ? '../../static/login/code_pr.png' : '../../static/login/code_de.png'"
:name="userInfo.code ? '../../static/login/code_pr.png' : '../../static/login/code_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.verificationCode" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.registerWelcomeText" maxlength="6">
<u-input class="input" v-model="userInfo.code" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.registerWelcomeText" maxlength="6">
</u-input>
<u-button class="getVCodeBtn" color="#323045">Get code</u-button>
<u-code startText="Get code" :seconds="seconds" ref="uCode" keep-running unique-key="login"
@change="codeChange">
</u-code>
<u-button class="getVCodeBtn" color="#323045" @tap="getCode">{{tips}}</u-button>
</u-form-item>
<!-- 密码 -->
<u-form-item class="input-item" prop="password" ref="item1">
@ -56,6 +59,11 @@ export default {
name: "ForgotPassword",
data() {
return {
//
tips: '',
seconds: 60,
//
isCanGetCode: false,
userInfo: {
name: "",
password: "",
@ -67,7 +75,7 @@ export default {
message: this.$t("login.emailInputMessage"),
trigger: ["blur", "change"],
},
verificationCode: {
code: {
type: "string",
required: true,
message: this.$t("login.verificationCodeMessage"),
@ -88,11 +96,57 @@ export default {
return this.$t("login");
},
},
watch: {
'userInfo.email': {
handler(newValue) {
this.isCanGetCode = uni.$u.test.email(newValue);
}
}
},
onLoad() {
// console.log(this.$t('login.emailInputMessage'));
},
onShow() { },
methods: {},
methods: {
//
codeChange(text) {
this.tips = text;
},
//
getCode() {
if (!this.userInfo.email) {
uni.$u.toast(this.$t("login.Emailempty"))
return
}
if (!this.isCanGetCode) {
uni.$u.toast(this.$t("login.Emailincorrect"))
return
}
if (this.$refs.uCode.canGetCode) {
const data = {
email: this.userInfo.email,
type: 0,
}
//
uni.showLoading({
title: this.$t("login.GettingVerificationCode")
})
this.$api.sendEmailCode(data).then(res => {
if (res.code === 200) {
uni.hideLoading();
// this.start()
uni.$u.toast(this.$t("login.CodeHasSent"));
//
this.$refs.uCode.start();
} else {
uni.$u.toast(res.msg)
}
})
} else {
uni.$u.toast(this.$t("login.SendAfter"));
}
},
},
components: { UButton }
}
</script>

30
pages/login/index.vue

@ -2,7 +2,7 @@
<view class="main">
<view class="welcomeText">{{ i18n.welcomeText }}</view>
<view class="signInText">{{ i18n.signInText }}</view>
<u--form class="form" :model="userInfo" :rules="rules" ref="form1" errorType="toast">
<u--form class="form" :model="userInfo" :rules="rules" ref="uForm" errorType="toast">
<u-form-item class="input-item" prop="email" ref="item1">
<u-icon class="icon"
:name="userInfo.email ? '../../static/login/email_pr.png' : '../../static/login/email_de.png'"
@ -15,14 +15,15 @@
<u-icon class="icon"
:name="userInfo.password ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.passwordInputText">
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.passwordInputText">
</u-input>
</u-form-item>
</u--form>
<navigator class="forget" url="./forget">{{ i18n.forgotText }}</navigator>
<u-button class="button" color="#00E8A2">{{ i18n.Login }}</u-button>
<view class="signUp">{{ i18n.notAccountText }}<navigator class="navigator" url="./register">{{ i18n.SignUp }}
<view class="signUp" @click.native="$u.throttle(login, 500)">{{ i18n.notAccountText }}
<navigator class="navigator" url="./register">{{ i18n.SignUp }}
</navigator>
</view>
@ -64,7 +65,28 @@ export default {
},
onShow() {},
methods: {
//
login() {
this.$refs.uForm.validate().then(res => {
this.$api.login(this.userInfo).then(res => {
if (res.errCode === 'SUCCESS') {
setTimeout(() => {
uni.showToast({
title: this.$t("login.loginSuccess")
})
}, 600)
uni.switchTab({
url: '/pages/home/index'
})
} else {
uni.$u.toast(res.msg)
}
})
}).catch(errors => {
console.log('err')
})
},
},
}

143
pages/login/register.vue

@ -4,7 +4,7 @@
<view class="body">
<view class="welcomeText">{{ i18n.registerWelcomeText }}</view>
<view class="signInText">{{ i18n.registerCreate }}</view>
<u--form class="form" :model="userInfo" :rules="rules" ref="form1" errorType="toast">
<u--form class="form" :model="userInfo" :rules="rules" ref="uForm" errorType="toast">
<!-- 邮箱 -->
<u-form-item class="input-item" prop="email" ref="item1">
<u-icon class="icon"
@ -15,22 +15,26 @@
</u-input>
</u-form-item>
<!-- 验证码 -->
<u-form-item class="input-item vCode" prop="verificationCode" ref="item1">
<u-form-item class="input-item vCode" prop="code" ref="item1">
<u-icon class="icon"
:name="userInfo.verificationCode ? '../../static/login/code_pr.png' : '../../static/login/code_de.png'"
:name="userInfo.code ? '../../static/login/code_pr.png' : '../../static/login/code_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.verificationCode" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.registerWelcomeText" maxlength="6">
<u-input class="input" v-model="userInfo.code" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.registerWelcomeText" maxlength="6">
</u-input>
<u-button class="getVCodeBtn" color="#323045">Get code</u-button>
<u-code startText="Get code" :seconds="seconds" ref="uCode" keep-running unique-key="login"
@change="codeChange">
</u-code>
<u-button class="getVCodeBtn" color="#323045" @tap="getCode">{{tips}}</u-button>
</u-form-item>
<!-- 密码 -->
<u-form-item class="input-item" prop="password" ref="item1">
<u-icon class="icon"
:name="userInfo.password ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.passwordText">
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.passwordText">
</u-input>
</u-form-item>
<!-- 重复密码 -->
@ -38,16 +42,16 @@
<u-icon class="icon"
:name="userInfo.confirmPassword ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" type="password" v-model="userInfo.confirmPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.confirmPasswordText">
<u-input class="input" type="password" v-model="userInfo.confirmPassword" color="#fff"
fontSize="32rpx" border="none" :placeholder="i18n.confirmPasswordText">
</u-input>
</u-form-item>
<!-- 取款密码 -->
<u-form-item class="input-item" prop="withdrawalPassword" ref="item1">
<u-form-item class="input-item" prop="payPassword" ref="item1">
<u-icon class="icon"
:name="userInfo.withdrawalPassword ? '../../static/login/WithdrawalPassword_pr.png' : '../../static/login/WithdrawalPassword_de.png'"
:name="userInfo.payPassword ? '../../static/login/WithdrawalPassword_pr.png' : '../../static/login/WithdrawalPassword_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" type="password" v-model="userInfo.withdrawalPassword" color="#fff" fontSize="32rpx"
<u-input class="input" type="password" v-model="userInfo.payPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.withdrawalPasswordText">
</u-input>
</u-form-item>
@ -69,9 +73,11 @@
i18n.Conditions
}}</span></view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="!agreeFlag">{{ i18n.SignUp }}
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="!agreeFlag" @click="register" :throttleTime="500">
{{ i18n.SignUp }}
</u-button>
<view class="signUp">{{ i18n.haveAccount }}<navigator class="navigator" url="./index">{{ i18n.Login }}
<view class="signUp">{{ i18n.haveAccount }}
<navigator class="navigator" url="./index">{{ i18n.Login }}
</navigator>
</view>
</view>
@ -86,18 +92,33 @@ export default {
name: "register",
data() {
return {
//
tips: '',
seconds: 60,
//
isCanGetCode: false,
userInfo: {
name: "",
password: "",
email: '',
payPassword: '',
inviteCode: '',
code: '',
lang: '',
},
rules: {
payPassword: {
type: "string",
required: true,
message: this.$t("login.withdrawalPasswordMessage"),
trigger: ["blur", "change"],
},
email: {
type: "string",
required: true,
message: this.$t("login.emailInputMessage"),
trigger: ["blur", "change"],
},
verificationCode: {
code: {
type: "string",
required: true,
message: this.$t("login.verificationCodeMessage"),
@ -109,6 +130,19 @@ export default {
message: this.$t("login.passwordInputMessage"),
trigger: ["blur", "change"]
},
InvitationCode: {
type: "string",
required: true,
message: this.$t("login.InvitationCodeMessage"),
trigger: ["blur", "change"]
},
confirmPassword: {
type: "string",
required: true,
message: this.$t("login.confirmPasswordMessage"),
trigger: ["blur", "change"]
},
},
agreeFlag: false,
};
@ -121,9 +155,80 @@ export default {
onLoad() {
// console.log(this.$t('login.emailInputMessage'));
},
watch: {
'userInfo.email': {
handler(newValue) {
this.isCanGetCode = uni.$u.test.email(newValue);
}
}
},
onShow() {},
methods: {},
components: { UButton }
methods: {
//
codeChange(text) {
this.tips = text;
},
//
getCode() {
if (!this.userInfo.email) {
uni.$u.toast(this.$t("login.Emailempty"))
return
}
if (!this.isCanGetCode) {
uni.$u.toast(this.$t("login.Emailincorrect"))
return
}
if (this.$refs.uCode.canGetCode) {
const data = {
email: this.userInfo.email,
type: 0,
}
//
uni.showLoading({
title: this.$t("login.GettingVerificationCode")
})
this.$api.sendEmailCode(data).then(res => {
if (res.code === 200) {
uni.hideLoading();
// this.start()
uni.$u.toast(this.$t("login.CodeHasSent"));
//
this.$refs.uCode.start();
} else {
uni.$u.toast(res.msg)
}
})
} else {
uni.$u.toast(this.$t("login.SendAfter"));
}
},
//
register() {
this.$refs.uForm.validate().then(res => {
this.$api.register(this.userInfo).then(res => {
if (res.errCode === 'SUCCESS') {
setTimeout(() => {
uni.showToast({
title: this.$t("login.resSuccess")
})
}, 600)
uni.switchTab({
url: '/pages/login/index'
})
} else {
uni.$u.toast(res.msg)
}
})
}).catch(errors => {
console.log('err')
})
},
},
components: {
UButton
}
}
</script>

7
utils/language/en_US.js

@ -27,6 +27,13 @@ export default {
checkTheTermsOfService: 'Please review and agree to the terms of service',
// register
loginSuccess:"Login successful",
resSuccess:"Registration success",
Emailempty:"E-mail can not be empty",
Emailincorrect:"Email is incorrect",
GettingVerificationCode:"Getting verification code",
CodeHasSent:"Verification code has been sent",
SendAfter:"Send after the countdown is over",
registerWelcomeText: "Getting Started",
registerCreate: "Create an account to continue!",
verificationCodeText: 'Verification Code',

Loading…
Cancel
Save