import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import {connect} from 'react-redux'
|
import { is, fromJS } from 'immutable'
|
import {Tabs, Icon} from 'antd'
|
import {modifyTabview} from '@/store/action'
|
import './tabview.scss'
|
|
class Header extends Component {
|
static propTpyes = {
|
tabviews: PropTypes.array
|
}
|
|
state = {
|
selectedTabId: '',
|
iFrameHeight: 0
|
}
|
|
handleTabview (menu) {
|
let tabs = JSON.parse(JSON.stringify(this.props.tabviews))
|
tabs = tabs.filter(tab => {
|
if (tab.MenuID === this.state.selectedTabId) {
|
tab.selected = true
|
} else {
|
tab.selected = false
|
}
|
return tab.MenuID !== menu.MenuID
|
})
|
if (menu.MenuID === this.state.selectedTabId) {
|
tabs[0] && (tabs[0].selected = true)
|
}
|
this.props.modifyTabview(tabs)
|
}
|
|
changeTab (menu) {
|
this.setState({
|
selectedTabId: menu.MenuID
|
})
|
}
|
|
UNSAFE_componentWillMount () {
|
|
}
|
|
componentDidMount () {
|
console.log(this.props)
|
}
|
|
UNSAFE_componentWillReceiveProps (nextProps) {
|
if (nextProps.tabviews && !is(fromJS(this.props.tabviews), fromJS(nextProps.tabviews))) {
|
let view = nextProps.tabviews.filter(tab => tab.selected)[0]
|
this.setState({
|
selectedTabId: view ? view.MenuID : ''
|
})
|
}
|
}
|
|
shouldComponentUpdate(nextProps, nextState) {
|
return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
componentDidUpdate () {
|
|
}
|
|
render () {
|
return (
|
<section className="flex-container content-box">
|
<div className="content-header">
|
{this.props.tabviews && this.props.tabviews.length > 0 &&
|
<Tabs activeKey={this.state.selectedTabId}>
|
{this.props.tabviews.map(view => {
|
return (
|
<Tabs.TabPane
|
className="test"
|
tab={
|
<span>
|
<span className="tab-name" onClick={() => {this.changeTab(view)}}>
|
{view.MenuName}
|
</span>
|
<Icon type="close" onClick={() => {this.handleTabview(view)}}/>
|
</span>
|
}
|
key={view.MenuID}
|
>
|
<iframe
|
title={view.MenuName}
|
src={'http://qingqiumarket.cn/MKWMS/zh-CN/' + view.LinkUrl}
|
/>
|
</Tabs.TabPane>
|
)
|
})}
|
</Tabs>
|
}
|
</div>
|
</section>
|
)
|
}
|
}
|
|
const mapStateToProps = (state) => {
|
return {
|
tabviews: state.tabviews
|
}
|
}
|
|
const mapDispatchToProps = (dispatch) => {
|
return {
|
modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
|
}
|
}
|
|
export default connect(mapStateToProps, mapDispatchToProps)(Header)
|