forked from huge/frontEnd/hugeOA

liuwh
2020-04-30 f9e9df1e43014e67580ad03dc86854a55673403d
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,42 @@
}) {
    if (!menudata.length) return null;
    const { path, name } = find(menudata, pathname);
    const { path, name, parentKey } = find(menudata, pathname);
    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 +63,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 +91,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 +99,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);