123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { reactive, ref } from 'vue'
- import { sendSms } from '@/app/api/system'
- export function useSendSms() {
- const canGetCode = ref(true),
- text = ref(t('getSmsCode')),
- seconds = ref(90);
- let timer: number | undefined = undefined;
- const send = async (param: requestMobileParam) => {
- if (!canGetCode.value) return
- canGetCode.value = false
- let result: string | boolean = false
- await sendSms(param).then((res: responseResult) => {
- if (res.code == 1) {
- start()
- result = res.data.key
- } else {
- reset()
- result = false
- }
- }).catch(() => {
- result = false
- reset()
- })
- return result
- }
-
- const start = () => {
- timer = setInterval(() => {
- if (seconds.value > 0) {
- seconds.value -= 1
- text.value = `${seconds.value}${t('smsCodeChangeText')}`
- } else {
- reset()
- }
- }, 1000)
- }
-
- const reset = () => {
- clearInterval(timer)
- seconds.value = 90
- canGetCode.value = true
- text.value = t('getSmsCode')
- }
- return {
- send,
- text,
- canGetCode
- }
- }
|