MeterSphere/frontend/src/App.vue

79 lines
2.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<a-config-provider :locale="locale">
<router-view />
<global-setting />
</a-config-provider>
</template>
<script lang="ts" setup>
import { computed, onBeforeMount, onMounted } from 'vue';
import enUS from '@arco-design/web-vue/es/locale/lang/en-us';
import zhCN from '@arco-design/web-vue/es/locale/lang/zh-cn';
import GlobalSetting from '@/components/pure/global-setting/index.vue';
import useLocale from '@/locale/useLocale';
import { saveBaseInfo } from '@/api/modules/setting/config';
import { getLocalStorage, setLocalStorage } from '@/utils/local-storage';
import useAppStore from '@/store/modules/app';
import useLicenseStore from '@/store/modules/setting/license';
import { watchStyle, watchTheme, setFavicon } from '@/utils/theme';
import { GetPlatformIconUrl } from '@/api/requrls/setting/config';
import { useUserStore } from '@/store';
import { useRouter } from 'vue-router';
import { WorkbenchRouteEnum } from './enums/routeEnum';
const appStore = useAppStore();
const userStore = useUserStore();
const licenseStore = useLicenseStore();
const router = useRouter();
const { currentLocale } = useLocale();
const locale = computed(() => {
switch (currentLocale.value) {
case 'zh-CN':
return zhCN;
case 'en-US':
return enUS;
default:
return zhCN;
}
});
// 初始化平台风格和主题色
watchStyle(appStore.pageConfig.style, appStore.pageConfig);
watchTheme(appStore.pageConfig.theme, appStore.pageConfig);
setFavicon(GetPlatformIconUrl);
onBeforeMount(async () => {
try {
appStore.initSystemVersion(); // 初始化系统版本
appStore.initPageConfig(); // 初始化页面配置
licenseStore.getValidateLicense(); // 初始化校验license
// 项目初始化时需要获取基础设置信息,看当前站点 url是否为系统内置默认地址如果是需要替换为当前项目部署的 url 地址
const isInitUrl = getLocalStorage('isInitUrl'); // 是否已经初始化过 url
if (isInitUrl === 'true') return;
await saveBaseInfo([
{
paramKey: 'base.url',
paramValue: window.location.origin,
type: 'string',
},
]);
setLocalStorage('isInitUrl', 'true'); // 设置已经初始化过 url避免重复初始化
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
}
});
const checkIsLogin = async () => {
const isLogin = await userStore.isLogin();
const isLoginPage = window.location.hash === '#/login';
if (isLoginPage && isLogin) {
// 当前页面为登录页面,且已经登录,跳转到首页
router.push(WorkbenchRouteEnum.WORKBENCH);
}
};
onMounted(async () => {
await checkIsLogin();
});
</script>