ny
昨天 282fbc6488f4e8ceb5fda759f963ee88fbf7b999
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<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>