config.d.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. // 左侧菜单, 顶部菜单
  2. import { MenuTypeEnum, MenuModeEnum, MenuThemeEnum, TriggerEnum } from '/@/enums/menuEnum';
  3. import { ContentEnum, PermissionModeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
  4. export interface MessageSetting {
  5. title: string;
  6. // 取消按钮的文字,
  7. cancelText: string;
  8. // 确认按钮的文字
  9. okText: string;
  10. }
  11. export interface MenuSetting {
  12. collapsed: boolean;
  13. collapsedShowTitle: boolean;
  14. hasDrag: boolean;
  15. showSearch: boolean;
  16. show: boolean;
  17. hidden: boolean;
  18. split: boolean;
  19. menuWidth: number;
  20. mode: MenuModeEnum;
  21. type: MenuTypeEnum;
  22. theme: MenuThemeEnum;
  23. topMenuAlign: 'start' | 'center' | 'end';
  24. collapsedShowSearch: boolean;
  25. trigger: TriggerEnum;
  26. }
  27. export interface MultiTabsSetting {
  28. // 是否显示
  29. show: boolean;
  30. // 开启快速操作
  31. showQuick: boolean;
  32. // 显示icon
  33. showIcon: boolean;
  34. // 缓存最大数量
  35. max: number;
  36. }
  37. export interface HeaderSetting {
  38. fixed: boolean;
  39. show: boolean;
  40. theme: MenuThemeEnum;
  41. // 显示刷新按钮
  42. showRedo: boolean;
  43. // 显示全屏按钮
  44. showFullScreen: boolean;
  45. // 开启全屏功能
  46. useLockPage: boolean;
  47. // 显示文档按钮
  48. showDoc: boolean;
  49. showGithub: boolean;
  50. // 显示消息中心按钮
  51. showNotice: boolean;
  52. }
  53. export interface ProjectConfig {
  54. // 是否显示配置按钮
  55. showSettingButton: boolean;
  56. // 权限模式
  57. permissionMode: PermissionModeEnum;
  58. // 网站灰色模式,用于可能悼念的日期开启
  59. grayMode: boolean;
  60. // 是否开启色弱模式
  61. colorWeak: boolean;
  62. // 主题色
  63. themeColor: string;
  64. // 全屏显示主界面,不显示菜单,及顶部
  65. fullContent: boolean;
  66. // 区域宽度
  67. contentMode: ContentEnum;
  68. // 是否显示logo
  69. showLogo: boolean;
  70. headerSetting: HeaderSetting;
  71. // 菜单类型
  72. // menuType: MenuTypeEnum;
  73. menuSetting: MenuSetting;
  74. messageSetting: MessageSetting;
  75. // 多标签页设置
  76. multiTabsSetting: MultiTabsSetting;
  77. // pageLayout是否开启keep-alive
  78. openKeepAlive: boolean;
  79. // 锁屏时间
  80. lockTime: number;
  81. // 显示面包屑
  82. showBreadCrumb: boolean;
  83. // 显示面包屑图标
  84. showBreadCrumbIcon: boolean;
  85. // 使用error-handler-plugin
  86. useErrorHandle: boolean;
  87. // 开启页面切换动画
  88. openRouterTransition: boolean;
  89. // 路由切换动画
  90. routerTransition: RouterTransitionEnum;
  91. // 是否开启登录安全校验
  92. openLoginVerify: boolean;
  93. // 是否监听网络变化
  94. listenNetWork: boolean;
  95. // 是否开启页面切换loading
  96. openPageLoading: boolean;
  97. // 是否开启回到顶部
  98. useOpenBackTop: boolean;
  99. // 开启顶部进度条
  100. openNProgress: boolean;
  101. // 是否可以嵌入iframe页面
  102. canEmbedIFramePage: boolean;
  103. // 切换界面的时候是否删除未关闭的message及notify
  104. closeMessageOnSwitch: boolean;
  105. // 切换界面的时候是否取消已经发送但是未响应的http请求。
  106. removeAllHttpPending: boolean;
  107. }
  108. export interface GlobConfig {
  109. // 网站标题
  110. title: string;
  111. // 项目路径
  112. apiUrl: string;
  113. urlPrefix?: string;
  114. shortName: string;
  115. }
  116. export interface GlobEnvConfig {
  117. // 网站标题
  118. VITE_GLOB_APP_TITLE: string;
  119. // 项目路径
  120. VITE_GLOB_API_URL: string;
  121. VITE_GLOB_API_URL_PREFIX?: string;
  122. VITE_GLOB_APP_SHORT_NAME: string;
  123. }
  124. // 修改配置
  125. export type SetProjectSettingFn = <T extends keyof ProjectConfig>(
  126. key: T,
  127. value: ProjectConfig[T]
  128. ) => void;
  129. interface GlobWrap {
  130. globSetting: Readonly<GlobConfig>;
  131. }
  132. interface ProjectSettingWrap {
  133. projectSetting: Readonly<ProjectConfig>;
  134. }
  135. export type SettingWrap = GlobWrap & ProjectSettingWrap;