Commit a327daff by linjinhong

feat:添加删除模式

parent 2c071741
GTXproCMD.exe send -A "D:\sample\Output\pO12.arxp" -P "Brother GTX pro" -D 1 GTXproCMD.exe send -A "Output\pO12.arxp" -P "Brother GTX pro" -D 1
echo %errorlevel% echo %errorlevel%
\ No newline at end of file
...@@ -7,7 +7,7 @@ import { autoUpdater } from "electron-updater"; ...@@ -7,7 +7,7 @@ import { autoUpdater } from "electron-updater";
import path from "path"; // 引入 path 模块 import path from "path"; // 引入 path 模块
const { exec } = require("child_process"); const { exec } = require("child_process");
const { setVersion } = require("@/server/utils/store"); const { setVersion, setDeleteSetting } = require("@/server/utils/store");
Object.defineProperty(app, "isPackaged", { Object.defineProperty(app, "isPackaged", {
get() { get() {
...@@ -202,6 +202,11 @@ app.on("ready", async () => { ...@@ -202,6 +202,11 @@ app.on("ready", async () => {
setVersion(version); // 保存到 electron-store setVersion(version); // 保存到 electron-store
}); });
ipcMain.on("update-deleteSetting", (_, version) => {
console.log(72, version);
setDeleteSetting(version); // 保存到 electron-store
});
}); });
app.on("will-quit", () => { app.on("will-quit", () => {
......
...@@ -144,6 +144,13 @@ export const downloadImage = (list) => { ...@@ -144,6 +144,13 @@ export const downloadImage = (list) => {
fs.mkdirSync(dirPath, { recursive: true }); fs.mkdirSync(dirPath, { recursive: true });
} }
try {
await fs.promises.access(dirPath, fs.constants.W_OK);
} catch (error) {
console.error("没有目录写入权限:", dirPath);
// return reject(new Error('没有写入权限'));
}
// 过滤出有效的下载项 // 过滤出有效的下载项
const downloadItems = list.filter( const downloadItems = list.filter(
(item) => item.url && item.url.includes("http") (item) => item.url && item.url.includes("http")
...@@ -153,6 +160,7 @@ export const downloadImage = (list) => { ...@@ -153,6 +160,7 @@ export const downloadImage = (list) => {
if (downloadItems.length === 0) { if (downloadItems.length === 0) {
return resolve(list); return resolve(list);
} }
// 检查写入权限
// 并行处理所有下载 // 并行处理所有下载
const downloadPromises = downloadItems.map((item) => { const downloadPromises = downloadItems.map((item) => {
...@@ -205,7 +213,16 @@ export const downloadImage = (list) => { ...@@ -205,7 +213,16 @@ export const downloadImage = (list) => {
if (isArchive) { if (isArchive) {
// 处理压缩文件 // 处理压缩文件
item.list = await zip(filePath, dirPath); try {
// 添加await确保异步完成
const result = await zip(filePath, dirPath);
// 显式赋值,确保引用正确
item.list = result || [];
console.log("解压完成,文件数量:", item.list.length);
} catch (zipError) {
console.error("解压失败:", zipError);
item.list = [];
}
} else { } else {
// 处理普通图片文件 // 处理普通图片文件
if (!item.list) item.list = []; if (!item.list) item.list = [];
......
...@@ -5,7 +5,11 @@ module.exports = { ...@@ -5,7 +5,11 @@ module.exports = {
setVersion: (version) => { setVersion: (version) => {
store.set("desktoVersion", version); store.set("desktoVersion", version);
}, },
setDeleteSetting: (setting) => {
store.set("deleteSetting", setting);
},
getVersion: () => store.get("desktoVersion") || "print", getVersion: () => store.get("desktoVersion") || "print",
getDeleteSetting: () => store.get("deleteSetting") || "0",
setBoard: (version) => { setBoard: (version) => {
store.set("desktoBoard", version); store.set("desktoBoard", version);
console.log("store", store.get("desktoBoard")); console.log("store", store.get("desktoBoard"));
......
...@@ -12,7 +12,7 @@ import { extractValue } from "@/utils/index.js"; ...@@ -12,7 +12,7 @@ import { extractValue } from "@/utils/index.js";
const uuid = require("uuid"); const uuid = require("uuid");
const fs = require("fs"); const fs = require("fs");
import { mapState } from "vuex"; import { mapState } from "vuex";
const { getVersion } = require("@/server/utils/store"); const { getVersion, getDeleteSetting } = require("@/server/utils/store");
export default { export default {
components: { UpdateDialog }, components: { UpdateDialog },
...@@ -31,6 +31,7 @@ export default { ...@@ -31,6 +31,7 @@ export default {
checkList: [], checkList: [],
desktopDevice: 1, desktopDevice: 1,
desktoVersion: getVersion(), desktoVersion: getVersion(),
deleteSetting: getDeleteSetting(),
checked: false, checked: false,
isFirst: true, isFirst: true,
cacheList: [ cacheList: [
...@@ -621,6 +622,24 @@ export default { ...@@ -621,6 +622,24 @@ export default {
this.$store.commit("getNewGrid"); this.$store.commit("getNewGrid");
this.command(0); this.command(0);
}, },
changeDeleteSetting(value) {
const oldValue = this.deleteSetting; // 缓存旧值
console.log(626, oldValue);
// this.$confirm("选择该操作打印后会导致打印记录清空,是否继续?", "警告", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// })
// .then(() => {
// ipcRenderer.send("update-deleteSetting", value);
// })
// .catch(() => {
// this.deleteSetting = oldValue;
// });
ipcRenderer.send("update-deleteSetting", value);
// console.log(626, this.deleteSetting);
},
async cutImgFn(arr) { async cutImgFn(arr) {
if (!arr.length) return arr; if (!arr.length) return arr;
console.log(arr); console.log(arr);
...@@ -717,6 +736,7 @@ export default { ...@@ -717,6 +736,7 @@ export default {
.left-btn { .left-btn {
display: flex; display: flex;
flex: 1;
} }
</style> </style>
<template> <template>
...@@ -727,6 +747,7 @@ export default { ...@@ -727,6 +747,7 @@ export default {
<div>设备类型:</div> <div>设备类型:</div>
<el-select <el-select
class="selectItem"
v-model="desktopDevice" v-model="desktopDevice"
@change="changeDesktopDeviceFn" @change="changeDesktopDeviceFn"
placeholder="请选择设备类型" placeholder="请选择设备类型"
...@@ -735,10 +756,12 @@ export default { ...@@ -735,10 +756,12 @@ export default {
<el-option label="其他" :value="2"></el-option> <el-option label="其他" :value="2"></el-option>
</el-select> </el-select>
</div> </div>
<div class="selectInput"> <div class="selectInput">
<div>驱动版本:</div> <div>驱动版本:</div>
<el-select <el-select
class="selectItem"
v-model="desktoVersion" v-model="desktoVersion"
@change="changeDesktoVersionFn" @change="changeDesktoVersionFn"
placeholder="请选择版本" placeholder="请选择版本"
...@@ -748,8 +771,25 @@ export default { ...@@ -748,8 +771,25 @@ export default {
<el-option label="600" value="print600"></el-option> <el-option label="600" value="print600"></el-option>
</el-select> </el-select>
</div> </div>
<div class="selectInput">
<div>删除模式:</div>
<el-dropdown trigger="click" @command="command" :hide-on-click="false"> <el-select
class="selectDelete"
v-model="deleteSetting"
@change="changeDeleteSetting"
placeholder="请选择"
>
<el-option label="自动删除打印素材(打印后)" value="1"></el-option>
<el-option label="保留打印素材(打印后)" value="0"></el-option>
</el-select>
</div>
<el-dropdown
class="selectInput"
trigger="click"
@command="command"
:hide-on-click="false"
>
<el-button style="height: 100%;margin-right: 0" size="small" <el-button style="height: 100%;margin-right: 0" size="small"
>{{ grid[selectGridIndex]?.label }} >{{ grid[selectGridIndex]?.label }}
</el-button> </el-button>
...@@ -760,7 +800,7 @@ export default { ...@@ -760,7 +800,7 @@ export default {
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-tooltip content="图片"> <el-tooltip class="selectInput" content="图片">
<el-upload <el-upload
accept=".png" accept=".png"
action="" action=""
...@@ -769,7 +809,7 @@ export default { ...@@ -769,7 +809,7 @@ export default {
:before-upload="uploadImage" :before-upload="uploadImage"
style="height: 100%;" style="height: 100%;"
> >
<el-button style="height: 100%;margin:0 8px" size="small"> <el-button style="height: 100%" size="small">
<i class="el-icon-picture" style="font-size: 15px;"></i> <i class="el-icon-picture" style="font-size: 15px;"></i>
</el-button> </el-button>
</el-upload> </el-upload>
...@@ -792,7 +832,7 @@ export default { ...@@ -792,7 +832,7 @@ export default {
trigger="click" trigger="click"
placement="bottom" placement="bottom"
> >
<div class="setting-form"> <div class="setting-form selectInput">
<el-form <el-form
:model="setting" :model="setting"
label-position="left" label-position="left"
...@@ -902,20 +942,19 @@ export default { ...@@ -902,20 +942,19 @@ export default {
type="success" type="success"
>生产完成 >生产完成
</el-button> </el-button>
<div class="check">
<el-checkbox v-model="isAutoFinish">自动完成上一单</el-checkbox>
</div>
</div> </div>
<div style="margin-left: 10px;"> <div style="margin-left: 8px;">
<el-checkbox v-model="checked">自动裁切素材</el-checkbox> <el-checkbox v-model="isAutoFinish">自动完成上一单</el-checkbox>
</div> </div>
<el-button <div style="margin-left: 8px;">
<el-checkbox v-model="checked">自动裁切</el-checkbox>
</div>
<!-- <el-button
@click="downloadImage" @click="downloadImage"
size="medium" style="margin-left: 8px"
style="margin-left: 15px"
type="primary" type="primary"
>下载素材 >下载素材
</el-button> </el-button> -->
</div> </div>
<div class="right-user"> <div class="right-user">
<div <div
...@@ -1019,28 +1058,28 @@ export default { ...@@ -1019,28 +1058,28 @@ export default {
.center-input { .center-input {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; // justify-content: center;
flex: 1; flex: 1;
flex-shrink: 0; flex-shrink: 0;
overflow: hidden; overflow: hidden;
padding-left: 100px; // padding-left: 100px;
} }
.sure-btn { .sure-btn {
width: 300px; // width: 250px;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
::v-deep { // ::v-deep {
.el-button { // .el-button {
span { // span {
position: relative; // position: relative;
left: -40px; // left: -40px;
} // }
} // }
} // }
} }
.check { .check {
...@@ -1065,12 +1104,15 @@ export default { ...@@ -1065,12 +1104,15 @@ export default {
.selectInput { .selectInput {
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 10px; margin-right: 5px;
font-size: 14px;
::v-deep { ::v-deep {
.el-select .el-input { .selectItem .el-input {
max-width: 80px; max-width: 80px;
} }
.selectDelete .el-input {
max-width: 110px;
}
} }
} }
::v-deep { ::v-deep {
......
...@@ -7,7 +7,7 @@ import moment from "moment"; ...@@ -7,7 +7,7 @@ import moment from "moment";
import pkg from "../../../../package.json"; import pkg from "../../../../package.json";
import { pxToUnit } from "../../../utils/index"; import { pxToUnit } from "../../../utils/index";
import { mapState } from "vuex"; import { mapState } from "vuex";
const { getVersion } = require("@/server/utils/store"); const { getVersion, getDeleteSetting } = require("@/server/utils/store");
export default { export default {
data() { data() {
return { return {
...@@ -434,7 +434,7 @@ export default { ...@@ -434,7 +434,7 @@ export default {
let print_cmd = `${printCmd} send -A "Output\\${imgFileName.replace( let print_cmd = `${printCmd} send -A "Output\\${imgFileName.replace(
".png", ".png",
"" ""
)}.arxp" -P "${this.printer}`; )}.arxp" -P "${this.printer}" -D ${getDeleteSetting()}`;
let data = { let data = {
...this.printSetting, ...this.printSetting,
...{ ...{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment