美文网首页vue
element-ui 手机号验证 & 获取验证码倒数60秒

element-ui 手机号验证 & 获取验证码倒数60秒

作者: Peter_2B | 来源:发表于2020-07-27 13:19 被阅读0次


<template>
 <div id="login">
    <div class="login">
       <div class="img-box"></div>
       <div class="box-login">
            <el-form ref="loginForm" :model="form" :rules="rules" label-width="40px" class="login-box">
                    <h1 class="login-title">学聪后台</h1>
                    <h6 class="login-subtitle">欢迎回来</h6>
                    <el-form-item label="" prop="phone">=
                        <el-input type="text" maxlength="11" suffix-icon="el-icon-mobile-phone" placeholder="手机号" v-model="form.phone"/>
                    </el-form-item>
                    <el-form-item label="" prop="code">
                         <div class="verify-wrapper">
                              <el-input type="text" maxlength="6" suffix-icon="el-icon-lock" placeholder="验证码" v-model="form.code"/>
                              <el-button class="btn-orange" :disabled="disabled" @click="getCode">{{valiBtn}}</el-button>
                          </div>
                    </el-form-item>
                    <el-form-item>
                               <button class="d-btn-orange" @click.prevent="onSubmit('loginForm')">登录</button>
                    </el-form-item>
              </el-form>
        </div>
      </div>
    </div>
</template>

data(){
      var checkPhone = (rule, value, callback) => {
              const reg = /^0?(13[0-9]|15[012356789]|18[0-9]|14[578]|16[6]|17[035768]|19[19])[0-9]{8}$/
              if ( reg.test(value) ) {
                      return callback();
               }
               callback('请输入合法的手机号');
               };
        return{
           form: {
              phone: '',
              code: ''
           },
           autoLogin:false,
           rules: {
                 phone: [{validator: checkPhone, required: true, trigger: 'blur' } ],
                 code:[{required: true, message: '请输入验证码', trigger: 'blur' } ]
            },
            dialogVisible: false,     // 对话框显示和隐藏
            valiBtn:'获取验证码',
            disabled:false,
           }
    },

 methods:{
        //获取验证码    
        //获取验证码 并只验证手机号 是否正确
        getCode(){
           this.$refs['loginForm'].validateField('phone', (err) =>{
                if(err){
                    console.log('未通过')
                    return;
                }else{
                    console.log('已通过')
                    this.tackBtn();   //验证码倒数60秒
                    let fd = new FormData();  //POST 请求需要 转化为Form
                        fd.append('PhoneNumber', this.form.phone);
                        fd.append('NeedCheck', 2);
                    this.$axios({
                            method: 'POST', data: fd, url:'/api/sgsaccount/vcodeget',
                     }).then( res => {
                            console.log(res);
                        })
                    }
                })
        },
        tackBtn(){       //验证码倒数60秒
              let time = 60;
              let timer = setInterval(() => {
                  if(time == 0){
                      clearInterval(timer);
                      this.valiBtn = '获取验证码';
                      this.disabled = false;
                  }else{
                      this.disabled = true;
                      this.valiBtn = time + '秒后重试';
                      time--;
                  }
              }, 1000);
        },
        onSubmit(formName) {  //点击登录 验证手机& 验证码是否符合条件
            this.$refs[formName].validate((valid) => {    // 为表单绑定验证功能
                if (valid) {
                    let fd = new FormData();
                        fd.append('PhoneNumber', this.form.phone);
                        fd.append('VCode', this.form.code);
                    this.$axios({
                        method: 'POST', data: fd, url: `/api/sgsaccount/adminlogin`,
                    }).then(res => {
                        console.log(res);
                        if (res.data.EID == 0) {
                            var token = res.data.Data[0].token;
                            localStorage.setItem('token',token);
                            this.$message({showClose: true,message: '登录成功',type: 'success'})
                            this.$router.push({path:'/indexx'});
                        } else {
                            this.$message({showClose: true,message: res.data.Err,type: 'warning'})
                        }
                    });
                 } else {
                    this.dialogVisible = true;
                    return false;
                }
            });
        },
}

相关文章

  • 短信验证码功能如何设计

    20200816 用户点击获取验证码后 生成验证码,将手机号和验证码以 的形式存入Redis,同时把手机号和验证码...

  • 简单短信验证

    html 获取验证码 显示 获取验证码 隐藏 js /*手机号验证 两个标签*/ $('.get-yzm')....

  • 【微信小程序】获取验证码60s倒计时

    验证码倒计时,手机号格式校验。 【简要说明】code字段在获取验证码之前显示验证码,点击获取验证码后显示倒计时数字...

  • 测试

    注册-1 点击获取验证码时,当手机号非法时,文案为当前输入的手机号码非法 点击获取验证码时,当手机号已注册时,Al...

  • flutter登陆机制

    登录流程 登陆机制的流程其实很简单,简单来说就是: 通过手机号获取验证码 输入验证码,根据手机号和验证码去登陆 登...

  • element-ui 手机号验证 & 获取验证码倒数60秒

  • 赞赞羊技术服务支持

    一、登陆页面 验证码登陆输入手机号获取验证码——输入获取的验证码——点击登录——进入首页 三方授权登录(仅微信授权...

  • Cocos发送Http命令

    /** * 获取手机验证码 * @param phone 手机号 * @param type 类型,目...

  • 三种验证码

    一.数字短信验证码 思路: a.两个文本框+一个获取验证码按钮,文本框用来输入手机号和获取到的验证码,按钮负责点击...

  • 发送验证码找回密码功能

    1、定义前台获取验证码的html模板 2、当点击获取验证码的按钮,则发送手机号到后台 3、前台发送请求到后台获取验...

网友评论

    本文标题:element-ui 手机号验证 & 获取验证码倒数60秒

    本文链接:https://www.haomeiwen.com/subject/yilzlktx.html