import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { fromJS } from 'immutable'
|
import { message } from 'antd'
|
import { CopyOutlined } from '@ant-design/icons'
|
import './index.scss'
|
|
class CopyComponent extends Component {
|
static propTpyes = {
|
type: PropTypes.string,
|
card: PropTypes.object
|
}
|
|
trigger = () => {
|
const { card, type } = this.props
|
let _val = fromJS(card).toJS()
|
_val.copyType = type
|
|
try {
|
delete _val.$srcId
|
|
let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
|
if (srcid) {
|
_val.$srcId = srcid
|
}
|
|
if (type === 'menucell') {
|
_val.setting.type = 'linkmenu'
|
_val.setting.linkMenuId = ''
|
_val.setting.copyMenuId = ''
|
} else if (_val.type === 'menubar' && _val.subtype === 'menubar') {
|
let cell = _val.subMenus[0]
|
_val.subMenus = []
|
|
if (cell) {
|
cell.setting.type = 'menu'
|
cell.setting.linkMenuId = ''
|
cell.setting.copyMenuId = ''
|
|
_val.subMenus.push(cell)
|
}
|
} else if (['normaltable', 'editable', 'basetable'].includes(type)) {
|
_val.action = _val.action.filter(item => !item.origin)
|
_val.cols = _val.cols.filter(item => !item.origin)
|
_val.search = _val.search.filter(item => !item.origin)
|
delete _val.isNew
|
}
|
|
_val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
|
} catch (e) {
|
message.warning('复制失败,请重试!')
|
_val = ''
|
}
|
|
if (_val) {
|
let oInput = document.createElement('input')
|
oInput.value = _val
|
document.body.appendChild(oInput)
|
oInput.select()
|
document.execCommand('Copy')
|
document.body.removeChild(oInput)
|
|
message.success('复制成功。')
|
}
|
}
|
|
render () {
|
return (
|
<CopyOutlined title="复制" style={{color: '#26C281'}} onClick={this.trigger} />
|
)
|
}
|
}
|
|
export default CopyComponent
|