import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { is, fromJS } from 'immutable'
|
import { Tabs, Icon } from 'antd'
|
|
import asyncComponent from '@/utils/asyncComponent'
|
import MKEmitter from '@/utils/events.js'
|
import './index.scss'
|
|
const TabTransfer = asyncComponent(() => import('../../share/tabtransfer'))
|
const { TabPane } = Tabs
|
|
class antvTabs extends Component {
|
static propTpyes = {
|
BID: PropTypes.any, // 页面BID
|
bids: PropTypes.any, // 父级Id集
|
config: PropTypes.object, // 组件配置信息
|
mainSearch: PropTypes.any, // 外层搜索条件
|
menuType: PropTypes.any, // 菜单类型
|
}
|
|
state = {
|
tabs: null,
|
parentIds: [],
|
bids: {}
|
}
|
|
UNSAFE_componentWillMount () {
|
const { config, bids } = this.props
|
this.setState({
|
tabs: config,
|
parentIds: config.parentIds || [],
|
bids: bids ? bids : {}
|
})
|
}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
componentDidMount () {
|
MKEmitter.addListener('resetSelectLine', this.resetParentParam)
|
}
|
|
/**
|
* @description 组件销毁,清除state更新,清除快捷键设置
|
*/
|
componentWillUnmount () {
|
this.setState = () => {
|
return
|
}
|
MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
|
}
|
|
resetParentParam = (MenuID, id, data) => {
|
const { parentIds, bids } = this.state
|
|
if (!parentIds.includes(MenuID)) return
|
|
this.setState({
|
bids: {...bids, [MenuID]: id, [MenuID + '_data']: data}
|
})
|
}
|
|
render() {
|
const { mainSearch, BID } = this.props
|
const { tabs, bids } = this.state
|
|
return (
|
<div className="menu-antv-tabs-wrap" style={tabs.style}>
|
<Tabs defaultActiveKey="1" tabPosition={tabs.setting.position} type={tabs.setting.tabStyle}>
|
{tabs.subtabs.map(tab => (
|
<TabPane tab={<span id={'tab' + tab.uuid}>{tab.icon ? <Icon type={tab.icon} /> : null}{tab.label}</span>} key={tab.uuid}>
|
<TabTransfer BID={BID} config={tab} bids={bids} mainSearch={mainSearch}/>
|
</TabPane>
|
))}
|
</Tabs>
|
</div>
|
)
|
}
|
}
|
|
export default antvTabs
|