import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { is, fromJS } from 'immutable'
|
import { Modal, Button, notification } from 'antd'
|
import { QuestionCircleOutlined, CalendarOutlined } from '@ant-design/icons'
|
import moment from 'moment'
|
|
import Api from '@/api'
|
import Utils from '@/utils/utils.js'
|
import './index.scss'
|
|
class Versions extends Component {
|
static propTpyes = {
|
MenuId: PropTypes.string,
|
open_edition: PropTypes.string,
|
updateConfig: PropTypes.func
|
}
|
|
state = {
|
visible: false,
|
loadingTable: false,
|
preconfirming: false,
|
nextconfirming: false,
|
tables: [],
|
}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
trigger = () => {
|
this.setState({visible: true})
|
}
|
|
preVersion = () => {
|
const { MenuId, open_edition, updateConfig } = this.props
|
|
let param = {
|
func: 's_spages_Param_ctrlzy',
|
ctrlzy: 'z',
|
MenuID: MenuId,
|
TypeCharOne: sessionStorage.getItem('kei_no') || '',
|
TypeName: sessionStorage.getItem('typename') || '',
|
lang: sessionStorage.getItem('lang'),
|
timestamp: moment().format('YYYY-MM-DD HH:mm:ss'),
|
open_edition: open_edition,
|
LText: MenuId + window.GLOB.appkey
|
}
|
|
param.secretkey = Utils.encrypt(param.LText, param.timestamp)
|
|
this.setState({preconfirming: true})
|
|
Api.getCloudConfig(param).then(res => {
|
this.setState({preconfirming: false})
|
if (!res.status) {
|
notification.warning({
|
top: 92,
|
message: res.message,
|
duration: 5
|
})
|
} else {
|
this.setState({visible: false})
|
notification.success({
|
top: 92,
|
message: '执行成功。',
|
duration: 1
|
})
|
|
if (updateConfig) {
|
updateConfig()
|
} else {
|
setTimeout(() => {
|
window.location.reload()
|
}, 1000)
|
}
|
}
|
})
|
}
|
|
nextVersion = () => {
|
const { MenuId, open_edition, updateConfig } = this.props
|
|
let param = {
|
func: 's_spages_Param_ctrlzy',
|
ctrlzy: 'y',
|
MenuID: MenuId,
|
TypeCharOne: sessionStorage.getItem('kei_no') || '',
|
TypeName: sessionStorage.getItem('typename') || '',
|
lang: sessionStorage.getItem('lang'),
|
timestamp: moment().format('YYYY-MM-DD HH:mm:ss'),
|
open_edition: open_edition,
|
LText: MenuId + window.GLOB.appkey
|
}
|
|
param.secretkey = Utils.encrypt(param.LText, param.timestamp)
|
|
this.setState({nextconfirming: true})
|
|
Api.getCloudConfig(param).then(res => {
|
this.setState({nextconfirming: false})
|
if (!res.status) {
|
notification.warning({
|
top: 92,
|
message: res.message,
|
duration: 5
|
})
|
} else {
|
this.setState({visible: false})
|
notification.success({
|
top: 92,
|
message: '执行成功。',
|
duration: 1
|
})
|
|
if (updateConfig) {
|
updateConfig()
|
} else {
|
setTimeout(() => {
|
window.location.reload()
|
}, 1000)
|
}
|
}
|
})
|
}
|
|
render() {
|
const { visible, preconfirming, nextconfirming } = this.state
|
|
return (
|
<div style={{display: 'inline-block'}}>
|
<Button style={{borderColor: '#40a9ff', color: '#40a9ff'}} onClick={this.trigger}><CalendarOutlined /> 版本管理</Button>
|
<Modal
|
title=""
|
wrapClassName="version-modal"
|
visible={visible}
|
width={500}
|
closable={false}
|
maskClosable={false}
|
footer={[]}
|
destroyOnClose
|
>
|
<div className="header"><QuestionCircleOutlined/>版本切换</div>
|
<div className="detail">请选择需要切换的版本,或点击取消关闭弹窗。</div>
|
<div className="footer">
|
<Button key="pre" type="primary" loading={preconfirming} onClick={this.preVersion}>上一版本</Button>
|
<Button key="next" type="primary" loading={nextconfirming} onClick={this.nextVersion}>下一版本</Button>
|
<Button key="cancel" onClick={() => { this.setState({ visible: false })}}>取消</Button>
|
</div>
|
</Modal>
|
</div>
|
)
|
}
|
}
|
|
export default Versions
|