diff --git a/electron.vite.config.1762408912589.mjs b/electron.vite.config.1762408912589.mjs new file mode 100644 index 0000000..3edbcb9 --- /dev/null +++ b/electron.vite.config.1762408912589.mjs @@ -0,0 +1,60 @@ +// electron.vite.config.ts +import { resolve } from "path"; +import { defineConfig, externalizeDepsPlugin } from "electron-vite"; +import vue from "@vitejs/plugin-vue"; +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; +import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; +import path from "path"; +var electron_vite_config_default = defineConfig({ + main: { + plugins: [externalizeDepsPlugin()] + }, + preload: { + plugins: [externalizeDepsPlugin()] + }, + renderer: { + resolve: { + alias: { + "@renderer": resolve("src/renderer/src"), + "@": resolve("src/renderer/src") + } + }, + plugins: [ + vue(), + AutoImport({ + imports: ["vue"], + dts: "src/auto-imports.d.ts", + // 自动生成类型声明文件 + resolvers: [ElementPlusResolver()] + }), + Components({ + resolvers: [ElementPlusResolver()] + }), + // SVG图标插件配置 + // 配置SVG图标插件 + createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), "src/renderer/src/icons/svg")], + symbolId: "icon-[name]", + // 自动清除 SVG 中的 fill 和 stroke 属性 + svgoOptions: { + plugins: [{ name: "removeAttrs", params: { attrs: ["fill", "stroke", "stroke-width"] } }] + } + }) + ] + /*server: { + port: 8848, + proxy: { + '/api': { + target: localStorage.getItem('ip') || 'http://127.0.0.1:8848', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') + } + } + }*/ + } +}); +export { + electron_vite_config_default as default +}; diff --git a/electron.vite.config.1762408928311.mjs b/electron.vite.config.1762408928311.mjs new file mode 100644 index 0000000..3edbcb9 --- /dev/null +++ b/electron.vite.config.1762408928311.mjs @@ -0,0 +1,60 @@ +// electron.vite.config.ts +import { resolve } from "path"; +import { defineConfig, externalizeDepsPlugin } from "electron-vite"; +import vue from "@vitejs/plugin-vue"; +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; +import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; +import path from "path"; +var electron_vite_config_default = defineConfig({ + main: { + plugins: [externalizeDepsPlugin()] + }, + preload: { + plugins: [externalizeDepsPlugin()] + }, + renderer: { + resolve: { + alias: { + "@renderer": resolve("src/renderer/src"), + "@": resolve("src/renderer/src") + } + }, + plugins: [ + vue(), + AutoImport({ + imports: ["vue"], + dts: "src/auto-imports.d.ts", + // 自动生成类型声明文件 + resolvers: [ElementPlusResolver()] + }), + Components({ + resolvers: [ElementPlusResolver()] + }), + // SVG图标插件配置 + // 配置SVG图标插件 + createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), "src/renderer/src/icons/svg")], + symbolId: "icon-[name]", + // 自动清除 SVG 中的 fill 和 stroke 属性 + svgoOptions: { + plugins: [{ name: "removeAttrs", params: { attrs: ["fill", "stroke", "stroke-width"] } }] + } + }) + ] + /*server: { + port: 8848, + proxy: { + '/api': { + target: localStorage.getItem('ip') || 'http://127.0.0.1:8848', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') + } + } + }*/ + } +}); +export { + electron_vite_config_default as default +}; diff --git a/src/main/index.ts b/src/main/index.ts index 075773f..e6ce29d 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -276,6 +276,25 @@ function createWindow(): void { mainWindow.on('leave-full-screen', () => { mainWindow.webContents.send('fullscreen-status-changed', false) }); + mainWindow.on("close", (e) => { + e.preventDefault(); + dialog + .showMessageBox(mainWindow, { + type: "warning", + title: "提示", + message: "是否确认退出系统?", + buttons: ["cancel", "ok"], + }) + .then((res) => { + if (res.response) { + setTimeout(() => { + mainWindow.destroy() + mainWindow = null; + }, 200); + windowAllClosed(); + } + }); + }); let recorder; ipcMain.on("startRecoder", () => { @@ -498,8 +517,10 @@ function forceQuit() { app.relaunch(); } console.log('------退出-------'); - app.exit(); - app.quit(); + setTimeout(() => { + app.exit(); + app.quit(); + }, 500); } else { // 其他系统 process.exit(0); @@ -518,14 +539,12 @@ function closeAllWindows() { }); } -const gotTheLock = app.requestSingleInstanceLock(); +const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { app.quit(); } else { - if (app.isReady()) { - } - + app.on("ready", createWindow); app.whenReady().then(() => { // alert(devSplashURL) // alert(prodSplashURL) @@ -549,26 +568,18 @@ if (!gotTheLock) { }); // Set app user model id for windows electronApp.setAppUserModelId('com.electron') - + // Default open or close DevTools by F12 in development // and ignore CommandOrControl + R in production. // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils app.on('browser-window-created', (_, window) => { optimizer.watchWindowShortcuts(window) }) - + // IPC test ipcMain.on('ping', () => console.log('pong')) - - createWindow() - - app.on('activate', function () { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (BrowserWindow.getAllWindows().length === 0) createWindow() - }) }) - + // 退出时注销所有快捷键 app.on('will-quit', () => { globalShortcut.unregisterAll() @@ -586,7 +597,7 @@ if (!gotTheLock) { } }); - + // testNapi() global.sharedObject = { hasService: false, diff --git a/src/renderer/src/views/TS/components/chart.vue b/src/renderer/src/views/TS/components/chart.vue index b1251bc..d95aa2e 100644 --- a/src/renderer/src/views/TS/components/chart.vue +++ b/src/renderer/src/views/TS/components/chart.vue @@ -85,7 +85,7 @@ let getWidth = (durationTime) => { // 6. 让 progressStyle 间接依赖 refreshKey(通过 getWidth) let progressStyle = (task) => { let taskLeft = task.startTime - window['tsObj']._Store._startTimestamp; - let style = { + let style:any = { width: getWidth(task.duration_time) * 1000 + "px", left: getWidth(taskLeft) + "px", }; diff --git a/src/renderer/src/views/TS/components/eventParams.vue b/src/renderer/src/views/TS/components/eventParams.vue index 27e5950..9a7980f 100644 --- a/src/renderer/src/views/TS/components/eventParams.vue +++ b/src/renderer/src/views/TS/components/eventParams.vue @@ -18,7 +18,7 @@ import {inject, ref} from 'vue' const eventBus: any = inject('bus') -let eventObj = ref(null) +let eventObj:any = ref(null) eventBus.on('click-event-show-plane', (params) => { console.log('兄弟 B 的方法被触发了!', params) eventObj.value = (eventObj.value == null ? params : null) diff --git a/src/renderer/src/views/TS/deduction.vue b/src/renderer/src/views/TS/deduction.vue index 4eb5994..4008c4b 100644 --- a/src/renderer/src/views/TS/deduction.vue +++ b/src/renderer/src/views/TS/deduction.vue @@ -130,7 +130,7 @@ let eventCallback = () => { let timeId = Math.round(props.TSOBJ._Store._currentTimestamp / 1000); timeId *= 1000; // console.log(timeId) - let taskIds = []; + let taskIds:any = []; let dataMap = props.TSOBJ._Store.dealData("startTime"); console.log(dataMap) diff --git a/src/renderer/src/views/components/headers/index.vue b/src/renderer/src/views/components/headers/index.vue index e454c31..b97f3bf 100644 --- a/src/renderer/src/views/components/headers/index.vue +++ b/src/renderer/src/views/components/headers/index.vue @@ -3,12 +3,7 @@