import { defineComponent, unref, computed } from 'vue'; import { Layout, Tooltip } from 'ant-design-vue'; import Logo from '/@/layouts/Logo.vue'; import UserDropdown from './UserDropdown'; import LayoutMenu from './LayoutMenu'; import { appStore } from '/@/store/modules/app'; import { MenuModeEnum, MenuSplitTyeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; import LayoutBreadcrumb from './LayoutBreadcrumb'; import { RedoOutlined, FullscreenExitOutlined, FullscreenOutlined, GithubFilled, LockOutlined, } from '@ant-design/icons-vue'; import { useFullscreen } from '/@/hooks/web/useFullScreen'; import { useTabs } from '/@/hooks/web/useTabs'; import { GITHUB_URL } from '/@/settings/siteSetting'; import LockAction from './actions/LockActionItem'; import { useModal } from '/@/components/Modal/index'; export default defineComponent({ name: 'DefaultLayoutHeader', setup() { const { refreshPage } = useTabs(); const [register, { openModal }] = useModal(); const { toggleFullscreen, isFullscreenRef } = useFullscreen(); const getProjectConfigRef = computed(() => { return appStore.getProjectConfig; }); function goToGithub() { window.open(GITHUB_URL, '__blank'); } const headerClass = computed(() => { const theme = unref(getProjectConfigRef).headerSetting.theme; return theme ? `layout-header__header--${theme}` : ''; }); /** * @description: 锁定屏幕 */ function handleLockPage() { openModal(true); } return () => { const getProjectConfig = unref(getProjectConfigRef); const { // useErrorHandle, showLogo, headerSetting: { theme: headerTheme, showRedo, showGithub, showFullScreen }, menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign }, showBreadCrumb, } = getProjectConfig; const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; return ( {() => ( <>
{showLogo && !isSidebarType && } {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( )} {(mode === MenuModeEnum.HORIZONTAL || splitMenu) && (
)}
{showGithub && ( // @ts-ignore {{ title: () => 'github', default: () => (
), }}
)} {showGithub && ( // @ts-ignore {{ title: () => '锁定屏幕', default: () => (
), }}
)} {showRedo && ( // @ts-ignore {{ title: () => '刷新', default: () => (
), }}
)} {showFullScreen && ( // @ts-ignore {{ title: () => (unref(isFullscreenRef) ? '退出全屏' : '全屏'), default: () => { const Icon: any = !unref(isFullscreenRef) ? ( ) : ( ); return (
); }, }}
)}
)}
); }; }, });