66 lines
2.0 KiB
Vue
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;
|
|
}
|