判断子菜单是否全部隐藏路由,如果是全部隐藏则隐藏当前菜单图标

pull/216/head
zhangdaiscott 2022-10-30 17:56:18 +08:00
parent c21f4e7f82
commit b7da59c0b7
3 changed files with 42 additions and 2 deletions

View File

@ -15,6 +15,7 @@
import { defineComponent, computed } from 'vue';
import { Menu } from 'ant-design-vue';
import { useDesign } from '/@/hooks/web/useDesign';
import { checkChildrenHidden } from '/@/utils/common/compUtils';
import { itemProps } from '../props';
import BasicMenuItem from './BasicMenuItem.vue';
import MenuItemContent from './MenuItemContent.vue';
@ -38,11 +39,13 @@
Reflect.has(menuTreeItem, 'children') &&
!!menuTreeItem.children &&
menuTreeItem.children.length > 0
&&checkChildrenHidden(menuTreeItem)
);
}
return {
prefixCls,
menuHasChildren,
checkChildrenHidden,
getShowMenu,
};
},

View File

@ -36,7 +36,7 @@
import { defineComponent, computed } from 'vue';
import { useDesign } from '/@/hooks/web/useDesign';
import Icon from '/@/components/Icon/index';
import { checkChildrenHidden } from '/@/utils/common/compUtils';
import MenuItem from './components/MenuItem.vue';
import SubMenu from './components/SubMenuItem.vue';
import { propTypes } from '/@/utils/propTypes';
@ -79,18 +79,20 @@
];
});
function menuHasChildren(menuTreeItem: Menu): boolean {
function menuHasChildren(menuTreeItem): boolean {
return (
!menuTreeItem.meta?.hideChildrenInMenu &&
Reflect.has(menuTreeItem, 'children') &&
!!menuTreeItem.children &&
menuTreeItem.children.length > 0
&&checkChildrenHidden(menuTreeItem)
);
}
return {
prefixCls,
menuHasChildren,
checkChildrenHidden,
getShowMenu,
getIcon,
getI18nName,

View File

@ -325,3 +325,38 @@ export function stringIsNull(str) {
// 两个 == 可以同时判断 null 和 undefined
return str == null || str === 'null' || str === 'undefined';
}
/**
* divmodal
* @param node
*/
export function getAutoScrollContainer(node: HTMLElement) {
let element: Nullable<HTMLElement> = node
while (element != null) {
if (element.classList.contains('scrollbar__view')) {
// 判断是否有滚动条
if (element.clientHeight < element.scrollHeight) {
// 有滚动条时,挂载到父级,解决滚动问题
return node.parentElement
} else {
// 无滚动条时挂载到body上解决下拉框遮盖问题
return document.body
}
} else {
element = element.parentElement
}
}
// 不在弹窗内,走默认逻辑
return node.parentElement
}
/**
* ,
* @param menuTreeItem
*/
export function checkChildrenHidden(menuTreeItem){
if(!menuTreeItem.children){
return false
}
return menuTreeItem.children?.find((item) => item.hideMenu == false) != null;
}