import type { RouteRecordRaw, RouteMeta } from 'vue-router'; import { defineComponent } from 'vue'; export type AppRouteModule = AppRouteRecordRaw; 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; } export interface Meta { // 名称 title: string; // 是否忽略权限 ignoreAuth?: boolean; //权限数组集合 permissions?: string[]; // 是否不缓存 预留功能 并未生效 noKeepAlive?: boolean; // 是否固定在tab上 affix?: boolean; // tab上的图标 icon?: string; // 跳转地址 frameSrc?: string; // 外链跳转地址 externalLink?: string; //隐藏 hidden?: boolean; } export interface Menu { title: string; key: string; meta: RouteMeta; name: string; component?: Component | string; components?: Component; children?: AppRouteRecordRaw[]; props?: Recordable; fullPath?: string; icon?: any; path: string; permissions?: string[]; redirect?: string; sort?: number; }