03e454cc by joe

所有的alert拿掉

1 parent afc44feb
Showing 43 changed files with 339 additions and 67 deletions
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -415,4 +415,8 @@ textarea {
border-color: $cOrange !important;
}
.ipt.err {
border-color: $cOrange !important;
}
</style>
......
......@@ -17,7 +17,7 @@ module.exports = {
// 修改密码
changePassword : "/pingan_hklife_webapi/password/change",
// 短信验证码登录
otpLogin : "/pingan_hklife_webapi/otpLogin",
otpLogin : "/pingan_hklife_webapi/user/otpLogin",
// 找回密码:定位用户信息
locateUserInfo : "/pingan_hklife_webapi/reset/locateUserInfo",
// 找回密码:发送验证码
......
......@@ -135,6 +135,18 @@ module.exports = {
verifyCode: "驗證碼",
verifyCodePlaceholder: "驗證碼",
verifyCodeGet: "獲取驗證碼",
tips : {
e1 : "请输入账号信息",
e2 : "请输入密码",
e3 : "请输入图像验证码",
e4 : "请同意《平安一账通会员服务协议》",
e5 : "账号/密码不正确",
oe0 : "请输入正确的手机号",
oe1 : "请先获取短信验证码",
oe2 : "请输入图片验证码",
oe3 : "请输入短信验证码",
oe4 : "短信验证码不正确",
}
},
session: {
sidExpire: "長時間未操作,為了您賬戶的安全,請登錄後再操作",
......@@ -165,6 +177,20 @@ module.exports = {
newPasswordSure: "確認密碼",
newPasswordSurePlaceholder: "輸入登錄密碼",
sure: "確認",
tips: {
e1: "手機號不正確,請輸入正確的手機號",
e2: "請同意《平安一賬通會員服務協議》",
e3: "短信驗證碼不正確",
e4: "請先獲取短信驗證碼",
e5: "手機號已經被註冊,請使用其他手機號註冊或直接登錄",
e6: "請輸入圖片驗證碼",
e7: "密碼長度不能少於8位",
e8: "密碼中必須包含數字、字符以及特殊號碼",
e9: "兩次密碼不一致,請確認後重新輸入",
e10: "驗證碼過期,請重新申請驗證碼",
e11: "註冊失敗,請聯繫工作人員",
e12: "註冊成功",
}
},
passwordCheck: {
error1: "密碼長度不少於8位",
......
......@@ -135,6 +135,18 @@ module.exports = {
verifyCode: "驗證碼",
verifyCodePlaceholder: "驗證碼",
verifyCodeGet: "獲取驗證碼",
tips: {
e1: "請輸入賬號信息",
e2: "請輸入密碼",
e3: "請輸入圖像驗證碼",
e4: "請同意《平安一賬通會員服務協議》",
e5: "賬號或密碼不正確",
oe0: "請輸入正確的手機號",
oe1: "請先獲取短信驗證碼",
oe2: "請輸入圖片驗證碼",
oe3: "請輸入短信驗證碼",
oe4: "短信驗證碼不正確",
},
},
register: {
mobileOptions: [{
......@@ -162,6 +174,20 @@ module.exports = {
newPasswordSure: "確認密碼",
newPasswordSurePlaceholder: "輸入登錄密碼",
sure: "確認",
tips: {
e1: "手機號不正確,請輸入正確的手機號",
e2: "請同意《平安一賬通會員服務協議》",
e3: "短信驗證碼不正確",
e4: "請先獲取短信驗證碼",
e5: "手機號已經被註冊,請使用其他手機號註冊或直接登錄",
e6: "請輸入圖片驗證碼",
e7: "密碼長度不能少於8位",
e8: "密碼中必須包含數字、字符以及特殊號碼",
e9: "兩次密碼不一致,請確認後重新輸入",
e10: "驗證碼過期,請重新申請驗證碼",
e11: "註冊失敗,請聯繫工作人員",
e12: "註冊成功",
}
},
session: {
sidExpire: "長時間未操作,為了您賬戶的安全,請登錄後再操作",
......@@ -170,13 +196,13 @@ module.exports = {
error1: "密碼長度不少於8位",
error2: "密碼中必須包含數字、字符以及特殊號碼",
error3: "兩次密碼不一致,請確認後重新輸入",
error4 : "密碼修改失敗,請稍後再試,或撥打客服電話95511解決",
error5 : "舊密碼不正確,請重新輸入",
error4: "密碼修改失敗,請稍後再試,或撥打客服電話95511解決",
error5: "舊密碼不正確,請重新輸入",
success: "密碼修改成功"
},
passwordReset: {
oldPwd : "舊密碼",
oldPwdPlaceholde : "請輸入舊密碼",
oldPwd: "舊密碼",
oldPwdPlaceholde: "請輸入舊密碼",
cidExpire: "長時間未操作,為了您賬戶的安全,請重新開始",
type1: {
title: "密碼找回",
......
......@@ -135,6 +135,18 @@ module.exports = {
verifyCode: "验证码",
verifyCodePlaceholder: "验证码",
verifyCodeGet: "获取验证码",
tips : {
e1 : "请输入账号信息",
e2 : "请输入密码",
e3 : "请输入图像验证码",
e4 : "请同意《平安一账通会员服务协议》",
e5 : "账号或密码不正确",
oe0 : "请输入正确的手机号",
oe1 : "请先获取短信验证码",
oe2 : "请输入图片验证码",
oe3 : "请输入短信验证码",
oe4 : "短信验证码不正确",
}
},
session: {
sidExpire: "长时间未操作,为了您的账户安全,请登录后再操作",
......@@ -165,6 +177,20 @@ module.exports = {
newPasswordSure: "确认密码",
newPasswordSurePlaceholder: "输入登录密码",
sure: "确认",
tips: {
e1: "手机号不正确,请输入正确的手机号",
e2: "请同意《平安一账通会员服务协议》",
e3: "短信验证码不正确",
e4: "请先获取短信验证码",
e5: "手机号已经被注册,请使用其他手机号注册或直接登录",
e6: "请输入图片验证码",
e7: "密码长度不能少于8位",
e8: "密码必须同时包含数字、字母、特殊字符",
e9: "两次输入的密码不一致",
e10: "验证码过期,请重新申请验证码",
e11: "注册失败,请联系工作人员",
e12: "註冊成功",
}
},
passwordCheck: {
error1: "密码长度不少于8位",
......
......@@ -8,6 +8,7 @@ import {
} from '@/api/fetch-api.js'
import modalComp from '@/components/modal-comp/modal-comp.vue';
import { passwordEncrypt } from '@/utils/encrypt.js';
......@@ -46,9 +47,26 @@ export default {
showImageCode: false,
agreeProtocol: false
},
errorTips: {
// 账密登录页
e1: "",// 账号
e2: "",// 密码
e3: "",// 图像验证码
e4: "",// 勾选同意
// 短信验证码
oe1: "", // 账号
oe2: "", // 短信验证码
oe3: "", // 图像验证码
},
modalVisiable: false,
targetPath: "",
modalIcon: "succ",
modalContent: ""
}
},
components: {},
components: {
modalComp
},
computed: {
...mapState({
userInfo: state => state.userInfo
......@@ -61,6 +79,12 @@ export default {
}
},
methods: {
showModal(content, icon) {
icon = !icon || typeof icon === "undefined" ? "succ" : "succ";
this.modalIcon = icon;
this.modalContent = content;
this.modalVisiable = true;
},
onCheckHandler() {
},
......@@ -126,6 +150,14 @@ export default {
},
_passwordLogin() {
// 刷新图形二维码
if (!this.loginForm.userId) {
this._showEmptyInputTips();
return;
}
if (!this.loginForm.password) {
this._showEmptyPasswordTips();
return;
}
this.handlerIsShowImageVcode().then(() => {
httpPost({
url: api.gsLogin,
......@@ -142,19 +174,44 @@ export default {
// 处理登录结果
_handlerLoginResponse(response) {
// let res = response.content;
if (response.returnCode == 0 || response.resultCode == "0") {
if (response.returnCode == 0 || response.returnCode == "0") {
this.$store.commit("SET_USER_INFO", response.data);
this._redirectTo();
} else {
let msg = response.returnMsg;
this._showLoginErrorMessage(msg);
this._showLoginErrorMessage(response);
}
},
_showAgreeProtocalTips() {
alert("请同意《平安一账通会员服务协议》");
_showEmptyInputTips() {
let message = this.i18n.login.tips.e1;
this.errorTips.e1 = message;
},
_showEmptyPasswordTips() {
let message = this.i18n.login.tips.e2;
this.errorTips.e2 = message;
},
_showLoginErrorMessage(message) {
alert(message);
_showAgreeProtocalTips() {
let message = this.i18n.login.tips.e4;
this.showModal(message, "info");
},
_showLoginErrorMessage(response) {
switch (response.returnCode) {
case "SMS_ERROR_006":
// 短信验证码不正确
this.showModal(this.i18n.login.tips.oe4, "info");
break;
case "BIZ_ERROR_018":
// 账号或密码不正确
this.showModal(this.i18n.login.tips.e5, "info");
break;
case "BIZ_ERROR_011":
case "BIZ_ERROR_012":
// 登录错误4次、5次
this.showModal(response.returnMsg, "info");
return;
default:
this.showModal(this.i18n.login.tips.e5, "info");
break;
}
},
_redirectTo() {
let path = this.$route.query.callback || "/index";
......@@ -194,13 +251,19 @@ export default {
})
},
_showGetOptTips() {
alert('请先获取短信验证码');
let message = this.i18n.login.tips.oe1;
this.errorTips.oe2 = message;
// alert('请先获取短信验证码');
},
_showImageValueTip() {
alert("请输入图片验证码")
let message = this.i18n.login.tips.oe2;
this.errorTips.oe3 = message;
// alert("请输入图片验证码")
},
_showOtpEmptyTips() {
alert('请输入短信验证码');
let message = this.i18n.login.tips.oe3;
this.errorTips.oe2 = message;
// alert('请输入短信验证码');
},
handlerStdSendOTP() {
// 发送短信验证码
......@@ -276,7 +339,9 @@ export default {
});
},
_showMobileNoIllegalTip() {
alert("手机号不正确");
let message = this.i18n.login.tips.oe0;
this.errorTips.oe1 = message;
// alert("手机号不正确");
},
_startStdSendOTP() {
// 正式发送OTP信号
......@@ -317,10 +382,33 @@ export default {
}
return this.values.deviceId
},
modalCallback() {
this.modalVisiable = false;
if (this.targetPath) {
this.$router.push({
"path": this.targetPath
});
}
}
},
watch: {
type() {
this.loginCheck.showImageCode = false;
},
'loginForm.userId': function () {
this.errorTips.e1 = "";
},
'loginForm.password': function () {
this.errorTips.e2 = "";
},
'loginForm.mobileNo': function () {
this.errorTips.oe1 = "";
},
'loginForm.otp': function () {
this.errorTips.oe2 = "";
},
'loginForm.imageValue': function () {
this.errorTips.oe3 = "";
}
},
mounted() {
......
<template>
<div class="content">
<modal-comp :visible="modalVisiable" :show-confirm="false" :icon="modalIcon" :content="modalContent" :confirm="modalCallback" :overlay="modalCallback"></modal-comp>
<div class="ebg">
<img src="@/assets/images/common/login-bg.png">
</div>
......@@ -24,7 +25,10 @@
<img src="@/assets/images/login/icon-login-user.png"> {{$t('login.account')}}
</div>
<div class="ipt-wrap">
<input v-model="loginForm.userId" :placeholder="$t('login.accountPlaceholder')" class="ipt" type="text">
<input v-model="loginForm.userId" :placeholder="$t('login.accountPlaceholder')" class="ipt" :class="{ err : errorTips.e1.length > 0 }" type="text">
</div>
<div class="validator" v-if="errorTips.e1.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.e1}}
</div>
</div>
<div class="pure-u-1 form-item">
......@@ -32,16 +36,22 @@
<img src="@/assets/images/login/icon-login-password.png"> {{$t('login.password')}}
</div>
<div class="ipt-wrap">
<input v-model="loginForm.password" :placeholder="$t('login.passwordPlaceholder')" class="ipt" type="password">
<input v-model="loginForm.password" :placeholder="$t('login.passwordPlaceholder')" class="ipt" :class="{ err : errorTips.e2.length > 0 }" type="password">
</div>
<div class="validator" v-if="errorTips.e2.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.e2}}
</div>
</div>
<div class="pure-u-1 form-item" v-if="type == 1 && loginCheck.showImageCode">
<div class="ipt-wrap">
<input :placeholder="$t('login.verifyPlaceholder')" class="ipt ipt-verify" type="text" v-model="loginForm.imageValue">
<input :placeholder="$t('login.verifyPlaceholder')" class="ipt ipt-verify" :class="{ err : errorTips.e3.length > 0 }" type="text" v-model="loginForm.imageValue">
<div class="ipt verify-btn pointer vcode" @click="handlerRefreshImageValue">
<img :src="values.imageBase64">
</div>
</div>
<div class="validator" v-if="errorTips.e3.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.e3}}
</div>
</div>
</div>
<div class="login-protocol pointer" @click="loginCheck.agreeProtocol = !loginCheck.agreeProtocol" >
......@@ -75,28 +85,37 @@
<img src="@/assets/images/login/icon-login-phone.png"> {{$t('login.mobile')}}
</div>
<div class="ipt-wrap">
<input :placeholder="$t('login.mobilePlaceholder')" class="ipt" type="text" v-model="loginForm.mobileNo">
<input :placeholder="$t('login.mobilePlaceholder')" class="ipt" type="text" :class="{ err : errorTips.oe1.length > 0 }" v-model="loginForm.mobileNo">
</div>
<div class="validator" v-if="errorTips.oe1.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.oe1}}
</div>
</div>
<div class="pure-u-1 form-item" v-if="type == 2 && loginCheck.showImageCode">
<div class="ipt-wrap">
<input :placeholder="$t('login.verifyPlaceholder')" class="ipt ipt-verify" type="text" v-model="loginForm.imageValue">
<input :placeholder="$t('login.verifyPlaceholder')" class="ipt ipt-verify" :class="{ err : errorTips.oe3.length > 0 }" type="text" v-model="loginForm.imageValue">
<div class="ipt verify-btn pointer vcode" @click="handlerRefreshImageValue">
<img :src="values.imageBase64">
</div>
</div>
<div class="validator" v-if="errorTips.oe3.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.oe3}}
</div>
</div>
<div class="pure-u-1 form-item">
<div class="label">
<img src="@/assets/images/login/icon-login-message.png"> {{$t('login.verifyCode')}}
</div>
<div class="ipt-wrap">
<div class="ipt ipt2">
<div class="ipt ipt2" :class="{ err : errorTips.oe2.length > 0 }">
<input :placeholder="$t('login.verifyCodePlaceholder')" class="ipt-code" type="text" v-model="loginForm.otp">
<div v-if="times.remain == 0" class="veri-btn pointer" @click="handlerStdSendOTP" >{{$t('register.verifyCodeGet')}}</div>
<div v-else class="veri-btn-default">{{times.tip}}</div>
</div>
</div>
<div class="validator" v-if="errorTips.oe2.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.oe2}}
</div>
</div>
</div>
<div class="login-protocol pointer" @click="loginCheck.agreeProtocol = !loginCheck.agreeProtocol" >
......
......@@ -21,10 +21,9 @@ export default {
tip: "" // 显示的文字
},
modalVisiable: false,
modal: {
icon: "succ",
content: "",
},
targetPath: "",
modalIcon: "succ",
modalContent: "",
step1: {
userId: "",
error: ""
......@@ -70,7 +69,7 @@ export default {
uid: this.step1.userId
}
}).then(response => {
if (response.resultCode !== "0") {
if (response.returnCode !== "0") {
this.step1.error = this.i18n().passwordReset.type1.error;
} else {
this.values.cid = response.data.cid;
......@@ -98,7 +97,7 @@ export default {
}
}).then(response => {
if (this.responseHandler(response)) {
switch (response.resultCode) {
switch (response.returnCode) {
case "COMMON_ERROR_E3":
this.step2.error = this.i18n().passwordReset.type2.error3;
return;
......@@ -124,7 +123,7 @@ export default {
}
}).then(response => {
if (this.responseHandler(response)) {
switch (response.resultCode) {
switch (response.returnCode) {
case "0":
this.type = 4;
return;
......@@ -158,7 +157,7 @@ export default {
if (this.responseHandler(response)) {
let message = this.i18n().passwordCheck.success;
this.step4.success = true;
switch (response.resultCode) {
switch (response.returnCode) {
case "0":
this.showModal(message, "succ");
break
......@@ -208,7 +207,7 @@ export default {
}, 1000);
},
responseHandler(response) {
switch (response.resultCode) {
switch (response.returnCode) {
case "COMMON_ERROR_E2":
// 身份过期了,请重新登录
this.values.cid = "";
......
......@@ -76,7 +76,7 @@ export default {
}).then(response => {
this.targetPath = "";
let message = this.i18n().passwordCheck.success;
switch (response.resultCode) {
switch (response.returnCode) {
case "0":
this.targetPath = "";
this.showModal(message, "succ");
......
......@@ -4,13 +4,14 @@ import {
httpPost
} from '@/api/fetch-api.js'
import modalComp from '@/components/modal-comp/modal-comp.vue';
import { passwordEncrypt } from '@/utils/encrypt.js';
export default {
data() {
return {
key: 'value',
type: 1, // 1:手机验证 2:输入密码
type: 2, // 1:手机验证 2:输入密码
mobileNoType: "hk",// 选择的手机好类型
mobileTip: {},
mobileOptions: [],
......@@ -38,9 +39,23 @@ export default {
remain: 0, // 剩余时间
tip: "" // 显示的文字
},
errorTips: {
p1: "",// 手機號
p2: "",// 短信驗證碼
p3: "",// 圖像驗證碼
p4: "",// 密碼
p5: "",// 確認密碼
},
modalVisiable: false,
targetPath: "",
modalIcon: "succ",
modalContent: ""
}
},
components: {},
components: {
modalComp
},
computed: {
locale() {
return this.$i18n.locale || 'tc';
......@@ -50,6 +65,12 @@ export default {
}
},
methods: {
showModal(content, icon) {
icon = !icon || typeof icon === "undefined" ? "succ" : "succ";
this.modalIcon = icon;
this.modalContent = content;
this.modalVisiable = true;
},
onProtocolHandler() {
this.$router.push({
path: "/protocol"
......@@ -129,7 +150,9 @@ export default {
});
},
_showMobileNoIllegalTip() {
alert("手机号不正确");
let message = this.i18n.register.tips.e1;
this.errorTips.p1 = message;
// alert("手机号不正确");
},
_startStdSendOTP() {
// 正式发送OTP信号
......@@ -223,6 +246,7 @@ export default {
},
_checkParams() {
return new Promise((resolve, reject) => {
this._checkMobileLegal().then(() => {
if (!this.registerCheck.agreeProtocol) {
this._showAgreeProtocolTip();
return;
......@@ -239,32 +263,48 @@ export default {
this._showOTPTip();
return;
}
this._checkMobileLegal().then(() => {
resolve();
})
});
},
_showAgreeProtocolTip() {
alert("请同意协议")
let message = this.i18n.register.tips.e2;
this.showModal(message, "info");
// alert("请同意协议")
},
_showOTPTip() {
alert("请填写短信验证码")
let message = this.i18n.register.tips.e3;
this.errorTips.p2 = message;
// alert("请填写短信验证码")
},
_showTokenTip() {
alert("请先请求短信验证码")
let message = this.i18n.register.tips.e4;
this.errorTips.p2 = message;
// alert("请先请求短信验证码")
},
_showDuplicateRegistrationTip() {
alert("手机号已经被注册,请使用其他手机号重新注册")
let message = this.i18n.register.tips.e5;
this.showModal(message, "info");
// alert("手机号已经被注册,请使用其他手机号重新注册")
},
_showImageValueTip() {
alert("请输入图片验证码")
let message = this.i18n.register.tips.e5;
this.errorTips.p3 = message;
// alert("请输入图片验证码")
},
_showCheckOTPErrTip(msg) {
alert(msg);
this.showModal(msg, "info");
// alert(msg);
},
onRegisterHandler() {
this._checkPassword().then(() => {
let c = this.checkPassword();
if (c) {
this.errorTips.p4 = c;
} else {
this.errorTips.p4 = "";
let data = {
token: this.values.token,
mobileNo: this.registerForm.mobileNo,
......@@ -279,19 +319,13 @@ export default {
this.type = 1;
} else {
this._showSuccessMessage();
this.$router.push({
path: "/login"
});
}
})
});
}
},
_checkPassword() {
return new Promise((resolve, reject) => {
let password = this.values.password;
checkPassword(password) {
if (password.length < 8) {
this._showPasswordLenthNotEnouth();
return;
return this.i18n.register.tips.e7;
}
// 匹配字母
let m1 = /([a-z])+/.test(password);
......@@ -300,35 +334,39 @@ export default {
let m3 = /([0-9])+/.test(password);
// 匹配特殊字符
let m4 = /[^a-zA-Z0-9]+/.test(password);
console.log(m1, m2, m3, m4)
if ((m1 | m2) & m3 & m4) {
if (password != this.values.passwordRepeat) {
this._showPasswordNotTheSameTips();
return "";
} else {
resolve();
}
} else {
this._showPasswordComplexityTips();
return this.i18n.register.tips.e8;
}
});
},
_showPasswordLenthNotEnouth() {
alert("密码长度不能少于8位")
let message = this.i18n.register.tips.e7;
this.errorTips.p4 = message;
// alert("密码长度不能少于8位")
},
_showPasswordComplexityTips() {
alert("密码必须同时包含数字、字母、特殊字符")
let message = this.i18n.register.tips.e8;
this.errorTips.p4 = message;
// alert("密码必须同时包含数字、字母、特殊字符")
},
_showPasswordNotTheSameTips() {
alert("两次输入的密码不一致")
let message = this.i18n.register.tips.e9;
this.errorTips.p5 = message;
// alert("两次输入的密码不一致")
},
_showRegisterFailure(response) {
if ("COMMON_ERROR_052" == response.returnCode) {
this._resetRegisterParam();
this.handlerRefreshImageVcode();
alert("验证码过期,请重新申请验证码");
let message = this.i18n.register.tips.e10;
// alert("验证码过期,请重新申请验证码");
this.showModal(message, "info");
} else {
this._resetAllParams();
alert("注册失败,请联系工作人员");
let message = this.i18n.register.tips.e11;
// alert("注册失败,请联系工作人员");
this.showModal(message, "info");
}
},
_resetAllParams() {
......@@ -367,7 +405,10 @@ export default {
}
},
_showSuccessMessage() {
alert("注册成功")
let message = this.i18n.register.tips.e12;
this.showModal(message, "succ");
this.targetPath = "/login";
// alert("注册成功")
},
onForgetHandler() {
......@@ -380,6 +421,14 @@ export default {
let mobileOptions = JSON.parse(JSON.stringify(i18n.register.mobileOptions));
this.mobileOptions = mobileOptions;
this.mobileTip = this.mobileOptions[0];
},
modalCallback() {
this.modalVisiable = false;
if (this.targetPath) {
this.$router.push({
"path": this.targetPath
});
}
}
},
mounted() { },
......@@ -390,8 +439,27 @@ export default {
this.$set(this, 'mobileTip', element);
}
})
},
'registerForm.mobileNo': function () {
this.errorTips.p1 = "";
},
'registerForm.opt': function () {
this.errorTips.p2 = "";
},
'registerForm.imageValue': function () {
this.errorTips.p3 = "";
},
'values.password': function () {
this.$set(this.errorTips, 'p4', this.checkPassword(this.values.password));
},
'values.passwordRepeat': function () {
if (this.values.password != this.values.passwordRepeat) {
this._showPasswordNotTheSameTips();
} else {
this.errorTips.p5 = "";
}
},
},
created() {
this.initData();
}
......
<template>
<div class="content">
<modal-comp :visible="modalVisiable" :show-confirm="false" :icon="modalIcon" :content="modalContent" :confirm="modalCallback" :overlay="modalCallback"></modal-comp>
<div class="ebg">
<img src="@/assets/images/common/login-bg.png">
</div>
......@@ -29,6 +30,9 @@
<input :placeholder="mobileTip.placeHolder" class="ipt-tel" type="text" v-model="registerForm.mobileNo">
</div>
</div>
<div class="validator" v-if="errorTips.p1.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.p1}}
</div>
</div>
<div class="pure-u-1 form-item" v-if="registerCheck.showImageCode">
......@@ -38,6 +42,9 @@
<img :src="values.imageBase64">
</div>
</div>
<div class="validator" v-if="errorTips.p3.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.p3}}
</div>
</div>
<div class="pure-u-1 form-item">
<div class="ipt-wrap">
......@@ -47,6 +54,9 @@
<div v-else class="veri-btn-default">{{times.tip}}</div>
</div>
</div>
<div class="validator" v-if="errorTips.p2.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.p2}}
</div>
</div>
</div>
......@@ -68,6 +78,9 @@
<div class="ipt-wrap">
<input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password">
</div>
<div class="validator" v-if="errorTips.p4.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.p4}}
</div>
</div>
<div class="pure-u-1 form-item">
<div class="label">
......@@ -76,6 +89,9 @@
<div class="ipt-wrap">
<input :placeholder="$t('register.newPasswordSurePlaceholder')" class="ipt" type="password" v-model="values.passwordRepeat">
</div>
<div class="validator" v-if="errorTips.p5.length > 0 ">
<img src="@/assets/images/common/icon-notice.png" alt="">{{errorTips.p5}}
</div>
</div>
</div>
<div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div>
......