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