From 8137ac074ce6370e4b46295e7acf9c7870ef82d2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 17 二月 2023 22:19:23 +0800 Subject: [PATCH] 2023-02-17 --- src/mob/mobshell/card.jsx | 177 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 142 insertions(+), 35 deletions(-) diff --git a/src/mob/mobshell/card.jsx b/src/mob/mobshell/card.jsx index 10c2fff..fdca2fd 100644 --- a/src/mob/mobshell/card.jsx +++ b/src/mob/mobshell/card.jsx @@ -1,57 +1,164 @@ import React from 'react' import { useDrag, useDrop } from 'react-dnd' -// import { Icon } from 'antd' import asyncComponent from '@/utils/asyncComponent' - import './index.scss' -// const Home = asyncComponent(() => import('@/mob/home')) -const Login = asyncComponent(() => import('@/mob/login')) +const AntvBar = asyncComponent(() => import('@/menu/components/chart/antv-bar')) +const MainSearch = asyncComponent(() => import('@/mob/components/search/single-search')) +const AntvPie = asyncComponent(() => import('@/menu/components/chart/antv-pie')) +const AntvDashboard = asyncComponent(() => import('@/menu/components/chart/antv-dashboard')) +const AntvScatter = asyncComponent(() => import('@/menu/components/chart/antv-scatter')) +const AntvTabs = asyncComponent(() => import('@/mob/components/tabs/antv-tabs')) +const DataCard = asyncComponent(() => import('@/menu/components/card/data-card')) +const PropCard = asyncComponent(() => import('@/menu/components/card/prop-card')) +const CarouselDataCard = asyncComponent(() => import('@/menu/components/carousel/data-card')) +const CarouselPropCard = asyncComponent(() => import('@/menu/components/carousel/prop-card')) +const TableCard = asyncComponent(() => import('@/menu/components/card/table-card')) +const NormalTable = asyncComponent(() => import('@/menu/components/table/normal-table')) +const SimpleForm = asyncComponent(() => import('@/menu/components/form/simple-form')) +const StepForm = asyncComponent(() => import('@/menu/components/form/step-form')) +const TabForm = asyncComponent(() => import('@/menu/components/form/tab-form')) +const NormalGroup = asyncComponent(() => import('@/menu/components/group/normal-group')) +const CodeSandbox = asyncComponent(() => import('@/menu/components/code/sandbox')) +const BraftEditor = asyncComponent(() => import('@/menu/components/editor/braft-editor')) +const NormalLogin = asyncComponent(() => import('@/pc/components/login/normal-login')) +const NormalNavbar = asyncComponent(() => import('@/mob/components/navbar/normal-navbar')) +const NormalTopbar = asyncComponent(() => import('@/mob/components/topbar/normal-navbar')) +const NormalMenuBar = asyncComponent(() => import('@/mob/components/menubar/normal-menubar')) +const CommonMenuBar = asyncComponent(() => import('@/mob/components/menubar/common-menubar')) +const Balcony = asyncComponent(() => import('@/menu/components/card/balcony')) +const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline')) +const OfficialAccount = asyncComponent(() => import('@/mob/components/official')) +const ShareCode = asyncComponent(() => import('@/mob/components/sharecode')) +const Iframe = asyncComponent(() => import('@/menu/components/iframe')) +const DoubleDataCard = asyncComponent(() => import('@/menu/components/card/double-data-card')) -const Card = ({ id, card, moveCard, findCard, editCard, delCard, hasDrop, doubleClickCard }) => { - const originalIndex = null - // const originalIndex = findCard(id).index +const Card = ({ id, card, moveCard, findCard, delCard, unGroup, updateConfig }) => { + const originalIndex = findCard(id).index const [{ isDragging }, drag] = useDrag({ - item: { type: 'action', id, originalIndex }, + item: { type: 'menu', id, originalIndex }, collect: monitor => ({ isDragging: monitor.isDragging(), }), }) const [, drop] = useDrop({ - accept: 'action', + accept: 'menu', canDrop: () => true, drop: (item) => { - if (!item.hasOwnProperty('originalIndex')) { - hasDrop(card) - } - }, - hover({ id: draggedId }) { - if (!draggedId) return - if (draggedId !== id) { + const { id: draggedId, originalIndex } = item + + if (originalIndex === undefined) { + item.dropTargetId = id + } else if (draggedId) { + if (draggedId === id) return + const { index: originIndex } = findCard(draggedId) + + if (originIndex === -1) return + const { index: overIndex } = findCard(id) + moveCard(draggedId, overIndex) } - }, + } }) - const opacity = isDragging ? 0.3 : 1 - return ( - <div ref={node => drag(drop(node))} style={{ opacity: opacity, height: '100%'}}> - <Login /> - {/* <div className="page-card"> - <Button - className={'mk-btn mk-' + card.class} - icon={card.icon} - key={card.uuid} - onDoubleClick={() => doubleClickCard(id)} - > - {card.label}{card.position === 'grid' && <Icon type="table" />} - </Button> - </div> */} - {/* <Icon className="edit" title="edit" type="edit" onClick={() => editCard(id)} /> - <Icon className="edit close" title="close" type="close" onClick={() => delCard(id)} /> */} - </div> - ) + let style = { opacity: 1} + if (isDragging) { + style = { opacity: 0.3} + } + + if (card.style && card.style.clear === 'left') { + style.clear = 'left' + } + + let col = 'ant-col-' + (card.width || 24) + // if (card.type === 'login') { + // let height = '' + // if (card.wrap && card.wrap.height) { + // // scaleview + // height = card.wrap.height.replace(/\d+vw/ig, (word) => { + // return parseFloat(word) * (window.GLOB.winWidth || 420) / 100 + 'px' + // // return parseFloat(word) * 350 / 100 + 'px' + // }).replace(/\d+vh/ig, (word) => { + // return parseFloat(word) * (window.GLOB.winHeight || 738) / 100 + 'px' + // // return parseFloat(word) * 615 / 100 + 'px' + // }) + // } + + // style.minHeight = height + // } + + const getCardComponent = () => { + if (card.type === 'bar' || card.type === 'line') { + return (<AntvBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'search') { + return (<MainSearch card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'pie') { + return (<AntvPie card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'dashboard') { + return (<AntvDashboard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'scatter') { + return (<AntvScatter card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'form' && card.subtype === 'simpleform') { + return (<SimpleForm card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'form' && card.subtype === 'stepform') { + return (<StepForm card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'form' && card.subtype === 'tabform') { + return (<TabForm card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'tabs') { + return (<AntvTabs tabs={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'card' && card.subtype === 'datacard') { + return (<DataCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'card' && card.subtype === 'propcard') { + return (<PropCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'card' && card.subtype === 'dualdatacard') { + return (<DoubleDataCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'carousel' && card.subtype === 'datacard') { + return (<CarouselDataCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'carousel' && card.subtype === 'propcard') { + return (<CarouselPropCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'card' && card.subtype === 'tablecard') { + return (<TableCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'table' && card.subtype === 'normaltable') { + return (<NormalTable card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'group' && card.subtype === 'normalgroup') { + return (<NormalGroup group={card} updateConfig={updateConfig} unGroup={unGroup} deletecomponent={delCard}/>) + } else if (card.type === 'code') { + return (<CodeSandbox card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'editor') { + return (<BraftEditor card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'login') { + return (<NormalLogin card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'navbar') { + return (<NormalNavbar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'topbar') { + return (<NormalTopbar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'menubar' && card.subtype === 'menubar') { + return (<NormalMenuBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'menubar' && card.subtype === 'commonbar') { + return (<CommonMenuBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'balcony') { + return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'timeline') { + return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'officialAccount') { + return (<OfficialAccount card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'iframe') { + return (<Iframe card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } else if (card.type === 'sharecode') { + return (<ShareCode card={card} updateConfig={updateConfig} deletecomponent={delCard}/>) + } + } + + if (card.type === 'navbar' || card.type === 'topbar') { + return getCardComponent() + } else { + return ( + <div className={'ant-col mk-component-card ' + col} ref={node => drag(drop(node))} style={style}> + {getCardComponent()} + </div> + ) + } } export default Card -- Gitblit v1.8.0