# 蓝牙小票打印示例 **Repository Path**: in-wechat/BLETicketPrinter-simple ## Basic Information - **Project Name**: 蓝牙小票打印示例 - **Description**: 可参考该示例进行二次开发 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 1 - **Created**: 2022-07-12 - **Last Updated**: 2024-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #欢迎使用微信蓝牙小票打印 > 采用创建打印数据对象,将数据对象传递给打印公共库的方式完成打印,即打印数据对象、打印功能分离,这样只要打印功能实现即可,至于打印啥数据,都可以,数据对象由项目端提供。 若运行此示例,请先将 https://gitee.com/in-wechat/BLETicketPrinter clone到项目根目录BLETicketPrinter下,同时,请更换为自己的小程序测试号ID进行测试运行。 ### 当前项目状态 - [✓] 文字打印 - [✓] 列表表格打印 - [✓] 行内左右分开对齐打印 - [✓] 二维码打印(传递参数为二维码数据即可) > 本示例所使用的蓝牙打印机,纸张宽度为32个字符,请根据自己所用的打印机进行相应的调整参数 ![alt 语法示例](https://www.inphp.cc/assets/images/BLEPrinter.jpg) ```javascript //请参考 pages/index/index.js //注意,这里引入,必须是这么写 import { Printer } from "../../BLETicketPrinter/printer"; //千万不要写成,或者使用自动生成的:import Printer from "../../BLETicketPrinter/printer"; [这样是错误的] Page({ data: { order: { //..... } }, onLoad: function (options) { this.initData(); }, //过程可以选择从服务器获取数据 initData(){ this.setData({ order: { //订单数据 order_id: "202207120513", state_string: "已完成", make_time: "2022年7月12日", time: "2022-07-12 13:14:20", //开单员 employee_name: "幺月儿", employee_phone: "186xxxx8888", //客户信息 customer_name: "张三", customer_phone: "138xxxx8998", //店铺信息 shop_name: "广场中心印刷店", shop_address: "青秀区民族大道xxx号新纪广场", shop_phone: "159xxxx0246", //开单商品列表 sku_list: [ {name: "冰糖黄皮果苗", quantity: 50, price: 12, amount: 10}, {name: "贵妃黄皮果苗", quantity: 20, price: 18, amount: 15}, {name: "黑金刚黄皮果苗", quantity: 30, price: 13, amount: 10}, {name: "用于种植时顺便施肥的肥料", quantity: 20, price: 90, amount: 80} ], //订单金额 sku_amount: 3150, amount: 2500, sku_discount: 450, discount: 200, fee: 0, //商品数量 sku_quantity: 120 } }); }, //打印,注意,我本次打印所使用的设备打印的小票宽度是32个字符,其它机器,请另行调整 print_ing: false, print(){ if(this.print_ing) return; this.print_ing = true; let order = this.data.order; //将订单的商品转换成一个列表,用于打印出一个带表头的表格 let sku_table = []; //表头,一维数组,多少个值代表多少列,这里使用3列 sku_table.push(["名称", "数量", "单价"]); //表格每一行放一个商品 for(let i=0; i { //打印完成会通知该方法,由于是跨页面,不可使用弹窗提醒等方法! } }, success: res => { res.eventChannel.emit("setPrinter", printer); } }); this.print_ing = false; } }); ```