2025-07-30 18:25:58 +08:00

66 lines
2.0 KiB
Vue

import { ref } from 'vue';
import { getMenus } from '/@/router/menus';
export const useHideHomeDesign = (currentRoute) => {
let menus: any = [];
// 是否隐藏门户设计
const isHideHomeDesign = ref(true);
const getHideHomeDesign = (isCurItem, path) => {
if (/^\/portal-view\/[^/]+$/.test(path) && isCurItem) {
if (['/portal-view/system', '/portal-view/template'].includes(path)) {
// 主门户、模板门户 (需要检查是否存在设计列表,存在则显示门户设计,不存在则隐藏门户设计)
getIsHasPortalDesignList();
} else if (['/portal-view/default'].includes(path)) {
// 设计器打开的预览需隐藏设计模式
isHideHomeDesign.value = true;
} else {
// 个人工作台或者普通门户都可显示门户设计
isHideHomeDesign.value = false;
}
} else {
// 非门户页面隐藏门户设计
isHideHomeDesign.value = true;
}
};
const getMenusContainPath = async (ptah) => {
if (!menus.length) {
menus = await getMenus();
}
const result = getMatchingRouterName(menus, ptah);
return !!result;
};
const getIsHasPortalDesignList = async () => {
if (['/portal-view/system', '/portal-view/template'].includes(currentRoute.value.path)) {
// 主门户、模板门户时才需要查询菜单中是否有portalDesignList
getMenusContainPath('/super/eoa/portalapp/portalDesignList').then((result) => {
isHideHomeDesign.value = !result;
});
}
};
getIsHasPortalDesignList();
return {
getHideHomeDesign,
isHideHomeDesign,
};
};
/*
* 20250701
* liaozhiyang
* 通过path匹配菜单中的项
* */
function getMatchingRouterName(menus, path) {
for (let i = 0, len = menus.length; i < len; i++) {
const item = menus[i];
if (item.path === path && !item.redirect && !item.paramPath) {
return item;
} else if (item.children?.length) {
const result = getMatchingRouterName(item.children, path);
if (result) {
return result;
}
}
}
return null;
}