zhengyiming
2025-02-10 958b79ed89b9e742540f714a80261d222c0fc09b
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
<template>
  <PrettyLayout
    :is-mobile="isMobile"
    :routes="routes"
    :title="title"
    :visited-views="visitedViews"
    :cached-views="cachedViews"
    :username="name"
    :themeMap="themeMap"
    :logo="Logo"
    :showModifyPasswordBtn="false"
    :showMessageBtn="false"
    @on-add-view="tagsViewStore.addView"
    @on-add-visited-view="tagsViewStore.addVisitedView"
    @on-clear-error-log="errorLogStore.clearErrorLog"
    @on-del-all-views="tagsViewStore.delAllViews"
    @on-del-cached-view="tagsViewStore.delCachedView"
    @on-del-others-views="tagsViewStore.delOthersViews"
    @on-del-view="tagsViewStore.delView"
    @on-logout="logout"
    @on-toggle-side-bar="appStore.toggleSideBar"
    @on-close-side-bar="appStore.closeSideBar"
    @on-update-visited-view="tagsViewStore.updateVisitedView"
    @on-change-theme="handleChangeTheme"
  >
  </PrettyLayout>
</template>
 
<script setup lang="ts">
// import DefaultLayout from '@bole-core/defaultLayout';
import PrettyLayout from '@bole-core/pretty-layout';
import { useAppStore } from '@/store/modules/app';
import { usePermissionStore } from '@/store/modules/permission';
import { useErrorLogStore } from '@/store/modules/errorLog';
import { useTagsViewStore } from '@/store/modules/tagsView';
import { useUserStore } from '@/store/modules/user';
import Config, { getAppSetting } from '@config/config';
// import '@bole-core/defaultLayout/dist/style.css';
import '@bole-core/pretty-layout/dist/styles/index.scss';
import { ThemeColorName, AppType } from '@/constants';
import { ThemeManager } from '@/utils';
import { openLink } from '@bole-core/core';
import Logo from '@/assets/logo.png';
 
const title = getAppSetting(AppType).MenuTitle;
 
defineOptions({
  name: 'Layout',
});
 
const router = useRouter();
 
const permissionStore = usePermissionStore();
const appStore = useAppStore();
const errorLogStore = useErrorLogStore();
const tagsViewStore = useTagsViewStore();
const userStore = useUserStore();
 
const { isMobile } = storeToRefs(appStore);
const { routes } = storeToRefs(permissionStore);
const { visitedViews, cachedViews } = storeToRefs(tagsViewStore);
const { name } = storeToRefs(userStore);
 
const themeMap = ThemeManager.getThemeMap();
 
onBeforeMount(() => {
  const themeName = ThemeManager.getStorageThemeName();
  handleChangeTheme(themeName);
});
 
function handleChangeTheme(themeName: ThemeColorName) {
  ThemeManager.setTheme(themeName);
  appStore.setTheme(themeName);
}
 
function logout() {
  userStore.logout();
  router.push(`/login?redirect=/`);
}
function handleLoginTencent() {
  openLink(router.resolve({ name: 'ChatView' }).fullPath);
}
</script>
 
<style lang="scss">
// @import '@bole-core/defaultLayout/dist/style.css';
</style>