前端页面生成条形码,借助layui打印标签

借助JsBarcode生成条形码

官网:https://lindell.me/JsBarcode/

github: https://github.com/lindell/JsBarcode

html 复制代码
<div class="table-div" style="display: block;width: 300px; height: 241px; margin: auto;">
    <table border="1" cellspacing="0" cellpadding="3" style=" width: 300px; height: 230px;">
        <tr>
            <td colspan="2" height="80px">
                <div style="text-align: center">
                    <img id="barcode"/>
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2" height="25px">
                <span style="float: left;position: relative;left:3px;font-size: 16px">开发员:${logistics_id}</span>
            </td>
        </tr>
        <tr>
            <td colspan="2" height="25px">
                <span style="float: left;position: relative;left:3px;font-size: 16px">SQE工程师:${logistics_id}</span>
            </td>
        </tr>
        <tr>
            <td colspan="2" height="25px">
                <span style="float: left;position: relative;left:3px;font-size: 16px"> 取样类型:${logistics_id} </span>
            </td>
        </tr>
        <tr>
            <td colspan="2" height="25px">
                <span style="float: left;position: relative;left:3px;font-size: 16px"> 收货地址:${work_address} </span>
            </td>
        </tr>
        <tr>
            <td colspan="2" height="25px">
                <span style="float: left;position: relative;left:3px;font-size: 16px">建资料流水号:${logistics_id}</span>
            </td>
        </tr>
    </table>
</div>
<script src="https://unpkg.com/jsbarcode@latest/dist/JsBarcode.all.min.js"></script>
<script>
    JsBarcode("#barcode", "212313");
    let test = document.getElementById('barcode').getAttribute('src')
    console.log(test)
</script>

打印代码,使用 window.print() 打印页面上局部的数据

html 复制代码
<script>
function print_labels(developer, sqe_person, sampling_type_display, work_address, pid) {
            layui.use(['form', 'layer', 'laydate', 'table', 'laytpl', 'element'], function () {
                var form = layui.form,
                    layer = layui.layer,
                    $ = layui.jquery,
                    laydate = layui.laydate,
                    laytpl = layui.laytpl,
                    element = layui.element,
                    table = layui.table,
                    formSelects = layui.formSelects;
                let logistics_id = $('input[name="logistics_id"]').val()
                if(!logistics_id){
                    layer.msg("请先填写物流单号!");
                }else{
                    JsBarcode("#barcode", logistics_id);
                    let barcode_res = $('#barcode').attr('src')
                    console.log(barcode_res)
                    var headstr = "<html><head></head><body>";
                    var footstr = "</body>";
                    //获得 print_div   里的所有 html 数据(把要打印的数据嵌套在 一个 div 里,获得 div)
                    //var printData = document.getElementById("print").innerHTML;
                    var printData = `
                    <div class="table-div" style="display: block;width: 300px; height: 241px; margin: auto;">
                        <table border="1" cellspacing="0" cellpadding="3" style=" width: 300px; height: 230px;">
                            <tr>
                                <td colspan="2" height="80px">
                                    <div style="text-align: center">
                                        <img id="barcode" src="${barcode_res}"/>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" height="25px">
                                    <span style="float: left;position: relative;left:3px;font-size: 16px">开发员:${developer}</span>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" height="25px">
                                    <span style="float: left;position: relative;left:3px;font-size: 16px">SQE工程师:${sqe_person}</span>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" height="25px">
                                    <span style="float: left;position: relative;left:3px;font-size: 16px"> 取样类型:${sampling_type_display} </span>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" height="25px">
                                    <span style="float: left;position: relative;left:3px;font-size: 16px"> 收货地址:${work_address} </span>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" height="25px">
                                    <span style="float: left;position: relative;left:3px;font-size: 16px">建资料流水号:${pid}</span>
                                </td>
                            </tr>
                        </table>
                    </div>
                    `
                    //获取当前页面的html
                    var oldstr = document.body.innerHTML;
                    //把 headstr+printData+footstr 里的数据 复制给 body 的 html 数据 ,相当于重置了 整个页面的 内容
                    document.body.innerHTML = headstr + printData + footstr;
                    //使用方法为 window.print() 打印页面上局部的数据
                    window.print();
                    document.body.innerHTML = oldstr;
                    setTimeout("parent.layer.closeAll(\"iframe\")", 1000);
                    // parent.layer.closeAll("iframe");

                }

            });
        }
</script>
相关推荐
人工智能培训几秒前
大语言模型:从语言理解到通用智能的跃迁
linux·服务器·前端·人工智能
一拳不是超人11 分钟前
做独立开发三个月,我的第一个产品终于有了 1000 个用户
前端·程序员
Amos_Web21 分钟前
Rspack 源码解析(十):Hash 与 Asset 生成
前端·rust·源码阅读
福兮说23 分钟前
用 IndexedDB 存用户的文件,我踩过的五个坑
前端·javascript
闪耀之光M7824 分钟前
前端依赖自动导入:unplugin-auto-import
前端
Ricon组态薄荷糖38 分钟前
Ricon组态系统:工业组件开发指南与实践
前端·后端·物联网
flash俊杰43 分钟前
Electron 桌面应用的进程模型:为什么 fork Next.js standalone
前端
沙蒿同学1 小时前
我把架构约定编译成了会变红的测试:Wails v2 + Go + Vue3 桌面脚手架实战
前端·后端·github
cpolar技术支持1 小时前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
wordbaby1 小时前
企业级后台管理系统路由设计与最佳实践指南
前端