From 635111366194252b5fc935854159ec4384421155 Mon Sep 17 00:00:00 2001 From: 3076 <46446921+3076@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:16:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=BE=E7=BD=AE-=E9=AB=98=E7=BA=A7?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=9C=BA=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/set.html | 24 ++++++++++++++++++++++++ src/print.js | 4 ++++ src/set.js | 20 ++++++++++++++++++++ tools/utils.js | 4 ++++ 4 files changed, 52 insertions(+) diff --git a/assets/set.html b/assets/set.html index b59c7a4..41ad80d 100644 --- a/assets/set.html +++ b/assets/set.html @@ -176,6 +176,7 @@ closeType: "tray", logPath: "", pdfPath: "", + defaultPrinter:"" }, // 预制的版本,解决部分内网无法获取新版本的问题 versions: [ @@ -197,6 +198,7 @@ }, ], downloadedVersions: [], // 存储已下载版本 + printerList:[] // 打印机列表 }; }, computed: { @@ -446,6 +448,17 @@ span: 12, display: this.setTab === "advancedSet", }, + { + label: "默认打印机", + prop: "defaultPrinter", + is: "el-select", + optionIs: "el-option", + attrs: { + clearable:true, + }, + options: this.printerList, + display: this.setTab === "advancedSet", + }, { label: "允许通知", prop: "allowNotify", @@ -497,6 +510,10 @@ // 获取配置 this.formData = store.store; this.getVersions(); + this.getPrintersList(); + ipcRenderer.on("getPrintersList", (event, printers) => { + this.printerList = printers; // 更新打印机列表 + }); }, mounted() { this.handleTabChange(); @@ -613,6 +630,13 @@ }; xhr.send(); }, + /** + * @description: 获取打印机列表 + * @return {void} + */ + getPrintersList() { + ipcRenderer.send("getPrintersList"); // 请求打印机列表 + } }, }); diff --git a/src/print.js b/src/print.js index 3d7aaef..747d94a 100644 --- a/src/print.js +++ b/src/print.js @@ -82,6 +82,10 @@ function initPrintEvent() { defaultPrinter = element.name; } }); + const storeDefaultPrinter = store.get("defaultPrinter"); // 获取store是否设置有保存打印机 + if (storeDefaultPrinter !== '' && !havePrinter) { + defaultPrinter = storeDefaultPrinter; + } if (printerError) { log( `${data.replyId ? "中转服务" : "插件端"} ${socket.id} 模板 【${ diff --git a/src/set.js b/src/set.js index f86f755..ade11a8 100644 --- a/src/set.js +++ b/src/set.js @@ -298,6 +298,7 @@ function initSetEvent() { ipcMain.on("testTransit", testTransit); ipcMain.on("closeSetWindow", closeSetWindow); ipcMain.on("downloadPlugin", downloadPlugin); + ipcMain.on("getPrintersList", getPrintersList); } /** @@ -313,6 +314,7 @@ function removeEvent() { ipcMain.removeListener("testTransit", testTransit); ipcMain.removeListener("closeSetWindow", closeSetWindow); ipcMain.removeListener("downloadPlugin", downloadPlugin); + ipcMain.removeListener("getPrintersList", getPrintersList); SET_WINDOW = null; } @@ -330,6 +332,24 @@ function getDownloadedVersions() { .map((file) => file.split("_")[0]); // 提取版本号 } +/** + * @description: 获取打印机列表并发送给渲染进程 + * @param {IpcMainEvent} event + * @return {void} + */ +async function getPrintersList(event) { + try { + const printers = await SET_WINDOW.webContents.getPrintersAsync(); + let list = printers.map(item => { + return { value: item.name }; + }) + SET_WINDOW.webContents.send("getPrintersList", list); + } catch (error) { + console.error('获取打印机列表失败:', error); + SET_WINDOW.webContents.send("getPrintersList", []); + } +} + module.exports = async () => { // 创建设置窗口 await createSetWindow(); diff --git a/tools/utils.js b/tools/utils.js index 00578b5..011c897 100644 --- a/tools/utils.js +++ b/tools/utils.js @@ -65,6 +65,10 @@ const schema = { type: "string", default: app.getPath("temp"), }, + defaultPrinter: { + type: "string", + default: '', + } }; const store = new Store({ schema }); -- Gitee