From 71e3da644eca32a5aa40503e903efb0640748093 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 21 七月 2023 17:00:59 +0800
Subject: [PATCH] 2023-07-21

---
 src/tabviews/custom/components/share/tabtransfer/index.jsx |  238 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 119 insertions(+), 119 deletions(-)

diff --git a/src/tabviews/custom/components/share/tabtransfer/index.jsx b/src/tabviews/custom/components/share/tabtransfer/index.jsx
index 2e26fb1..8ef2320 100644
--- a/src/tabviews/custom/components/share/tabtransfer/index.jsx
+++ b/src/tabviews/custom/components/share/tabtransfer/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { is, fromJS } from 'immutable'
-import { Row, Col, Empty, notification } from 'antd'
+import { fromJS } from 'immutable'
+import { Row, Col, Empty, notification, Modal } from 'antd'
 
 import Api from '@/api'
 import asyncComponent from '@/utils/asyncComponent'
@@ -9,7 +9,7 @@
   getStructuredParams,
   getStructDefaultParam
 } from '@/utils/utils-datamanage.js'
-import Utils from '@/utils/utils.js'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 // 閫氱敤缁勪欢
@@ -45,89 +45,80 @@
 class TabTransfer extends Component {
   static propTpyes = {
     config: PropTypes.object,        // 缁勪欢閰嶇疆淇℃伅
-    mainSearch: PropTypes.any,       // 鍏ㄥ眬鎼滅储鏉′欢
-  }
-
-  state = {
-    mainSearch: [],
-    self: false,
-    data: null
   }
 
   UNSAFE_componentWillMount () {
-    const { config, mainSearch } = this.props
+    let _config = fromJS(this.props.config).toJS()
 
-    // 鑾峰彇涓绘悳绱㈡潯浠�
-    let _mainSearch = []
-    let self = false
-    config.components.forEach(component => {
-      if (component.type === 'search') {
-        self = true
-        _mainSearch = Utils.initMainSearch(component.search)
+    if (_config.type !== 'group') {
+      let params = []
+
+      _config.components = this.formatSetting(_config.components, params)
+  
+      if (params.length > 0) {
+        this.loadmaindata(params)
       }
-    })
-
-    if (!self) {
-      _mainSearch = fromJS(mainSearch).toJS()
+    } else {
+      let delay = 110
+      _config.components.forEach(item => {
+        if (!item.setting || item.setting.interType !== 'system') return
+        if (!item.format) return
+        
+        item.setting.delay = delay
+        delay += 20
+      })
     }
 
-    let params = []
-    let delay = 20
-    config.components.forEach(item => {
-      if (item.type === 'tabs' || item.type === 'group') return
+    this.setState({
+      config: _config
+    })
+  }
 
-      if (!item.setting || item.setting.interType !== 'system') return
-      if (!item.format) return
+  formatSetting = (components, params) => {
+    let delay = 110
+    return components.map(item => {
+      if (item.type === 'tabs') return item
+      if (item.type === 'group') {
+        item.components = this.formatSetting(item.components, params)
+        return item
+      }
 
-      if ((!item.pageable || (item.pageable && !item.setting.laypage)) && item.setting.onload === 'true' && item.setting.sync === 'true') {
-        let searchlist = []
-        if (item.search && item.search.length > 0) {
-          searchlist = Utils.initMainSearch(item.search)
-        }
+      if (!item.setting || item.setting.interType !== 'system') return item
+      if (!item.format) return item
+
+      if (item.setting.sync === 'true') {
+        let searchlist = item.$searches || []
+  
         if (item.setting.useMSearch) {
-          let keys = searchlist.map(item => item.key)
-          _mainSearch.forEach(item => {
-            if (!keys.includes(item.key)) {
-              searchlist.push(item)
-            }
+          let mainSearch = window.GLOB.SearchBox.get(item.$searchId)
+          let keys = item.$s_keys || []
+          mainSearch.forEach(item => {
+            if (keys.includes(item.key.toLowerCase())) return
+
+            searchlist.push(item)
           })
         }
 
-        if (searchlist.filter(cell => cell.required && cell.value === '').length > 0) {
+        if (item.$s_req && searchlist.filter(item => item.required && item.value === '').length > 0) {
           item.setting.sync = 'false'
           item.setting.onload = 'false'
         } else {
           params.push(getStructDefaultParam(item, searchlist, params.length === 0))
         }
-      } else {
-        item.setting.sync = 'false'
-        item.setting.delay = delay
-        delay += 20
       }
+      
+      item.setting.delay = delay
+      delay += 20
+
+      return item
     })
-
-    this.setState({mainSearch: _mainSearch, self})
-
-    if (params.length > 0) {
-      this.loadmaindata(params)
-    }
-  }
-
-  UNSAFE_componentWillReceiveProps(nextProps) {
-    const { self } = this.state
-    
-    if (!self && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
-      this.setState({mainSearch: null}, () => {
-        this.setState({mainSearch: fromJS(nextProps.mainSearch).toJS()})
-      })
-    }
   }
 
   /**
    * @description 涓昏〃鏁版嵁鍔犺浇
    */ 
   loadmaindata = (params) => {
-    const { config } = this.props
+    const { config } = this.state
     let BID = ''
     let BData = window.GLOB.CacheData.get(config.$pageId)
 
@@ -139,46 +130,49 @@
 
     Api.genericInterface(param).then(result => {
       if (result.status) {
-        delete result.status
-        delete result.message
-        delete result.ErrMesg
-        delete result.ErrCode
-
-        if (config.$cache) {
-          params.forEach((item) => {
-            let _data = result[item.name] || ''
-            if (_data && !Array.isArray(_data)) {
-              _data = [_data]
-            }
-            Api.writeCacheConfig(item.uuid, _data)
-          })
+        if (result.message) {
+          if (result.ErrCode === 'Y') {
+            Modal.success({
+              title: result.message
+            })
+          } else if (result.ErrCode === 'S') {
+            notification.success({
+              top: 92,
+              message: result.message,
+              duration: 2
+            })
+          }
         }
 
-        this.setState({
-          data: result
+        params.forEach((item) => {
+          let _data = result[item.name] || ''
+          if (_data && !Array.isArray(_data)) {
+            _data = [_data]
+          }
+          window.GLOB.SyncData.set(item.name, _data)
         })
+
+        MKEmitter.emit('transferSyncData', config.uuid)
       } else {
-        this.setState({
-          data: ''
-        })
-        notification.error({
-          top: 92,
-          message: result.message,
-          duration: 10
-        })
+        MKEmitter.emit('transferSyncData', config.uuid)
+
+        if (!result.message) return
+        if (result.ErrCode === 'N') {
+          Modal.error({
+            title: result.message,
+          })
+        } else if (result.ErrCode !== '-2') {
+          notification.error({
+            top: 92,
+            message: result.message,
+            duration: 10
+          })
+        }
       }
     })
   }
 
-  resetSearch = (search) => {
-    this.setState({mainSearch: null}, () => {
-      this.setState({mainSearch: search})
-    })
-  }
-
   getComponents = (components) => {
-    const { mainSearch, data } = this.state
-
     return components.map(item => {
       let style = null
 
@@ -191,49 +185,49 @@
       if (item.type === 'card' && item.subtype === 'datacard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <DataCard config={item} data={data} mainSearch={mainSearch}/>
+            <DataCard config={item}/>
           </Col>
         )
       } else if (item.type === 'card' && item.subtype === 'propcard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <PropCard config={item} data={data} mainSearch={mainSearch}/>
+            <PropCard config={item}/>
           </Col>
         )
       } else if (item.type === 'table' && item.subtype === 'normaltable') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <NormalTable config={item} data={data} mainSearch={mainSearch}/>
+            <NormalTable config={item}/>
           </Col>
         )
       } else if (item.type === 'card' && item.subtype === 'dualdatacard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <DoubleDataCard config={item} mainSearch={mainSearch}/>
+            <DoubleDataCard config={item}/>
           </Col>
         )
       } else if (item.type === 'bar' || item.type === 'line') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <AntvBarAndLine data={data} config={item} mainSearch={mainSearch}/>
+            <AntvBarAndLine config={item}/>
           </Col>
         )
       } else if (item.type === 'pie') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <AntvPie data={data} config={item} mainSearch={mainSearch}/>
+            <AntvPie config={item}/>
           </Col>
         )
       } else if (item.type === 'dashboard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <AntvDashboard config={item} data={data} mainSearch={mainSearch}/>
+            <AntvDashboard config={item}/>
           </Col>
         )
       } else if (item.type === 'scatter') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <AntvScatter config={item} data={data} mainSearch={mainSearch}/>
+            <AntvScatter config={item}/>
           </Col>
         )
       } else if (item.type === 'search') {
@@ -244,115 +238,115 @@
         }
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <MainSearch config={item} BID={BID} refreshdata={this.resetSearch} />
+            <MainSearch config={item} BID={BID}/>
           </Col>
         )
       } else if (item.type === 'tabs') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <AntvTabs config={item} mainSearch={mainSearch}/>
+            <AntvTabs config={item}/>
           </Col>
         )
       } else if (item.type === 'carousel' && item.subtype === 'datacard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <CarouselDataCard config={item} data={data} mainSearch={mainSearch}/>
+            <CarouselDataCard config={item}/>
           </Col>
         )
       } else if (item.type === 'carousel' && item.subtype === 'propcard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <CarouselPropCard config={item} data={data} mainSearch={mainSearch}/>
+            <CarouselPropCard config={item}/>
           </Col>
         )
       } else if (item.type === 'card' && item.subtype === 'tablecard') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <TableCard config={item} data={data} mainSearch={mainSearch}/>
+            <TableCard config={item}/>
           </Col>
         )
       } else if (item.type === 'table' && item.subtype === 'basetable') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <MkBaseTable config={item} data={data} mainSearch={mainSearch}/>
+            <MkBaseTable config={item}/>
           </Col>
         )
       } else if (item.type === 'table' && item.subtype === 'editable') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <EditTable config={item} mainSearch={mainSearch}/>
+            <EditTable config={item}/>
           </Col>
         )
       } else if (item.type === 'group' && item.subtype === 'normalgroup') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <NormalGroup config={item} mainSearch={mainSearch}/>
+            <NormalGroup config={item}/>
           </Col>
         )
       } else if (item.type === 'form' && item.subtype === 'simpleform') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <SimpleForm config={item} data={data} mainSearch={mainSearch}/>
+            <SimpleForm config={item}/>
           </Col>
         )
       } else if (item.type === 'form' && item.subtype === 'stepform') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <StepForm config={item} data={data} mainSearch={mainSearch}/>
+            <StepForm config={item}/>
           </Col>
         )
       } else if (item.type === 'form' && item.subtype === 'tabform') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <TabForm config={item} data={data} mainSearch={mainSearch}/>
+            <TabForm config={item}/>
           </Col>
         )
       } else if (item.type === 'tree') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <NormalTree config={item} data={data} mainSearch={mainSearch}/>
+            <NormalTree config={item}/>
           </Col>
         )
       } else if (item.type === 'calendar') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <Calendar config={item} mainSearch={mainSearch}/>
+            <Calendar config={item}/>
           </Col>
         )
       } else if (item.type === 'editor') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <BraftEditor config={item} data={data} mainSearch={mainSearch}/>
+            <BraftEditor config={item}/>
           </Col>
         )
       } else if (item.type === 'code') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <SandBox config={item} data={data} mainSearch={mainSearch}/>
+            <SandBox config={item}/>
           </Col>
         )
       } else if (item.type === 'balcony') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <Balcony config={item} data={data}/>
+            <Balcony config={item}/>
           </Col>
         )
       } else if (item.type === 'timeline') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <TimeLine config={item} data={data} mainSearch={mainSearch}/>
+            <TimeLine config={item}/>
           </Col>
         )
       } else if (item.type === 'chart') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <CustomChart config={item} data={data} mainSearch={mainSearch}/>
+            <CustomChart config={item}/>
           </Col>
         )
       } else if (item.type === 'antvG6') {
         return (
           <Col span={item.width} style={style} key={item.uuid}>
-            <AntvG6 config={item} data={data} mainSearch={mainSearch}/>
+            <AntvG6 config={item}/>
           </Col>
         )
       } else if (item.type === 'antvX6') {
@@ -368,10 +362,16 @@
   }
 
   render() {
-    const { config } = this.props
+    const { config } = this.state
 
     if (!config || !config.components || config.components.length === 0) return (<Empty description={false} />)
 
+    if (config.type === 'group') {
+      return (
+        <Row className="component-wrap">{this.getComponents(config.components)}</Row>
+      )
+    }
+
     return (
       <Row className="component-wrap" id={'anchor' + config.uuid} gutter={8}>{this.getComponents(config.components)}</Row>
     )

--
Gitblit v1.8.0