types.ts 1.1 KB
Newer Older
V
Vben 已提交
1
import type { RouteRecordRaw, RouteMeta } from 'vue-router';
陈文彬 已提交
2
import { RoleEnum } from '/@/enums/roleEnum';
V
vben 已提交
3 4 5 6 7 8
import { defineComponent } from 'vue';

export type Component<T extends any = any> =
  | ReturnType<typeof defineComponent>
  | (() => Promise<typeof import('*.vue')>)
  | (() => Promise<T>);
V
vben 已提交
9 10

// @ts-ignore
陈文彬 已提交
11
export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
V
vben 已提交
12
  name: string;
陈文彬 已提交
13
  meta: RouteMeta;
V
vben 已提交
14
  component?: Component | string;
V
vben 已提交
15
  components?: Component;
陈文彬 已提交
16
  children?: AppRouteRecordRaw[];
V
vben 已提交
17
  props?: Recordable;
V
vben 已提交
18
  fullPath?: string;
陈文彬 已提交
19
}
V
Vben 已提交
20

V
vben 已提交
21 22 23 24 25
export interface MenuTag {
  type?: 'primary' | 'error' | 'warn' | 'success';
  content?: string;
  dot?: boolean;
}
陈文彬 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

export interface Menu {
  name: string;

  icon?: string;

  path: string;

  disabled?: boolean;

  children?: Menu[];

  orderNo?: number;

  roles?: RoleEnum[];

  meta?: Partial<RouteMeta>;
V
vben 已提交
43 44

  tag?: MenuTag;
45 46

  hideMenu?: boolean;
陈文彬 已提交
47
}
V
vben 已提交
48

陈文彬 已提交
49 50 51 52 53
export interface MenuModule {
  orderNo?: number;
  menu: Menu;
}

V
vben 已提交
54 55
// export type AppRouteModule = RouteModule | AppRouteRecordRaw;
export type AppRouteModule = AppRouteRecordRaw;