From 29c5821ce140e89a8b35e53f41672dd86da56982 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 18 二月 2020 18:43:38 +0800
Subject: [PATCH] 2020-02-18

---
 src/tabviews/tableshare/actionList/index.jsx |  154 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 149 insertions(+), 5 deletions(-)

diff --git a/src/tabviews/tableshare/actionList/index.jsx b/src/tabviews/tableshare/actionList/index.jsx
index f8ae9a3..7e04f37 100644
--- a/src/tabviews/tableshare/actionList/index.jsx
+++ b/src/tabviews/tableshare/actionList/index.jsx
@@ -969,7 +969,7 @@
   triggerExcelout = (btn) => {
     let viewParam = this.props.getexceloutparam()
     let name = `${viewParam.menuName}${moment().format('YYYYMMDDHHmmss')}.xlsx`
-    // let pageSize = 100
+    let pageSize = 100
     
     this.setState({loadingUuid: btn.uuid})
 
@@ -1058,9 +1058,115 @@
       } else {
         this.execError({ErrCode: 'N', message: '瀵煎嚭鎸夐挳璁剧疆閿欒锛�'}, btn)
       }
+    } else if (btn.intertype === 'outer' && btn.innerFunc) { // 鍒嗛〉锛屼笖涓ゆ璇锋眰
+      this.getExcelOutDoubleData(btn, viewParam, 1, pageSize, [], name)
+    } else { // 鍒嗛〉锛屼竴姝ヨ姹�
+      this.getExcelOutData(btn, viewParam, 1, pageSize, [], name)
     }
   }
 
+  /**
+   * @description 涓ゆ鍒嗛〉璇锋眰
+   */
+  getExcelOutDoubleData = (btn, viewParam, pageIndex, pageSize, data, name) => {
+    let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize)
+    param.func = btn.innerFunc
+
+    Api.genericInterface(param).then(res => {
+      if (res.status) {
+        delete res.ErrCode
+        delete res.ErrMesg
+        delete res.message
+        delete res.status
+
+        if (btn.sysInterface === 'true') {
+          res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
+        } else {
+          res.rduri = btn.interface
+        }
+
+        if (btn.outerFunc) {
+          res.func = btn.outerFunc
+        }
+  
+        res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey
+  
+        Api.genericInterface(res).then(result => {
+          if (result.status) {
+            if (!result.data) {
+              this.execError({ErrCode: 'N', message: '鏈幏鍙栧埌鏁版嵁淇℃伅锛�'}, btn)
+            } else if (result.data.length >= pageSize) {
+              data = data.concat(result.data)
+              pageIndex++
+              this.getExcelOutDoubleData(btn, viewParam, pageIndex, pageSize, data, name)
+            } else {
+              data = data.concat(result.data)
+              this.exportExcel(data, btn, name)
+            }
+          } else {
+            this.execError(result, btn)
+          }
+        })
+      } else {
+        this.execError(res, btn)
+      }
+    })
+  }
+
+  /**
+   * @description 涓�姝ュ垎椤佃姹�
+   */
+  getExcelOutData = (btn, viewParam, pageIndex, pageSize, data, name) => {
+    let param = null
+    if (btn.intertype === 'inner' && !btn.innerFunc) { // 浣跨敤绯荤粺鍑芥暟
+      if (!viewParam.arr_field) {
+        this.execError({ErrCode: 'N', message: '鏈缃樉绀哄垪锛�'}, btn)
+        return
+      }
+
+      param = this.getExcelDefaultParam(viewParam.arr_field, viewParam.orderBy, viewParam.search, true, pageIndex, pageSize)
+
+      
+    } else if (btn.intertype === 'inner' && btn.innerFunc) { // 浣跨敤鍐呴儴鍑芥暟
+      param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize)
+      param.func = btn.innerFunc
+
+    } else if (btn.intertype === 'outer' && !btn.innerFunc) { // 浣跨敤澶栭儴鍑芥暟
+      param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize)
+      if (btn.sysInterface === 'true') {
+        param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
+      } else {
+        param.rduri = btn.interface
+      }
+
+      param.appkey = window.GLOB.appkey || ''
+
+      if (btn.outerFunc) {
+        param.func = btn.outerFunc
+      }
+    }
+
+    Api.genericInterface(param).then(result => {
+      if (result.status) {
+        if (!result.data) {
+          this.execError({ErrCode: 'N', message: '鏈幏鍙栧埌鏁版嵁淇℃伅锛�'}, btn)
+        } else if (result.data.length >= pageSize) {
+          data = data.concat(result.data)
+          pageIndex++
+          this.getExcelOutData(btn, viewParam, pageIndex, pageSize, data, name)
+        } else {
+          data = data.concat(result.data)
+          this.exportExcel(data, btn, name)
+        }
+      } else {
+        this.execError(result, btn)
+      }
+    })
+  }
+
+  /**
+   * @description Excel 鐢熸垚
+   */
   exportExcel = (data, btn, name) => {
     const { logcolumns } = this.props
     if (data && data.length > 0) {
@@ -1068,21 +1174,52 @@
         let _header = []
         let _topRow = {}
         let colwidth = []
+
+        let hidecolumns = []
+        logcolumns.forEach(col => {
+          if (col.Hide === 'true') {
+            hidecolumns.push(col.field)
+          }
+        })
+
+        if (btn.verify && btn.verify.columns && btn.verify.columns.length > 0) {
+          btn.verify.columns.forEach(col => {
+            if (hidecolumns.includes(col.Column)) return
+            if (!data[0].hasOwnProperty(col.Column)) return
+            if (_topRow[col.Column]) return
+
+            _header.push(col.Column)
+            _topRow[col.Column] = col.Text
+
+            colwidth.push({width: col.Width})
+          })
+        }
+
         logcolumns.forEach(col => {
           if (col.Hide === 'true') return
-
           if (!data[0].hasOwnProperty(col.field)) return
+          if (_topRow[col.field]) return
 
           _header.push(col.field)
           _topRow[col.field] = col.label
 
           let _colwidth = Math.floor(col.Width / 6)
 
-          if (!_colwidth || _colwidth < 10) {
-            _colwidth = 10
+          if (!_colwidth || _colwidth < 5) {
+            _colwidth = 5
           }
 
           colwidth.push({width: _colwidth})
+        })
+
+        Object.keys(data[0]).forEach(key => {
+          if (hidecolumns.includes(key)) return
+          if (_topRow[key]) return
+
+          _header.push(key)
+          _topRow[key] = key
+
+          colwidth.push({width: 12})
         })
 
         let table = []
@@ -1098,7 +1235,6 @@
           table.push(_row)
         })
 
-        // const ws = XLSX.utils.aoa_to_sheet(data)
         const ws = XLSX.utils.json_to_sheet(table, {header: _header, skipHeader: true})
 
         ws['!cols'] = colwidth
@@ -1129,6 +1265,10 @@
       ..._search
     }
 
+    if (this.props.BID) {
+      param.BID = this.props.BID
+    }
+
     if (pagination) {
       param.PageIndex = pageIndex
       param.PageSize = pageSize
@@ -1153,6 +1293,10 @@
       arr_field: arr_field,
       appkey: window.GLOB.appkey || ''
     }
+
+    if (this.props.BID) {
+      param.BID = this.props.BID
+    }
     
     let _dataresource = setting.dataresource
 

--
Gitblit v1.8.0