|
@@ -3,6 +3,8 @@ import RightContent from '@/components/GlobalHeader/RightContent';
|
|
|
import { connect } from 'dva';
|
|
import { connect } from 'dva';
|
|
|
import React, { useState } from 'react';
|
|
import React, { useState } from 'react';
|
|
|
import logo from '../assets/logo.svg';
|
|
import logo from '../assets/logo.svg';
|
|
|
|
|
+import Authorized from '@/utils/Authorized';
|
|
|
|
|
+import { formatMessage } from 'umi-plugin-react/locale';
|
|
|
import {
|
|
import {
|
|
|
BasicLayout as BasicLayoutComponents,
|
|
BasicLayout as BasicLayoutComponents,
|
|
|
BasicLayoutProps as BasicLayoutComponentsProps,
|
|
BasicLayoutProps as BasicLayoutComponentsProps,
|
|
@@ -21,6 +23,19 @@ export type BasicLayoutContext = { [K in 'location']: BasicLayoutProps[K] } & {
|
|
|
breadcrumbNameMap: { [path: string]: MenuDataItem };
|
|
breadcrumbNameMap: { [path: string]: MenuDataItem };
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * default menuLocal
|
|
|
|
|
+ */
|
|
|
|
|
+const filterMenuData = (menuList: MenuDataItem[], locale: boolean) => {
|
|
|
|
|
+ return menuList.map(item => {
|
|
|
|
|
+ const localItem = {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ name: item.locale && locale ? formatMessage({ id: item.locale }) : item.name,
|
|
|
|
|
+ };
|
|
|
|
|
+ return Authorized.check(item.authority, localItem, null) as MenuDataItem;
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
const BasicLayout: React.FC<BasicLayoutProps> = props => {
|
|
const BasicLayout: React.FC<BasicLayoutProps> = props => {
|
|
|
const { dispatch, children, settings } = props;
|
|
const { dispatch, children, settings } = props;
|
|
|
/**
|
|
/**
|
|
@@ -35,7 +50,9 @@ const BasicLayout: React.FC<BasicLayoutProps> = props => {
|
|
|
*/
|
|
*/
|
|
|
const handleMenuCollapse = (payload: boolean) =>
|
|
const handleMenuCollapse = (payload: boolean) =>
|
|
|
dispatch!({ type: 'global/changeLayoutCollapsed', payload });
|
|
dispatch!({ type: 'global/changeLayoutCollapsed', payload });
|
|
|
-
|
|
|
|
|
|
|
+ const {
|
|
|
|
|
+ menu: { locale },
|
|
|
|
|
+ } = settings;
|
|
|
return (
|
|
return (
|
|
|
<>
|
|
<>
|
|
|
<BasicLayoutComponents
|
|
<BasicLayoutComponents
|
|
@@ -44,6 +61,7 @@ const BasicLayout: React.FC<BasicLayoutProps> = props => {
|
|
|
menuItemRender={(menuItemProps, defaultDom) => {
|
|
menuItemRender={(menuItemProps, defaultDom) => {
|
|
|
return <Link to={menuItemProps.path}>{defaultDom}</Link>;
|
|
return <Link to={menuItemProps.path}>{defaultDom}</Link>;
|
|
|
}}
|
|
}}
|
|
|
|
|
+ filterMenuData={menuList => filterMenuData(menuList, locale)}
|
|
|
rightContentRender={rightProps => <RightContent {...rightProps} />}
|
|
rightContentRender={rightProps => <RightContent {...rightProps} />}
|
|
|
{...props}
|
|
{...props}
|
|
|
{...settings}
|
|
{...settings}
|