12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <script lang="ts" setup>
- import type { LoginAndRegisterParams } from '@vben/common-ui';
- import { useRequest } from '@vben-core/request';
- import { useAccessStore } from '@vben-core/stores';
- import { getUserInfo, userLogin } from '@/apis';
- import { AuthenticationLogin } from '@vben/common-ui';
- import { $t } from '@vben/locales';
- import { notification } from 'ant-design-vue';
- import { computed } from 'vue';
- import { useRouter } from 'vue-router';
- defineOptions({ name: 'Login' });
- const router = useRouter();
- const accessStore = useAccessStore();
- const { loading, runAsync: runUserLogin } = useRequest(userLogin, {
- manual: true,
- });
- const { loading: userInfoLoading, runAsync: runGetUserInfo } = useRequest(
- getUserInfo,
- {
- manual: true,
- },
- );
- /**
- * 异步处理登录操作
- * Asynchronously handle the login process
- * @param values 登录表单数据
- */
- async function handleLogin(values: LoginAndRegisterParams) {
- // 异步处理用户登录操作并获取 accessToken
- // Asynchronously handle the user login operation and obtain the accessToken
- const { accessToken } = await runUserLogin(values);
- // 如果成功获取到 accessToken
- // If accessToken is successfully obtained
- if (accessToken) {
- // 将 accessToken 存储到 accessStore 中
- // Store the accessToken in accessStore
- accessStore.setAccessToken(accessToken);
- // 获取用户信息并存储到 accessStore 中
- // Get user information and store it in accessStore
- const userInfo = await runGetUserInfo();
- accessStore.setUserInfo(userInfo);
- // 跳转到用户信息中定义的 homePath 路径
- // Redirect to the homePath defined in the user information
- await router.push(userInfo.homePath);
- notification.success({
- description: `${$t('authentication.login-success-desc')}:${userInfo.realName}`,
- duration: 3,
- message: $t('authentication.login-success'),
- });
- }
- }
- const loginLoading = computed(() => {
- return loading.value || userInfoLoading.value;
- });
- </script>
- <template>
- <AuthenticationLogin
- username-placeholder="vben"
- password-placeholder="123456"
- :loading="loginLoading"
- @submit="handleLogin"
- />
- </template>
|