From 909dd090e6b2cb851e1b07ea0ca4b14fa1cd77a3 Mon Sep 17 00:00:00 2001 From: zh <972939975@qq.com> Date: Thu, 6 Nov 2025 16:10:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron.vite.config.1762408912589.mjs | 60 +++++++++++++++++++ electron.vite.config.1762408928311.mjs | 60 +++++++++++++++++++ src/main/index.ts | 47 +++++++++------ .../src/views/TS/components/chart.vue | 2 +- .../src/views/TS/components/eventParams.vue | 2 +- src/renderer/src/views/TS/deduction.vue | 2 +- .../src/views/components/headers/index.vue | 47 ++++++--------- .../components/tree/components/rightMenu.vue | 1 + .../src/views/components/tree/hooks/tree.ts | 2 +- src/renderer/src/views/login/index.vue | 17 +++--- 10 files changed, 181 insertions(+), 59 deletions(-) create mode 100644 electron.vite.config.1762408912589.mjs create mode 100644 electron.vite.config.1762408928311.mjs 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 @@
- +
{{ date.hms }} @@ -17,12 +12,7 @@ {{ t(`week.4`) }}
- +
@@ -63,7 +53,8 @@ const headImg = computed(() => { } }) -const skinInfo = ref(JSON.parse(localStorage.getItem('systemSetting') || '{}').skinInfo || 'color1') + +const skinInfo = ref(JSON.parse(localStorage.getItem("systemSetting") || '{}').skinInfo || 'color1') const { t } = useI18n() const date = ref({ @@ -71,25 +62,26 @@ const date = ref({ hms: '', week: 0 }) -window.addEventListener('setItemEvent', (e: any) => { +window.addEventListener("setItemEvent", (e: any) => { console.log('e', e) - if (e.key == 'systemSetting') { - let obj = JSON.parse(e.newValue) - skinInfo.value = obj.skinInfo + if (e.key == "systemSetting") { + let obj = JSON.parse(e.newValue); + skinInfo.value = obj.skinInfo; let setting = JSON.parse(e.newValue) let dialogElm: any = document.getElementsByClassName('YJ-custom-base-dialog') if (setting.language === 'zh-EN') { for (let i = 0; i < dialogElm.length; i++) { - dialogElm[i].classList.add('dialog-en') + dialogElm[i].classList.add('dialog-en'); } - } else { + } + else { for (let i = 0; i < dialogElm.length; i++) { - dialogElm[i].classList.remove('dialog-en') + dialogElm[i].classList.remove('dialog-en'); } } } -}) +}); var weatherClick = ref(false) const setTime = () => { let date1 = new Date() @@ -140,7 +132,7 @@ var clickFun = () => { z-index: 999; pointer-events: none; - > * { + >* { pointer-events: all; } @@ -185,7 +177,7 @@ var clickFun = () => { align-items: center; font-family: 'alimamashuheiti'; - & > span:first-child { + &>span:first-child { letter-spacing: 1px; font-size: 2rem; font-family: 'alimamashuheiti'; @@ -197,23 +189,20 @@ var clickFun = () => { display: flex; flex-direction: column; - & > span:first-child { + &>span:first-child { font-size: 0.9rem; } - & > span:last-child { + &>span:last-child { font-size: 0.8rem; } } .weather { margin-left: 15px; - .weatherIcon { - fill: rgba(var(--color-base1), 1) !important; - } svg { - // fill: rgba(var(--color-base1), 1) !important; + fill: rgba(var(--color-base1), 1) !important; cursor: pointer; } } diff --git a/src/renderer/src/views/components/tree/components/rightMenu.vue b/src/renderer/src/views/components/tree/components/rightMenu.vue index 746ac9e..51445d3 100644 --- a/src/renderer/src/views/components/tree/components/rightMenu.vue +++ b/src/renderer/src/views/components/tree/components/rightMenu.vue @@ -26,6 +26,7 @@