判断子菜单是否全部隐藏路由,如果是全部隐藏则隐藏当前菜单图标
parent
c21f4e7f82
commit
b7da59c0b7
|
@ -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,
|
||||
};
|
||||
},
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -325,3 +325,38 @@ export function stringIsNull(str) {
|
|||
// 两个 == 可以同时判断 null 和 undefined
|
||||
return str == null || str === 'null' || str === 'undefined';
|
||||
}
|
||||
|
||||
/**
|
||||
* 【组件多了可能存在性能问题】获取弹窗div,将下拉框、日期等组件挂载到modal上,解决弹窗遮盖问题
|
||||
* @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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue