<script lang="ts" setup>
|
import { isDark } from '@/utils/is'
|
import { useAppStore } from '@/store/modules/app'
|
import { useDesign } from '@/hooks/web/useDesign'
|
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
import routerSearch from '@/components/RouterSearch/index.vue'
|
import {useUserStore} from "@/store/modules/user";
|
import {useTagsViewStore} from "@/store/modules/tagsView";
|
import {getAccessToken} from "@/utils/auth";
|
|
defineOptions({ name: 'APP' })
|
|
const userStore = useUserStore()
|
|
const tagsViewStore = useTagsViewStore()
|
|
const { getPrefixCls } = useDesign()
|
const prefixCls = getPrefixCls('app')
|
const appStore = useAppStore()
|
const currentSize = computed(() => appStore.getCurrentSize)
|
const greyMode = computed(() => appStore.getGreyMode)
|
const { wsCache } = useCache()
|
|
// 根据浏览器当前主题设置系统主题色
|
const setDefaultTheme = () => {
|
let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK)
|
if (isDarkTheme === null) {
|
isDarkTheme = isDark()
|
}
|
appStore.setIsDark(isDarkTheme)
|
}
|
setDefaultTheme()
|
|
/** 初始化 **/
|
onMounted(() => {
|
window.addEventListener('unload', handleUnload);
|
})
|
|
onBeforeUnmount(() => {
|
window.removeEventListener('unload', handleUnload);
|
})
|
|
const handleUnload = async () => {
|
//await userStore.loginOut()
|
if (getAccessToken()) {
|
const loginouturl = import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/system/auth/logout' + '?token=' + getAccessToken()
|
navigator.sendBeacon(loginouturl, JSON.stringify(""))
|
}
|
|
tagsViewStore.delAllViews()
|
}
|
|
</script>
|
<template>
|
<ConfigGlobal :size="currentSize">
|
<RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
|
<routerSearch />
|
</ConfigGlobal>
|
</template>
|
<style lang="scss">
|
$prefix-cls: #{$namespace}-app;
|
|
.size {
|
width: 100%;
|
height: 100%;
|
}
|
|
html,
|
body {
|
@extend .size;
|
|
padding: 0 !important;
|
margin: 0;
|
overflow: hidden;
|
|
#app {
|
@extend .size;
|
}
|
}
|
|
.#{$prefix-cls}-grey-mode {
|
filter: grayscale(100%);
|
}
|
|
.scrollbar__view {
|
height: 99%!important;
|
}
|
</style>
|