Index: ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/print/printConfig.js =================================================================== diff -u -r13686 -r13783 --- ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/print/printConfig.js (.../printConfig.js) (revision 13686) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/print/printConfig.js (.../printConfig.js) (revision 13783) @@ -43,6 +43,55 @@ } } +var batchPrintInvoicesConfig = { + + headerFooter : [ + // 页眉名称 + {label : "番禺区中医院", dataIndex : '', fontSize : 10, position : ["5","1%","90%",5]}, + // 标题 + {label : "材料出库单", dataIndex : '', fontSize : 15, position : ["20","40%","99%",5]}, + {label : "部门:", dataIndex : 'depart', fontSize : 11, position : ["55","2%","90%",5]}, + {label : "单号:", dataIndex : 'serialNumber', fontSize : 11, position : ["55","35%","90%",5]}, + {label : "仓库:消毒供应中心", dataIndex : '', fontSize : 11, position : ["55","75%","90%",5]}, + {label : "制单人:", dataIndex : 'printUser', fontSize : 11, position : ["80","75%","90%",5]}, + {label : "申请时间:", dataIndex : 'applicationTime', fontSize : 11, position : ["80","35%","90%",5]}, + {label : "备注:", dataIndex : 'remark', fontSize : 11, position : ["80","2%","90%",5]}, + {label : "主管:", dataIndex : '', fontSize : 11, position : ["415","5%","90%",5]}, + {label : "领料人:", dataIndex : '', fontSize : 11, position : ["415","40%","90%",5]}, + {label : "发货员:", dataIndex : 'sender', fontSize : 11, position : ["415","75%","90%",5]}, + {label : "发货日期:", dataIndex : 'sendTime', fontSize : 11, position : ["445","5%","90%",5]}, + {barcodes : [ + {codeType : "128Auto", dataIndex : 'departBarcode', position : ["3mm","74%","40mm","8mm"], + styles : [{itemNameID: 0, styleName: 'ShowBarText', styleValue: true}, + {itemNameID: 0, styleName: 'FontSize', styleValue: 6}, + {itemNameID: 0, styleName: 'NotOnlyHighPrecision', styleValue: true} + ] + } + ]} + ], + currentPageNumber : {label : "第#页", fontSize : 11, position : ["445","75%","90%",5]}, + totalPageAmount : {label : "共&页", fontSize : 11, position : ["445","81%","90%",5]}, + goodsTable :{ + rowHeight : 25, + fontSize : 11, + position : ["100","2%","98%","7cm"], + headRepeat : true, + columns : [ + {header : "序号", dataIndex : 'serialNumber', width : 40, align : 'center', fontSize : 11}, + {header : "名称", dataIndex : 'name', width : 200, align : 'left', fontSize : 11}, + {header : "规格", dataIndex : 'specification', width : 150, align : 'center', fontSize : 11}, + {header : "单位", dataIndex : 'unit', width : 50, align : 'center', fontSize : 11}, + {header : "数量", dataIndex : 'amount', width : 50, align : 'right', fontSize : 11}, + {header : "有效日期", dataIndex : 'expireDate', width : 80, align : 'center', fontSize : 11}, + {header : "批号", dataIndex : 'batchNumber', width : 70, align : 'center', fontSize : 11}, + {header : "灭菌炉", dataIndex : 'sterilizerName', width : 150, align : 'center', fontSize : 11}, + {header : "炉次", dataIndex : 'frequency', width : 50, align : 'center', fontSize : 11}, + {header : "单价", dataIndex : 'price', width : 50, align : 'right', fontSize : 11}, + {header : "金额", dataIndex : 'totalPrice', width : 50, align : 'right', fontSize : 11} + ] + } +} + var invoiceComboPrintConfig = { headerFooter : [ // 页眉名称 @@ -81,6 +130,8 @@ {header : "规格", dataIndex : 'specification', width : 110, align : 'center', fontSize : 11}, {header : "批次/灭菌日期", dataIndex : 'batchNumber', width : 105, align : 'center', fontSize : 11}, {header : "失效日期", dataIndex : 'expireDate', width : 85, align : 'center', fontSize : 11}, + {header : "灭菌炉", dataIndex : 'sterilizerName', width : 85, align : 'center', fontSize : 11}, + {header : "炉次", dataIndex : 'frequency', width : 85, align : 'center', fontSize : 11}, {header : "单价", dataIndex : 'price', width : 60, align : 'right', fontSize : 11}, {header : "金额", dataIndex : 'totalPrice', width : 75, align : 'right', fontSize : 11} ] @@ -325,34 +376,7 @@ // 中标签配置 var middleLableConfig = { - customPrint:printMiddleLable_gzspyqzyy, - printDiposableGoods:true,// 是否打印一次性物品 - headerContent : [ -// {label : "", dataIndex : 'sterilingType', position : ["1mm","0mm","13mm","3mm"], type: 'html', beforeStr: "
", afterStr: "
"}, - //{label : "", dataIndex : 'sterilingType', position : ["32mm","1mm","26mm","3mm"], type: 'html', beforeStr: "
", afterStr: "
"}, - // 器械包名称,水平居中 - {label : "", dataIndex : 'name', position : ["0mm","14mm","RightMargin:0mm","5mm"], type: 'html', beforeStr: "
", afterStr: "
"}, - {label : "装配员:", dataIndex : 'operator', fontSize : 6, bold: 1, position : ["38mm","25mm","19mm","3mm"]}, - {label : "审核员:", dataIndex : 'reviewer', fontSize : 6, bold: 1, position : ["41mm","25mm","19mm","3mm"]}, - {label : "灭菌期:", dataIndex : 'sterilizationDate', fontSize : 6, bold: 1, position : ["38mm","1mm","26mm","3mm"]}, - {label : "失效期:", dataIndex : 'validDate', fontSize : 6, bold: 1, position : ["41mm","1mm","26mm","3mm"]}, - - {label : "", dataIndex : 'materials',LODOPFun:'ADD_PRINT_IMAGE',formatter:getMaterialsTabHtmlForMiddleLableConfig_zd5y, position : ["5mm","15mm","60mm","27mm"], type: 'html', beforeStr: "
", afterStr: "
"}, - {label : "器械总数:", dataIndex : 'materialAmount', fontSize : 6, bold: 1, position : ["32mm","45mm","30mm","3mm"]} - - -// {label : "", dataIndex : 'name', position : ["87mm","0mm","RightMargin:50mm","BottomMargin:0mm"], type: 'html', beforeStr: "
", afterStr: "
"}, -// {label : "", dataIndex : 'name', position : ["87mm","50mm","RightMargin:0mm","BottomMargin:0mm"], type: 'html', beforeStr: "
", afterStr: "
"} - - ], - barcodes : [ - {codeType : "128Auto", dataIndex : 'barcode', position : ["35mm","43mm","32mm","10mm"], - styles : [{itemNameID: 0, styleName: 'ShowBarText', styleValue: true}, - {itemNameID: 0, styleName: 'FontSize', styleValue: 6}, - {itemNameID: 0, styleName: 'NotOnlyHighPrecision', styleValue: true} - ] - } - ] + customPrint:printMiddleLable_gzspyqzyy } var middleLable_disinfectConfig = { customPrint:printMiddleLable_gzspyqzyy_disinfect @@ -407,6 +431,121 @@ for(var row = 0; row < rows;++row){ var addRow = 0; var index = cols * row; + while(index < cols * (row + 1)){ + if(index < materialsAmount){ + var addRow2 = nameRows(materials[index]); + addRow = (addRow > addRow2)?addRow:addRow2; + } + ++index; + } + addRow = addRow < 1?1:addRow; //至少有一行 + addTotalRow += (addRow - 1); + } + rows += addTotalRow; + if ( rows >= 23){ + fontSize = 8; + }else if(rows >= 18){ + fontSize = 9; + } + else if (rows >= 12){ + fontSize = 11; + } + else if (rows >= 10){ + fontSize = 12; + }else if (rows >= 8){ + fontSize = 12; + }else if (rows >= 6){ + fontSize = 12; + }else if (rows >= 4){ + fontSize = 12; + } + return fontSize; +} +//构造表格 +function getMaterialsTabHtml_largeLabel(tousse){ + //绘制材料明细表格 + var markTousse = tousse['markTousse']; + var materials = tousse.materials; + // 打印材料明细 + var materialsTab = ""; + var borderSize = 0; + + if(markTousse){ + //borderSize = 1; + } + + var materialsAmount = materials.length; + if(materials != null && materialsAmount > 0){ + var materialStr = ""; + var fontSize = getMaterialsFontSize_largeLabel(materials,2); +// alert(fontSize) +// materialStr += "名称"; +// materialStr += "数量"; +// materialStr += "名称"; +// materialStr += "数量"; +// materialStr += "#;"; + for (var i=0;i" + temp +" x " + material.count + ""; + } + if (materialsAmount % 3 != 0) { + for (var i = 0; i < (3 - materialsAmount % 3); i++) { + materialStr += (""); + } + } + + if (materialStr.length > 0) { + materialsTab += ""; + var materialArray = materialStr.split("#;"); + for (var i=0; i"; + } + materialsTab += "
"; + } + + } + //alert(materialsTab) + return materialsTab; +} + +/** + * 获取大标签中材料的字体大小。需要根据记录数计算大小,同时要考虑材料的名称,如果当前字体下,名称太长导致换行,则认为行数增加 + * @param materials 所有需要打印的材料 + * @param cols 材料的列数 如:名称 数量 名称 数量,这种情况下,cols为2,指一行的记录数 + */ +function getMaterialsFontSize_middleLabel(materials,cols){ + /** + * 计算材料名称列的行数(包括名称和规格) + */ + var nameRows = function(material){ + var temp = material.name; + // 不打印材料 + if (material.specification != null && material.specification != ""){ + temp += "[" + material.specification + "]"; + } + + var nameMaxLenthPerLine = 5; + return Math.ceil(temp.length / nameMaxLenthPerLine) ; // 向上取整 + } + + var materialsAmount = materials.length; + var fontSize = 10; + var rows = Math.ceil(materialsAmount / cols) ; // 向上取整 + var addTotalRow = 0; + for(var row = 0; row < rows;++row){ + var addRow = 0; + var index = cols * row; while(index < cols){ if(index < materialsAmount){ var addRow2 = nameRows(materials[index]); @@ -438,7 +577,7 @@ return fontSize; } //构造表格 -function getMaterialsTabHtml_largeLabel(tousse){ +function getMaterialsTabHtml_middleLabel(tousse){ //绘制材料明细表格 var markTousse = tousse['markTousse']; var materials = tousse.materials; @@ -453,7 +592,7 @@ var materialsAmount = materials.length; if(materials != null && materialsAmount > 0){ var materialStr = ""; - var fontSize = getMaterialsFontSize_largeLabel(materials,2); + var fontSize = getMaterialsFontSize_middleLabel(materials,2); // alert(fontSize) materialStr += "名称"; materialStr += "数量"; @@ -506,26 +645,26 @@ LODOP.SET_PRINT_STYLE('NotOnlyHighPrecision', true); var fontSize = getFontSizeByStr(obj.name,[ - {maxLen:10,fontSize:10}, - {maxLen:20,fontSize:8}, + {maxLen:10,fontSize:15}, + {maxLen:20,fontSize:11}, {maxLen:30,fontSize:8}, {maxLen:1000,fontSize:8} ]); LODOP.ADD_PRINT_TEXT("1mm","0mm","RightMargin:0mm","3mm", obj.name); setFontSizeBold(fontSize,1);// 设置字体 setAlignment('center');// 对齐 - LODOP.ADD_PRINT_TEXT("5mm","5mm","44mm","6mm", "灭菌:"+obj.sterilizationDate); - setFontSizeBold(9,0);// 设置字体 - LODOP.ADD_PRINT_TEXT("5mm","43mm","30mm","6mm", "装配:"+obj.operator); - setFontSizeBold(9,0);// 设置字体 - LODOP.ADD_PRINT_TEXT("8mm","5mm","44mm","6mm", "失效:"+obj.validDate); - setFontSizeBold(9,0);// 设置字体 - LODOP.ADD_PRINT_TEXT("8mm","43mm","30mm","6mm", "审核:"+obj.reviewer); - setFontSizeBold(9,0);// 设置字体 + LODOP.ADD_PRINT_TEXT("6mm","5mm","44mm","6mm", "灭菌:"+obj.sterilizationDate); + setFontSizeBold(11,0);// 设置字体 + LODOP.ADD_PRINT_TEXT("6mm","43mm","30mm","6mm", "装配:"+obj.operator); + setFontSizeBold(11,0);// 设置字体 + LODOP.ADD_PRINT_TEXT("10mm","5mm","44mm","6mm", "失效:"+obj.validDate); + setFontSizeBold(11,0);// 设置字体 + LODOP.ADD_PRINT_TEXT("10mm","43mm","30mm","6mm", "审核:"+obj.reviewer); + setFontSizeBold(11,0);// 设置字体 - var tableStr = getMaterialsTabHtml_largeLabel(obj); - addPrintTable(tableStr,"11mm","2mm","RightMargin:1mm","40mm"); + var tableStr = getMaterialsTabHtml_middleLabel(obj); + addPrintTable(tableStr,"14mm","2mm","RightMargin:1mm","40mm"); setAlignment('center');// 居中对齐 LODOP.ADD_PRINT_TEXT("41mm","2mm","40mm","5mm", "灭菌炉:" + obj.sterilizer); @@ -799,28 +938,28 @@ } LODOP.ADD_PRINT_TEXT("1mm","0mm","RightMargin:0mm","BottomMargin:0mm", obj.name); - setFontSizeBold(11,1);// 设置字体 + setFontSizeBold(15,1);// 设置字体 setAlignment('center');// 对齐 var curDate = new Date(); var packingDateTime = date2string(curDate) packingDateTime = packingDateTime.substring(0,16); - LODOP.ADD_PRINT_TEXT("6mm","2mm","50mm","8px", "装配员:"+obj.operator); + LODOP.ADD_PRINT_TEXT("7mm","2mm","50mm","8px", "装配员:"+obj.operator); setFontSizeBold(10,1);// 设置字体 - LODOP.ADD_PRINT_TEXT("6mm","30mm","50mm","8px", "审核员:"+obj.reviewer); + LODOP.ADD_PRINT_TEXT("7mm","30mm","50mm","8px", "审核员:"+obj.reviewer); setFontSizeBold(10,1);// 设置字体 - LODOP.ADD_PRINT_TEXT("6mm","58mm","50mm","8px", "灭菌日期:"+obj.sterilizationDate); + LODOP.ADD_PRINT_TEXT("7mm","58mm","50mm","8px", "灭菌日期:"+obj.sterilizationDate); setFontSizeBold(10,1);// 设置字体 - LODOP.ADD_PRINT_TEXT("10mm","2mm","70mm","8px", "配包时间:" + packingDateTime); + LODOP.ADD_PRINT_TEXT("11mm","2mm","70mm","8px", "配包时间:" + packingDateTime); setFontSizeBold(10,1);// 设置字体 - LODOP.ADD_PRINT_TEXT("10mm","58mm","50mm","8px", "失效日期:"+obj.validDate); + LODOP.ADD_PRINT_TEXT("11mm","58mm","50mm","8px", "失效日期:"+obj.validDate); setFontSizeBold(10,1);// 设置字体 // 打印表格 var tableStr = getMaterialsTabHtml_largeLabel(obj); - addPrintTable(tableStr,"14mm","0mm","RightMargin:0mm","44mm"); + addPrintTable(tableStr,"15mm","2mm","RightMargin:0mm","44mm"); setAlignment('center');// 居中对齐 LODOP.ADD_PRINT_TEXT("67mm","0mm","RightMargin:50mm","BottomMargin:0mm", obj.name); @@ -880,40 +1019,40 @@ // 灭菌方式 {label : "", dataIndex : 'sterilingType', position : ["32mm","1mm","26mm","3mm"], type: 'html', beforeStr: "
", afterStr: "
"}, // 器械包名称,水平居中 - {label : "", dataIndex : 'nameWithoutPartInfo', position : ["0mm","0mm","RightMargin:0mm","5mm"], type: 'html', beforeStr: "
", afterStr: "
"}, - {label : "手术名称:", dataIndex : 'surgery', fontSize : 8, bold: 1, position : ["7mm","10mm","60mm","5mm"]}, - {label : "供应商:", dataIndex : 'supplierName', fontSize : 8, bold: 1, position : ["12mm","10mm","60mm","5mm"]}, - {label : "住院号:", dataIndex : 'hospitalNumber', fontSize :8, bold: 1, position : ["7mm","55mm","60mm","5mm"]}, - {label : "包装总数:", dataIndex : 'splitPackagesAmount', fontSize : 8, bold: 1, position : ["17mm","10mm","30mm","5mm"]}, - {label : "使用医生:", dataIndex : 'doctor', fontSize :8, bold: 1, position : ["12mm","55mm","30mm","5mm"]}, - {label : "第几包:", dataIndex : 'packageNumber', fontSize :8, bold: 1, position : ["22mm","10mm","30mm","5mm"]}, - {label : "使用病人:", dataIndex : 'patient', fontSize : 8, bold: 1, position : ["17mm","55mm","30mm","5mm"]}, - {label : "病人科室:", dataIndex : 'depart', fontSize :8, bold: 1, position : ["22mm","55mm","30mm","5mm"]}, + {label : "", dataIndex : 'nameWithoutPartInfo', position : ["2mm","0mm","RightMargin:0mm","5mm"], type: 'html', beforeStr: "
", afterStr: "
"}, + {label : "手术名称:", dataIndex : 'surgery', fontSize : 8, bold: 1, position : ["29mm","10mm","80mm","5mm"]}, + {label : "供应商:", dataIndex : 'supplierName', fontSize : 8, bold: 1, position : ["9mm","10mm","60mm","5mm"]}, + {label : "住院号:", dataIndex : 'hospitalNumber', fontSize :8, bold: 1, position : ["9mm","55mm","60mm","5mm"]}, + {label : "包装总数:", dataIndex : 'splitPackagesAmount', fontSize : 8, bold: 1, position : ["14mm","10mm","30mm","5mm"]}, + {label : "使用医生:", dataIndex : 'doctor', fontSize :8, bold: 1, position : ["14mm","55mm","30mm","5mm"]}, + {label : "第几包:", dataIndex : 'packageNumber', fontSize :8, bold: 1, position : ["19mm","10mm","30mm","5mm"]}, + {label : "使用病人:", dataIndex : 'patient', fontSize : 8, bold: 1, position : ["19mm","55mm","30mm","5mm"]}, + {label : "病人科室:", dataIndex : 'depart', fontSize :8, bold: 1, position : ["24mm","10mm","30mm","5mm"]}, //{label : "植入物:", dataIndex : 'implantAmount', fontSize : 8, bold: 1, position : ["35mm","5mm","30mm","5mm"]}, //{label : "生物监测结果及签名:", dataIndex : '', fontSize :8, bold: 1, position : ["35mm","25mm","44mm","5mm"]}, // 植入物?件,工具?件,水平居中 - {label : "", dataIndex : 'total', position : ["35mm","0mm","RightMargin:0mm","5mm"], type: 'html', beforeStr: "
", afterStr: "
"}, + {label : "", dataIndex : 'total', position : ["38mm","0mm","RightMargin:0mm","5mm"], type: 'html', beforeStr: "
", afterStr: "
"}, - {label : "装配员:", dataIndex : 'operator', fontSize : 6, bold: 1, position : ["50mm","35mm","19mm","3mm"]}, - {label : "审核员:", dataIndex : 'reviewer', fontSize : 6, bold: 1, position : ["55mm","35mm","19mm","3mm"]}, - //{label : "", dataIndex : 'name', fontSize : 8, bold: 1, position : ["35mm","1mm","26mm","3mm"]}, - {label : "灭菌期:", dataIndex : 'sterilizationDate', fontSize : 6, bold: 1, position : ["50mm","10mm","26mm","3mm"]}, - {label : "失效期:", dataIndex : 'validDate', fontSize : 6, bold: 1, position : ["55mm","10mm","26mm","3mm"]} + {label : "灭菌期:", dataIndex : 'sterilizationDate', fontSize : 8, bold: 1, position : ["47mm","10mm","35mm","3mm"]}, + {label : "失效期:", dataIndex : 'validDate', fontSize : 8, bold: 1, position : ["47mm","55mm","35mm","3mm"]}, + + {label : "装配员:", dataIndex : 'operator', fontSize : 8, bold: 1, position : ["53mm","10mm","26mm","3mm"]}, + {label : "审核员:", dataIndex : 'reviewer', fontSize : 8, bold: 1, position : ["59mm","10mm","26mm","3mm"]} ], barcodes : [{ - codeType : "128Auto", dataIndex : 'barcode', position : ["50mm","55mm","32mm","10mm"], + codeType : "128Auto", dataIndex : 'barcode', position : ["53mm","55mm","32mm","10mm"], styles : [{itemNameID: 0, styleName: 'ShowBarText', styleValue: true}, {itemNameID: 0, styleName: 'FontSize', styleValue: 6}, {itemNameID: 0, styleName: 'NotOnlyHighPrecision', styleValue: true}] },{ - codeType : "128Auto", dataIndex : 'barcode', position : ["65mm","55mm","32mm","10mm"], + codeType : "128Auto", dataIndex : 'barcode', position : ["68mm","55mm","32mm","10mm"], styles : [{itemNameID: 0, styleName: 'ShowBarText', styleValue: true}, {itemNameID: 0, styleName: 'FontSize', styleValue: 6}, {itemNameID: 0, styleName: 'NotOnlyHighPrecision', styleValue: true}] },{ - codeType : "128Auto", dataIndex : 'barcode', position : ["65mm","15mm","32mm","10mm"], + codeType : "128Auto", dataIndex : 'barcode', position : ["68mm","15mm","32mm","10mm"], styles : [{itemNameID: 0, styleName: 'ShowBarText', styleValue: true}, {itemNameID: 0, styleName: 'FontSize', styleValue: 6}, {itemNameID: 0, styleName: 'NotOnlyHighPrecision', styleValue: true}] @@ -1176,6 +1315,7 @@ var printConfig = { //发货计划单 invoicePlan : invoicePlanPrintConfig, + batchPrintInvoices: batchPrintInvoicesConfig, // 发货单(通用发货单) invoiceCombo : invoiceComboPrintConfig, // 发货单(一次性物品)