From 2a3cc4e6cecfc6dab8b60adf93f7fde898ddc939 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 25 七月 2023 16:36:23 +0800
Subject: [PATCH] 2023-07-25

---
 src/tabviews/custom/components/card/double-data-card/index.jsx |  195 +++++++++++++++++++++++++++++-------------------
 1 files changed, 118 insertions(+), 77 deletions(-)

diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx
index 38f7251..8f4e530 100644
--- a/src/tabviews/custom/components/card/double-data-card/index.jsx
+++ b/src/tabviews/custom/components/card/double-data-card/index.jsx
@@ -5,7 +5,6 @@
 import { DownOutlined, UpOutlined, PlusSquareOutlined, MinusSquareOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
-import Utils from '@/utils/utils.js'
 import UtilsDM from '@/utils/utils-datamanage.js'
 import MKEmitter from '@/utils/events.js'
 import TimerTask from '@/utils/timer-task.js'
@@ -20,7 +19,6 @@
 class DoubleDataCard extends Component {
   static propTpyes = {
     config: PropTypes.object,        // 缁勪欢閰嶇疆淇℃伅
-    mainSearch: PropTypes.any,       // 澶栧眰鎼滅储鏉′欢
   }
 
   state = {
@@ -93,6 +91,14 @@
         }
       }
 
+      if (item.style.clear === 'left') {
+        item.wStyle = {clear: 'left'}
+      } else if (item.style.clear === 'right') {
+        item.wStyle = {float: 'right'}
+      }
+
+      delete item.style.clear
+
       if (item.$cardType !== 'extendCard') {
         _card = item
       } else if (!_card) {
@@ -110,8 +116,6 @@
 
     _config.subcards = null
     
-    let _data = null
-
     let selected = 'false'
     if (_config.wrap.selected === 'always' || _config.wrap.selected === 'init' || _config.wrap.selected === 'sign') {
       selected = _config.wrap.selected
@@ -123,8 +127,6 @@
     _config.wrap.pagestyle = _config.wrap.pagestyle || 'page'
 
     _config.wrap.wrapClass =  `${_config.wrap.selStyle} ${_config.wrap.cardType || ''}`
-
-    this.loaded = _data !== null
 
     let wrapStyle = null
     let subcard = fromJS(_card).toJS()
@@ -180,7 +182,6 @@
       selected,
       precards,
       nextcards,
-      data: _data,
       BID: BID || '',
       BData: BData || '',
       config: _config,
@@ -188,14 +189,8 @@
       subconfig: subconfig,
       wrapStyle: wrapStyle,
       card: _card,
-      search: Utils.initMainSearch(_config.search),
+      search: _config.$searches,
       arr_field: _config.columns.map(col => col.field).join(','),
-    }, () => {
-      if (_config.setting.onload === 'true') {
-        setTimeout(() => {
-          this.loadData()
-        }, _config.setting.delay || 0)
-      }
     })
   }
 
@@ -203,11 +198,15 @@
     const { config } = this.state
 
     MKEmitter.addListener('reloadData', this.reloadData)
+    MKEmitter.addListener('refreshLineData', this.refreshLineData)
     MKEmitter.addListener('resetSelectLine', this.resetParentParam)
     MKEmitter.addListener('queryModuleParam', this.queryModuleParam)
-    MKEmitter.addListener('refreshLineData', this.refreshLineData)
     MKEmitter.addListener('refreshByButtonResult', this.refreshByButtonResult)
     
+    if (config.setting.useMSearch) {
+      MKEmitter.addListener('searchRefresh', this.searchRefresh)
+    }
+
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
@@ -219,10 +218,35 @@
       })
     }
 
-    if (config.$cache && !this.loaded) {
-      Api.getLCacheConfig(config.uuid).then(res => {
-        if (!res || this.loaded) return
-        let _data = res.map((item, index) => {
+    if (config.setting.onload === 'true') {
+      this.initExec()
+    }
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('reloadData', this.reloadData)
+    MKEmitter.removeListener('searchRefresh', this.searchRefresh)
+    MKEmitter.removeListener('refreshLineData', this.refreshLineData)
+    MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
+    MKEmitter.removeListener('queryModuleParam', this.queryModuleParam)
+    MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult)
+
+    this.timer && this.timer.stop()
+  }
+
+  initExec = () => {
+    const { config } = this.state
+
+    if (config.$cache) {
+      let getData = (res) => {
+        return res.map((item, index) => {
           let children = []
 
           if (item[config.setting.subdata]) {
@@ -258,44 +282,50 @@
 
           return item
         })
+      }
+      
+      if (config.$time && !config.setting.laypage) {
+        Api.getLCacheConfig(config.uuid, config.$time).then(res => {
+          if (!res) {
+            setTimeout(() => {
+              this.loadData()
+            }, config.setting.delay || 0)
+          }
 
-        this.setState({data: _data})
-      })
+          if (!res) return
+  
+          this.setState({data: getData(res)})
+        })
+      } else {
+        Api.getLCacheConfig(config.uuid, 0).then(res => {
+          if (!res || this.loaded) return
+  
+          this.setState({data: getData(res)})
+        })
+
+        setTimeout(() => {
+          this.loadData()
+        }, config.setting.delay || 0)
+      }
+    } else {
+      setTimeout(() => {
+        this.loadData()
+      }, config.setting.delay || 0)
     }
   }
 
-  shouldComponentUpdate (nextProps, nextState) {
-    return !is(fromJS(this.state), fromJS(nextState))
-  }
-
-  UNSAFE_componentWillReceiveProps (nextProps) {
+  searchRefresh = (searchId) => {
     const { config } = this.state
 
-    if (config.setting.useMSearch && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
-      this.setState({pageIndex: 1}, () => {
-        this.loadData()
-      })
-    }
-  }
-
-  componentWillUnmount () {
-    this.setState = () => {
-      return
-    }
-    MKEmitter.removeListener('reloadData', this.reloadData)
-    MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
-    MKEmitter.removeListener('queryModuleParam', this.queryModuleParam)
-    MKEmitter.removeListener('refreshLineData', this.refreshLineData)
-    MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult)
-
-    this.timer && this.timer.stop()
+    if (config.$searchId !== searchId) return
+    
+    this.setState({pageIndex: 1}, () => {
+      this.loadData()
+    })
   }
 
   /**
    * @description 鎸夐挳鎵ц瀹屾垚鍚庨〉闈㈠埛鏂�
-   * @param {*} menuId     // 鑿滃崟Id
-   * @param {*} position   // 鍒锋柊浣嶇疆
-   * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
   refreshByButtonResult = (menuId, position, btn, id = '', lines) => {
     const { config, BID } = this.state
@@ -321,10 +351,6 @@
     } else {
       this.loadData(id)
     }
-
-    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
-      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
-    }
   }
 
   refreshLineData = (menuId, btn, uuid, count) => {
@@ -332,7 +358,7 @@
 
     if (config.uuid !== menuId) return
     
-    let _data = fromJS(data).toJS().forEach(item => {
+    let _data = fromJS(data).toJS().map(item => {
       if (item.$$uuid === uuid) {
         item[btn.field] = count
       }
@@ -341,6 +367,7 @@
           cell[btn.field] = count
         }
       })
+      return item
     })
 
     this.setState({
@@ -496,18 +523,18 @@
    * @description 瀵煎嚭Excel鏃讹紝鑾峰彇椤甸潰鎼滅储鎺掑簭绛夊弬鏁�
    */
   queryModuleParam = (menuId, callback) => {
-    const { mainSearch } = this.props
     const { arr_field, config, search, orderBy } = this.state
 
     if (config.uuid !== menuId) return
 
     let searches = search ? fromJS(search).toJS() : []
-    if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 涓昏〃鎼滅储鏉′欢
-      let keys = searches.map(item => item.key.toLowerCase())
+    if (config.setting.useMSearch) { // 涓昏〃鎼滅储鏉′欢
+      let mainSearch = window.GLOB.SearchBox.get(config.$searchId) || []
+      let keys = config.$s_keys || []
       mainSearch.forEach(item => {
-        if (!keys.includes(item.key.toLowerCase())) {
-          searches.push(item)
-        }
+        if (keys.includes(item.key.toLowerCase())) return
+
+        searches.push(item)
       })
     }
 
@@ -520,7 +547,6 @@
   }
 
   async loadData (id, type) {
-    const { mainSearch } = this.props
     const { config, arr_field, pageIndex, pageSize, search, BID, BData, selected, card, orderBy } = this.state
 
     if (config.setting.supModule && !BID && config.wrap.supKey !== 'false') { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -551,17 +577,17 @@
     }
 
     let searches = fromJS(search).toJS()
-    if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 涓昏〃鎼滅储鏉′欢
-      let keys = searches.map(item => item.key.toLowerCase())
+    if (config.setting.useMSearch) { // 涓昏〃鎼滅储鏉′欢
+      let mainSearch = window.GLOB.SearchBox.get(config.$searchId) || []
+      let keys = config.$s_keys || []
       mainSearch.forEach(item => {
-        if (!keys.includes(item.key.toLowerCase())) {
-          searches.push(item)
-        }
+        if (keys.includes(item.key.toLowerCase())) return
+
+        searches.push(item)
       })
     }
 
-    let requireFields = searches.filter(item => item.required && item.value === '')
-    if (requireFields.length > 0) {
+    if (config.$s_req && searches.filter(item => item.required && item.value === '').length > 0) {
       return
     }
 
@@ -583,7 +609,7 @@
 
       this.loaded = true
       if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
-        Api.writeCacheConfig(config.uuid, result.data || '')
+        Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
       if (selected !== 'false' || (id && config.wrap.selected !== 'false')) {
@@ -702,16 +728,31 @@
           this.timer && this.timer.stop()
         }
       }
+      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
+          })
+        }
+      }
     } else {
       this.setState({
         loading: false
       })
       this.timer && this.timer.stop()
+
+      if (!result.message) return
       if (result.ErrCode === 'N') {
         Modal.error({
           title: result.message,
         })
-      } else {
+      } else if (result.ErrCode !== '-2') {
         notification.error({
           top: 92,
           message: result.message,
@@ -725,16 +766,16 @@
    * @description 鑾峰彇鍗曡鏁版嵁
    */ 
   async loadLinedata (id) {
-    const { mainSearch } = this.props
     const { config, arr_field, pageIndex, pageSize, search, BID, BData, orderBy } = this.state
 
     let searches = fromJS(search).toJS()
-    if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 涓昏〃鎼滅储鏉′欢
-      let keys = searches.map(item => item.key.toLowerCase())
+    if (config.setting.useMSearch) { // 涓昏〃鎼滅储鏉′欢
+      let mainSearch = window.GLOB.SearchBox.get(config.$searchId) || []
+      let keys = config.$s_keys || []
       mainSearch.forEach(item => {
-        if (!keys.includes(item.key.toLowerCase())) {
-          searches.push(item)
-        }
+        if (keys.includes(item.key.toLowerCase())) return
+
+        searches.push(item)
       })
     }
 
@@ -1026,7 +1067,7 @@
           <div className={`data-zoom ${config.wrap.wrapClass}`} style={config.wrap.minWidth ? {minWidth: config.wrap.minWidth} : null}>
             <Row className={'card-row-list '}>
               {precards.map((item, index) => (
-                <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}>
+                <Col key={'pre' + index} className="extend-card" style={item.wStyle} span={item.setting.width || 6}>
                   {item.setting.cardRole === 'header' ? <TableHeader card={item} data={extendData} refresh={this.refreshByHeader}>
                     {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
                   </TableHeader> : <CardItem card={item} cards={config} data={extendData}>
@@ -1058,7 +1099,7 @@
                 }
 
                 return (
-                  <Col key={index} span={card.setting.width}>
+                  <Col key={index} span={card.setting.width} style={card.wStyle}>
                     <div className={className} style={wrapStyle}>
                       <CardItem card={card} cards={config} data={item} onDoubleClick={() => this.onDoubleClick(index, subClass)} onClick={() => {this.changeCard(index, item, subClass)}}>
                         <span className="circle-select"></span>
@@ -1075,7 +1116,7 @@
                 )
               })}
               {nextcards.map((item, index) => (
-                <Col key={'next' + index} className="extend-card" span={item.setting.width || 6}>
+                <Col key={'next' + index} className="extend-card" style={item.wStyle} span={item.setting.width || 6}>
                   {item.setting.cardRole === 'header' ? <TableHeader card={item} data={extendData} refresh={this.refreshByHeader}>
                     {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
                   </TableHeader> : <CardItem card={item} cards={config} data={extendData}>

--
Gitblit v1.8.0