Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/foreignTousseSupplierStatisticsReport.js =================================================================== diff -u -r33278 -r33283 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/foreignTousseSupplierStatisticsReport.js (.../foreignTousseSupplierStatisticsReport.js) (revision 33278) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/foreignTousseSupplierStatisticsReport.js (.../foreignTousseSupplierStatisticsReport.js) (revision 33283) @@ -131,63 +131,78 @@ //按日期归类 function newArr(data) { - var dest = []; - var map = {}; + var dateStrMap = {}; + var supplierNameMap = {}; for (var i = 0; i < data.length; i++) { var ai = data[i]; - if (!map[ai.dateStr]) { - ai.items = [ai]; - dest.push(ai); - map[ai.dateStr] = ai; + if (!dateStrMap[ai.dateStr]) { + dateStrMap[ai.dateStr] = { + rowspan: 1 + } } else { - for (var j = 0; j < dest.length; j++) { - var dj = dest[j]; - if (dj.dateStr == ai.dateStr) { - dj.items.push(ai); - } + var rowspan = dateStrMap[ai.dateStr].rowspan; + dateStrMap[ai.dateStr].rowspan = rowspan + 1; + } + if (!supplierNameMap[ai.dateStr + ',' + ai.supplierName]) { + supplierNameMap[ai.dateStr + ',' + ai.supplierName] = { + rowspan: 1 } + } else { + var rowspan = supplierNameMap[ai.dateStr + ',' + ai.supplierName].rowspan; + supplierNameMap[ai.dateStr + ',' + ai.supplierName].rowspan = rowspan + 1; } } - return dest; + return { + dateStrMap: dateStrMap, + supplierNameMap: supplierNameMap + }; } //按日期汇总 -function getTableBodyHtmlForReportType(data2) { - var data = newArr(data2); +function getTableBodyHtmlForReportType(data) { var html = ''; var allToolAmount = 0; var allImplantAmount = 0; var allSumCount = 0; var allBigTousseAmount = 0; var allSmallTousseAmount = 0; var allSterilizationTousseAmount = 0; + var map = newArr(data); + var dateStrMap = map.dateStrMap; + var newDateStrMap = {}; + var supplierNameMap = map.supplierNameMap; + var newSupplierNameMap = {}; for (var i = 0; i < data.length; i++) { - for (var j = 0; j < data[i].items.length; j++) { - var toolAmount = data[i].items[j].toolAmount; - var implantAmount = data[i].items[j].implantAmount; - var sumCount = toolAmount + implantAmount; - var bigTousseAmount = data[i].items[j].bigTousseAmount; - var smallTousseAmount = data[i].items[j].smallTousseAmount; - var sterilizationTousseAmount = data[i].items[j].sterilizationTousseAmount; - html += ''; - if (j == 0) { - html += getBodyTd(data[i].items[j].dateStr, data[i].items.length, 1); - } - html += getBodyTd(data[i].items[j].supplierName, 1, 1); - html += getBodyTd(toolAmount, 1, 1); - html += getBodyTd(implantAmount, 1, 1); - html += getBodyTd(sumCount, 1, 1); - html += getBodyTd(bigTousseAmount, 1, 1); - html += getBodyTd(smallTousseAmount, 1, 1); - html += getBodyTd(sterilizationTousseAmount, 1, 1); - allToolAmount += toolAmount; - allImplantAmount += implantAmount; - allSumCount += sumCount; - allBigTousseAmount += bigTousseAmount; - allSmallTousseAmount += smallTousseAmount; - allSterilizationTousseAmount += sterilizationTousseAmount; - html += ''; + var toolAmount = data[i].toolAmount; + var implantAmount = data[i].implantAmount; + var sumCount = toolAmount + implantAmount; + var bigTousseAmount = data[i].bigTousseAmount; + var smallTousseAmount = data[i].smallTousseAmount; + var sterilizationTousseAmount = data[i].sterilizationTousseAmount; + html += ''; + if (!newDateStrMap[data[i].dateStr]) { + newDateStrMap[data[i].dateStr] = true; + var rowspan = dateStrMap[data[i].dateStr].rowspan; + html += getBodyTd(data[i].dateStr, rowspan, 1); } + if (!newSupplierNameMap[data[i].dateStr + ',' + data[i].supplierName]) { + newSupplierNameMap[data[i].dateStr + ',' + data[i].supplierName] = true; + var rowspan = supplierNameMap[data[i].dateStr + ',' + data[i].supplierName].rowspan; + html += getBodyTd(data[i].supplierName, rowspan, 1); + } + html += getBodyTd(toolAmount, 1, 1); + html += getBodyTd(implantAmount, 1, 1); + html += getBodyTd(sumCount, 1, 1); + html += getBodyTd(bigTousseAmount, 1, 1); + html += getBodyTd(smallTousseAmount, 1, 1); + html += getBodyTd(sterilizationTousseAmount, 1, 1); + allToolAmount += toolAmount; + allImplantAmount += implantAmount; + allSumCount += sumCount; + allBigTousseAmount += bigTousseAmount; + allSmallTousseAmount += smallTousseAmount; + allSterilizationTousseAmount += sterilizationTousseAmount; + html += ''; } //合计 html += ''; @@ -227,7 +242,7 @@ var startDate = Ext.getCmp('startDate').getRawValue(); var endDate = Ext.getCmp('endDate').getRawValue(); var supplierName = Ext.getCmp('supplierName').getRawValue(); - var customTimePeriodId = Ext.getCmp('customTimePeriodId').getValue(); + var customTimePeriodId = ($Id('customTimePeriodId').value == '') ? '' : Ext.getCmp('customTimePeriodId').getValue(); var reportType = Ext.getCmp('reportType').getValue(); myMask = new Ext.LoadMask(Ext.getBody(), {