|
@@ -8,6 +8,8 @@ import {
|
|
|
unref,
|
|
|
computed,
|
|
|
ref,
|
|
|
+ nextTick,
|
|
|
+ watchEffect,
|
|
|
// nextTick
|
|
|
} from 'vue';
|
|
|
|
|
@@ -30,7 +32,7 @@ import { useModal } from '/@/components/Modal';
|
|
|
|
|
|
import { useFullscreen } from '/@/hooks/web/useFullScreen';
|
|
|
import { useTabs } from '/@/hooks/web/useTabs';
|
|
|
-// import { useWindowSizeFn } from '/@/hooks/event/useWindowSizeFn';
|
|
|
+import { useWindowSizeFn } from '/@/hooks/event/useWindowSizeFn';
|
|
|
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting';
|
|
|
import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
|
|
|
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
|
|
@@ -68,9 +70,9 @@ export default defineComponent({
|
|
|
fixed: propTypes.bool,
|
|
|
},
|
|
|
setup(props) {
|
|
|
- // let logoEl: Element | null | undefined;
|
|
|
+ let logoEl: Element | null | undefined;
|
|
|
|
|
|
- // const logoWidthRef = ref(200);
|
|
|
+ const logoWidthRef = ref(200);
|
|
|
const logoRef = ref<ComponentRef>(null);
|
|
|
|
|
|
const injectValue = useLayoutContext();
|
|
@@ -78,7 +80,13 @@ export default defineComponent({
|
|
|
const { refreshPage } = useTabs();
|
|
|
const { t } = useI18n();
|
|
|
|
|
|
- const { getShowTopMenu, getShowHeaderTrigger, getSplit, getTopMenuAlign } = useMenuSetting();
|
|
|
+ const {
|
|
|
+ getShowTopMenu,
|
|
|
+ getShowHeaderTrigger,
|
|
|
+ getSplit,
|
|
|
+ getTopMenuAlign,
|
|
|
+ getIsHorizontal,
|
|
|
+ } = useMenuSetting();
|
|
|
|
|
|
const { getShowLocale } = useLocaleSetting();
|
|
|
const { getUseErrorHandle, getShowBreadCrumbIcon } = useRootSetting();
|
|
@@ -98,22 +106,13 @@ export default defineComponent({
|
|
|
const [register, { openModal }] = useModal();
|
|
|
const { toggleFullscreen, isFullscreenRef } = useFullscreen();
|
|
|
|
|
|
- // useWindowSizeFn(
|
|
|
- // () => {
|
|
|
- // nextTick(() => {
|
|
|
- // if (!unref(getShowTopMenu)) return;
|
|
|
- // let width = 0;
|
|
|
- // if (!logoEl) {
|
|
|
- // logoEl = unref(logoRef)?.$el;
|
|
|
- // } else {
|
|
|
- // width += logoEl.clientWidth;
|
|
|
- // }
|
|
|
- // logoWidthRef.value = width + 80;
|
|
|
- // });
|
|
|
- // },
|
|
|
- // 200,
|
|
|
- // { immediate: true }
|
|
|
- // );
|
|
|
+ useWindowSizeFn(
|
|
|
+ () => {
|
|
|
+ calcTopMenuWidth();
|
|
|
+ },
|
|
|
+ 100,
|
|
|
+ { immediate: false }
|
|
|
+ );
|
|
|
|
|
|
const headerClass = computed(() => {
|
|
|
const theme = unref(getHeaderTheme);
|
|
@@ -132,6 +131,25 @@ export default defineComponent({
|
|
|
return unref(getSplit) ? MenuModeEnum.HORIZONTAL : null;
|
|
|
});
|
|
|
|
|
|
+ watchEffect(() => {
|
|
|
+ if (unref(getIsHorizontal)) {
|
|
|
+ calcTopMenuWidth();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ function calcTopMenuWidth() {
|
|
|
+ nextTick(() => {
|
|
|
+ if (!unref(getShowTopMenu)) return;
|
|
|
+ let width = 0;
|
|
|
+ if (!logoEl) {
|
|
|
+ logoEl = unref(logoRef)?.$el;
|
|
|
+ }
|
|
|
+ if (!logoEl) return;
|
|
|
+ width += logoEl.clientWidth;
|
|
|
+ logoWidthRef.value = width + 80;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
function handleToErrorList() {
|
|
|
push(PageEnum.ERROR_LOG_PAGE).then(() => {
|
|
|
errorStore.commitErrorListCountState(0);
|
|
@@ -143,7 +161,7 @@ export default defineComponent({
|
|
|
}
|
|
|
|
|
|
function renderHeaderContent() {
|
|
|
- // const width = unref(logoWidthRef);
|
|
|
+ const width = unref(logoWidthRef);
|
|
|
return (
|
|
|
<div class="layout-header__content ">
|
|
|
{unref(getShowHeaderLogo) && (
|
|
@@ -162,8 +180,8 @@ export default defineComponent({
|
|
|
)}
|
|
|
|
|
|
{unref(getShowTopMenu) && unref(isPc) && (
|
|
|
- // <div class={[`layout-header__menu `]} style={{ width: `calc(100% - ${width}px)` }}>
|
|
|
- <div class={[`layout-header__menu `]}>
|
|
|
+ <div class={[`layout-header__menu `]} style={{ width: `calc(100% - ${width}px)` }}>
|
|
|
+ {/* <div class={[`layout-header__menu `]}> */}
|
|
|
<LayoutMenu
|
|
|
isHorizontal={true}
|
|
|
class={`justify-${unref(getTopMenuAlign)}`}
|