完成了 BOM 管理和生产管理,完成部分发料单、采购计划和调拨单。
This commit is contained in:
19
src/common/config/constant.ts
Normal file
19
src/common/config/constant.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
export const HOME_URL = "/home";
|
||||
export const HOME_NAME = "Home";
|
||||
export const LOGIN_URL = "/login";
|
||||
export const LOGIN_NAME = "Login";
|
||||
export const LAYOUT_NAME = "Layout";
|
||||
export const REDIRECT_NAME = "Redirect";
|
||||
export const NOT_FOUND = "NotFound";
|
||||
export const FORBIDDEN_NAME = "Forbidden";
|
||||
export const FORBIDDEN_URL = "/403";
|
||||
export const SERVER_ERROR_NAME = "ServerError";
|
||||
export const SERVER_ERROR_URL = "/404";
|
||||
export const GATEWAY_TIMEOUT_NAME = "GatewayTimeout";
|
||||
export const GATEWAY_TIMEOUT_URL = "/500";
|
||||
|
||||
export const TEST_URL = "/test";
|
||||
export const TEST_NAME = "test";
|
||||
|
||||
// 移动端最大宽度
|
||||
export const mobileMaxWidthMedia = "(max-width: 960px)";
|
||||
3
src/common/config/index.ts
Normal file
3
src/common/config/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "./constant";
|
||||
export * from "./symbols";
|
||||
export * from "./service";
|
||||
214
src/common/config/service/base-config.ts
Normal file
214
src/common/config/service/base-config.ts
Normal file
@@ -0,0 +1,214 @@
|
||||
import type { ServiceConfig } from "./types";
|
||||
import {
|
||||
ElementPlusSizeEnum,
|
||||
HeaderMenuAlignEnum,
|
||||
HeaderStyleEnum,
|
||||
LanguageEnum,
|
||||
LayoutModeEnum,
|
||||
MenuThemeEnum,
|
||||
PageTransitionEnum,
|
||||
GlobalThemeEnum,
|
||||
TabNavElementModeEnum,
|
||||
ThemePanelTriggerPositionEnum,
|
||||
TitleModeEnum,
|
||||
MenuShowModeEnum,
|
||||
HeaderShowModeEnum,
|
||||
MenuStyleEnum,
|
||||
} from "@/common/enums";
|
||||
|
||||
export const defaultServiceConfig: ServiceConfig = {
|
||||
layout: {
|
||||
name: "Teek Design Vue3",
|
||||
avatar: "/avatar.png",
|
||||
titleMode: TitleModeEnum.ProjectPage,
|
||||
layoutMode: LayoutModeEnum.Vertical,
|
||||
maximize: false,
|
||||
watermark: false,
|
||||
moreRouteChildrenHideInMenuThenOnlyOne: false,
|
||||
tooltipEffect: isDark => (isDark ? "light" : "dark"),
|
||||
elementPlusSize: ElementPlusSizeEnum.Default,
|
||||
language: LanguageEnum.ZhCn,
|
||||
watchFrame: false,
|
||||
lockSecretKey: "my-secret-key",
|
||||
errorLog: {
|
||||
showInHeader: true,
|
||||
printConsole: true,
|
||||
env: [],
|
||||
},
|
||||
themePanelTriggerPosition: ThemePanelTriggerPositionEnum.Header,
|
||||
globalAlert: {
|
||||
enabled: false,
|
||||
text: "Teek Design Vue3 祝您圣诞快乐,愿节日的欢乐与祝福如雪花般纷至沓来!",
|
||||
startDate: "2025-12-25",
|
||||
endDate: "2025-12-25",
|
||||
type: "primary",
|
||||
closable: true,
|
||||
showIcon: false,
|
||||
},
|
||||
},
|
||||
theme: {
|
||||
// 默认与 css var 一致,在这里配置一份,方便生成 1 - 9 的基础色
|
||||
primaryColor: {
|
||||
[GlobalThemeEnum.System]: "", // 跟随系统即自动获取系统预设的主题色
|
||||
[GlobalThemeEnum.Light]: "#395ae3",
|
||||
[GlobalThemeEnum.DarkBlue]: "#4a8fe1",
|
||||
[GlobalThemeEnum.DarkDeep]: "#4a6bc5",
|
||||
[GlobalThemeEnum.DarkMidnight]: "#3a7fdb",
|
||||
[GlobalThemeEnum.DarkNeutral]: "#6d94e6",
|
||||
},
|
||||
globalThemeMode: GlobalThemeEnum.System,
|
||||
defaultDarkMode: GlobalThemeEnum.DarkNeutral,
|
||||
globalThemeClassName: {
|
||||
[GlobalThemeEnum.Light]: "",
|
||||
[GlobalThemeEnum.DarkBlue]: "dark-blue",
|
||||
[GlobalThemeEnum.DarkDeep]: "dark-deep",
|
||||
[GlobalThemeEnum.DarkMidnight]: "dark-midnight",
|
||||
[GlobalThemeEnum.DarkNeutral]: "dark-neutral",
|
||||
},
|
||||
radius: 0.75,
|
||||
weakMode: false,
|
||||
greyMode: false,
|
||||
presetsColor: {
|
||||
[GlobalThemeEnum.Light]: [
|
||||
"#4a6cf7", // 鲜艳蓝
|
||||
"#ff6b6b", // 珊瑚粉
|
||||
"#00bbf9", // 天蓝
|
||||
"#00f5d4", // 蓝绿
|
||||
"#708090", // 石板灰
|
||||
"#f15bb5", // 粉红
|
||||
"#8ac926", // 黄绿
|
||||
"#ff9e6b", // 橙红
|
||||
"#ffd166", // 浅黄
|
||||
],
|
||||
[GlobalThemeEnum.DarkBlue]: [
|
||||
"#5a8fe6", // 亮蓝
|
||||
"#ff6b6b", // 珊瑚粉
|
||||
"#1abc9c", // 蓝绿
|
||||
"#708090", // 石板灰
|
||||
"#f1c40f", // 明黄
|
||||
"#2980b9", // 深蓝
|
||||
"#ff69b4", // 热粉
|
||||
"#d35400", // 深橙
|
||||
"#9b59b6", // 紫色
|
||||
],
|
||||
[GlobalThemeEnum.DarkDeep]: [
|
||||
"#db7093", // 深蓝紫
|
||||
"#8e44ad", // 紫罗兰
|
||||
"#16a085", // 蓝绿
|
||||
"#708090", // 石板灰
|
||||
"#f1c40f", // 明黄
|
||||
"#2c3e50", // 钢蓝
|
||||
"#c0392b", // 深红
|
||||
"#2980b9", // 深蓝
|
||||
"#27ae60", // 绿松石
|
||||
],
|
||||
[GlobalThemeEnum.DarkMidnight]: [
|
||||
"#ff6b6b", // 珊瑚粉
|
||||
"#1abc9c", // 蓝绿
|
||||
"#708090", // 石板灰
|
||||
"#f1c40f", // 明黄
|
||||
"#2c3e50", // 钢蓝
|
||||
"#ff69b4", // 热粉
|
||||
"#d35400", // 深橙
|
||||
"#2980b9", // 深蓝
|
||||
"#27ae60", // 绿松石
|
||||
],
|
||||
[GlobalThemeEnum.DarkNeutral]: [
|
||||
"#ff6b6b", // 珊瑚粉
|
||||
"#42aaff", // 中性天蓝
|
||||
"#4cd890", // 中性蓝绿
|
||||
"#708090", // 石板灰
|
||||
"#ff9e6b", // 中性橙
|
||||
"#ff69b4", // 热粉
|
||||
"#5a7fd9", // 中性蓝紫
|
||||
"#db7093", // 紫红
|
||||
"#9b59b6", // 紫色
|
||||
],
|
||||
},
|
||||
},
|
||||
header: {
|
||||
enabled: true,
|
||||
height: 55,
|
||||
style: HeaderStyleEnum.Page,
|
||||
menuAlign: HeaderMenuAlignEnum.Start,
|
||||
showMode: HeaderShowModeEnum.Fixed,
|
||||
},
|
||||
menu: {
|
||||
enabled: true,
|
||||
width: 240,
|
||||
accordion: false,
|
||||
collapsed: false,
|
||||
collapseWidth: 64,
|
||||
theme: MenuThemeEnum.Light,
|
||||
style: MenuStyleEnum.Simple,
|
||||
showMode: MenuShowModeEnum.Static,
|
||||
autoActivateChild: true,
|
||||
showModeAutoFixed: true,
|
||||
rightClickMenuCollapseToClose: true,
|
||||
},
|
||||
tabNav: {
|
||||
enabled: true,
|
||||
elementMode: TabNavElementModeEnum.Simple,
|
||||
showIcon: true,
|
||||
showDot: true,
|
||||
persistence: false,
|
||||
fixed: true,
|
||||
draggable: true,
|
||||
height: 38,
|
||||
middleClickToClose: false,
|
||||
middleClickToOpen: false,
|
||||
middleClickToOpenInNewWindow: true,
|
||||
showMore: true,
|
||||
wheel: true,
|
||||
maxCount: 0,
|
||||
},
|
||||
breadcrumb: {
|
||||
enabled: true,
|
||||
showIcon: true,
|
||||
hideOnlyOne: false,
|
||||
showHome: true,
|
||||
onlyShowHomeIcon: false,
|
||||
},
|
||||
logo: {
|
||||
enable: true,
|
||||
source: "/logo.png",
|
||||
},
|
||||
transition: {
|
||||
pageEnter: PageTransitionEnum.SlideLeft,
|
||||
progress: true,
|
||||
loading: true,
|
||||
},
|
||||
widget: {
|
||||
menuCollapse: true,
|
||||
refresh: true,
|
||||
search: true,
|
||||
fullscreen: true,
|
||||
notification: true,
|
||||
language: true,
|
||||
theme: true,
|
||||
lockScreen: true,
|
||||
},
|
||||
shortcutKey: {
|
||||
enable: true,
|
||||
search: true,
|
||||
logout: true,
|
||||
lockScreen: true,
|
||||
},
|
||||
router: {
|
||||
whiteList: [""],
|
||||
routeUseI18n: true,
|
||||
nameI18nPrefix: "_route",
|
||||
isKeepAlive: false,
|
||||
isFull: false,
|
||||
cacheDynamicRoutes: false,
|
||||
routeUseTooltip: false,
|
||||
},
|
||||
cache: {
|
||||
cacheKeyPrefix: "teek",
|
||||
tabNavCacheKey: "tabNav",
|
||||
cacheDynamicRoutesKey: "dynamicRoutes",
|
||||
versionCacheKey: "version",
|
||||
tabExcludesUrlKey: ["layoutMode"],
|
||||
cleanCacheWhenUpgrade: false,
|
||||
},
|
||||
} as ServiceConfig;
|
||||
27
src/common/config/service/env-config.ts
Normal file
27
src/common/config/service/env-config.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import type { ServiceConfig } from "./types";
|
||||
|
||||
/**
|
||||
* 根据环境变量创建配置
|
||||
*/
|
||||
export const defineEnvServiceConfig = (): DeepPartial<ServiceConfig> => {
|
||||
const isDev = import.meta.env.MODE === "development";
|
||||
const isTest = import.meta.env.MODE === "test";
|
||||
const isProd = import.meta.env.MODE === "production";
|
||||
|
||||
// 本地环境
|
||||
if (isDev) {
|
||||
return {} as DeepPartial<ServiceConfig>;
|
||||
}
|
||||
|
||||
// 测试环境
|
||||
if (isTest) {
|
||||
return {} as DeepPartial<ServiceConfig>;
|
||||
}
|
||||
|
||||
// 生产环境
|
||||
if (isProd) {
|
||||
return {} as DeepPartial<ServiceConfig>;
|
||||
}
|
||||
|
||||
return {};
|
||||
};
|
||||
10
src/common/config/service/index.ts
Normal file
10
src/common/config/service/index.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import type { ServiceConfig } from "./types";
|
||||
import { defineServiceConfig } from "./override-config";
|
||||
|
||||
export { defaultServiceConfig } from "./base-config";
|
||||
|
||||
// 可以在这里覆盖框架默认的配置
|
||||
const overrideServiceConfig: DeepPartial<ServiceConfig> = {};
|
||||
|
||||
// 冻结对象防止运行时修改
|
||||
export const serviceConfig = Object.freeze(defineServiceConfig(overrideServiceConfig));
|
||||
70
src/common/config/service/override-config.ts
Normal file
70
src/common/config/service/override-config.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import type { ServiceConfig } from "./types";
|
||||
import { defaultServiceConfig } from "./base-config";
|
||||
import { defineEnvServiceConfig } from "./env-config";
|
||||
|
||||
export const defineServiceConfig = (overrideServiceConfig: DeepPartial<ServiceConfig> = {}): ServiceConfig => {
|
||||
const envServiceConfig = defineEnvServiceConfig();
|
||||
|
||||
return {
|
||||
layout: {
|
||||
...defaultServiceConfig.layout,
|
||||
...envServiceConfig?.layout,
|
||||
...overrideServiceConfig.layout,
|
||||
},
|
||||
tabNav: {
|
||||
...defaultServiceConfig.tabNav,
|
||||
...envServiceConfig?.tabNav,
|
||||
...overrideServiceConfig.tabNav,
|
||||
},
|
||||
breadcrumb: {
|
||||
...defaultServiceConfig.breadcrumb,
|
||||
...envServiceConfig?.breadcrumb,
|
||||
...overrideServiceConfig.breadcrumb,
|
||||
},
|
||||
header: {
|
||||
...defaultServiceConfig.header,
|
||||
...envServiceConfig?.header,
|
||||
...overrideServiceConfig.header,
|
||||
},
|
||||
menu: {
|
||||
...defaultServiceConfig.menu,
|
||||
...envServiceConfig?.menu,
|
||||
...overrideServiceConfig.menu,
|
||||
},
|
||||
theme: {
|
||||
...defaultServiceConfig.theme,
|
||||
...envServiceConfig?.theme,
|
||||
...overrideServiceConfig.theme,
|
||||
},
|
||||
logo: {
|
||||
...defaultServiceConfig.logo,
|
||||
...envServiceConfig?.logo,
|
||||
...overrideServiceConfig.logo,
|
||||
},
|
||||
transition: {
|
||||
...defaultServiceConfig.transition,
|
||||
...envServiceConfig?.transition,
|
||||
...overrideServiceConfig.transition,
|
||||
},
|
||||
widget: {
|
||||
...defaultServiceConfig.widget,
|
||||
...envServiceConfig?.widget,
|
||||
...overrideServiceConfig.widget,
|
||||
},
|
||||
shortcutKey: {
|
||||
...defaultServiceConfig.shortcutKey,
|
||||
...envServiceConfig?.shortcutKey,
|
||||
...overrideServiceConfig.shortcutKey,
|
||||
},
|
||||
router: {
|
||||
...defaultServiceConfig.router,
|
||||
...envServiceConfig?.router,
|
||||
...overrideServiceConfig.router,
|
||||
},
|
||||
cache: {
|
||||
...defaultServiceConfig.cache,
|
||||
...envServiceConfig?.cache,
|
||||
...overrideServiceConfig.cache,
|
||||
},
|
||||
} as ServiceConfig;
|
||||
};
|
||||
287
src/common/config/service/types.ts
Normal file
287
src/common/config/service/types.ts
Normal file
@@ -0,0 +1,287 @@
|
||||
import type {
|
||||
HeaderStyleEnum,
|
||||
LanguageEnum,
|
||||
LayoutModeEnum,
|
||||
ElementPlusSizeEnum,
|
||||
MenuThemeEnum,
|
||||
PageTransitionEnum,
|
||||
GlobalThemeEnum,
|
||||
TabNavElementModeEnum,
|
||||
TitleModeEnum,
|
||||
HeaderMenuAlignEnum,
|
||||
ThemePanelTriggerPositionEnum,
|
||||
MenuShowModeEnum,
|
||||
HeaderShowModeEnum,
|
||||
MenuStyleEnum,
|
||||
} from "@/common/enums";
|
||||
|
||||
export interface ServiceConfig {
|
||||
/** 全局配置 */
|
||||
layout: LayoutConfig;
|
||||
/** 主题配置 */
|
||||
theme: ThemeConfig;
|
||||
/** 顶栏配置 */
|
||||
header: headerConfig;
|
||||
/** 菜单栏配置 */
|
||||
menu: MenuConfig;
|
||||
/** 标签栏配置 */
|
||||
tabNav: TabNavConfig;
|
||||
/** 面包屑配置 */
|
||||
breadcrumb: BreadcrumbConfig;
|
||||
/** Logo 配置 */
|
||||
logo: LogoConfig;
|
||||
/** 动画配置 */
|
||||
transition: TransitionConfig;
|
||||
/** 小部件配置 */
|
||||
widget: WidgetConfig;
|
||||
/** 快捷键配置 */
|
||||
shortcutKey: ShortcutKeyConfig;
|
||||
/** 路由配置 */
|
||||
router: RouterConfig;
|
||||
/** 缓存配置 */
|
||||
cache: CacheConfig;
|
||||
}
|
||||
|
||||
export interface LayoutConfig {
|
||||
/** 系统名称 */
|
||||
name: string;
|
||||
/** 默认头像 */
|
||||
avatar: string;
|
||||
/** 标题在浏览器标签上的多种模式 */
|
||||
titleMode: TitleModeEnum;
|
||||
/** 布局设置 */
|
||||
layoutMode: LayoutModeEnum;
|
||||
/** PageContent 是否开启最大化,默认不开启(false) */
|
||||
maximize: boolean;
|
||||
/** 是否开启水印 */
|
||||
watermark: boolean;
|
||||
/** El 组件尺寸 */
|
||||
elementPlusSize: ElementPlusSizeEnum;
|
||||
/**
|
||||
* 这是路由和菜单呼应可能产生的问题而需要配置:alwaysShowRoot 为 false 情况(确保您了解路由的配置规则,如果不了解,前往 router/router-config 查看)
|
||||
* true:存在多个二级路由,但是只有一个二级路由 hideInMenu 为 false,举例:有 5 个二级路由,但是有 4 个二级路由 hideInMenu: true,则需要开启 true,确保菜单只渲染剩下的路由
|
||||
*
|
||||
* 为 true 的场景较少见,如果真的遇到,则开启为 true,否则不建议开启,虽然 true 能无需后顾之忧,但是会多重复一次过滤递归,即消耗点性能
|
||||
*
|
||||
* 如果看不懂这个配置没关系,当您配置路由时遇到为 true 的场景时,自然懂得
|
||||
*/
|
||||
moreRouteChildrenHideInMenuThenOnlyOne: boolean;
|
||||
/** 布局的 el-toolTip 风格 */
|
||||
tooltipEffect: "light" | "dark" | ((isDark: boolean) => "light" | "dark");
|
||||
/** 国际化 */
|
||||
language: LanguageEnum;
|
||||
/** 是否监听 IFrame 传来的通信,用于 Portal 门户系统,来监听门户所有 IFrame 嵌入系统的通信,比如 A 系统想打开 B 系统,则告诉 Portal 门户帮忙打开 */
|
||||
watchFrame: boolean;
|
||||
/** 锁屏密钥 */
|
||||
lockSecretKey: string;
|
||||
errorLog: {
|
||||
/** 是否在顶部显示错误日志图标 */
|
||||
showInHeader: boolean;
|
||||
/** 是否打印错误日志到控制台 */
|
||||
printConsole: boolean;
|
||||
/** 日志收集的环境,对应 .evn.xxx,如 development、test、production */
|
||||
env: string[];
|
||||
};
|
||||
/** 主题面板触发按钮位置 */
|
||||
themePanelTriggerPosition: ThemePanelTriggerPositionEnum;
|
||||
/** 全局提示配置 */
|
||||
globalAlert?: {
|
||||
/** 是否启用提示,默认为 true */
|
||||
enabled?: boolean;
|
||||
/** 开始时间,默认当天 */
|
||||
startDate?: string;
|
||||
/** 结束时间,默认为 startDate */
|
||||
endDate?: string;
|
||||
/** 提示文本 */
|
||||
text?: string;
|
||||
/** 类型,默认 primary */
|
||||
type?: "primary" | "success" | "warning" | "danger" | "error" | "info" | "secondary";
|
||||
/** 是否可以关闭,默认 false */
|
||||
closable?: boolean;
|
||||
/** 是否显示类型图标,默认 false */
|
||||
showIcon?: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export interface ThemeConfig {
|
||||
/** 主题色 */
|
||||
primaryColor: Partial<Record<GlobalThemeEnum, string>>;
|
||||
/** 系统主题 */
|
||||
globalThemeMode: GlobalThemeEnum;
|
||||
/** 指定当切换为暗色模式(html class 为 dark)或跟随系统时,使用的实际暗色模式 */
|
||||
defaultDarkMode: GlobalThemeEnum;
|
||||
/** 不同主题模式在 html 的 className */
|
||||
globalThemeClassName: Partial<Record<GlobalThemeEnum, string>>;
|
||||
/** 圆角 */
|
||||
radius: number;
|
||||
/** 是否开启灰色主题 */
|
||||
weakMode: boolean;
|
||||
/** 是否开启色弱主题 */
|
||||
greyMode: boolean;
|
||||
/** 预设颜色 */
|
||||
presetsColor: Partial<Record<GlobalThemeEnum, string[]>>;
|
||||
}
|
||||
|
||||
export interface headerConfig {
|
||||
/** 是否使用顶栏 */
|
||||
enabled: boolean;
|
||||
/** 顶部高度 */
|
||||
height: number;
|
||||
/** 顶部样式 */
|
||||
style: HeaderStyleEnum;
|
||||
/** 菜单显示模式 */
|
||||
showMode: HeaderShowModeEnum;
|
||||
/** 顶部菜单样式 */
|
||||
menuAlign: HeaderMenuAlignEnum;
|
||||
}
|
||||
|
||||
export interface MenuConfig {
|
||||
/** 是否使用菜单栏 */
|
||||
enabled: boolean;
|
||||
/** 菜单宽度 */
|
||||
width: number;
|
||||
/** 是否开启菜单手风琴 */
|
||||
accordion: boolean;
|
||||
/** 是否折叠菜单栏 */
|
||||
collapsed: boolean;
|
||||
/** 菜单栏折叠宽度 */
|
||||
collapseWidth: number;
|
||||
/** 菜单栏的主题色,暗色和亮色,默认为暗色 */
|
||||
theme: MenuThemeEnum;
|
||||
/** 菜单样式,朴素和圆润,默认为朴素 */
|
||||
style: MenuStyleEnum;
|
||||
/** 菜单显示模式 */
|
||||
showMode: MenuShowModeEnum;
|
||||
/** 点击目录时自动激活子菜单,在分栏布局生效 */
|
||||
autoActivateChild: boolean;
|
||||
/** 当菜单显示模式为 Auto 时,是否固定菜单栏 */
|
||||
showModeAutoFixed: boolean;
|
||||
/** 鼠标右键点击关闭菜单栏 */
|
||||
rightClickMenuCollapseToClose: boolean;
|
||||
}
|
||||
|
||||
export interface TabNavConfig {
|
||||
/** 是否使用 tagsNav */
|
||||
enabled: boolean;
|
||||
/** 标签栏元素模式设置 */
|
||||
elementMode: TabNavElementModeEnum;
|
||||
/** 标签栏 Icon 是否显示 */
|
||||
showIcon: boolean;
|
||||
/** 标签栏 Dot 是否显示,优先级低于 showTabNavDot,仅在 elementMode 为 simple、classic 模式生效 */
|
||||
showDot: boolean;
|
||||
/** 是否记录打开过(没关闭)的 tags,下次打开会加载在 tagsNav */
|
||||
persistence: boolean;
|
||||
/** 是否固定标签栏 */
|
||||
fixed: boolean;
|
||||
/** 是否开启多标签页拖拽 */
|
||||
draggable: boolean;
|
||||
/** 标签栏高度 */
|
||||
height: number;
|
||||
/** 是否点击中键时关闭标签,优先级低于 middleClickToOpen */
|
||||
middleClickToClose: boolean;
|
||||
/** 是否点击中键时打开标签页,优先级低于 middleClickToOpenWindow */
|
||||
middleClickToOpen: boolean;
|
||||
/** 是否点击中键时新窗口打开标签页 */
|
||||
middleClickToOpenInNewWindow: boolean;
|
||||
/** 显示更多按钮 */
|
||||
showMore: boolean;
|
||||
/** 是否开启鼠标滚轮响应 */
|
||||
wheel: boolean;
|
||||
/** 最大标签数,超出后关闭最先打开的旧标签,0 表示不限制 */
|
||||
maxCount: number;
|
||||
}
|
||||
|
||||
export interface BreadcrumbConfig {
|
||||
/** 是否使用 Breadcrumb */
|
||||
enabled: boolean;
|
||||
/** 面包屑 Icon 是否显示 */
|
||||
showIcon: boolean;
|
||||
/** 面包屑是否只有一个时隐藏 */
|
||||
hideOnlyOne: boolean;
|
||||
/** 面包屑首页面包屑是否可见,当 onlyShowHomeIcon 为 true 则一定为 false */
|
||||
showHome: boolean;
|
||||
/** 是否只显示首页图标 */
|
||||
onlyShowHomeIcon: boolean;
|
||||
}
|
||||
|
||||
export interface LogoConfig {
|
||||
/** 是否显示 Logo */
|
||||
enable: boolean;
|
||||
/** logo 地址 */
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface TransitionConfig {
|
||||
/** 进入页面过渡动画 */
|
||||
pageEnter: PageTransitionEnum;
|
||||
/** 是否开启页面加载进度动画 */
|
||||
progress: boolean;
|
||||
/** 是否开启页面加载动画 */
|
||||
loading: boolean;
|
||||
}
|
||||
|
||||
export interface WidgetConfig {
|
||||
/** 是否显示菜单栏折叠 */
|
||||
menuCollapse: boolean;
|
||||
/** 是否显示刷新图标 */
|
||||
refresh: boolean;
|
||||
/** 是否显示搜索框 */
|
||||
search: boolean;
|
||||
/** 是否显示全屏图标 */
|
||||
fullscreen: boolean;
|
||||
/** 是否显示通知图标 */
|
||||
notification: boolean;
|
||||
/** 是否显示国际化图标 */
|
||||
language: boolean;
|
||||
/** 是否显示暗黑切换图标 */
|
||||
theme: boolean;
|
||||
/** 是否显示锁屏按钮 */
|
||||
lockScreen: boolean;
|
||||
}
|
||||
|
||||
export interface ShortcutKeyConfig {
|
||||
/** 是否启用快捷键 */
|
||||
enable: boolean;
|
||||
/** 是否启用全局搜索快捷键 */
|
||||
search: boolean;
|
||||
/** 是否启用全局注销快捷键 */
|
||||
logout: boolean;
|
||||
/** 是否启用全局锁屏快捷键 */
|
||||
lockScreen: boolean;
|
||||
}
|
||||
|
||||
export interface RouterConfig {
|
||||
/**
|
||||
* 白名单额三种模式:["*"]、["next"]、[to.path, ...]
|
||||
* '*' 代表加载所有路由;next 代表直接放行,但不加载权限路由;to.path 表示指定的路由可以放行,可以填多个
|
||||
* 优先级:* > next > to.path
|
||||
*/
|
||||
whiteList: string[];
|
||||
/** 「路由」布局是否使用国际化,默认为 false,如果不使用,则需要在路由中给需要在菜单中展示的路由设置 meta: {title: 'xxx'} 用来在菜单中显示文字 */
|
||||
routeUseI18n: boolean;
|
||||
/** 当使用路由国际化时,通过 name 属性读取国际化文本的前缀 */
|
||||
nameI18nPrefix: string;
|
||||
/** 路由是否开启缓存 */
|
||||
isKeepAlive: boolean;
|
||||
/** 是否全屏,不渲染 Layout 布局,只渲染当前路由组件 */
|
||||
isFull: boolean;
|
||||
/** 是否缓存路由,默认不开启(false) */
|
||||
cacheDynamicRoutes: boolean;
|
||||
/** 菜单的文字超出后,是否使用 el-toolTip 提示,仅针二级路由及以上生效 */
|
||||
routeUseTooltip: boolean;
|
||||
}
|
||||
|
||||
export interface CacheConfig {
|
||||
/** 缓存 key 前缀 */
|
||||
cacheKeyPrefix: string;
|
||||
/** 缓存标签栏的 key */
|
||||
tabNavCacheKey: string;
|
||||
/** 缓存版本号的 key */
|
||||
versionCacheKey: string;
|
||||
/** 当 URL 携带参数时,标签栏会出现多个重复且名字一样的 tab,该配置可指定忽略哪些参数生成新的 tab,如果为 * 则忽略所有参数 */
|
||||
tabExcludesUrlKey: string[];
|
||||
/** 缓存路由的 key */
|
||||
cacheDynamicRoutesKey: string;
|
||||
/** 是否在升级时清理所有缓存,默认 false */
|
||||
cleanCacheWhenUpgrade: boolean;
|
||||
}
|
||||
21
src/common/config/symbols.ts
Normal file
21
src/common/config/symbols.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { InjectionKey, Ref } from "vue";
|
||||
import type { ElementPlusSizeEnum } from "@/common/enums";
|
||||
|
||||
interface GlobalConfig {
|
||||
size: Ref<ElementPlusSizeEnum>;
|
||||
}
|
||||
|
||||
/** 全局配置 */
|
||||
export const GlobalConfigKey: InjectionKey<GlobalConfig> = Symbol("GlobalConfig");
|
||||
/** 刷新页面 */
|
||||
export const RefreshPageKey: InjectionKey<(value?: boolean) => void> = Symbol("RefreshPage");
|
||||
/** 刷新 IFrame */
|
||||
export const RefreshIFrameKey: InjectionKey<() => void> = Symbol("RefreshIFrameKey");
|
||||
/** 打开搜索对话框 */
|
||||
export const OpenSearchDialogKey: InjectionKey<() => void> = Symbol("OpenSearchDialog");
|
||||
/** 打开主题面板 */
|
||||
export const OpenThemePanelKey: InjectionKey<() => void> = Symbol("OpenThemePanel");
|
||||
/** 打开锁屏面板 */
|
||||
export const OpenLockPanelKey: InjectionKey<() => void> = Symbol("OpenLockPanel");
|
||||
/** 修改菜单区域状态 */
|
||||
export const UpdateInMenuAreaStateKey: InjectionKey<(state?: boolean) => void> = Symbol("UpdateInMenuAreaStateKey");
|
||||
Reference in New Issue
Block a user