From d59f518f466274b2caeb2e01c10c92deafe7c93b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 09 二月 2022 11:48:29 +0800
Subject: [PATCH] 2022-02-09

---
 src/utils/utils-custom.js |  127 +++++++++++++++++++++++++++++++++++-------
 1 files changed, 105 insertions(+), 22 deletions(-)

diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index ee48e7c..9053815 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -274,8 +274,8 @@
           uuids.push(act.uuid)
         })
 
-        if (card.type === 'card' || item.type === 'carousel' || (card.type === 'table' && card.subtype === 'tablecard')) {
-          card.subcards.forEach(_card => {
+        if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
+          item.subcards.forEach(_card => {
             _card.elements && _card.elements.forEach(cell => {
               if (cell.eleType !== 'button') return
               if (appType === 'pc' && cell.OpenType !== 'popview') return
@@ -289,8 +289,8 @@
               uuids.push(cell.uuid)
             })
           })
-        } else if (card.type === 'table' && card.subtype === 'normaltable') {
-          card.cols && card.cols.forEach(col => {
+        } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable')) {
+          item.cols && item.cols.forEach(col => {
             if (col.type !== 'action') return
             col.elements && col.elements.forEach(cell => {
               if (appType === 'pc' && cell.OpenType !== 'popview') return
@@ -298,8 +298,8 @@
               uuids.push(cell.uuid)
             })
           })
-        } else if (card.type === 'balcony') {
-          card.elements && card.elements.forEach(cell => {
+        } else if (item.type === 'balcony') {
+          item.elements && item.elements.forEach(cell => {
             if (appType === 'pc' && cell.OpenType !== 'popview') return
 
             uuids.push(cell.uuid)
@@ -332,17 +332,19 @@
    * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒�
    * @return {String}  components 閰嶇疆淇℃伅
    */
-  static resetConfig = (components) => {
+  static resetConfig = (components, uuids = {}) => {
     return components.map(item => {
       if (item.type === 'navbar') {
         return item
       }
 
-      item.uuid = this.getuuid()
+      uuids[item.uuid] = this.getuuid()
+      item.uuid = uuids[item.uuid]
 
       if (item.type === 'tabs') {
         item.subtabs.forEach(tab => {
-          tab.uuid = this.getuuid()
+          uuids[tab.uuid] = this.getuuid()
+          tab.uuid = uuids[tab.uuid]
           tab.parentId = item.uuid
   
           tab.components = tab.components.map(cell => {
@@ -350,20 +352,20 @@
             cell.parentId = item.uuid
             return cell
           })
-          tab.components = this.resetConfig(tab.components)
+          tab.components = this.resetConfig(tab.components, uuids)
         })
       } else if (item.type === 'group') {
         item.components = item.components.map(cell => {
           cell.parentId = item.uuid
           return cell
         })
-        item.components = this.resetConfig(item.components)
+        item.components = this.resetConfig(item.components, uuids)
       } else if (item.type === 'menubar') {
         item.subMenus = item.subMenus.map(cell => {
           cell.uuid = this.getuuid()
           return cell
         })
-      } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+      } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
         item.subcards.forEach(card => {
           card.uuid = this.getuuid()
           if (card.elements) {
@@ -386,7 +388,7 @@
             return cell
           })
         }
-      } else if (item.type === 'table' && item.subtype === 'normaltable' && item.cols) {
+      } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable') && item.cols) {
         let loopCol = (col) => {
           col.subcols = col.subcols.map(c => {
             c.uuid = this.getuuid()
@@ -409,9 +411,12 @@
   
           return col
         }
-  
+        let _uuids = {}
         item.cols = item.cols.map(col => {
-          col.uuid = this.getuuid()
+          let uuid = this.getuuid()
+
+          _uuids[col.uuid] = uuid
+          col.uuid = uuid
   
           if (col.type === 'colspan' && col.subcols) {
             col = loopCol(col)
@@ -428,6 +433,15 @@
           }
           return col
         })
+
+        if (item.subtype === 'editable') {
+          item.cols = item.cols.map(col => {
+            if (col.editable === 'true' && col.enter && _uuids[col.enter]) {
+              col.enter = _uuids[col.enter]
+            }
+            return col
+          })
+        }
       }
   
       if (item.btnlog) {
@@ -475,12 +489,54 @@
         })
       }
 
+      if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') {
+        let em = false
+        item.setting.supModule = item.setting.supModule.map(c => {
+          if (!uuids[c]) {
+            em = true
+          }
+          return uuids[c] || ''
+        })
+        if (em) {
+          item.setting.supModule = ''
+        }
+      }
+
       if (item.wrap && item.wrap.doubleClick) {
         item.wrap.doubleClick = oriUids[item.wrap.doubleClick] || ''
       }
   
       return item
     })
+  }
+
+  /**
+   * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒�
+   * @return {String}  components 閰嶇疆淇℃伅
+   */
+  static getFloor = (id) => {
+    let floor = 1
+    let finish = false
+
+    let reCheck = (components, f) => {
+      components.forEach(item => {
+        if (finish) return
+        if (item.type === 'tabs') {
+          if (item.uuid === id) {
+            floor = f
+            finish = true
+          } else {
+            item.subtabs.forEach(tab => {
+              reCheck(tab.components, f + 1)
+            })
+          }
+        }
+      })
+    }
+
+    reCheck(window.GLOB.customMenu.components, 1)
+
+    return floor
   }
 
   /**
@@ -501,12 +557,17 @@
   * @description 閲嶇疆缁勪欢閰嶇疆
   * @return {String}  item 缁勪欢淇℃伅
   */
-  static resetComponentConfig = (item, copyBtns) => {
+  static resetComponentConfig = (item, copyBtns, uuids = {}) => {
     if (item.type === 'navbar') {
       return item
     }
 
-    item.uuid = this.getuuid()
+    let _uuid = this.getuuid()
+
+    uuids[item.uuid] = _uuid
+
+    item.uuid = _uuid
+
     if (item.dataName) {
       item.dataName = this.getdataName()
     }
@@ -529,7 +590,7 @@
         cell.uuid = this.getuuid()
         return cell
       })
-    } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+    } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
       item.subcards.forEach(card => {
         card.uuid = this.getuuid()
         if (card.elements) {
@@ -582,7 +643,7 @@
           return cell
         })
       }
-    } else if (item.type === 'table' && item.subtype === 'normaltable' && item.cols) {
+    } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable') && item.cols) {
       let loopCol = (col) => {
         col.subcols = col.subcols.map(c => {
           c.uuid = this.getuuid()
@@ -601,8 +662,12 @@
         return col
       }
 
+      let _uuids = {}
       item.cols = item.cols.map(col => {
-        col.uuid = this.getuuid()
+        let uuid = this.getuuid()
+
+        _uuids[col.uuid] = uuid
+        col.uuid = uuid
 
         if (col.type === 'colspan' && col.subcols) {
           col = loopCol(col)
@@ -629,6 +694,15 @@
         }
         return col
       })
+
+      if (item.subtype === 'editable') {
+        item.cols = item.cols.map(col => {
+          if (col.editable === 'true' && col.enter && _uuids[col.enter]) {
+            col.enter = _uuids[col.enter]
+          }
+          return col
+        })
+      }
     } else if (item.type === 'form') {
       item.subcards = item.subcards.map(cell => {
         cell.uuid = this.getuuid()
@@ -700,8 +774,17 @@
       })
     }
 
-    if (item.setting && item.setting.supModule) {
-      item.setting.supModule = ''
+    if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') {
+      let em = false
+      item.setting.supModule = item.setting.supModule.map(c => {
+        if (!uuids[c]) {
+          em = true
+        }
+        return uuids[c] || ''
+      })
+      if (em) {
+        item.setting.supModule = ''
+      }
     }
 
     if (item.wrap && item.wrap.doubleClick) {

--
Gitblit v1.8.0