更新记录

v1.2(2021-06-29)

  1. 更新文档说明
  2. 更新T1,T2副屏显示价格功能

v1.1(2020-12-10)

2020年12月10日 (v1.1)

  1. 更新钱箱功能
  2. 更新门票模板功能

v1.0(2020-11-26)

2020年11月26

  1. 实现内置打印机小票打印功能
  2. 实现USB外接扫码枪识别功能
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 9.0 armeabi-v7a:支持,arm64-v8a:未测试,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


适用机器

本插件已测试商米机型 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字段说明
字段 类型 默认 注释
title varchar(32) 主标题
subTitel varchar(16) 副标题
orderTotalPrice varchar(20) 实收总金额
printUser varchar(20) 收银员
orderId varchar(32) 0 订单/流水ID
saleRel varchar(32) 0 售后联系
goods array() 0 商品品列表
  • data.goods对象字段说明
字段 类型 默认 注释
goodName varchar(32) 商品名称
goodNum varchar(16) 购买数量
goodNo varchar(20) 商品编号
goodPrice varchar(20) 商品单价
goodTotalPrice varchar(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() {

            }
);

调用方法列表

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_local_plugin

  2. 使用插件无法打包 检查是否使用其他商米插件,同类型插件无法共同兼容使用

联系我

因篇幅有限,更详操作使用文档可在我的博客中查看,如使用过程中有什么问题可在我的博客中留言,博客文档链接:查看博客

博客文档地址:http://gxxblw.com/2021/06/28/38.html

隐私、权限声明

1. 本插件需要申请的系统权限列表:

蓝牙

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问