From af6486b3629d23e426ce85b87dbc20dfa15b1afe Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 07 十一月 2022 18:50:27 +0800
Subject: [PATCH] 2022-11-07

---
 src/menu/components/tabs/table-tabs/index.jsx |  190 +++++++++++++++++++++--------------------------
 1 files changed, 85 insertions(+), 105 deletions(-)

diff --git a/src/menu/components/tabs/table-tabs/index.jsx b/src/menu/components/tabs/table-tabs/index.jsx
index 5fe8e2f..293312c 100644
--- a/src/menu/components/tabs/table-tabs/index.jsx
+++ b/src/menu/components/tabs/table-tabs/index.jsx
@@ -2,23 +2,19 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Tabs, Popover, Modal } from 'antd'
-import { PlusOutlined, CloseOutlined, EditOutlined, DeleteOutlined, FontColorsOutlined, ToolOutlined } from '@ant-design/icons'
+import { PlusOutlined, CloseOutlined, EditOutlined, DeleteOutlined, ToolOutlined } from '@ant-design/icons'
 
-import MKEmitter from '@/utils/events.js'
 import asyncComponent from '@/utils/asyncComponent'
 import asyncIconComponent from '@/utils/asyncIconComponent'
 import MkIcon from '@/components/mk-icon'
 import DraggableTabs from './dragabletabs'
-import { resetStyle } from '@/utils/utils-custom.js'
-import MenuUtils from '@/utils/utils-custom.js'
 import Utils from '@/utils/utils.js'
-import { getTabForm, getTabsSetForm } from './options'
+import { getTabForm } from './options'
 import './index.scss'
 
 const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
-const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
-const PasteComponent = asyncIconComponent(() => import('../paste'))
-const TabComponents = asyncComponent(() => import('../tabcomponents'))
+const PasteBaseTable = asyncIconComponent(() => import('@/menu/components/share/pastebasetable'))
+const BaseTable = asyncComponent(() => import('@/menu/components/table/base-table'))
 
 const { TabPane } = Tabs
 const { confirm } = Modal
@@ -33,7 +29,7 @@
   state = {
     tabs: null,
     editab: null,
-    defaultActiveKey: ''
+    sign: 1
   }
 
   UNSAFE_componentWillMount () {
@@ -43,23 +39,19 @@
       let _tabs = {
         uuid: tabs.uuid,
         type: tabs.type,
-        subtype: tabs.subtype,
-        width: 24,
-        name: tabs.name,
-        setting: {width: 24, position: 'top', tabStyle: 'line', name: tabs.name},
-        style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
+        subtype: 'tabletabs',
+        setting: {},
+        style: {},
         subtabs: [
-          { uuid: Utils.getuuid(), label: 'Tab 1', icon: '', components: [] },
+          { uuid: Utils.getuuid(), label: '瀛愯〃1', icon: '', components: [{uuid: Utils.getuuid(), name: '瀛愯〃1', type: 'table', subtype: 'basetable', isNew: true}] },
         ]
       }
       this.setState({
-        defaultActiveKey: _tabs.subtabs[0].uuid,
         tabs: _tabs
       })
       this.props.updateConfig(_tabs)
     } else {
       this.setState({
-        defaultActiveKey: window.GLOB.TabsMap.get(tabs.uuid) || '',
         tabs: fromJS(tabs).toJS()
       })
     }
@@ -68,8 +60,6 @@
   shouldComponentUpdate (nextProps, nextState) {
     return !is(fromJS(this.state), fromJS(nextState))
   }
-
-  componentDidMount () {}
 
   /**
    * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
@@ -80,54 +70,11 @@
     }
   }
 
-  changeStyle = () => {
-    const { tabs } = this.state
-
-    MKEmitter.emit('changeStyle', ['background', 'border', 'padding', 'margin', 'shadow'], tabs.style, this.getStyle)
-  }
-
-  getStyle = (style) => {
-    let _card = {...this.state.tabs, style}
-
-    this.setState({
-      tabs: _card
-    })
-    
-    this.props.updateConfig(_card)
-  }
-
-  updateComponent = (component) => {
-    component.width = component.setting.width
-    component.name = component.setting.name
-
-    this.setState({
-      tabs: component
-    })
-    this.props.updateConfig(component)
-  }
-
-  updateTabComponent = (tab) => {
-    let tabs = fromJS(this.state.tabs).toJS()
-
-    tabs.subtabs = tabs.subtabs.map(t => {
-      if (t.uuid === tab.uuid) {
-        return tab
-      } else {
-        return t
-      }
-    })
-
-    this.setState({tabs})
-    this.props.updateConfig(tabs)
-  }
-
   delTab = (tab) => {
     let tabs = fromJS(this.state.tabs).toJS()
     const _this = this
 
     tabs.subtabs = tabs.subtabs.filter(t => t.uuid !== tab.uuid)
-
-    let uuids = MenuUtils.getDelButtonIds({...tab, type: 'group'})
 
     confirm({
       title: '纭畾鍒犻櫎鏍囩锛�',
@@ -135,10 +82,6 @@
       onOk() {
         _this.setState({tabs})
         _this.props.updateConfig(tabs)
-
-        if (uuids.length === 0) return
-        
-        MKEmitter.emit('delButtons', uuids)
       },
       onCancel() {}
     })
@@ -163,16 +106,69 @@
     this.props.updateConfig(tabs)
   }
 
-  insert = (item, tab) => {
+  dropTable = (hoverKey, dragKey) => {
+    if (dragKey) {
+      this.props.switchConfig(dragKey, hoverKey, () => {
+        this.setState({sign: this.state.sign + 1}, () => {
+          setTimeout(() => {
+            let node = document.getElementById(dragKey)
+            node && node.click()
+          }, 200)
+        })
+      })
+    } else {
+      let tabs = fromJS(this.state.tabs).toJS()
+      let name = '瀛愯〃' + (tabs.subtabs.length + 1)
+      let tab = { uuid: Utils.getuuid(), label: name, icon: '', components: [{uuid: Utils.getuuid(), type: 'table', name: name, subtype: 'basetable', isNew: true}]}
+
+      const hoverIndex = tabs.subtabs.findIndex(item => item.uuid === hoverKey)
+
+      if (hoverIndex === -1) {
+        tabs.subtabs.push(tab)
+      } else {
+        tabs.subtabs.splice(hoverIndex + 1, 0, tab)
+      }
+
+      this.setState({tabs}, () => {
+        setTimeout(() => {
+          let node = document.getElementById(tab.uuid)
+          node && node.click()
+        }, 200)
+      })
+      this.props.updateConfig(tabs)
+    }
+  }
+
+  plusTable = () => {
+    let tabs = fromJS(this.state.tabs).toJS()
+    let name = '瀛愯〃' + (tabs.subtabs.length + 1)
+    let tab = { uuid: Utils.getuuid(), label: name, icon: '', components: [{uuid: Utils.getuuid(), type: 'table', name: name, subtype: 'basetable', isNew: true}]}
+
+    tabs.subtabs.push(tab)
+
+    this.setState({tabs}, () => {
+      setTimeout(() => {
+        let node = document.getElementById(tab.uuid)
+        node && node.click()
+      }, 200)
+    })
+    this.props.updateConfig(tabs)
+  }
+
+  insert = (item) => {
     let tabs = fromJS(this.state.tabs).toJS()
 
-    tabs.subtabs.forEach(stab => {
-      if (stab.uuid === tab.uuid) {
-        stab.components.push(item)
-      }
-    })
+    let name = item.name || ('瀛愯〃' + (tabs.subtabs.length + 1))
+    let tab = { uuid: Utils.getuuid(), label: name, icon: '', components: [item]}
 
-    this.setState({tabs})
+    tabs.subtabs.push(tab)
+
+    this.setState({tabs}, () => {
+      setTimeout(() => {
+        let node = document.getElementById(tab.uuid)
+        node && node.click()
+      }, 200)
+    })
     this.props.updateConfig(tabs)
   }
 
@@ -202,10 +198,8 @@
     editab.label = res.label
     editab.icon = res.icon
     editab.hide = res.hide || 'false'
-    editab.backgroundColor = res.backgroundColor
-    editab.controlVal = res.controlVal || ''
-    editab.selectVal = res.selectVal || ''
-    editab.blacklist = res.blacklist
+    editab.permission = res.permission || 'false'
+    editab.components[0].name = res.label
 
     if (editab.uuid) {
       tabs.subtabs = tabs.subtabs.map(t => {
@@ -228,56 +222,42 @@
     this.props.updateConfig(tabs)
   }
 
-  getTabsForms = () => {
-    const { tabs } = this.state
+  updateConfig = (tb, i) => {
+    let tabs = fromJS(this.state.tabs).toJS()
+    tabs.subtabs[i].components = [tb]
 
-    return getTabsSetForm(tabs.setting, tabs.uuid)
-  }
+    this.setState({ tabs })
 
-  updateTabs = (res) => {
-    this.updateComponent({...this.state.tabs, setting: res})
-  }
-
-  onChange = (key) => {
-    const { tabs } = this.state
-    window.GLOB.TabsMap.set(tabs.uuid, key)
+    this.props.updateConfig(tabs)
   }
 
   render() {
-    const { tabs, defaultActiveKey } = this.state
-    let _style = resetStyle(tabs.style)
+    const { tabs } = this.state
 
     return (
-      <div className={'menu-tabs-edit-box ' + (tabs.setting.display || '')} style={_style} id={tabs.uuid}>
-        <DraggableTabs defaultActiveKey={defaultActiveKey} tabBarStyle={{background: tabs.setting.backgroundColor || 'transparent'}} tabPosition={tabs.setting.position} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch} onChange={this.onChange}>
-          {tabs.subtabs.map(tab => (
+      <div className="table-tabs-edit-box" style={tabs.style} id={tabs.uuid}>
+        <DraggableTabs tabsMove={this.moveSwitch} tabsDrop={this.dropTable}>
+          {tabs.subtabs.map((tab, i) => (
             <TabPane tab={
               <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
                 <div className="mk-popover-control">
                   <NormalForm title="鏍囩缂栬緫" width={800} update={this.updateTab} getForms={() => this.getTabForms(tab)}>
                     <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
                   </NormalForm>
-                  <PasteComponent Tab={tab} insert={this.insert} />
                   <CloseOutlined className="close" onClick={() => this.delTab(tab)} />
                 </div>
               } trigger="hover">
-                <span style={{textDecoration: tab.hide === 'true' ? 'line-through' : 'none'}}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>
+                <span id={tab.uuid} style={{textDecoration: tab.hide === 'true' ? 'line-through' : 'none'}}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>
               </Popover>
-            } key={tab.uuid} style={{backgroundColor: tab.backgroundColor || 'transparent'}}>
-              <TabComponents config={tab} handleList={this.updateTabComponent} deleteCard={this.deleteCard} />
+            } key={tab.uuid}>
+              <BaseTable card={tab.components[0]} updateConfig={(tb) => this.updateConfig(tb, i)} />
             </TabPane>
           ))}
         </DraggableTabs>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
-            <NormalForm title="娣诲姞鏍囩" width={800} update={this.updateTab} getForms={() => this.getTabForms()}>
-              <PlusOutlined className="plus" title="娣诲姞鏍囩"/>
-            </NormalForm>
-            <NormalForm title="鏍囩椤佃缃�" width={800} update={this.updateTabs} getForms={this.getTabsForms}>
-              <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
-            </NormalForm>
-            <CopyComponent type="tabs" card={tabs}/>
-            <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle}/>
+            <PlusOutlined className="plus" title="娣诲姞瀛愯〃" onClick={this.plusTable}/>
+            <PasteBaseTable insert={this.insert} />
             <DeleteOutlined className="close" onClick={() => this.props.deletecomponent(tabs.uuid)} />
           </div>
         } trigger="hover">

--
Gitblit v1.8.0