登录(手机验证码倒计时)


需求:实现手机验证码登录时,倒计时功能

 页面:

<el-form :model="editRecordForm"
               :rules="editRecordFormRules"
               ref="editRecordFormRef"
               label-width="200px">
        <el-form-item label="手机号码:"
                      prop="mobile">
          <el-input v-model="editRecordForm.mobile"
                    disabled>el-input>
        el-form-item>
        <el-form-item label="验证码:"
                      prop="code">
          <div class="codeBox">
            <div class="codeBox-left">
              <el-input placeholder="验证码"
                        :disabled="disabledEditFormCode"
                        v-model="editRecordForm.code">el-input>
            div>
            <div class="codeBox-right">
              <el-button v-if="codeShow"
                         :disabled="disabled"
                         style="width:100%;height:100%"
                         size="medium"
                         @click="getCode">
                获取验证码
              el-button>
              <el-button v-else
                         :disabled="true"
                         style="width:100%;height:100%"
                         size="medium">
                {{ codeCount }}s重新获取
              el-button>

            div>
          div>
        el-form-item>
        <el-form-item>
          <el-button type="primary"
                     @click="submitEditRecordFrom"
                     size="mini"
                     style="float:right">提交el-button>
        el-form-item>
      el-form>

data中定义变量

codeCount: '',
timer: null,

codeShow: true,
 

methods中定义方法

    // 获取验证码(倒计时)
    getCode() {
      const TIME_COUNT = 180
      if (!this.timer) {
        this.codeCount = TIME_COUNT
        this.codeShow = false
        this.timer = setInterval(() => {
          if (this.codeCount > 0 && this.codeCount <= TIME_COUNT) {
            this.codeCount--
          } else {
            this.codeShow = true      
            clearInterval(this.timer)
            this.timer = null
          }
        }, 1000)
      }
      this.getCodeNumber()    (获取验证码掉接口)
    },

效果