161 lines
5.4 KiB
JavaScript
161 lines
5.4 KiB
JavaScript
import path from "path";
|
||
import { app, BrowserWindow, ipcMain } from "electron";
|
||
const { PosPrinter } = require("electron-pos-printer-vue");
|
||
|
||
let win;
|
||
app.whenReady().then(() => {
|
||
win = new 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,
|
||
},
|
||
});
|
||
|
||
// You can use `process.env.VITE_DEV_SERVER_URL` when the vite command is called `serve`
|
||
if (process.env.VITE_DEV_SERVER_URL) {
|
||
win.loadURL(process.env.VITE_DEV_SERVER_URL);
|
||
// 使用vite开发服务的url路径访问应用
|
||
// win.webContents.openDevTools();
|
||
} else {
|
||
win.loadFile(path.resolve(__dirname, "../dist/index.html")); // 打包后使用文件路径访问应用
|
||
}
|
||
|
||
app.on("activate", () => {
|
||
// 在 macOS 系统内, 如果没有已开启的应用窗口
|
||
// 点击托盘图标时通常会重新创建一个新窗口
|
||
if (BrowserWindow.getAllWindows().length === 0) {
|
||
createWindow();
|
||
}
|
||
});
|
||
|
||
ipcMain.on("quitHandler", (_, msg) => {
|
||
app.quit();
|
||
});
|
||
|
||
// 创建打印小票子窗口
|
||
// const printWin = new BrowserWindow({
|
||
// show: true,
|
||
// webPreferences: {
|
||
// // 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法
|
||
// nodeIntegration: true,
|
||
// contextIsolation: false,
|
||
// },
|
||
// });
|
||
|
||
// if (process.env.VITE_DEV_SERVER_URL) {
|
||
// // 加载打印的html文件
|
||
// printWin.loadFile(path.join(__dirname, "../public/print.html"));
|
||
// } else {
|
||
// printWin.loadFile(path.resolve(__dirname, "../dist/print.html")); // 打包后使用文件路径访问应用
|
||
// }
|
||
|
||
// win.webContents.getPrintersAsync().then(res => {
|
||
// // console.log('list', res)
|
||
// })
|
||
|
||
// ipcMain.on("printerInfoSync", (event, params) => {
|
||
// // console.log(JSON.parse(params))
|
||
// printWin.webContents.send("getParams", params);
|
||
// });
|
||
|
||
// 执行打印操作
|
||
ipcMain.on('printStart', (event, arg) => {
|
||
console.log('开始打印', arg)
|
||
|
||
let name = 'Xprinter XP-365B'
|
||
// let name = 'Generic / Text Only'
|
||
|
||
const options = {
|
||
silent: true,
|
||
preview: false, // width of content body
|
||
margin: '0 0 0 0', // margin of content body
|
||
copies: 1, // Number of copies to print
|
||
printerName: name, // printerName: string, check with webContent.getPrinters()
|
||
// timeOutPerLine: 400,
|
||
pageSize: { height: 22860, width: 30480 } // page size
|
||
}
|
||
|
||
const data = [
|
||
{
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
}, {
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table
|
||
value: '#B5 B6',
|
||
style: { "font-weight": "700", "font-size": "18px" }
|
||
},
|
||
{
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table'
|
||
value: '喔喔奶茶 x100',
|
||
style: { "font-size": "18px" },
|
||
},
|
||
{
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table'
|
||
value: '麻辣味',
|
||
style: { "font-size": "18px" },
|
||
},
|
||
{
|
||
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table'
|
||
value: '03-08 16:32 ¥123.00',
|
||
style: { "font-size": "18px" },
|
||
}
|
||
]
|
||
|
||
PosPrinter.print(data, options)
|
||
.then(() => { })
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
|
||
// printWin.webContents.print({
|
||
// silent: true,
|
||
// deviceName: name,
|
||
// pageSize: {
|
||
// width: 30480,
|
||
// height: 22860
|
||
// }
|
||
// })
|
||
})
|
||
});
|
||
|
||
app.on("window-all-closed", () => {
|
||
if (process.platform !== "darwin") app.quit();
|
||
});
|