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); }