25 changed files with 455 additions and 400 deletions
@ -0,0 +1,104 @@ |
|||||
|
import { ContentEnum, RouterTransitionEnum } from '/@/enums/appEnum'; |
||||
|
import { MenuThemeEnum, TopMenuAlignEnum, TriggerEnum } from '/@/enums/menuEnum'; |
||||
|
|
||||
|
export enum HandlerEnum { |
||||
|
CHANGE_LAYOUT, |
||||
|
// menu
|
||||
|
MENU_HAS_DRAG, |
||||
|
MENU_ACCORDION, |
||||
|
MENU_TRIGGER, |
||||
|
MENU_TOP_ALIGN, |
||||
|
MENU_COLLAPSED, |
||||
|
MENU_COLLAPSED_SHOW_TITLE, |
||||
|
MENU_WIDTH, |
||||
|
MENU_SHOW_SIDEBAR, |
||||
|
MENU_THEME, |
||||
|
MENU_SPLIT, |
||||
|
MENU_SHOW_SEARCH, |
||||
|
|
||||
|
// header
|
||||
|
HEADER_SHOW, |
||||
|
HEADER_THEME, |
||||
|
HEADER_FIXED, |
||||
|
|
||||
|
TABS_SHOW_QUICK, |
||||
|
TABS_SHOW, |
||||
|
TABS_SHOW_ICON, |
||||
|
|
||||
|
OPEN_PAGE_LOADING, |
||||
|
OPEN_ROUTE_TRANSITION, |
||||
|
ROUTER_TRANSITION, |
||||
|
LOCK_TIME, |
||||
|
FULL_CONTENT, |
||||
|
CONTENT_MODE, |
||||
|
SHOW_BREADCRUMB, |
||||
|
SHOW_BREADCRUMB_ICON, |
||||
|
GRAY_MODE, |
||||
|
COLOR_WEAK, |
||||
|
SHOW_LOGO, |
||||
|
} |
||||
|
|
||||
|
export const themeOptions = [ |
||||
|
{ |
||||
|
value: MenuThemeEnum.LIGHT, |
||||
|
label: '亮色', |
||||
|
}, |
||||
|
{ |
||||
|
value: MenuThemeEnum.DARK, |
||||
|
label: '暗色', |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const contentModeOptions = [ |
||||
|
{ |
||||
|
value: ContentEnum.FULL, |
||||
|
label: '流式', |
||||
|
}, |
||||
|
{ |
||||
|
value: ContentEnum.FIXED, |
||||
|
label: '定宽', |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const topMenuAlignOptions = [ |
||||
|
{ |
||||
|
value: TopMenuAlignEnum.CENTER, |
||||
|
label: '居中', |
||||
|
}, |
||||
|
{ |
||||
|
value: TopMenuAlignEnum.START, |
||||
|
label: '居左', |
||||
|
}, |
||||
|
{ |
||||
|
value: TopMenuAlignEnum.END, |
||||
|
label: '居右', |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const menuTriggerOptions = [ |
||||
|
{ |
||||
|
value: TriggerEnum.NONE, |
||||
|
label: '不显示', |
||||
|
}, |
||||
|
{ |
||||
|
value: TriggerEnum.FOOTER, |
||||
|
label: '底部', |
||||
|
}, |
||||
|
{ |
||||
|
value: TriggerEnum.HEADER, |
||||
|
label: '顶部', |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const routerTransitionOptions = [ |
||||
|
RouterTransitionEnum.ZOOM_FADE, |
||||
|
RouterTransitionEnum.FADE, |
||||
|
RouterTransitionEnum.ZOOM_OUT, |
||||
|
RouterTransitionEnum.FADE_SIDE, |
||||
|
RouterTransitionEnum.FADE_BOTTOM, |
||||
|
].map((item) => { |
||||
|
return { |
||||
|
label: item, |
||||
|
value: item, |
||||
|
}; |
||||
|
}); |
||||
@ -0,0 +1,186 @@ |
|||||
|
import { HandlerEnum } from './const'; |
||||
|
import { MenuThemeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; |
||||
|
import { updateColorWeak, updateGrayMode } from '/@/setup/theme'; |
||||
|
import { appStore } from '/@/store/modules/app'; |
||||
|
import { ProjectConfig } from '/@/types/config'; |
||||
|
|
||||
|
export function baseHandler(event: HandlerEnum, value: any) { |
||||
|
const config = handler(event, value); |
||||
|
appStore.commitProjectConfigState(config); |
||||
|
} |
||||
|
|
||||
|
export function handler(event: HandlerEnum, value: any): DeepPartial<ProjectConfig> { |
||||
|
switch (event) { |
||||
|
case HandlerEnum.CHANGE_LAYOUT: |
||||
|
const { mode, type, split } = value; |
||||
|
const splitOpt = split === undefined ? { split } : {}; |
||||
|
let headerSetting = {}; |
||||
|
if (type === MenuTypeEnum.TOP_MENU) { |
||||
|
headerSetting = { |
||||
|
theme: MenuThemeEnum.DARK, |
||||
|
}; |
||||
|
} |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
mode, |
||||
|
type, |
||||
|
collapsed: false, |
||||
|
show: true, |
||||
|
...splitOpt, |
||||
|
}, |
||||
|
headerSetting, |
||||
|
}; |
||||
|
|
||||
|
case HandlerEnum.MENU_HAS_DRAG: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
hasDrag: value, |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
case HandlerEnum.MENU_ACCORDION: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
accordion: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_TRIGGER: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
trigger: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_TOP_ALIGN: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
topMenuAlign: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_COLLAPSED: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
collapsed: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_WIDTH: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
menuWidth: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_COLLAPSED_SHOW_TITLE: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
collapsedShowTitle: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_SHOW_SIDEBAR: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
show: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_THEME: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
theme: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_SPLIT: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
split: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.MENU_SHOW_SEARCH: |
||||
|
return { |
||||
|
menuSetting: { |
||||
|
showSearch: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.OPEN_PAGE_LOADING: |
||||
|
return { |
||||
|
openPageLoading: value, |
||||
|
}; |
||||
|
case HandlerEnum.OPEN_ROUTE_TRANSITION: |
||||
|
return { |
||||
|
openRouterTransition: value, |
||||
|
}; |
||||
|
case HandlerEnum.ROUTER_TRANSITION: |
||||
|
return { |
||||
|
routerTransition: value, |
||||
|
}; |
||||
|
case HandlerEnum.LOCK_TIME: |
||||
|
return { |
||||
|
lockTime: value, |
||||
|
}; |
||||
|
case HandlerEnum.FULL_CONTENT: |
||||
|
return { |
||||
|
fullContent: value, |
||||
|
}; |
||||
|
case HandlerEnum.CONTENT_MODE: |
||||
|
return { |
||||
|
contentMode: value, |
||||
|
}; |
||||
|
case HandlerEnum.SHOW_BREADCRUMB: |
||||
|
return { |
||||
|
showBreadCrumb: value, |
||||
|
}; |
||||
|
case HandlerEnum.SHOW_BREADCRUMB_ICON: |
||||
|
return { |
||||
|
showBreadCrumbIcon: value, |
||||
|
}; |
||||
|
case HandlerEnum.GRAY_MODE: |
||||
|
updateGrayMode(value); |
||||
|
return { |
||||
|
grayMode: value, |
||||
|
}; |
||||
|
case HandlerEnum.COLOR_WEAK: |
||||
|
updateColorWeak(value); |
||||
|
return { |
||||
|
colorWeak: value, |
||||
|
}; |
||||
|
case HandlerEnum.SHOW_LOGO: |
||||
|
return { |
||||
|
showLogo: value, |
||||
|
}; |
||||
|
case HandlerEnum.TABS_SHOW_QUICK: |
||||
|
return { |
||||
|
multiTabsSetting: { |
||||
|
showQuick: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.TABS_SHOW_QUICK: |
||||
|
return { |
||||
|
multiTabsSetting: { |
||||
|
showIcon: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.TABS_SHOW: |
||||
|
return { |
||||
|
multiTabsSetting: { |
||||
|
show: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.HEADER_THEME: |
||||
|
return { |
||||
|
headerSetting: { |
||||
|
theme: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.HEADER_FIXED: |
||||
|
return { |
||||
|
headerSetting: { |
||||
|
fixed: value, |
||||
|
}, |
||||
|
}; |
||||
|
case HandlerEnum.HEADER_SHOW: |
||||
|
return { |
||||
|
headerSetting: { |
||||
|
show: value, |
||||
|
}, |
||||
|
}; |
||||
|
default: |
||||
|
return {}; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue