【插件】UNI APP 实现商米打印机功能支持T1,T2,V2机型

哈根达斯
2021-06-28 / 9 评论 / 816 阅读 / 正在检测是否收录...

uniapp 是目前比较主流的开发框架支持一套代码多端部署,本文主要讲解uniapp如何使用商米机型实现打印,扫码,开钱箱等功能实现

文章索引

适用机器

本插件已测试商米机型 V2手持机 T1,T2 ,大家看好收银机牌子和机型,,商米收银机V2手持机 T1,T2!商米收银机V2 T1,T2!商米收银机V2 T1,T2!重要的事情要说3次,其他的机子尚未经过测试,如有问题可联系作者

插件功能

  1. 实现商超类型票据打印,适配58mm,80mm页面纸张类型
  2. 实现收银机USB外接扫码枪获取商品条码,原理通过广播监听扫码数据,并回调通知收扫码结果,无需使用input组件。(解决input组件弹出键盘问题,失去焦点无法获取内容问题)
  3. 钱箱功能
  4. 切刀功能(仅支持有切刀的机型)
  5. 台式机主副屏通信

插件不足

因为票据模板内容各方有不同的需求,无法满足各位的不同显示效果,同时为了考虑插件的易用性,尽可能封装好直接调用,大家也懒得再看一大堆的文档和参数。

打印小票效果

如何使用

代码使用

因为考虑需求比较简单所以再接口设计方面并未考虑太复杂

1. 初始化插件

//引用插件对象以来
const shangMiPrint = uni.requireNativePlugin('G5KJ-ShangMiPrint')
const globalEvent = uni.requireNativePlugin('globalEvent');

//onLoad函数中执行始化插件
onLoad() {
    let _this=this;
    shangMiPrint.init(function(e){
        uni.showModal({
            content:"回调返回结果:"+JSON.stringify(e)
        })        
    })
    //扫码返回
    globalEvent.addEventListener('scancode',function(e){
        uni.showModal({
            content:"回调返回结果:"+JSON.stringify(e)
        })
        _this.code=e.data
    })
}

2. 类超市外卖小票打印

//打印调用
let data={
        title:"广西*****馆",
        subTitel:"收银小票单据",
        orderTotalPrice:"¥59",
        printUser:"收银员校长",
        orderId:"843905060353",
        saleRel:"0776-72939424 李亮",
        goods:[
                {
                    goodName:"植护牌压花纸纸巾/56抽",
                    goodNum:'1',
                    goodNo:'78905060353',
                    goodPrice:'¥17',
                    goodTotalPrice:'¥17'
                },
                {
                    goodName:"植护牌压花纸纸巾/56抽",
                    goodNum:'1',
                    goodNo:'78905060353',
                    goodPrice:'¥17',
                    goodTotalPrice:'¥17'
                },
             ]
       }
    shangMiPrint.printTicket(data,function(e){
        //打印返回结果:{code:ok}
        alert(JSON.stringify(e))
    })

打印字段字典说明

  • data字段说明
字段类型默认注释
titlevarchar(32) 主标题
subTitelvarchar(16) 副标题
orderTotalPricevarchar(20) 实收总金额
printUservarchar(20) 收银员
orderIdvarchar(32)0订单/流水ID
saleRelvarchar(32)0售后联系
goodsarray()0商品品列表
  • data.goods对象字段说明
字段类型默认注释
goodNamevarchar(32) 商品名称
goodNumvarchar(16) 购买数量
goodNovarchar(20) 商品编号
goodPricevarchar(20) 商品单价
goodTotalPricevarchar(32)0合计总价

3. 钱箱相关

//打开钱箱
shangMiPrint.openDrawer(function(e){
    //
    if(e.code=='ok'){
    }
})
//获取钱箱状态
shangMiPrint.getDrawerStatus(function(e){
    //true正常
    if(e.data==true){
    }
})

4. 二维码票务打印


let printData = []
let _this = this
let printTicketItem={
      title: item.commodityName,//主标题
      subTitle: item.saleName,//副标题
      code: item.checkCode,//票码
      indentId: item.indentId,// 订单Id
      useDate: _this.dateFormat(item.useTime, 'YYYY-MM-DD'),//使用时间
      saleDate: _this.dateFormat(item.initime, 'YYYY-MM-DD'),//销售时间
     'remark': '本门票仅限当天使用,欢迎您的到来'
 }
 
shangMiPrint.printTicketTemplet({
          templetId: 'LY01',
          cut: true,
          data: printData//传入数组
        }, function(e) {
            //判断业务漏记
        }
)
        

4. 主副屏通信

//price 为空时,主动关闭副屏
shangMiPrint.showPriceText({
            title: '总金额',
            content: '¥' + a,
            price: a + ""
            }, function() {
  
            }
);
        

客显效果图
kqhfavrq.png

调用方法列表

1. 插件初始化

  • init(func)
    参数func:初始化成功回调

2. 小票打印

  • printTicket(data,func)

参数data:打印数据
参数func:执行回调结果

3. 钱箱相关

  • openDrawer(func)打开钱箱
  • getDrawerStatus (func) 获取钱箱状态

3. 二维码票务打印

  • printTicketTemplet(func)打印带二维码小票(景区票务,排号码等使用)

3. 主副屏通信显示价格

  • showPriceText(func)显示价格(景区票务,排号码等使用)

事件监听

usb接口扫码枪返回条码

  • scancode 事件监听回调

const globalEvent = uni.requireNativePlugin('globalEvent')
onLoad(){
    let _this=this
    globalEvent.addEventListener('scancode',function(e){
        uni.showModal({
            content:"回调返回结果:"+JSON.stringify(e)
        })
        //返回内容:{code:ok,data:'条码\n'}
        _this.code=e.data
    })


}

使用注意问题

  1. 插件使用调试需要先自定义打包基座,在进行测试,自定义基座可查看官方教程。
    https://nativesupport.dcloud.net.cn/NativePlugin/use/use
  2. 使用插件无法打包
    检查是否使用其他商米插件,同类型插件无法共同兼容使用

插件下载

云插件市场可免费试用,请试用没问题后在进行付费购买,购买后不做退款处理 ,因为钱不是打给我的 表情,有其他疑问请在博客中留言

商米内置打印机与扫码插件下载

1

评论 (9)

取消
  1. 头像
    垚垚
    Windows 10 · Google Chrome
    该回复疑似异常,已被系统拦截!
    回复
    1. 头像
      垚垚
      Windows 10 · Google Chrome
      @ 垚垚
      该回复疑似异常,已被系统拦截!
      回复
  2. 头像
    垚垚
    Windows 10 · Google Chrome
    该回复疑似异常,已被系统拦截!
    回复
    1. 头像
      哈根达斯 作者
      Windows 10 · Google Chrome
      @ 垚垚

      测试环境下需要先自定义打包基座,然后在使用自定义基座运行

      回复
  3. 头像
    烈焰
    Windows 10 · Google Chrome

    能支持V1打印吗

    回复
    1. 头像
      哈根达斯 作者
      Windows 10 · Google Chrome
      @ 烈焰

      V1具体没试过,理论应该可以,可以先试用插件看看是否可以使用

      回复
  4. 头像
    神奇海螺
    Windows 10 · Google Chrome

    您好,我这边使用扫码枪接入sdk的时候遇到一个问题,我如果从别的页面通过uni.redirectTo跳到扫码的界面,则globalEvent.addEventListener会多执行一次,如果再跳转一次,则又会多执行一次,也就是执行三次,望解答

    回复
  5. 头像
    Windows 10 · Google Chrome

    接定制开发不?

    回复
  6. 头像
    Windows 10 · Google Chrome

    如果接定制开发,留个联系方式

    回复