From 04ca328a67c8d6f96295f77cdf1351a866d9e570 Mon Sep 17 00:00:00 2001 From: 24kycj <1637269896@qq.com> Date: Mon, 5 Jan 2026 04:05:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8F=90=E4=BA=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=9A=E5=AE=8C=E5=96=84=E6=89=80=E6=9C=89=E6=8B=B7?= =?UTF-8?q?=E8=B4=9D=E7=B1=BB=E5=9E=8B=E6=94=AF=E6=8C=81=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E7=94=B5=E5=AD=90=E5=85=89=E7=9B=98=E5=92=8C=E7=A6=81?= =?UTF-8?q?=E6=8B=B7U=E7=9B=98=E6=8F=90=E4=BA=A4=E5=8D=A1=E6=AD=BB?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 Files 组件中 file_form=1(电子光盘) 和 file_form=4(禁拷U盘) 的空处理分支 - 添加完成回调触发逻辑,避免提交流程卡死 - 完善 upload()、upload_over()、performSubmit() 的状态判断 - 严格对齐 work-副本.vue 的验证逻辑和参数构建顺序 - 优化标签上传判断,避免无标签时的不必要API调用 - 添加 ISO/ZIP 验证(仅在有内容文件时) - 清理所有调试日志 --- src/renderer/components/NetworkAuthDialog.vue | 72 +- src/renderer/components/dispose.vue | 237 ++--- src/renderer/components/files/file.vue | 12 +- .../components/recorder/ScreenRecorder.vue | 14 +- .../components/work/AdvancedSettings.vue | 23 +- src/renderer/components/work/GuidePopover.vue | 96 ++ src/renderer/components/work/TagMetadata.vue | 6 +- src/renderer/components/work/TaskHeader.vue | 61 +- src/renderer/components/work/WorkMain.vue | 823 ++++++++++++++---- .../work/sections/AdvancedFeatures.vue | 7 +- .../components/work/sections/BasicConfig.vue | 66 +- .../work/sections/HardwareControl.vue | 6 +- .../work/sections/RecordingSettings.vue | 2 +- src/renderer/lang/cn.js | 9 +- src/renderer/lang/en.js | 17 +- src/renderer/lang/ocn.js | 9 +- src/renderer/main.js | 31 +- 17 files changed, 992 insertions(+), 499 deletions(-) create mode 100644 src/renderer/components/work/GuidePopover.vue diff --git a/src/renderer/components/NetworkAuthDialog.vue b/src/renderer/components/NetworkAuthDialog.vue index 44cfa6a..7d3b768 100644 --- a/src/renderer/components/NetworkAuthDialog.vue +++ b/src/renderer/components/NetworkAuthDialog.vue @@ -1,50 +1,28 @@ - + {{ $t('networkAuth.description') }} - + - + {{ $t('networkAuth.pathLabel') }} {{ path.path }} - + - - + + - + @@ -89,201 +89,82 @@ diff --git a/src/renderer/components/files/file.vue b/src/renderer/components/files/file.vue index 9ca851d..e086cf9 100644 --- a/src/renderer/components/files/file.vue +++ b/src/renderer/components/files/file.vue @@ -349,7 +349,11 @@ export default { entries.forEach((f) => this.fileBack(f, false)); } } else if (file_form == 1) { - //电子光盘 + // 电子光盘:不需要拷贝,直接标记为完成 + this.overNumber = 0; + for (const file of entries) { + this.fileBack(file, true); + } } else if (file_form == 2) { //zip this.archiverIsover = false; @@ -364,7 +368,11 @@ export default { let password = "123456"; zip(this.filesList, this.zip_path, this.archiverBack, true, password); } else if (file_form == 4) { - //u盘 + // 禁拷贝U盘:不需要拷贝,直接标记为完成 + this.overNumber = 0; + for (const file of entries) { + this.fileBack(file, true); + } } else { // 默认路径上传:不实际拷贝,仅回调推进流程 this.overNumber = 0; diff --git a/src/renderer/components/recorder/ScreenRecorder.vue b/src/renderer/components/recorder/ScreenRecorder.vue index cdf137d..b7fa8b2 100644 --- a/src/renderer/components/recorder/ScreenRecorder.vue +++ b/src/renderer/components/recorder/ScreenRecorder.vue @@ -12,7 +12,7 @@ - {{ statusOnly ? '录制中...' : recordingTime }} + {{ statusOnly ? $t('recorder.recording') : recordingTime }} @@ -113,12 +113,12 @@ export default { this.currentTaskId = this.taskId || ''; this.startTimer(); - this.$message.success(this.$t('recorder.recordingStarted') || '开始录制'); + this.$message.success(this.$t('recorder.recordingStarted')); this.$emit('recording-started'); } catch (error) { console.error('启动录制失败:', error); - this.$message.error(this.$t('recorder.startFailed') || '启动录制失败'); + this.$message.error(this.$t('recorder.startFailed')); } finally { this.loading = false; } @@ -145,7 +145,7 @@ export default { } catch (error) { console.error('停止录制失败:', error); - this.$message.error(this.$t('recorder.stopFailed') || '停止录制失败'); + this.$message.error(this.$t('recorder.stopFailed')); } finally { this.loading = false; } @@ -153,7 +153,7 @@ export default { async cancelRecording() { await this.stopRecording(false); - this.$message.info('录制已取消'); + this.$message.info(this.$t('recorder.recordingCanceled')); }, async saveRecording(customPath) { @@ -176,7 +176,7 @@ export default { const result = await ipcRenderer.invoke('stop-recording', base64data, this.currentTaskId, customPath); if (result.success) { - this.$message.success(this.$t('recorder.savedSuccess') || `录制已保存: ${result.fileName}`); + this.$message.success(this.$t('recorder.savedSuccess') + `: ${result.fileName}`); this.$emit('recording-saved', result); } else { this.$message.error(result.message); @@ -186,7 +186,7 @@ export default { } catch (error) { console.error('保存录制失败:', error); - this.$message.error(this.$t('recorder.saveFailed') || '保存录制失败'); + this.$message.error(this.$t('recorder.saveFailed')); } }, diff --git a/src/renderer/components/work/AdvancedSettings.vue b/src/renderer/components/work/AdvancedSettings.vue index ae34709..cfcc11a 100644 --- a/src/renderer/components/work/AdvancedSettings.vue +++ b/src/renderer/components/work/AdvancedSettings.vue @@ -1,11 +1,12 @@ - - + @@ -54,6 +55,14 @@ export default { options: { type: Object, default: () => ({}) + }, + printerList: { + type: Array, + default: () => [] + }, + sizeForm: { + type: [Number, String], + default: null } }, computed: { @@ -74,32 +83,32 @@ export default { // 验证加密狗计数 if (this.form.is_dongle_count) { if (!this.form.dongle_count || this.form.dongle_count <= 0 || !Number.isInteger(this.form.dongle_count)) { - this.$message.warning(this.$t('work.dongleCountRequired') || '请输入有效的加密狗安装次数(必须是正整数)') + this.$message.warning(this.$t('work.dongleCountRequired')) return } } // 验证 ISO 文件名 if (this.form.is_generate_iso && !this.form.iso_file_name) { - this.$message.warning(this.$t('work.isoNameInput') || '请输入 ISO 文件名') + this.$message.warning(this.$t('work.isoNameInput')) return } // 验证 ZIP 文件名 if (this.form.is_generate_zip) { if (!this.form.zip_file_name) { - this.$message.warning(this.$t('work.zipNameInput') || '请输入 ZIP 文件名') + this.$message.warning(this.$t('work.zipNameInput')) return } // 验证 ZIP 加密密码 if (this.form.is_zip_encrypt) { if (!this.form.zip_password) { - this.$message.warning(this.$t('work.pleasePassword') || '请输入 ZIP 压缩密码') + this.$message.warning(this.$t('work.pleasePassword')) return } if (this.form.zip_password !== this.form.zip_repassword) { - this.$message.warning(this.$t('work.zipPassWrong') || 'ZIP 压缩密码不一致') + this.$message.warning(this.$t('work.zipPassWrong')) return } } diff --git a/src/renderer/components/work/GuidePopover.vue b/src/renderer/components/work/GuidePopover.vue new file mode 100644 index 0000000..b9fb6e9 --- /dev/null +++ b/src/renderer/components/work/GuidePopover.vue @@ -0,0 +1,96 @@ + + + + + {{ $t('guide.title') }}({{ parseInt(currentStep) + 1 }}/{{ guideStep.length }}) + + {{ $t(`guide.step${step + 1}`) }} + + + {{ $t('guide.skip') }} + + + {{ $t('guide.prev') }} + + + {{ currentStep == guideStep.length - 1 ? $t('guide.complete') : $t('guide.next') }} + + + + + + + + + + + + + + + diff --git a/src/renderer/components/work/TagMetadata.vue b/src/renderer/components/work/TagMetadata.vue index 3cca424..d4cff12 100644 --- a/src/renderer/components/work/TagMetadata.vue +++ b/src/renderer/components/work/TagMetadata.vue @@ -12,10 +12,10 @@ :value="item.value" /> - {{ $t('work.design') || '创建标签' }} + {{ $t('work.design') }} - {{ $t('work.import') || '选择标签' }} + {{ $t('work.import') }} @@ -44,7 +44,7 @@ - {{ $t('work.metadataEdit') || '标签内容编辑' }} + {{ $t('work.metadataEdit') }} diff --git a/src/renderer/components/work/TaskHeader.vue b/src/renderer/components/work/TaskHeader.vue index 65aedab..2dd36c8 100644 --- a/src/renderer/components/work/TaskHeader.vue +++ b/src/renderer/components/work/TaskHeader.vue @@ -1,25 +1,32 @@ - - - {{ $t('work.size') }} - - - - + + + + {{ $t('work.size') }} + + + + + - - - {{ $t('work.content') }} - - - - + + + + {{ $t('work.content') }} + + + + + @@ -41,14 +48,22 @@
{{ $t('networkAuth.description') }}