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/subtabtable/index.jsx |  121 ++++++++++++++++++++++++++++++---------
 1 files changed, 92 insertions(+), 29 deletions(-)

diff --git a/src/tabviews/subtabtable/index.jsx b/src/tabviews/subtabtable/index.jsx
index 2d2de9c..26635f0 100644
--- a/src/tabviews/subtabtable/index.jsx
+++ b/src/tabviews/subtabtable/index.jsx
@@ -59,7 +59,9 @@
     orderBy: '',          // 鎺掑簭
     search: '',           // 鎼滅储鏉′欢鏁扮粍锛屼娇鐢ㄦ椂闇�鍒嗗満鏅鐞�
     triggerBtn: null,     // 鎸夐挳瑙﹀彂
-    chartId: ''           // 灞曞紑鍥捐〃ID
+    chartId: '',          // 灞曞紑鍥捐〃ID
+    statFields: [],       // 鍚堣瀛楁
+    statFValue: []        // 鍚堣鍊�
   }
 
   /**
@@ -107,6 +109,7 @@
       let _logcolumns = []   // 鏃ュ織鏄剧ず鍒�
       let _hideCol = []      // 闅愯棌鍙婂悎骞跺垪涓瓧娈电殑uuid闆�
       let colMap = new Map()
+      let statFields = []    // 鍚堣瀛楁淇℃伅
 
       // 鐗堟湰鍏煎
       config = UtilsUpdate.updateSubTable(config)
@@ -182,6 +185,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)
@@ -247,40 +253,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,
@@ -291,6 +300,7 @@
       }, () => {
         if (config.setting.onload !== 'false' && valid) { // 鍒濆鍖栧彲鍔犺浇
           this.loadmaindata()
+          this.getStatFieldsValue()
         }
       })
     } else {
@@ -362,6 +372,56 @@
   }
 
   /**
+   * @description 鑾峰彇鍚堣瀛楁鍊�
+   */
+  getStatFieldsValue = () => {
+    const { mainSearch, BID } = this.props
+    const { setting, search, orderBy, statFields } = this.state
+
+    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
+    }
+
+    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 鎼滅储鏉′欢鏀瑰彉鏃讹紝閲嶇疆琛ㄦ牸鏁版嵁
    * 鍚湁鍒濆涓嶅姞杞界殑椤甸潰锛屼慨鏀硅缃�
    */
@@ -373,6 +433,7 @@
       resetTable: !this.state.resetTable
     }, () => {
       this.loadmaindata()
+      this.getStatFieldsValue()
     })
   }
 
@@ -408,6 +469,7 @@
       resetTable: !this.state.resetTable
     }, () => {
       this.loadmaindata()
+      this.getStatFieldsValue()
     })
   }
 
@@ -561,6 +623,7 @@
                     total={this.state.total}
                     MenuID={this.props.MenuID}
                     loading={this.state.loading}
+                    statFValue={this.state.statFValue}
                     refreshdata={this.refreshbytable}
                     buttonTrigger={this.buttonTrigger}
                     resetTable={this.state.resetTable}

--
Gitblit v1.8.0