king
2023-03-02 81e1787aaee9d03da52ab8938d1961c4333ee5b5
src/utils/utils-custom.js
@@ -1,3 +1,5 @@
import md5 from 'md5'
export default class MenuUtils {
  /**
   * @description 获取下级模块
@@ -394,7 +396,7 @@
   * @description 重置菜单配置,页面整体复制
   * @return {String}  components 配置信息
   */
  static resetConfig = (components, uuids = {}, clear = false) => {
  static resetConfig = (components, commonId, clear = false) => {
    return components.map(item => {
      if (item.type === 'navbar') {
        return item
@@ -404,18 +406,16 @@
        item.type = 'card'
      }
      uuids[item.uuid] = this.getuuid()
      item.uuid = uuids[item.uuid]
      item.uuid = md5(commonId + item.uuid)
      if (item.type === 'tabs') {
        item.subtabs.forEach(tab => {
          uuids[tab.uuid] = this.getuuid()
          tab.uuid = uuids[tab.uuid]
          tab.uuid = md5(commonId + tab.uuid)
          tab.components = this.resetConfig(tab.components, uuids, clear)
          tab.components = this.resetConfig(tab.components, commonId, clear)
        })
      } else if (item.type === 'group') {
        item.components = this.resetConfig(item.components, uuids, clear)
        item.components = this.resetConfig(item.components, commonId, clear)
      } else if (item.type === 'menubar') {
        item.subMenus = item.subMenus.map(cell => {
          cell.uuid = this.getuuid()
@@ -426,8 +426,17 @@
          return cell
        })
      } else if (['card', 'carousel', 'timeline'].includes(item.type)) {
        if (item.wrap.datatype === 'public' && uuids[item.wrap.publicId]) {
          item.wrap.publicId = uuids[item.wrap.publicId]
        if (item.wrap.datatype === 'public' && item.wrap.publicId) {
          item.wrap.publicId = md5(commonId + item.wrap.publicId)
        }
        if (item.supNodes && item.supNodes.length > 0) {
          item.supNodes = item.supNodes.map(cell => {
            cell.nodes = cell.nodes.map(n => md5(commonId + n))
            cell.componentId = cell.nodes[cell.nodes.length - 1]
            return cell
          })
        }
        
        item.subcards.forEach(card => {
@@ -448,9 +457,12 @@
            card.elements = card.elements.map(cell => {
              cell.uuid = this.getuuid()
              if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
                cell.pageTemplate = ''
                cell.linkmenu = ''
              if (cell.eleType === 'button') {
                if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
                  cell.pageTemplate = ''
                  cell.linkmenu = ''
                }
                this.resetBtn(cell, commonId)
              }
              
              return cell
@@ -460,9 +472,12 @@
            card.backElements = card.backElements.map(cell => {
              cell.uuid = this.getuuid()
              if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
                cell.pageTemplate = ''
                cell.linkmenu = ''
              if (cell.eleType === 'button') {
                if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
                  cell.pageTemplate = ''
                  cell.linkmenu = ''
                }
                this.resetBtn(cell, commonId)
              }
              return cell
@@ -470,16 +485,19 @@
          }
        })
      } else if (item.type === 'balcony') {
        if (item.wrap.datatype === 'public' && uuids[item.wrap.publicId]) {
          item.wrap.publicId = uuids[item.wrap.publicId]
        if (item.wrap.datatype === 'public' && item.wrap.publicId) {
          item.wrap.publicId = md5(commonId + item.wrap.publicId)
        }
        if (item.elements) {
          item.elements = item.elements.map(cell => {
            cell.uuid = this.getuuid()
            if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
              cell.pageTemplate = ''
              cell.linkmenu = ''
            if (cell.eleType === 'button') {
              if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
                cell.pageTemplate = ''
                cell.linkmenu = ''
              }
              this.resetBtn(cell, commonId)
            }
            return cell
@@ -488,7 +506,7 @@
      } else if (item.type === 'table' && item.cols) {
        let loopCol = (col) => {
          col.subcols = col.subcols.map(c => {
            c.uuid = this.getuuid()
            c.uuid = md5(commonId + c.uuid)
  
            if (c.type === 'colspan' && c.subcols) {
              c = loopCol(c)
@@ -507,6 +525,8 @@
                  cell.linkmenu = ''
                }
                this.resetBtn(cell, commonId)
                return cell
              })
            }
@@ -515,12 +535,9 @@
  
          return col
        }
        let _uuids = {}
        item.cols = item.cols.map(col => {
          let uuid = this.getuuid()
          _uuids[col.uuid] = uuid
          col.uuid = uuid
        item.cols = item.cols.map(col => {
          col.uuid = md5(commonId + col.uuid)
  
          if (col.type === 'colspan' && col.subcols) {
            col = loopCol(col)
@@ -532,6 +549,7 @@
          } else if (col.type === 'action' && col.elements) {
            col.elements = col.elements.map(cell => {
              cell.uuid = this.getuuid()
              this.resetBtn(cell, commonId)
              return cell
            })
          }
@@ -540,8 +558,15 @@
        if (item.subtype === 'editable') {
          item.cols = item.cols.map(col => {
            if (col.editable === 'true' && col.enter && _uuids[col.enter]) {
              col.enter = _uuids[col.enter]
            if (col.editable === 'true' && col.enter) {
              col.enter = md5(commonId + col.enter)
            } else if (col.type === 'colspan' && col.subcols) {
              col.subcols = col.subcols.map(c => {
                if (c.editable === 'true' && c.enter) {
                  c.enter = md5(commonId + c.enter)
                }
                return c
              })
            }
            return col
          })
@@ -555,6 +580,11 @@
    
            return m
          })
          if (cell.subButton) {
            this.resetBtn(cell.subButton, commonId)
          }
          return cell
        })
      }
@@ -563,18 +593,16 @@
        item.btnlog = null
      }
  
      let oriUids = {}
      if (item.action) {
        item.action = item.action.map(cell => {
          let _uuid = this.getuuid()
          oriUids[cell.uuid] = _uuid
          cell.uuid = _uuid
          cell.uuid = md5(commonId + cell.uuid)
          if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
            cell.pageTemplate = ''
            cell.linkmenu = ''
          }
          this.resetBtn(cell, commonId)
          return cell
        })
@@ -613,27 +641,35 @@
      }
      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] || ''
          return md5(commonId + c)
        })
        if (em) {
          item.setting.supModule = ''
        }
        if (item.wrap && item.wrap.supModule) {
          item.wrap.supModule = item.setting.supModule
        }
      }
      if (item.wrap && item.wrap.doubleClick) {
        item.wrap.doubleClick = oriUids[item.wrap.doubleClick] || ''
        item.wrap.doubleClick = md5(commonId + item.wrap.doubleClick)
      }
  
      return item
    })
  }
  /**
   * @description 按钮重置
   */
  static resetBtn (btn, commonId) {
    if (btn.switchTab && btn.switchTab.length > 0) {
      btn.switchTab = btn.switchTab.map(m => md5(commonId + m))
    }
    if (btn.anchors && btn.anchors.length > 0) {
      btn.anchors = btn.anchors.map(m => md5(commonId + m))
    }
    if (btn.syncComponent && btn.syncComponent.length > 0) {
      btn.syncComponent = btn.syncComponent.map(m => md5(commonId + m))
    }
  }
  /**
@@ -652,7 +688,7 @@
  * @description 重置组件配置
  * @return {String}  item 组件信息
  */
  static resetComponentConfig = (item, uuids = {}) => {
  static resetComponentConfig = (item) => {
    if (item.type === 'navbar') {
      return item
    }
@@ -661,11 +697,8 @@
      item.type = 'card'
    }
    let _uuid = this.getuuid()
    uuids[item.uuid] = _uuid
    item.uuid = _uuid
    item.uuid = this.getuuid()
    let commonId = this.getuuid()
    // 重置组件名称
    let sign = this.getSignName()
@@ -736,12 +769,8 @@
        return col
      }
      let _uuids = {}
      item.cols = item.cols.map(col => {
        let uuid = this.getuuid()
        _uuids[col.uuid] = uuid
        col.uuid = uuid
        col.uuid = md5(commonId + col.uuid)
        if (col.type === 'colspan' && col.subcols) {
          col = loopCol(col)
@@ -764,8 +793,8 @@
      if (item.subtype === 'editable') {
        item.cols = item.cols.map(col => {
          if (col.editable === 'true' && col.enter && _uuids[col.enter]) {
            col.enter = _uuids[col.enter]
          if (col.editable === 'true' && col.enter) {
            col.enter = md5(commonId + col.enter)
          }
          return col
        })
@@ -785,17 +814,12 @@
    delete item.btnlog
    let oriUids = {}
    if (item.action) {
      if (sessionStorage.getItem('editMenuType') === 'popview') {
        item.action = item.action.filter(c => c.OpenType !== 'popview' && c.OpenType !== 'funcbutton')
      }
      item.action = item.action.map(cell => {
        let _uuid = this.getuuid()
        oriUids[cell.uuid] = _uuid
        cell.uuid = _uuid
        cell.uuid = md5(commonId + cell.uuid)
        return cell
      })
@@ -840,7 +864,7 @@
    }
    if (item.wrap && item.wrap.doubleClick) {
      item.wrap.doubleClick = oriUids[item.wrap.doubleClick] || ''
      item.wrap.doubleClick = md5(commonId + item.wrap.doubleClick)
    }
    return item