import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { is, fromJS } from 'immutable'
|
import { Affix } from 'antd'
|
|
import asyncComponent from './asyncButtonComponent'
|
import './index.scss'
|
|
const NormalButton = asyncComponent(() => import('./normalbutton'))
|
const ExcelInButton = asyncComponent(() => import('./excelInbutton'))
|
const ExcelOutButton = asyncComponent(() => import('./exceloutbutton'))
|
const PopupButton = asyncComponent(() => import('./popupbutton'))
|
const TabButton = asyncComponent(() => import('./tabbutton'))
|
const NewPageButton = asyncComponent(() => import('./newpagebutton'))
|
const ChangeUserButton = asyncComponent(() => import('./changeuserbutton'))
|
const PrintButton = asyncComponent(() => import('./printbutton'))
|
const FuncMegvii = asyncComponent(() => import('./funcMegvii'))
|
const FuncZip = asyncComponent(() => import('./funczip'))
|
|
class ActionList extends Component {
|
static propTpyes = {
|
BID: PropTypes.any, // 主表ID
|
lock: PropTypes.any, // 可编辑表中按钮锁定
|
BData: PropTypes.any, // 主表数据
|
selectedData: PropTypes.any, // 子表中选择数据
|
Tab: PropTypes.any, // 如果当前元素为标签时,tab为标签信息
|
MenuID: PropTypes.string, // 菜单ID
|
actions: PropTypes.array, // 按钮组
|
columns: PropTypes.array, // 显示列
|
setting: PropTypes.any, // 页面通用设置
|
ContainerId: PropTypes.any // tab页面ID,用于弹窗控制
|
}
|
|
state = {}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
getButtonList = (actions) => {
|
const { BID, BData, MenuID, Tab, columns, setting, ContainerId, selectedData, lock } = this.props
|
return actions.map(item => {
|
if (['exec', 'prompt', 'pop'].includes(item.OpenType)) {
|
return (
|
<NormalButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
BData={BData}
|
setting={setting}
|
columns={columns}
|
ContainerId={ContainerId}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.OpenType === 'excelIn') {
|
return (
|
<ExcelInButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
BData={BData}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.OpenType === 'excelOut') {
|
return (
|
<ExcelOutButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
BData={BData}
|
setting={setting}
|
/>
|
)
|
} else if (item.OpenType === 'popview') {
|
return (
|
<PopupButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
BData={BData}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.OpenType === 'tab') {
|
return (
|
<TabButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
btn={item}
|
BData={BData}
|
MenuID={MenuID}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.OpenType === 'innerpage' || item.OpenType === 'outerpage') {
|
return (
|
<NewPageButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
btn={item}
|
BData={BData}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.OpenType === 'funcbutton') {
|
if (item.funcType === 'changeuser' || item.funcType === 'closetab') {
|
return (
|
<ChangeUserButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
btn={item}
|
BData={BData}
|
MenuID={MenuID}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.funcType === 'print') {
|
return (
|
<PrintButton
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
BData={BData}
|
setting={setting}
|
ContainerId={ContainerId}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.funcType === 'megvii') {
|
return (
|
<FuncMegvii
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
} else if (item.funcType === 'filezip') {
|
return (
|
<FuncZip
|
key={item.uuid}
|
show={item.show || 'actionList'}
|
disabled={lock || false}
|
BID={BID}
|
Tab={Tab}
|
btn={item}
|
setting={setting}
|
selectedData={selectedData}
|
/>
|
)
|
}
|
}
|
return null
|
})
|
}
|
|
render() {
|
const { setting, MenuID, actions } = this.props
|
let fixed = setting.actionfixed && setting.tabType === 'main' // 按钮是否固定在头部
|
|
if (fixed && MenuID) {
|
return (
|
<Affix offsetTop={48}>
|
<div className="button-list toolbar-button" id={fixed ? MenuID + 'mainaction' : ''}>
|
{this.getButtonList(actions)}
|
</div>
|
</Affix>
|
)
|
} else {
|
return (
|
<div className="button-list toolbar-button" id={fixed ? MenuID + 'mainaction' : ''}>
|
{this.getButtonList(actions)}
|
</div>
|
)
|
}
|
}
|
}
|
|
export default ActionList
|