king
2022-09-13 b8cde0c39d7b6d58ceff3adf6dea3cb3118ea602
src/menu/components/share/pastecomponent/index.jsx
@@ -1,7 +1,8 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { fromJS } from 'immutable'
import { Icon, Modal, notification } from 'antd'
import { Modal, notification } from 'antd'
import { SnippetsOutlined } from '@ant-design/icons'
import Utils from '@/utils/utils.js'
import MKEmitter from '@/utils/events.js'
@@ -24,7 +25,7 @@
    this.setState({visible: true})
  }
  resetconfig = (item, copyBtns) => {
  resetconfig = (item, copyBtns, config) => {
    let _uuid = Utils.getuuid()
    if (item.OpenType === 'popview') {
@@ -38,9 +39,33 @@
      item.uuid = _uuid
    }
    if (item.copyType === 'cardcell') {
    if (item.copyType === 'cardcell' && config.subtype === 'datacard') {
      item.setting = item.setting || {}
      item.$cardType = 'extendCard'
      item.setting.width = item.setting.width || 6
      if (item.elements) {
        item.elements = item.elements.map(cell => {
          if (cell.datatype === 'dynamic') {
            cell.datatype = 'static'
          }
          cell.uuid = Utils.getuuid()
          return cell
        })
      }
      if (item.backElements) {
        item.backElements = item.backElements.map(cell => {
          if (cell.datatype === 'dynamic') {
            cell.datatype = 'static'
          }
          cell.uuid = Utils.getuuid()
          return cell
        })
      }
    } else if (item.copyType === 'cardcell') {
      item.setting = item.setting || {}
      item.setting.width = item.setting.width || 6
      delete item.$cardType
      if (item.elements) {
        item.elements = item.elements.map(cell => {
@@ -105,6 +130,7 @@
  pasteSubmit = () => {
    const { options } = this.props
    this.pasteFormRef.handleConfirm().then(res => {
      if (!options.includes(res.copyType)) {
        notification.warning({ top: 92, message: '配置信息格式错误!', duration: 5 })
        return
@@ -114,7 +140,7 @@
      let config = fromJS(this.props.config).toJS()
      let copyBtns = new Map()
      res = this.resetconfig(res, copyBtns)
      res = this.resetconfig(res, copyBtns, config)
      delete res.copyType
      copyBtns = [...copyBtns.values()]
@@ -123,7 +149,11 @@
        MKEmitter.emit('copyButtons', copyBtns)
      }
      if (type === 'action') {
      if (config.type === 'form') {
        this.props.updateConfig(res)
        this.setState({visible: false})
        return
      } else if (type === 'action') {
        config.action = config.action || []
        config.action = config.action.filter(item => !item.origin)
@@ -133,13 +163,10 @@
        }
        MKEmitter.emit('addButton', config.uuid, res)
      } else if (type === 'search' || type === 'form') {
        config.search = config.search || []
        config.search = config.search.filter(item => !item.origin)
        let keys = config.search.map(item => item.field.toLowerCase())
        let keys = config.search.map(item => item.field ? item.field.toLowerCase() : '')
        if (type === 'form') {
          if (['number', 'switch', 'textarea', 'checkcard', 'fileupload', 'hint', 'color', 'funcvar'].includes(res.type)) {
          if (['number', 'switch', 'textarea', 'fileupload', 'hint', 'color', 'funcvar'].includes(res.type)) {
            res.type = 'text'
          } else if (res.type === 'radio') {
            res.type = 'select'
@@ -159,9 +186,13 @@
          return
        }
        config.search.push(res)
        MKEmitter.emit('plusSearch', config.uuid, res, 'simple')
        this.setState({visible: false})
        return
      } else if (type === 'cardcell') {
        config.subcards.push(res)
      } else if (type === 'menucell') {
        config.subMenus.push(res)
      } else if (type === 'cols') {
        config.cols = config.cols.filter(col => !col.origin)
@@ -190,7 +221,7 @@
    return (
      <div style={{display: 'inline-block'}}>
        <Icon type="snippets" style={{color: 'purple'}} onClick={() => {this.setState({visible: true})}} />
        <SnippetsOutlined style={{color: 'purple'}} onClick={() => {this.setState({visible: true})}} />
        <Modal
          title="粘贴"
          visible={visible}