summaryrefslogtreecommitdiff
path: root/src/App.vue
blob: ba76b2ea16c6f6a2e9b41493b0f9e086842f53e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<template>
  <el-config-provider :locale="locale">
    <router-view />
  </el-config-provider>
</template>

<script setup>
import { useRouter } from 'vue-router';
import { computed, watch } from 'vue';
import { ElConfigProvider } from 'element-plus';
import { useI18n } from 'vue-i18n';
import { useSystemStore } from '@/store/index';
import { useTheme } from '@/hooks/useTheme';
import { setWorkspace } from '@/router/permissions';

const router = useRouter();

const { messages } = useI18n();

// elmentui组件国际化
const systemStore = useSystemStore();
const locale = computed(() => {
  return systemStore.language === 'zh'
    ? messages.value['zh']
    : messages.value['en'];
});

// 初始化主题
const { themeSet } = useTheme();
themeSet(systemStore.theme);

// 当前workspace
const workspace = computed(() => {
  return systemStore.workspace;
});
// 所有权限
const permissions = computed(() => {
  return systemStore.permissions;
});

watch(
  () => router.currentRoute.value,
  (value) => {
    const paramsWorkspace = value.params.workspace;
    // 页面初始化时 若路由配置了workspace参数但不存在时为''
    if (paramsWorkspace == '') {
      router.replace({
        name: value.name,
        params: {
          workspace: workspace.value.name,
        },
      });
    } else if (paramsWorkspace && paramsWorkspace != workspace.value.name) {
      let data = permissions.value.find(
        (item) => item.workspace.name == paramsWorkspace
      );
      if (data) {
        setWorkspace(data);
      } else {
        router.replace({
          name: value.name,
          params: {
            workspace: workspace.value.name,
          },
        });
      }
    }
  },
  { immediate: true }
);
</script>