king
2022-09-19 46059e342d70b51bd9775f30feb5f29304bda6ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import React, {Component} from 'react'
import { Menu } from 'antd'
import { FolderOutlined } from '@ant-design/icons'
 
import { SySMenuList } from './config'
import options from '@/store/options.js'
import MKEmitter from '@/utils/events.js'
import './index.scss'
 
const { SubMenu } = Menu
 
class Sidemenu extends Component {
  state = {
    subMenulist: [],         // 二级菜单
    rootSubmenuKeys: [],
    openKeys: []
  }
 
  changemenu(e, menu) {
    e.preventDefault()
 
    MKEmitter.emit('modifyTabs', menu, 'plus')
  }
 
  componentDidMount () {
    let menulist = SySMenuList
 
    if (window.GLOB.systemType === 'production') {
      menulist.forEach(menu => {
        menu.children = menu.children.filter(item => item.systems && item.systems.includes(window.GLOB.systemType))
      })
 
      menulist = menulist.filter(menu => menu.children.length > 0)
    } else {
      menulist.forEach(menu => {
        menu.children = menu.children.filter(item => !item.systems || item.systems.includes(options.sysType))
      })
 
      menulist = menulist.filter(menu => menu.children.length > 0)
    }
 
    this.setState({
      subMenulist: menulist,
      rootSubmenuKeys: menulist.map(item => item.MenuID),
      openKeys: [menulist[0].MenuID]
    })
  }
 
  onOpenChange = openKeys => {
    const latestOpenKey = openKeys.find(key => this.state.openKeys.indexOf(key) === -1)
    if (this.state.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {
      this.setState({ openKeys })
    } else {
      this.setState({
        openKeys: latestOpenKey ? [latestOpenKey] : []
      })
    }
  }
 
  render () {
    return (
      <aside className="mk-sys-side-menu ant-menu-dark mk-edit">
        <Menu openKeys={this.state.openKeys} onOpenChange={this.onOpenChange} mode="inline" theme="dark">
        {this.state.subMenulist && this.state.subMenulist.map((item, index) => {
          return (
            <SubMenu
              key={item.MenuID}
              title={
                <span><FolderOutlined /> {item.MenuName}</span>
              }
            >
              {item.children.map(cell => {
                return (
                  <Menu.Item key={cell.MenuID}>
                    <a href={cell.src} id={cell.MenuID} onClick={(e) => this.changemenu(e, cell)}>{cell.MenuName}</a>
                  </Menu.Item>
                )
              })}
            </SubMenu>
          )
        })}
      </Menu>
        
      </aside>
    )
  }
}
 
export default Sidemenu