From cd42d41344f0f780e0c0ac0a3625aeb78160f9dd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 19 六月 2020 19:58:52 +0800 Subject: [PATCH] 2020-06-19 --- src/mob/mobshell/index.jsx | 97 +++++++++++++++++++++++++----------------------- 1 files changed, 51 insertions(+), 46 deletions(-) diff --git a/src/mob/mobshell/index.jsx b/src/mob/mobshell/index.jsx index 1d64cca..7c4ec11 100644 --- a/src/mob/mobshell/index.jsx +++ b/src/mob/mobshell/index.jsx @@ -1,33 +1,35 @@ -import React from 'react' -// import React, { useState } from 'react' +import React, { useState } from 'react' import { useDrop } from 'react-dnd' -// import { is, fromJS } from 'immutable' -// import update from 'immutability-helper' -// import Utils from '@/utils/utils.js' +import { is, fromJS } from 'immutable' +import update from 'immutability-helper' +import { message } from 'antd' + +import Utils from '@/utils/utils.js' import Card from './card' import './index.scss' -const Container = ({list, placeholder, handleList, handleMenu, deleteMenu, doubleClickCard }) => { - // let target = null +const Container = ({config, handleList, handleMenu, deleteMenu, doubleClickCard }) => { + let target = null - // const [cards, setCards] = useState(list) - // const moveCard = (id, atIndex) => { - // const { card, index } = findCard(id) - // const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] }) - // handleList(_cards) - // } + const [cards, setCards] = useState(config.components) + const moveCard = (id, atIndex) => { + const { card, index } = findCard(id) + const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] }) + handleList({...config, components: _cards}) + console.log(_cards) + } - // if (!is(fromJS(cards), fromJS(list))) { - // setCards(list) - // } + if (!is(fromJS(cards), fromJS(config.components))) { + setCards(config.components) + } - // const findCard = id => { - // const card = cards.filter(c => `${c.uuid}` === id)[0] - // return { - // card, - // index: cards.indexOf(card), - // } - // } + const findCard = id => { + const card = cards.filter(c => `${c.uuid}` === id)[0] + return { + card, + index: cards.indexOf(card), + } + } // const doubleClickBtn = id => { // const { card } = findCard(id) @@ -44,54 +46,57 @@ // deleteMenu(card) // } - // const hasDrop = (item) => { - // target = item - // } + const hasDrop = (item) => { + target = item + } const [, drop] = useDrop({ - accept: 'action', + accept: 'mob', drop(item) { if (item.hasOwnProperty('originalIndex')) { return } - // let newcard = {} - // newcard.uuid = Utils.getuuid() + if (cards.length > 0 && cards[0].type === 'login') { + message.warning('鐧诲綍椤典笉鍙坊鍔犲叾浠栧厓绱狅紒') + return + } + + let newcard = fromJS(item.param).toJS() + newcard.uuid = Utils.getuuid() - // let targetId = cards.length > 0 ? cards[cards.length - 1].uuid : 0 - // if (target) { - // targetId = target.uuid - // } + let targetId = cards.length > 0 ? cards[cards.length - 1].uuid : 0 + if (target) { + targetId = target.uuid + } - // const { index: overIndex } = findCard(`${targetId}`) - // let targetIndex = overIndex + const { index: overIndex } = findCard(`${targetId}`) + let targetIndex = overIndex - // targetIndex++ + targetIndex++ - // const _cards = update(cards, { $splice: [[targetIndex, 0, newcard]] }) + const _cards = update(cards, { $splice: [[targetIndex, 0, newcard]] }) - // handleList(_cards, newcard) - // target = null + handleList({...config, components: _cards}) + target = null } }) return ( <div ref={drop} className="mob-shell-inner"> - {/* {cards.map(card => ( + {cards.map(card => ( <Card id={card.uuid} key={card.uuid} card={card} moveCard={moveCard} - editCard={editCard} - delCard={delCard} + // editCard={editCard} + // delCard={delCard} findCard={findCard} hasDrop={hasDrop} - doubleClickCard={doubleClickBtn} + // doubleClickCard={doubleClickBtn} /> - ))} */} - <Card /> - + ))} {/* {cards.length === 0 ? <div className="common-drawarea-placeholder"> {placeholder} -- Gitblit v1.8.0