wms-elevue/src/store/modules/projectSetting.ts
2024-07-05 09:34:18 +08:00

110 lines
2.6 KiB
TypeScript

import { defineStore } from 'pinia';
import { store } from '@/store';
import projectSetting from '@/settings/projectSetting';
import type {
IbodySetting,
IheaderSetting,
ImenuSetting,
ImultiTabsSetting,
IcrumbsSetting,
} from '/#/config';
const {
navMode,
navTheme,
headerSetting,
bodySetting,
showFooter,
menuSetting,
multiTabsSetting,
crumbsSetting,
permissionMode,
isPageAnimate,
pageAnimateType,
isProjectSetting,
} = projectSetting;
interface ProjectSettingState {
navMode: string; //导航模式
navTheme: string; //导航风格
headerSetting: IheaderSetting; //顶部设置
bodySetting: IbodySetting; //主体区域
showFooter: boolean; //页脚
menuSetting: ImenuSetting; //菜单配置
multiTabsSetting: ImultiTabsSetting; //多标签
crumbsSetting: IcrumbsSetting; //面包屑
permissionMode: string; //权限模式
isPageAnimate: boolean; //是否开启路由动画
pageAnimateType: string; //路由动画类型
isProjectSetting: boolean; //显示项目配置
}
export const useProjectSettingStore = defineStore({
id: 'app-project-setting',
state: (): ProjectSettingState => ({
navMode: navMode,
navTheme,
headerSetting,
bodySetting,
showFooter,
menuSetting,
multiTabsSetting,
crumbsSetting,
permissionMode,
isPageAnimate,
pageAnimateType,
isProjectSetting,
}),
getters: {
getNavMode(): string {
return this.navMode;
},
getNavTheme(): string {
return this.navTheme;
},
getHeaderSetting(): object {
return this.headerSetting;
},
getBodySetting(): object {
return this.bodySetting;
},
getShowFooter(): boolean {
return this.showFooter;
},
getMenuSetting(): object {
return this.menuSetting;
},
getMultiTabsSetting(): object {
return this.multiTabsSetting;
},
getCrumbsSetting(): object {
return this.multiTabsSetting;
},
getPermissionMode(): string {
return this.permissionMode;
},
getIsPageAnimate(): boolean {
return this.isPageAnimate;
},
getPageAnimateType(): string {
return this.pageAnimateType;
},
getIsProjectSetting(): boolean {
return this.isProjectSetting;
},
},
actions: {
setNavTheme(value: string): void {
this.navTheme = value;
},
setMenuSetting(values: object): void {
this.menuSetting = Object.assign(this.menuSetting, values);
},
},
});
// Need to be used outside the setup
export function useProjectSettingStoreWithOut() {
return useProjectSettingStore(store);
}