优化打印
This commit is contained in:
parent
d08ef6f271
commit
6df40c8423
|
|
@ -1 +1,86 @@
|
||||||
"use strict";const s=require("path"),e=require("electron");let t;e.app.whenReady().then(()=>{t=new e.BrowserWindow({title:"银收客",width:1024,height:768,fullscreenable:!0,fullscreen:!process.env.VITE_DEV_SERVER_URL,simpleFullscreen:!0,frame:!!process.env.VITE_DEV_SERVER_URL,webPreferences:{nodeIntegration:!0,contextIsolation:!1}}),process.env.VITE_DEV_SERVER_URL?t.loadURL(process.env.VITE_DEV_SERVER_URL):t.loadFile(s.resolve(__dirname,"../dist/index.html")),e.app.on("activate",()=>{e.BrowserWindow.getAllWindows().length===0&&createWindow()}),e.ipcMain.on("quitHandler",(r,n)=>{e.app.quit()}),e.ipcMain.on("getPrintList",()=>{t.webContents.getPrintersAsync().then(r=>{t.webContents.send("printList",r)})});const i=new e.BrowserWindow({show:!1,width:464,height:1726,webPreferences:{nodeIntegration:!0,contextIsolation:!1}});process.env.VITE_DEV_SERVER_URL?i.loadFile(s.join(__dirname,"../public/print.html")):i.loadFile(s.resolve(__dirname,"../dist/print.html")),e.ipcMain.on("printerInfoSync",(r,n)=>{i.webContents.send("getParams",n)}),e.ipcMain.on("printStart",(r,n)=>{console.log(n);let o=JSON.parse(n).deviceName;i.webContents.print({silent:!0,deviceName:o,pageSize:{width:58e3,height:216e3},scaleFactor:80,landscape:!1,margins:{marginType:"none",top:0,bottom:0,left:0,right:0},dpi:{horizontal:203,vertical:203}})})});e.app.on("window-all-closed",()=>{process.platform!=="darwin"&&e.app.quit()});
|
"use strict";
|
||||||
|
const path = require("path");
|
||||||
|
const electron = require("electron");
|
||||||
|
let win;
|
||||||
|
electron.app.whenReady().then(() => {
|
||||||
|
win = new electron.BrowserWindow({
|
||||||
|
title: "银收客",
|
||||||
|
width: 1024,
|
||||||
|
height: 768,
|
||||||
|
fullscreenable: true,
|
||||||
|
fullscreen: process.env.VITE_DEV_SERVER_URL ? false : true,
|
||||||
|
simpleFullscreen: true,
|
||||||
|
frame: process.env.VITE_DEV_SERVER_URL ? true : false,
|
||||||
|
webPreferences: {
|
||||||
|
// 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法
|
||||||
|
nodeIntegration: true,
|
||||||
|
contextIsolation: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (process.env.VITE_DEV_SERVER_URL) {
|
||||||
|
win.loadURL(process.env.VITE_DEV_SERVER_URL);
|
||||||
|
} else {
|
||||||
|
win.loadFile(path.resolve(__dirname, "../dist/index.html"));
|
||||||
|
}
|
||||||
|
electron.app.on("activate", () => {
|
||||||
|
if (electron.BrowserWindow.getAllWindows().length === 0) {
|
||||||
|
createWindow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
electron.ipcMain.on("quitHandler", (_, msg) => {
|
||||||
|
electron.app.quit();
|
||||||
|
});
|
||||||
|
electron.ipcMain.on("getPrintList", () => {
|
||||||
|
win.webContents.getPrintersAsync().then((res) => {
|
||||||
|
win.webContents.send("printList", res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const printWin = new electron.BrowserWindow({
|
||||||
|
show: false,
|
||||||
|
width: 464,
|
||||||
|
height: 1726,
|
||||||
|
webPreferences: {
|
||||||
|
// 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法
|
||||||
|
nodeIntegration: true,
|
||||||
|
contextIsolation: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (process.env.VITE_DEV_SERVER_URL) {
|
||||||
|
printWin.loadFile(path.join(__dirname, "../public/print.html"));
|
||||||
|
} else {
|
||||||
|
printWin.loadFile(path.resolve(__dirname, "../dist/print.html"));
|
||||||
|
}
|
||||||
|
electron.ipcMain.on("printerInfoSync", (event, arg) => {
|
||||||
|
printWin.webContents.send("getParams", arg);
|
||||||
|
});
|
||||||
|
electron.ipcMain.on("printStart", (event, arg) => {
|
||||||
|
console.log(arg);
|
||||||
|
const _parmas = JSON.parse(arg);
|
||||||
|
let name = _parmas.deviceName;
|
||||||
|
printWin.webContents.print({
|
||||||
|
silent: true,
|
||||||
|
deviceName: name,
|
||||||
|
pageSize: {
|
||||||
|
width: 58e3,
|
||||||
|
height: 216e3
|
||||||
|
},
|
||||||
|
scaleFactor: 80,
|
||||||
|
landscape: false,
|
||||||
|
margins: {
|
||||||
|
marginType: "none",
|
||||||
|
top: 0,
|
||||||
|
bottom: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0
|
||||||
|
},
|
||||||
|
dpi: {
|
||||||
|
horizontal: 203,
|
||||||
|
vertical: 203
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
electron.app.on("window-all-closed", () => {
|
||||||
|
if (process.platform !== "darwin")
|
||||||
|
electron.app.quit();
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ const props = defineProps({
|
||||||
const isPrint = ref(true);
|
const isPrint = ref(true);
|
||||||
|
|
||||||
const printList = ref([]);
|
const printList = ref([]);
|
||||||
|
const localPrintList = ref([])
|
||||||
|
|
||||||
// 获取打印机状态
|
// 获取打印机状态
|
||||||
async function bySubTypeAjax() {
|
async function bySubTypeAjax() {
|
||||||
|
|
@ -122,24 +123,53 @@ async function bySubTypeAjax() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取本地打印机列表
|
||||||
|
function getPrintList() {
|
||||||
|
ipcRenderer.send("getPrintList");
|
||||||
|
ipcRenderer.on("printList", (event, arg) => {
|
||||||
|
localPrintList.value = arg;
|
||||||
|
console.log(localPrintList.value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查本地打印机是否能正常使用
|
||||||
|
function checkLocalPrint(deviceName) {
|
||||||
|
let print = ''
|
||||||
|
for (let item of localPrintList.value) {
|
||||||
|
if (item.name == deviceName) {
|
||||||
|
print = item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!print.name || !print.status) {
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 打印操作
|
// 打印操作
|
||||||
async function printHandle() {
|
async function printHandle() {
|
||||||
try {
|
try {
|
||||||
if (!isPrint.value) return;
|
if (!isPrint.value) return;
|
||||||
if (printList.value.length) {
|
if (printList.value.length) {
|
||||||
const data = {
|
if (!checkLocalPrint(printList.value[0].config.deviceName)) {
|
||||||
shop_name: store.userInfo.merchantName,
|
ElMessage.error("本地打印机无法使用,请检查打印机是否正确连接");
|
||||||
carts: props.cart,
|
} else {
|
||||||
amount: props.amount,
|
const data = {
|
||||||
remark: props.remark,
|
shop_name: store.userInfo.merchantName,
|
||||||
orderInfo: props.orderInfo,
|
carts: props.cart,
|
||||||
deviceName: printList.value[0].config.deviceName,
|
amount: props.amount,
|
||||||
createdAt: dayjs(props.orderInfo.createdAt).format(
|
remark: props.remark,
|
||||||
"YYYY-MM-DD HH:mm:ss"
|
orderInfo: props.orderInfo,
|
||||||
),
|
deviceName: printList.value[0].config.deviceName,
|
||||||
printTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
|
createdAt: dayjs(props.orderInfo.createdAt).format(
|
||||||
};
|
"YYYY-MM-DD HH:mm:ss"
|
||||||
ipcRenderer.send("printerInfoSync", JSON.stringify(data));
|
),
|
||||||
|
printTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
};
|
||||||
|
ipcRenderer.send("printerInfoSync", JSON.stringify(data));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// ElMessage.error("您还没有添加本地打印设备,将使用网络打印");
|
// ElMessage.error("您还没有添加本地打印设备,将使用网络打印");
|
||||||
try {
|
try {
|
||||||
|
|
@ -177,6 +207,7 @@ defineExpose({
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
getPrintList();
|
||||||
bySubTypeAjax();
|
bySubTypeAjax();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue