From 72ee8fb6fca3bb311a4673e04506f5b28cc400f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?piexlMax=28=E5=A5=87=E6=B7=BC?= Date: Thu, 10 Jul 2025 14:52:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(router):=20=E4=BF=AE=E5=A4=8D=E8=B7=AF?= =?UTF-8?q?=E7=94=B1keep-alive=E9=80=BB=E8=BE=91=E5=B9=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BB=84=E4=BB=B6=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/pinia/modules/router.js | 18 ++++++++++++++++++ web/src/view/systemTools/autoCode/mcp.vue | 4 ++++ web/src/view/systemTools/autoCode/mcpTest.vue | 5 +++++ 3 files changed, 27 insertions(+) diff --git a/web/src/pinia/modules/router.js b/web/src/pinia/modules/router.js index 36af5132..22e59d86 100644 --- a/web/src/pinia/modules/router.js +++ b/web/src/pinia/modules/router.js @@ -52,14 +52,32 @@ export const useRouterStore = defineStore('router', () => { const asyncRouterFlag = ref(0) const setKeepAliveRouters = (history) => { const keepArrTemp = [] + + // 1. 首先添加原有的keepAlive配置 + keepArrTemp.push(...keepAliveRoutersArr) + history.forEach((item) => { + // 2. 为所有history中的路由强制启用keep-alive + // 通过routeMap获取路由信息,然后通过pathInfo获取组件名 + const routeInfo = routeMap[item.name] + if (routeInfo && routeInfo.meta && routeInfo.meta.path) { + const componentName = pathInfo[routeInfo.meta.path] + if (componentName) { + keepArrTemp.push(componentName) + } + } + + // 3. 如果子路由在tabs中打开,父路由也需要keepAlive if (nameMap[item.name]) { keepArrTemp.push(nameMap[item.name]) } }) + keepAliveRouters.value = Array.from(new Set(keepArrTemp)) + console.log(keepAliveRouters.value) } + const route = useRoute() emitter.on('setKeepAlive', setKeepAliveRouters) diff --git a/web/src/view/systemTools/autoCode/mcp.vue b/web/src/view/systemTools/autoCode/mcp.vue index 16f8bc0b..0113a7b5 100644 --- a/web/src/view/systemTools/autoCode/mcp.vue +++ b/web/src/view/systemTools/autoCode/mcp.vue @@ -83,6 +83,10 @@ import { ref, reactive } from 'vue' import { ElMessage } from 'element-plus' import { mcp } from '@/api/autoCode' +defineOptions({ + name: 'MCP' +}) + const formRef = ref(null) const form = reactive({ name: '', diff --git a/web/src/view/systemTools/autoCode/mcpTest.vue b/web/src/view/systemTools/autoCode/mcpTest.vue index 1a15c188..c20704e8 100644 --- a/web/src/view/systemTools/autoCode/mcpTest.vue +++ b/web/src/view/systemTools/autoCode/mcpTest.vue @@ -139,6 +139,11 @@ import { ElMessage } from 'element-plus' import { VideoPlay, DocumentCopy } from '@element-plus/icons-vue' // Added DocumentCopy import { mcpList, mcpTest } from '@/api/autoCode' +defineOptions({ + name: 'MCPTest' +}) + + const mcpTools = ref([]) const testDialogVisible = ref(false) const currentTestingTool = ref(null)