|
|
@@ -1,6 +1,7 @@
|
|
|
import React, { PureComponent } from 'react';
|
|
|
import { Menu, Icon } from 'antd';
|
|
|
import { Link } from 'dva/router';
|
|
|
+import { FormattedMessage } from 'react-intl';
|
|
|
import pathToRegexp from 'path-to-regexp';
|
|
|
import { urlToList } from '../_utils/pathTools';
|
|
|
import styles from './index.less';
|
|
|
@@ -53,7 +54,7 @@ export default class BaseMenu extends PureComponent {
|
|
|
* 获得菜单子节点
|
|
|
* @memberof SiderMenu
|
|
|
*/
|
|
|
- getNavMenuItems = menusData => {
|
|
|
+ getNavMenuItems = (menusData, parent) => {
|
|
|
if (!menusData) {
|
|
|
return [];
|
|
|
}
|
|
|
@@ -61,7 +62,7 @@ export default class BaseMenu extends PureComponent {
|
|
|
.filter(item => item.name && !item.hideInMenu)
|
|
|
.map(item => {
|
|
|
// make dom
|
|
|
- const ItemDom = this.getSubMenuOrItem(item);
|
|
|
+ const ItemDom = this.getSubMenuOrItem(item, parent);
|
|
|
return this.checkPermissionItem(item.authority, ItemDom);
|
|
|
})
|
|
|
.filter(item => item);
|
|
|
@@ -78,27 +79,29 @@ export default class BaseMenu extends PureComponent {
|
|
|
/**
|
|
|
* get SubMenu or Item
|
|
|
*/
|
|
|
- getSubMenuOrItem = item => {
|
|
|
+ getSubMenuOrItem = (item, parent) => {
|
|
|
+ const id = parent ? `${parent}.${item.name}` : `menu.${item.name}`;
|
|
|
if (item.children && item.children.some(child => child.name)) {
|
|
|
+ const name = <FormattedMessage defaultMessage={item.name} id={id} />;
|
|
|
return (
|
|
|
<SubMenu
|
|
|
title={
|
|
|
item.icon ? (
|
|
|
<span>
|
|
|
{getIcon(item.icon)}
|
|
|
- <span>{item.name}</span>
|
|
|
+ <span>{name}</span>
|
|
|
</span>
|
|
|
) : (
|
|
|
- item.name
|
|
|
+ name
|
|
|
)
|
|
|
}
|
|
|
key={item.path}
|
|
|
>
|
|
|
- {this.getNavMenuItems(item.children)}
|
|
|
+ {this.getNavMenuItems(item.children, id)}
|
|
|
</SubMenu>
|
|
|
);
|
|
|
} else {
|
|
|
- return <Menu.Item key={item.path}>{this.getMenuItemPath(item)}</Menu.Item>;
|
|
|
+ return <Menu.Item key={item.path}>{this.getMenuItemPath(item, parent)}</Menu.Item>;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -107,10 +110,12 @@ export default class BaseMenu extends PureComponent {
|
|
|
* Judge whether it is http link.return a or Link
|
|
|
* @memberof SiderMenu
|
|
|
*/
|
|
|
- getMenuItemPath = item => {
|
|
|
+ getMenuItemPath = (item, parent) => {
|
|
|
+ const id = parent ? `${parent}.${item.name}` : `menu.${item.name}`;
|
|
|
+ const name = <FormattedMessage defaultMessage={item.name} id={id} />;
|
|
|
const itemPath = this.conversionPath(item.path);
|
|
|
const icon = getIcon(item.icon);
|
|
|
- const { target, name } = item;
|
|
|
+ const { target } = item;
|
|
|
// Is it a http link
|
|
|
if (/^https?:\/\//.test(itemPath)) {
|
|
|
return (
|