<template>
<div>
<div class="binding_main_nav">
<div class="binding_main_nav_div">
<div class="binding_main_nav_div_selection"></div>
<span>綁定郵箱</span>
</div>
<div class="binding_main_nav_div" @click="bindingphonefn">
<div class="binding_main_nav_div_noselection"></div>
<span>綁定手機</span>
</div>
<div class="binding_main_nav_div" @click="bindingpasswordfn">
<div class="binding_main_nav_div_noselection"></div>
<span>修改密碼</span>
</div>
</div>
<div class="binding_main_body">
<div class="binding_main_body_msg">
<span>點擊“獲取驗證碼”接收驗證碼,並完成驗證</span>
</div>
<div class="binding_main_body_form">
<el-form
class="bindingeamil-form"
:rules="bindingeamilmsg"
:model="bindingemail"
ref="bindingemail"
>
<el-form-item prop="bindingemail">
<span class="bindingeamilImg">
<img src="@/assets/img/binding/email.png" />
</span>
<el-input
placeholder="請輸入郵箱號"
type="text"
tabindex="1"
v-model="bindingemail.email"
show-word-limit
maxlength="20"
ref="email"
/>
</el-form-item>
<el-form-item class="bindingemailverifica">
<span class="bindingeamilImg">
<img src="@/assets/img/login/loginyanzhengma.png" />
</span>
<el-input
ref="verifica"
placeholder="請輸入驗證碼"
v-model="bindingemail.verifica"
type="text"
maxlength="6"
onkeyup="this.value=this.value.replace(/[^\d.]/g,'');"
tabindex="2"
/>
</el-form-item>
<el-button
v-show="see"
class="bindingeamil_form_btn"
type="primary"
@click="settime"
>{{content}}</el-button>
<el-button v-show="!see" class="bindingeamil_form_btn" type="primary">{{content}}</el-button>
</el-form>
<el-button type="primary" class="bindingeamilverificabtn">確定</el-button>
</div>
</div>
</div>
</template>
<script>
import storage from "@/config/storage.js";
import { validEmail, validPhone } from "@/components/login/validate";
import config from "@/config";
export default {
data() {
var checkBindingEmail = (rule, value, callback) => {
if (this.bindingemail.email == "" || !this.bindingemail.email.trim()) {
callback(new Error("郵箱不能為空"));
}
if (!validEmail(this.bindingemail.email)) {
callback(new Error("請輸入正確的格式"));
} else {
callback();
}
};
return {
content: "獲取驗證碼",
see: true,
totalTime: 60,
bindingemail: {
email: "",
verifica: ""
},
bindingeamilmsg: {
bindingemail: [
{ required: true, validator: checkBindingEmail, trigger: "blur" }
]
},
bindingEmailVal: ""
};
},
mounted() {
this.bindingEmailVal = storage.get("loginInputVal");
},
methods: {
bindingphonefn() {
this.$router.push("/bindingmodifica/phone");
},
bindingpasswordfn() {
this.$router.push("/bindingmodifica/newpassword");
},
settime(formName) {
if (validEmail(this.bindingEmailVal)) {
this.$message.error({ message: "該賬號是郵箱登錄,不能繼續綁定郵箱" });
}else{
//進行輸入框判斷部分校驗
this.$refs.bindingemail.validateField('bindingemail',(valid) => {
if (valid) {
return false
} else {
this.see = false;
this.$axios
.get(
config.KEY.URL_RESGIST +
"/binding/EmailCode?" +
"emailNumber=" +
this.bindingemail.email
)
.then(res => {
console.log(res);
if(res.data.status == 500){
this.$message.error({ message: "該郵箱已經在平台注冊"});
setTimeout(() =>{
this.bindingemail.email = ''
},1000)
}else if(res.data.status == 200){
var auth_timetimer = setInterval(() => {
this.totalTime--;
this.content = this.totalTime + "s后重新發送";
if (this.totalTime < 0) {
this.totalTime = 60;
this.see = true;
clearInterval(auth_timetimer);
this.content = "重新發送驗證碼";
}
}, 1000);
}
})
.catch(err => {
this.$message({ message: "服務器錯誤" });
});
}
});
}
}
}
};
</script>
<style>
</style>
最主要的代碼:
this.$refs.bindingemail.validateField('bindingemail',(valid) => { if (valid) { return false } else {
//執行的操作
}
}
//bindingemail為這個表單的總的對象(大數組也可以),后面的 'bindingemail' 為校驗規則,當通過驗證的時候執行操作,就可以減少請求次數
還有一種騷操作
在上傳組件外面套一層 <el-form-item ref= 'xxx'>用xxx定位到該組件,
然后調用 在on-success鈎子中調用this.$refs.xxx.clearValidate(); 清除驗證信息
