|
|
@ -1,9 +1,10 @@ |
|
|
|
<script lang="ts" setup> |
|
|
|
<script lang="ts" setup> |
|
|
|
import type { PropType } from 'vue' |
|
|
|
import type { PropType } from 'vue' |
|
|
|
import { showToast } from 'vant' |
|
|
|
import { showSuccessToast, showToast } from 'vant' |
|
|
|
import FormItem from './FormItem.vue' |
|
|
|
import FormItem from './FormItem.vue' |
|
|
|
import { getSignUpFormConfig, signUp, smsSend } from '@/api/mice' |
|
|
|
import { getSignUpFormConfig, signUp, smsSend } from '@/api/mice' |
|
|
|
import useUserStore from '@/stores/modules/user' |
|
|
|
import useUserStore from '@/stores/modules/user' |
|
|
|
|
|
|
|
import router from '@/router' |
|
|
|
|
|
|
|
|
|
|
|
defineProps({ |
|
|
|
defineProps({ |
|
|
|
disabled: { |
|
|
|
disabled: { |
|
|
@ -19,6 +20,7 @@ const form = defineModel({ |
|
|
|
|
|
|
|
|
|
|
|
const userStore = useUserStore() |
|
|
|
const userStore = useUserStore() |
|
|
|
const miceLink = getUrlMiceLink() |
|
|
|
const miceLink = getUrlMiceLink() |
|
|
|
|
|
|
|
const sendBtnText = ref('发送验证码') |
|
|
|
|
|
|
|
|
|
|
|
// 表单配置项 |
|
|
|
// 表单配置项 |
|
|
|
const formConfigs = ref<any[]>([]) |
|
|
|
const formConfigs = ref<any[]>([]) |
|
|
@ -35,6 +37,8 @@ function onSubmit() { |
|
|
|
form.value.openId = userStore.openId |
|
|
|
form.value.openId = userStore.openId |
|
|
|
signUp(form.value).then(() => { |
|
|
|
signUp(form.value).then(() => { |
|
|
|
// console.log(res) |
|
|
|
// console.log(res) |
|
|
|
|
|
|
|
showSuccessToast('报名成功') |
|
|
|
|
|
|
|
router.push(`/user/${router.currentRoute.value.params.miceLink}`) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -43,8 +47,18 @@ async function sendSmsHandler() { |
|
|
|
if (!form.value.phone || !/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(form.value.phone)) { |
|
|
|
if (!form.value.phone || !/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(form.value.phone)) { |
|
|
|
return showToast('请输入正确的手机号') |
|
|
|
return showToast('请输入正确的手机号') |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 倒计时 |
|
|
|
|
|
|
|
let count = 60 |
|
|
|
|
|
|
|
sendBtnText.value = `${count}秒后重发` |
|
|
|
|
|
|
|
const timer = setInterval(() => { |
|
|
|
|
|
|
|
count-- |
|
|
|
|
|
|
|
sendBtnText.value = `${count}秒后重发` |
|
|
|
|
|
|
|
if (count <= 0) { |
|
|
|
|
|
|
|
clearInterval(timer) |
|
|
|
|
|
|
|
sendBtnText.value = '发送验证码' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, 1000) |
|
|
|
await smsSend(form.value.phone) |
|
|
|
await smsSend(form.value.phone) |
|
|
|
// console.log(res) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
@ -56,8 +70,8 @@ async function sendSmsHandler() { |
|
|
|
<!-- 验证码 --> |
|
|
|
<!-- 验证码 --> |
|
|
|
<van-field v-model="form.verifyCode" center clearable label="短信验证码" placeholder="请输入短信验证码"> |
|
|
|
<van-field v-model="form.verifyCode" center clearable label="短信验证码" placeholder="请输入短信验证码"> |
|
|
|
<template #button> |
|
|
|
<template #button> |
|
|
|
<van-button size="small" type="primary" @click="sendSmsHandler"> |
|
|
|
<van-button size="small" :disabled="sendBtnText !== '发送验证码'" type="primary" @click="sendSmsHandler"> |
|
|
|
发送验证码 |
|
|
|
{{ sendBtnText }} |
|
|
|
</van-button> |
|
|
|
</van-button> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</van-field> |
|
|
|
</van-field> |
|
|
|