更新记录
1.0.1(2021-03-21) 下载此版本
实现旺 Pos 机打印小票的功能
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
Jcohy-Pos 简介
由于 旺Pos 机只提供了原生的 SDK 在 Pos 机上实现打印小票的功能,所有要在 uni-app 中使用原生的打印功能,需要开发一个 uni-app 原生插件。Jcohy-Pos 原生插件提供了在 Android 端连接 旺 Pos 机,并且提供相关的方法来实现 旺 Pos 机打印功能。使用此插件的应用程序需要安装在 旺Pos 机上才能实现打印。
引用方式
const dcRichAlert = uni.requireNativePlugin('Jcohy-Pos')
在打印的最后一步,必须调用 print() 方法才能实现真正的打印。其余的方法都是在设置打印的内容。调用 destory() 方法可以取消当前已经设置的打印内容。然后进行重新设置。
方法列表
printText(JSONObject options)
(打印文本内容)
参数说明
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
content | String | 内容 | |
fontSize | String | medium | 字体大小:small,large,medium |
fontStyle | String | normal | 字体风格:italic,bold,normal |
center | boolean | false | 是否居中 |
printTable(JSONObject options)
(打印表格)
options 参数说明
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
rows | JSONObject | 表格每一行字段所占用的长度 | |
sort | JSONObject | 表格每一行字段的顺序 | |
header | JSONObject | 表头 | |
data | JSONArray | 表数据 |
注意:rows 中的字段名称必须与 sort,header,datas 中相同。如下示例
var printModule = uni.requireNativePlugin("Jcohy-Pos")
printModule.printTable({
"rows": {
"name": 16,
"count": 6,
"price": 10
},
"sort": {
"count": 2,
"name": 1,
"price": 3
},
"header": {
"name": "商品名称",
"count": "数量",
"price": "金额"
},
"data": [
{
"name": "(特)韭菜猪肉",
"count": "1",
"price": "¥21.0"
},
{
"name": "(特)大家都很爱吃的老牌外婆菜肉泥",
"count": "2",
"price": "¥22.0"
},
{
"name": "(特)珍珠翡翠白玉汤",
"count": "3",
"price": "¥23.0"
},
{
"name": "(特)蚂蚁上树",
"count": "4",
"price": "¥24.0"
},
{
"name": "(特)红色鱼块",
"count": "5",
"price": "¥25.0"
}
]
})
feed(int count)
(进纸数)
参数说明
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
count | int | 进纸数 |
printBarCode(JSONObject options)
(打印条形码)
options 参数说明
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
content | String | 内容 | |
width | int | 条形码宽度 | |
height | int | 条形码高度 |
printQrCode(JSONObject options)
(打印二维码)
options 参数说明
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
content | String | 内容 | |
side | int | 二维码图片长度 | |
gravity | String | 默认居中 | 是否居中:left,right,center |
printSplit()
(打印分割线)
printSplit()
(打印分割线)
print()
(当打印内容设置完成后,需要调用此方法来实现真正的打印)
destory()
销毁当前已经设置的打印内容
示例程序
以下只是部分代码,完整示例请下载插件使用示例工程
<template>
<div>
<button type="primary" @click="testPrint">打印文本测试</button>
<button type="primary" @click="testPrintTable">打印一个订单</button>
</div>
</template>
<script>
// 获取 module
var printModule = uni.requireNativePlugin("Jcohy-Pos")
const modal = uni.requireNativePlugin('modal');
export default {
methods: {
testPrint() {
// 调用异步方法
printModule.printText({
'content': '大众点评',
'fontSize': 'large',
'fontStyle':'bold',
'center':true,
})
printModule.printText({
'content': 'www.dianping.com',
'fontSize': 'medium',
'fontStyle':'bold',
'center':true,
})
printModule.feed(1)
printModule.printSplit()
printModule.printText({
'content': '验证消费成功',
'fontSize': 'large',
'fontStyle':'bold',
'center':true,
})
printModule.printText({
'content': '套餐名:肯德基100元代金券',
'fontSize': 'medium',
'fontStyle':'bold',
'center':false,
})
printModule.printText({
'content': '售价:90元',
'fontSize': 'medium',
'fontStyle':'bold',
'center':false,
})
printModule.printText({
'content': '商户名:KFC(中山公园站)',
'fontSize': 'medium',
'fontStyle':'bold',
'center':false,
})
printModule.printText({
'content': '消费时间:2015-06-07 09:27',
'fontSize': 'medium',
'fontStyle':'bold',
'center':false,
})
printModule.feed(1)
printModule.printSplit()
printModule.printQrCode({
'content':'https://www.baidu.com/',
'side':300,
'gravity':'center'
})
printModule.print();
},
testPrintTable(){
printModule.printText({
'content': '商家名称:大娘水饺',
'fontSize': 'large',
'fontStyle':'bold',
'center':true,
})
printModule.printText({
'content': '营业时间:00:00-23:59',
'fontSize': 'medium',
'fontStyle':'bold',
'center':true,
})
printModule.feed(1)
printModule.printSplit()
printModule.printText({
'content': '[店铺联]\n订单号:123323433453\n下单时间:2015-6-30 17:30\n取货时间:2015-7-5\n联系电话:138-9383-8379\n地址:浙江省瑞安市东山街道竹山路号',
'fontSize': 'medium',
'fontStyle':'normal',
'center':false,
})
printModule.feed(1)
printModule.printTable({
"rows": {
"name": 16,
"count": 6,
"price": 10
},
"sort": {
"count": 2,
"name": 1,
"price": 3
},
"header": {
"name": "商品名称",
"count": "数量",
"price": "金额"
},
"data": [
{
"name": "(特)韭菜猪肉",
"count": "1",
"price": "¥21.0"
},
{
"name": "(特)大家都很爱吃的老牌外婆菜肉泥",
"count": "2",
"price": "¥22.0"
},
{
"name": "(特)珍珠翡翠白玉汤",
"count": "3",
"price": "¥23.0"
},
{
"name": "(特)蚂蚁上树",
"count": "4",
"price": "¥24.0"
},
{
"name": "(特)红色鱼块",
"count": "5",
"price": "¥25.0"
}
]
})
printModule.printText({
'content': '商品总数:2件',
'fontSize': 'small',
'fontStyle':'normal',
'center':false,
})
printModule.printText({
'content': '消费总金额:124.5元',
'fontSize': 'medium',
'fontStyle':'bold',
'center':false,
})
printModule.printSplit()
printModule.printQrCode({
'content': 'https://www.baidu.com/',
'gravity': 'center',
'side':300
})
printModule.printBarCode({
'content': '1234567890',
'width': 500,
'height':60
})
printModule.print(ret => {
modal.toast({
message: ret,
duration: 1.5
});
});
},
gotoNativePage() {
testModule.gotoNativePage();
}
}
}
</script>
使用自定义基座打包,在 旺 Pos 中运行,打印出的效果如下