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