king
2021-01-07 0da0262bc236cfce928429fc4c48e1666eab3402
src/menu/utils/menuUtils.js
@@ -226,4 +226,132 @@
    return uuids
  }
  /**
   * @description 生成32位uuid string + 时间
   * @return {String}  uuid
   */
  static getuuid () {
    let uuid = []
    let timestamp = new Date().getTime()
    let _options = '0123456789abcdefghigklmnopqrstuv'
    for (let i = 0; i < 19; i++) {
      uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
    }
    uuid = timestamp + uuid.join('')
    return uuid
  }
  /**
   * @description 重置菜单配置
   * @return {String}  components 配置信息
   */
  static resetConfig = (components) => {
    return components.map(item => {
      item.uuid = this.getuuid()
      if (item.type === 'tabs') {
        item.subtabs.forEach(tab => {
          tab.uuid = this.getuuid()
          tab.parentId = item.uuid
          tab.components = tab.components.map(cell => {
            cell.tabId = tab.uuid
            cell.parentId = item.uuid
            return cell
          })
          tab.components = this.resetConfig(tab.components)
        })
      } else if (item.type === 'group') {
        item.components = item.components.map(cell => {
          cell.parentId = item.uuid
          return cell
        })
        item.components = this.resetConfig(item.components)
      } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) {
        item.subcards.forEach(card => {
          card.uuid = this.getuuid()
          if (card.elements) {
            card.elements = card.elements.map(cell => {
              cell.uuid = this.getuuid()
              return cell
            })
          }
          if (card.backElements) {
            card.backElements = card.backElements.map(cell => {
              cell.uuid = this.getuuid()
              return cell
            })
          }
        })
      } else if (item.type === 'table' && item.subtype === 'normaltable' && item.cols) {
        let loopCol = (col) => {
          col.subcols = col.subcols.map(c => {
            c.uuid = this.getuuid()
            if (c.type === 'colspan' && c.subcols) {
              c = loopCol(c)
            } else if (c.type === 'custom' && c.elements) {
              c.elements = c.elements.map(cell => {
                cell.uuid = this.getuuid()
                return cell
              })
            } else if (c.type === 'action' && c.elements) {
              c.elements = c.elements.map(cell => {
                cell.uuid = this.getuuid()
                return cell
              })
            }
            return c
          })
          return col
        }
        item.cols = item.cols.map(col => {
          col.uuid = this.getuuid()
          if (col.type === 'colspan' && col.subcols) {
            col = loopCol(col)
          } else if (col.type === 'custom' && col.elements) {
            col.elements = col.elements.map(cell => {
              cell.uuid = this.getuuid()
              return cell
            })
          } else if (col.type === 'action' && col.elements) {
            col.elements = col.elements.map(cell => {
              cell.uuid = this.getuuid()
              return cell
            })
          }
          return col
        })
      }
      if (item.btnlog) {
        item.btnlog = []
      }
      if (item.action) {
        item.action = item.action.map(cell => {
          cell.uuid = this.getuuid()
          return cell
        })
      }
      if (item.search) {
        item.search = item.search.map(cell => {
          cell.uuid = this.getuuid()
          return cell
        })
      }
      if (item.columns) {
        item.columns = item.columns.map(cell => {
          cell.uuid = this.getuuid()
          return cell
        })
      }
      return item
    })
  }
}