vben
2021-01-01 0419a070413be34ea5455ed955fa51d8c522da86
src/types/config.d.ts
@@ -1,26 +1,26 @@
// 左侧菜单, 顶部菜单
import { MenuTypeEnum, MenuModeEnum, MenuThemeEnum } from '/@/enums/menuEnum';
import { ContentEnum, PermissionModeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
import { MenuTypeEnum, MenuModeEnum, TriggerEnum } from '/@/enums/menuEnum';
import { ContentEnum, PermissionModeEnum, ThemeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
import { CacheTypeEnum } from '/@/enums/cacheEnum';
import type { LocaleType } from '/@/locales/types';
export interface MessageSetting {
  title: string;
  // 取消按钮的文字,
  cancelText: string;
  // 确认按钮的文字
  okText: string;
}
export interface MenuSetting {
  bgColor: string;
  fixed: boolean;
  collapsed: boolean;
  collapsedShowTitle: boolean;
  hasDrag: boolean;
  showSearch: boolean;
  canDrag: boolean;
  show: boolean;
  hidden: boolean;
  split: boolean;
  menuWidth: number;
  mode: MenuModeEnum;
  type: MenuTypeEnum;
  theme: MenuThemeEnum;
  theme: ThemeEnum;
  topMenuAlign: 'start' | 'center' | 'end';
  trigger: TriggerEnum;
  accordion: boolean;
  closeMixSidebarOnChange: boolean;
  collapsedShowTitle: boolean;
  mixSideTrigger: 'click' | 'hover';
}
export interface MultiTabsSetting {
@@ -28,27 +28,59 @@
  show: boolean;
  // 开启快速操作
  showQuick: boolean;
  // 显示icon
  showIcon: boolean;
  // 缓存最大数量
  max: number;
  canDrag: boolean;
  // 显示刷新按钮
  showRedo: boolean;
}
export interface HeaderSetting {
  bgColor: string;
  fixed: boolean;
  show: boolean;
  theme: MenuThemeEnum;
  // 显示刷新按钮
  showRedo: boolean;
  theme: ThemeEnum;
  // 显示全屏按钮
  showFullScreen: boolean;
  // 开启全屏功能
  useLockPage: boolean;
  // 显示文档按钮
  showDoc: boolean;
  showGithub: boolean;
  // 显示消息中心按钮
  showNotice: boolean;
  showSearch: boolean;
}
export interface LocaleSetting {
  show: boolean;
  // Current language
  lang: LocaleType;
  // default language
  fallback: LocaleType;
  // available Locales
  availableLocales: LocaleType[];
}
export interface TransitionSetting {
  //  Whether to open the page switching animation
  enable: boolean;
  // Route basic switching animation
  basicTransition: RouterTransitionEnum;
  // Whether to open page switching loading
  openPageLoading: boolean;
  // Whether to open the top progress bar
  openNProgress: boolean;
}
export interface ProjectConfig {
  locale: LocaleSetting;
  permissionCacheType: CacheTypeEnum;
  // 是否显示配置按钮
  showSettingButton: boolean;
  // 权限模式
@@ -65,42 +97,31 @@
  contentMode: ContentEnum;
  // 是否显示logo
  showLogo: boolean;
  showFooter: boolean;
  headerSetting: HeaderSetting;
  // 菜单类型
  // menuType: MenuTypeEnum;
  menuSetting: MenuSetting;
  messageSetting: MessageSetting;
  // 多标签页设置
  multiTabsSetting: MultiTabsSetting;
  transitionSetting: TransitionSetting;
  // pageLayout是否开启keep-alive
  openKeepAlive: boolean;
  //
  // 锁屏时间
  lockTime: number;
  // 显示面包屑
  showBreadCrumb: boolean;
  // 显示面包屑图标
  showBreadCrumbIcon: boolean;
  // 使用error-handler-plugin
  useErrorHandle: boolean;
  // 开启页面切换动画
  openRouterTransition: boolean;
  // 路由切换动画
  routerTransition: RouterTransitionEnum;
  // 是否开启登录安全校验
  openLoginVerify: boolean;
  // 是否监听网络变化
  listenNetWork: boolean;
  // 是否开启页面切换loading
  openPageLoading: boolean;
  // 是否开启回到顶部
  useOpenBackTop: boolean;
  // 开启顶部进度条
  openNProgress: boolean;
  // 是否可以嵌入iframe页面
  canEmbedIFramePage: boolean;
  // 切换界面的时候是否删除未关闭的message及notify
@@ -112,36 +133,26 @@
export interface GlobConfig {
  // 网站标题
  title: string;
  // 项目路径
  apiUrl: string;
  uploadUrl?: string;
  urlPrefix?: string;
  shortName: string;
}
export interface GlobEnvConfig {
  // 网站标题
  VITE_GLOB_APP_TITLE: string;
  // 项目路径
  VITE_GLOB_API_URL: string;
  VITE_GLOB_API_URL_PREFIX?: string;
  VITE_GLOB_APP_SHORT_NAME: string;
  VITE_GLOB_UPLOAD_URL?: string;
}
//  修改配置
export type SetProjectSettingFn = <T extends keyof ProjectConfig>(
  key: T,
  value: ProjectConfig[T]
) => void;
interface GlobWrap {
  globSetting: Readonly<GlobConfig>;
}
interface ProjectSettingWrap {
  projectSetting: Readonly<ProjectConfig>;
}
export type SettingWrap = GlobWrap & ProjectSettingWrap;