Index: ssts-web/src/main/webapp/disinfectsystem/config/dgsdhyy/print/printConfig.js =================================================================== diff -u -r13460 -r13776 --- ssts-web/src/main/webapp/disinfectsystem/config/dgsdhyy/print/printConfig.js (.../printConfig.js) (revision 13460) +++ ssts-web/src/main/webapp/disinfectsystem/config/dgsdhyy/print/printConfig.js (.../printConfig.js) (revision 13776) @@ -778,14 +778,130 @@ ] } } - +/** + * 获取中标签中材料的字体大小。需要根据记录数计算大小,同时要考虑材料的名称,如果当前字体下,名称太长导致换行,则认为行数增加 + * @param materials 所有需要打印的材料 + * @param cols 材料的列数 如:名称 数量 名称 数量,这种情况下,cols为2,指一行的记录数 + */ +function getMaterialsFontSize_middleLable(materials,cols){ + /** + * 计算材料名称列的行数(包括名称和规格) + */ + var nameRows = function(material){ + var temp = material.name; + // 不打印材料 + if (material.specification != null && material.specification != ""){ + temp += "[" + material.specification + "]"; + } + + var nameMaxLenthPerLine = 8; + 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*(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 > 15){ + fontSize = 5; + }else if(rows > 13){ + fontSize = 6; + } + else if (rows > 12){ + fontSize = 7; + } + else if (rows > 10){ + fontSize = 8; + }else if (rows > 8){ + fontSize = 9; + }else if (rows > 6){ + fontSize = 10; + }else if (rows >= 4){ + fontSize = 12; + }else{ + fontSize = 13; + } + return fontSize; +} +//构造表格 +function getMaterialsTabHtml_middleLable(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_middleLable(materials,2); +// alert(fontSize) + /*materialStr += "名称"; + materialStr += "数量"; + materialStr += "名称"; + materialStr += "数量"; + materialStr += "#;";*/ + for (var i=0;i" + temp + ""; + materialStr += "" + material.count + ""; + } + if (materialsAmount % 2 != 0) { + for (var i = 0; i < (2 - materialsAmount % 2); i++) { + materialStr += (""); + } + } + + if (materialStr.length > 0) { + materialsTab += ""; + var materialArray = materialStr.split("#;"); + for (var i=0; i"; + } + materialsTab += "
"; + } + + } + //alert(materialsTab) + return materialsTab; +} function printMiddleLable_gyey(obj){ doGetLodop(); // 划线 if(obj.markTousse){ - LODOP.ADD_PRINT_LINE('30mm','0mm','30mm','60mm',0,1); - LODOP.ADD_PRINT_LINE('42mm','0mm','42mm','60mm',0,1); + LODOP.ADD_PRINT_LINE('40mm','0mm','40mm','60mm',0,1); + LODOP.ADD_PRINT_LINE('50mm','0mm','50mm','60mm',0,1); } // 设置默认字体 setDefaultFontNameSizeBold('宋体',15,1); @@ -794,38 +910,43 @@ LODOP.SET_PRINT_STYLE('FontSize', 6); LODOP.SET_PRINT_STYLE('NotOnlyHighPrecision', true); - var fontSize = getFontSizeByStr(obj.name,[ + var fontSize = 25; /*getFontSizeByStr(obj.name,[ {maxLen:10,fontSize:25}, {maxLen:13,fontSize:21}, {maxLen:15,fontSize:19}, {maxLen:20,fontSize:17}, {maxLen:1000,fontSize:15} - ]); - LODOP.ADD_PRINT_TEXT("2mm","0mm","RightMargin:0mm","29mm", obj.name); + ]);*/ + LODOP.ADD_PRINT_TEXT("2mm","0mm","RightMargin:0mm","6mm", obj.name); setFontSizeBold(fontSize,1);// 设置字体 setAlignment('center');// 对齐 - LODOP.ADD_PRINT_TEXT("31mm","1mm","34mm","13mm", "灭菌:"+obj.sterilizationDate); + // 打印表格 + var tableStr = getMaterialsTabHtml_middleLable(obj); + addPrintTable(tableStr,"12mm","1mm","RightMargin:1mm","29mm"); + setAlignment('center');// 居中对齐 + + LODOP.ADD_PRINT_TEXT("41mm","1mm","34mm","5mm", "灭菌:"+obj.sterilizationDate); setFontSizeBold(11,0);// 设置字体 - LODOP.ADD_PRINT_TEXT("31mm","33mm","30mm","13mm", "装配员:"+obj.operator); + LODOP.ADD_PRINT_TEXT("41mm","33mm","30mm","5mm", "装配员:"+obj.operator); setFontSizeBold(11,0);// 设置字体 - LODOP.ADD_PRINT_TEXT("37mm","1mm","34mm","13mm", "失效:"+obj.validDate); + LODOP.ADD_PRINT_TEXT("46mm","1mm","34mm","5mm", "失效:"+obj.validDate); setFontSizeBold(11,0);// 设置字体 - LODOP.ADD_PRINT_TEXT("37mm","33mm","30mm","13mm", "审核员:"+obj.reviewer); + LODOP.ADD_PRINT_TEXT("46mm","33mm","30mm","5mm", "审核员:"+obj.reviewer); setFontSizeBold(11,0);// 设置字体 - LODOP.ADD_PRINT_BARCODE("44mm","10mm","40mm","18mm","128Auto", obj.barcode);// 条码1 + LODOP.ADD_PRINT_BARCODE("51mm","10mm","40mm","11mm","128Auto", obj.barcode);// 条码1 setAlignment('center');// 对齐 var fontSize = getFontSizeByStr(obj.name,[ {maxLen:10,fontSize:10}, {maxLen:20,fontSize:8}, {maxLen:1000,fontSize:6} ]); - LODOP.ADD_PRINT_TEXT("64mm","0mm","RightMargin:0mm","3mm", obj.name); + LODOP.ADD_PRINT_TEXT("63mm","0mm","RightMargin:0mm","3mm", obj.name); setFontSizeBold(fontSize,1);// 设置字体 setAlignment('center');// 对齐 - LODOP.ADD_PRINT_BARCODE("69mm","10mm","40mm","11mm","128Auto", obj.barcode);// 条码2 + LODOP.ADD_PRINT_BARCODE("67mm","10mm","40mm","11mm","128Auto", obj.barcode);// 条码2 setAlignment('center');// 对齐 } var foreignTousseMiddleLableConfig = {