import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { is, fromJS } from 'immutable'
|
import { Modal, Icon } from 'antd'
|
|
import MenusForm from './menus'
|
import './index.scss'
|
|
class MenusWrap extends Component {
|
static propTpyes = {
|
card: PropTypes.object,
|
updateMenus: PropTypes.func
|
}
|
|
state = {
|
visible: false,
|
menus: [],
|
}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
trigger = () => {
|
const { card } = this.props
|
|
let appType = sessionStorage.getItem('appType') || ''
|
let menulist = []
|
|
if (appType) {
|
menulist = sessionStorage.getItem('appMenus')
|
if (menulist) {
|
try {
|
menulist = JSON.parse(menulist)
|
} catch (e) {
|
menulist = []
|
}
|
} else {
|
menulist = []
|
}
|
} else {
|
menulist = sessionStorage.getItem('fstMenuList')
|
if (menulist) {
|
try {
|
menulist = JSON.parse(menulist)
|
} catch (e) {
|
menulist = []
|
}
|
} else {
|
menulist = []
|
}
|
}
|
this.setState({
|
appType,
|
menulist,
|
visible: true,
|
menus: card.menus || []
|
})
|
}
|
|
submit = () => {
|
this.setState({
|
visible: false
|
})
|
this.props.updateMenus(this.state.menus)
|
}
|
|
update = (menus) => {
|
this.setState({menus})
|
}
|
|
render() {
|
const { visible, menus, appType, menulist } = this.state
|
|
return (
|
<>
|
<Icon type="menu" title="菜单组" onClick={this.trigger}/>
|
<Modal
|
title="菜单组"
|
wrapClassName="menus-field-modal"
|
visible={visible}
|
width={900}
|
maskClosable={false}
|
onOk={this.submit}
|
onCancel={() => { this.setState({ visible: false })}}
|
destroyOnClose
|
>
|
<MenusForm menus={menus} appType={appType} menulist={menulist} update={this.update}/>
|
</Modal>
|
</>
|
)
|
}
|
}
|
|
export default MenusWrap
|