king
2020-12-31 eebe63a6727e6495321d1433ebd2779b5a36d45a
src/menu/menushell/index.jsx
@@ -5,6 +5,7 @@
import { Empty, notification, Modal } from 'antd'
import Utils from '@/utils/utils.js'
import MKEmitter from '@/utils/events.js'
import Card from './card'
import './index.scss'
@@ -46,10 +47,61 @@
      })
    }
    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)
    confirm({
      title: `确定删除《${card.name}》吗?`,
      content: hasComponent ? '当前组件中含有子组件!' : '',
      onOk() {
        MKEmitter.emit('delButtons', uuids)
        handleList({...menu, components: cards.filter(item => item.uuid !== card.uuid)})
      },
      onCancel() {}
@@ -81,6 +133,7 @@
        tabs: '标签组',
        pie: '饼图',
        search: '搜索',
        table: '表格',
        card: '卡片'
      }
      let i = 1
@@ -93,23 +146,33 @@
        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,
        name: name,
        floor: 1,   // 组件的层级
        isNew: true // 新添加标志,用于初始化
      }
      
      let targetId = '0'
      let targetId = ''
      if (item.dropTargetId) {
        targetId = item.dropTargetId
        delete item.dropTargetId
      } else if (cards.length > 0) {
        targetId = cards[cards.length - 1].uuid
        targetId = cards.slice(-1)[0].uuid
      }
      const { index: overIndex } = findCard(`${targetId}`)
@@ -120,7 +183,7 @@
  })
  return (
    <div ref={drop} className="menu-shell-inner" style={menu.style}>
    <div ref={drop} className="menu-shell-inner" id="menu-shell-inner" style={menu.style}>
      <div className="ant-row">
        {cards.map(card => (
          <Card