Spaces:
Sleeping
Sleeping
| import defaultSettings from "@/settings"; | |
| // 导入 Element Plus 中英文语言包 | |
| import zhCn from "element-plus/es/locale/lang/zh-cn"; | |
| import en from "element-plus/es/locale/lang/en"; | |
| import { store } from "@/store"; | |
| import { DeviceEnum } from "@/enums/DeviceEnum"; | |
| import { SidebarStatusEnum } from "@/enums/SidebarStatusEnum"; | |
| // setup | |
| export const useAppStore = defineStore("app", () => { | |
| // state | |
| const device = useStorage("device", DeviceEnum.DESKTOP); | |
| const size = useStorage("size", defaultSettings.size); | |
| const language = useStorage("language", defaultSettings.language); | |
| const sidebarStatus = useStorage("sidebarStatus", SidebarStatusEnum.CLOSED); | |
| const sidebar = reactive({ | |
| opened: sidebarStatus.value === SidebarStatusEnum.OPENED, | |
| withoutAnimation: false, | |
| }); | |
| const activeTopMenuPath = useStorage("activeTopMenuPath", ""); | |
| /** | |
| * 根据语言标识读取对应的语言包 | |
| */ | |
| const locale = computed(() => { | |
| if (language?.value == "en") { | |
| return en; | |
| } else { | |
| return zhCn; | |
| } | |
| }); | |
| // actions | |
| function toggleSidebar() { | |
| sidebar.opened = !sidebar.opened; | |
| sidebarStatus.value = sidebar.opened | |
| ? SidebarStatusEnum.OPENED | |
| : SidebarStatusEnum.CLOSED; | |
| } | |
| function closeSideBar() { | |
| sidebar.opened = false; | |
| sidebarStatus.value = SidebarStatusEnum.CLOSED; | |
| } | |
| function openSideBar() { | |
| sidebar.opened = true; | |
| sidebarStatus.value = SidebarStatusEnum.OPENED; | |
| } | |
| function toggleDevice(val: string) { | |
| device.value = val; | |
| } | |
| function changeSize(val: string) { | |
| size.value = val; | |
| } | |
| /** | |
| * 切换语言 | |
| * | |
| * @param val | |
| */ | |
| function changeLanguage(val: string) { | |
| language.value = val; | |
| } | |
| /** | |
| * 混合模式顶部切换 | |
| */ | |
| function activeTopMenu(val: string) { | |
| activeTopMenuPath.value = val; | |
| } | |
| return { | |
| device, | |
| sidebar, | |
| language, | |
| locale, | |
| size, | |
| activeTopMenu, | |
| toggleDevice, | |
| changeSize, | |
| changeLanguage, | |
| toggleSidebar, | |
| closeSideBar, | |
| openSideBar, | |
| activeTopMenuPath, | |
| }; | |
| }); | |
| // 手动提供给 useStore() 函数 pinia 实例 | |
| // https://pinia.vuejs.org/zh/core-concepts/outside-component-usage.html#using-a-store-outside-of-a-component | |
| export function useAppStoreHook() { | |
| return useAppStore(store); | |
| } | |