From 72419e2f826031a158173f46d723a672064e37cd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 31 八月 2021 22:42:51 +0800 Subject: [PATCH] 2021-08-31 --- src/menu/components/tabs/tabcomponents/index.jsx | 107 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 85 insertions(+), 22 deletions(-) diff --git a/src/menu/components/tabs/tabcomponents/index.jsx b/src/menu/components/tabs/tabcomponents/index.jsx index 1d409e6..657c5d9 100644 --- a/src/menu/components/tabs/tabcomponents/index.jsx +++ b/src/menu/components/tabs/tabcomponents/index.jsx @@ -2,15 +2,17 @@ import { useDrop } from 'react-dnd' import { is, fromJS } from 'immutable' import update from 'immutability-helper' -import { Empty, notification } from 'antd' +import { Empty, notification, Modal } from 'antd' import Utils from '@/utils/utils.js' +import MKEmitter from '@/utils/events.js' +import MenuUtils from '@/utils/utils-custom.js' import Card from './card' import './index.scss' -const Container = ({menu, parentId, config, handleList, deleteCard, doubleClickCard }) => { - let target = null +const { confirm } = Modal +const Container = ({ config, handleList }) => { const [cards, setCards] = useState(config.components) const moveCard = (id, atIndex) => { const { card, index } = findCard(id) @@ -30,12 +32,36 @@ } } - const hasDrop = (item) => { - target = item - } - const updateConfig = (element) => { handleList({...config, components: cards.map(item => item.uuid === element.uuid ? element : item)}) + } + + const deleteCard = (id) => { + const { card } = findCard(id) + + let hasComponent = false + if (card.type === 'tabs') { + card.subtabs.forEach(tab => { + if (tab.components.length > 0) { + hasComponent = true + } + }) + } + + let uuids = MenuUtils.getDelButtonIds(card) + + confirm({ + title: `纭畾鍒犻櫎銆�${card.name}銆嬪悧锛焋, + content: hasComponent ? '褰撳墠缁勪欢涓惈鏈夊瓙缁勪欢锛�' : '', + onOk() { + handleList({...config, components: cards.filter(item => item.uuid !== card.uuid)}) + + if (uuids.length === 0) return + + MKEmitter.emit('delButtons', uuids) + }, + onCancel() {} + }) } const [, drop] = useDrop({ @@ -55,31 +81,71 @@ }) return } + } else if (item.component === 'tabs' && config.floor === 3) { + notification.warning({ + top: 92, + message: '鏍囩椤垫渶澶氫负涓夐噸缁撴瀯锛�', + duration: 5 + }) + return + } + + let name = '' + let names = { + bar: '鏌辩姸鍥�', + line: '鎶樼嚎鍥�', + tabs: '鏍囩缁�', + pie: '楗煎浘', + search: '鎼滅储', + table: '琛ㄦ牸', + group: '鍒嗙粍', + editor: '瀵屾枃鏈�', + code: '鑷畾涔�', + carousel: '杞挱', + form: '琛ㄥ崟', + dashboard: '浠〃鐩�', + scatter: '鏁g偣鍥�', + tree: '鏍戝舰鍒楄〃', + balcony: '娴姩鍗�', + card: '鍗$墖' + } + let i = 1 + + while (!name && names[item.component]) { + let _name = names[item.component] + i + if (config.components.filter(com => com.name === _name).length === 0) { + name = _name + } + i++ } let newcard = { uuid: Utils.getuuid(), + tabId: config.uuid, + parentId: config.parentId, type: item.component, subtype: item.subtype, - parentId: parentId, - floor: 2, // 缁勪欢鐨勫眰绾� - isNew: true // 鏂版坊鍔犳爣蹇楋紝鐢ㄤ簬鍒濆鍖� + config: item.config, + width: item.width || 24, + dataName: Utils.getdataName(), + name: name, + floor: config.floor ? (config.floor + 1) : 2, // 缁勪欢鐨勫眰绾� + isNew: true // 鏂版坊鍔犳爣蹇楋紝鐢ㄤ簬鍒濆鍖� } - 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.slice(-1)[0].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({...config, components: _cards}) - target = null } }) @@ -89,15 +155,12 @@ <Card id={card.uuid} key={card.uuid} - menu={menu} config={config} card={card} moveCard={moveCard} delCard={deleteCard} findCard={findCard} - hasDrop={hasDrop} updateConfig={updateConfig} - doubleClickCard={doubleClickCard} /> ))} {cards.length === 0 ? -- Gitblit v1.8.0