import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { Input, notification, Modal } from 'antd'
|
import { SnippetsOutlined } from '@ant-design/icons'
|
|
// import './index.scss'
|
|
const { TextArea } = Input
|
|
class PaseComponent extends Component {
|
static propTpyes = {
|
inputSubmit: PropTypes.func // 回车事件
|
}
|
|
state = {
|
visible: false,
|
value: ''
|
}
|
|
trigger = () => {
|
// navigator.clipboard
|
// .readText()
|
// .then((val) => {
|
// this.evalContent(val)
|
// })
|
// .catch((v) => {
|
// this.setState({visible: true, value: ''})
|
// })
|
|
this.setState({visible: true, value: ''})
|
}
|
|
evalContent = (config) => {
|
let _config = config.replace(/(\n|\s)+/g, '')
|
|
if (!_config) {
|
notification.warning({
|
top: 92,
|
message: '未获取到配置信息',
|
duration: 5
|
})
|
return
|
}
|
|
try {
|
_config = JSON.parse(window.decodeURIComponent(window.atob(_config)))
|
|
if (typeof(_config) === 'object' && _config.$srcId) {
|
let srcid = localStorage.getItem(window.GLOB.sysSign + 'srcId')
|
if (srcid && _config.$srcId !== srcid) {
|
notification.warning({
|
top: 92,
|
message: '当前系统无权限使用此项配置!',
|
duration: 5
|
})
|
|
_config = ''
|
} else {
|
delete _config.$srcId
|
}
|
}
|
} catch (e) {
|
// 通过sql语句添加字段集
|
if (/[a-zA-Z0-9_]+\s+(nvarchar\(\d+\)|Decimal\(18,\d+\)|Int|datetime|date)/ig.test(config)) {
|
_config = {
|
key: 'datasourcefield',
|
type: 'array',
|
data: []
|
}
|
|
let list = config.match(/[a-zA-Z0-9_]+\s+(nvarchar\(\d+\)|Decimal\(18,\d+\)|Int|datetime|date)/ig)
|
|
list.forEach(item => {
|
_config.data.unshift({
|
datatype: item.split(/\s+/)[1],
|
field: item.split(/\s+/)[0],
|
label: item.split(/\s+/)[0],
|
})
|
})
|
} else {
|
notification.warning({
|
top: 92,
|
message: '解析错误',
|
duration: 5
|
})
|
_config = ''
|
}
|
}
|
|
if (!_config) return
|
|
this.props.getPasteValue(_config, () => {
|
this.setState({visible: false, value: ''})
|
})
|
}
|
|
changeVal = (e) => {
|
this.setState({value: e.target.value})
|
}
|
|
pasteSubmit = () => {
|
this.evalContent(this.state.value)
|
}
|
|
enterPress = (e) => {
|
e.stopPropagation()
|
|
this.evalContent(this.state.value)
|
}
|
|
render() {
|
const { children } = this.props
|
const { visible, value } = this.state
|
|
return (
|
<>
|
{children ? <span onClick={this.trigger}>{children}</span> : <SnippetsOutlined title="粘贴" onClick={this.trigger} />}
|
<Modal
|
title="粘贴"
|
visible={visible}
|
width={600}
|
maskClosable={false}
|
onOk={this.pasteSubmit}
|
onCancel={() => {this.setState({visible: false})}}
|
destroyOnClose
|
>
|
<TextArea placeholder="请输入配置信息" autoFocus autoSize={{ minRows: 8, maxRows: 8 }} value={value} onChange={this.changeVal} onPressEnter={this.enterPress}/>
|
</Modal>
|
</>
|
)
|
}
|
}
|
|
export default PaseComponent
|