From c38cefe47bbb3bc7b59b14c369d6ed184bdf2c4a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com>
Date: Fri, 19 Jun 2026 15:04:05 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96:=20P2=E4=BD=8E=E9=A3=8E?=
=?UTF-8?q?=E9=99=A9=E6=94=B6=E5=B0=BE(router404+meta.icon=E6=B8=85?=
=?UTF-8?q?=E7=90=86+ErrorBoundary=E6=8E=A5=E5=85=A5)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/App.vue | 9 +++++++--
src/router/index.ts | 27 ++++++++++++++++-----------
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index a2eec74..0f81949 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -3,14 +3,18 @@
-
+
+
+
-
+
+
+
@@ -35,6 +39,7 @@ import { useProjectStore } from './stores/project'
import { useAppSettingsStore } from './stores/appSettings'
import i18n from './i18n'
import AiChat from './components/AiChat.vue'
+import ErrorBoundary from './components/ErrorBoundary.vue'
import AppLayout from './components/layout/AppLayout.vue'
import { aiApi } from '@/api'
diff --git a/src/router/index.ts b/src/router/index.ts
index 12dc63b..d519405 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -15,67 +15,72 @@ const routes = [
path: '/dashboard',
name: 'Dashboard',
component: () => import('../views/Dashboard.vue'),
- meta: { title: '总览', icon: 'icon-dashboard' },
+ meta: { title: '总览' },
},
{
path: '/ideas',
name: 'Ideas',
component: () => import('../views/Ideas.vue'),
- meta: { title: '灵感', icon: 'icon-lightbulb' },
+ meta: { title: '灵感' },
},
{
path: '/ideas/:id',
name: 'IdeasDetail',
component: () => import('../views/Ideas.vue'),
- meta: { title: '灵感详情', icon: 'icon-lightbulb' },
+ meta: { title: '灵感详情' },
},
{
path: '/projects',
name: 'Projects',
component: () => import('../views/Projects.vue'),
- meta: { title: '项目', icon: 'icon-apps' },
+ meta: { title: '项目' },
},
{
path: '/projects/:id',
name: 'ProjectDetail',
component: () => import('../views/ProjectDetail.vue'),
- meta: { title: '项目详情', icon: 'icon-apps' },
+ meta: { title: '项目详情' },
},
{
path: '/tasks',
name: 'Tasks',
component: () => import('../views/Tasks.vue'),
- meta: { title: '任务', icon: 'icon-thunder' },
+ meta: { title: '任务' },
},
{
path: '/tasks/:id',
name: 'TaskDetail',
component: () => import('../views/TaskDetail.vue'),
- meta: { title: '任务详情', icon: 'icon-thunder' },
+ meta: { title: '任务详情' },
},
{
path: '/knowledge',
name: 'Knowledge',
component: () => import('../views/Knowledge.vue'),
- meta: { title: '知识库', icon: 'icon-book' },
+ meta: { title: '知识库' },
},
{
path: '/audit',
name: 'AuditLog',
component: () => import('../views/AuditLog.vue'),
- meta: { title: '审批历史', icon: 'icon-audit' },
+ meta: { title: '审批历史' },
},
{
path: '/settings',
name: 'Settings',
component: () => import('../views/Settings.vue'),
- meta: { title: '设置', icon: 'icon-settings' },
+ meta: { title: '设置' },
},
{
path: '/ai-detached',
name: 'AiDetached',
component: () => import('../views/AiDetached.vue'),
- meta: { title: 'AI Chat', icon: 'icon-ai' },
+ meta: { title: 'AI Chat' },
+ },
+ // catch-all:无效路由重定向首页(防白屏)
+ {
+ path: '/:pathMatch(.*)*',
+ redirect: '/',
},
]