app.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import Cookies from 'js-cookie';
  2. import zhCN from 'element-plus/es/locale/lang/zh-cn';
  3. import enUS from 'element-plus/es/locale/lang/en';
  4. export const useAppStore = defineStore('app', () => {
  5. const sidebarStatus = Cookies.get('sidebarStatus');
  6. const sidebar = reactive({
  7. opened: sidebarStatus ? !!+sidebarStatus : true,
  8. withoutAnimation: false,
  9. hide: false
  10. });
  11. const device = ref<string>('desktop');
  12. const size = ref(Cookies.get('size') || 'default');
  13. // 语言
  14. const language = ref(Cookies.get('language'));
  15. const languageObj: any = {
  16. en_US: enUS,
  17. zh_CN: zhCN
  18. };
  19. const locale = computed(() => {
  20. if (!language.value) {
  21. return zhCN;
  22. }
  23. return languageObj[language.value];
  24. });
  25. const toggleSideBar = (withoutAnimation?: boolean) => {
  26. if (sidebar.hide) {
  27. return false;
  28. }
  29. sidebar.opened = !sidebar.opened;
  30. sidebar.withoutAnimation = withoutAnimation as boolean;
  31. if (sidebar.opened) {
  32. Cookies.set('sidebarStatus', '1');
  33. } else {
  34. Cookies.set('sidebarStatus', '0');
  35. }
  36. };
  37. const closeSideBar = ({ withoutAnimation }: any): void => {
  38. Cookies.set('sidebarStatus', '0');
  39. sidebar.opened = false;
  40. sidebar.withoutAnimation = withoutAnimation;
  41. };
  42. const toggleDevice = (d: string): void => {
  43. device.value = d;
  44. };
  45. const setSize = (s: string): void => {
  46. size.value = s;
  47. Cookies.set('size', s);
  48. };
  49. const toggleSideBarHide = (status: boolean): void => {
  50. sidebar.hide = status;
  51. };
  52. const changeLanguage = (val: string): void => {
  53. language.value = val;
  54. Cookies.set('language', val);
  55. };
  56. return {
  57. device,
  58. sidebar,
  59. language,
  60. locale,
  61. size,
  62. changeLanguage,
  63. toggleSideBar,
  64. closeSideBar,
  65. toggleDevice,
  66. setSize,
  67. toggleSideBarHide
  68. };
  69. });
  70. export default useAppStore;