From a94b0a4d15b26ecf8fe99f0a1c3e60d60b97766d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 15 八月 2023 14:22:03 +0800 Subject: [PATCH] 2023-08-15 --- src/tabviews/zshare/actionList/exceloutbutton/index.jsx | 229 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 135 insertions(+), 94 deletions(-) diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx index 2192239..d5489f8 100644 --- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx +++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx @@ -6,10 +6,7 @@ import * as XLSX from 'sheetjs-style' import Utils from '@/utils/utils.js' -import options from '@/store/options.js' import Api from '@/api' -import zhCN from '@/locales/zh-CN/main.js' -import enUS from '@/locales/en-US/main.js' import MKEmitter from '@/utils/events.js' import MkIcon from '@/components/mk-icon' // import './index.scss' @@ -26,7 +23,6 @@ } state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, excelName: '', // 鏂囦欢鍚� search: '', // 鎼滅储鏉′欢 loading: false, // 瀵煎嚭涓� @@ -220,7 +216,8 @@ } else { this.execError(result) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } else if (btn.intertype === 'inner') { // 浣跨敤鍐呴儴鍑芥暟 @@ -233,15 +230,16 @@ } else { this.execError(result) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } else if (btn.intertype === 'outer' && !btn.innerFunc) { // 浣跨敤澶栭儴鍑芥暟 let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search) if (window.GLOB.mkHS) { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - param.rduri = options.cloudServiceApi + if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) { + param.rduri = window.GLOB.cloudServiceApi param.userid = sessionStorage.getItem('CloudUserID') || '' param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' } else if (btn.sysInterface !== 'true') { @@ -285,7 +283,8 @@ } else { this.execError(result) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } else if (btn.intertype === 'outer' && btn.innerFunc) { @@ -300,8 +299,8 @@ delete res.status if (window.GLOB.mkHS) { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - res.rduri = options.cloudServiceApi + if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) { + res.rduri = window.GLOB.cloudServiceApi res.userid = sessionStorage.getItem('CloudUserID') || '' res.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' } else if (btn.sysInterface !== 'true') { @@ -349,7 +348,8 @@ } else { this.execError(res) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } else { @@ -383,8 +383,8 @@ delete res.status if (window.GLOB.mkHS) { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - res.rduri = options.cloudServiceApi + if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) { + res.rduri = window.GLOB.cloudServiceApi res.userid = sessionStorage.getItem('CloudUserID') || '' res.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' } else if (btn.sysInterface !== 'true') { @@ -437,13 +437,15 @@ } else { this.execError(result) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } else { this.execError(res) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } @@ -469,8 +471,8 @@ param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize) if (window.GLOB.mkHS) { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - param.rduri = options.cloudServiceApi + if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) { + param.rduri = window.GLOB.cloudServiceApi param.userid = sessionStorage.getItem('CloudUserID') || '' param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' } else if (btn.sysInterface !== 'true') { @@ -525,7 +527,8 @@ } else { this.execError(result) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.execError({}) }) } @@ -550,6 +553,29 @@ return col }) + + if (data && data[0]) { + let errors = [] + columns.forEach(col => { + if (col.Column && data[0][col.Column] === undefined) { + errors.push(col.Text) + } + }) + + if (errors.length) { + notification.error({ + top: 92, + message: '鏁版嵁涓己灏戝瓧娈碉細' + errors.join('銆�'), + duration: 5 + }) + + this.setState({ + loading: false + }) + + return + } + } try { if (imgCol) { @@ -576,13 +602,13 @@ columns.forEach((col, i) => { let val = item[col.Column] - if (typeof(val) === 'number') { + if (col.type === 'number' && typeof(val) === 'number') { if (col.abs === 'true') { val = Math.abs(val) } if (col.round) { val = Math.round(val * col.round) / col.round - val = val.toFixed(col.decimal) + // val = val.toFixed(col.decimal) } } @@ -597,7 +623,7 @@ if (btn.verify.enable === 'true' && btn.verify.script) { this.execCustomScript() } else { - this.execSuccess({ErrCode: 'S', ErrMesg: '瀵煎嚭鎴愬姛锛�'}) + this.execSuccess({ErrCode: 'S', message: '瀵煎嚭鎴愬姛锛�'}) } } else { let letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -665,13 +691,13 @@ columns.forEach((col, i) => { let val = item[col.Column] - if (typeof(val) === 'number') { + if (col.type === 'number' && typeof(val) === 'number') { if (col.abs === 'true') { val = Math.abs(val) } if (col.round) { val = Math.round(val * col.round) / col.round - val = val.toFixed(col.decimal) + // val = val.toFixed(col.decimal) } } @@ -738,7 +764,7 @@ if (btn.verify.enable === 'true' && btn.verify.script) { this.execCustomScript() } else { - this.execSuccess({ErrCode: 'S', ErrMesg: '瀵煎嚭鎴愬姛锛�'}) + this.execSuccess({ErrCode: 'S', message: '瀵煎嚭鎴愬姛锛�'}) } } } catch (e) { @@ -796,10 +822,9 @@ let script = btn.verify.script if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 - script = script.replace(/\$@/ig, '/*') - script = script.replace(/@\$/ig, '*/') + script = script.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') } else { - script = script.replace(/@\$|\$@/ig, '') + script = script.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') } let allSearch = Utils.getAllSearchOptions(search) @@ -838,11 +863,12 @@ Api.genericInterface(param).then((res) => { if (res.status) { - this.execSuccess({ErrCode: 'S', ErrMesg: '瀵煎嚭鎴愬姛锛�'}) + this.execSuccess({ErrCode: 'S', message: '瀵煎嚭鎴愬姛锛�'}) } else { this.execError(res) } - }, () => { + }, (error) => { + if (error && error.ErrCode === 'LoginError') return this.updateStatus('over') }) } @@ -886,7 +912,7 @@ /** * @description 鑾峰彇榛樿瀛樺偍杩囩▼璇锋眰鍙傛暟 */ - getExcelDefaultParam = (arr_field, orderBy, search, pagination = false, pageIndex = 1, pageSize = 100) => { + getExcelDefaultParam = (arr_field, orderBy, search, pagination = false, pageIndex = 1, pageSize = 9999) => { const { setting, btn, selectedData, BID } = this.props let defaultSql = setting.execute || setting.default || 'true' @@ -899,7 +925,7 @@ defaultSql = btn.verify.defaultSql || 'true' _dataresource = btn.verify.dataresource || '' queryType = btn.verify.queryType - primaryKey = btn.verify.primaryKey || 'ID' + // primaryKey = btn.verify.primaryKey || 'ID' if (/\s/.test(_dataresource)) { _dataresource = '(' + _dataresource + ') tb' @@ -914,18 +940,16 @@ }) if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 - _dataresource = _dataresource.replace(/\$@/ig, '/*') - _dataresource = _dataresource.replace(/@\$/ig, '*/') - customScript = customScript.replace(/\$@/ig, '/*') - customScript = customScript.replace(/@\$/ig, '*/') + _dataresource = _dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') + customScript = customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') } else { - _dataresource = _dataresource.replace(/@\$|\$@/ig, '') - customScript = customScript.replace(/@\$|\$@/ig, '') + _dataresource = _dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') + customScript = customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') } } + let custompage = /@pageSize@/i.test(_dataresource + customScript) let _search = Utils.joinMainSearchkey(search) - _search = _search ? 'where ' + _search : '' let param = { @@ -963,44 +987,37 @@ let district = sessionStorage.getItem('district') || '' let address = sessionStorage.getItem('address') || '' - if (sessionStorage.getItem('isEditState') === 'true') { - userName = sessionStorage.getItem('CloudUserName') || '' - fullName = sessionStorage.getItem('CloudFullName') || '' - } + let allSearch = Utils.getAllSearchOptions(search) + let regoptions = allSearch.map(item => { + return { + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${item.value}'` + } + }) - let regoptions = null - if (queryType === 'statistics' || param.custom_script) { - let allSearch = Utils.getAllSearchOptions(search) + regoptions.push({ + reg: new RegExp('@userName@', 'ig'), + value: userName + }, { + reg: new RegExp('@fullName@', 'ig'), + value: fullName + }, { + reg: new RegExp('@orderBy@', 'ig'), + value: orderBy || '' + }, { + reg: new RegExp('@pageSize@', 'ig'), + value: pageSize + }, { + reg: new RegExp('@pageIndex@', 'ig'), + value: pageIndex + }) - regoptions = allSearch.map(item => { - return { - reg: new RegExp('@' + item.key + '@', 'ig'), - value: `'${item.value}'` - } - }) - - regoptions.push({ - reg: new RegExp('@userName@', 'ig'), - value: userName - }, { - reg: new RegExp('@fullName@', 'ig'), - value: fullName - }, { - reg: new RegExp('@orderBy@', 'ig'), - value: orderBy || '' - }, { - reg: new RegExp('@pageSize@', 'ig'), - value: pageSize - }, { - reg: new RegExp('@pageIndex@', 'ig'), - value: pageIndex - }) - } + regoptions.forEach(item => { + _dataresource = _dataresource.replace(item.reg, item.value) + param.custom_script = param.custom_script.replace(item.reg, item.value) + }) if (queryType === 'statistics') { // 缁熻鏁版嵁婧愶紝鍐呭鏇挎崲 - regoptions.forEach(item => { - _dataresource = _dataresource.replace(item.reg, item.value) - }) _search = '' } @@ -1008,27 +1025,26 @@ if (btn.Ot === 'requiredOnce' && selectedData && selectedData.length > 0) { primaryId = selectedData.map(d => d.$$uuid || '').filter(Boolean).join(',') if (_search && primaryId) { - _search += ` and ${primaryKey} in (select ID from dbo.SplitComma('${primaryId}'))` + _search += ` and ${primaryKey} in (select ID from dbo.SplitComma('${primaryId}'))` } else if (primaryId) { - _search = `where ${primaryKey} in (select ID from dbo.SplitComma('${primaryId}'))` + _search = `where ${primaryKey} in (select ID from dbo.SplitComma('${primaryId}'))` } } let LText = '' - if (defaultSql !== 'false' && !pagination) { - LText = ` select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows ` + if (custompage) { + LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` + } else if (defaultSql !== 'false' && !pagination) { + LText = `/*system_query*/select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows ` } else if (defaultSql !== 'false') { - LText = ` select top ${pageSize} ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows ` + LText = `/*system_query*/select top ${pageSize} ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows ` } if (param.custom_script) { param.custom_script = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${param.custom_script} ` - regoptions.forEach(item => { - param.custom_script = param.custom_script.replace(item.reg, item.value) - }) if (LText) { LText += ` @@ -1065,7 +1081,7 @@ param.custom_script = param.custom_script.replace(/@typename@/ig, `'admin'`) // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 - if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { + if (window.GLOB.debugger === true) { param.custom_script && console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`) LText && console.info(LText) } @@ -1075,6 +1091,8 @@ param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt(param.LText, param.timestamp) param.DateCount = '' + param.username = userName + param.fullname = fullName if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) @@ -1091,20 +1109,20 @@ * 4銆佹ā鎬佹鎵ц鎴愬姛鍚庢槸鍚﹀叧闂� * 5銆侀�氱煡涓诲垪琛ㄥ埛鏂� */ - execSuccess = (res) => { + execSuccess = (res = {}) => { const { btn } = this.props - if (res && (res.ErrCode === 'S' || !res.ErrCode)) { // 鎵ц鎴愬姛 + if (res.ErrCode === 'S' || !res.ErrCode) { // 鎵ц鎴愬姛 notification.success({ top: 92, - message: res.ErrMesg || this.state.dict['main.action.confirm.success'], + message: res.message || '鎵ц鎴愬姛锛�', duration: btn.verify && btn.verify.stime ? btn.verify.stime : 2 }) - } else if (res && res.ErrCode === 'Y') { // 鎵ц鎴愬姛 + } else if (res.ErrCode === 'Y') { // 鎵ц鎴愬姛 Modal.success({ - title: res.ErrMesg || this.state.dict['main.action.confirm.success'] + title: res.message || '鎵ц鎴愬姛锛�' }) - } else if (res && res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず + } else if (res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず } @@ -1118,12 +1136,26 @@ MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, '', []) } - btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId) + if (btn.syncComponentId) { + if (btn.syncComponentId === 'multiComponent') { + btn.syncComponentIds.forEach((id, i) => { + setTimeout(() => { + MKEmitter.emit('reloadData', id) + }, 20 * i) + }) + } else { + MKEmitter.emit('reloadData', btn.syncComponentId) + } + } if (btn.switchTab && btn.switchTab.length > 0) { let id = btn.switchTab[btn.switchTab.length - 1] let node = document.getElementById('tab' + id) node && node.click() + } + + if (btn.execSuccess === 'popclose' && btn.$tabId) { // 鏍囩鍏抽棴鍒锋柊 + MKEmitter.emit('refreshPopButton', btn.$tabId) } } @@ -1133,28 +1165,32 @@ * 2銆乪xcel瀵煎嚭锛屽け璐ュ悗鍙栨秷瀵煎嚭鎸夐挳鍔犺浇涓姸鎬� * 3銆侀�氱煡涓诲垪琛ㄥ埛鏂� */ - execError = (res) => { + execError = (res = {}) => { const { btn } = this.props + + if (!['LoginError', 'C', '-2', 'E', 'N', 'F', 'NM'].includes(res.ErrCode)) { + res.ErrCode = 'E' + } if (res.ErrCode === 'E') { Modal.error({ - title: res.message || res.ErrMesg, + title: res.message || '鎵ц澶辫触锛�', }) } else if (res.ErrCode === 'N') { notification.error({ top: 92, - message: res.message || res.ErrMesg, + message: res.message || '鎵ц澶辫触锛�', duration: btn.verify && btn.verify.ntime ? btn.verify.ntime : 10 }) } else if (res.ErrCode === 'F') { notification.error({ className: 'notification-custom-error', top: 92, - message: res.message || res.ErrMesg, + message: res.message || '鎵ц澶辫触锛�', duration: btn.verify && btn.verify.ftime ? btn.verify.ftime : 10 }) } else if (res.ErrCode === 'NM') { - message.error(res.message || res.ErrMesg) + message.error(res.message || '鎵ц澶辫触锛�') } this.setState({ @@ -1165,6 +1201,10 @@ MKEmitter.emit('popclose') } else if (btn.execError !== 'never') { MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn, '', []) + } + + if (btn.execError === 'popclose' && btn.$tabId) { // 鏍囩鍏抽棴鍒锋柊 + MKEmitter.emit('refreshPopButton', btn.$tabId) } } @@ -1201,6 +1241,7 @@ return ( <Button type={type} + id={'button' + btn.uuid} title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')} loading={loading} disabled={disabled} -- Gitblit v1.8.0