| | |
| | | import './index.scss' |
| | | |
| | | const SubTabTable = asyncSpinComponent(() => import('@/tabviews/subtabtable')) |
| | | const CustomPage = asyncSpinComponent(() => import('@/tabviews/custom')) |
| | | |
| | | class NormalButton extends Component { |
| | | class PopupButton extends Component { |
| | | static propTpyes = { |
| | | show: PropTypes.any, // 按钮显示样式控制 |
| | | position: PropTypes.any, // 按钮位置,工具栏为toolbar |
| | | BID: PropTypes.string, // 主表ID |
| | | BData: PropTypes.any, // 主表数据 |
| | | selectedData: PropTypes.any, // 子表中选择数据 |
| | |
| | | MenuID: PropTypes.string, // 菜单ID |
| | | btn: PropTypes.object, // 按钮 |
| | | setting: PropTypes.any, // 页面通用设置 |
| | | updateStatus: PropTypes.func, // 按钮状态更新 |
| | | } |
| | | |
| | | state = { |
| | |
| | | } |
| | | |
| | | componentDidMount () { |
| | | const { show } = this.props |
| | | const { position } = this.props |
| | | |
| | | if (show === 'actionList') { |
| | | if (position === 'toolbar') { |
| | | MKEmitter.addListener('triggerBtnId', this.actionTrigger) |
| | | } |
| | | MKEmitter.addListener('openNewTab', this.openNewTab) |
| | | MKEmitter.addListener('refreshPopButton', this.refreshPopButton) |
| | | } |
| | | |
| | | componentWillUnmount () { |
| | | this.setState = () => { |
| | | return |
| | | } |
| | | MKEmitter.removeListener('openNewTab', this.openNewTab) |
| | | MKEmitter.removeListener('triggerBtnId', this.actionTrigger) |
| | | MKEmitter.removeListener('refreshPopButton', this.refreshPopButton) |
| | | } |
| | | |
| | | /** |
| | | * @description 打开新标签时,关闭弹窗标签页 |
| | | */ |
| | | openNewTab = () => { |
| | | this.setState({ |
| | | visible: false, |
| | | loading: false |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 弹窗标签页刷新 |
| | | */ |
| | | refreshPopButton = (tabId) => { |
| | | const { btn } = this.props |
| | | |
| | | if (btn.uuid !== tabId) return |
| | | |
| | | if (btn.$type === 'CustomPage') { |
| | | if (btn.popClose !== 'never') { |
| | | MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.popClose, btn) |
| | | } |
| | | } else { |
| | | let position = btn.popClose !== 'never' ? btn.popClose : 'grid' |
| | | MKEmitter.emit('refreshByButtonResult', btn.$menuId, position, btn) |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description 触发按钮操作 |
| | | */ |
| | | actionTrigger = (triggerId) => { |
| | | actionTrigger = (triggerId, record) => { |
| | | const { setting, Tab, BID, btn, selectedData } = this.props |
| | | const { loading } = this.state |
| | | |
| | |
| | | return |
| | | } |
| | | |
| | | let data = selectedData || [] |
| | | let data = record || selectedData || [] |
| | | |
| | | if (btn.Ot === 'requiredSgl' && data.length !== 1) { |
| | | // 需要选择单行时,校验数据 |
| | |
| | | }) |
| | | } |
| | | |
| | | // 操作后刷新主表 |
| | | reloadtable = () => { |
| | | this.props.updateStatus('refresh', 'grid', true) |
| | | } |
| | | |
| | | /** |
| | | * @description 弹窗关闭 |
| | | */ |
| | |
| | | loading: false |
| | | }) |
| | | |
| | | this.props.updateStatus('refresh', btn.popClose) |
| | | if (btn.popClose !== 'never') { |
| | | MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.popClose, btn) |
| | | } |
| | | } |
| | | |
| | | render() { |
| | |
| | | onClick={() => {this.actionTrigger()}} |
| | | loading={loading} |
| | | >{btn.label}</Button> : null} |
| | | {['icon', 'text', 'all'].includes(show) ? <Button |
| | | {show !== 'actionList' ? <Button |
| | | type="link" |
| | | title={show === 'icon' ? btn.label : ''} |
| | | loading={loading} |
| | | style={btn.btnstyle} |
| | | icon={show === 'text' ? '' : (btn.icon || '')} |
| | | onClick={() => {this.actionTrigger()}} |
| | | >{show === 'icon' && btn.icon ? '' : btn.label}</Button> : null} |
| | | <Modal |
| | | className="popview-modal" |
| | | className={'popview-modal ' + (btn.$type === 'CustomPage' ? 'custom-popview' : '')} |
| | | title={btn.label} |
| | | width={'80vw'} |
| | | width={'85vw'} |
| | | maskClosable={false} |
| | | visible={this.state.visible} |
| | | onCancel={this.popclose} |
| | |
| | | ]} |
| | | destroyOnClose |
| | | > |
| | | <SubTabTable |
| | | {btn.$type !== 'CustomPage' ? <SubTabTable |
| | | Tab={btn} |
| | | MenuID={btn.linkTab} |
| | | SupMenuID={this.props.MenuID} |
| | | BID={popData ? primaryId : this.props.BID} |
| | | BData={popData || this.props.BData} |
| | | SupMenuID={this.props.MenuID} |
| | | MenuID={btn.linkTab} |
| | | refreshSupView={this.reloadtable} |
| | | /> |
| | | /> : null} |
| | | {btn.$type === 'CustomPage' ? <CustomPage Tab={btn} MenuID={btn.uuid} param={{BID: (popData ? primaryId : this.props.BID), data: (popData || this.props.BData)}} /> : null} |
| | | </Modal> |
| | | </div> |
| | | ) |
| | |
| | | return {} |
| | | } |
| | | |
| | | export default connect(mapStateToProps, mapDispatchToProps)(NormalButton) |
| | | export default connect(mapStateToProps, mapDispatchToProps)(PopupButton) |