|
|
|
|
@ -125,6 +125,20 @@ function clearHint() {
|
|
|
|
|
apiHintTone.value = 'neutral'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function normalizeSmsCode(value: string): string {
|
|
|
|
|
return value.replace(/\D/g, '').slice(0, 6)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function onCaptchaInput(event: Event) {
|
|
|
|
|
const input = event.target as HTMLInputElement | null
|
|
|
|
|
const next = normalizeSmsCode(input?.value ?? '')
|
|
|
|
|
captcha.value = next
|
|
|
|
|
if (input && input.value !== next) {
|
|
|
|
|
input.value = next
|
|
|
|
|
}
|
|
|
|
|
captchaFieldError.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function parseJsonErrorPayload(data: unknown): string {
|
|
|
|
|
if (data == null || typeof data !== 'object') return '请求失败'
|
|
|
|
|
const d = data as Record<string, unknown>
|
|
|
|
|
@ -251,8 +265,9 @@ async function sendCode() {
|
|
|
|
|
|
|
|
|
|
async function onSubmit() {
|
|
|
|
|
const mobileOk = /^1[3-9]\d{9}$/.test(mobile.value.trim())
|
|
|
|
|
const codeTrimmed = captcha.value.trim()
|
|
|
|
|
const captchaOk = codeTrimmed.length > 0
|
|
|
|
|
const codeTrimmed = normalizeSmsCode(captcha.value)
|
|
|
|
|
captcha.value = codeTrimmed
|
|
|
|
|
const captchaOk = codeTrimmed.length === 6
|
|
|
|
|
mobileFieldError.value = !mobileOk
|
|
|
|
|
captchaFieldError.value = mobileOk && !captchaOk
|
|
|
|
|
if (!mobileOk) {
|
|
|
|
|
@ -260,7 +275,7 @@ async function onSubmit() {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (!captchaOk) {
|
|
|
|
|
setHint('请输入验证码', 'error')
|
|
|
|
|
setHint('请输入 6 位验证码', 'error')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
clearHint()
|
|
|
|
|
@ -430,15 +445,17 @@ onUnmounted(() => {
|
|
|
|
|
/>
|
|
|
|
|
<div class="login-page-wls__code-row">
|
|
|
|
|
<input
|
|
|
|
|
v-model.trim="captcha"
|
|
|
|
|
:value="captcha"
|
|
|
|
|
type="text"
|
|
|
|
|
class="login-page-wls__input login-page-wls__input-code"
|
|
|
|
|
:class="{ 'login-page-wls__input--error': captchaFieldError }"
|
|
|
|
|
name="captcha"
|
|
|
|
|
autocomplete="one-time-code"
|
|
|
|
|
inputmode="numeric"
|
|
|
|
|
pattern="[0-9]*"
|
|
|
|
|
maxlength="6"
|
|
|
|
|
placeholder="验证码"
|
|
|
|
|
@input="captchaFieldError = false"
|
|
|
|
|
@input="onCaptchaInput"
|
|
|
|
|
/>
|
|
|
|
|
<button type="button" class="login-page-wls__code-btn" :disabled="codeDisabled" @click="sendCode">
|
|
|
|
|
{{ codeLabel }}
|
|
|
|
|
|