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/components/share/pastecomponent/index.jsx |   81 +++++++++++++++++++++++++++++-----------
 1 files changed, 58 insertions(+), 23 deletions(-)

diff --git a/src/menu/components/share/pastecomponent/index.jsx b/src/menu/components/share/pastecomponent/index.jsx
index 95ffb34..2d12bb3 100644
--- a/src/menu/components/share/pastecomponent/index.jsx
+++ b/src/menu/components/share/pastecomponent/index.jsx
@@ -4,6 +4,7 @@
 import { Icon, Modal, notification } from 'antd'
 
 import Utils from '@/utils/utils.js'
+import MKEmitter from '@/utils/events.js'
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
 
@@ -23,8 +24,19 @@
     this.setState({visible: true})
   }
 
-  resetconfig = (item) => {
-    item.uuid = Utils.getuuid()
+  resetconfig = (item, copyBtns) => {
+    let _uuid = Utils.getuuid()
+
+    if (item.OpenType === 'popview') {
+      let _cell = fromJS(item).toJS()
+      _cell.$originUuid = _cell.uuid
+      _cell.uuid = _uuid
+      copyBtns.set(_uuid, _cell)
+    }
+
+    if (item.uuid) {
+      item.uuid = _uuid
+    }
 
     if (item.copyType === 'cardcell') {
       item.setting = item.setting || {}
@@ -42,7 +54,7 @@
           return cell
         })
       }
-    } else if (item.copyType === 'table') {
+    } else if (item.copyType === 'cols') {
       let loopCol = (col) => {
         col.subcols = col.subcols.map(c => {
           c.uuid = Utils.getuuid()
@@ -54,11 +66,6 @@
               cell.uuid = Utils.getuuid()
               return cell
             })
-          } else if (c.type === 'action' && c.elements) {
-            c.elements = c.elements.map(cell => {
-              cell.uuid = Utils.getuuid()
-              return cell
-            })
           }
           return c
         })
@@ -66,19 +73,30 @@
         return col
       }
 
-      if (item.type === 'colspan' && item.subcols) {
-        item = loopCol(item)
-      } else if (item.type === 'custom' && item.elements) {
-        item.elements = item.elements.map(cell => {
-          cell.uuid = Utils.getuuid()
-          return cell
-        })
-      } else if (item.type === 'action' && item.elements) {
-        item.elements = item.elements.map(cell => {
-          cell.uuid = Utils.getuuid()
-          return cell
-        })
-      }
+      item.cols = item.cols.map(_item => {
+        _item.uuid = Utils.getuuid()
+        if (_item.type === 'colspan' && _item.subcols) {
+          _item = loopCol(_item)
+        } else if (_item.type === 'custom' && _item.elements) {
+          _item.elements = _item.elements.map(cell => {
+            cell.uuid = Utils.getuuid()
+            return cell
+          })
+        } else if (_item.type === 'action' && _item.elements) {
+          _item.elements = _item.elements.map(cell => {
+            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
+          })
+        }
+        return _item
+      })
     }
 
     return item
@@ -98,15 +116,22 @@
 
       let type = res.copyType
       let config = fromJS(this.props.config).toJS()
+      let copyBtns = new Map()
 
-      res = this.resetconfig(res)
+      res = this.resetconfig(res, copyBtns)
       delete res.copyType
+
+      copyBtns = [...copyBtns.values()]
+
+      if (copyBtns.length > 0) {
+        MKEmitter.emit('copyButtons', copyBtns)
+      }
 
       if (type === 'action') {
         config.action = config.action || []
         config.action = config.action.filter(item => !item.origin)
 
-        config.action.push(res)
+        MKEmitter.emit('addButton', config.uuid, res)
       } else if (type === 'search' || type === 'form') {
         config.search = config.search || []
         config.search = config.search.filter(item => !item.origin)
@@ -137,6 +162,16 @@
         config.search.push(res)
       } else if (type === 'cardcell') {
         config.subcards.push(res)
+      } else if (type === 'cols') {
+        config.cols = config.cols.filter(col => !col.origin)
+
+        let keys = config.cols.map(col => (col.field || '$empty'))
+
+        res.cols.forEach(col => {
+          if (!keys.includes(col.field)) {
+            config.cols.push(col)
+          }
+        })
       }
 
       this.props.updateConfig(config)

--
Gitblit v1.8.0