king
2023-08-17 c7aece35a62b6e91fd98a625bf0e53f64bfbd18d
src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx
@@ -2,14 +2,13 @@
import { useDrop } from 'react-dnd'
import { is, fromJS } from 'immutable'
import update from 'immutability-helper'
import { Icon } from 'antd'
import { Popover } from 'antd'
import { EditOutlined } from '@ant-design/icons'
import Utils from '@/utils/utils.js'
import Card from './card'
import './index.scss'
const Container = ({list, setting, gridBtn, showfield, placeholder, handleList, handleMenu, handleGridBtn, deleteMenu, markMenu }) => {
  let target = null
const Container = ({list, setting, gridBtn, showfield, handleList, handleMenu, handleGridBtn, deleteMenu, markMenu }) => {
  const [cards, setCards] = useState(list)
  const moveCard = (id, atIndex) => {
    const { card, index } = findCard(id)
@@ -31,7 +30,6 @@
  const editCard = id => {
    const { card } = findCard(id)
    delete card.focus // 兼容早期的合并列
    handleMenu(card)
@@ -46,10 +44,6 @@
  const markCard = id => {
    const { card } = findCard(id)
    markMenu(card)
  }
  const hasDrop = (item) => {
    target = item
  }
  const [, drop] = useDrop({
@@ -70,7 +64,7 @@
      newcard.contrastType = 'static'
      newcard.IsSort = 'true'
      newcard.type = item.subType
      newcard.Width = 120
      newcard.Width = item.subType === 'number' ? 80 : 120
      if (item.subType === 'colspan') {
        newcard.sublist = []
        newcard.subfield = []
@@ -78,20 +72,19 @@
        newcard.order = 'vertical'
      }
      
      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(_cards, newcard)
      target = null
    }
  })
@@ -138,6 +131,23 @@
          {i === 0 && column.length > 0 && setting.tableType === 'radio' ?
            <div className="page-card" style={{flex: 60}}></div> : null
          }
          {i === 0 && gridBtn && gridBtn.display && gridBtn.position === 'left' ?
            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
              <div className="mk-popover-control">
                <EditOutlined className="edit" onClick={handleGridBtn}/>
              </div>
            } trigger="hover">
              <div className="page-card" style={{flex: gridBtn.Width}}>
                <div style={{cursor: 'default'}}>
                  <span className="ant-table-header-column">
                    <div className="ant-table-column-sorters" title={gridBtn.label} style={{textAlign: gridBtn.Align}}>
                      <span className="ant-table-column-title">{gridBtn.label}</span>
                    </div>
                  </span>
                </div>
              </div>
            </Popover> : null
          }
          {column.map(card => (
            <Card
              key={card.uuid}
@@ -149,27 +159,31 @@
              delCard={delCard}
              markCard={markCard}
              findCard={findCard}
              hasDrop={hasDrop}
            />
          ))}
          {i === (columns.length - 1) && gridBtn && gridBtn.display ?
            <div className="page-card" style={{flex: gridBtn.Width}}>
              <div style={{cursor: 'default'}}>
                <span className="ant-table-header-column">
                  <div className="ant-table-column-sorters" title={gridBtn.label} style={{textAlign: gridBtn.Align}}>
                    <span className="ant-table-column-title">{gridBtn.label}</span>
                  </div>
                </span>
          {i === (columns.length - 1) && gridBtn && gridBtn.display && gridBtn.position !== 'left' ?
            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
              <div className="mk-popover-control">
                <EditOutlined className="edit" onClick={handleGridBtn}/>
              </div>
              <Icon className="edit" type="edit" onClick={handleGridBtn}/>
            </div> : null
            } trigger="hover">
              <div className="page-card" style={{flex: gridBtn.Width}}>
                <div style={{cursor: 'default'}}>
                  <span className="ant-table-header-column">
                    <div className="ant-table-column-sorters" title={gridBtn.label} style={{textAlign: gridBtn.Align}}>
                      <span className="ant-table-column-title">{gridBtn.label}</span>
                    </div>
                  </span>
                </div>
              </div>
            </Popover> : null
          }
        </div>
      ))}
      
      {cards.length === 0 ?
        <div className="common-drawarea-placeholder">
          {placeholder}
          请添加显示列
        </div> : null
      }
    </div>