From 3b8c76dfb994ac970734d1b01d1d0342c859f2d5 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期五, 15 十二月 2023 14:13:21 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/entity/MatPrint.java | 10 + src/main/java/com/zy/asrs/controller/MatController.java | 30 +++ src/main/webapp/static/js/locInPrintMat/locInPrintMat.js | 84 +++++++++++- src/main/java/com/zy/asrs/controller/LocInPrintMatController.java | 3 src/main/webapp/views/locInPrintMat/locInPrintMat.html | 274 ++++++++++++++++++++++++++++++++------- 5 files changed, 340 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/LocInPrintMatController.java b/src/main/java/com/zy/asrs/controller/LocInPrintMatController.java index d198480..317fb38 100644 --- a/src/main/java/com/zy/asrs/controller/LocInPrintMatController.java +++ b/src/main/java/com/zy/asrs/controller/LocInPrintMatController.java @@ -7,11 +7,14 @@ import com.baomidou.mybatisplus.plugins.Page; import com.core.common.DateUtils; import com.zy.asrs.entity.LocInPrintMat; +import com.zy.asrs.entity.Mat; +import com.zy.asrs.entity.MatPrint; import com.zy.asrs.service.LocInPrintMatService; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; +import com.zy.common.CodeRes; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java index 4395ef8..847dd64 100644 --- a/src/main/java/com/zy/asrs/controller/MatController.java +++ b/src/main/java/com/zy/asrs/controller/MatController.java @@ -10,11 +10,9 @@ import com.core.annotations.ManagerAuth; import com.core.common.*; import com.core.exception.CoolException; -import com.zy.asrs.entity.Mat; -import com.zy.asrs.entity.MatPrint; -import com.zy.asrs.entity.OrderDetl; -import com.zy.asrs.entity.Pakout; +import com.zy.asrs.entity.*; import com.zy.asrs.entity.result.KeyValueVo; +import com.zy.asrs.service.LocInPrintMatService; import com.zy.asrs.service.MatService; import com.zy.asrs.service.PakoutService; import com.zy.asrs.utils.MatExcelListener; @@ -45,6 +43,8 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private PakoutService pakoutService; + @Autowired + private LocInPrintMatService locInPrintMatService; @RequestMapping(value = "/mat/auto/matnr/auth") public R autoMatnr(){ @@ -272,6 +272,28 @@ return R.ok().add(res); } + // 鎵撳嵃 + @RequestMapping(value = "/loc/in/mat/print/auth") + @ManagerAuth(memo = "鍟嗗搧缂栫爜鎵撳嵃") + public R locInMatCodePrint(@RequestParam(value = "param[]") Long[] ids) { + if(Cools.isEmpty(ids)) { + return R.parse(CodeRes.EMPTY); + } + List<MatPrint> res = new ArrayList<>(); + for (Long id : ids){ + LocInPrintMat locInPrintMat = locInPrintMatService.selectById(id); + // 鎵撳嵃鏁版嵁娉ㄥ叆 + MatPrint print = new MatPrint(); + print.setMatnr(locInPrintMat.getMatnr()); + print.setMaktx(locInPrintMat.getMaktx()); + print.setBatch(locInPrintMat.getBatch()); + print.setAnfme(locInPrintMat.getAnfme().toString()); + print.setMemo(locInPrintMat.getMemo()); + res.add(print); + } + return R.ok().add(res); + } + /*************************************** 鏁版嵁鐩稿叧 ***********************************************/ diff --git a/src/main/java/com/zy/asrs/entity/MatPrint.java b/src/main/java/com/zy/asrs/entity/MatPrint.java index 486d708..2d5640a 100644 --- a/src/main/java/com/zy/asrs/entity/MatPrint.java +++ b/src/main/java/com/zy/asrs/entity/MatPrint.java @@ -34,6 +34,16 @@ private String specs; /** + * 鐗╂枡鎵规 + */ + private String batch; + + /** + * 鏁伴噺 + */ + private String anfme; + + /** * 澶囨敞 */ private String memo; diff --git a/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js b/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js index d5bea19..e07f8a8 100644 --- a/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js +++ b/src/main/webapp/static/js/locInPrintMat/locInPrintMat.js @@ -24,15 +24,15 @@ {type: 'checkbox'} ,{field: 'id', align: 'center',title: 'ID',hide : true} ,{field: 'uuid', align: 'center',title: '缂栧彿',hide: true} - ,{field: 'status$', align: 'center',title: '鎵撳嵃鎯呭喌',hide: false} - ,{field: 'matnr', align: 'center',title: '鐗╂枡缂栫爜',hide: false} - ,{field: 'batch', align: 'center',title: '鎵规',hide: false} - ,{field: 'anfme', align: 'center',title: '閲嶉噺(kg)',hide: false} - ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�',hide: false} + ,{field: 'status$', align: 'center',title: '鎵撳嵃鎯呭喌', width:100,hide: false} + ,{field: 'matnr', align: 'center',title: '鐗╂枡缂栫爜', width:180,hide: false} + ,{field: 'batch', align: 'center',title: '鎵规', width:100,hide: false} + ,{field: 'anfme', align: 'center',title: '閲嶉噺(kg)', width:100,hide: false} + ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�', width:120,hide: false} ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О',hide: false} ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿',hide: true} - ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳',hide: true} - ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿',hide: false} + ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳', width:100,hide: true} + ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿', width:120,hide: false} ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳',hide: false} ,{field: 'memo', align: 'center',title: '澶囨敞',hide: false} @@ -130,6 +130,29 @@ }); }); break; + // 鎵归噺鎵撳嵃 + case "btnPrintBatch": + printMatCodeNos = []; + var data = checkStatus; + 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].id); + } + }, + end: function () { + } + }); + } + break; } }); @@ -137,6 +160,10 @@ table.on('tool(locInPrintMat)', function(obj){ var data = obj.data; switch (obj.event) { + case 'btnPrint': + layer.msg("搴熷純") + break; + // btnPrint(data.id, data.orderNo, 4); case 'edit': showEditModel(data); break; @@ -225,6 +252,49 @@ tableReload(false); }); + // 妯℃澘閫夋嫨 + 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+"/loc/in/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+";"+res.data[i].batch+";"+res.data[i].anfme+";"+res.data[i].memo+";"+res.data[i].maktx; + } else { + res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].matnr+";"+res.data[i].batch+";"+res.data[i].anfme+";"+res.data[i].memo+";"+res.data[i].maktx; + } + } + var tpl = templateDom.html(); + var template = Handlebars.compile(tpl); + var html = template(res); + var 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) + } + } + }) + }); + // 鏃堕棿閫夋嫨鍣� function layDateRender(data) { setTimeout(function () { diff --git a/src/main/webapp/views/locInPrintMat/locInPrintMat.html b/src/main/webapp/views/locInPrintMat/locInPrintMat.html index 0ca0588..521b438 100644 --- a/src/main/webapp/views/locInPrintMat/locInPrintMat.html +++ b/src/main/webapp/views/locInPrintMat/locInPrintMat.html @@ -9,6 +9,51 @@ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> <link rel="stylesheet" href="../../static/css/cool.css" media="all"> + + <style> + /* ------------------------- 鎵撳嵃琛ㄦ牸 ----------------------- */ + .contain { + border-collapse: collapse; + width: 280px; + font-size: x-small; + table-layout: fixed; + color: black; + } + .contain img.template-qrcode { + width: 80%; + } + .contain td, .contain th { + border: 1px solid black; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 5px; + } + .contain th { + font-weight: bold; + color: black; + background-color: #f2f2f2; + } + .contain tr:nth-child(even){background-color: #f9f9f9;} + .contain strong { + font-weight: bold; + line-height: 20px; + vertical-align: middle; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + } + .barcode-section { + text-align: center; + } + .barcode-section span { + letter-spacing: 1px; + font-weight: bold; + color: black; + } + + </style> </head> <body> @@ -40,8 +85,10 @@ <script type="text/html" id="toolbar"> <div class="layui-btn-container"> - <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button> +<!-- <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>--> <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button> + <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch">鎵归噺鎵撳嵃</button> + <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button> </div> </script> @@ -49,10 +96,14 @@ <script type="text/html" id="operate"> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a> <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a> +<!-- <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint">鎵撳嵃</a>--> + </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/locInPrintMat/locInPrintMat.js" charset="utf-8"></script> @@ -64,12 +115,6 @@ <div class="layui-row"> <div class="layui-col-md12"> <div class="layui-form-item"> - <label class="layui-form-label">缂栧彿: </label> - <div class="layui-input-block"> - <input class="layui-input" name="uuid" placeholder="璇疯緭鍏ョ紪鍙�"> - </div> - </div> - <div class="layui-form-item"> <label class="layui-form-label">鎵撳嵃鎯呭喌: </label> <div class="layui-input-block"> <select name="status"> @@ -77,48 +122,6 @@ <option value="1">鏈墦鍗�</option> <option value="2">宸叉墦鍗�</option> </select> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">娣诲姞鏃堕棿: </label> - <div class="layui-input-block"> - <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">娣诲姞浜哄憳: </label> - <div class="layui-input-block cool-auto-complete"> - <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none"> - <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()> - <div class="cool-auto-complete-window"> - <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> - <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> - </select> - </div> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">淇敼鏃堕棿: </label> - <div class="layui-input-block"> - <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">淇敼浜哄憳: </label> - <div class="layui-input-block cool-auto-complete"> - <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none"> - <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()> - <div class="cool-auto-complete-window"> - <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> - <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> - </select> - </div> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">澶囨敞: </label> - <div class="layui-input-block"> - <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�"> </div> </div> <div class="layui-form-item"> @@ -151,7 +154,12 @@ <input class="layui-input" name="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�"> </div> </div> - + <div class="layui-form-item"> + <label class="layui-form-label">澶囨敞: </label> + <div class="layui-input-block"> + <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�"> + </div> + </div> </div> </div> <hr class="layui-bg-gray"> @@ -161,5 +169,171 @@ </div> </form> </script> + + +<!-- 鎵撳嵃鎿嶄綔寮圭獥 --> +<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" 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.memo}}</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.memo}}</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> + <th>鍟嗗搧</th> + <td colspan="2"><strong>{{this.maktx}}</strong></td> + <td colspan="3" rowspan="4" class="barcode-section" style="white-space: normal; "> + <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" alt="Barcode Image"> + <div><span >{{this.matnr}}</span></div> + </td> + </tr> + <tr> + <th>鎵规</th> + <td colspan="2"><strong>{{this.batch}}</strong></td> + </tr> + <tr> + <th>鏁伴噺</th> + <td colspan="2"><strong>{{this.anfme}}</strong></td> + </tr> + <tr> + <th>澶囨敞</th> + <td colspan="2"><strong>{{this.memo}}</strong></td> + </tr> + </table> + {{/each}} +</script> </html> -- Gitblit v1.9.1