From f66e19dd13af07ee466306632ad43c72f1f16ae7 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 26 五月 2021 14:49:55 +0800 Subject: [PATCH] 2021-05-26 --- src/menu/pastecontroller/index.jsx | 92 +++++++++++++++++++++++++++++++++------------ 1 files changed, 67 insertions(+), 25 deletions(-) diff --git a/src/menu/pastecontroller/index.jsx b/src/menu/pastecontroller/index.jsx index 12a510d..d80b944 100644 --- a/src/menu/pastecontroller/index.jsx +++ b/src/menu/pastecontroller/index.jsx @@ -1,8 +1,10 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' +import { fromJS } from 'immutable' import { Icon, Modal, Button, notification } from 'antd' import Utils from '@/utils/utils.js' +import MKEmitter from '@/utils/events.js' import asyncComponent from '@/utils/asyncComponent' import './index.scss' @@ -23,7 +25,7 @@ this.setState({visible: true}) } - resetconfig = (item, Tab, isgroup) => { + resetconfig = (item, Tab, isgroup, copyBtns) => { item.uuid = Utils.getuuid() item.floor = Tab ? (Tab.floor + 1) : 1 @@ -49,13 +51,13 @@ } tab.components = tab.components.map(cell => { - cell = this.resetconfig(cell, tab) + cell = this.resetconfig(cell, tab, copyBtns) return cell }) }) } else if (item.type === 'group') { - item.components = item.components.forEach(cell => { - cell = this.resetconfig(cell, item, true) + item.components = item.components.map(cell => { + cell = this.resetconfig(cell, item, true, copyBtns) return cell }) } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) { @@ -63,19 +65,33 @@ card.uuid = Utils.getuuid() if (card.elements) { if (sessionStorage.getItem('editMenuType') === 'popview') { - card.elements = card.elements.filter(b => b.OpenType !== 'popview') + card.elements = card.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') } card.elements = card.elements.map(cell => { - cell.uuid = Utils.getuuid() + let _uuid = Utils.getuuid() + if (cell.OpenType === 'popview') { + let _cell = fromJS(cell).toJS() + _cell.$originUuid = _cell.uuid + _cell.uuid = _uuid + copyBtns.set(_uuid, _cell) + } + cell.uuid = _uuid return cell }) } if (card.backElements) { if (sessionStorage.getItem('editMenuType') === 'popview') { - card.elements = card.elements.filter(b => b.OpenType !== 'popview') + card.elements = card.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') } card.backElements = card.backElements.map(cell => { - cell.uuid = Utils.getuuid() + let _uuid = Utils.getuuid() + if (cell.OpenType === 'popview') { + let _cell = fromJS(cell).toJS() + _cell.$originUuid = _cell.uuid + _cell.uuid = _uuid + copyBtns.set(_uuid, _cell) + } + cell.uuid = _uuid return cell }) } @@ -88,14 +104,6 @@ if (c.type === 'colspan' && c.subcols) { c = loopCol(c) } else if (c.type === 'custom' && c.elements) { - c.elements = c.elements.map(cell => { - cell.uuid = Utils.getuuid() - return cell - }) - } else if (c.type === 'action' && c.elements) { - if (sessionStorage.getItem('editMenuType') === 'popview') { - c.elements = c.elements.filter(b => b.OpenType !== 'popview') - } c.elements = c.elements.map(cell => { cell.uuid = Utils.getuuid() return cell @@ -119,10 +127,17 @@ }) } else if (col.type === 'action' && col.elements) { if (sessionStorage.getItem('editMenuType') === 'popview') { - col.elements = col.elements.filter(c => c.OpenType !== 'popview') + col.elements = col.elements.filter(c => c.OpenType !== 'popview' && c.OpenType !== 'funcbutton') } col.elements = col.elements.map(cell => { - cell.uuid = Utils.getuuid() + let _uuid = Utils.getuuid() + if (cell.OpenType === 'popview') { + let _cell = fromJS(cell).toJS() + _cell.$originUuid = _cell.uuid + _cell.uuid = _uuid + copyBtns.set(_uuid, _cell) + } + cell.uuid = _uuid return cell }) } @@ -134,12 +149,23 @@ item.btnlog = [] } + let oriUids = {} if (item.action) { if (sessionStorage.getItem('editMenuType') === 'popview') { - item.action = item.action.filter(c => c.OpenType !== 'popview') + item.action = item.action.filter(c => c.OpenType !== 'popview' && c.OpenType !== 'funcbutton') } item.action = item.action.map(cell => { - cell.uuid = Utils.getuuid() + let _uuid = Utils.getuuid() + + oriUids[cell.uuid] = _uuid + + if (cell.OpenType === 'popview') { + let _cell = fromJS(cell).toJS() + _cell.$originUuid = _cell.uuid + _cell.uuid = _uuid + copyBtns.set(_uuid, _cell) + } + cell.uuid = _uuid return cell }) } @@ -155,6 +181,13 @@ return cell }) } + if (item.setting && item.setting.supModule) { + item.setting.supModule = '' + } + + if (item.wrap && item.wrap.doubleClick) { + item.wrap.doubleClick = oriUids[item.wrap.doubleClick] || '' + } return item } @@ -165,14 +198,14 @@ let isgroup = Tab && Tab.type === 'group' ? true : false this.pasteFormRef.handleConfirm().then(res => { - if (!isgroup && !['tabs', 'datacard', 'propcard', 'mainsearch', 'group', 'normaltable', 'tablecard', 'line', 'bar', 'pie'].includes(res.copyType)) { + if (!isgroup && !['tabs', 'datacard', 'propcard', 'mainsearch', 'group', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter'].includes(res.copyType)) { notification.warning({ top: 92, message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�', duration: 5 }) return - } else if (isgroup && !['datacard', 'propcard', 'normaltable', 'tablecard', 'line', 'bar', 'pie'].includes(res.copyType)) { + } else if (isgroup && !['datacard', 'propcard', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter'].includes(res.copyType)) { notification.warning({ top: 92, message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�', @@ -188,11 +221,20 @@ return } - res = this.resetconfig(res, Tab, isgroup) + let copyBtns = new Map() + + res = this.resetconfig(res, Tab, isgroup, copyBtns) delete res.copyType - + this.props.insert(res, Tab) + + copyBtns = [...copyBtns.values()] + + if (copyBtns.length > 0) { + MKEmitter.emit('copyButtons', copyBtns) + } + this.setState({visible: false}) notification.success({ @@ -210,7 +252,7 @@ return ( <div style={{display: 'inline-block'}}> {type !== 'menu' ? <Icon type="snippets" style={{color: 'purple'}} onClick={() => {this.setState({visible: true})}} /> : null} - {type === 'menu' ? <Button type="link" style={{padding: '5px'}} icon="snippets" onClick={() => {this.setState({visible: true})}}>绮樿创</Button> : null} + {type === 'menu' ? <Button className="menu-config-paste" icon="snippets" onClick={() => {this.setState({visible: true})}}>绮樿创</Button> : null} <Modal title="绮樿创" visible={visible} -- Gitblit v1.8.0