types.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import type { RouteRecordRaw, RouteMeta } from 'vue-router';
  2. import { RoleEnum } from '/@/enums/roleEnum';
  3. import { defineComponent } from 'vue';
  4. export type Component<T = any> =
  5. | ReturnType<typeof defineComponent>
  6. | (() => Promise<typeof import('*.vue')>)
  7. | (() => Promise<T>);
  8. // @ts-ignore
  9. export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
  10. name: string;
  11. meta: RouteMeta;
  12. component?: Component | string;
  13. components?: Component;
  14. children?: AppRouteRecordRaw[];
  15. props?: Recordable;
  16. fullPath?: string;
  17. sort?: number;
  18. orderNo?: number;
  19. type?: number;
  20. }
  21. export interface MenuTag {
  22. type?: 'primary' | 'error' | 'warn' | 'success';
  23. content?: string;
  24. dot?: boolean;
  25. }
  26. export interface Menu {
  27. name: string;
  28. icon?: string;
  29. path: string;
  30. // path contains param, auto assignment.
  31. paramPath?: string;
  32. disabled?: boolean;
  33. children?: Menu[];
  34. orderNo?: number;
  35. roles?: RoleEnum[];
  36. meta?: Partial<RouteMeta>;
  37. tag?: MenuTag;
  38. hideMenu?: boolean;
  39. }
  40. export interface MenuModule {
  41. orderNo?: number;
  42. menu: Menu;
  43. }
  44. // export type AppRouteModule = RouteModule | AppRouteRecordRaw;
  45. export type AppRouteModule = AppRouteRecordRaw;