king
2024-06-19 9ff5920c0a58771219b134a7b46b7d0c1e1542ad
src/menu/components/card/cardcellcomponent/dragaction/index.jsx
@@ -1,6 +1,7 @@
import React, { useState } from 'react'
import { useDrop } from 'react-dnd'
import { is, fromJS } from 'immutable'
import { message } from 'antd'
import update from 'immutability-helper'
import Card from './card'
@@ -8,7 +9,7 @@
import Action from './action'
import './index.scss'
const Container = ({list, fields, handleList, handleMenu, deleteMenu, profileAction, handleStyle, updateMarks, dropButton, handleSubConfig }) => {
const Container = ({list, parent, fields, handleList, handleMenu, deleteMenu, profileAction, handleStyle, updateMarks, dropButton, handleSubConfig }) => {
  const [cards, setCards] = useState(list)
  const moveCard = (id, atIndex) => {
    const { card, index } = findCard(id)
@@ -34,18 +35,36 @@
  }
  const copyCard = id => {
    const { card, index: overIndex } = findCard(id)
    const { card } = findCard(id)
    let copycard = fromJS(card).toJS()
    let _cards = fromJS(cards).toJS()
    copycard.uuid = Utils.getuuid()
    copycard.copyType = 'customCardElement'
    if (card.eleType === 'button') {
      copycard.copyType = 'action'
    } else {
      copycard.copyType = 'customCardElement'
    }
    copycard.focus = true
    let _val = ''
    let _val = fromJS(copycard).toJS()
    if (_val.control) {
      delete _val.controlField
      delete _val.controlVal
    }
    copycard.uuid = Utils.getuuid()
    try {
      _val = window.btoa(window.encodeURIComponent(JSON.stringify(copycard)))
    } catch {
      delete _val.$srcId
      let srcid = localStorage.getItem(window.GLOB.sysSign + 'srcId')
      if (srcid) {
        _val.$srcId = srcid
      }
      _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
    } catch (e) {
      console.warn('Stringify Failure')
      _val = ''
    }
@@ -57,12 +76,18 @@
      oInput.select()
      document.execCommand('Copy')
      document.body.removeChild(oInput)
      message.success('复制成功。')
    } else {
      message.warning('复制失败。')
    }
    const _cards = update(cards, { $splice: [[overIndex + 1, 0, copycard]] })
    handleList(_cards)
    handleMenu(copycard)
    if (card.eleType !== 'button') {
      _cards.push(copycard)
      handleList(_cards)
      handleMenu(copycard)
    }
  }
  const changeStyle = id => {
@@ -77,9 +102,12 @@
  const doubleClickCard = id => {
    const { card } = findCard(id)
    if (card.OpenType === 'pop') {
      handleSubConfig(card)
    if (card.eleType !== 'button') {
      return
    }
    handleSubConfig(card)
  }
  const delCard = id => {
@@ -90,6 +118,78 @@
  const [, drop] = useDrop({
    accept: 'action',
    drop(item) {
      if (item.$init) { // 拖拽添加
        let newcard = {}
        newcard.uuid = Utils.getuuid()
        newcard.focus = true
        // 显示列过滤
        if (parent.type === 'custom' && item.class !== 'element') {
          delete item.overIndex
          return
        } else if (parent.type === 'action' && item.class === 'element') {
          delete item.overIndex
          return
        }
        if (item.class === 'element') {
          newcard.eleType = item.value
          newcard.datatype = 'dynamic'
          newcard.height = 1
          if (item.value === 'splitline') {
            newcard.width = 24
            newcard.color = '#EBE9E9'
          } else if (item.value === 'tag') {
            newcard.style = {
              backgroundColor: 'var(--mk-sys-color1)',
              color: 'var(--mk-sys-color)',
              borderColor: 'var(--mk-sys-color)',
              borderWidth: '1px',
              borderRadius: '4px',
              paddingLeft: '7px',
              paddingRight: '7px',
              marginRight: '8px',
              marginBottom: '8px',
            }
          } else if (item.value === 'slider') {
            newcard.width = 24
            newcard.color = '#1890ff'
          }
        } else {
          newcard.eleType = 'button'
          newcard.label = 'button'
          newcard.verify = null
          newcard.show = 'link'
          newcard.Ot = 'requiredSgl'
          newcard.OpenType = item.value
          newcard.class = 'primary'
          if (newcard.OpenType === 'excelIn') {
            newcard.label = item.text
            newcard.class = 'border-dgreen'
            newcard.Ot = 'notRequired'
          } else if (item.subType === 'excelOut') {
            newcard.label = item.text
            newcard.execSuccess = 'never'
            newcard.class = 'dgreen'
          }
        }
        if (item.overIndex) {
          const { index } = findCard(item.overIndex)
          const _cards = update(cards, { $splice: [[index + 1, 0, newcard]] })
          handleList(_cards)
        } else {
          handleList([...cards, newcard])
        }
        handleMenu(newcard)
        delete item.overIndex
        return
      }
      const { index } = findCard(item.id)
      if (index > -1) return
      dropButton(item.id)
@@ -105,6 +205,7 @@
              id={card.uuid}
              key={card.uuid}
              card={card}
              copyCard={copyCard}
              moveCard={moveCard}
              editCard={editCard}
              changeStyle={changeStyle}
@@ -120,6 +221,7 @@
              id={card.uuid}
              key={card.uuid}
              card={card}
              parent={parent}
              fields={fields}
              moveCard={moveCard}
              copyCard={copyCard}