app.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import defaultSettings from '@/settings'
  2. import { useStorage } from '@vueuse/core'
  3. // 导入 Element Plus 中英文语言包
  4. import zhCn from 'element-plus/es/locale/lang/zh-cn'
  5. import en from 'element-plus/es/locale/lang/en'
  6. // setup
  7. export const useAppStore = defineStore('app', () => {
  8. // state
  9. const device = useStorage('device', 'desktop')
  10. const size = useStorage('size', defaultSettings.size)
  11. const language = useStorage('language', defaultSettings.language)
  12. const sidebarStatus = useStorage('sidebarStatus', 'closed')
  13. const sidebar = reactive({
  14. opened: sidebarStatus.value !== 'closed',
  15. withoutAnimation: false
  16. })
  17. const activeTopMenuPath = useStorage('activeTopMenuPath', '')
  18. /**
  19. * 根据语言标识读取对应的语言包
  20. */
  21. const locale = computed(() => {
  22. if (language?.value == 'en') {
  23. return en
  24. } else {
  25. return zhCn
  26. }
  27. })
  28. // actions
  29. function toggleSidebar() {
  30. sidebar.opened = !sidebar.opened
  31. if (sidebar.opened) {
  32. sidebarStatus.value = 'opened'
  33. } else {
  34. sidebarStatus.value = 'closed'
  35. }
  36. }
  37. function closeSideBar() {
  38. sidebar.opened = false
  39. sidebarStatus.value = 'closed'
  40. }
  41. function openSideBar() {
  42. sidebar.opened = true
  43. sidebarStatus.value = 'opened'
  44. }
  45. function toggleDevice(val) {
  46. device.value = val
  47. }
  48. function changeSize(val) {
  49. size.value = val
  50. }
  51. /**
  52. * 切换语言
  53. *
  54. * @param val
  55. */
  56. function changeLanguage(val) {
  57. language.value = val
  58. }
  59. /**
  60. * 混合模式顶部切换
  61. */
  62. function activeTopMenu(val) {
  63. activeTopMenuPath.value = val
  64. }
  65. return {
  66. device,
  67. sidebar,
  68. language,
  69. locale,
  70. size,
  71. activeTopMenu,
  72. toggleDevice,
  73. changeSize,
  74. changeLanguage,
  75. toggleSidebar,
  76. closeSideBar,
  77. openSideBar,
  78. activeTopMenuPath
  79. }
  80. })