Newer
Older
dxCard-admin / src / layouts / default / tabs / useHideHomeDesign.ts
YFJ on 23 Sep 2 KB 项目推送
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;
}