king
2023-09-07 28483549baee23b4ca11e4ddbc9f93244d5fbb7c
src/utils/utils-custom.js
@@ -1224,6 +1224,157 @@
}
/**
 * @description 获取接口及函数
 */
export function getFuncsAndInters (config) {
  let inters = []
  // let funcs = []
  let filterBtn = (cell) => {
    if (cell.intertype === 'inner') {
      // funcs.push(cell.innerFunc)
    } else if (cell.intertype === 'outer' || cell.intertype === 'custom') {
      // if (cell.innerFunc) {
      //   funcs.push(cell.innerFunc)
      // }
      // if (cell.outerFunc) {
      //   funcs.push(cell.outerFunc)
      // }
      if (cell.interface && cell.sysInterface !== 'true') {
        inters.push(cell.interface)
      }
      if (cell.proInterface) {
        inters.push(cell.proInterface)
      }
      // if (cell.callbackFunc) {
      //   funcs.push(cell.callbackFunc)
      // }
    }
  }
  let filterSetting = (item) => {
    if (!item.setting) return
    if (item.setting.interType === 'inner') {
      // funcs.push(item.setting.innerFunc)
    } else if (item.setting.interType === 'outer') {
      // if (item.setting.outerFunc) {
      //   funcs.push(item.setting.outerFunc)
      // }
      if (item.setting.interface && item.setting.sysInterface !== 'true') {
        inters.push(item.setting.interface)
      }
      if (item.setting.proInterface) {
        inters.push(item.setting.proInterface)
      }
    }
  }
  let traversal = (components) => {
    if (!components) return
    components.forEach(item => {
      if (item.type === 'tabs') {
        item.subtabs.forEach(tab => {
          traversal(tab.components)
        })
      } else if (item.type === 'group') {
        traversal(item.components)
      } else {
        filterSetting(item)
        if (item.action) {
          item.action.forEach(cell => {
            if (cell.OpenType === 'popview') {
              if (cell.config) {
                traversal(cell.config.components)
              }
            } else {
              filterBtn(cell)
            }
          })
        }
        if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
          item.subcards.forEach(card => {
            card.elements && card.elements.forEach(cell => {
              if (cell.eleType !== 'button') return
              if (cell.OpenType === 'popview') {
                if (cell.config) {
                  traversal(cell.config.components)
                }
              } else {
                filterBtn(cell)
              }
            })
            card.backElements && card.backElements.forEach(cell => {
              if (cell.eleType !== 'button') return
              if (cell.OpenType === 'popview') {
                if (cell.config) {
                  traversal(cell.config.components)
                }
              } else {
                filterBtn(cell)
              }
            })
          })
        } else if (item.type === 'balcony') {
          item.elements && item.elements.forEach(cell => {
            if (cell.eleType !== 'button') return
            if (cell.OpenType === 'popview') {
              if (cell.config) {
                traversal(cell.config.components)
              }
            } else {
              filterBtn(cell)
            }
          })
        } else if (item.type === 'table') {
          let loopCol = (cols) => {
            cols.forEach(col => {
              if (col.type === 'colspan') {
                loopCol(col.subcols)
              } else if (col.type === 'custom') {
                col.elements.forEach(cell => {
                  if (cell.eleType !== 'button') return
                  if (cell.OpenType === 'popview') {
                    if (cell.config) {
                      traversal(cell.config.components)
                    }
                  } else {
                    filterBtn(cell)
                  }
                })
              }
            })
          }
          loopCol(item.cols)
        } else if (item.type === 'form') {
          item.subcards.forEach(group => {
            filterBtn(group.subButton)
          })
        }
      }
    })
  }
  if (config.interfaces) {
    config.interfaces.forEach(item => {
      filterSetting(item)
    })
  }
  traversal(config.components)
  // inters = Array.from(new Set(inters))
  return inters.length > 0 ? 'true' : 'false'
}
/**
 * @description 检测组件内容
 */
export function checkComponent (card) {