HTML/js/hiprint/plugins/print-data-list.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HTML/views/ASNSetting/LabelBox.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HTML/views/ASNSetting/LabelBoxCeShiPrint.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Pda/View/HouseDataSetting/test.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Pda/View/index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Model/ModelDto/BllAsnDto/BoxInfoDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/PdaAsnController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HTML/js/hiprint/plugins/print-data-list.js
@@ -718,6 +718,32 @@ datalist = [ { "type": "text", "title": "条形码", "field": "Img", "tid": "configModule.Img", "editable": true, "columndisplayeditable": true, "columndisplayindexeditable": true, "columntitleeditable": true, "columnresizable": true, "columnaligneditable": true, "columns": null }, { "type": "text", "title": "箱号", "field": "BoxNo", "tid": "configModule.BoxNo", "editable": true, "columndisplayeditable": true, "columndisplayindexeditable": true, "columntitleeditable": true, "columnresizable": true, "columnaligneditable": true, "columns": null }, { "type": "text", "title": "物料编码", "field": "SkuNo", "tid": "configModule.SkuNo", HTML/views/ASNSetting/LabelBox.html
@@ -127,6 +127,9 @@ <button class="layui-btn layui-btn-sm layuiadmin-btn-list layui-btn-danger delLabelClass" style="margin-left: 5px;" lay-event="delLabel" id="delLabel"> <i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除标签 </button> <!-- <button class="layui-btn layui-btn-sm layuiadmin-btn-list layui-btn-normal " style="margin-left: 5px;" lay-event="ceshiLabel" id="ceshiLabel"> <i class="layui-icon layui-icon-print layuiadmin-button-btn"></i>测试打印 </button> --> </div> <!-- 确认出库口弹窗 --> <div class="layui-inline" id="divDelLotNo" style="display: none; padding-top: 10px;"> @@ -291,6 +294,19 @@ , format: 'yyyy-MM-dd' //可任意组合 }); //删除标签 $('#ceshiLabel').on('click', function () { layer.open({ type: 2, title: '测试打印', content: 'LabelBoxCeShiPrint.html', maxmin: true, area: ['430px', '390px'], }); }); // 搜索方法 form.on('submit(LAY-app-contlist-search)', function (data) { bindTable(); HTML/views/ASNSetting/LabelBoxCeShiPrint.html
New file @@ -0,0 +1,173 @@ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>打印模板信息维护</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/hiprint.css?t=' + Math.random() + '" /> <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/print-lock.css" /> <!-- <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/bootstrap.min.css" > --> <style> .layui-form-label { padding: 5px 1px; text-align: center; } div { font-size: inherit; } </style> </head> <body> <div class="layui-card"> <div class="row"> <content style="border-left:1px solid #e8e8e8; "> <!--打印部分--> <div class="layui-col-xs8" style="overflow: hidden;outline: none;"> <!--打印主体部分--> <div style="overflow-x: scroll; overflow-y: hidden;"> <div id="hiprint-printTemplate" class="hiprint-printTemplate" style="margin-top:20px;margin-left:20px;"> </div> </div> <!-- <textarea class="form-control" rows="10" id="A4_textarea_json" style="display: none;"></textarea> --> </div> <div class="layui-col-xs2" style="max-height:260mm; overflow-y: scroll;"> <div id="PrintElementOptionSetting" style="margin-top: 10px;"></div> </div> </content> <!--右侧div--> </div> </div> <script src="../../js/jquery-3.5.1.min.js"></script> <script src="../../js/jquery.cookie.js"></script> <script src="../../js/hiprint/content/bootstrap.min.js"></script> <script src="../../js/HiPrint/hiprint.bundle.js?t=' + Math.random() + '"></script> <script src="../../js/HiPrint/polyfill.min.js"></script> <script src="../../js/HiPrint/plugins/jquery.minicolors.min.js"></script> <script src="../../js/HiPrint/plugins/JsBarcode.all.min.js"></script> <script src="../../js/HiPrint/plugins/qrcode.js"></script> <script src="../../js/HiPrint/plugins/jquery.hiwprint.js"></script> <!-- <script src="../../js/HiPrint/plugins/socket.io.js"></script> --> <script src="../../js/HiPrint/plugins/config-etype-provider.js"></script> <script src="../../js/HiPrint/plugins/print-data-list.js"></script> <script src="../../layuiadmin/layui/layui.js"></script> <script src="../../js/public.js"></script> <script> var datalist = []; var printData = { BoxNo:'B1234567891234567890', SkuNo: '000001', SkuName: '测试物料1', LotNo:'120311', ProductionDate:'2025-02-03', ValidityPeriod:'2026-02-03' }; var printData2 = [{ Img:"123456", BoxNo:'B1234567891234567890', SkuNo: '000001', SkuName: '测试物料1', LotNo:'120311', ProductionDate:'2025-02-03', ValidityPeriod:'2026-02-03' },{ BoxNo:'B1234567891234567891', SkuNo: '000001', SkuName: '测试物料1', LotNo:'120311', ProductionDate:'2025-02-03', ValidityPeriod:'2026-02-03' },{ BoxNo:'B1234567891234567892', SkuNo: '000001', SkuName: '测试物料1', LotNo:'120311', ProductionDate:'2025-02-03', ValidityPeriod:'2026-02-03' },]; var configPrintJson; // layui.config({ // base: '../../layuiadmin/' //静态资源所在路径 // }).extend({ // index: 'lib/index' //主入口模块 // }).use(['index', 'form', 'layer'], function () { // var $ = layui.$, // form = layui.form, // layer = layui.layer; // var istrue = "0"; // }) if ("MaterialLabel") { datalist = getPrintDataList()("MaterialLabel"); } hiprint.init({ providers: [new configElementTypeProvider()] }); let hiprintTemplate; var PositionJson; synData(IP + "/Sys/GetDefaultPrintTemplate", {Type:"MaterialLabel"}, 'get', function (res) { console.log(res); if (res.code == 0) //成功 { PositionJson = res.data.PositionJson; } else //不成功 { layer.msg(res.msg, { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }, function () { doing = true; }); } }); if (PositionJson) var JsonData = JSON.parse(PositionJson) if (JsonData) { console.log(JsonData); $("#customWidth").val(JsonData.panels[0].width); $("#customHeight").val(JsonData.panels[0].height); hiprintTemplate = new hiprint.PrintTemplate({ template: JsonData,//模板JSON settingContainer: '#PrintElementOptionSetting', paginationContainer: '.hiprint-printPagination' }); } else { hiprintTemplate = new hiprint.PrintTemplate({ template: configPrintJson,//模板JSON settingContainer: '#PrintElementOptionSetting', paginationContainer: '.hiprint-printPagination' }); } //打印设计 hiprintTemplate.design('#hiprint-printTemplate'); hiprintTemplate.print(printData2); // $('#directPrint').click(function () { // hiprintTemplate.print(printData2); // }); </script> </body> </html> Pda/View/HouseDataSetting/test.html
New file @@ -0,0 +1,371 @@ <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="user-scalable=0,width=device-width,initial-scale=1.0" /> <!-- <meta name="viewport" content="width=device-width, initial-scale=0.665, minimum-scale=0.5, maximum-scale=2.0, user-scalable=no" /> --> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Boxline PDA</title> <link rel="stylesheet" href="/layui/css/layui.css" /> <link rel="stylesheet" href="/css/style.css" /> <script src="/js/adaptive.js"></script> <link rel="stylesheet" href="/css/my.css" /> <link rel="stylesheet" href="/css/adapter.css" /> <style type="text/css"> .layout-bill-info { height: 255px; } .layout-tbl-submit { margin-top: 10px; } </style> </head> <body> <div id="" class="main-content"> <div id="" class="layout-title"> <table border="" cellspacing="" cellpadding=""> <tr> <td class="img-back"><a href="../index.html"><img src="/assets/back.jpg" ></a></td> <td class="title-text">标签打印</td> <td class="title-menu-icon"><img id="menuImg" src="/assets/menu.jpg" ></td> </tr> </table> </div> <div id="" class="layout-sub-content"> <div id="menuList" class="menu"> <ul class="" style="text-align: center;"> <li><a href="../index.html">主页</a></li> <!-- <li><a href="productEnterConfirm.html">入库信息确认</a></li> --> <li><a href="../login.html">重新登录</a></li> </ul> </div> <div> <button id="click" class="layout-btn" type="button" style="background-color: #999; width: 100%;text-align: center; margin-top: 2px;">连接蓝牙</button> <!-- <button id="option2" class="layout-btn" type="button" style="background-color: #999; width: 50%;float: left;text-align: center;">数量</button> --> </div> <div id="zongDiv2" class="layout-bill-info" style="height: 255px;"> <form class="layui-form" id="form2" action=""> <div id="" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label" lang>入库单:</label> <div class="layui-input-block" id="selectDiv"> <select id="bar" lay-filter="getbar" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> <div class="layui-form-item layout-dropdownlist" style="margin-top: 10px;"> <label class="layui-form-label">物料-批次:</label> <div class="layui-input-block" id="goodDiv"> <select id="goodSelect" lay-filter="goodSelect" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> <table class="layout-tbl-input" border="" cellspacing="" cellpadding=""> <tr> <td> <div id="" class="layui-form-item layout-boxinfo"> <label class="layui-form-label" lang style="width: 21%;">生产日期:</label> <div class="layui-input-block" style="width: 79%;margin-left: 21%;"> <input id="date1" type="text" disabled placeholder="" autocomplete="off" class="layui-input"> </div> </div> </td> </tr> <tr> <td> <div id="" class="layui-form-item layout-boxinfo"> <label class="layui-form-label" lang style="width: 21%;">有效期:</label> <div class="layui-input-block" style="width: 79%;margin-left: 21%;"> <input id="date2" type="text" disabled placeholder="" autocomplete="off" class="layui-input"> </div> </div> </td> </tr> <tr> <td> <div id="" class="layui-form-item layout-boxinfo"> <label class="layui-form-label" lang style="width: 21%;">标签数量:</label> <div class="layui-input-block" style="width: 79%;margin-left: 21%;"> <input id="BoxCount" type="text" disabled placeholder="" autocomplete="off" class="layui-input"> </div> </div> </td> </tr> </table> <table class="layout-tbl-submit" border="" cellspacing="" cellpadding=""> <tr> <td style="width: 23%;"></td> <td> <button id="click2" class="layout-btn layout-btn-red" lang type="button" lay-submit lay-filter="formBind">打印标签</button> </td> <td style="width: 33%;"></td> </tr> </table> </form> </div> <div id="" class="layout-bill-info"> <!-- <p id="messageText"></p> --> </div> </div> </div> <script src="/js/jquery-3.5.1.min.js"></script> <script src="/layui/layui.js"></script> <script src="/js/public.js"></script> <script src="/js/jquery.cookie.js"></script> <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script> <script> var dataLists; layui.use(['form', 'jquery'], function() { var form = layui.form $("#menuImg").click(function(e){ //console.log("menuImg") e.stopPropagation() if($("#menuList").is(":hidden")){ $("#menuList").show() }else{ $("#menuList").hide() } }) $('body').click(function(){ // //console.log("body") $("#menuList").hide() }) //点击入库单据下拉框事件 $("#selectDiv").click(function () { var input = $('select[id="bar"]').next().find('.layui-select-title input') var val = input.val() //先更新一下入库单 updateBillList(function (data) { $('select[id="bar"]').next().addClass('layui-form-selected') $('select[id="bar"]').next().find('.layui-select-title input').val(val) }) }) //选中单据事件 form.on('select(getbar)', function (data) { updateGoodList() setOrderGoods(); }); //选中物料事件 form.on('select(goodSelect)', function (data) { setOrderGoods(); }); /* 获取入库单信息 */ function updateBillList(callback) { var input = $('select[id="bar"]').next().find('.layui-select-title input') var val = input.val() $("#bar").empty() $("#bar").append('<option value =>' + '</option>'); form.render('select'); var param = { //Type: "0,3" }; sendData(IP + "/PdaAsn/GetPasteAsnNoStrList", param, 'post', function (res) { if (res.code == 0) { //成功 console.log(res.data); for (var i = 0; i < res.data.length; i++) { $("#bar").append('<option value =' + res.data[i] + '>' + res.data[i] +'</option>'); } form.render('select'); if (!val) { $('#bar').siblings("div.layui-form-select").find('dl').find('.layui-select-tips').addClass('layui-this') } else { var sel = 'dd[lay-value=' + val + ']'; $('#bar').siblings("div.layui-form-select").find('dl').find(sel).addClass('layui-this') } callback(res.data) } else { //不成功 // layer.msg(res.msg, { // icon: 2, // time: 2000 //2秒关闭(如果不配置,默认是3秒) // }, function() {}); } }); } /* 绑定入库单物料及批次 */ function updateGoodList(skuNo) { var input = $('select[id="goodSelect"]').next().find('.layui-select-title input') var val = input.val() $("#goodSelect").empty() $("#goodSelect").append('<option value =>' + '</option>'); var param = { AsnNo: $("#bar").val(), }; synData(IP + "/PdaAsn/GetBindArrivalNoticeDetails", param, 'post', function (res) { if (res.code == 0) { //成功 asnDetails = res.data; if (asnDetails.length <= 0) { layer.msg('当前单据下不存在贴标物料', { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } for (var i = 0; i < res.data.length; i++) { if (skuNo != '' && skuNo == res.data[i].SkuNo) { if (res.data[i].LotNo == '' || res.data[i].LotNo == null) { $("#goodSelect").append('<option value =' + res.data[i].Id + '-' + i + ' selected>' + res.data[i] .SkuName + '</option>'); } else { $("#goodSelect").append('<option value =' + res.data[i].Id + '-' + i + ' selected>' + res.data[i] .SkuName + "-" + res.data[i].LotNo + '</option>'); } } else { if (i == 0) { if (res.data[i].LotNo == '' || res.data[i].LotNo == null) { $("#goodSelect").append('<option value =' + res.data[i].Id + '-' + i + ' selected>' + res.data[i] .SkuName + '</option>'); } else { $("#goodSelect").append('<option value =' + res.data[i].Id + '-' + i + ' selected>' + res.data[i] .SkuName + "-" + res.data[i].LotNo + '</option>'); } } else { if (res.data[i].LotNo == '' || res.data[i].LotNo == null) { $("#goodSelect").append('<option value =' + res.data[i].Id + '-' + i + '>' + res.data[i] .SkuName + '</option>'); } else { $("#goodSelect").append('<option value =' + res.data[i].Id + '-' + i + '>' + res.data[i] .SkuName + "-" + res.data[i].LotNo + '</option>'); } } } } form.render('select'); if (!val) { $('#goodSelect').siblings("div.layui-form-select").find('dl').find('.layui-select-tips').addClass('layui-this') } else { var sel = 'dd[lay-value=' + val + ']'; $('#goodSelect').siblings("div.layui-form-select").find('dl').find(sel).addClass('layui-this') } } }) } // 根据入库明细ID 获取详细信息 function setOrderGoods() { $("#date1").val(""); $("#date2").val(""); $("#BoxCount").val(""); var param = { AsnNo:$("#bar").val(), AsnDetailNo: parseInt($("#goodSelect").val()) }; synData(IP + "/PdaAsn/GetBoxCountByAsn", param, 'post', function (res) { console.log(JSON.stringify(res)) if (res.code == 0 && res.data != null) { //成功 dataLists = res.data; $("#date1").val(res.data.Date1); $("#date2").val(res.data.Date2); if (res.data.BoxNoList!=null) { $("#BoxCount").val(res.data.BoxNoList.length); } } }); } }) document.addEventListener("UniAppJSBridgeReady", function () { document.getElementById("click").addEventListener("click", function () { let data = { type: "search" }; console.log("给 uni-app 发送数据", data); uni.postMessage({ data: data, }); }); document.getElementById("click2").addEventListener("click", function () { let data = { type: "print", listData:dataLists // { // SkuNo:'541100554848', // SkuName:'葡萄糖葡萄糖葡萄糖葡萄糖葡萄糖', // LotNo:'120326', // Date1:'2025-04-10', // Date2:'2026-04-10', // BoxNo:['T2300001','T2300002','T2300003'], // } // lstData: { // name: "Iuhuy", // avatar: // "http://thirdwx.qlogo.cn/mmopen/vi_32/EURpungADj4vP3UczBVvD1DcEUt9q7WFqc6mZlSZoXoS9PyaPicnX8pjmic0rLbmwYCSa247gibINd1dWr0ic1QTvw/132", // }, }; console.log("给 uni-app 发送数据", data); uni.postMessage({ data: data, }); }); }); </script> <script type="text/javascript"> // window.jsfunction = function (data) { // let canshutype = typeof data; // let mes = typeof data == "object" ? JSON.stringify(data) : data; // alert("收到参数" + canshutype); // document.getElementById("messageText").innerHTML = // "恭喜你,接收到你的参数\n,参数是" + canshutype + "参数如下:\n" + mes; // console.log("data", data); // }; </script> </body> </html> Pda/View/index.html
@@ -203,6 +203,11 @@ $("#kuNei").append(html); } }); var html2 = `<a href="/View/HouseDataSetting/test.html" style="width: 50%; margin-top: 10px;"> <button type="button" class="mybtn-primary" lang>标签打印</button> </a>`; $("#ruKu").append(html2); } } } else { //不成功 Wms/Model/ModelDto/BllAsnDto/BoxInfoDto.cs
@@ -1,4 +1,5 @@ using System; using System.Collections.Generic; namespace Model.ModelDto { @@ -210,4 +211,35 @@ /// </summary> public string ImgStr { get; set; } } public class BoxListInfoDto { /// <summary> /// 箱码集合 /// </summary> public List<string> BoxNoList { get; set; } /// <summary> /// 物料编码 /// </summary> public string SkuNo { get; set; } /// <summary> /// 物料名称 /// </summary> public string SkuName { get; set; } /// <summary> /// 批次号 /// </summary> public string LotNo { get; set; } /// <summary> /// 生产日期 /// </summary> public string Date1 { get; set; } /// <summary> /// 有效期 /// </summary> public string Date2 { get; set; } } } Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -1847,6 +1847,51 @@ } } /// <summary> /// 根据单据获取标签数量 /// </summary> /// <param name="asnNo">入库单</param> /// <param name="asnDetailId">入库单明细号</param> /// <returns></returns> public BoxListInfoDto GetBoxCountByAsn(string asnNo,int? asnDetailId) { try { var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == asnDetailId); if (detail == null) { throw new Exception("没有查询到单据明细信息"); } var data = new BoxListInfoDto() { SkuNo = detail.SkuNo, SkuName = detail.SkuName, LotNo = detail.LotNo, }; //获取状态是未组托的标签信息 var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId ).GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }).Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0" foreach (var item in models) { var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList(); if (boxNoList.Count > 0) { data.BoxNoList = boxNoList; data.Date1 = item.ProductionTime.ToString(); data.Date2 = item.ExpirationTime.ToString(); break; } } return data; } catch (Exception ex) { throw ex; } } #endregion Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs
@@ -18,8 +18,8 @@ List<string> GetPasteAsnNoStrList(); //获取不需要贴标签的入库单 单据号集合 List<string> GetNoPasteAsnNoStrList(); //根据单据获取标签数量 BoxListInfoDto GetBoxCountByAsn(string asnNo, int? asnDetailId); #endregion Wms/Wms/Controllers/PdaAsnController.cs
@@ -212,9 +212,33 @@ } } /// <summary> /// 根据单据获取标签数量 /// </summary> /// <param name="model">ASNNo:入库单、ASNDetailNo:入库单明细号</param> /// <returns></returns> [HttpPost] public IActionResult GetBoxCountByAsn(PalletBindVm model) { try { var list = _PdaAsnSvc.GetBoxCountByAsn(model.ASNNo,model.ASNDetailNo); return Ok(new { code = 0, msg = "根据单据获取标签数量", data= list}); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } //---------------------------------------------申请入库页面---------------------------------------------------------------------- #endregion