import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { is, fromJS } from 'immutable'
|
import { Icon, Modal, notification } from 'antd'
|
import html2canvas from 'html2canvas'
|
|
import Api from '@/api'
|
import Utils from '@/utils/utils.js'
|
import zhCN from '@/locales/zh-CN/model.js'
|
import enUS from '@/locales/en-US/model.js'
|
import UserForm from './settingform'
|
import MKEmitter from '@/utils/events.js'
|
import './index.scss'
|
|
class DataSource extends Component {
|
static propTpyes = {
|
btnlog: PropTypes.array,
|
handlelog: PropTypes.func
|
}
|
|
state = {
|
dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
|
visible: false,
|
loading: false
|
}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
trigger = () => {
|
this.setState({
|
visible: true,
|
loading: false
|
})
|
}
|
|
submit = () => {
|
const { config } = this.props
|
|
this.verifyRef.handleConfirm().then(res => {
|
this.setState({loading: true})
|
document.getElementsByClassName('menu-view')[0].classList.add('saving')
|
|
html2canvas(document.getElementById(config.uuid)).then(canvas => {
|
let img = canvas.toDataURL('image/png') // 获取生成的图片
|
Api.fileuploadbase64(img, 'cloud').then(result => {
|
if (result.status) {
|
Api.getSystemConfig({
|
func: 's_custom_components_adduptdel',
|
c_id: config.uuid,
|
images: Utils.getcloudurl(result.Images),
|
c_name: res.name,
|
long_param: window.btoa(window.encodeURIComponent(JSON.stringify(config))),
|
del_type: ''
|
}).then(response => {
|
if (response.status) {
|
this.setState({loading: false, visible: false})
|
notification.success({
|
top: 92,
|
message: '保存成功',
|
duration: 2
|
})
|
document.getElementsByClassName('menu-view')[0].classList.remove('saving')
|
MKEmitter.emit('updateCustomComponent')
|
} else {
|
this.setState({loading: false})
|
notification.warning({
|
top: 92,
|
message: response.message,
|
duration: 5
|
})
|
}
|
})
|
} else {
|
this.setState({loading: false})
|
notification.warning({
|
top: 92,
|
message: result.ErrMesg,
|
duration: 5
|
})
|
}
|
})
|
})
|
})
|
}
|
|
cancel = () => {
|
this.setState({ visible: false })
|
document.getElementsByClassName('menu-view')[0].classList.remove('saving')
|
}
|
|
render () {
|
const { visible, dict, loading } = this.state
|
|
return (
|
<div className="user-component-wrap">
|
<Icon type="user" title="生成自定义组件" onClick={this.trigger} />
|
<Modal
|
wrapClassName="popview-modal"
|
title="自定义组件"
|
visible={visible}
|
width={500}
|
maskClosable={false}
|
confirmLoading={loading}
|
onOk={this.submit}
|
onCancel={this.cancel}
|
destroyOnClose
|
>
|
<UserForm dict={dict} inputSubmit={this.submit} wrappedComponentRef={(inst) => this.verifyRef = inst}/>
|
</Modal>
|
</div>
|
)
|
}
|
}
|
|
export default DataSource
|