| | |
| | | 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 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) |
| | |
| | | } |
| | | |
| | | 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 = '' |
| | | } |
| | |
| | | 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 => { |
| | |
| | | |
| | | const doubleClickCard = id => { |
| | | const { card } = findCard(id) |
| | | if (card.OpenType === 'pop') { |
| | | handleSubConfig(card) |
| | | |
| | | if (card.eleType !== 'button') { |
| | | return |
| | | } |
| | | |
| | | handleSubConfig(card) |
| | | } |
| | | |
| | | const delCard = id => { |
| | |
| | | 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) |
| | |
| | | id={card.uuid} |
| | | key={card.uuid} |
| | | card={card} |
| | | copyCard={copyCard} |
| | | moveCard={moveCard} |
| | | editCard={editCard} |
| | | changeStyle={changeStyle} |
| | |
| | | id={card.uuid} |
| | | key={card.uuid} |
| | | card={card} |
| | | parent={parent} |
| | | fields={fields} |
| | | moveCard={moveCard} |
| | | copyCard={copyCard} |