config.d.ts 3.3 KB

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