From b701009667f62901cfd4be9be1f11fe38c630352 Mon Sep 17 00:00:00 2001
From: Mr Ke <kelq@hugeinfo.com.cn>
Date: Tue, 20 Oct 2020 09:24:04 +0800
Subject: [PATCH] 提交

---
 src/components/common/MenuView/index.jsx |   38 +++++++++++++++++++++++---------------
 1 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/src/components/common/MenuView/index.jsx b/src/components/common/MenuView/index.jsx
index 378fbb7..59a2866 100644
--- a/src/components/common/MenuView/index.jsx
+++ b/src/components/common/MenuView/index.jsx
@@ -6,7 +6,7 @@
 
 /** 菜单渲染组件 */
 
-import React from 'react';
+import React, { useState } from 'react';
 import { Layout, Menu, Icon, Badge } from 'antd';
 import { RouteComponentProps } from 'react-router-dom';
 import './index.scss';
@@ -20,35 +20,43 @@
 }) {
     if (!menudata.length) return null;
 
-    const { path, name } = find(menudata, pathname);
+    const { path, name, parentKey } = find(menudata, pathname);
+    console.log('parentKey', parentKey)
 
     if (name) {
         const index = name.indexOf(' - ');
         if (index > -1) {
-            document.title = `${name.substr(index)}`;
+            document.title = `恒巨信息OA-${name.substr(index)}`;
         } else {
-            document.title = `${name}`;
+            document.title = `恒巨信息OA-${name}`;
         }
     } else {
-        document.title = `xx系统`;
+        document.title = `恒巨信息`;
     }
 
-    const defaultOpenKeys = menudata.map(({ name }) => name);
+    const defaultOpenKeys = parentKey ? [parentKey] : [];//默认展开的菜单key
+    const [openKeys, setOpenKeys] = useState(defaultOpenKeys);//设置打开菜单的key
+
+    function onOpenChange(key) {
+        let allKeys = menudata.map((d) => d.key);
+        const latestOpenKey = key.find(key => openKeys.indexOf(key) === -1);
+        if (allKeys.indexOf(latestOpenKey) === -1) {
+            setOpenKeys(key)
+        } else {
+            setOpenKeys(latestOpenKey ? [latestOpenKey] : [])
+        }
+    };
 
     return (
-        // <Layout.Sider
-        //   // width={200}
-        //   theme="light"
-        //   style={{ backgroundColor: 'white' }}>
         <Menu
             key={defaultOpenKeys.join('-')}
             style={{ height: '100%', borderRight: 0 }}
-            defaultOpenKeys={defaultOpenKeys}
+            openKeys={openKeys}
             selectedKeys={path ? [path] : []}
+            onOpenChange={onOpenChange}
             mode="inline">
             {render(menudata, history)}
         </Menu>
-        // </Layout.Sider>
     );
 }
 
@@ -56,7 +64,7 @@
     return data.map(({ name, icon, path, count, children, type }, index) =>
         children && children.length ? (
             <SubMenu
-                key={name}
+                key={path}
                 title={
                     <span>
                         <Icon type={icon || 'setting'} />
@@ -84,7 +92,7 @@
 };
 
 const find = (data, full, pathname = { path: '', name: '' }) =>
-    data.reduce((pn, { path, name, children }) => {
+    data.reduce((pn, { path, name, parentKey, children }) => {
         if (children && children.length) {
             return find(children, full, pn);
         }
@@ -92,7 +100,7 @@
             path.length > pn.path.length &&
             full.replace(/\/\d+/g, '').startsWith(path.replace(/\/\d+/g, ''))
         ) {
-            return { path, name };
+            return { path, name, parentKey };
         }
         return pn;
     }, pathname);

--
Gitblit v1.8.0