123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <script setup lang="ts">
- import { computed, reactive } from 'vue';
- import { useRouter } from 'vue-router';
- import { LOGIN_PATH } from '@vben/constants';
- import { $t } from '@vben-core/locales';
- import { VbenButton, VbenInput } from '@vben-core/shadcn-ui';
- import Title from './auth-title.vue';
- interface Props {
- /**
- * @zh_CN 是否处于加载处理状态
- */
- loading?: boolean;
- /**
- * @zh_CN 登陆路径
- */
- loginPath?: string;
- }
- defineOptions({
- name: 'AuthenticationForgetPassword',
- });
- const props = withDefaults(defineProps<Props>(), {
- loading: false,
- loginPath: LOGIN_PATH,
- });
- const emit = defineEmits<{
- submit: [string];
- }>();
- const router = useRouter();
- const formState = reactive({
- email: '',
- submitted: false,
- });
- const emailStatus = computed(() => {
- return formState.submitted && !formState.email ? 'error' : 'default';
- });
- function handleSubmut() {
- formState.submitted = true;
- if (emailStatus.value !== 'default') {
- return;
- }
- emit('submit', formState.email);
- }
- function goLogin() {
- router.push(props.loginPath);
- }
- </script>
- <template>
- <div>
- <Title>
- {{ $t('authentication.forgetPassword') }} 🤦🏻♂️
- <template #desc>
- {{ $t('authentication.forgetPasswordSubtitle') }}
- </template>
- </Title>
- <div class="mb-6">
- <VbenInput
- v-model="formState.email"
- :error-tip="$t('authentication.emailTip')"
- :label="$t('authentication.email')"
- :status="emailStatus"
- autofocus
- name="email"
- placeholder="example@example.com"
- type="text"
- />
- </div>
- <div>
- <VbenButton class="mt-2 w-full" @click="handleSubmut">
- {{ $t('authentication.sendResetLink') }}
- </VbenButton>
- <VbenButton class="mt-4 w-full" variant="outline" @click="goLogin()">
- {{ $t('common.back') }}
- </VbenButton>
- </div>
- </div>
- </template>
|