diff --git a/contact-frontend/packages/modules/services/auth/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/auth/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/auth/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/chat/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/chat/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/chat/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/dashboard/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/dashboard/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/dashboard/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/enterprise/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/enterprise/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/enterprise/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/organization/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/organization/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/organization/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/seats/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/seats/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/seats/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/setting/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/setting/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/setting/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/system/src/routes/index.ts b/contact-frontend/packages/modules/services/system/src/routes/index.ts index 8efb7756..7a8201e7 100644 --- a/contact-frontend/packages/modules/services/system/src/routes/index.ts +++ b/contact-frontend/packages/modules/services/system/src/routes/index.ts @@ -35,7 +35,7 @@ const routes: RouteRecordRaw[] = [ { path: 'social', name: ROUTE_NAME.SYSTEM_SOCIAL_INDEX, - component: () => import('../views/HomeView.vue'), + component: () => import('../views/AuthenticatorView.vue'), meta: { title: '认证登录', requiresAuth: true, diff --git a/contact-frontend/packages/modules/services/system/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/system/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/system/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/modules/services/system/src/views/AuthenticatorView.vue b/contact-frontend/packages/modules/services/system/src/views/AuthenticatorView.vue new file mode 100644 index 00000000..21d0c44e --- /dev/null +++ b/contact-frontend/packages/modules/services/system/src/views/AuthenticatorView.vue @@ -0,0 +1,3 @@ + diff --git a/contact-frontend/packages/modules/services/work-order/src/shims-vue-routes.d.ts b/contact-frontend/packages/modules/services/work-order/src/shims-vue-routes.d.ts new file mode 100644 index 00000000..f5805652 --- /dev/null +++ b/contact-frontend/packages/modules/services/work-order/src/shims-vue-routes.d.ts @@ -0,0 +1,13 @@ +import 'vue-router' +import { Component } from 'vue' +declare module 'vue-router' { + interface RouteMeta { + // 是可选的 + icon?: Component, + comingSoon?: boolean + + // 每个路由都必须声明 + requiresAuth: boolean + title: string + } +} diff --git a/contact-frontend/packages/shared/utils/src/routes.ts b/contact-frontend/packages/shared/utils/src/routes.ts index 972ae841..e1cade98 100644 --- a/contact-frontend/packages/shared/utils/src/routes.ts +++ b/contact-frontend/packages/shared/utils/src/routes.ts @@ -1,6 +1,6 @@ import { MenuOption, NIcon } from 'naive-ui' import { Component, h } from 'vue' -import { RouteRecordRaw } from 'vue-router' +import { RouteRecordRaw, RouterLink } from 'vue-router' function renderIcon(icon?: Component) { if (icon) { @@ -18,14 +18,32 @@ export function routesToMenus( array.forEach((route: RouteRecordRaw) => { if (route.children) { result.push({ - label: route.meta?.title, + label: h( + RouterLink, + { + to: { + name: route.name, + }, + }, + { default: () => route.meta?.title as string } + ), + title: route.meta?.title, key: route.path, icon: renderIcon(route.meta?.icon), children: routesToMenus(route.children, true), }) } else { result.push({ - label: route.meta?.title, + label: h( + RouterLink, + { + to: { + name: route.name, + }, + }, + { default: () => route.meta?.title as string } + ), + title: route.meta?.title, key: route.name as string, icon: renderIcon(route.meta?.icon), disabled: route.meta?.disabled as boolean,