From 61514ff3496c57c23796171703d8c036f47d041b Mon Sep 17 00:00:00 2001 From: lichunn <269031597@qq.com> Date: Wed, 12 Feb 2025 22:37:27 -0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E8=B7=AF=E7=94=B1=E5=87=BA=E7=A0=81?= =?UTF-8?q?=E6=8A=8A=E7=A9=BA=E8=8A=82=E7=82=B9=E7=9A=84redirect=E6=8C=AA?= =?UTF-8?q?=E5=88=B0=E7=88=B6=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/plugins/genRouterPlugin.js | 53 +++++++++---------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/packages/vue-generator/src/plugins/genRouterPlugin.js b/packages/vue-generator/src/plugins/genRouterPlugin.js index 135baf8c9..e80cfe2f4 100644 --- a/packages/vue-generator/src/plugins/genRouterPlugin.js +++ b/packages/vue-generator/src/plugins/genRouterPlugin.js @@ -9,32 +9,28 @@ const flattenRoutes = (routes, parentPath = '') => { return routes.reduce((acc, route) => { const fullPath = `${parentPath}${route.path}` - if (route.path !== '') { - if (route.component) { - // 如果存在 component,则直接添加路由 - const newRoute = { - name: `${route.name}`, - path: fullPath, - component: route.component, - children: flattenRoutes(route.children) - } - const redirectChild = route.children.find((item) => item.isDefault) - - if (route.children && redirectChild) { - newRoute.redirect = { name: `${redirectChild.name}` } - } + if (route.component) { + // 如果存在 component,则直接添加路由 + const newRoute = { + name: `${route.name}`, + path: fullPath, + component: route.component, + children: flattenRoutes(route.children) + } + const redirectChild = route.children.find((item) => item.isDefault) - acc.push(newRoute) - } else if (route.children && route.children.length > 0) { - // 如果不存在 component 但有 children,则递归处理 children - const children = flattenRoutes(route.children, fullPath + '/') - // 将处理后的 children 合并到上一层存在 component 的路由中 - acc.push(...children) + if (route.children && redirectChild) { + newRoute.redirect = { name: `${redirectChild.name}` } } - // 如果既没有 component 也没有 children,则不做任何处理 - } else { - acc.push(route) + + acc.push(newRoute) + } else if (route.children && route.children.length > 0) { + // 如果不存在 component 但有 children,则递归处理 children + const children = flattenRoutes(route.children, fullPath + '/') + // 将处理后的 children 合并到上一层存在 component 的路由中 + acc.push(...children) } + // 如果既没有 component 也没有 children,则不做任何处理 return acc }, []) @@ -49,7 +45,7 @@ const convertToNestedRoutes = (schema) => { pageSchema.forEach((item) => { if ((item.meta?.isHome || item.meta?.isDefault) && !isGetHome) { home = { - path: '', + path: '/', redirect: { name: `${item.meta.id}` } } isGetHome = true @@ -90,10 +86,11 @@ const convertToNestedRoutes = (schema) => { }) if (home.redirect) { - result.unshift(home) + home.children = flattenRoutes(result) + return home + } else { + return flattenRoutes(result) } - - return flattenRoutes(result) } // 示例路由数组 @@ -121,7 +118,7 @@ function genRouterPlugin(options = {}) { const exportSnippet = ` export default createRouter({ history: createWebHashHistory(), - routes: [{path: '/',children: routes}] + routes: routes })` const routeSnippets = `const routes = ${resultStr}` From 059b2157fe8e0b9632172d7f67b632443786b1d7 Mon Sep 17 00:00:00 2001 From: lichunn <269031597@qq.com> Date: Wed, 12 Feb 2025 23:20:49 -0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=87=BA=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vue-generator/src/plugins/genRouterPlugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue-generator/src/plugins/genRouterPlugin.js b/packages/vue-generator/src/plugins/genRouterPlugin.js index e80cfe2f4..dcd5fef95 100644 --- a/packages/vue-generator/src/plugins/genRouterPlugin.js +++ b/packages/vue-generator/src/plugins/genRouterPlugin.js @@ -118,7 +118,7 @@ function genRouterPlugin(options = {}) { const exportSnippet = ` export default createRouter({ history: createWebHashHistory(), - routes: routes + routes })` const routeSnippets = `const routes = ${resultStr}` From 54b461ec7c36f9879a985457e3343d88d613dd23 Mon Sep 17 00:00:00 2001 From: lichunn <269031597@qq.com> Date: Thu, 13 Feb 2025 19:23:09 -0800 Subject: [PATCH 3/4] =?UTF-8?q?fix=EF=BC=9A=E8=B0=83=E6=95=B4=E5=87=BA?= =?UTF-8?q?=E7=A0=81=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/plugins/genRouterPlugin.js | 2 +- .../expected/appdemo01/src/router/index.js | 2 +- .../expected/appdemo01/src/router/index.js | 42 +++++++++++-------- .../test/testcases/generator/mockData.js | 2 +- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/packages/vue-generator/src/plugins/genRouterPlugin.js b/packages/vue-generator/src/plugins/genRouterPlugin.js index dcd5fef95..a2beef771 100644 --- a/packages/vue-generator/src/plugins/genRouterPlugin.js +++ b/packages/vue-generator/src/plugins/genRouterPlugin.js @@ -87,7 +87,7 @@ const convertToNestedRoutes = (schema) => { if (home.redirect) { home.children = flattenRoutes(result) - return home + return [home] } else { return flattenRoutes(result) } diff --git a/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js b/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js index b78a3f40c..0048a9c49 100644 --- a/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js +++ b/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js @@ -10,5 +10,5 @@ const routes = [ export default createRouter({ history: createWebHashHistory(), - routes: [{ path: '/', children: routes }] + routes }) diff --git a/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/router/index.js b/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/router/index.js index a28912f42..5f509ebe3 100644 --- a/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/router/index.js +++ b/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/router/index.js @@ -1,26 +1,34 @@ import { createRouter, createWebHashHistory } from 'vue-router' const routes = [ { - name: '5bhD7p5FUsUOTFRN', - path: 'demopage', - component: () => import('@/views/DemoPage.vue'), - children: [] - }, - { - name: 'NTJ4MjvqoVj8OVsc', - path: 'createVm', - component: () => import('@/views/createVm.vue'), - children: [] - }, - { - name: '1737797330916', - path: 'testCanvasRowCol', - component: () => import('@/views/testCanvasRowCol.vue'), - children: [] + path: '/', + redirect: { + name: 'NTJ4MjvqoVj8OVsc' + }, + children: [ + { + name: '5bhD7p5FUsUOTFRN', + path: 'demopage', + component: () => import('@/views/DemoPage.vue'), + children: [] + }, + { + name: 'NTJ4MjvqoVj8OVsc', + path: 'createVm', + component: () => import('@/views/createVm.vue'), + children: [] + }, + { + name: '1737797330916', + path: 'testCanvasRowCol', + component: () => import('@/views/testCanvasRowCol.vue'), + children: [] + } + ] } ] export default createRouter({ history: createWebHashHistory(), - routes: [{ path: '/', children: routes }] + routes }) diff --git a/packages/vue-generator/test/testcases/generator/mockData.js b/packages/vue-generator/test/testcases/generator/mockData.js index 44a2c81e9..602e99e5b 100644 --- a/packages/vue-generator/test/testcases/generator/mockData.js +++ b/packages/vue-generator/test/testcases/generator/mockData.js @@ -1872,7 +1872,7 @@ export const appSchemaDemo01 = { confirmationToken: 'dfb2c162-351f-4f44-ad5f-8998', is_admin: true }, - isHome: false, + isHome: true, _id: 'NTJ4MjvqoVj8OVsc' } }, From dc3a71270e50319ba1701650bb25bf9ea87a7302 Mon Sep 17 00:00:00 2001 From: lichunn <269031597@qq.com> Date: Mon, 17 Feb 2025 02:58:40 -0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E8=B7=AF=E7=94=B1=E5=87=BA=E7=A0=81?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=B2=A1=E6=9C=89=E8=AE=BE=E7=BD=AE=E4=B8=BB?= =?UTF-8?q?=E9=A1=B5=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/plugins/genRouterPlugin.js | 17 ++++++----------- .../expected/appdemo01/src/router/index.js | 13 +++++++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/vue-generator/src/plugins/genRouterPlugin.js b/packages/vue-generator/src/plugins/genRouterPlugin.js index a2beef771..abe0209b8 100644 --- a/packages/vue-generator/src/plugins/genRouterPlugin.js +++ b/packages/vue-generator/src/plugins/genRouterPlugin.js @@ -39,15 +39,14 @@ const flattenRoutes = (routes, parentPath = '') => { const convertToNestedRoutes = (schema) => { const pageSchema = (schema.pageSchema || []).sort((a, b) => a.meta?.router?.length - b.meta?.router?.length) const result = [] - let home = {} + let home = { + path: '/' + } let isGetHome = false pageSchema.forEach((item) => { if ((item.meta?.isHome || item.meta?.isDefault) && !isGetHome) { - home = { - path: '/', - redirect: { name: `${item.meta.id}` } - } + home.redirect = { name: `${item.meta.id}` } isGetHome = true } @@ -85,12 +84,8 @@ const convertToNestedRoutes = (schema) => { }) }) - if (home.redirect) { - home.children = flattenRoutes(result) - return [home] - } else { - return flattenRoutes(result) - } + home.children = flattenRoutes(result) + return [home] } // 示例路由数组 diff --git a/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js b/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js index 0048a9c49..5da170351 100644 --- a/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js +++ b/packages/vue-generator/test/testcases/element-plus-case/expected/appdemo01/src/router/index.js @@ -1,10 +1,15 @@ import { createRouter, createWebHashHistory } from 'vue-router' const routes = [ { - name: '5bhD7p5FUsUOTFRN', - path: 'demopage', - component: () => import('@/views/DemoPage.vue'), - children: [] + path: '/', + children: [ + { + name: '5bhD7p5FUsUOTFRN', + path: 'demopage', + component: () => import('@/views/DemoPage.vue'), + children: [] + } + ] } ]