Browse Source

refactor(menu): added 'SimpleMenu' component. Solve the menu stuck problem #199 #190 #191

pull/218/head
vben 6 years ago
parent
commit
7279c0a7b5
  1. 1
      CHANGELOG.zh_CN.md
  2. 2
      src/components/SimpleMenu/src/SimpleSubMenu.vue
  3. 10
      src/router/helper/menuHelper.ts
  4. 2
      src/router/types.ts

1
CHANGELOG.zh_CN.md

@ -8,6 +8,7 @@
- 修复 `TableAction`图标问题 - 修复 `TableAction`图标问题
- 修复菜单折叠按钮丢失问题 - 修复菜单折叠按钮丢失问题
- 修复菜单相关问题
## 2.0.0-rc.16 (2020-01-12) ## 2.0.0-rc.16 (2020-01-12)

2
src/components/SimpleMenu/src/SimpleSubMenu.vue

@ -76,7 +76,7 @@
const { prefixCls } = useDesign('simple-menu'); const { prefixCls } = useDesign('simple-menu');
const getShowMenu = computed(() => { const getShowMenu = computed(() => {
return !props.item.meta?.hideMenu; return !props.item?.hideMenu;
}); });
const getIcon = computed(() => props.item?.icon); const getIcon = computed(() => props.item?.icon);

10
src/router/helper/menuHelper.ts

@ -45,6 +45,13 @@ export function transformMenuModule(menuModule: MenuModule): Menu {
export function transformRouteToMenu(routeModList: AppRouteModule[]) { export function transformRouteToMenu(routeModList: AppRouteModule[]) {
const cloneRouteModList = cloneDeep(routeModList); const cloneRouteModList = cloneDeep(routeModList);
const routeList: AppRouteRecordRaw[] = []; const routeList: AppRouteRecordRaw[] = [];
// cloneRouteModList = filter(cloneRouteModList, (node) => {
// if (Reflect.has(node?.meta ?? {}, 'hideMenu')) {
// return !node?.meta.hideMenu;
// }
// return true;
// });
cloneRouteModList.forEach((item) => { cloneRouteModList.forEach((item) => {
if (item.meta?.single) { if (item.meta?.single) {
const realItem = item?.children?.[0]; const realItem = item?.children?.[0];
@ -55,13 +62,14 @@ export function transformRouteToMenu(routeModList: AppRouteModule[]) {
}); });
return treeMap(routeList, { return treeMap(routeList, {
conversion: (node: AppRouteRecordRaw) => { conversion: (node: AppRouteRecordRaw) => {
const { meta: { title, icon } = {} } = node; const { meta: { title, icon, hideMenu = false } = {} } = node;
!isUrl(node.path) && joinParentPath(routeList, node); !isUrl(node.path) && joinParentPath(routeList, node);
return { return {
name: title, name: title,
icon, icon,
path: node.path, path: node.path,
hideMenu,
}; };
}, },
}); });

2
src/router/types.ts

@ -75,6 +75,8 @@ export interface Menu {
meta?: Partial<RouteMeta>; meta?: Partial<RouteMeta>;
tag?: MenuTag; tag?: MenuTag;
hideMenu?: boolean;
} }
export interface MenuModule { export interface MenuModule {

Loading…
Cancel
Save