mps-platform/cds-fontend-2025.V1/src/layouts/modules/global-header/index.vue
xiaocp2009 413429ce35 1、修复主题设置无法生效的bug
2、SVG本地化V3
3、优化控制台数据显示方式为异步,以提高整体渲染效率
2025-08-22 14:51:35 +08:00

76 lines
2.8 KiB
Vue

<script setup lang="ts">
import { ref } from 'vue';
import { useFullscreen } from '@vueuse/core';
import { GLOBAL_HEADER_MENU_ID } from '@/constants/app';
import { useAppStore } from '@/store/modules/app';
import { useAuthStore } from '@/store/modules/auth';
import { useThemeStore } from '@/store/modules/theme';
import GlobalLogo from '../global-logo/index.vue';
import GlobalBreadcrumb from '../global-breadcrumb/index.vue';
import GlobalSearch from '../global-search/index.vue';
import ThemeButton from './components/theme-button.vue';
import UserAvatar from './components/user-avatar.vue';
import MessageButton from './components/message-button.vue';
defineOptions({
name: 'GlobalHeader'
});
interface Props {
/** Whether to show the logo */
showLogo?: App.Global.HeaderProps['showLogo'];
/** Whether to show the menu toggler */
showMenuToggler?: App.Global.HeaderProps['showMenuToggler'];
/** Whether to show the menu */
showMenu?: App.Global.HeaderProps['showMenu'];
}
defineProps<Props>();
const appStore = useAppStore();
const authStore = useAuthStore();
const themeStore = useThemeStore();
const { isFullscreen, toggle } = useFullscreen();
const tenantId = ref<CommonType.IdType>(authStore.userInfo?.user?.tenantId || '000000');
</script>
<template>
<DarkModeContainer class="h-full flex-y-center px-12px shadow-header">
<GlobalLogo v-if="showLogo" class="h-full" :style="{ width: themeStore.sider.width + 'px' }" />
<MenuToggler v-if="showMenuToggler" :collapsed="appStore.siderCollapse" @click="appStore.toggleSiderCollapse" />
<div v-if="showMenu" :id="GLOBAL_HEADER_MENU_ID" class="h-full flex-y-center flex-1-hidden"></div>
<div v-else class="h-full flex-y-center flex-1-hidden">
<GlobalBreadcrumb v-if="!appStore.isMobile" class="ml-12px" />
</div>
<div class="h-full flex-y-center justify-end">
<!-- 法人-->
<TenantSelect v-if="!appStore.isMobile" v-model:value="tenantId" class="mr-12px w-150px" />
<!-- 搜索-->
<GlobalSearch v-if="themeStore.header.globalSearch.visible && !appStore.isMobile" />
<!-- 消息-->
<MessageButton />
<!-- 全屏-->
<FullScreen v-if="!appStore.isMobile" :full="isFullscreen" @click="toggle" />
<!-- 语言-->
<!-- <LangSwitch
v-if="themeStore.header.multilingual.visible"
:lang="appStore.locale"
:lang-options="appStore.localeOptions"
@change-lang="appStore.changeLocale"
/>-->
<!-- 主题模式-->
<ThemeSchemaSwitch
:theme-schema="themeStore.themeScheme"
:is-dark="themeStore.darkMode"
@switch="themeStore.toggleThemeScheme"
/>
<!-- 主题配置-->
<ThemeButton v-if="!appStore.isMobile" />
<UserAvatar />
</div>
</DarkModeContainer>
</template>
<style scoped></style>