货无忧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

363 lines
9.5 KiB

// #ifdef APP
const sunmi_print = uni.requireNativePlugin('Sunmi-Print-Inner')
const TTSSpeech = uni.requireNativePlugin("MT-TTS-Speech");
// #endif
const utils={
//一体机打印初始化
init:()=>{
// #ifdef APP
return new Promise((relove, reject)=>{
sunmi_print.connect(res => {
console.log(res)
if(res.connect == "hello"){
console.log("打印机成功连接")
relove(true)
}else{
relove(false)
}
})
})
// #endif
},
//检查打印机状态
getstate:()=>{
// #ifdef APP
return new Promise((relove, reject)=>{
sunmi_print.getPrinterStatus(result => {
console.log("打印机当前状态是:" + result.status)
if(result.status=='running'){
relove(true)
}else{
let title;
switch (result.status){
case 'offline':
title='打印机未连接'
break;
case 'fault':
title='打印机故障'
break;
case 'outpaper':
title='打印机缺纸'
break;
case 'hot':
title='打印机过热'
break;
case 'open':
title='打印机开盖'
break;
case 'error':
title='未知错误'
break;
}
uni.showToast({
title,
icon:"error"
})
relove(false)
}
})
})
// #endif
},
//打印的内容
printxie:async (obj)=>{
// #ifdef APP
let res=await sunmi_print.labelLocate();
console.log(res);
setTimeout(()=>{
sunmi_print.printText({
text:'日期:'+obj.rigthnumer+' ',
align:2,
size:22,
bold:true,
underline:false,
compact:false,
skip:true
})
sunmi_print.printText({
text:obj.title,
align:1,
size:90,
bold:true,
underline:false,
compact:true,
skip:true
})
sunmi_print.printDividingline({
style:0,
height:"3"
}),
sunmi_print.printText({
text:`件数:${obj.number1}`,
align:0,
size:40,
bold:true,
underline:false,
compact:true,
skip:true
})
sunmi_print.printText({
text:obj.leftnumber,
align:0,
size:27,
bold:true,
underline:false,
compact:true,
skip:true
})
sunmi_print.labelOutput()
},2000)
// #endif
},
//蓝牙打印初始化
initbl:()=>{
// #ifdef APP
let deviceList = [];
let main = plus.android.runtimeMainActivity();
let Context = plus.android.importClass("android.content.Context");
let BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager);
let BAdapter = BManager.getAdapter();
plus.android.importClass(BAdapter);
let lists = BAdapter.getBondedDevices();
plus.android.importClass(lists);
let iterator = lists.iterator();
plus.android.importClass(iterator);
while (iterator.hasNext()) {
let d = iterator.next();
plus.android.importClass(d);
let temp = {
name: d.getName(),
address: d.getAddress(),
status: d.getBondState(),
uuids: d.getUuids(),
op: d
};
deviceList.push(temp);
}
return deviceList
// #endif
},
//给蓝牙打印机推送打印的内容
getbl:(dev,text)=>{
// #ifdef APP
let main = plus.android.runtimeMainActivity();
let BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
let UUID = plus.android.importClass("java.util.UUID");
let uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
let BAdapter = BluetoothAdapter.getDefaultAdapter();
let device = BAdapter.getRemoteDevice(dev.address);
plus.android.importClass(device);
let bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
plus.android.importClass(bluetoothSocket);
console.log("开始连接打印机:"+dev.name);
if (!bluetoothSocket.isConnected()) {
bluetoothSocket.connect();
if (bluetoothSocket.isConnected()) {
console.log("设备已连接,开始发送打印文件");
let outputStream = bluetoothSocket.getOutputStream();
plus.android.importClass(outputStream);
// sb(outputStream);
// text+='PRINT\r\n'
console.log(text)
let arrayBuffer = plus.android.invoke(text, 'getBytes', 'gbk');
outputStream.write(arrayBuffer);
// console.log(111111111);
outputStream.flush();
bluetoothSocket.close();
if (!bluetoothSocket.isConnected()) {
console.log("设备已关闭");
}
} else {
uni.showToast({
title: '设备连接失败',
icon:'error',
duration: 2000
});
}
}
// #endif
},
//初始化tts语音引擎
inittts(){
// #ifdef APP
TTSSpeech.init((status) => {
if(status === 0){
console.log('引擎初始化成功')
TTSSpeech.setSpeed(100)
TTSSpeech.getInstallTTS(res => {
console.log(JSON.stringify(res));
let flage=false
res.forEach(v => {
if(v.name=='com.iflytek.speechcloud'){
flage=true
}
console.log(v.label + ': ' +v.name)
})
if(!flage){
// uni.showToast({
// title:'当前未安装语音引擎,前往安装中',
// icon:'none'
// })
uni.showModal({
title: '安装语音引擎',
content: '请选择浏览器下载安装还是直接安装',
cancelText:'浏览器安装',
confirmText:'直接安装',
success: function (res) {
if (res.confirm) {
var fileSaveUrl = plus.io.convertLocalFileSystemURL('static/TTS.apk');
plus.runtime.install( //安装
fileSaveUrl, {
force: true
},
function(res) {
utils.showToast('更新成功,请重新打开APP');
TTSSpeech.setEngine('com.iflytek.speechcloud');
// plus.runtime.restart()
plus.runtime.quit();
}
);
} else if (res.cancel) {
setTimeout(()=>{
plus.runtime.openURL('http://htys.oss-cn-chengdu.aliyuncs.com/htys/5402c622c319fac17c50fe52581cb627.apk')
setTimeout(()=>{
plus.runtime.quit();
},2500)
},1500)
}
}
});
}else{
// uni.showToast({
// title:''
// })
}
})
}else{
console.log('引擎初始化失败')
}
}, 'com.iflytek.speechcloud')
// #endif
},
//语音播报
ttsspke:(text)=>{
// #ifdef APP
console.log('语音播报');
if(!text){return}
TTSSpeech.speak({ text });
// #endif
},
//设置扫描的广播
setting:()=>{
// #ifdef APP
let main=plus.android.runtimeMainActivity()
let deviceAction = 'com.android.server.scannerservice.broadcast'
let strdata='scannerdata'
let Intent = plus.android.importClass('android.content.Intent')
let intentSetting = new Intent("com.android.scanner.service_settings")
//设置条码发送方式
//"FOCUS":焦点录入
//"BROADCAST":广播
//"EMUKEY":模拟按键
//"CLIPBOARD":剪贴板
intentSetting.putExtra("barcode_send_mode", "BROADCAST");
//设置Action
intentSetting.putExtra("action_barcode_broadcast", deviceAction)
//设置返回状态: getstringExtra键值
intentSetting.putExtra("key_barcode_broadcast", strdata)
// 提交设置
console.log('广播动作:'+ deviceAction +',接受的标签值:' + strdata );
main.sendBroadcast(intentSetting)
// #endif
},
//获取当前APP的版本信息
getversion:()=>{
return new Promise((relove, reject)=>{
// #ifdef APP
//获取当前的包名
let main = plus.android.runtimeMainActivity();
let pkName = main.getPackageName();
// 获取当前应用版本号
plus.runtime.getProperty(plus.runtime.appid, (info) => {
console.log(info.version, pkName);
let obj = {
version: info.version,
pkName
}
relove(obj)
})
// #endif
})
},
//执行下载更新(apk和wgt都可以)
updatefile:(file)=>{
// #ifdef APP
const downloadTask = uni.downloadFile({ //执行下载
url: file, //下载地址
success: downloadResult => { //下载成功
if (downloadResult.statusCode == 200) {
// console.log('downloadResult','downloadResult');
plus.runtime.install( //安装
downloadResult.tempFilePath, {
force: true
},
function(res) {
uni.showToast({
title:"安装成功",
icon:2000,
duration:1000
})
setTimeout(function(){
plus.runtime.restart();
},1100)
}
);
}
}
});
var showLoading = plus.nativeUI.showWaiting("正在下载", {back: "none"});
downloadTask.onProgressUpdate((res) => {
showLoading.setTitle(" 正在下载" + res.progress + "% ");
if (res.progress == 100) {
plus.nativeUI.closeWaiting();
}
});
// #endif
},
//执行下载更新(无感)(wgt)
updatefile1:(file)=>{
// #ifdef APP
const downloadTask = uni.downloadFile({ //执行下载
url: file, //下载地址
success: downloadResult => { //下载成功
if (downloadResult.statusCode == 200) {
// console.log('downloadResult','downloadResult');
plus.runtime.install( //安装
downloadResult.tempFilePath, {
force: true
},
function(res) {
setTimeout(function(){
plus.runtime.restart();
},1100)
}
);
}
}
});
// var showLoading = plus.nativeUI.showWaiting("正在下载", {back: "none"});
// downloadTask.onProgressUpdate((res) => {
// showLoading.setTitle(" 正在下载" + res.progress + "% ");
// if (res.progress == 100) {
// plus.nativeUI.closeWaiting();
// }
// });
// #endif
},
}
export default utils