feat: 验证码倒计时

This commit is contained in:
wangdan-fit2cloud 2024-02-28 15:42:17 +08:00
parent 0ff873f6fa
commit b4830ee0e2
2 changed files with 35 additions and 2 deletions

View File

@ -29,12 +29,15 @@
placeholder="请输入验证码" placeholder="请输入验证码"
> >
</el-input> </el-input>
<el-button <el-button
:disabled="isDisabled"
size="large" size="large"
class="send-email-button ml-12" class="send-email-button ml-12"
@click="sendEmail" @click="sendEmail"
:loading="loading" :loading="loading"
>获取验证码</el-button >
{{ isDisabled ? `重新发送(${time}s` : '获取验证码' }}</el-button
> >
</div> </div>
</el-form-item> </el-form-item>
@ -89,6 +92,8 @@ const rules = ref<FormRules<CheckCodeRequest>>({
code: [{ required: true, message: '请输入验证码' }] code: [{ required: true, message: '请输入验证码' }]
}) })
const loading = ref<boolean>(false) const loading = ref<boolean>(false)
const isDisabled = ref<boolean>(false)
const time = ref<number>(60)
const checkCode = () => { const checkCode = () => {
resetPasswordFormRef.value resetPasswordFormRef.value
@ -108,5 +113,16 @@ const sendEmail = () => {
} }
}) })
} }
const handleTimeChange = () => {
if (time.value <= 0) {
isDisabled.value = false
time.value = 60
} else {
setTimeout(() => {
time.value--
handleTimeChange()
}, 1000)
}
}
</script> </script>
<style lang="scss" scope></style> <style lang="scss" scope></style>

View File

@ -62,11 +62,13 @@
> >
</el-input> </el-input>
<el-button <el-button
:disabled="isDisabled"
size="large" size="large"
class="send-email-button ml-12" class="send-email-button ml-12"
@click="sendEmail" @click="sendEmail"
:loading="sendEmailLoading" :loading="sendEmailLoading"
>获取验证码</el-button >
{{ isDisabled ? `重新发送(${time}s` : '获取验证码' }}</el-button
> >
</div> </div>
</el-form-item> </el-form-item>
@ -183,6 +185,8 @@ const register = () => {
}) })
} }
const sendEmailLoading = ref<boolean>(false) const sendEmailLoading = ref<boolean>(false)
const isDisabled = ref<boolean>(false)
const time = ref<number>(60)
/** /**
* 发送验证码 * 发送验证码
*/ */
@ -191,9 +195,22 @@ const sendEmail = () => {
if (v) { if (v) {
UserApi.sendEmit(registerForm.value.email, 'register', sendEmailLoading).then(() => { UserApi.sendEmit(registerForm.value.email, 'register', sendEmailLoading).then(() => {
MsgSuccess('发送验证码成功') MsgSuccess('发送验证码成功')
isDisabled.value = true
handleTimeChange()
}) })
} }
}) })
} }
const handleTimeChange = () => {
if (time.value <= 0) {
isDisabled.value = false
time.value = 60
} else {
setTimeout(() => {
time.value--
handleTimeChange()
}, 1000)
}
}
</script> </script>
<style lang="scss" scope></style> <style lang="scss" scope></style>