import type { LocaleSetting, LocaleType } from '/#/config'; import { defineStore } from 'pinia'; import { store } from '/@/store'; import { LOCALE_KEY } from '/@/enums/cacheEnum'; import { createLocalStorage } from '/@/utils/cache'; import { localeSetting } from '/@/settings/localeSetting'; const ls = createLocalStorage(); const lsLocaleSetting = (ls.get(LOCALE_KEY) || localeSetting) as LocaleSetting; interface LocaleState { localInfo: LocaleSetting; pathTitleMap: object; // myapps主题色(低代码应用列表首页) appIndexTheme: string // myapps - 跳转前路由地址 appMainPth: string } export const useLocaleStore = defineStore({ id: 'app-locale', state: (): LocaleState => ({ localInfo: lsLocaleSetting, pathTitleMap: {}, appIndexTheme: '', appMainPth: '' }), getters: { getShowPicker(): boolean { return !!this.localInfo?.showPicker; }, getLocale(): LocaleType { return this.localInfo?.locale ?? 'zh_CN'; }, //update-begin-author:taoyan date:2022-6-1 for: VUEN-1144 online 配置成菜单后,打开菜单,显示名称未展示为菜单名称 getPathTitle: (state) => { return (path) => state.pathTitleMap[path]; }, //update-end-author:taoyan date:2022-6-1 for: VUEN-1144 online 配置成菜单后,打开菜单,显示名称未展示为菜单名称 getAppIndexTheme(): string { return this.appIndexTheme; }, getAppMainPth(): string { return this.appMainPth; }, }, actions: { /** * Set up multilingual information and cache * @param info multilingual info */ setLocaleInfo(info: Partial) { this.localInfo = { ...this.localInfo, ...info }; ls.set(LOCALE_KEY, this.localInfo); }, /** * Initialize multilingual information and load the existing configuration from the local cache */ initLocale() { this.setLocaleInfo({ ...localeSetting, ...this.localInfo, }); }, //update-begin-author:taoyan date:2022-6-1 for: VUEN-1144 online 配置成菜单后,打开菜单,显示名称未展示为菜单名称 setPathTitle(path, title) { this.pathTitleMap[path] = title; }, //update-end-author:taoyan date:2022-6-1 for: VUEN-1144 online 配置成菜单后,打开菜单,显示名称未展示为菜单名称 setAppIndexTheme(theme) { this.appIndexTheme = theme; }, setAppMainPth(path) { this.appMainPth = path; }, }, }); // Need to be used outside the setup export function useLocaleStoreWithOut() { return useLocaleStore(store); }