From c96108bd84050feb01b47db3f5cae96670fda435 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 30 十月 2024 12:54:24 +0800 Subject: [PATCH] 2024-10-30 --- src/menu/components/form/dragtitle/card.jsx | 69 +++++++++++++++++++++++++++++----- 1 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/menu/components/form/dragtitle/card.jsx b/src/menu/components/form/dragtitle/card.jsx index 48e07f4..7413512 100644 --- a/src/menu/components/form/dragtitle/card.jsx +++ b/src/menu/components/form/dragtitle/card.jsx @@ -1,10 +1,18 @@ import React from 'react' +import { fromJS } from 'immutable' import { useDrag, useDrop } from 'react-dnd' -import { Icon, Popover } from 'antd' +import { Popover } from 'antd' +import { CloseOutlined, EditOutlined } from '@ant-design/icons' +import getForm from './options' +import asyncIconComponent from '@/utils/asyncIconComponent' import './index.scss' -const Card = ({ id, card, active, moveCard, findCard, editCard, closeCard, selectCard }) => { +const NormalForm = asyncIconComponent(() => import('@/components/normalform')) +const PasteForms = asyncIconComponent(() => import('@/menu/components/share/pasteforms')) +const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent')) + +const Card = ({ id, card, sort, labelSize, active, moveCard, findCard, closeCard, selectCard, updateGroup, pasteForm }) => { const originalIndex = findCard(id).index const [{ isDragging }, drag] = useDrag({ item: { type: 'form', id, originalIndex }, @@ -26,11 +34,7 @@ } } }) - const opacity = isDragging ? 0 : 1 - - const edit = () => { - editCard(id) - } + const opacity = isDragging ? 0.5 : 1 const close = () => { closeCard(id) @@ -40,16 +44,59 @@ selectCard(id) } + const getForms = () => { + return getForm(card) + } + + const updateSetting = (res) => { + let _card = fromJS(card).toJS() + + let buttons = res.buttons + + delete res.buttons + + if (buttons) { + res.prevEnable = buttons.includes('prevEnable') ? 'true' : 'false' + res.subEnable = buttons.includes('subEnable') ? 'true' : 'false' + res.nextEnable = buttons.includes('nextEnable') ? 'true' : 'false' + } + + if (res.prevEnable) { + _card.prevButton.enable = res.prevEnable + delete res.prevEnable + } + if (res.subEnable) { + _card.subButton.enable = res.subEnable + delete res.subEnable + } + if (res.nextEnable) { + _card.nextButton.enable = res.nextEnable + delete res.nextEnable + } + + _card.setting = res + + updateGroup(_card) + } + + let style = {fontSize: labelSize} + let s = labelSize * 1.5 + 'px' + let sortStyle = {width: s, height: s, lineHeight: s, borderRadius: s} + return ( <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> - <Icon className="edit" type="edit" onClick={edit} /> - <Icon className="close" type="close" onClick={close} /> + <NormalForm title="鍒嗙粍缂栬緫" width={850} update={updateSetting} getForms={getForms}> + <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/> + </NormalForm> + <CopyComponent type="formgroup" card={card}/> + <PasteForms config={card} update={(res) => pasteForm(res, id)} /> + <CloseOutlined className="close" type="close" onClick={close} /> </div> } trigger="hover"> <div className={'page-card ' + (active ? 'active' : '')} onClick={select} style={{ opacity: opacity}}> - <div ref={node => drag(drop(node))}> - <span className="form-sort">{card.sort}</span> + <div ref={node => drag(drop(node))} style={style}> + <span className="form-sort" style={sortStyle}>{sort}</span> {card.setting.title} </div> </div> -- Gitblit v1.8.0