cashier-paid/pages/index/index.vue

124 lines
3.6 KiB
Vue
Raw Normal View History

2024-05-09 09:48:05 +08:00
<template>
2024-05-15 18:34:11 +08:00
<web-view src="http://192.168.1.55:5178/" @message="onmessage"></web-view>
2024-05-09 09:48:05 +08:00
</template>
2024-05-15 18:34:11 +08:00
<script setup>
import { onLoad, onReady } from "@dcloudio/uni-app"
import { nextTick, reactive, ref } from "vue"
import { getLocationManager, searchDevices, print,
cancelDiscovery } from '@/js_sdk/wangqingzhou311-android-blueTooth/searchDevices.js';
import { commands } from '@/js_sdk/wangqingzhou311-android-blueTooth/command.js';
import * as pos from "@/utils/EscPostUtils.js"
const vw = ref(null); // web-view
onLoad(() => {
// #ifdef APP-PLUS
// plus.screen.lockOrientation('default'); //设置横屏
plus.navigator.setFullscreen(true); //隐藏状态栏
// #endif
getLocationManager(() => {});
})
2024-05-09 09:48:05 +08:00
2024-05-15 18:34:11 +08:00
onReady(() => {
{
// #ifdef APP-PLUS
// plus.screen.lockOrientation('landscape-primary');
nextTick(()=>{
setTimeout(()=>{ //延迟获取webview 否则会获取不到
const pages = getCurrentPages();
vw.value = pages[pages.length - 1].$getAppWebview().children()[0];
}, 3000)
})
// #endif
}
})
const state = reactive({
current: 'esc',
deviceData: [],
data: [
{ id: "12345", width: 100, height: 100, title1: 'title_1', title2: 'title_2', title3: 'title_3' },
],
// deviceId: '86:67:7A:2A:0B:08'
});
const onPrintClick = (str) => {
const stringData = [];
// state.data.forEach(item => {
// // stringData.push(commands(state.current, item));
// let str = '\n';
// str += '********************************\n';
// str += '小票打印测试\n';
// str += '测试商品1 * 1 \t ¥1.00 \n\n';
// str += '测试商品2 * 1 \t ¥1.00 \n\n';
// str += '测试商品3 * 1 \t ¥1.00 \n\n';
// str += '================================\n';
// str += '\n\t\t\t';
// stringData.push(str)
// })
if(str) stringData.push(str);
else return uni.showToast({
title: '不可打印空内容',
icon: 'exception'
})
console.log('打印内容', stringData);
let deviceId = uni.getStorageSync('deviceId');
if(!deviceId) {
let obj = state.deviceData.find(item=>item.name=='T58');
if(!obj) return uni.showToast({
title: '蓝牙未连接到T58打印机, 请检查是否已配对T58打印机',
icon: 'exception'
})
else {
deviceId = obj.address;
}
}
console.log('打印机地址=>', deviceId);
print(deviceId, stringData, () => {
uni.showToast({
title: '打印成功',
duration: 2000,
});
uni.setStorageSync('deviceId', deviceId)
})
}
const onBtnClick = (deviceId) => {
state.deviceId = deviceId;
searchDevices(deviceId);
}
// searchDevices('',state.deviceData);
let t = 1;
// 接收webview消息
const onmessage = (e)=>{
console.log('收到消息', e);
if(e.detail?.data[0]?.type=='print'){
if(e.detail?.data[0]?.content){
onPrintClick(e.detail?.data[0]?.content)
}
}
else if(e.detail?.data[0]?.type=='connect') {
searchDevices('',state.deviceData);
uni.$off('connect');
uni.$once('connect', (e)=>{
uni.hideLoading();
let obj = {
type: 'connect',
data: '打印机已连接'
}
console.log('连接成功',t++);
vw.value.evalJS(`receiveData('${JSON.stringify(obj)}')`);
})
}
}
// // 页面关闭时清除横屏正方向
// onUnload() {
// // #ifdef APP-PLUS
// plus.screen.lockOrientation('portrait-primary');
// // #endif
// },
2024-05-09 09:48:05 +08:00
</script>
<style>
2024-05-15 18:34:11 +08:00
</style>