config.d.ts 3.5 KB

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