Index: ssts-web/src/main/webapp/disinfectsystem/print/print.js =================================================================== diff -u -r28814 -r29119 --- ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 28814) +++ ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 29119) @@ -234,6 +234,22 @@ return; } var foreignTousseList = printSummaryObj.foreignTousseList || []; + //LODOP.SET_PRINT_STYLE("ItemType",0); + // 如果设置了paperType为连续纸张,必须设置pageWidth和pageHeight属性 + if(myObj.paperType == '连续纸张'){ + + // 打印的页面对象 + var page = printSummaryObj.pages[printSummaryObj.pageIndex]; + var rows = page.rows; + if(rows != null && rows.length > 0){ + // 表格的总行数 = 物品的行数page.rows + 合计行 + 页脚行 + var linesCount = rows.length + 2; + // rowHeight + 1,因为表格线有占高度 + setContinuousPaperHeight(myObj.pageHeightOfDengFenPaper,myObj.pageWidth,myObj.pageHeight,linesCount,myObj.goodsTable.rowHeight+1,myObj.goodsTable.position[0]); + + } + } + // 打印表头的内容 if (!isObjEmpty(myObj.headerFooter)){ // 设置为页眉页脚模式 @@ -812,6 +828,62 @@ } } +/** + * 设置连续纸的纸张高度。适用于打印发货计划,单据的内容不固定,打印内容的高度不固定的场景。 + * 根据传入的打印表格的行数和行高、表格的上边距,打印纸的高度,动态计算出本次打印占用的纸张的张数及高度。 + * + * pageHeightOfDengFenPaper:等分纸的每页的高度。单位为毫米mm(值为数值,不能包含单位)。 + * 三等分纸,高度为93.1mm;二等分纸,高度为139.7mm;连续纸(没有切割线的纸)的高度设置为0,洗水布属于此类型 + * + * pageWidth:打印纸的宽度 + * pageHeight:打印纸的高度,如果是连续纸,是指打印完毕后的下边距。 + * rowsCount:打印表格的总行数,包括表格的合计行、页脚行 + * rowHeight:表格的行高,值为数值,单位为px + * topOfTable:表格的上边距,值为数值,单位为px。如果为其它,则会报错,程序提示异常信息 + * + */ +function setContinuousPaperHeight(pageHeightOfDengFenPaper,pageWidth,pageHeight,rowsCount,rowHeight,topOfTable){ + + // 如果没有定义每等分纸的高度,则为洗水布,真正的连续纸 + if (isUndefinedOrNull(pageHeightOfDengFenPaper)){ + LODOP.SET_PRINT_PAGESIZE(3,pageWidth,pageHeight,''); + } + else{ + // 计算打印内容的实际高度,设置为固定纸张,高度为占用的等分纸的总高度 + + // 打印内容的实际高度 + var dynamicPageHeight = 0; + + // 页面上打印表格的内容所占的总行数 + if(rowsCount != null ){ + // 表格的高度 = 表格的行数 * 每行的高度 + 表格的上边距 + 页面最上面的不可打印区域高度 + try{ + dynamicPageHeight = rowsCount * rowHeight + parseInt(topOfTable) + 30; + } + catch(e){ + + alert("hmtl表格定义的上边距必须为数值,并且不能加单位。") + return; + + } + // 将纸张的动态高度,由px单位的数值,转换为mm单位的数值 + var dynamicPageHeightInMM = 25.4 * dynamicPageHeight / 96; + + // 计算所占用的等分纸的页数 + var pageCount = Math.ceil(dynamicPageHeightInMM / pageHeightOfDengFenPaper); + // 计算所占用的等分纸的高度 + dynamicPageHeight = pageCount * pageHeightOfDengFenPaper; + } + else{ + alert("打印表格的内容为空!") + } + + // 设置打印纸张的大小,高度为动态计算出来的高度,单位为毫米,必须加上'mm'的单位 + LODOP.SET_PRINT_PAGESIZE(1,pageWidth,dynamicPageHeight + "mm",''); + } +} + + //根据配置的表单打印信息,以及从服务器取到的物品信息数据,打印表单 //@Deprecated,新的打印函数采用Lodop的自动分页以及页眉页脚打印方式 function print(printSummaryObj){ @@ -828,7 +900,21 @@ myObj.customPrint(printSummaryObj); return; } + //LODOP.SET_PRINT_STYLE("ItemType",0); + // 如果设置了paperType为连续纸张,必须设置pageWidth和pageHeight属性 + if(myObj.paperType == '连续纸张'){ + + // 打印的页面对象 + var page = printSummaryObj.pages[printSummaryObj.pageIndex]; + var rows = page.rows; + if(rows != null && rows.length > 0){ + // 表格的总行数 = 物品的行数page.rows + 合计行 + 页脚行 + var linesCount = rows.length + 2; + // rowHeight + 1,因为表格线有占高度 + setContinuousPaperHeight(myObj.pageHeightOfDengFenPaper,myObj.pageWidth,myObj.pageHeight,linesCount,myObj.goodsTable.rowHeight+1,myObj.goodsTable.position[0]); + } + } logPrintTousse(printSummaryObj,printSummaryObj.barcode); // 根据配置过滤掉材料列表里面的一次性物品(后台会返回所有材料和一次性物品) if(!isUndefinedOrNull(printSummaryObj.materials)){ @@ -3354,7 +3440,7 @@ tableHtml += ""; tableHtml += ""; - tableHtml += ""; + tableHtml += ""; tableHtml += "规格:"+specification; tableHtml += "
"; tableHtml += "
"+barcode; Index: ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/print/printConfig.js =================================================================== diff -u -r29116 -r29119 --- ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/print/printConfig.js (.../printConfig.js) (revision 29116) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/print/printConfig.js (.../printConfig.js) (revision 29119) @@ -167,7 +167,17 @@ // 在器械包和一次性物品不合并打印的情况下,消毒物品打印方式: // 1:优先与一次性物品合并打印,如果无一次性物品则与器械包合并打印, 2:优先与器械包一起合并打印,如果没有器械包则与一次性物品合并打印 ,3:单独打印 disinfectGoodsPrintMode : 2, - rowsPerPage : 9, + rowsPerPage : 1000, + paperType : '连续纸张', + pageWidth : '241mm', + /** + * 等分纸的高度,单位为毫米mm(只能写数值),三等分纸,高度为93.1mm;二等分纸,高度为139.7mm;连续纸(没有切割线的纸)的高度设置为0,洗水布属于此类型 + * mm和pt的转换关系:25.4mm = 72pt = 96px, + **/ + //本项目为三等分打印纸 + pageHeightOfDengFenPaper : 93.1, + //底边的空白高度 + pageHeight : '20mm', headerContent : [ // 页眉名称 {label : "广东省中医院", dataIndex : '', fontSize : 12, position : ["5","1%","90%",5]}, @@ -178,27 +188,29 @@ {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 : 'remark', fontSize : 11, position : ["80","2%","90%",5]} + //{label : "备注:", dataIndex : 'remark', fontSize : 11, position : ["80","2%","90%",5]} ], goodsTable :{ rowHeight : 24, - position : ["100","1%","97%","14.0cm"], + //表格的高度必须足够高,否则打印的内容超过打印区域的高度后,会自动分页 + position : ["100","1%","97%","100.0cm"], content : [ {header : "序号", dataIndex : 'serialNumber', width : 60, align : 'center', fontSize : 11}, - {header : "名称", dataIndex : 'goodsName', width : 280, align : 'left', fontSize : 11}, - {header : "规格", dataIndex : 'sp', width : 245, align : 'center', fontSize : 11}, - // {header : "包装规格", dataIndex : 'packageSpec', width : 100, align : 'center', fontSize : 11}, - {header : "单位", dataIndex : 'unit', width : 60, align : 'center', fontSize : 11}, - {header : "数量", dataIndex : 'goodsAmount', width : 60, align : 'center', fontSize : 11}, - {header : "单价", dataIndex : 'price', width : 60, align : 'center', fontSize : 11}, - {header : "金额", dataIndex : 'rowPrice', width : 75, align : 'center', fontSize : 11} + {header : "名称", dataIndex : 'goodsName', width : 200, align : 'center', fontSize : 11}, + {header : "规格", dataIndex : 'sp', width : 120, align : 'center', fontSize : 11}, + {header : "包装规格", dataIndex : 'packageSpec', width : 120, align : 'center', fontSize : 11}, + {header : "领用数量", dataIndex : 'goodsAmount', width : 90, align : 'center', fontSize : 11}, + {header : "单位", dataIndex : 'unit', width : 80, align : 'center', fontSize : 11} + //{header : "单价", dataIndex : 'price', width : 60, align : 'center', fontSize : 11}, + //{header : "金额", dataIndex : 'rowPrice', width : 75, align : 'center', fontSize : 11} ] }, footer: { fontSize : 12, content : [ - {label : "
主管: ", dataIndex : ''}, - {label : " 领料人: ", dataIndex : ''}, + //{label : "
主管: ", dataIndex : ''}, + {label : "
领料人: ", dataIndex : ''}, {label : " 发料人: ", dataIndex : 'printUser'}, {label : " 发货日期:", dataIndex : 'printTime'} ] @@ -225,7 +237,17 @@ // 在器械包和一次性物品不合并打印的情况下,消毒物品打印方式: // 1:优先与一次性物品合并打印,如果无一次性物品则与器械包合并打印, 2:优先与器械包一起合并打印,如果没有器械包则与一次性物品合并打印 ,3:单独打印 disinfectGoodsPrintMode : 2, - rowsPerPage : 9, + rowsPerPage : 1000, + paperType : '连续纸张', + pageWidth : '241mm', + /** + * 等分纸的高度,单位为毫米mm(只能写数值),三等分纸,高度为93.1mm;二等分纸,高度为139.7mm;连续纸(没有切割线的纸)的高度设置为0,洗水布属于此类型 + * mm和pt的转换关系:25.4mm = 72pt = 96px, + **/ + //本项目为三等分打印纸 + pageHeightOfDengFenPaper : 93.1, + //底边的空白高度 + pageHeight : '20mm', headerContent : [ // 页眉名称 {label : "广东省中医院", dataIndex : '', fontSize : 12, position : ["5","1%","90%",5]}, @@ -236,25 +258,29 @@ {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 : 'remark', fontSize : 11, position : ["80","2%","90%",5]} + //{label : "备注:", dataIndex : 'remark', fontSize : 11, position : ["80","2%","90%",5]} ], goodsTable :{ rowHeight : 24, position : ["100","1%","97%","14.0cm"], content : [ {header : "序号", dataIndex : 'serialNumber', width : 60, align : 'center', fontSize : 11}, - {header : "名称", dataIndex : 'goodsName', width : 260, align : 'center', fontSize : 11}, - {header : "数量", dataIndex : 'goodsAmount', width : 100, align : 'center', fontSize : 11}, - {header : "单价", dataIndex : 'price', width : 100, align : 'center', fontSize : 11}, - {header : "金额", dataIndex : 'rowPrice', width : 100, align : 'center', fontSize : 11} + {header : "名称", dataIndex : 'goodsName', width : 240, align : 'center', fontSize : 11}, + {header : "单位", dataIndex : '', width : 80, align : 'center', fontSize : 11}, + {header : "回收数量", dataIndex : 'goodsAmount', width : 90, align : 'center', fontSize : 11}, + {header : "实发数量", dataIndex : '', width : 90, align : 'center', fontSize : 11}, + {header : "备注", dataIndex : 'remark', width : 130, align : 'center', fontSize : 11}, + //{header : "单价", dataIndex : 'price', width : 100, align : 'center', fontSize : 11}, + //{header : "金额", dataIndex : 'rowPrice', width : 100, align : 'center', fontSize : 11} ] }, footer: { fontSize : 12, content : [ - {label : "
主管: ", dataIndex : ''}, - {label : " 领料人: ", dataIndex : ''}, - {label : " 发料人: ", dataIndex : 'printUser'}, + {label : "
经领人: ", dataIndex : ''}, + {label : " 经收人: ", dataIndex : ''}, + {label : " 经发人: ", dataIndex : ''}, {label : " 发货日期:", dataIndex : 'printTime'} ] }, @@ -396,48 +422,47 @@ } var applicationPrintConfig = { + isPrintTousse : true, isPrintDisinfectGoods : true, - isPrintDisposableGoods : true, // 打印申请单是否打印一次性物品 + isPrintDisposableGoods : false, // 打印申请单是否打印一次性物品 isMergePrintTousseAndDiposable : true, // 器械包和一次性物品是否合并打印 printApplyInfo : true, // 在器械包和一次性物品不合并打印的情况下,消毒物品打印方式: // 1:优先与一次性物品合并打印,如果无一次性物品则与器械包合并打印, 2:优先与器械包一起合并打印,如果没有器械包则与一次性物品合并打印 ,3:单独打印 disinfectGoodsPrintMode : 1, - rowsPerPage : 11, + rowsPerPage : 20, headerContent : [ // 页眉名称 {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 : '', fontSize : 15, position : ["20","15%","99%",5]}, + {label : "申请科室:", dataIndex : 'depart', fontSize : 11, position : ["55","2%","90%",5]}, {label : "单号:", dataIndex : 'serialNum', fontSize : 11, position : ["55","35%","90%",5]}, - {label : "制单人:", dataIndex : 'printUser', fontSize : 11, position : ["80","75%","90%",5]}, - {label : "提交时间:", dataIndex : 'applicationTime', fontSize : 11, position : ["80","35%","90%",5]}, + {label : "申请人:", dataIndex : 'applicant', fontSize : 11, position : ["80","75%","90%",5]}, + {label : "提交时间:", dataIndex : 'applicationTime', fontSize : 11, position : ["80","45%","90%",5]}, {label : "备注:", dataIndex : 'remark', fontSize : 11, position : ["80","2%","90%",5]} ], goodsTable :{ rowHeight : 25, position : ["100","1%","97%","2000"], content : [ - {header : "序号", dataIndex : 'serialNumber', width : 60, align : 'center', fontSize : 11}, - {header : "名称", dataIndex : 'goodsName', width : 340, align : 'left', fontSize : 11}, - {header : "规格", dataIndex : 'sp', width : 185, align : 'center', fontSize : 11}, - {header : "包装规格", dataIndex : 'packageSpec', width : 100, align : 'center', fontSize : 11}, - {header : "单位", dataIndex : 'unit', width : 60, align : 'center', fontSize : 11}, - {header : "数量", dataIndex : 'goodsAmount', width : 60, align : 'right', fontSize : 11}, - {header : "单价", dataIndex : 'price', width : 60, align : 'right', fontSize : 11}, - {header : "金额", dataIndex : 'rowPrice', width : 75, align : 'right', fontSize : 11} + {header : "序号", dataIndex : 'serialNumber', width : "10%", align : 'center', fontSize : 11}, + {header : "名称", dataIndex : 'goodsName', width : "45%", align : 'left', fontSize : 11}, + {header : "数量", dataIndex : 'goodsAmount', width : "15%", align : 'center', fontSize : 11}, + {header : "备注", dataIndex : '', width : "30%", align : 'center', fontSize : 11} + //{header : "单价", dataIndex : 'price', width : 60, align : 'right', fontSize : 11}, + //{header : "金额", dataIndex : 'rowPrice', width : 75, align : 'right', fontSize : 11} ] }, footer: { fontSize : 15, content : [ - {label : "
主管: ", dataIndex : ''}, - {label : " 领料人: ", dataIndex : ''}, + {label : "
回收人: ", dataIndex : ''}, {label : " 打印人: ", dataIndex : 'printUser'}, - {label : " 打印日期:", dataIndex : 'printTime'} + {label : " 打印日期:", dataIndex : 'printTime'}, + {label : "
验收: 复核: ", dataIndex : ''} ] }, barcodes : [ @@ -449,8 +474,9 @@ } ] -} + } + var borrowPrintConfig = { isPrintTousse : true, isPrintDisinfectGoods : true, @@ -1233,8 +1259,8 @@ invoiceTousse : invoiceComboPrintConfig, // 发货单(消毒物品) invoiceDisinfectGoods : invoiceComboPrintConfig, - // 申请单(一次性物品) - application : invoicePlanPrintConfig, //invoicePlanPrintConfig applicationPrintConfig + // 申请单 + application : applicationPrintConfig, //invoicePlanPrintConfig applicationPrintConfig // 器械包申请单 application_tousse:invoiceToussePlanPrintConfig, // 消毒物品申请单