优化
This commit is contained in:
@@ -1,86 +1 @@
|
|||||||
"use strict";
|
"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()});
|
||||||
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();
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "vite-electron",
|
"name": "vite-electron",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.1.10",
|
"version": "1.1.13",
|
||||||
"main": "dist-electron/main.js",
|
"main": "dist-electron/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "chcp 65001 && vite",
|
"dev": "chcp 65001 && vite",
|
||||||
|
|||||||
@@ -19,13 +19,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="number_wrap">
|
<div class="number_wrap">
|
||||||
<div class="menus">
|
<div class="menus">
|
||||||
<div
|
<div class="item" :class="{ active: payActive == index }" v-for="(item, index) in payList" :key="item.id"
|
||||||
class="item"
|
@click="payTypeChange(index, item)">
|
||||||
:class="{ active: payActive == index }"
|
|
||||||
v-for="(item, index) in payList"
|
|
||||||
:key="item.id"
|
|
||||||
@click="payTypeChange(index, item)"
|
|
||||||
>
|
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<el-image :src="item.icon" class="img"></el-image>
|
<el-image :src="item.icon" class="img"></el-image>
|
||||||
</div>
|
</div>
|
||||||
@@ -40,12 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="keybord_wrap">
|
<div class="keybord_wrap">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div
|
<div class="item" v-for="item in 9" :key="item" @click="amountInput(`${item}`)">
|
||||||
class="item"
|
|
||||||
v-for="item in 9"
|
|
||||||
:key="item"
|
|
||||||
@click="amountInput(`${item}`)"
|
|
||||||
>
|
|
||||||
{{ item }}
|
{{ item }}
|
||||||
</div>
|
</div>
|
||||||
<div class="item" @click="amountInput('.')">.</div>
|
<div class="item" @click="amountInput('.')">.</div>
|
||||||
@@ -63,12 +53,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<scanModal
|
<scanModal ref="scanModalRef" fast :amount="money" @success="scanCodeSuccess" />
|
||||||
ref="scanModalRef"
|
|
||||||
fast
|
|
||||||
:amount="money"
|
|
||||||
@success="scanCodeSuccess"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@@ -115,6 +100,7 @@ function payTypeChange(index, item) {
|
|||||||
|
|
||||||
// 结算支付
|
// 结算支付
|
||||||
async function confirmOrder() {
|
async function confirmOrder() {
|
||||||
|
if (payLoading.value) return
|
||||||
try {
|
try {
|
||||||
if (payList.value[payActive.value].payType == "scanCode") {
|
if (payList.value[payActive.value].payType == "scanCode") {
|
||||||
scanModalRef.value.show();
|
scanModalRef.value.show();
|
||||||
@@ -203,6 +189,7 @@ onMounted(() => {
|
|||||||
border-bottom: 1px solid #ececec;
|
border-bottom: 1px solid #ececec;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.return {
|
.return {
|
||||||
$size: 50px;
|
$size: 50px;
|
||||||
width: $size;
|
width: $size;
|
||||||
@@ -219,6 +206,7 @@ onMounted(() => {
|
|||||||
font-size: var(--el-font-size-base);
|
font-size: var(--el-font-size-base);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
.t1 {
|
.t1 {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -320,9 +308,7 @@ onMounted(() => {
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr 1fr;
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
grid-template-rows: var(--item-height) var(--item-height) var(--item-height) var(
|
grid-template-rows: var(--item-height) var(--item-height) var(--item-height) var(--item-height);
|
||||||
--item-height
|
|
||||||
);
|
|
||||||
gap: var(--el-font-size-base);
|
gap: var(--el-font-size-base);
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ function payTypeChange(index, item) {
|
|||||||
|
|
||||||
// 结算支付
|
// 结算支付
|
||||||
async function confirmOrder() {
|
async function confirmOrder() {
|
||||||
|
if (payLoading.value) return
|
||||||
try {
|
try {
|
||||||
if (payList.value[payActive.value].payType == 'scanCode') {
|
if (payList.value[payActive.value].payType == 'scanCode') {
|
||||||
scanModalRef.value.show()
|
scanModalRef.value.show()
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="device_container">
|
<div class="device_container">
|
||||||
<div class="header" @click="router.back()">
|
<div class="header" @click="router.back()">
|
||||||
<el-icon
|
<el-icon style="position: relative; top: 2px; margin-right: 4px" size="22">
|
||||||
style="position: relative; top: 2px; margin-right: 4px"
|
|
||||||
size="22"
|
|
||||||
>
|
|
||||||
<ArrowLeft />
|
<ArrowLeft />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<el-text>{{ form.id ? "编辑小票打印机" : "添加小票打印机" }}</el-text>
|
<el-text>{{ form.id ? "编辑小票打印机" : "添加小票打印机" }}</el-text>
|
||||||
@@ -26,28 +23,15 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="选择设备">
|
<el-form-item label="选择设备">
|
||||||
<el-select v-model="form.config.deviceName">
|
<el-select v-model="form.config.deviceName">
|
||||||
<el-option
|
<el-option :label="item.name" :value="item.name" v-for="item in printList" :key="item.name"></el-option>
|
||||||
:label="item.name"
|
|
||||||
:value="item.name"
|
|
||||||
v-for="item in printList"
|
|
||||||
:key="item.name"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备名称">
|
<el-form-item label="设备名称">
|
||||||
<el-input
|
<el-input v-model="form.name" placeholder="请输入设备名称"></el-input>
|
||||||
v-model="form.name"
|
|
||||||
placeholder="请输入设备名称"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="打印份数">
|
<el-form-item label="打印份数">
|
||||||
<el-select v-model="form.config.printerNum">
|
<el-select v-model="form.config.printerNum">
|
||||||
<el-option
|
<el-option :label="item" :value="item" v-for="item in 4" :key="item"></el-option>
|
||||||
:label="item"
|
|
||||||
:value="item"
|
|
||||||
v-for="item in 4"
|
|
||||||
:key="item"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商品模式">
|
<el-form-item label="商品模式">
|
||||||
@@ -70,12 +54,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="尾部留空">
|
<el-form-item label="尾部留空">
|
||||||
<el-select v-model="form.config.feet">
|
<el-select v-model="form.config.feet">
|
||||||
<el-option
|
<el-option :label="`${item}行`" :value="`${item}`" v-for="item in feets" :key="item"></el-option>
|
||||||
:label="`${item}行`"
|
|
||||||
:value="`${item}`"
|
|
||||||
v-for="item in feets"
|
|
||||||
:key="item"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -144,12 +123,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<el-button
|
<el-button type="primary" style="width: 100%" :loading="loading" @click="submitHandle">
|
||||||
type="primary"
|
|
||||||
style="width: 100%"
|
|
||||||
:loading="loading"
|
|
||||||
@click="submitHandle"
|
|
||||||
>
|
|
||||||
保存
|
保存
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -161,6 +135,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import dayjs from 'dayjs'
|
||||||
import { ipcRenderer } from "electron";
|
import { ipcRenderer } from "electron";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { useRouter, useRoute } from "vue-router";
|
import { useRouter, useRoute } from "vue-router";
|
||||||
@@ -211,10 +186,43 @@ function printHandle() {
|
|||||||
ElMessage.warning("请选择打印设备");
|
ElMessage.warning("请选择打印设备");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ipcRenderer.send(
|
|
||||||
"printStart",
|
// ipcRenderer.send(
|
||||||
JSON.stringify({ deviceName: form.value.config.deviceName })
|
// "printStart",
|
||||||
);
|
// JSON.stringify({ deviceName: form.value.config.deviceName })
|
||||||
|
// );
|
||||||
|
|
||||||
|
const data = {
|
||||||
|
shop_name: '溜溜',
|
||||||
|
carts: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: '娃哈哈矿泉水',
|
||||||
|
skuName: '500ml',
|
||||||
|
salePrice: '1.0',
|
||||||
|
number: '10',
|
||||||
|
totalAmount: '10'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: '柠檬奶茶',
|
||||||
|
skuName: '加冰、加珍珠',
|
||||||
|
salePrice: '10',
|
||||||
|
number: '2',
|
||||||
|
totalAmount: '20'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
amount: '30.00',
|
||||||
|
remark: '',
|
||||||
|
orderInfo: {
|
||||||
|
masterId: '#002',
|
||||||
|
orderNo: '202404021023542223445'
|
||||||
|
},
|
||||||
|
deviceName: form.value.config.deviceName,
|
||||||
|
createdAt: '2024-04-02 10:15',
|
||||||
|
printTime: '2024-04-02 10:15',
|
||||||
|
};
|
||||||
|
ipcRenderer.send("printerInfoSync", JSON.stringify(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交打印机
|
// 提交打印机
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ function checkLocalPrint(deviceName) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!print.name || !print.status) {
|
if (!print.name) {
|
||||||
return false
|
return false
|
||||||
} else {
|
} else {
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ const ordereData = reactive({//表格数据
|
|||||||
list: [],
|
list: [],
|
||||||
size: 10,
|
size: 10,
|
||||||
page: 1,
|
page: 1,
|
||||||
status: 'cash',
|
status: '',
|
||||||
total: '',
|
total: '',
|
||||||
orderNo: '',
|
orderNo: '',
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user