From 5fdcdee11c98892955a4ea6e5371256dd5ed7c88 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 25 十月 2023 21:30:16 +0800 Subject: [PATCH] 2023-10-25 --- src/views/billprint/index.jsx | 229 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 211 insertions(+), 18 deletions(-) diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx index cca0591..f7d3a35 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 => { @@ -354,7 +358,20 @@ if (component.type === 'table') { let getColumns = (cols) => { return cols.filter(item => { - if (item.type === 'colspan') { + if (item.Hide === 'true') return false + + if (item.type === 'number') { + if (typeof(item.decimal) === 'number') { + item.round = Math.pow(10, item.decimal) + if (item.format === 'percent') { + item.decimal = item.decimal > 2 ? item.decimal - 2 : 0 + } + } + } else if (item.type === 'formula') { + if (typeof(item.decimal) === 'number') { + item.round = Math.pow(10, item.decimal) + } + } else if (item.type === 'colspan') { item.subcols = getColumns(item.subcols) if (item.subcols.length === 0) { return false @@ -434,19 +451,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 +496,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 +518,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 +553,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) } @@ -561,6 +595,11 @@ resetElement = (cell) => { cell.style = cell.style || {} + + if (cell.style.display === 'inline-block') { + cell.style.verticalAlign = 'top' + } + if (['text', 'number', 'formula'].includes(cell.eleType)) { cell.innerHeight = cell.innerHeight || 'auto' cell.alignItems = cell.height > 1 ? cell.alignItems : '' @@ -570,10 +609,98 @@ if (cell.format === 'percent') { cell.decimal = cell.decimal > 2 ? cell.decimal - 2 : 0 } + } else if (cell.eleType === 'formula' && typeof(cell.decimal) === 'number') { + cell.round = Math.pow(10, cell.decimal) } } 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 = () => { @@ -598,26 +725,20 @@ 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} ` - } - - // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 - if (window.GLOB.debugger === true) { - _customScript && console.info(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) - _dataresource && console.info(_dataresource) + _dataresource = `select top 1000 ${setting.arr_field} from ${_dataresource} ` } return { name: dataName, columns: columns, par_tablename: '', + order: setting.order || '', type: format === 'array' ? format : '', primaryKey: setting.primaryKey || '', foreign_key: '', @@ -644,6 +765,18 @@ let district = sessionStorage.getItem('district') || '' let address = sessionStorage.getItem('address') || '' + let regoptions = [ + { reg: /@pageSize@/ig, value: 9999 }, + { reg: /@pageIndex@/ig, value: 1}, + { reg: /@ID@/ig, value: `''`}, + { reg: /@BID@/ig, value: `'${BID || ''}'`}, + { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, + { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, + { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, + { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, + { reg: /@typename@/ig, value: `'admin'`}, + ] + let LText = params.map((item, index) => { let _sql = item.sql let _script = item.script @@ -653,6 +786,20 @@ 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}' ${_script} ` + } + + _sql = _sql.replace(/@orderBy@/ig, item.order) + _script = _script.replace(/@orderBy@/ig, item.order) + + regoptions.forEach(cell => { + _sql = _sql.replace(cell.reg, cell.value) + _script = _script.replace(cell.reg, cell.value) + }) + + // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 + if (window.GLOB.debugger === true) { + _script && console.info(`${_sql ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_script}`) + _sql && console.info(_sql) } item.columns.forEach(cell => { @@ -678,6 +825,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 +867,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 +881,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 +909,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] @@ -882,7 +1073,7 @@ if (!res.status) { notification.warning({ top: 92, - message: res.message, + message: res.message || '鎵ц澶辫触锛�', duration: 5 }) @@ -890,9 +1081,11 @@ return } + let refresh = !/@no_target_menu@/i.test(res.message) + this.setState({loading: false}) - if (pageId) { + if (pageId && refresh) { localStorage.setItem('menuUpdate', new Date().getTime() + ',' + pageId + ',menu') } -- Gitblit v1.8.0