import type { RouteRecordRaw } from 'vue-router'; import { RoleEnum } from '/@/enums/roleEnum'; import type { Component } from '/@/components/types'; export interface RouteMeta { // title title: string; // Whether to ignore permissions ignoreAuth?: boolean; // role info roles?: RoleEnum[]; // Whether not to cache ignoreKeepAlive?: boolean; // Is it fixed on tab affix?: boolean; // icon on tab icon?: string; frameSrc?: string; // current page transition transitionName?: string; // Whether the route has been dynamically added hideBreadcrumb?: boolean; // Carrying parameters carryParam?: boolean; // Used internally to mark single-level menus single?: boolean; // Currently active menu currentActiveMenu?: string; // Never show in tab hideTab?: boolean; // Never show in menu hideMenu?: boolean; } // @ts-ignore export interface AppRouteRecordRaw extends Omit { name: string; meta: RouteMeta; component?: Component | string; components?: Component; children?: AppRouteRecordRaw[]; props?: Recordable; fullPath?: string; } export interface MenuTag { type?: 'primary' | 'error' | 'warn' | 'success'; content?: string; dot?: boolean; } export interface Menu { name: string; icon?: string; path: string; disabled?: boolean; children?: Menu[]; orderNo?: number; roles?: RoleEnum[]; meta?: Partial; tag?: MenuTag; hideMenu?: boolean; } export interface MenuModule { orderNo?: number; menu: Menu; } // interface RouteModule { // layout: AppRouteRecordRaw; // routes: AppRouteRecordRaw[]; // children?: AppRouteRecordRaw[]; // component?: Component; // } // export type AppRouteModule = RouteModule | AppRouteRecordRaw; export type AppRouteModule = AppRouteRecordRaw;