From 2404d8a1bed5509432652f11aba6a1efa04aa160 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 18 九月 2020 19:24:26 +0800
Subject: [PATCH] 2020-09-18

---
 src/tabviews/subtable/index.jsx |  135 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 106 insertions(+), 29 deletions(-)

diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx
index 982e15b..5f57a90 100644
--- a/src/tabviews/subtable/index.jsx
+++ b/src/tabviews/subtable/index.jsx
@@ -64,7 +64,9 @@
     search: [],           // 鎼滅储鏉′欢鏁扮粍锛屼娇鐢ㄦ椂闇�鍒嗗満鏅鐞�
     pickup: false,        // 瀛愯〃鏁版嵁闅愯棌鏄剧ず鍒囨崲
     triggerBtn: null,     // 鎸夐挳瑙﹀彂
-    chartId: ''           // 灞曞紑鍥捐〃ID
+    chartId: '',          // 灞曞紑鍥捐〃ID
+    statFields: [],       // 鍚堣瀛楁
+    statFValue: []        // 鍚堣鍊�
   }
 
   /**
@@ -79,6 +81,7 @@
       }, () => {
         if (this.state.setting) {
           this.loadmaindata(nextProps.BID, 'refresh')
+          this.getStatFieldsValue(nextProps.BID, 'refresh')
         }
       })
     } else if (this.state.config && nextProps.refreshtabs && nextProps.refreshtabs.includes(this.props.Tab.uuid)) {
@@ -95,6 +98,7 @@
       if (this.state.setting) {
         this.setState({}, () => {
           this.loadmaindata()
+          this.getStatFieldsValue()
         })
       }
     }
@@ -145,6 +149,7 @@
       let _logcolumns = []   // 鏃ュ織鏄剧ず鍒�
       let _hideCol = []      // 闅愯棌鍙婂悎骞跺垪涓瓧娈电殑uuid闆�
       let colMap = new Map()
+      let statFields = []    // 鍚堣瀛楁淇℃伅
 
       // 鐗堟湰鍏煎
       config = UtilsUpdate.updateSubTable(config)
@@ -241,6 +246,9 @@
           _logcolumns.push(col)
 
           col.nameField && _arrField.push(col.nameField) // 閾炬帴鍚嶅瓧娈�
+          if (col.Hide !== 'true' && col.type === 'number' && col.sum === 'true') {
+            statFields.push(col)
+          }
         }
         if (col.type === 'colspan' && col.sublist) { // 绛涢�夐殣钘忓垪
           _hideCol = _hideCol.concat(col.sublist)
@@ -324,40 +332,43 @@
       config.setting.execute = config.setting.default !== 'false'     // 榛樿sql鏄惁鎵ц锛岃浆涓篵oolean 缁熶竴鏍煎紡
       config.setting.customScript = ''                                // 鑷畾涔夎剼鏈�
 
-      if (config.setting.scripts && config.setting.scripts.length > 0) {
-        let _customScript = ''
-        config.setting.scripts.forEach(item => {
-          if (item.status === 'false') return
-          _customScript += `
-            ${item.sql}
-          `
-        })
-        config.setting.customScript = _customScript
-      }
-
-      if (!config.setting.execute) { // 榛樿sql 涓嶆墽琛屾椂 缃┖
-        config.setting.dataresource = ''
-      } else {
-        config.setting.dataresource = config.setting.dataresource || ''
-      }
-      if (/\s/.test(config.setting.dataresource)) {
-        config.setting.dataresource = '(' + config.setting.dataresource + ') tb'
-      }
-
-      if (this.props.dataManager) { // 鏁版嵁鏉冮檺
-        config.setting.dataresource = config.setting.dataresource.replace(/\$@/ig, '/*')
-        config.setting.dataresource = config.setting.dataresource.replace(/@\$/ig, '*/')
-        config.setting.customScript = config.setting.customScript.replace(/\$@/ig, '/*')
-        config.setting.customScript = config.setting.customScript.replace(/@\$/ig, '*/')
-      } else {
-        config.setting.dataresource = config.setting.dataresource.replace(/@\$|\$@/ig, '')
-        config.setting.customScript = config.setting.customScript.replace(/@\$|\$@/ig, '')
+      if (config.setting.interType === 'system') {
+        if (config.setting.scripts && config.setting.scripts.length > 0) {
+          let _customScript = ''
+          config.setting.scripts.forEach(item => {
+            if (item.status === 'false') return
+            _customScript += `
+              ${item.sql}
+            `
+          })
+          config.setting.customScript = _customScript
+        }
+  
+        if (!config.setting.execute) { // 榛樿sql 涓嶆墽琛屾椂 缃┖
+          config.setting.dataresource = ''
+        } else {
+          config.setting.dataresource = config.setting.dataresource || ''
+        }
+        if (/\s/.test(config.setting.dataresource)) {
+          config.setting.dataresource = '(' + config.setting.dataresource + ') tb'
+        }
+  
+        if (this.props.dataManager) { // 鏁版嵁鏉冮檺
+          config.setting.dataresource = config.setting.dataresource.replace(/\$@/ig, '/*')
+          config.setting.dataresource = config.setting.dataresource.replace(/@\$/ig, '*/')
+          config.setting.customScript = config.setting.customScript.replace(/\$@/ig, '/*')
+          config.setting.customScript = config.setting.customScript.replace(/@\$/ig, '*/')
+        } else {
+          config.setting.dataresource = config.setting.dataresource.replace(/@\$|\$@/ig, '')
+          config.setting.customScript = config.setting.customScript.replace(/@\$|\$@/ig, '')
+        }
       }
 
       this.setState({
         loadingview: false,
         chartId: chartId,
         config: config,
+        statFields: statFields,
         setting: config.setting,
         searchlist: config.search,
         actions: _actions,
@@ -368,6 +379,7 @@
       }, () => {
         if (config.setting.onload !== 'false' && (!Tab.supMenu || BID || Tab.isTreeNode) && valid) { // 鍒濆鍖栧彲鍔犺浇
           this.loadmaindata()
+          this.getStatFieldsValue()
         }
       })
     } else {
@@ -458,6 +470,68 @@
   }
 
   /**
+   * @description 鑾峰彇鍚堣瀛楁鍊�
+   */
+  getStatFieldsValue = (bid, type) => {
+    const { mainSearch } = this.props
+    const { setting, search, orderBy, statFields } = this.state
+
+    let _BID = this.props.BID
+    let searches = fromJS(search).toJS()
+    if (mainSearch && mainSearch.length > 0) { // 涓昏〃鎼滅储鏉′欢
+      searches = [...mainSearch, ...searches]
+    }
+
+    if (statFields.length === 0 || setting.interType !== 'system' || !setting.dataresource) return
+
+    let requireFields = search.filter(item => item.required && (!item.value || item.value.length === 0))
+    if (requireFields.length > 0) {
+      return
+    }
+
+    if (type === 'refresh') {
+      if (!bid) { // 涓昏〃ID涓嶅瓨鍦ㄦ椂锛屼笉鏌ヨ瀛愯〃鍚堣鍊�
+        this.setState({
+          statFValue: []
+        })
+        return
+      } else {
+        _BID = bid
+      }
+    }
+
+    let _orderBy = orderBy || setting.order
+    let param = UtilsDM.getStatQueryDataParams(setting, statFields, searches, _orderBy, _BID, this.props.menuType, this.props.dataManager)
+
+    Api.genericInterface(param).then(res => {
+      if (res.status) {
+        let _data = res.data[0]
+        let values = []
+
+        if (_data) {
+          statFields.forEach(item => {
+            if (_data[item.field] || _data[item.field] === 0) {
+              values.push({label: item.label, value: _data[item.field]})
+            }
+          })
+        }
+        this.setState({
+          statFValue: values
+        })
+      } else {
+        this.setState({
+          statFValue: []
+        })
+        notification.error({
+          top: 92,
+          message: res.message,
+          duration: 10
+        })
+      }
+    })
+  }
+
+  /**
    * @description 鎼滅储鏉′欢鏀瑰彉鏃讹紝閲嶇疆琛ㄦ牸鏁版嵁
    * 鍚湁鍒濆涓嶅姞杞界殑椤甸潰锛屼慨鏀硅缃�
    */
@@ -469,6 +543,7 @@
       selectedData: [],
     }, () => {
       this.loadmaindata()
+      this.getStatFieldsValue()
     })
   }
 
@@ -504,6 +579,7 @@
       resetTable: !this.state.resetTable
     }, () => {
       this.loadmaindata()
+      this.getStatFieldsValue()
     })
   }
 
@@ -689,6 +765,7 @@
                       total={this.state.total}
                       MenuID={this.props.MenuID}
                       loading={this.state.loading}
+                      statFValue={this.state.statFValue}
                       refreshdata={this.refreshbytable}
                       buttonTrigger={this.buttonTrigger}
                       handleTableId={this.handleTableId}

--
Gitblit v1.8.0