import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { is, fromJS } from 'immutable'
|
import { Button, Modal, notification } from 'antd'
|
|
import zhCN from '@/locales/zh-CN/model.js'
|
import enUS from '@/locales/en-US/model.js'
|
import SettingForm from './settingform'
|
import Api from '@/api'
|
import './index.scss'
|
|
class Quotecomponent extends Component {
|
static propTpyes = {
|
config: PropTypes.any,
|
updateConfig: PropTypes.func
|
}
|
|
state = {
|
dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
|
visible: false,
|
}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
verifySubmit = () => {
|
let config = fromJS(this.props.config).toJS()
|
|
this.verifyRef.handleConfirm().then(res => {
|
let exit = false
|
config.components.forEach(item => {
|
if (item.type === res.keys_type) {
|
exit = true
|
}
|
})
|
|
if (exit) {
|
let msg = ''
|
if (res.keys_type === 'navbar') {
|
msg = '导航栏已存在!'
|
}
|
notification.warning({
|
top: 92,
|
message: msg,
|
duration: 5
|
})
|
return
|
}
|
|
Api.getSystemConfig({
|
func: 'sPC_Get_LongParam',
|
TypeCharOne: sessionStorage.getItem('kei_no'),
|
typename: sessionStorage.getItem('typename') || 'pc',
|
MenuID: res.keys_id
|
}).then(result => {
|
if (!result.status) {
|
notification.warning({
|
top: 92,
|
message: result.message,
|
duration: 5
|
})
|
return
|
}
|
let _config = null
|
try {
|
_config = JSON.parse(window.decodeURIComponent(window.atob(result.LongParam)))
|
} catch (e) {
|
console.warn('Parse Failure')
|
_config = null
|
}
|
|
if (!_config) {
|
notification.warning({
|
top: 92,
|
message: '未获取到配置信息!',
|
duration: 5
|
})
|
return
|
}
|
|
_config.open_edition = result.open_edition || ''
|
window.GLOB.CacheIndependent.set(_config.uuid, fromJS(_config).toJS())
|
|
config.components.unshift(_config)
|
|
if (sessionStorage.getItem('appType') !== 'pc' && !config.style.paddingBottom) {
|
config.style.paddingBottom = '50px'
|
} else if (sessionStorage.getItem('appType') === 'pc' && !config.style.paddingTop) {
|
config.style.paddingTop = '50px'
|
}
|
|
this.setState({
|
visible: false
|
})
|
this.props.updateConfig(config)
|
})
|
})
|
}
|
|
render () {
|
const { config } = this.props
|
const { visible, dict } = this.state
|
|
return (
|
<div className="quote-wrap">
|
<Button icon="appstore" onClick={() => {this.setState({visible: true})}}>关联菜单栏</Button>
|
<Modal
|
title="关联菜单栏"
|
visible={visible}
|
width={500}
|
maskClosable={false}
|
okText={dict['model.submit']}
|
onOk={this.verifySubmit}
|
onCancel={() => { this.setState({ visible: false }) }}
|
destroyOnClose
|
>
|
<SettingForm
|
dict={dict}
|
config={config}
|
wrappedComponentRef={(inst) => this.verifyRef = inst}
|
/>
|
</Modal>
|
</div>
|
)
|
}
|
}
|
|
export default Quotecomponent
|