Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/departmentMonthlyView.js =================================================================== diff -u -r35631 -r35654 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/departmentMonthlyView.js (.../departmentMonthlyView.js) (revision 35631) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/departmentMonthlyView.js (.../departmentMonthlyView.js) (revision 35654) @@ -10,6 +10,231 @@ var departSearchName = "科室"; var limitDepart = true; var departMode; + +function getTableHtml(data) { + if (sstsConfig.enableWheterToChargeFieldOfDisposableGoods) { + var headerArr = {}; + var headerColumn = [{ + name: '一次性物品总价_可收费', + displayName: '一次性物品总价', + value: 0.0000 + }, { + name: '一次性物品总价_不可收费', + displayName: '一次性物品总价', + value: 0.0000 + }, { + name: '一次性物品总价_总价', + displayName: '一次性物品总价', + colspan: 3, + value: 0.0000 + }, { + name: '发货材料总价', + displayName: '发货材料总价', + rowspan: 2, + value: 0.0000 + }, { + name: '器械包总价', + displayName: '器械包总价', + rowspan: 2, + value: 0.0000 + }, { + name: '总价合计', + displayName: '总价合计', + value: 0.0000 + }, { + name: '一次性物品数量_可收费', + displayName: '一次性物品数量', + value: 0 + }, { + name: '一次性物品数量_不可收费', + displayName: '一次性物品数量', + value: 0 + }, { + name: '一次性物品数量_总数量', + displayName: '一次性物品数量', + colspan: 3, + value: 0 + }, { + name: '发货材料数量', + displayName: '发货材料数量', + rowspan: 2, + value: 0 + }, { + name: '器械包数量', + displayName: '器械包数量', + rowspan: 2, + value: 0 + }, { + name: '数量合计', + displayName: '数量合计', + value: 0 + }] + if (data.length > 0) { + for (var i = 0; i < data.length; i++) { + var department = data[i].department; + var columnName = data[i].columnName; + if (!headerArr[department]) { + headerArr[department] = {} + for (var j = 0; j < headerColumn.length; j++) { + headerArr[department][headerColumn[j].name] = headerColumn[j].value + } + } + if (columnName.indexOf('总价') >= 0) { + headerArr[department][columnName] = data[i].money + if (columnName.indexOf('一次性物品') >= 0) { + headerArr[department]['一次性物品总价_总价'] += data[i].money + } + headerArr[department]['总价合计'] += data[i].money + } else if (columnName.indexOf('数量') >= 0) { + headerArr[department][columnName] = data[i].amount + if (columnName.indexOf('一次性物品') >= 0) { + headerArr[department]['一次性物品数量_总数量'] += data[i].amount + } + headerArr[department]['数量合计'] += data[i].amount + } + } + } + var tableHtml = ''; + var tableWidth = 'auto' + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < headerColumn.length; i++) { + if (headerColumn[i].name !== '总价合计' && headerColumn[i].name !== '数量合计' && headerColumn[i].name.indexOf('可收费') == -1) { + if (headerColumn[i].rowspan && !headerColumn[i].colspan) { + tableHtml += ""; + } else if (!headerColumn[i].rowspan && headerColumn[i].colspan) { + tableHtml += ""; + } else if (headerColumn[i].rowspan && headerColumn[i].colspan) { + tableHtml += ""; + } else { + tableHtml += ""; + } + } + } + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for (var item in headerArr) { + tableHtml += ""; + tableHtml += ""; + var child = headerArr[item]; + for (var i = 0; i < headerColumn.length; i++) { + var columnName = headerColumn[i].name; + var value = child[columnName]; + if (columnName.indexOf('总价') >= 0) { + value = parseFloat(value).toFixed(4) + } else if (columnName.indexOf('数量') >= 0) { + value = parseInt(value) + } + tableHtml += ""; + } + tableHtml += ""; + } + tableHtml += ""; + } else { + var headerArr = {}; + var headerColumn = [{ + name: '一次性物品总价', + value: 0.0000 + }, { + name: '发货材料总价', + value: 0.0000 + }, { + name: '器械包总价', + value: 0.0000 + }, { + name: '总价合计', + value: 0.0000 + }, { + name: '一次性物品数量', + value: 0 + }, { + name: '发货材料数量', + value: 0 + }, { + name: '器械包数量', + value: 0 + }, { + name: '数量合计', + value: 0 + }] + if (data.length > 0) { + for (var i = 0; i < data.length; i++) { + var department = data[i].department; + var columnName = data[i].columnName; + if (!headerArr[department]) { + headerArr[department] = {} + for (var j = 0; j < headerColumn.length; j++) { + headerArr[department][headerColumn[j].name] = headerColumn[j].value + } + } + if (columnName.indexOf('总价') >= 0) { + headerArr[department][columnName] = data[i].money + headerArr[department]['总价合计'] += data[i].money + } else if (columnName.indexOf('数量') >= 0) { + headerArr[department][columnName] = data[i].amount + headerArr[department]['数量合计'] += parseInt(data[i].amount); + } + } + } + var tableHtml = ''; + var tableWidth = 'auto' + tableHtml += "
部门价格统计合计数量统计合计
" + headerColumn[i].displayName + "" + headerColumn[i].displayName + "" + columns[i][j].displayName + "" + columheaderColumnns[i].displayName + "
可收费不可收费总价可收费不可收费总数量
" + item + "" + value + "
"; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < headerColumn.length; i++) { + if (headerColumn[i].name !== '总价合计' && headerColumn[i].name !== '数量合计') { + tableHtml += ""; + } + } + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for (var item in headerArr) { + tableHtml += ""; + tableHtml += ""; + var child = headerArr[item]; + for (var i = 0; i < headerColumn.length; i++) { + var columnName = headerColumn[i].name; + var value = child[columnName]; + if (columnName.indexOf('总价') >= 0) { + value = parseFloat(value).toFixed(4) + } else if (columnName.indexOf('数量') >= 0) { + value = parseInt(value) + } + tableHtml += ""; + } + tableHtml += ""; + } + tableHtml += ""; + tableHtml += "
部门价格统计合计数量统计合计
" + headerColumn[i].name + "
" + item + "" + value + "
"; + } + return tableHtml; +} + Ext.onReady(function () { Ext.QuickTips.init(); if (sstsConfig.hasOwnProperty('enableMultipleBranchesOfHospital') && sstsConfig.enableMultipleBranchesOfHospital) { @@ -332,9 +557,46 @@ return params; } function reloadReport() { - var url = WWWROOT + '/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do'; + var url = WWWROOT + "/jasperreports/jasperreportsAction!queryDataSourceList.do"; var params = getParams(); - searchReport(url, params); + if (params.jasperreportName == 'monthReport.jasper') { + params.jasperreportName = null; + document.getElementById('thisIframe').style.display = 'none'; + document.getElementById('thisIframe2').style.display = 'block'; + var myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + Ext.Ajax.request({ + url: url, + async: false, + params: params, + success: function (response) { + var result = Ext.decode(response.responseText); + var title = result.parametMap.title; + if (result.data && result.data.length > 0) { + var tableHtml = "

" + title + "

"; + tableHtml += getTableHtml(result.data) + setTimeout(function () { + document.getElementById('thisIframe2').contentWindow.document.getElementById('table').innerHTML = tableHtml; + myMask.hide(); + }, 1000); + } else { + document.getElementById('thisIframe2').contentWindow.document.getElementById('table').innerHTML = ''; + myMask.hide(); + } + }, + failure: function (response, options) { + showResult(response.responseText); + myMask.hide(); + } + }); + } else { + document.getElementById('thisIframe').style.display = 'block'; + document.getElementById('thisIframe2').style.display = 'none'; + searchReport(url, params); + } } var columns = [ @@ -764,7 +1026,35 @@ autoScroll: true,//自动显示滚动条 collapsible: true,//允许展开和收缩 bodyPadding: 5, - html: '' + tbar: [{ + text: '导出', + id: 'exportButton', + handler: function () { + var html = document.getElementById('thisIframe2').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", + iframeName: 'thisIframe2', + html: html + } + exportMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在导出文件,请稍候!', + removeMask: true + }); + exportMask.show(); + setTimeout(function () { + exportReportExcel(data, '#thisIframe2'); + }, 1000); + } else { + showResult('暂无查询数据,无法导出!'); + } + } + }], + html: '' }); var viewport = new Ext.Viewport({