From 3cbad93c94c39730e45600efeabdfebcd424c2cc Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 14 一月 2021 19:00:19 +0800 Subject: [PATCH] 2021-01-14 --- src/menu/pastecontroller/index.jsx | 67 ++++++++++++++++++++++++--------- 1 files changed, 49 insertions(+), 18 deletions(-) diff --git a/src/menu/pastecontroller/index.jsx b/src/menu/pastecontroller/index.jsx index a227bf1..f8061f3 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')) { @@ -66,7 +68,14 @@ 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 }) } @@ -75,7 +84,14 @@ 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' && b.OpenType !== 'funcbutton') - } c.elements = c.elements.map(cell => { cell.uuid = Utils.getuuid() return cell @@ -122,7 +130,14 @@ 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 }) } @@ -139,7 +154,14 @@ 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() + 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 }) } @@ -188,11 +210,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({ -- Gitblit v1.8.0