From 547e5fe219ee7bee309ecd67db74bc8df66b5433 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 23 八月 2023 11:47:45 +0800 Subject: [PATCH] 2023-08-23 --- src/views/billprint/index.jsx | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 159 insertions(+), 9 deletions(-) diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx index d125630..7779306 100644 --- a/src/views/billprint/index.jsx +++ b/src/views/billprint/index.jsx @@ -322,6 +322,10 @@ window.GLOB.CacheData.set(tempId, {$BID: BID}) + let initInters = [] + + this.formatInterSetting(config.interfaces, regs, initInters, params, BID) + config.components = config.components.map(component => { if (component.action) { component.action = component.action.filter(cell => { @@ -434,19 +438,31 @@ if (component.wrap && component.wrap.datatype === 'static') { component.format = '' + } else if (component.wrap && component.wrap.datatype === 'public') { + component.componentId = component.wrap.publicId + component.format = '' } if (!component.setting) return component // 涓嶄娇鐢ㄧ郴缁熷嚱鏁版椂 if (!component.format) return component // 娌℃湁鍔ㄦ�佹暟鎹� 鏁版嵁鏍煎紡 array 鎴� object + + component.setting.arr_field = component.columns ? component.columns.map(col => col.field).join(',') : '' + if (component.setting.interType !== 'system') { // 涓嶄娇鐢ㄧ郴缁熷嚱鏁版椂 component.setting.sync = 'false' return component } let _customScript = '' + let _tailScript = '' component.scripts && component.scripts.forEach(script => { - if (script.status !== 'false') { + if (script.status === 'false') return + if (script.position !== 'back') { _customScript += ` + ${script.sql} + ` + } else { + _tailScript += ` ${script.sql} ` } @@ -467,17 +483,21 @@ if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 component.setting.dataresource = component.setting.dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') + _tailScript = _tailScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') } else { component.setting.dataresource = component.setting.dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') _customScript = _customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') + _tailScript = _tailScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') } regs.forEach(cell => { component.setting.dataresource = component.setting.dataresource.replace(cell.reg, cell.value) _customScript = _customScript.replace(cell.reg, cell.value) + _tailScript = _tailScript.replace(cell.reg, cell.value) }) component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰 + component.setting.tailScript = _tailScript // 鍚庣疆鑷畾涔夎剼鏈� // floor 缁勪欢鐨勫眰绾� // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ @@ -485,9 +505,8 @@ component.dataName = 'mk' + component.uuid.slice(-18) let param = this.getDefaultParam(component) _pars.push(param) - } else { - let arr_field = component.columns.map(col => col.field).join(',') - let param = UtilsDM.getQueryDataParams(component.setting, arr_field, [], component.setting.order || '', 1, 1000, BID) + } else if (component.subtype !== 'dualdatacard') { + let param = UtilsDM.getQueryDataParams(component.setting, [], component.setting.order || '', 1, 1000, BID) param.componentId = component.uuid @@ -521,8 +540,10 @@ auto: config.printPage === 'auto', config }, () => { - if (params.length === 0) { + if (params.length === 0 && initInters.length === 0) { this.setState({loadingview: false, pages: [config.components]}) + } else if (initInters.length > 0) { + this.loadinit(initInters, params) } else { this.loadmaindata(params) } @@ -576,6 +597,92 @@ return cell } + formatInterSetting = (inters, regs, initInters, params, BID) => { + if (!inters) return [] + + let delay = 15 + inters.forEach(inter => { + if (inter.status !== 'true') return + + inter.setting.delay = delay + delay += 15 + + inter.setting.supModule = '' + inter.setting.arr_field = inter.columns.map(col => col.field).join(',') + + if (inter.setting.interType !== 'system') { + let param = UtilsDM.getQueryDataParams(inter.setting, [], inter.setting.order || '', 1, 1000, BID) + + param.componentId = inter.uuid + + if (inter.setting.loadlevel === 'init') { + initInters.push(param) + } else { + param.public = true + params.push(param) + } + return + } + + let _customScript = '' + let _tailScript = '' + inter.scripts.forEach(script => { + if (script.status === 'false') return + if (script.position !== 'back') { + _customScript += ` + ${script.sql} + ` + } else { + _tailScript += ` + ${script.sql} + ` + } + }) + delete inter.scripts + + inter.setting.$name = '鍏叡鏁版嵁婧�-' + inter.setting.name + inter.setting.execute = inter.setting.execute !== 'false' + inter.setting.laypage = true + + if (!inter.setting.execute) { + inter.setting.dataresource = '' + } + if (/\s/.test(inter.setting.dataresource)) { + inter.setting.dataresource = '(' + inter.setting.dataresource + ') tb' + } + + if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 + inter.setting.dataresource = inter.setting.dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') + _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') + _tailScript = _tailScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') + } else { + inter.setting.dataresource = inter.setting.dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') + _customScript = _customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') + _tailScript = _tailScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') + } + + regs.forEach(cell => { + inter.setting.dataresource = inter.setting.dataresource.replace(cell.reg, cell.value) + _customScript = _customScript.replace(cell.reg, cell.value) + _tailScript = _tailScript.replace(cell.reg, cell.value) + }) + + inter.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰 + inter.setting.tailScript = _tailScript // 鍚庣疆鑷畾涔夎剼鏈� + + let param = UtilsDM.getQueryDataParams(inter.setting, [], inter.setting.order || '', 1, 1000, BID) + + param.componentId = inter.uuid + + if (inter.setting.loadlevel === 'init') { + initInters.push(param) + } else { + param.public = true + params.push(param) + } + }) + } + reload = () => { const { tempId } = this.state @@ -598,14 +705,13 @@ getDefaultParam = (component) => { const { columns, setting, dataName, format } = component - let arr_field = columns.map(col => col.field) let _dataresource = setting.dataresource let _customScript = setting.customScript if (setting.order && _dataresource) { - _dataresource = `select top 1000 ${arr_field.join(',')} from (select ${arr_field.join(',')} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows ` + _dataresource = `select top 1000 ${setting.arr_field} from (select ${setting.arr_field} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows ` } else if (_dataresource) { - _dataresource = `select top 1000 ${arr_field.join(',')} from ${_dataresource} ` + _dataresource = `select top 1000 ${setting.arr_field} from ${_dataresource} ` } // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 @@ -678,6 +784,40 @@ return param } + loadinit = (initInters, params) => { + let deffers = initInters.map(item => { + let componentId = item.componentId + delete item.componentId + return new Promise(resolve => { + Api.genericInterface(item).then(res => { + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + resolve() + } else { + let _data = { $$empty: true } + if (res.data && res.data[0]) { + _data = res.data[0] + } + window.GLOB.CacheData.set(componentId, _data) + } + resolve() + }) + }) + }) + + Promise.all(deffers).then(() => { + if (params.length === 0) { + this.setState({loadingview: false, pages: [this.state.config.components]}) + } else { + this.loadmaindata(params) + } + }) + } + /** * @description 涓昏〃鏁版嵁鍔犺浇 */ @@ -686,7 +826,9 @@ let deffers = params.map(item => { let componentId = item.componentId + let ispublic = item.public delete item.componentId + delete item.public return new Promise(resolve => { Api.genericInterface(item).then(res => { if (!res.status) { @@ -698,6 +840,14 @@ resolve(false) } else { res.componentId = componentId + + if (ispublic) { + let _data = { $$empty: true } + if (res.data && res.data[0]) { + _data = res.data[0] + } + window.GLOB.CacheData.set(componentId, _data) + } resolve(res) } }) @@ -718,7 +868,7 @@ } _results.forEach(res => { - if (res.componentId === item.uuid && res.data) { + if ((res.componentId === item.uuid || res.componentId === item.componentId) && res.data) { item.dataArray = fromJS(res.data).toJS() } else if (res.componentId === 'union' && res[item.dataName]) { let data = res[item.dataName] -- Gitblit v1.8.0