<script lang="ts" setup>
|
import { computed, onBeforeMount, onMounted, watch } from 'vue';
|
|
import { useGlobSetting } from '@jnpf/hooks';
|
|
import { useWatermark } from '@vben/hooks';
|
import { BasicLayout } from '@vben/layouts';
|
import { preferences } from '@vben/preferences';
|
import { useTabbarStore, useUserStore } from '@vben/stores';
|
|
import { useWebSocket } from '#/hooks/web/useWebSocket';
|
import { useAuthStore } from '#/store';
|
import { getJnpfAppEnCode, getRealJnpfAppEnCode } from '#/utils/jnpf';
|
|
import FullScreen from './header/full-screen.vue';
|
import HeaderCustom from './header/index.vue';
|
import Languagetoggle from './header/language-toggle.vue';
|
import UserDropDown from './header/user-dropdown/index.vue';
|
import LockScreen from './lock-screen.vue';
|
import Logo from './logo.vue';
|
import SystemToggle from './system-toggle.vue';
|
|
const userStore = useUserStore();
|
const authStore = useAuthStore();
|
const globSetting = useGlobSetting();
|
const { destroyWatermark, updateWatermark } = useWatermark();
|
const { initWebSocket } = useWebSocket();
|
|
const avatar = computed(() => {
|
return globSetting.apiURL + userStore.userInfo?.headIcon;
|
});
|
const getShowSystemToggleIcon = computed(() => {
|
const appEnCode = getJnpfAppEnCode();
|
return !!appEnCode && !['teamwork', 'workFlow'].includes(appEnCode);
|
});
|
|
async function handleLogout() {
|
await authStore.logout(false);
|
}
|
|
watch(
|
() => preferences.app.watermark,
|
async (enable) => {
|
if (enable) {
|
await updateWatermark({
|
content: `${userStore.userInfo?.userName}${userStore.userInfo?.mobilePhone || ''}`,
|
});
|
} else {
|
destroyWatermark();
|
}
|
},
|
{ immediate: true },
|
);
|
|
function init() {
|
const appEnCode = getJnpfAppEnCode();
|
if (['teamwork', 'workFlow'].includes(appEnCode) || appEnCode !== getRealJnpfAppEnCode()) {
|
const { setMenuList } = useTabbarStore();
|
setMenuList(['close', 'affix', 'reload', 'close-left', 'close-right', 'close-other', 'close-all']);
|
}
|
}
|
|
onMounted(() => {
|
init();
|
initWebSocket();
|
});
|
onBeforeMount(() => {
|
if (preferences.app.watermark) {
|
destroyWatermark();
|
}
|
});
|
</script>
|
|
<template>
|
<BasicLayout @clear-preferences-and-logout="handleLogout">
|
<template #logo>
|
<Logo />
|
</template>
|
<template #header-left-1 v-if="getShowSystemToggleIcon">
|
<SystemToggle />
|
</template>
|
<template #user-dropdown>
|
<UserDropDown />
|
</template>
|
<template #lock-screen>
|
<LockScreen :avatar @to-login="handleLogout" />
|
</template>
|
<template #header-fullscreen>
|
<FullScreen />
|
</template>
|
<template #header-right-51>
|
<HeaderCustom />
|
</template>
|
<template v-if="preferences.widget.languageToggle" #header-right-81>
|
<Languagetoggle />
|
</template>
|
</BasicLayout>
|
</template>
|