feat: 登录新增验证码校验

This commit is contained in:
xlsea 2024-10-25 11:44:11 +08:00
parent 1e2974a7d8
commit d4b115af8f
2 changed files with 29 additions and 4 deletions

BIN
public/code.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import { reactive, ref } from 'vue';
import Vcode from 'vue3-puzzle-vcode';
import type { FormInst } from 'naive-ui';
import { md5 } from '@/utils/common';
import { $t } from '@/locales';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
@ -31,6 +31,10 @@ const rules: Record<RuleKey, App.Global.FormRule> = {
password: defaultRequiredRule
};
const codeRules: Record<string, App.Global.FormRule> = {
code: defaultRequiredRule
};
async function handleSubmit() {
const password = md5(model.password);
await authStore.login(model.userName, password);
@ -52,7 +56,17 @@ const onClose = () => {
codeShow.value = false;
};
const onSuccess = () => {
const codeForm = ref({ code: '' });
const codeFormRef = ref<FormInst>();
const onSuccess = async () => {
await codeFormRef.value?.validate();
const { code } = codeForm.value;
const codes: string[] = [];
if (!codes.includes(String(code))) {
window.$message?.warning('验证码错误');
return;
}
handleSubmit();
};
@ -81,7 +95,7 @@ const codePopoverStytle = {
{{ $t('page.login.common.login') }}
</NButton>
</template>
<NCard :title="$t('page.login.common.codeTip')" :header-style="{ padding: '10px 24px' }">
<NCard title="仅需 1 步即可完成" content-class="max-w-300px" :header-style="{ padding: '10px 24px' }">
<template #header-extra>
<NButton text @click="onClose">
<template #icon>
@ -89,7 +103,18 @@ const codePopoverStytle = {
</template>
</NButton>
</template>
<Vcode type="inside" show @success="onSuccess" @close="onClose" />
<NP>扫码下方二维码回复验证码即可获得验证码</NP>
<img src="/code.png" />
<NForm :model="codeFormRef" :rules="codeRules" label-placement="left" require-mark-placement="left">
<NGrid>
<NFormItemGi class="mr-16px" span="18" path="code" label="验证码">
<NInput v-model:value="codeForm.code" placeholder="请输入验证码" />
</NFormItemGi>
<NGridItem span="6">
<NButton type="primary" block @click="onSuccess">确定</NButton>
</NGridItem>
</NGrid>
</NForm>
</NCard>
</NPopover>
</NSpace>