mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-09 09:57:19 +08:00
51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import type { FormInstance, FormItemProp } from "element-plus";
|
|
import { clone } from "@pureadmin/utils";
|
|
import { ref } from "vue";
|
|
|
|
const isDisabled = ref(false);
|
|
const timer = ref(null);
|
|
const text = ref("");
|
|
|
|
export const useVerifyCode = () => {
|
|
const start = async (
|
|
formEl: FormInstance | undefined,
|
|
props: FormItemProp,
|
|
time = 60
|
|
) => {
|
|
if (!formEl) return;
|
|
const initTime = clone(time, true);
|
|
await formEl.validateField(props, isValid => {
|
|
if (isValid) {
|
|
clearInterval(timer.value);
|
|
isDisabled.value = true;
|
|
text.value = `${time}`;
|
|
timer.value = setInterval(() => {
|
|
if (time > 0) {
|
|
time -= 1;
|
|
text.value = `${time}`;
|
|
} else {
|
|
text.value = "";
|
|
isDisabled.value = false;
|
|
clearInterval(timer.value);
|
|
time = initTime;
|
|
}
|
|
}, 1000);
|
|
}
|
|
});
|
|
};
|
|
|
|
const end = () => {
|
|
text.value = "";
|
|
isDisabled.value = false;
|
|
clearInterval(timer.value);
|
|
};
|
|
|
|
return {
|
|
isDisabled,
|
|
timer,
|
|
text,
|
|
start,
|
|
end
|
|
};
|
|
};
|