diff --git a/electron/preload/lifecycle.js b/electron/preload/lifecycle.js index 67bbda1..4582273 100644 --- a/electron/preload/lifecycle.js +++ b/electron/preload/lifecycle.js @@ -4,7 +4,7 @@ const path = require('path'); const { logger } = require('ee-core/log'); const { getConfig } = require('ee-core/config'); const { getMainWindow } = require('ee-core/electron'); -const { getBaseDir } = require('ee-core/ps'); +const ps = require('ee-core/ps'); const { app } = require('electron'); // 动态获取 scripts 目录路径 @@ -74,7 +74,10 @@ class Lifecycle { async ready() { logger.info('[lifecycle] ready'); // 延迟加载 scripts - loadScripts(); + if (ps.isProd()) { + loadScripts(); + } + } /** @@ -493,44 +496,55 @@ class Lifecycle { */ async windowReady() { logger.info('[lifecycle] window-ready'); + if (ps.isProd()) { + // 创建日志窗口 + this.logWindowManager = new LogWindowManager(); + this.logWindowManager.createLogWindow(); + this.logWindowManager.addLog('system', '='.repeat(60)); + this.logWindowManager.addLog('system', 'NPQS9100 启动中...'); + this.logWindowManager.addLog('system', '='.repeat(60)); - // 创建日志窗口 - this.logWindowManager = new LogWindowManager(); - this.logWindowManager.createLogWindow(); - this.logWindowManager.addLog('system', '='.repeat(60)); - this.logWindowManager.addLog('system', 'NPQS9100 启动中...'); - this.logWindowManager.addLog('system', '='.repeat(60)); + // 创建 Loading 窗口 + this.startupManager = new StartupManager(); + this.startupManager.createLoadingWindow(); - // 创建 Loading 窗口 - this.startupManager = new StartupManager(); - this.startupManager.createLoadingWindow(); + // 开始启动流程 + try { + await this.startApplication(); + } catch (error) { + logger.error('[lifecycle] Failed to start application:', error); + this.logWindowManager.addLog('error', `启动失败: ${error.message}`); + this.logWindowManager.addLog('system', '请检查日志窗口了解详细错误信息'); + this.startupManager.showError(error.message || '启动失败,请查看日志'); + + // 显示错误5秒后关闭Loading窗口,但不关闭日志窗口 + setTimeout(() => { + this.startupManager.closeLoadingWindow(); + + // 即使启动失败,也显示主窗口(但用户可能需要手动修复问题) + const win = getMainWindow(); + win.show(); + win.focus(); + + // 添加主窗口关闭事件监听 + win.on('close', async () => { + logger.info('[lifecycle] Main window closing (after error), cleaning up...'); + await this.cleanup(); + }); + + this.logWindowManager.addLog('warn', '应用已启动,但部分服务可能未正常运行'); + }, 5000); + } + } else { + const win = getMainWindow(); + const {windowsOption} = getConfig(); + if (windowsOption.show == false) { + win.once('ready-to-show', () => { + win.show(); + win.focus(); + }) + } - // 开始启动流程 - try { - await this.startApplication(); - } catch (error) { - logger.error('[lifecycle] Failed to start application:', error); - this.logWindowManager.addLog('error', `启动失败: ${error.message}`); - this.logWindowManager.addLog('system', '请检查日志窗口了解详细错误信息'); - this.startupManager.showError(error.message || '启动失败,请查看日志'); - - // 显示错误5秒后关闭Loading窗口,但不关闭日志窗口 - setTimeout(() => { - this.startupManager.closeLoadingWindow(); - - // 即使启动失败,也显示主窗口(但用户可能需要手动修复问题) - const win = getMainWindow(); - win.show(); - win.focus(); - - // 添加主窗口关闭事件监听 - win.on('close', async () => { - logger.info('[lifecycle] Main window closing (after error), cleaning up...'); - await this.cleanup(); - }); - - this.logWindowManager.addLog('warn', '应用已启动,但部分服务可能未正常运行'); - }, 5000); } // 主窗口初始化但不显示,等待启动流程完成后再显示 @@ -542,7 +556,10 @@ class Lifecycle { */ async beforeClose() { logger.info('[lifecycle] before-close hook triggered'); - await this.cleanup(); + if (ps.isProd()) { + await this.cleanup(); + } + } } Lifecycle.toString = () => '[class Lifecycle]'; diff --git a/frontend/src/api/plan/plan.ts b/frontend/src/api/plan/plan.ts index 632d652..e172c35 100644 --- a/frontend/src/api/plan/plan.ts +++ b/frontend/src/api/plan/plan.ts @@ -42,7 +42,7 @@ export const getPqErrSysList = () => { } //获取指定模式下所有未绑定的设备 -export const getUnboundPqDevList = (params: { pattern: string}) => { +export const getUnboundPqDevList = (params: { pattern: string }) => { return http.get(`/pqDev/listUnbound?pattern=${params.pattern}`) } @@ -141,22 +141,22 @@ export const importSubPlan = (params: Plan.ResPlan) => { // 导出计划检测结果数据 export const exportPlanCheckData = (params: any) => { - return http.post( - `/adPlan/exportPlanCheckData?planId=${params.id}&devIds=${params.devIds}&report=${params.report}` - ) + return http.post(`/adPlan/exportPlanCheckData?planId=${params.id}&devIds=${params.devIds}&report=${params.report}`) } //根据误差体系id获取测试项 -export const getPqErrSysTestItemList = (params: {errorSysId : string}) => { +export const getPqErrSysTestItemList = (params: { errorSysId: string }) => { return http.get(`/pqErrSys/getTestItems?id=${params.errorSysId}`) } // 获取计划项目成员 -export const getMemberList = (params: {id : string}) => { +export const getMemberList = (params: { id: string }) => { return http.get(`/adPlan/getMemberList?planId=${params.id}`) } // 导入并合并子检测计划检测结果数据 export const importAndMergePlanCheckData = (params: Plan.ResPlan) => { - return http.upload(`/adPlan/importAndMergePlanCheckData`, params) + return http.upload(`/adPlan/importAndMergePlanCheckData`, params, { + timeout: 60000 * 20 + }) } \ No newline at end of file diff --git a/frontend/src/components/ImportZip/index.vue b/frontend/src/components/ImportZip/index.vue index ba57416..3efa208 100644 --- a/frontend/src/components/ImportZip/index.vue +++ b/frontend/src/components/ImportZip/index.vue @@ -12,6 +12,7 @@ action="#" class="upload" :limit="1" + :on-exceed="handleExceed" :http-request="uploadZip" accept=".zip" :auto-upload="!parameter.confirmMessage" @@ -56,7 +57,15 @@