From a897c6650036f9f0e2a033bca554864c9b24e34f Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 12 三月 2021 16:51:34 +0800 Subject: [PATCH] # --- src/main/java/zy/cloud/wms/manager/controller/MatController.java | 54 +++++++ src/main/webapp/static/js/mat/mat.js | 84 ++++++++++++ src/main/java/zy/cloud/wms/manager/entity/MatPrint.java | 36 +++++ src/main/webapp/views/mat/mat.html | 197 ++++++++++++++++++++++++++++ 4 files changed, 370 insertions(+), 1 deletions(-) diff --git a/src/main/java/zy/cloud/wms/manager/controller/MatController.java b/src/main/java/zy/cloud/wms/manager/controller/MatController.java index c6f0655..6f05bf6 100644 --- a/src/main/java/zy/cloud/wms/manager/controller/MatController.java +++ b/src/main/java/zy/cloud/wms/manager/controller/MatController.java @@ -12,10 +12,19 @@ import com.core.common.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import zy.cloud.wms.common.CodeRes; +import zy.cloud.wms.common.config.AdminInterceptor; +import zy.cloud.wms.common.utils.BarcodeUtils; +import zy.cloud.wms.common.utils.QrCode; import zy.cloud.wms.common.web.BaseController; import zy.cloud.wms.manager.entity.Mat; +import zy.cloud.wms.manager.entity.MatPrint; import zy.cloud.wms.manager.service.MatService; +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -138,4 +147,49 @@ return R.ok(); } + @RequestMapping(value = "/mac/code/auth") +// @ManagerAuth(memo = "鐗╂枡缂栫爜鏉″舰鐮佽幏鍙�(type:1(鏉″舰鐮�);2(浜岀淮鐮�)") + public R matCodeBarcode(@RequestParam(defaultValue = "1") Integer type + , @RequestParam String param + , HttpServletResponse response) throws Exception { + AdminInterceptor.cors(response); + if (Cools.isEmpty(param)){ + return R.parse(BaseRes.EMPTY); + } + BufferedImage img; + if (type == 1) { + img = BarcodeUtils.encode(param); + } else { + img = QrCode.createImg(param); + } + if (!ImageIO.write(img, "jpg", response.getOutputStream())) { + throw new IOException("Could not write an image of format jpg"); + } + response.getOutputStream().flush(); + response.getOutputStream().close(); + return R.ok(); + } + + // 鎵撳嵃 + @RequestMapping(value = "/mat/print/auth") + @ManagerAuth(memo = "鐗╂枡缂栫爜鎵撳嵃") + public R matCodePrint(@RequestParam(value = "param[]") String[] param) { + if(Cools.isEmpty(param)) { + return R.parse(CodeRes.EMPTY); + } + List<MatPrint> res = new ArrayList<>(); + for (String matnr : param){ + Mat mat = matService.selectByMatnr(matnr); + // 鎵撳嵃鏁版嵁娉ㄥ叆 + MatPrint print = new MatPrint(); + print.setMatnr(mat.getMatnr()); + print.setBarcode(mat.getBarcode()); + print.setMaktx(mat.getMaktx()); + print.setSpecs(mat.getSpecs()); + print.setUnit(mat.getUnit()); + res.add(print); + } + return R.ok().add(res); + } + } diff --git a/src/main/java/zy/cloud/wms/manager/entity/MatPrint.java b/src/main/java/zy/cloud/wms/manager/entity/MatPrint.java new file mode 100644 index 0000000..4ae7322 --- /dev/null +++ b/src/main/java/zy/cloud/wms/manager/entity/MatPrint.java @@ -0,0 +1,36 @@ +package zy.cloud.wms.manager.entity; + +import lombok.Data; + +/** + * Created by vincent on 2020/6/8 + */ +@Data +public class MatPrint { + + /** + * 鐗╂枡缂栫爜 + */ + private String matnr; + + /** + * 鏉$爜鍦板潃 + */ + private String barcode; + + /** + * 鐗╂枡鍚嶇О + */ + private String maktx; + + /** + * 鐗╂枡鍗曚綅 + */ + private String unit; + + /** + * 鐗╂枡瑙勬牸 + */ + private String specs; + +} diff --git a/src/main/webapp/static/js/mat/mat.js b/src/main/webapp/static/js/mat/mat.js index d9be975..2233719 100644 --- a/src/main/webapp/static/js/mat/mat.js +++ b/src/main/webapp/static/js/mat/mat.js @@ -1,4 +1,5 @@ var pageCurr; +var printMatCodeNos = []; layui.use(['table','laydate', 'form'], function(){ var table = layui.table; var $ = layui.jquery; @@ -184,6 +185,29 @@ }); }); break; + // 鎵归噺鎵撳嵃 + case "btnPrintBatch": + printMatCodeNos = []; + var data = checkStatus.data; + if (data.length === 0){ + layer.msg('璇烽�夋嫨鎵撳嵃鏁版嵁'); + } else { + layer.open({ + type: 1, + title: '鎵归噺鎵撳嵃 [鏁伴噺'+ data.length +']', + area: ['500px'], + shadeClose: true, + content: $('#printDataDiv'), + success: function(layero, index){ + for (var i = 0; i<data.length;i++) { + printMatCodeNos.push(data[i].matnr); + } + }, + end: function () { + } + }); + } + break; } }); @@ -191,6 +215,23 @@ table.on('tool(mat)', function(obj){ var data = obj.data; switch (obj.event) { + // 鎵撳嵃 + case "btnPrint": + printMatCodeNos = []; + layer.open({ + type: 1, + title: data.matnr + ' [鏁伴噺锛�1]', + area: ['500px'], + shadeClose: true, + content: $('#printDataDiv'), + success: function(layero, index){ + layer.iframeAuto(index); + printMatCodeNos.push(data.matnr); + }, + end: function () { + } + }); + break; // 璇︽儏 case 'detail': layer.open({ @@ -232,6 +273,49 @@ } }); + // 妯℃澘閫夋嫨 + form.on('radio(selectTemplateRadio)', function (data) { + $('.template-preview').hide(); + $('#template-preview-'+data.value).show(); + }); + + // 寮�濮嬫墦鍗� + form.on('submit(doPrint)', function (data) { + var templateNo = data.field.selectTemplate; + $.ajax({ + url: baseUrl+"/mat/print/auth", + headers: {'token': localStorage.getItem('token')}, + data: {param: printMatCodeNos}, + method: 'POST', + async: false, + success: function (res) { + if (res.code === 200){ + layer.closeAll(); + for (let i=0;i<res.data.length;i++){ + var templateDom = $("#templatePreview"+templateNo); + var className = templateDom.attr("class"); + if (className === 'template-barcode') { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1¶m="+res.data[i].matnr; + } else { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].matnr; + } + } + var tpl = templateDom.html(); + var template = Handlebars.compile(tpl); + var html = template(res); + let box = $("#box"); + box.html(html);box.show(); + box.print({mediaPrint:true}); + box.hide(); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg) + } + } + }) + }) + // 鏁版嵁淇濆瓨鍔ㄤ綔 form.on('submit(save)', function () { if (banMsg != null){ diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html index f323ba5..5062a7d 100644 --- a/src/main/webapp/views/mat/mat.html +++ b/src/main/webapp/views/mat/mat.html @@ -36,6 +36,25 @@ .layui-form.layui-border-box.layui-table-view { height: 100%; } + + + /* ------------------------- 鎵撳嵃琛ㄦ牸 ----------------------- */ + .layui-btn-danger { + background-color: lightsalmon; + color: #333; + } + + + .template-preview { + height: 200px; + display: inline-block; + } + .contain { + } + .contain td { + border: 1px solid #000; + /*line-height: 46px;*/ + } </style> </head> <body> @@ -99,6 +118,7 @@ <script type="text/html" id="toolbar"> <div class="layui-btn-container"> + <button class="layui-btn layui-btn-danger layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch">鎵归噺鎵撳嵃</button> <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button> <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button> @@ -106,12 +126,15 @@ </script> <script type="text/html" id="operate"> - <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a> +<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>--> <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a> + <button class="layui-btn layui-btn-danger layui-btn-xs btn-print" lay-event="btnPrint">鎵撳嵃</button> </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script> +<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/mat/mat.js" charset="utf-8"></script> @@ -119,6 +142,178 @@ <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe> +<!-- 鎵撳嵃鎿嶄綔寮圭獥 --> +<div id="printDataDiv" style="display: none;padding: 20px"> + <div class="layui-form" style="text-align: center"> + <hr> + <!--鍗曢�夋--> + <div class="layui-form-item" style="display: inline-block; margin-bottom: 10px"> + <input type="radio" name="selectTemplate" value="1" title="妯℃澘涓�" lay-filter="selectTemplateRadio" checked=""> + <input type="radio" name="selectTemplate" value="2" title="妯℃澘浜�" lay-filter="selectTemplateRadio"> + <input type="radio" name="selectTemplate" value="3" title="妯℃澘涓�" lay-filter="selectTemplateRadio"> + </div> + <fieldset class="layui-elem-field site-demo-button" style="margin-top: 30px;text-align: left;"> + <legend>鎵撳嵃棰勮</legend> + <div id="template-container" style="margin: 20px;text-align: center"> + + <!-- 棰勮鍥� 1 --> + <div id="template-preview-1" class="template-preview" style="display: inline-block"> + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <tr style="height: 74px"> + <td colspan="3" align="center" scope="col">鐗╂枡缂栫爜</td> + <td class="barcode" colspan="9" align="center" scope="col"> + <img class="template-code template-barcode" src="" width="90%;"> + <div style="letter-spacing: 2px;margin-top: 1px; text-align: center;"> + <span>xxxxxx</span> + </div> + </td> + </tr> + <tr style="height: 74px"> + <td align="center" colspan="3">鐗╂枡鍚嶇О</td> + <td align="center" colspan="5">xxxxxx-xx/xx</td> + <td align="center" colspan="2">鍗曚綅</td> + <td align="center" colspan="2">xx</td> + </tr> + </table> + </div> + + <!-- 棰勮鍥� 2 --> + <div id="template-preview-2" class="template-preview" style="display: none"> + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <tr style="height: 30px"> + <td align="center" width="20%">鐗╂枡鍚嶇О</td> + <td align="center" width="80%" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td> + </tr> + <tr style="height: 30px"> + <td align="center" width="20%">鐗╂枡鍗曚綅</td> + <td align="center" width="80%">xxxxxxxx</td> + </tr> + <tr style="height: 75px;"> + <td align="center" colspan="2" width="100%" style="border: none"> + <img class="template-code template-barcode" src="" width="80%"> + <div style="letter-spacing: 2px;margin-top: 1px; text-align: center"> + <span>xxxxxx</span> + </div> + </td> + </tr> + </table> + </div> + + <!-- 棰勮鍥� 3 --> + <div id="template-preview-3" class="template-preview" style="display: none"> + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <tr style="height: 74px"> + <td align="center" scope="col" colspan="1">鐗╂枡鍚嶇О</td> + <td align="center" scope="col" colspan="1" style="">xxxxxx-xx/xx</td> + <td align="center" scope="col" colspan="2" rowspan="2"> + <img class="template-code template-qrcode" src="" width="80%"> + <div style="letter-spacing: 1px;margin-top: 1px; text-align: center"> + <span>xxxxxx</span> + </div> + </td> + </tr> + <tr style="height: 74px"> + <td align="center" colspan="1">鐗╂枡鍗曚綅</td> + <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td> + </tr> + </table> + </div> + </div> + </fieldset> + + <button class="layui-btn layui-btn-danger" id="doPrint" lay-submit lay-filter="doPrint" style="margin-top: 20px">纭畾</button> + </div> +</div> + +<div id="box" style="display: block"></div> + +<!-- 鍒濆鍖栨墦鍗版ā鏉跨殑鏉″舰鐮� --> +<script type="text/javascript"> + $('.template-barcode').attr("src", baseUrl+"/mac/code/auth?type=1¶m=123"); + $('.template-qrcode').attr("src", baseUrl+"/mac/code/auth?type=2¶m=123"); +</script> + +<!-- 妯℃澘寮曟搸 --> +<!-- 妯℃澘1 --> +<script type="text/template" id="templatePreview1" class="template-barcode"> + {{#each data}} + <table class="contain" width="280" style="overflow: hidden;font-size: small;table-layout: fixed;"> + <tr style="height: 74px"> + <td align="center" colspan="3" scope="col">鐗╂枡缂栫爜</td> + <td align="center" class="barcode" colspan="9" scope="col"> + <img class="template-code" src="{{this.barcodeUrl}}" width="90%"> + <div style="letter-spacing: 2px;margin-top: 1px; text-align: center"> + <span>{{this.matnr}}</span> + </div> + </td> + </tr> + <tr style="height: 74px"> + <td align="center" colspan="3">鐗╂枡鍚嶇О</td> + <td align="center" colspan="5" style="overflow: hidden; white-space: nowrap;text-overflow: ellipsis;">{{this.maktx}}</td> + <td align="center" colspan="2">鍗曚綅</td> + <td align="center" colspan="2">{{this.unit}}</td> + </tr> + </table> + {{/each}} +</script> +<!-- 妯℃澘2 --> +<script type="text/template" id="templatePreview2" class="template-barcode"> + {{#each data}} + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <tr style="height: 35px"> + <td align="center" width="20%">鐗╂枡鍚嶇О</td> + <td align="center" width="80%" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.maktx}}</td> + </tr> + <tr style="height: 35px"> + <td align="center" width="20%">鐗╂枡鍗曚綅</td> + <td align="center" width="80%">{{this.unit}}</td> + </tr> + <tr style="height: 79px;"> + <td align="center" colspan="2" width="100%" style="border: none"> + <img class="template-code" src="{{this.barcodeUrl}}" width="80%"> + <div style="letter-spacing: 2px;margin-top: 1px; text-align: center"> + <span>{{this.matnr}}</span> + </div> + </td> + </tr> + </table> + {{/each}} +</script> +<!-- 妯℃澘3 --> +<script type="text/template" id="templatePreview3" class="template-qrcode"> + {{#each data}} + <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> + <tr style="height: 74px" > + <td align="center" scope="col" colspan="1">鐗╂枡鍚嶇О</td> + <td align="center" scope="col" colspan="1" style=" + display: inline-block; + line-height: 20px; + vertical-align: middle; + border: none; + border-top: 1px solid #000; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + "> + {{this.maktx}} + </td> + <td align="center" scope="col" colspan="2" rowspan="2"> + <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" width="80%"> + <div style="letter-spacing: 1px;margin-top: 1px; text-align: center"> + <span>{{this.matnr}}</span> + </div> + </td> + </tr> + <tr style="height: 74px"> + <td align="center" colspan="1">鐗╂枡鍗曚綅</td> + <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.unit}}</td> + </tr> + </table> + {{/each}} +</script> + </body> </html> -- Gitblit v1.9.1