Index: ssts-web/src/main/webapp/disinfectsystem/config/gzzyyfs/config.js =================================================================== diff -u -r33653 -r35388 --- ssts-web/src/main/webapp/disinfectsystem/config/gzzyyfs/config.js (.../config.js) (revision 33653) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzzyyfs/config.js (.../config.js) (revision 35388) @@ -69,6 +69,8 @@ enableUseRecordByChiefSurgeonDoctorsAccountingDepartment:true, //启用一次性物品定义的是否收费字段 enableWheterToChargeFieldOfDisposableGoods:true, + //器械包工作量统计报表扩展列配置 + extendedColumnConfigOfTousseWork:["tousseGroupName","urgentAmount","packagingAmount"], //是否启用加急功能 enableUrgentFunction:true } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/tousseWorkLoadView.js =================================================================== diff -u -r35382 -r35388 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/tousseWorkLoadView.js (.../tousseWorkLoadView.js) (revision 35382) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/tousseWorkLoadView.js (.../tousseWorkLoadView.js) (revision 35388) @@ -1,6 +1,323 @@ var entityName = sstsConfig.tousseWorkLoadName ? sstsConfig.tousseWorkLoadName : "器械包工作量统计报表"; var form; +var widthArr = []; +var tousseGroupNameConfig = false; +var urgentAmountConfig = false; +var packagingAmountConfig = false; +var is2Column = true; +if (sstsConfig.extendedColumnConfigOfTousseWork) { + if (sstsConfig.extendedColumnConfigOfTousseWork.indexOf("tousseGroupName") >= 0) { + tousseGroupNameConfig = true; + } + if (sstsConfig.extendedColumnConfigOfTousseWork.indexOf("urgentAmount") >= 0) { + urgentAmountConfig = true; + } + if (sstsConfig.extendedColumnConfigOfTousseWork.indexOf("packagingAmount") >= 0) { + packagingAmountConfig = true; + } +} + +function getTableHtml(result, statType) { + var materialColumnName = ""; + if (result.parametMap) { + materialColumnName = result.parametMap.materialColumnName; + } + var html = ""; + html += ""; + html += getTableHeadHtml(materialColumnName, statType); + html += ""; + html += ""; + html += getTableBodyHtml(result.data, statType); + html += ""; + html += "
"; + return html; +} +//获取表内容的html +function getTableBodyHtml(data, statType) { + var html = ''; + var tousseAmount = 0; + var tousseGroupAmount = 0; + var applicationAmountSum = 0; + var recycleAmountSum = 0; + var inventoryAmountSum = 0; + var inventoryMaterialAmountSum = 0; + var washAmountSum = 0; + var washMaterialAmountSum = 0; + var packingAmountSum = 0; + var packingMaterialAmountSum = 0; + var reviewAmountSum = 0; + var sterilizationAmountSum = 0; + var invoiceAmountSum = 0; + var invoiceMaterialAmountSum = 0; + var packagingAmountSum = 0; + var packagingMaterialAmountSum = 0; + var signAmountSum = 0; + var urgentAmountSum = 0; + var tousseGroupArr = []; + for (var i = 0; i < data.length; i++) { + var dataItem = data[i]; + var childrens = dataItem.childrens; + for (var j = 0; j < childrens.length; j++) { + var childrensItem = childrens[j]; + html += ''; + if (j == 0) { + html += getBodyTd(dataItem.tousseType, childrens.length, 1); + } + if (statType == 'detailQuery') { + html += getBodyTd(childrensItem.tousseName, 1, 1); + if (tousseGroupNameConfig) { + html += getBodyTd(childrensItem.tousseGroupName, 1, 1); + if (childrensItem.tousseGroupName !== '') { + if (tousseGroupArr.indexOf(childrensItem.tousseGroupName) == -1) { + tousseGroupArr.push(childrensItem.tousseGroupName) + tousseGroupAmount++; + } + } + } + } + html += getBodyTd(childrensItem.applicationAmount, 1, 1); + html += getBodyTd(childrensItem.recycleAmount, 1, 1); + html += getBodyTd(childrensItem.inventoryAmount, 1, 1); + html += getBodyTd(childrensItem.inventoryMaterialAmount, 1, 1); + html += getBodyTd(childrensItem.washAmount, 1, 1); + html += getBodyTd(childrensItem.washMaterialAmount, 1, 1); + html += getBodyTd(childrensItem.packingAmount, 1, 1); + html += getBodyTd(childrensItem.packingMaterialAmount, 1, 1); + if (packagingAmountConfig) { + html += getBodyTd(childrensItem.packagingAmount, 1, 1); + html += getBodyTd(childrensItem.packagingMaterialAmount, 1, 1); + } + html += getBodyTd(childrensItem.reviewAmount, 1, 1); + html += getBodyTd(childrensItem.sterilizationAmount, 1, 1); + html += getBodyTd(childrensItem.invoiceAmount, 1, 1); + html += getBodyTd(childrensItem.invoiceMaterialAmount, 1, 1); + if (urgentAmountConfig) { + html += getBodyTd(childrensItem.urgentAmount || 0, 1, 1); + urgentAmountSum += childrensItem.urgentAmount || 0; + } + html += getBodyTd(childrensItem.signAmount, 1, 1); + html += ''; + tousseAmount++; + applicationAmountSum += childrensItem.applicationAmount; + recycleAmountSum += childrensItem.recycleAmount; + inventoryAmountSum += childrensItem.inventoryAmount; + inventoryMaterialAmountSum += childrensItem.inventoryMaterialAmount; + washAmountSum += childrensItem.washAmount; + washMaterialAmountSum += childrensItem.washMaterialAmount; + packingAmountSum += childrensItem.packingAmount; + packingMaterialAmountSum += childrensItem.packingMaterialAmount; + reviewAmountSum += childrensItem.reviewAmount; + sterilizationAmountSum += childrensItem.sterilizationAmount; + invoiceAmountSum += childrensItem.invoiceAmount; + invoiceMaterialAmountSum += childrensItem.invoiceMaterialAmount; + packagingAmountSum += childrensItem.packagingAmount; + packagingMaterialAmountSum += childrensItem.packagingMaterialAmount; + signAmountSum += childrensItem.signAmount; + } + } + html += ''; + html += getHeadTd('合计', '', 1, 1); + if (statType == 'detailQuery') { + html += getHeadTd(tousseAmount, '', 1, 1); + if (tousseGroupNameConfig) { + html += getHeadTd(tousseGroupAmount, 1, 1); + } + } + html += getHeadTd(applicationAmountSum, '', 1, 1); + html += getHeadTd(recycleAmountSum, '', 1, 1); + html += getHeadTd(inventoryAmountSum, '', 1, 1); + html += getHeadTd(inventoryMaterialAmountSum, '', 1, 1); + html += getHeadTd(washAmountSum, '', 1, 1); + html += getHeadTd(washMaterialAmountSum, '', 1, 1); + html += getHeadTd(packingAmountSum, '', 1, 1); + html += getHeadTd(packingMaterialAmountSum, '', 1, 1); + if (packagingAmountConfig) { + html += getHeadTd(packagingAmountSum, '', 1, 1); + html += getHeadTd(packagingMaterialAmountSum, '', 1, 1); + } + html += getHeadTd(reviewAmountSum, '', 1, 1); + html += getHeadTd(sterilizationAmountSum, '', 1, 1); + html += getHeadTd(invoiceAmountSum, '', 1, 1); + html += getHeadTd(invoiceMaterialAmountSum, '', 1, 1); + if (urgentAmountConfig) { + html += getHeadTd(urgentAmountSum, '', 1, 1); + } + html += getHeadTd(signAmountSum, '', 1, 1); + html += ''; + return html; +} +//获取表头html +function getTableHeadHtml(materialColumnName, statType) { + var html = ''; + var columnNameArray = getTableHeaderColumnArray(materialColumnName, statType); + html += ''; + for (var i = 0; i < columnNameArray.length; i++) { + var item = columnNameArray[i]; + if (item.children) { + html += getHeadTd(item.name, item.width, 1, 2); + } else { + html += getHeadTd(item.name, item.width, 2, 1); + } + widthArr.push(columnNameArray[i].width); + } + html += ''; + html += ''; + for (var i = 0; i < columnNameArray.length; i++) { + var item = columnNameArray[i]; + if (item.children) { + for (var j = 0; j < item.children.length; j++) { + html += getHeadTd(item.children[j].name, item.children[j].width, 1, 1); + } + } + } + html += ''; + return html; +} +//获取表头列 +function getTableHeaderColumnArray(materialColumnName, statType) { + var columnNameArray = [{ + name: '器械包类型', + width: 80 + }]; + if (statType == 'detailQuery') { + columnNameArray.push({ + name: '器械包名称', + width: 120 + }) + if (tousseGroupNameConfig) { + columnNameArray.push({ + name: '器械包分组', + width: 120 + }) + } + } + columnNameArray.push({ + name: '申请数量', + width: 80 + }, { + name: '回收数量', + width: 80 + }, { + name: '清点数量', + width: 120, + children: [{ + name: '包数', + width: 60 + }, { + name: '件数', + width: 60 + }] + }, { + name: '清洗数量', + width: 120, + children: [{ + name: '包数', + width: 60 + }, { + name: '件数', + width: 60 + }] + }, { + name: '装配数量', + width: 120, + children: [{ + name: '包数', + width: 60 + }, { + name: '件数', + width: 60 + }] + }) + if (packagingAmountConfig) { + columnNameArray.push({ + name: '包装数量', + width: 120, + children: [{ + name: '包数', + width: 60 + }, { + name: '件数', + width: 60 + }] + }) + } + columnNameArray.push({ + name: '审核数量', + width: 80 + }, { + name: '灭菌数量', + width: 80 + }, { + name: '发货数量', + width: 120, + children: [{ + name: '包数', + width: 60 + }, { + name: '件数', + width: 60 + }] + }) + if (urgentAmountConfig) { + columnNameArray.push({ + name: '加急数量', + width: 80 + }) + } + columnNameArray.push({ + name: '签收数量', + width: 80 + }) + return columnNameArray; +} + +//获取表头的td +function getHeadTd(name, width, rowspan, colspan) { + var html = '' + name + ''; + return html; +} + +//获取表格的td +function getBodyTd(value, rowspan, colspan, background) { + var html = '' + value + ''; + return html; +} + +//判断是否IE浏览器 +function isIE() { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + return true; + } else { + return false; + } +} + +function exportExcel(data, thisID) { + var fileName = data.fileName + data.fileType; + if (isIE()) { + var tableHtml = ''; + tableHtml += data.html; + tableHtml += ''; + tableHtml = Base64.encode(encodeURI(tableHtml)); + var htmlTable = LZString.compressToEncodedURIComponent(tableHtml) + var jsFileName = "\\disinfectsystem\\reportforms\\js\\LZString.js"; + document.getElementById('thisIframe').contentWindow.document.getElementById('htmlFileName').value = fileName; + document.getElementById('thisIframe').contentWindow.document.getElementById('jsFileName').value = jsFileName; + document.getElementById('thisIframe').contentWindow.document.getElementById('htmlTable').value = htmlTable; + document.getElementById('thisIframe').contentWindow.document.getElementById('submitForm').click(); + exportMask.hide(); + } else { + XSExport.excelExport( + thisID, + data.fileName, + is2Column, + widthArr + ); + exportMask.hide(); + } +} + /** * 加载报表的数据 * @@ -56,7 +373,7 @@ jasperreportName = 'tousseWorkLoadSum.jasper'; } } - var url = WWWROOT + '/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do'; + var url = WWWROOT + '/jasperreports/jasperreportsAction!queryDataSourceList.do'; var params = { jasperreportName: jasperreportName, startDay: startTime, @@ -84,7 +401,22 @@ params.instrumentSetTypes = instrumentSetTypes; } - searchReport(url, params); + Ext.Ajax.request({ + url: url, + async: false, + params: params, + success: function (response) { + var result = Ext.decode(response.responseText); + title = result.parametMap.title; + var tableHtml = "

" + title + "

"; + tableHtml += getTableHtml(result, statType); + document.getElementById('thisIframe').contentWindow.document.getElementById('table').innerHTML = tableHtml; + myMask.hide(); + }, + failure: function (response, options) { + showResult(response.responseText); + } + }); } @@ -733,7 +1065,31 @@ autoScroll: true,//自动显示滚动条 collapsible: true,//允许展开和收缩 bodyPadding: 5, - html: '' + tbar: [{ + text: '导出', + handler: function () { + var html = document.getElementById('thisIframe').contentWindow.document.getElementById('table').innerHTML; + if (html !== '') { + var startTime = $Id('startTime').value; + var endTime = $Id('endTime').value; + var title = '器械包工作量统计报表(' + startTime + ' ~ ' + endTime + ')'; + var data = { + fileName: title, + fileType: ".xls",//文档类型 经测试 可以doc xls html 其他的自己去试 + html: html + } + exportMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在导出文件,请稍候!', + removeMask: true + }); + exportMask.show(); + setTimeout(function () { + exportExcel(data, document.getElementById('thisIframe').contentWindow.document.getElementById('table')); + }, 1000); + } + } + }], + html: '' }); Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/tousseWorkLoadView.jsp =================================================================== diff -u -r29513 -r35388 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/tousseWorkLoadView.jsp (.../tousseWorkLoadView.jsp) (revision 29513) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/tousseWorkLoadView.jsp (.../tousseWorkLoadView.jsp) (revision 35388) @@ -17,7 +17,14 @@ - + + + + + + + +