2020-01-12注冊頁面及功能晶框,

詳見D:\workspace\src\renderer\pages\menu\Aside.vue 文件

功能一:當注冊的郵箱有空時,獲取驗證碼按鈕不能被點擊栈拖,當郵箱輸入正確時连舍,獲取驗證碼按鈕才可以點擊。

html 頁面

<!--注冊-->

<div class="opencorelanding-right">

<el-form :model="ruleForm" :rules="rules" ref="ruleForm">

<!-- 郵箱 -->

? ? ? ? <el-form-item prop="email" class="input-but">

<el-row>

<el-col :span="13">

<el-input v-model="ruleForm.email" :placeholder="$t('Login.lists.mailbox')"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set inputEmail" clearable></el-input>

</el-col>

<el-col :span="10" :offset="1">

<el-button type="primary" :disabled="!check" v-show="isCodeGo" @click="send" class="inp-but_code">

<!--獲取驗證碼 -->

? ? ? ? ? ? ? ? ? ? ? <span>{{$t('Login.GetVerificationCode')}}</span>

</el-button>

<!-- <span v-show="isCodeGo===false">{{sixtySecond}}秒可重新發(fā)送 -->

? ? ? ? ? ? ? ? ? ? <el-button type="primary" :disabled="hiddenCode" v-show="isCodeGo===false"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? style="margin-left:-4px;width:154px;text-align:center;">

<span style="margin-left:-11px;">{{sixtySecond}}? {{$t('Login.lists.SecondsToResend')}}</span>

</el-button>

</el-col>

</el-row>

</el-form-item>

<!--郵箱驗證碼-->

? ? ? ? <el-form-item prop="authCode" class="input-but">

<el-input v-model="ruleForm.authCode" :placeholder="$t('Login.lists.EmailVerificationCode')"

? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set" clearable></el-input>

</el-form-item>

<!-- 密碼 -->

? ? ? ? <el-form-item prop="pass" class="input-but">

<el-input type="password" v-model="ruleForm.pass" autocomplete="off"

? ? ? ? ? ? ? ? ? ? ? :placeholder="$t('Login.lists.Password')" class="opencorelanding-right-set"

? ? ? ? ? ? ? ? ? ? ? clearable></el-input>

</el-form-item>

<!-- 再次確認密碼 -->

? ? ? ? <el-form-item prop="checkPass" class="input-but">

<el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"

? ? ? ? ? ? ? ? ? ? ? :placeholder="$t('Login.lists.confirmPassword')" class="opencorelanding-right-set"

? ? ? ? ? ? ? ? ? ? ? clearable></el-input>

</el-form-item>

<!-- 姓名 -->

? ? ? ? <el-form-item prop="name" class="input-but">

<el-input v-model="ruleForm.name" :placeholder="$t('Login.lists.Name')"

? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set"? clearable></el-input>

</el-form-item>

<!-- 手機號 -->

? ? ? ? <el-form-item prop="tel" class="input-but">

<el-input v-model="ruleForm.tel" :placeholder="$t('Login.lists.MobilePhone')"

? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set" clearable></el-input>

</el-form-item>

<!-- 所屬公司 -->

? ? ? ? <el-select v-model="companiesType" size="small" @change="switchChange(companiesType)"

? ? ? ? ? ? ? ? ? class="opencorelanding-right-set" :placeholder="$store.state.info_language?'Affiliated company':'所屬公司'"

? ? ? ? ? ? ? ? ? style="width:310px">

<el-option

? ? ? ? ? ? ? ? ? ? v-for="(item,index) incompanies"

? ? ? ? ? ? ? ? ? ? :key="item.value"

? ? ? ? ? ? ? ? ? ? :label="item.lable"

? ? ? ? ? ? ? ? ? ? :value="item.type"

? ? ? ? ? ? >

</el-option>

</el-select>

<br>

<!-- 所屬部門 -->

? ? ? ? <el-form-item v-if='see' prop="departmentTypeData" class="input-but"

? ? ? ? ? ? ? ? ? ? ? :rules="[

{required: true,message:$t('Login.lists.DepartmentCannotBeEmpty'),trigger: 'change'}

]"

? ? ? ? ? ? ? ? ? ? ? key="departmentTypeData" >

<el-select v-model="ruleForm.departmentTypeData" size="small"

? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set" :placeholder="$t('Login.lists.Department')"

? ? ? ? ? ? ? ? ? ? ? clearable style="width:310px">

<el-option v-for="itemindepartment"

? ? ? ? ? ? ? ? ? ? ? ? ? :key="item.value"

? ? ? ? ? ? ? ? ? ? ? ? ? :label="item.value"

? ? ? ? ? ? ? ? ? ? ? ? ? :value="item.id">

</el-option>

</el-select>

</el-form-item>

<!--其他公司的部門 message: '部門不能為空'-->

? ? ? ? <el-form-item prop="otherDepartment" v-else

? ? ? ? ? ? ? ? ? ? ? :rules="[

{required: true,message:$t('Login.lists.DepartmentCannotBeEmpty'),trigger: 'blur'}

]"

? ? ? ? ? ? ? ? ? ? ? key="otherDepartment"

? ? ? ? >

<el-input v-model="ruleForm.otherDepartment"? :placeholder="$store.state.info_language?'department':'部門'"

? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set" clearable></el-input>

</el-form-item>

<!-- 所屬職位 -->

? ? ? ? <el-form-item v-if='see' prop="psitionTypeData" class="input-but"

? ? ? ? ? ? ? ? ? ? ? :rules="[

{required: true,message:$t('Login.lists.PositionCannotBeEmpty'),trigger: 'change'}

]"

? ? ? ? ? ? ? ? ? ? ? key="psitionTypeData"

? ? ? ? >

<el-select v-model="ruleForm.psitionTypeData" size="small" class="opencorelanding-right-set"

? ? ? ? ? ? ? ? ? ? ? :placeholder="$store.state.info_language?'Subordinate position':'所屬職位'"

? ? ? ? ? ? ? ? ? ? ? clearable style="width:310px">

<el-option

? ? ? ? ? ? ? ? ? ? ? ? v-for="iteminpsition"

? ? ? ? ? ? ? ? ? ? ? ? :key="item.value"

? ? ? ? ? ? ? ? ? ? ? ? :label="item.value"

? ? ? ? ? ? ? ? ? ? ? ? :value="item.id">

</el-option>

</el-select>

</el-form-item>

<!--其他公司的職位-->

? ? ? ? <el-form-item prop="otherPosition" v-if="switcher"

? ? ? ? ? ? ? ? ? ? ? :rules="[

{required: true,message:$t('Login.lists.PositionCannotBeEmpty'),trigger: 'blur'}

]"

? ? ? ? ? ? ? ? ? ? ? key="otherPosition"

? ? ? ? >

<el-input v-model="ruleForm.otherPosition" :placeholder="$store.state.info_language?'position':'職位'"

? ? ? ? ? ? ? ? ? ? ? class="opencorelanding-right-set" clearable></el-input>

</el-form-item>

<!--設置插槽不顯示底注冊和取消按鈕涩哟,暫時先不設置-->


? ? ? ? <el-checkbox v-model="checked" class="check" ></el-checkbox>

<span @click="dialog" class="user">{{$t('Login.UserInstructions')}}</span>

<div class="dialog-footer">

<el-button @click="opencorelanding= false" class="inp-but">

{{$t('Login.lists.button[0]')}}

</el-button>


? ? ? ? ? ? <el-button type="primary" @click="submitForm('ruleForm')" :disabled="!checked" class="inp-but">

{{$t('Login.lists.button[1]')}}

</el-button>

</div>

</el-form>

</div>

check:false,// 郵箱校驗成功時索赏,才可以獲取驗證碼

hiddenCode:false,

sixtySecond:60, //60秒倒計時

isCodeGo:true,// 是否可重新發(fā)送驗證碼

timer:null,// 定時器

hiddenCode:false,

// 注冊驗證

rules: {

// 驗證郵箱

? ? email: [

{required:true,validator:validateNameZh,trigger:'blur'},

],

// 驗證郵箱驗證碼

? ? authCode: [

{required:true,validator:authcode,trigger:'blur'},

],

// 輸入密碼

? ? pass: [

{required:true,validator:validatePass,trigger:'blur'}

],

// 再次輸入密碼

? ? checkPass: [

{required:true,validator:validatePass2,trigger:'blur'}

],

// 驗證姓名

? ? name: [

{required:true,validator:verifyName,trigger:'blur'}

],

// 驗證電話

? ? tel: [

{required:true,validator:verifyTel,trigger:'blur'}

],

// 其他公司的部門

? ? otherDepartment: [

{required:false,message:'請輸入所屬部門',trigger:'blur'},

{min:2,max:10,message:'長度在2到10個字符',trigger:'blur'}

],

// 其他公司的職位

? ? otherPosition: [

{required:false,message:'請輸入所屬職位',trigger:'blur'},

{min:2,max:10,message:'長度在2到10個字符',trigger:'blur'}

]

},

注冊校驗的回調(diào)函數(shù)在data下面return上面

// 郵箱

const validateNameZh = (rule, value, callback) => {

if (value.trim() ==='') {

// return callback(new Error('請輸入郵箱'))

? ? ? ? this.check =false;

return callback(new Error(this.$t('Login.lists.PleaseEnterEmail')))

}else if (!/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(value)) {

this.check =false;

// return callback(new Error('請輸入合法郵箱'))

? ? ? ? return callback(new Error(this.$t('Login.lists.PleaseEnterALegalEmail')))

}else {

this.check =true;

callback()

}

}

// 郵箱驗證碼

const authcode = (rule, value, callback) => {

if (value.trim() ==='') {

// return callback(new Error('請輸入郵箱驗證碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.VerificationCode')))

}else if (!/^\d{6}$/.test(value)) {

// return callback(new Error('請輸入6位郵箱驗證碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.DigitEmailVerificationCode')))

}else {

callback()

}

}

// 密碼驗證--規(guī)則:6-32位字母和數(shù)字組合

const validatePass = (rule, value, callback) => {

if (value.trim() ==='') {

// return callback(new Error('請輸入密碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.PleaseInputAPassword')))

}else if (!/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,32}$/.test(value)) {

// return callback(new Error('密碼為字母數(shù)字結(jié)合,6-32位密碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.BitPassword')))

}else {

callback()

}

}

// 再次輸入密碼驗證--規(guī)則:6-16位字母和數(shù)字組合

const validatePass2 = (rule, value, callback) => {

if (value.trim() ==='') {

// return callback(new Error('請再次輸入密碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.ThePasswordAgain')))

}else if (value !==this.ruleForm.pass) {

// return callback(new Error('兩次輸入密碼不一致!'))

? ? ? ? return callback(new Error(this.$t('Login.lists.TheTwoPasswordsAreInconsistent')))

}else {

callback()

}

}

// 姓名驗證--規(guī)則:只支持中文和英文

const verifyName = (rule, value, callback) => {

if (value.trim() ==='') {

// return callback(new Error('請輸入姓名'))

? ? ? ? return callback(new Error(this.$t('Login.lists.PleaseEnterAName')))

}else if (!/^[\u0391-\uFFE5A-Za-z]+$/.test(value)) {

// return callback(new Error('只支持中文和英文'))

? ? ? ? return callback(new Error(this.$t('Login.lists.OnlyChineseAndEnglishAreSupported')))

}else {

callback()

}

}

// 手機號驗證

const verifyTel = (rule, value, callback) => {

if (value.trim() ==='') {

// return callback(new Error('請輸入手機號'))

? ? ? ? return callback(new Error(this.$t('Login.lists.YourMobileNumber')))

}else if (!/^1[3456789]\d{9}$/.test(value)) {

// return callback(new Error('請輸入正確的手機號'))

? ? ? ? return callback(new Error(this.$t('Login.lists.TheCorrectMobileNumber')))

}else {

callback()

}

}

// 登錄--用戶名(郵箱)

const loginEmail = (rule, value, callback) => {

if (value.trim() ==='') {

this.forbidden =true;

// return callback(new Error('請輸入郵箱'))

? ? ? ? return callback(new Error(this.$t('Login.lists.PleaseEnterEmail')))

}else if (!/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(value)) {

this.forbidden =true;

// return callback(new Error('請輸入合法郵箱'))

? ? ? ? return callback(new Error(this.$t('Login.lists.PleaseEnterALegalEmail')))

}else {

callback()

this.forbidden =false;

console.log("用戶名對了")

}

}

// 密碼驗證--規(guī)則:6-16位字母和數(shù)字組合

const loginPass = (rule, value, callback) => {

if (value.trim() ==='') {

this.forbidden =true;

// return callback(new Error('請輸入密碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.PleaseInputAPassword')))

}else if (!/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,32}$/.test(value)) {

this.forbidden =true;

// return callback(new Error('請輸入6-32位的密碼'))

? ? ? ? return callback(new Error(this.$t('Login.lists.BitPassword')))

}else {

callback()

this.forbidden =false;

console.log("密碼對了")

}

}


// 發(fā)送郵箱地址染簇,接受驗證碼 代碼在script中的methods方法中

對應上面的點擊時間send

send() {

if (!this.timer) {

this.isCodeGo =false;

this.timer =setInterval(() => {

if (this.sixtySecond >0 &&this.sixtySecond <=60) {

this.sixtySecond--;

this.hiddenCode =true;

}else {

this.isCodeGo =true;

clearInterval(this.timer);

this.timer =null;

this.sixtySecond =60

? ? ? ? ? ? }

},1000)

}

// console.log(_back_public)

? ? let params = {'email':this.ruleForm.email}

/*? ? ? ? ? console.log(params);

console.log(this.ruleForm.email);*/

//

// if(this.forbidden){

//? ? return false

// }

? ? this.$axios.post(this.requestURL+'/client/verificationCode',params,

{'Content-Type':'application/json'})

.then((res) => {

if(res.data.status ==1){

this.code = res.data.data;

console.log(this.code)

this.$message({

message: res.data.msg,

type:'success'

? ? ? ? ? ? ? ? });

}else{

this.$message({

message: res.data.msg,

type:'warning'

? ? ? ? ? ? ? ? });

}

}).catch((error) => {

console.log(error);

})

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末参滴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锻弓,更是在濱河造成了極大的恐慌砾赔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件青灼,死亡現(xiàn)場離奇詭異暴心,居然都是意外死亡,警方通過查閱死者的電腦和手機杂拨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門专普,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弹沽,你說我怎么就攤上這事檀夹。” “怎么了策橘?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵炸渡,是天一觀的道長。 經(jīng)常有香客問我丽已,道長蚌堵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任沛婴,我火速辦了婚禮吼畏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘁灯。我一直安慰自己泻蚊,他們只是感情好,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布旁仿。 她就那樣靜靜地躺著藕夫,像睡著了一般孽糖。 火紅的嫁衣襯著肌膚如雪枯冈。 梳的紋絲不亂的頭發(fā)上毅贮,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天,我揣著相機與錄音尘奏,去河邊找鬼滩褥。 笑死,一個胖子當著我的面吹牛炫加,可吹牛的內(nèi)容都是我干的瑰煎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼俗孝,長吁一口氣:“原來是場噩夢啊……” “哼酒甸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赋铝,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤插勤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后革骨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體农尖,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年良哲,在試婚紗的時候發(fā)現(xiàn)自己被綠了盛卡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡筑凫,死狀恐怖滑沧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巍实,我是刑警寧澤滓技,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站蔫浆,受9級特大地震影響殖属,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓦盛,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一洗显、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧原环,春花似錦挠唆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滔驾。三九已至,卻和暖如春俄讹,著一層夾襖步出監(jiān)牢的瞬間哆致,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工患膛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留摊阀,地道東北人。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓踪蹬,卻偏偏與公主長得像胞此,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子跃捣,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容