判断子菜单是否全部隐藏路由,如果是全部隐藏则隐藏当前菜单图标
This commit is contained in:
parent
c21f4e7f82
commit
b7da59c0b7
|
@ -15,6 +15,7 @@
|
||||||
import { defineComponent, computed } from 'vue';
|
import { defineComponent, computed } from 'vue';
|
||||||
import { Menu } from 'ant-design-vue';
|
import { Menu } from 'ant-design-vue';
|
||||||
import { useDesign } from '/@/hooks/web/useDesign';
|
import { useDesign } from '/@/hooks/web/useDesign';
|
||||||
|
import { checkChildrenHidden } from '/@/utils/common/compUtils';
|
||||||
import { itemProps } from '../props';
|
import { itemProps } from '../props';
|
||||||
import BasicMenuItem from './BasicMenuItem.vue';
|
import BasicMenuItem from './BasicMenuItem.vue';
|
||||||
import MenuItemContent from './MenuItemContent.vue';
|
import MenuItemContent from './MenuItemContent.vue';
|
||||||
|
@ -38,11 +39,13 @@
|
||||||
Reflect.has(menuTreeItem, 'children') &&
|
Reflect.has(menuTreeItem, 'children') &&
|
||||||
!!menuTreeItem.children &&
|
!!menuTreeItem.children &&
|
||||||
menuTreeItem.children.length > 0
|
menuTreeItem.children.length > 0
|
||||||
|
&&checkChildrenHidden(menuTreeItem)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
prefixCls,
|
prefixCls,
|
||||||
menuHasChildren,
|
menuHasChildren,
|
||||||
|
checkChildrenHidden,
|
||||||
getShowMenu,
|
getShowMenu,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
import { defineComponent, computed } from 'vue';
|
import { defineComponent, computed } from 'vue';
|
||||||
import { useDesign } from '/@/hooks/web/useDesign';
|
import { useDesign } from '/@/hooks/web/useDesign';
|
||||||
import Icon from '/@/components/Icon/index';
|
import Icon from '/@/components/Icon/index';
|
||||||
|
import { checkChildrenHidden } from '/@/utils/common/compUtils';
|
||||||
import MenuItem from './components/MenuItem.vue';
|
import MenuItem from './components/MenuItem.vue';
|
||||||
import SubMenu from './components/SubMenuItem.vue';
|
import SubMenu from './components/SubMenuItem.vue';
|
||||||
import { propTypes } from '/@/utils/propTypes';
|
import { propTypes } from '/@/utils/propTypes';
|
||||||
|
@ -79,18 +79,20 @@
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
function menuHasChildren(menuTreeItem: Menu): boolean {
|
function menuHasChildren(menuTreeItem): boolean {
|
||||||
return (
|
return (
|
||||||
!menuTreeItem.meta?.hideChildrenInMenu &&
|
!menuTreeItem.meta?.hideChildrenInMenu &&
|
||||||
Reflect.has(menuTreeItem, 'children') &&
|
Reflect.has(menuTreeItem, 'children') &&
|
||||||
!!menuTreeItem.children &&
|
!!menuTreeItem.children &&
|
||||||
menuTreeItem.children.length > 0
|
menuTreeItem.children.length > 0
|
||||||
|
&&checkChildrenHidden(menuTreeItem)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
prefixCls,
|
prefixCls,
|
||||||
menuHasChildren,
|
menuHasChildren,
|
||||||
|
checkChildrenHidden,
|
||||||
getShowMenu,
|
getShowMenu,
|
||||||
getIcon,
|
getIcon,
|
||||||
getI18nName,
|
getI18nName,
|
||||||
|
|
|
@ -325,3 +325,38 @@ export function stringIsNull(str) {
|
||||||
// 两个 == 可以同时判断 null 和 undefined
|
// 两个 == 可以同时判断 null 和 undefined
|
||||||
return str == null || str === 'null' || str === '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