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