From c86fff9691e44b49bd322c8a7ed719b7ca7e9431 Mon Sep 17 00:00:00 2001 From: gyq <875626088@qq.com> Date: Tue, 18 Jun 2024 18:36:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=87=E7=AD=BE=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist-electron/main.js | 43 +++++ electron/main.js | 69 +++++++- package.json | 144 ++++++++-------- public/logo.png | Bin 0 -> 6348 bytes public/tag_print.css | 57 +++++++ public/tag_print.html | 69 ++++++++ public/tag_print.scss | 48 ++++++ src/api/order/index.js | 26 +++ src/components/callNumber.vue | 245 ++++++++++++++++++++++++++++ src/components/leftMenu.vue | 10 +- src/components/more.vue | 41 +++-- src/router/index.js | 1 + src/views/home/test.vue | 36 ++-- src/views/member/components/add.vue | 11 +- 14 files changed, 690 insertions(+), 110 deletions(-) create mode 100644 public/logo.png create mode 100644 public/tag_print.css create mode 100644 public/tag_print.html create mode 100644 public/tag_print.scss create mode 100644 src/components/callNumber.vue diff --git a/dist-electron/main.js b/dist-electron/main.js index 6a09f94..e02558a 100644 --- a/dist-electron/main.js +++ b/dist-electron/main.js @@ -122,6 +122,49 @@ electron.app.whenReady().then(() => { } }); }); + const tagPrintWin = new electron.BrowserWindow({ + show: true, + width: 320, + height: 240, + webPreferences: { + nodeIntegration: true, + contextIsolation: false + } + }); + if (process.env.VITE_DEV_SERVER_URL) { + tagPrintWin.loadFile(path.join(__dirname, "../public/tag_print.html")); + } else { + tagPrintWin.loadFile(path.resolve(__dirname, "../dist/tag_print.html")); + } + electron.ipcMain.on("printerTagSync", (event, arg) => { + tagPrintWin.webContents.send("getParams", arg); + }); + electron.ipcMain.on("printTagStart", (event, arg) => { + console.log(arg); + const _parmas = JSON.parse(arg); + let name = _parmas.deviceName; + tagPrintWin.webContents.print({ + silent: true, + deviceName: name, + pageSize: { + width: 4e4, + height: 3e4 + }, + 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") diff --git a/electron/main.js b/electron/main.js index 0682313..a843400 100644 --- a/electron/main.js +++ b/electron/main.js @@ -1,11 +1,6 @@ import path from "path"; import { app, BrowserWindow, ipcMain } from "electron"; -// import SerialPort from "serialport"; - -// SerialPort.list().then( -// (ports) => ports.forEach(console.log), -// (err) => console.error(err) -// ); +// const SerialPort = require("serialport"); let win; app.whenReady().then(() => { @@ -52,6 +47,16 @@ app.whenReady().then(() => { }); }); + // ipcMain.on("getSerialPort", () => { + // SerialPort.SerialPort.list().then( + // (ports) => { + // console.log(ports); + // win.webContents.send("seriaportList", ports); + // }, + // (err) => console.error(err) + // ); + // }); + // 创建打印小票子窗口 const printWin = new BrowserWindow({ show: false, @@ -156,6 +161,58 @@ app.whenReady().then(() => { }, }); }); + + // 标签小票的窗口 + const tagPrintWin = new BrowserWindow({ + show: true, + width: 320, + height: 240, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + }, + }); + + if (process.env.VITE_DEV_SERVER_URL) { + // 加载打印的html文件 + tagPrintWin.loadFile(path.join(__dirname, "../public/tag_print.html")); + } else { + tagPrintWin.loadFile(path.resolve(__dirname, "../dist/tag_print.html")); // 打包后使用文件路径访问应用 + } + + // 接收渲染进程发送的数据 + ipcMain.on("printerTagSync", (event, arg) => { + tagPrintWin.webContents.send("getParams", arg); + }); + + // 执行标签小票的打印操作 + ipcMain.on("printTagStart", (event, arg) => { + console.log(arg); + const _parmas = JSON.parse(arg); + // console.log(_parmas) + let name = _parmas.deviceName; + tagPrintWin.webContents.print({ + silent: true, + deviceName: name, + pageSize: { + width: 40000, + height: 30000, + }, + scaleFactor: 80, + landscape: false, + margins: { + marginType: "none", + top: 0, + bottom: 0, + left: 0, + right: 0, + }, + dpi: { + horizontal: 203, + vertical: 203, + }, + }); + }); }); app.on("window-all-closed", () => { diff --git a/package.json b/package.json index 9c0b110..c19be2d 100644 --- a/package.json +++ b/package.json @@ -1,73 +1,73 @@ { - "name": "vite-electron", - "private": true, - "version": "1.2.16", - "main": "dist-electron/main.js", - "scripts": { - "dev": "chcp 65001 && vite", - "build": "node ./addVersion.js && vite build && electron-builder", - "preview": "vite preview", - "build:win": "node ./addVersion.js && vite build && electron-builder --w" - }, - "dependencies": { - "@element-plus/icons-vue": "^2.3.1", - "axios": "^1.6.2", - "dayjs": "^1.11.10", - "electron-pos-printer": "^1.3.6", - "electron-pos-printer-vue": "^1.0.9", - "element-plus": "^2.4.3", - "lodash": "^4.17.21", - "pinia": "^2.1.7", - "serialport": "^12.0.0", - "swiper": "^11.1.1", - "vue": "^3.3.8", - "vue-router": "^4.2.5" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.5.0", - "electron": "^28.2.3", - "electron-builder": "^24.13.3", - "electron-rebuild": "^3.2.9", - "path": "^0.12.7", - "sass": "^1.69.5", - "sass-loader": "^13.3.2", - "tree-kill": "^1.2.2", - "vite": "^5.0.0", - "vite-plugin-electron": "^0.15.4", - "vite-plugin-electron-renderer": "^0.14.5" - }, - "build": { - "appId": "com.cashierdesktop.app", - "productName": "银收客", - "asar": true, - "files": [ - "./dist/**/*", - "./dist-electron/**/*" - ], - "directories": { - "buildResources": "build", - "output": "release" - }, - "win": { - "icon": "./public/logo.ico", - "target": [ - { - "target": "nsis", - "arch": [ - "ia32" - ] - } - ] - }, - "nsis": { - "oneClick": false, - "allowElevation": true, - "allowToChangeInstallationDirectory": true, - "installerIcon": "./public/logo.ico", - "uninstallerIcon": "./public/logo.ico", - "installerHeaderIcon": "./public/logo.ico", - "createDesktopShortcut": true, - "createStartMenuShortcut": true - } - } -} + "name": "vite-electron", + "private": true, + "version": "1.2.21", + "main": "dist-electron/main.js", + "scripts": { + "dev": "chcp 65001 && vite", + "build": "node ./addVersion.js && vite build && electron-builder", + "preview": "vite preview", + "build:win": "node ./addVersion.js && vite build && electron-builder --w" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "axios": "^1.6.2", + "dayjs": "^1.11.10", + "electron-pos-printer": "^1.3.6", + "electron-pos-printer-vue": "^1.0.9", + "element-plus": "^2.4.3", + "lodash": "^4.17.21", + "pinia": "^2.1.7", + "serialport": "^12.0.0", + "swiper": "^11.1.1", + "vue": "^3.3.8", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.5.0", + "electron": "^28.2.3", + "electron-builder": "^24.13.3", + "electron-rebuild": "^3.2.9", + "path": "^0.12.7", + "sass": "^1.69.5", + "sass-loader": "^13.3.2", + "tree-kill": "^1.2.2", + "vite": "^5.0.0", + "vite-plugin-electron": "^0.15.4", + "vite-plugin-electron-renderer": "^0.14.5" + }, + "build": { + "appId": "com.cashierdesktop.app", + "productName": "银收客", + "asar": true, + "files": [ + "./dist/**/*", + "./dist-electron/**/*" + ], + "directories": { + "buildResources": "build", + "output": "release" + }, + "win": { + "icon": "./public/logo.ico", + "target": [ + { + "target": "nsis", + "arch": [ + "ia32" + ] + } + ] + }, + "nsis": { + "oneClick": false, + "allowElevation": true, + "allowToChangeInstallationDirectory": true, + "installerIcon": "./public/logo.ico", + "uninstallerIcon": "./public/logo.ico", + "installerHeaderIcon": "./public/logo.ico", + "createDesktopShortcut": true, + "createStartMenuShortcut": true + } + } +} \ No newline at end of file diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..198f1f29ad4ab9c43149726fc91f03bf022656e6 GIT binary patch literal 6348 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 D=q + --> + + + + + Print preview + + + + +
+ +
+ + + diff --git a/public/tag_print.scss b/public/tag_print.scss new file mode 100644 index 0000000..17c8ce2 --- /dev/null +++ b/public/tag_print.scss @@ -0,0 +1,48 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; + font-size: 12px; + color: #000; +} +body { + padding: 2mm; +} +.print_view { + position: relative; + .ewm { + $size: 50px; + width: $size; + height: $size; + position: absolute; + top: 0; + right: 0; + z-index: 99; + } + .header { + display: flex; + align-items: center; + .logo { + $size: 90px; + width: $size; + } + .title { + margin-left: 6px; + } + } + .number_wrap { + display: flex; + align-items: flex-end; + .num { + font-size: 18px; + font-weight: bold; + } + .info { + margin-left: 12px; + padding-bottom: 4px; + } + } + .time { + font-weight: bold; + } +} diff --git a/src/api/order/index.js b/src/api/order/index.js index e2dbfa4..9f74bed 100644 --- a/src/api/order/index.js +++ b/src/api/order/index.js @@ -75,3 +75,29 @@ export function sendMessage(params) { params, }); } + +/** + * 扫码叫号 + * @param {*} params + * @returns + */ +export function scanSendMessage(params) { + return request({ + method: "get", + url: "/order/scanSendMessage", + params, + }); +} + +/** + * 获取叫号记录 + * @param {*} params + * @returns + */ +export function getsendMessage(params) { + return request({ + method: "get", + url: "/order/getsendMessage", + params, + }); +} diff --git a/src/components/callNumber.vue b/src/components/callNumber.vue new file mode 100644 index 0000000..f88d8e3 --- /dev/null +++ b/src/components/callNumber.vue @@ -0,0 +1,245 @@ + + + + + + \ No newline at end of file diff --git a/src/components/leftMenu.vue b/src/components/leftMenu.vue index f588c94..c5451e1 100644 --- a/src/components/leftMenu.vue +++ b/src/components/leftMenu.vue @@ -21,16 +21,20 @@ - + + +