Browse Source

Merge branch 'feat/module-manage' into 'master'

feat: 添加菜单链接处理

See merge request admin-manager/dc!16
王文博 5 years ago
parent
commit
3c3b3ec66c
1 changed files with 27 additions and 15 deletions
  1. 27 15
      src/layouts/mainLayout/index.js

+ 27 - 15
src/layouts/mainLayout/index.js

@@ -3,7 +3,7 @@ import s from './index.less'
 import { Layout, Menu, Icon, Avatar, Dropdown, ConfigProvider, Tooltip } from 'antd'
 import zhCN from 'antd/es/locale/zh_CN'
 import router from 'umi/router'
-import { connect } from 'dva';
+import { connect } from 'dva'
 import logo from '@/assets/logo.jpg'
 import { Link } from 'umi'
 
@@ -21,7 +21,7 @@ class MainLayout extends React.PureComponent {
     defaultOpenKeys: this.getDefaultKeys()
   }
 
-  getDefaultKeys() {
+  getDefaultKeys () {
     const { pathname } = window.location
     const ps = pathname.split('/')
     return [`/${ps[1]}`]
@@ -33,51 +33,63 @@ class MainLayout extends React.PureComponent {
     })
   }
 
-  async componentDidMount() {
+  async componentDidMount () {
     this.props.dispatch({
-      type: 'user/fetchPower',
-    });
+      type: 'user/fetchPower'
+    })
   }
 
   handleLogout = () => {
     this.props.dispatch({
-      type: 'user/logout',
-    });
+      type: 'user/logout'
+    })
   }
 
   clearCache = () => {
-    const { dispatch } = this.props;
+    const { dispatch } = this.props
     if (dispatch) {
       dispatch({
         type: 'user/delColumnCache',
         payload: {},
         callback: () => {
-          window.location.reload();
-        },
-      });
+          window.location.reload()
+        }
+      })
     }
   }
 
   handleClick = (e) => {
+    if (/^http/.test(e.key)) {
+      return
+    }
     this.setState({ selectedKeys: [e.key] })
   }
 
-  getMenu(menuData) {
+  getMenu (menuData) {
     return menuData.map(m => {
       if (m.children && m.children.length) {
         return <SubMenu key={m.url} title={m.name}>
           {this.getMenu(m.children)}
         </SubMenu>
       } else {
+        if (/^http/.test(m.url)) {
+          return (
+            <Menu.Item key={m.url}>
+              <a href={m.url} rel="noopener noreferrer" target="_blank">
+                {m.name}
+              </a>
+            </Menu.Item>
+          )
+        }
         return <Menu.Item key={m.url}><Link to={m.url}>{m.name}</Link></Menu.Item>
       }
     })
   }
 
-  render() {
+  render () {
     const { collapsed, selectedKeys, defaultOpenKeys } = this.state
-    const { currentUser, user } = this.props;
-    
+    const { currentUser, user } = this.props
+
     const menu = (
       <Menu>
         <Menu.Item>