fix:页面引用修复
This commit is contained in:
1 parent
838e61ee44
commit
8d2e17478d
4 files changed
+32
-18
No files matched your search
@@ -46,10 +46,6 @@ interface NavItem {
|
||||
children?: NavItem[]
|
||||
}
|
||||
|
||||
interface BreadcrumbItem {
|
||||
title: string
|
||||
path?: string
|
||||
}
|
||||
|
||||
// 组件 Props
|
||||
interface Props {
|
||||
|
||||
@@ -101,9 +101,7 @@ interface Props {
|
||||
}
|
||||
|
||||
// 定义组件属性和默认值
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
notificationCount: 24
|
||||
})
|
||||
const { notificationCount = 24 } = defineProps<Props>()
|
||||
|
||||
// 定义组件事件
|
||||
const emit = defineEmits<{
|
||||
|
||||
@@ -227,9 +227,13 @@ const recentData = [
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: url('/src/assets/dashboard-bg.svg') no-repeat center;
|
||||
background-size: cover;
|
||||
opacity: 0.1;
|
||||
background: linear-gradient(45deg, rgba(255,255,255,0.08) 25%, transparent 25%),
|
||||
linear-gradient(-45deg, rgba(255,255,255,0.08) 25%, transparent 25%),
|
||||
linear-gradient(45deg, transparent 75%, rgba(255,255,255,0.08) 75%),
|
||||
linear-gradient(-45deg, transparent 75%, rgba(255,255,255,0.08) 75%);
|
||||
background-size: 20px 20px;
|
||||
background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
|
||||
opacity: 0.15;
|
||||
border-radius: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<!-- 语言切换器 -->
|
||||
<div class="language-switcher">
|
||||
<el-select v-model="currentLanguage" @change="changeLanguage" size="default" popper-class="language-popper">
|
||||
<el-select v-model="currentLanguage" @change="handleLanguageChange" size="default" popper-class="language-popper">
|
||||
<el-option label="English" value="en" />
|
||||
<el-option label="中文" value="zh" />
|
||||
<el-option label="日本語" value="ja" />
|
||||
@@ -77,7 +77,7 @@ import { useI18n } from 'vue-i18n';
|
||||
import { ElMessage, type FormInstance, type FormRules } from 'element-plus';
|
||||
import { User, Lock } from '@element-plus/icons-vue';
|
||||
import { Login, type LoginRequest } from "@/api/user";
|
||||
import { setI18nLanguage, SupportedLocale } from '@/i18n'
|
||||
import { changeLanguage, type SupportedLocale } from '@/utils/language'
|
||||
|
||||
const router = useRouter();
|
||||
const { t, locale } = useI18n();
|
||||
@@ -108,11 +108,10 @@ const loginRules: FormRules = {
|
||||
};
|
||||
|
||||
// 切换语言
|
||||
function changeLanguage(lang: string) {
|
||||
locale.value = lang;
|
||||
function handleLanguageChange(lang: string) {
|
||||
// 使用统一的语言管理器切换语言
|
||||
changeLanguage(lang as SupportedLocale);
|
||||
currentLanguage.value = lang;
|
||||
localStorage.setItem('userLanguage', lang);
|
||||
setI18nLanguage(lang as SupportedLocale);
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
@@ -148,8 +147,10 @@ async function handleLogin() {
|
||||
};
|
||||
|
||||
const response = await Login(loginData);
|
||||
console.log('登录响应:', response);
|
||||
|
||||
if (response.code === 200) {
|
||||
// 检查响应是否成功 (支持 code 200 或 0)
|
||||
if (response.code === 200 || response.code === 0) {
|
||||
// 登录成功
|
||||
if (response.data && response.data.token) {
|
||||
localStorage.setItem("token", response.data.token);
|
||||
@@ -174,7 +175,22 @@ async function handleLogin() {
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error("登录错误:", error);
|
||||
ElMessage.error(error.response?.data?.message || t("login.error.general"));
|
||||
|
||||
// 优先使用后端返回的错误信息
|
||||
let errorMessage = t("login.error.general"); // 默认错误信息
|
||||
|
||||
if (error.backendMessage) {
|
||||
// 使用 axios 拦截器处理过的后端错误信息
|
||||
errorMessage = error.backendMessage;
|
||||
} else if (error.response?.data?.message) {
|
||||
// 直接从响应中获取后端错误信息
|
||||
errorMessage = error.response.data.message;
|
||||
} else if (error.message && error.message !== "Error") {
|
||||
// 使用错误对象的消息(避免显示通用的 "Error")
|
||||
errorMessage = error.message;
|
||||
}
|
||||
|
||||
ElMessage.error(errorMessage);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user