From e2afee71874538e31ed57032e3ad1bba1188ab4b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 20 十月 2022 15:31:41 +0800
Subject: [PATCH] 2022-10-20

---
 src/menu/components/tabs/table-tabs/index.jsx |  182 ++++++++------------------------------------
 1 files changed, 35 insertions(+), 147 deletions(-)

diff --git a/src/menu/components/tabs/table-tabs/index.jsx b/src/menu/components/tabs/table-tabs/index.jsx
index a272815..d5cfa87 100644
--- a/src/menu/components/tabs/table-tabs/index.jsx
+++ b/src/menu/components/tabs/table-tabs/index.jsx
@@ -2,7 +2,7 @@
 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'
@@ -12,13 +12,13 @@
 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 CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
 const PasteComponent = asyncIconComponent(() => import('../paste'))
-const TabComponents = asyncComponent(() => import('../tabcomponents'))
+const BaseTable = asyncComponent(() => import('@/menu/components/table/base-table'))
 
 const { TabPane } = Tabs
 const { confirm } = Modal
@@ -31,10 +31,8 @@
   }
 
   state = {
-    appType: sessionStorage.getItem('appType'),
     tabs: null,
-    editab: null,
-    defaultActiveKey: ''
+    editab: null
   }
 
   UNSAFE_componentWillMount () {
@@ -44,27 +42,21 @@
       let _tabs = {
         uuid: tabs.uuid,
         type: tabs.type,
-        tabId: tabs.tabId || '',
-        parentId: tabs.parentId || '',
         subtype: tabs.subtype,
         width: 24,
         name: tabs.name,
-        setting: {width: 24, position: 'top', tabStyle: 'line', name: tabs.name},
+        setting: {},
         style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
         subtabs: [
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 1', icon: '', components: [] },
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 2', icon: '', components: [] },
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 3', icon: '', components: [] }
+          { uuid: Utils.getuuid(), label: '瀛愯〃1', icon: '', components: [{uuid: Utils.getuuid(), 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()
       })
     }
@@ -74,11 +66,7 @@
     return !is(fromJS(this.state), fromJS(nextState))
   }
 
-  componentDidMount () {
-    MKEmitter.addListener('submitSearch', this.getSearch)
-    MKEmitter.addListener('tabsChange', this.handleTabsChange)
-    MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle)
-  }
+  componentDidMount () {}
 
   /**
    * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
@@ -87,42 +75,6 @@
     this.setState = () => {
       return
     }
-    MKEmitter.removeListener('submitSearch', this.getSearch)
-    MKEmitter.removeListener('tabsChange', this.handleTabsChange)
-    MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle)
-  }
-
-  updateComponentStyle = (parentId, keys, style) => {
-    const { tabs } = this.state
-
-    if (tabs.subtabs.findIndex(tab => tab.uuid === parentId) === -1) return
-
-    let _tabs = fromJS(tabs).toJS()
-    let _tabs_ = fromJS(tabs).toJS()
-
-    let components = []
-    _tabs.subtabs.forEach(tab => {
-      if (tab.uuid === parentId) {
-        components = tab.components.map(item => {
-          if (keys.includes(item.uuid)) {
-            item.style = {...item.style, ...style}
-          }
-          return item
-        })
-        tab.components = []
-      }
-    })
-
-    _tabs_.subtabs = _tabs_.subtabs.map(tab => {
-      if (tab.uuid === parentId) {
-        tab.components = components
-      }
-      return tab
-    })
-
-    this.setState({tabs: _tabs}, () => {
-      this.updateComponent(_tabs_)
-    })
   }
 
   changeStyle = () => {
@@ -141,22 +93,7 @@
     this.props.updateConfig(_card)
   }
 
-  handleTabsChange = (parentId) => {
-    const { tabs } = this.state
-
-    if (parentId === tabs.parentId) {
-      MKEmitter.emit('tabsChange', tabs.uuid)
-    }
-  }
-
   updateComponent = (component) => {
-    const { tabs } = this.state
-
-    if (!is(fromJS(tabs.setting), fromJS(component.setting)) || !is(fromJS(tabs.style), fromJS(component.style))) {
-      // 娉ㄥ唽浜嬩欢-鏍囩鍙樺寲锛岄�氱煡鏍囩鍐呭厓绱�
-      MKEmitter.emit('tabsChange', tabs.uuid)
-    }
-
     component.width = component.setting.width
     component.name = component.setting.name
 
@@ -223,6 +160,25 @@
     this.props.updateConfig(tabs)
   }
 
+  dropTable = (hoverKey, dragKey) => {
+    // let tabs = fromJS(this.state.tabs).toJS()
+    // let subtab = {}
+    // tabs.subtabs.forEach(item => {
+    //   subtab[item.uuid] = item
+    // })
+
+    // tabs.subtabs = []
+
+    // order.forEach(item => {
+    //   if (subtab[item]) {
+    //     tabs.subtabs.push(subtab[item])
+    //   }
+    // })
+
+    // this.setState({tabs})
+    // this.props.updateConfig(tabs)
+  }
+
   insert = (item, tab) => {
     let tabs = fromJS(this.state.tabs).toJS()
 
@@ -236,59 +192,12 @@
     this.props.updateConfig(tabs)
   }
 
-  getSearch = (config) => {
-    const { tabs } = this.state
-
-    if (tabs.uuid !== config.uuid) return
-
-    let _tabs = fromJS(tabs).toJS()
-
-    _tabs.subtabs = _tabs.subtabs.map(t => {
-      if (t.uuid === config.tabId) {
-        t.search = config.search
-      }
-      return t
-    })
-
-    this.setState({
-      tabs: _tabs
-    })
-    this.props.updateConfig(_tabs)
-  }
-
-  setSearch = (tab) => {
-    const { tabs } = this.state
-    let card = {
-      uuid: tabs.uuid,
-      tabId: tab.uuid,
-      search: tab.search
-    }
-
-    if (!card.search) {
-      card.search = {
-        floor: 1,
-        setting: { type: 'title', field: '', title: '', focus: 'true', btn: 'hidden' },
-        groups: [],
-        fields: []
-      }
-    }
-    MKEmitter.emit('changeSearch', card)
-  }
-
-  clickComponent = (e) => {
-    if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') {
-      e.stopPropagation()
-      MKEmitter.emit('clickComponent', this.state.tabs)
-    }
-  }
-
   getTabForms = (tab) => {
     const { tabs } = this.state
 
     if (!tab) {
       tab = {
         uuid: '',
-        parentId: tabs.uuid,
         label: '',
         icon: '',
         components: []
@@ -308,7 +217,6 @@
 
     editab.label = res.label
     editab.icon = res.icon
-    // editab.hasSearch = res.hasSearch || ''
     editab.hide = res.hide || 'false'
     editab.backgroundColor = res.backgroundColor
     editab.controlVal = res.controlVal || ''
@@ -336,28 +244,17 @@
     this.props.updateConfig(tabs)
   }
 
-  getTabsForms = () => {
-    const { tabs } = this.state
+  updateConfig = () => {
 
-    return getTabsSetForm(tabs.setting, tabs.uuid)
-  }
-
-  updateTabs = (res) => {
-    this.updateComponent({...this.state.tabs, setting: res})
-  }
-
-  onChange = (key) => {
-    const { tabs } = this.state
-    window.GLOB.TabsMap.set(tabs.uuid, key)
   }
 
   render() {
-    const { tabs, defaultActiveKey } = this.state
+    const { tabs } = this.state
     let _style = resetStyle(tabs.style)
 
     return (
-      <div className={'menu-tabs-edit-box ' + (tabs.setting.display || '')} style={_style} onClick={this.clickComponent} 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}>
+      <div className={'menu-tabs-edit-box ' + (tabs.setting.display || '')} style={_style} id={tabs.uuid}>
+        <DraggableTabs tabsMove={this.moveSwitch} tabsDrop={this.dropTable}>
           {tabs.subtabs.map(tab => (
             <TabPane tab={
               <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
@@ -365,29 +262,20 @@
                   <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>
               </Popover>
-            } key={tab.uuid} style={{backgroundColor: tab.backgroundColor || 'transparent'}}>
-              {/* {appType === 'mob' && tabs.setting.position === 'top' && tabs.setting.display === 'inline-block' && tab.hasSearch === 'icon' ?
-                <SearchOutlined className="search-icon" onDoubleClick={() => this.setSearch(tab)}/> : null} */}
-              <TabComponents config={tab} handleList={this.updateTabComponent} deleteCard={this.deleteCard} />
+            } key={tab.uuid}>
+              <BaseTable card={tab.components[0]} updateConfig={this.updateConfig} />
             </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="娣诲姞瀛愯〃"/>
+            <PasteComponent insert={this.insert} />
             <DeleteOutlined className="close" onClick={() => this.props.deletecomponent(tabs.uuid)} />
           </div>
         } trigger="hover">

--
Gitblit v1.8.0