import type { RouteRecordRaw, RouteMeta } from 'vue-router'; import { RoleEnum } from '/@/enums/roleEnum'; import { defineComponent } from 'vue'; export type Component = ReturnType | (() => Promise) | (() => Promise); // @ts-ignore export interface AppRouteRecordRaw extends Omit { name: string; meta: RouteMeta; component?: Component | string; components?: Component; children?: AppRouteRecordRaw[]; props?: Recordable; fullPath?: string; alwaysShow?: boolean; ver?: string; } export interface MenuTag { type?: 'primary' | 'error' | 'warn' | 'success'; content?: string; dot?: boolean; } export interface Menu { name: string; icon?: string; path: string; // path contains param, auto assignment. paramPath?: string; disabled?: boolean; children?: Menu[]; orderNo?: number; roles?: RoleEnum[]; meta?: Partial; tag?: MenuTag; hideMenu?: boolean; alwaysShow?: boolean; } export interface MenuModule { orderNo?: number; menu: Menu; } // export type AppRouteModule = RouteModule | AppRouteRecordRaw; export type AppRouteModule = AppRouteRecordRaw;