diff --git a/src/components/Breadcrumb/src/Breadcrumb.vue b/src/components/Breadcrumb/src/Breadcrumb.vue index 0a2dcc5..cc79f1b 100644 --- a/src/components/Breadcrumb/src/Breadcrumb.vue +++ b/src/components/Breadcrumb/src/Breadcrumb.vue @@ -5,7 +5,7 @@ import { useRouter } from 'vue-router' import { usePermissionStore } from '@/store/modules/permission' import { filterBreadcrumb } from './helper' import { filter, treeToList } from '@/utils/tree' -import type { RouteLocationNormalizedLoaded, RouteMeta } from 'vue-router' +import type { RouteLocationNormalizedLoaded } from 'vue-router' import { useI18n } from '@/hooks/web/useI18n' import { Icon } from '@/components/Icon' import { useAppStore } from '@/store/modules/app' @@ -47,15 +47,15 @@ export default defineComponent({ const breadcrumbList = treeToList(unref(levelList)) return breadcrumbList.map((v) => { const disabled = !v.redirect || v.redirect === 'noredirect' - const meta = v.meta as RouteMeta + const meta = v.meta return ( {meta?.icon && breadcrumbIcon.value ? ( <> - {t(v?.meta?.title)} + {t(v?.meta?.title || '')} ) : ( - t(v?.meta?.title) + t(v?.meta?.title || '') )} ) diff --git a/src/components/Breadcrumb/src/helper.ts b/src/components/Breadcrumb/src/helper.ts index fb3ec19..690cff9 100644 --- a/src/components/Breadcrumb/src/helper.ts +++ b/src/components/Breadcrumb/src/helper.ts @@ -1,5 +1,4 @@ import { pathResolve } from '@/utils/routerHelper' -import type { RouteMeta } from 'vue-router' export const filterBreadcrumb = ( routes: AppRouteRecordRaw[], @@ -8,7 +7,7 @@ export const filterBreadcrumb = ( const res: AppRouteRecordRaw[] = [] for (const route of routes) { - const meta = route?.meta as RouteMeta + const meta = route?.meta if (meta.hidden && !meta.canTo) { continue } diff --git a/src/components/Menu/src/components/useRenderMenuItem.tsx b/src/components/Menu/src/components/useRenderMenuItem.tsx index 2aacbf1..d7fede2 100644 --- a/src/components/Menu/src/components/useRenderMenuItem.tsx +++ b/src/components/Menu/src/components/useRenderMenuItem.tsx @@ -1,5 +1,4 @@ import { ElSubMenu, ElMenuItem } from 'element-plus' -import type { RouteMeta } from 'vue-router' import { hasOneShowingChild } from '../helper' import { isUrl } from '@/utils/is' import { useRenderMenuTitle } from './useRenderMenuTitle' @@ -14,7 +13,7 @@ export const useRenderMenuItem = ( ) => { const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => { return routers.map((v) => { - const meta = (v.meta ?? {}) as RouteMeta + const meta = v.meta ?? {} if (!meta.hidden) { const { oneShowingChild, onlyOneChild } = hasOneShowingChild(v.children, v) const fullPath = isUrl(v.path) ? v.path : pathResolve(parentPath, v.path) // getAllParentPath(allRouters, v.path).join('/') diff --git a/src/components/Menu/src/helper.ts b/src/components/Menu/src/helper.ts index b483881..003cf10 100644 --- a/src/components/Menu/src/helper.ts +++ b/src/components/Menu/src/helper.ts @@ -1,4 +1,3 @@ -import type { RouteMeta } from 'vue-router' import { ref, unref } from 'vue' import { findPath } from '@/utils/tree' @@ -21,7 +20,7 @@ export const hasOneShowingChild = ( const onlyOneChild = ref() const showingChildren = children.filter((v) => { - const meta = (v.meta ?? {}) as RouteMeta + const meta = v.meta ?? {} if (meta.hidden) { return false } else { diff --git a/src/components/TabMenu/src/TabMenu.vue b/src/components/TabMenu/src/TabMenu.vue index 38db7f3..4ca39b2 100644 --- a/src/components/TabMenu/src/TabMenu.vue +++ b/src/components/TabMenu/src/TabMenu.vue @@ -173,7 +173,7 @@ export default defineComponent({ {!unref(showTitle) ? undefined : ( -

{t(item.meta?.title)}

+

{t(item.meta?.title || '')}

)} ) diff --git a/src/components/TabMenu/src/helper.ts b/src/components/TabMenu/src/helper.ts index 2213133..cb4696e 100644 --- a/src/components/TabMenu/src/helper.ts +++ b/src/components/TabMenu/src/helper.ts @@ -1,5 +1,4 @@ import { getAllParentPath } from '@/components/Menu/src/helper' -import type { RouteMeta } from 'vue-router' import { isUrl } from '@/utils/is' import { cloneDeep } from 'lodash-es' import { reactive } from 'vue' @@ -12,7 +11,7 @@ export const tabPathMap = reactive({}) export const initTabMap = (routes: AppRouteRecordRaw[]) => { for (const v of routes) { - const meta = (v.meta ?? {}) as RouteMeta + const meta = v.meta ?? {} if (!meta?.hidden) { tabPathMap[v.path] = [] } @@ -26,7 +25,7 @@ export const filterMenusPath = ( const res: AppRouteRecordRaw[] = [] for (const v of routes) { let data: Nullable = null - const meta = (v.meta ?? {}) as RouteMeta + const meta = v.meta ?? {} if (!meta.hidden || meta.canTo) { const allParentPath = getAllParentPath(allRoutes, v.path) diff --git a/src/components/TagsView/src/helper.ts b/src/components/TagsView/src/helper.ts index 22f6a50..912eb8e 100644 --- a/src/components/TagsView/src/helper.ts +++ b/src/components/TagsView/src/helper.ts @@ -1,10 +1,10 @@ -import type { RouteMeta, RouteLocationNormalizedLoaded } from 'vue-router' +import type { RouteLocationNormalizedLoaded } from 'vue-router' import { pathResolve } from '@/utils/routerHelper' export const filterAffixTags = (routes: AppRouteRecordRaw[], parentPath = '') => { let tags: RouteLocationNormalizedLoaded[] = [] routes.forEach((route) => { - const meta = route.meta as RouteMeta + const meta = route.meta ?? {} const tagPath = pathResolve(parentPath, route.path) if (meta?.affix) { tags.push({ ...route, path: tagPath, fullPath: tagPath } as RouteLocationNormalizedLoaded) diff --git a/src/utils/routerHelper.ts b/src/utils/routerHelper.ts index b49377d..791e760 100644 --- a/src/utils/routerHelper.ts +++ b/src/utils/routerHelper.ts @@ -3,7 +3,6 @@ import type { Router, RouteLocationNormalized, RouteRecordNormalized, - RouteMeta, RouteRecordRaw } from 'vue-router' import { isUrl } from '@/utils/is' @@ -47,7 +46,7 @@ export const generateRoutesFn1 = ( const res: AppRouteRecordRaw[] = [] for (const route of routes) { - const meta = route.meta as RouteMeta + const meta = route.meta ?? {} // skip some route if (meta.hidden && !meta.canTo) { continue diff --git a/types/router.d.ts b/types/router.d.ts index 12ca499..2dd807a 100644 --- a/types/router.d.ts +++ b/types/router.d.ts @@ -32,21 +32,23 @@ import { defineComponent } from 'vue' permission: ['edit','add', 'delete'] 设置该路由的权限 } **/ + +interface RouteMetaCustom extends Record { + hidden?: boolean + alwaysShow?: boolean + title?: string + icon?: string + noCache?: boolean + breadcrumb?: boolean + affix?: boolean + activeMenu?: string + noTagsView?: boolean + canTo?: boolean + permission?: string[] +} + declare module 'vue-router' { - interface RouteMeta extends Record { - hidden?: boolean - alwaysShow?: boolean - title?: string - icon?: string - noCache?: boolean - breadcrumb?: boolean - affix?: boolean - activeMenu?: string - noTagsView?: boolean - followAuth?: string - canTo?: boolean - permission?: string[] - } + interface RouteMeta extends RouteMetaCustom {} } type Component = @@ -57,7 +59,7 @@ type Component = declare global { declare interface AppRouteRecordRaw extends Omit { name: string - meta: RouteMeta + meta: RouteMetaCustom component?: Component | string children?: AppRouteRecordRaw[] props?: Recordable @@ -66,7 +68,7 @@ declare global { declare interface AppCustomRouteRecordRaw extends Omit { name: string - meta: RouteMeta + meta: RouteMetaCustom component: string path: string redirect: string