| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <script setup lang="ts">
- import type { VbenFormSchema } from '@vben-core/form-ui';
- import { computed, reactive } from 'vue';
- import { useRouter } from 'vue-router';
- import { $t } from '@vben/locales';
- import { useVbenForm } from '@vben-core/form-ui';
- import { VbenButton } from '@vben-core/shadcn-ui';
- import Title from './auth-title.vue';
- interface Props {
- formSchema: VbenFormSchema[];
- /**
- * @zh_CN 是否处于加载处理状态
- */
- loading?: boolean;
- /**
- * @zh_CN 登陆路径
- */
- loginPath?: string;
- /**
- * @zh_CN 标题
- */
- title?: string;
- /**
- * @zh_CN 描述
- */
- subTitle?: string;
- /**
- * @zh_CN 按钮文本
- */
- submitButtonText?: string;
- }
- defineOptions({
- name: 'ForgetPassword',
- });
- const props = withDefaults(defineProps<Props>(), {
- loading: false,
- loginPath: '/auth/login',
- submitButtonText: '',
- subTitle: '',
- title: '',
- });
- const emit = defineEmits<{
- submit: [string];
- }>();
- const [Form, { validate }] = useVbenForm(
- reactive({
- commonConfig: {
- hideLabel: true,
- hideRequiredMark: true,
- },
- schema: computed(() => props.formSchema),
- showDefaultActions: false,
- }),
- );
- const router = useRouter();
- async function handleSubmit() {
- const { valid, values } = await validate();
- if (valid) {
- emit('submit', values?.email);
- }
- }
- function goToLogin() {
- router.push(props.loginPath);
- }
- </script>
- <template>
- <div>
- <Title>
- <slot name="title">
- {{ title || $t('authentication.forgetPassword') }} 🤦🏻♂️
- </slot>
- <template #desc>
- <slot name="subTitle">
- {{ subTitle || $t('authentication.forgetPasswordSubtitle') }}
- </slot>
- </template>
- </Title>
- <Form />
- <div>
- <VbenButton class="mt-2 w-full" @click="handleSubmit">
- <slot name="submitButtonText">
- {{ submitButtonText || $t('authentication.sendResetLink') }}
- </slot>
- </VbenButton>
- <VbenButton class="mt-4 w-full" variant="outline" @click="goToLogin()">
- {{ $t('common.back') }}
- </VbenButton>
- </div>
- </div>
- </template>
|