From 49f09cc6f8ff8c30a75ed1a9d6f510b69b73962a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 12 十二月 2023 21:05:37 +0800 Subject: [PATCH] 2023-12-12 --- src/menu/components/card/cardcellcomponent/dragaction/index.jsx | 143 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 134 insertions(+), 9 deletions(-) diff --git a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx index 0c879f2..41c2326 100644 --- a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx +++ b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx @@ -1,13 +1,15 @@ 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' +import Utils from '@/utils/utils.js' import Action from './action' import './index.scss' -const Container = ({list, handleList, handleMenu, deleteMenu, profileAction, handleStyle, 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) @@ -32,6 +34,62 @@ handleMenu(card) } + const copyCard = id => { + const { card } = findCard(id) + let copycard = fromJS(card).toJS() + let _cards = fromJS(cards).toJS() + + if (card.eleType === 'button') { + copycard.copyType = 'action' + } else { + copycard.copyType = 'customCardElement' + } + copycard.focus = true + + let _val = fromJS(copycard).toJS() + + if (_val.control) { + delete _val.controlField + delete _val.controlVal + } + + copycard.uuid = Utils.getuuid() + + try { + delete _val.$srcId + + let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId') + if (srcid) { + _val.$srcId = srcid + } + + _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val))) + } catch (e) { + console.warn('Stringify Failure') + _val = '' + } + + if (_val) { + let oInput = document.createElement('input') + oInput.value = _val + document.body.appendChild(oInput) + oInput.select() + document.execCommand('Copy') + document.body.removeChild(oInput) + + message.success('澶嶅埗鎴愬姛銆�') + } else { + message.warning('澶嶅埗澶辫触銆�') + } + + if (card.eleType !== 'button') { + _cards.push(copycard) + + handleList(_cards) + handleMenu(copycard) + } + } + const changeStyle = id => { const { card } = findCard(id) handleStyle(card) @@ -44,10 +102,12 @@ const doubleClickCard = id => { const { card } = findCard(id) - console.log(card) - if (card.OpenType === 'pop') { - handleSubConfig(card) + + if (card.eleType !== 'button') { + return } + + handleSubConfig(card) } const delCard = id => { @@ -55,11 +115,73 @@ deleteMenu(card) } - let cardIds = cards.map(card => card.uuid) - const [, drop] = useDrop({ accept: 'action', - drop() {} + 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 === '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) + } }) return ( @@ -70,8 +192,8 @@ <Action id={card.uuid} key={card.uuid} - cardIds={cardIds} card={card} + copyCard={copyCard} moveCard={moveCard} editCard={editCard} changeStyle={changeStyle} @@ -86,10 +208,13 @@ <Card id={card.uuid} key={card.uuid} - cardIds={cardIds} card={card} + parent={parent} + fields={fields} moveCard={moveCard} + copyCard={copyCard} editCard={editCard} + updateMarks={updateMarks} changeStyle={changeStyle} delCard={delCard} findCard={findCard} -- Gitblit v1.8.0