king
2020-11-10 5df578ff69f6b02e821d59a8883bc75d78695a62
src/menu/menushell/index.jsx
@@ -10,9 +10,7 @@
const { confirm } = Modal
const Container = ({menu, handleList, doubleClickCard }) => {
  let target = null
const Container = ({menu, handleList }) => {
  const [cards, setCards] = useState(menu.components)
  const moveCard = (id, atIndex) => {
    const { card, index } = findCard(id)
@@ -32,10 +30,6 @@
    }
  }
  const hasDrop = (item) => {
    target = item
  }
  const updateConfig = (element) => {
    handleList({...menu, components: cards.map(item => item.uuid === element.uuid ? element : item)})
  }
@@ -53,7 +47,7 @@
    }
    confirm({
      title: `确定删除《${card.setting.name}》吗?`,
      title: `确定删除《${card.name}》吗?`,
      content: hasComponent ? '当前组件中含有子组件!' : '',
      onOk() {
        handleList({...menu, components: cards.filter(item => item.uuid !== card.uuid)})
@@ -85,46 +79,59 @@
        bar: '柱状图',
        line: '折线图',
        tabs: '标签组',
        pie: '饼图',
        search: '搜索',
        table: '表格',
        card: '卡片'
      }
      let i = 1
      
      while (!name && names[item.component]) {
        let _name = names[item.component] + i
        if (menu.components.filter(com => com.setting && com.setting.name === _name).length === 0) {
        if (menu.components.filter(com => com.name === _name).length === 0) {
          name = _name
        }
        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 = cards.length > 0 ? cards[cards.length - 1].uuid : 0
      if (target) {
        targetId = target.uuid
      let targetId = ''
      if (item.dropTargetId) {
        targetId = item.dropTargetId
        delete item.dropTargetId
      } else if (cards.length > 0) {
        targetId = cards[cards.length - 1].uuid
      }
      const { index: overIndex } = findCard(`${targetId}`)
      let targetIndex = overIndex
      targetIndex++
      const _cards = update(cards, { $splice: [[targetIndex, 0, newcard]] })
      const _cards = update(cards, { $splice: [[overIndex + 1, 0, newcard]] })
      handleList({...menu, components: _cards})
      target = null
    }
  })
  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
@@ -134,9 +141,7 @@
            moveCard={moveCard}
            delCard={deleteCard}
            findCard={findCard}
            hasDrop={hasDrop}
            updateConfig={updateConfig}
            doubleClickCard={doubleClickCard}
          />
        ))}
      </div>