import React, {Component} from 'react'
|
import { Menu } from 'antd'
|
import { fromJS } from 'immutable'
|
import { FolderOutlined } from '@ant-design/icons'
|
|
import { SySMenuList } from './config'
|
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)
|
}
|
|
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(window.GLOB.sysType))
|
})
|
|
menulist = menulist.filter(menu => menu.children.length > 0)
|
}
|
|
let tb = sessionStorage.getItem('mk-table-node')
|
let temp = sessionStorage.getItem('mk-print-temp')
|
let tabTemp = sessionStorage.getItem('mk-print-tab-temp')
|
|
sessionStorage.removeItem('mk-table-node')
|
sessionStorage.removeItem('mk-print-temp')
|
sessionStorage.removeItem('mk-print-tab-temp')
|
|
this.setState({
|
subMenulist: menulist,
|
rootSubmenuKeys: menulist.map(item => item.MenuID),
|
openKeys: [menulist[0].MenuID]
|
}, () => {
|
if (!menulist[0] || menulist[0].children.length === 0) return
|
|
if (tb) {
|
let menu = menulist[0].children.filter(item => item.MenuNo === 'sDatasM')[0]
|
if (menu) {
|
setTimeout(() => {
|
MKEmitter.emit('modifyTabs', fromJS(menu).toJS())
|
}, 500)
|
}
|
} else if (temp) {
|
let menu = menulist[0].children.filter(item => item.MenuNo === 'sPrintTemplate_webM')[0]
|
if (menu) {
|
menu = fromJS(menu).toJS()
|
menu.param = {}
|
menu.param.$searchkey = 'printtempno'
|
menu.param.$searchval = temp
|
setTimeout(() => {
|
MKEmitter.emit('modifyTabs', menu)
|
}, 500)
|
}
|
} else if (tabTemp) {
|
let menu = menulist[0].children.filter(item => item.MenuNo === 'sPrintTemplateM')[0]
|
if (menu) {
|
menu = fromJS(menu).toJS()
|
menu.param = {}
|
menu.param.$searchkey = 'printtempno'
|
menu.param.$searchval = tabTemp
|
setTimeout(() => {
|
MKEmitter.emit('modifyTabs', menu)
|
}, 500)
|
}
|
}
|
})
|
}
|
|
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
|