config.d.ts 3.6 KB

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