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>
|