fix: 一些基本功能

This commit is contained in:
2025-03-06 19:12:26 +08:00
parent 024f641a41
commit 638462295d
23 changed files with 134 additions and 1182 deletions

View File

@@ -5,11 +5,12 @@ export namespace AuthApi {
export interface LoginParams {
password?: string;
username?: string;
code?: string;
}
/** 登录接口返回值 */
export interface LoginResult {
accessToken: string;
token: string;
}
export interface RefreshTokenResult {
@@ -22,7 +23,19 @@ export namespace AuthApi {
* 登录
*/
export async function loginApi(data: AuthApi.LoginParams) {
return requestClient.post<AuthApi.LoginResult>('/auth/login', data);
return requestClient.post<AuthApi.LoginResult>('login', {
phone: data.username,
password: data.password,
code: data.code,
});
}
/**
* 发送验证码
*/
export async function sendVerificationCode(username: string) {
return requestClient.post('send-verification-code', {
username,
});
}
/**
@@ -38,7 +51,7 @@ export async function refreshTokenApi() {
* 退出登录
*/
export async function logoutApi() {
return baseRequestClient.post('/auth/logout', {
return baseRequestClient.post('logout', {
withCredentials: true,
});
}
@@ -47,5 +60,5 @@ export async function logoutApi() {
* 获取用户权限码
*/
export async function getAccessCodesApi() {
return requestClient.get<string[]>('/auth/codes');
return requestClient.get<string[]>('auth/codes');
}

View File

@@ -8,6 +8,7 @@ import { $t } from '#/locales';
const appName = computed(() => preferences.app.name);
const logo = computed(() => preferences.logo.source);
// const logo = 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/logo.png?Expires=1734595037&OSSAccessKeyId=TMP.3KhpnCAjxkdTGWSj1ZCdYe3e9c6MBfEVZwN1CiHdUKUAT2D1mPEpACYgYMkUiQDVqy9Zqb7VqgUoh21W37FC3CztogHJPN&Signature=KmymeelO2OZxaAmvm2ACDK5UfF8%3D';
</script>
<template>
@@ -16,6 +17,7 @@ const logo = computed(() => preferences.logo.source);
:logo="logo"
:page-description="$t('authentication.pageDesc')"
:page-title="$t('authentication.pageTitle')"
:version="preferences.app.version"
>
<!-- 自定义工具栏 -->
<!-- <template #toolbar></template> -->

View File

@@ -4,6 +4,7 @@ import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants';
import { useWatermark } from '@vben/hooks';
import { resetAllStores, useAccessStore, useUserStore } from '@vben/stores';
import { notification } from 'ant-design-vue';
@@ -12,6 +13,8 @@ import { defineStore } from 'pinia';
import { getAccessCodesApi, getUserInfoApi, loginApi, logoutApi } from '#/api';
import { $t } from '#/locales';
const { updateWatermark } = useWatermark();
export const useAuthStore = defineStore('auth', () => {
const accessStore = useAccessStore();
const userStore = useUserStore();
@@ -23,20 +26,21 @@ export const useAuthStore = defineStore('auth', () => {
* 异步处理登录操作
* Asynchronously handle the login process
* @param params 登录表单数据
* @param onSuccess
*/
async function authLogin(
params: Recordable<any>,
onSuccess?: () => Promise<void> | void,
) {
// 异步处理用户登录操作并获取 accessToken
// 异步处理用户登录操作并获取 token
let userInfo: null | UserInfo = null;
try {
loginLoading.value = true;
const { accessToken } = await loginApi(params);
const { token } = await loginApi(params);
// 如果成功获取到 accessToken
if (accessToken) {
accessStore.setAccessToken(accessToken);
// 如果成功获取到 token
if (token) {
accessStore.setAccessToken(token);
// 获取用户信息并存储到 accessStore 中
const [fetchUserInfoResult, accessCodes] = await Promise.all([
@@ -54,12 +58,18 @@ export const useAuthStore = defineStore('auth', () => {
} else {
onSuccess
? await onSuccess?.()
: await router.push(userInfo.homePath || DEFAULT_HOME_PATH);
: await router.push(userInfo.home_path || DEFAULT_HOME_PATH);
}
if (userInfo?.realName) {
if (userInfo?.nick_name) {
// 这里修改水印内容
await updateWatermark({
contentType: 'multi-line-text',
// 水印内容
content: `${userInfo?.nick_name}\r\n${userInfo?.phone}`,
});
notification.success({
description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.realName}`,
description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.nick_name}`,
duration: 3,
message: $t('authentication.loginSuccess'),
});