From f3ec8c20eeabee6eaab1508d2f3896c28aab611c Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 22 七月 2021 14:42:42 +0800
Subject: [PATCH] 修改页面中按钮保存

---
 src/menu/menushell/index.jsx |   87 ++++++++++++-------------------------------
 1 files changed, 25 insertions(+), 62 deletions(-)

diff --git a/src/menu/menushell/index.jsx b/src/menu/menushell/index.jsx
index 36a5852..7e03f6c 100644
--- a/src/menu/menushell/index.jsx
+++ b/src/menu/menushell/index.jsx
@@ -1,11 +1,11 @@
 import React, { useState } from 'react'
 import { useDrop } from 'react-dnd'
-import { is, fromJS } from 'immutable'
 import update from 'immutability-helper'
 import { Empty, notification, Modal } from 'antd'
 
 import Utils from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
+import MenuUtils from '@/utils/utils-custom.js'
 import Card from './card'
 import './index.scss'
 
@@ -17,9 +17,10 @@
     const { card, index } = findCard(id)
     const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] })
     handleList({...menu, components: _cards})
+    setCards(_cards)
   }
 
-  if (!is(fromJS(cards), fromJS(menu.components))) {
+  if (menu.components.length > cards.length) {
     setCards(menu.components)
   }
   
@@ -32,7 +33,9 @@
   }
 
   const updateConfig = (element) => {
-    handleList({...menu, components: cards.map(item => item.uuid === element.uuid ? element : item)})
+    const _cards = cards.map(item => item.uuid === element.uuid ? element : item)
+    handleList({...menu, components: _cards})
+    setCards(_cards)
   }
 
   const deleteCard = (id) => {
@@ -47,62 +50,19 @@
       })
     }
 
-    let uuids = []
-    const getUuids = (item) => {
-      if (item.type === 'tabs') {
-        item.subtabs.forEach(tab => {
-          tab.components.forEach(c => {
-            getUuids(c)
-          })
-        })
-      } else {
-        if (item.action && item.action.length) {
-          item.action.forEach(act => {
-            if (!act.origin) {
-              uuids.push(act.uuid)
-            }
-          })
-        }
-        if (item.type === 'card') {
-          item.subcards.forEach(_card => {
-            _card.elements && _card.elements.forEach(cell => {
-              if (cell.eleType === 'button') {
-                uuids.push(cell.uuid)
-              }
-            })
-            _card.backElements && _card.backElements.forEach(cell => {
-              if (cell.eleType === 'button') {
-                uuids.push(cell.uuid)
-              }
-            })
-          })
-        } else if (item.type === 'table' && item.subtype === 'tablecard') {
-          item.subcards.forEach(_card => {
-            _card.elements && _card.elements.forEach(cell => {
-              if (cell.eleType === 'button') {
-                uuids.push(cell.uuid)
-              }
-            })
-          })
-        } else if (item.type === 'table' && item.subtype === 'normaltable') {
-          item.cols && item.cols.forEach(col => {
-            if (col.type !== 'action') return
-            col.elements && col.elements.forEach(cell => {
-              uuids.push(cell.uuid)
-            })
-          })
-        }
-      }
-    }
-
-    getUuids(card)
+    let uuids = MenuUtils.getDelButtonIds(card)
 
     confirm({
       title: `纭畾鍒犻櫎銆�${card.name}銆嬪悧锛焋,
       content: hasComponent ? '褰撳墠缁勪欢涓惈鏈夊瓙缁勪欢锛�' : '',
       onOk() {
+        const _cards = cards.filter(item => item.uuid !== card.uuid)
+        handleList({...menu, components: _cards})
+        setCards(_cards)
+
+        if (uuids.length === 0) return
+        
         MKEmitter.emit('delButtons', uuids)
-        handleList({...menu, components: cards.filter(item => item.uuid !== card.uuid)})
       },
       onCancel() {}
     })
@@ -115,6 +75,7 @@
         delete item.added // 鍒犻櫎缁勪欢娣诲姞鏍囪
         return
       }
+
       if (item.component === 'search') { // 鎼滅储缁勪欢涓嶅彲閲嶅娣诲姞
         if (cards.filter(card => card.type === 'search').length > 0) {
           notification.warning({
@@ -134,6 +95,15 @@
         pie: '楗煎浘',
         search: '鎼滅储',
         table: '琛ㄦ牸',
+        group: '鍒嗙粍',
+        editor: '瀵屾枃鏈�',
+        code: '鑷畾涔�',
+        carousel: '杞挱',
+        form: '琛ㄥ崟',
+        dashboard: '浠〃鐩�',
+        scatter: '鏁g偣鍥�',
+        tree: '鏍戝舰鍒楄〃',
+        balcony: '娴姩鍗�',
         card: '鍗$墖'
       }
       let i = 1
@@ -146,21 +116,13 @@
         i++
       }
 
-      let dataName = ''
-      while (!dataName) {
-        let _dataName = Utils.getdataName()
-        if (menu.components.filter(com => com.dataName === _dataName).length === 0) {
-          dataName = _dataName
-        }
-      }
-
       let newcard = {
         uuid: Utils.getuuid(),
         type: item.component,
         subtype: item.subtype,
         config: item.config,
         width: item.width || 24,
-        dataName: dataName,
+        dataName: Utils.getdataName(),
         name: name,
         floor: 1,   // 缁勪欢鐨勫眰绾�
         isNew: true // 鏂版坊鍔犳爣蹇楋紝鐢ㄤ簬鍒濆鍖�
@@ -179,6 +141,7 @@
       const _cards = update(cards, { $splice: [[overIndex + 1, 0, newcard]] })
 
       handleList({...menu, components: _cards})
+      setCards(_cards)
     }
   })
 

--
Gitblit v1.8.0