From f3ec8c20eeabee6eaab1508d2f3896c28aab611c Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 22 七月 2021 14:42:42 +0800 Subject: [PATCH] 修改页面中按钮保存 --- src/menu/menushell/index.jsx | 98 ++++++++++++++++++++++++++++++------------------- 1 files changed, 60 insertions(+), 38 deletions(-) diff --git a/src/menu/menushell/index.jsx b/src/menu/menushell/index.jsx index 79a1223..7e03f6c 100644 --- a/src/menu/menushell/index.jsx +++ b/src/menu/menushell/index.jsx @@ -1,26 +1,26 @@ import React, { useState } from 'react' import { useDrop } from 'react-dnd' -import { is, fromJS } from 'immutable' import update from 'immutability-helper' 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 { confirm } = Modal -const Container = ({menu, handleList, doubleClickCard }) => { - let target = null - +const Container = ({menu, handleList }) => { const [cards, setCards] = useState(menu.components) const moveCard = (id, atIndex) => { const { card, index } = findCard(id) const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] }) handleList({...menu, components: _cards}) + setCards(_cards) } - if (!is(fromJS(cards), fromJS(menu.components))) { + if (menu.components.length > cards.length) { setCards(menu.components) } @@ -32,12 +32,10 @@ } } - const hasDrop = (item) => { - target = item - } - const updateConfig = (element) => { - handleList({...menu, components: cards.map(item => item.uuid === element.uuid ? element : item)}) + const _cards = cards.map(item => item.uuid === element.uuid ? element : item) + handleList({...menu, components: _cards}) + setCards(_cards) } const deleteCard = (id) => { @@ -52,11 +50,19 @@ }) } + let uuids = MenuUtils.getDelButtonIds(card) + confirm({ - title: `纭畾鍒犻櫎銆�${card.setting.name}銆嬪悧锛焋, + title: `纭畾鍒犻櫎銆�${card.name}銆嬪悧锛焋, content: hasComponent ? '褰撳墠缁勪欢涓惈鏈夊瓙缁勪欢锛�' : '', onOk() { - handleList({...menu, components: cards.filter(item => item.uuid !== card.uuid)}) + const _cards = cards.filter(item => item.uuid !== card.uuid) + handleList({...menu, components: _cards}) + setCards(_cards) + + if (uuids.length === 0) return + + MKEmitter.emit('delButtons', uuids) }, onCancel() {} }) @@ -69,6 +75,7 @@ delete item.added // 鍒犻櫎缁勪欢娣诲姞鏍囪 return } + if (item.component === 'search') { // 鎼滅储缁勪欢涓嶅彲閲嶅娣诲姞 if (cards.filter(card => card.type === 'search').length > 0) { notification.warning({ @@ -84,13 +91,26 @@ let names = { bar: '鏌辩姸鍥�', line: '鎶樼嚎鍥�', - tabs: '鏍囩缁�' + 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 (menu.components.filter(com => com.setting && com.setting.name === _name).length === 0) { + if (menu.components.filter(com => com.name === _name).length === 0) { name = _name } i++ @@ -100,44 +120,46 @@ uuid: Utils.getuuid(), type: item.component, subtype: item.subtype, + config: item.config, + width: item.width || 24, + dataName: Utils.getdataName(), name: name, floor: 1, // 缁勪欢鐨勫眰绾� 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({...menu, components: _cards}) - target = null + setCards(_cards) } }) return ( - <div ref={drop} className="ant-row menu-shell-inner"> - {cards.map(card => ( - <Card - id={card.uuid} - key={card.uuid} - menu={menu} - card={card} - moveCard={moveCard} - delCard={deleteCard} - findCard={findCard} - hasDrop={hasDrop} - updateConfig={updateConfig} - doubleClickCard={doubleClickCard} - /> - ))} + <div ref={drop} className="menu-shell-inner" id="menu-shell-inner" style={menu.style}> + <div className="ant-row"> + {cards.map(card => ( + <Card + id={card.uuid} + key={card.uuid} + card={card} + moveCard={moveCard} + delCard={deleteCard} + findCard={findCard} + updateConfig={updateConfig} + /> + ))} + </div> {cards.length === 0 ? <Empty description="璇锋坊鍔犵粍浠�" /> : null } -- Gitblit v1.8.0