|
|
|
@ -3,6 +3,8 @@ definePageMeta({ |
|
|
|
layout: false, |
|
|
|
}) |
|
|
|
|
|
|
|
const { $toast } = useNuxtApp() |
|
|
|
|
|
|
|
const registerForm = reactive({ |
|
|
|
username: '', |
|
|
|
password: '', |
|
|
|
@ -16,7 +18,6 @@ const captcha = reactive({ |
|
|
|
loading: false, |
|
|
|
}) |
|
|
|
|
|
|
|
const registerError = ref('') |
|
|
|
const registerLoading = ref(false) |
|
|
|
|
|
|
|
async function fetchCaptcha() { |
|
|
|
@ -34,9 +35,8 @@ async function fetchCaptcha() { |
|
|
|
} |
|
|
|
|
|
|
|
async function handleRegister() { |
|
|
|
registerError.value = '' |
|
|
|
if (registerForm.password !== registerForm.confirmPassword) { |
|
|
|
registerError.value = '两次密码输入不一致' |
|
|
|
$toast.error('两次密码输入不一致') |
|
|
|
return |
|
|
|
} |
|
|
|
registerLoading.value = true |
|
|
|
@ -50,9 +50,10 @@ async function handleRegister() { |
|
|
|
captchaAnswer: captcha.answer, |
|
|
|
}, |
|
|
|
}) |
|
|
|
await navigateTo('/auth/login?tab=login') |
|
|
|
$toast.success('注册成功!正在跳转...') |
|
|
|
setTimeout(() => navigateTo('/auth/login?tab=login'), 1500) |
|
|
|
} catch (e: any) { |
|
|
|
registerError.value = e?.data?.statusMessage || e?.message || '注册失败' |
|
|
|
$toast.error(e?.data?.statusMessage || e?.message || '注册失败') |
|
|
|
await fetchCaptcha() |
|
|
|
} finally { |
|
|
|
registerLoading.value = false |
|
|
|
@ -86,8 +87,6 @@ onMounted(fetchCaptcha) |
|
|
|
</div> |
|
|
|
|
|
|
|
<form class="auth-form" @submit.prevent="handleRegister"> |
|
|
|
<div v-if="registerError" class="form-error">{{ registerError }}</div> |
|
|
|
|
|
|
|
<div class="form-field"> |
|
|
|
<input id="register-username" v-model="registerForm.username" type="text" placeholder=" " required /> |
|
|
|
<label for="register-username">用户名</label> |
|
|
|
@ -384,15 +383,6 @@ onMounted(fetchCaptcha) |
|
|
|
opacity: 0.5; |
|
|
|
} |
|
|
|
|
|
|
|
.form-error { |
|
|
|
padding: 12px 16px; |
|
|
|
background: rgba(198, 69, 69, 0.08); |
|
|
|
border: 1px solid rgba(198, 69, 69, 0.2); |
|
|
|
border-radius: 6px; |
|
|
|
color: var(--color-error); |
|
|
|
font-size: 13px; |
|
|
|
} |
|
|
|
|
|
|
|
.submit-btn { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
|