diff --git a/src/app.vue b/src/App.vue
similarity index 81%
rename from src/app.vue
rename to src/App.vue
index e92f45fe7009547bb4a7a910902bc61fe8493720..fb0a01fb66f66053ee4235128e7e968a73ab9379 100644
--- a/src/app.vue
+++ b/src/App.vue
@@ -1,42 +1,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/background.js b/src/background.js
index 8fe899660b7e141038d30d43e29eb8f177b7aaf8..5715d1fad61b8a3d62c5997c75907557d0ce35d0 100644
--- a/src/background.js
+++ b/src/background.js
@@ -4,14 +4,17 @@ import { app, protocol, BrowserWindow, Menu, globalShortcut } from 'electron'
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
const isDevelopment = process.env.NODE_ENV !== 'production'
-const path = require('path')
+const path = require('path');
+
+let mainWin = null
let toOpenDevTools = null
+
protocol.registerSchemesAsPrivileged([
- { scheme: 'app', privileges: { secure: true, standard: true }}
+ { scheme: 'app', privileges: { secure: true, standard: true } }
])
-let mainWin = null
+
async function createWindow() {
- try{
+ try {
mainWin = new BrowserWindow({
width: 1400,
height: 1000,
@@ -19,18 +22,18 @@ async function createWindow() {
backgroundColor: '#2e2c29',
title: '系统软件安装管理平台',
webPreferences: {
- nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
- contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION,
- webSecurity: false
+ nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION === 'true',
+ contextIsolation: process.env.ELECTRON_NODE_INTEGRATION !== 'true',
+ webSecurity: true
}
})
- const menuTemplate = Menu.buildFromTemplate([
+
+ // 设置菜单栏
+ const menuTemplate = [
{
label: '返回&(Ctrl+B)',
accelerator: 'Ctrl+B',
- click: () => {
- mainWin.webContents.goBack()
- }
+ click: () => mainWin.webContents.goBack()
},
{
label: '全屏&(Ctrl+F)',
@@ -47,41 +50,46 @@ async function createWindow() {
accelerator: 'Ctrl+S',
role: 'reload'
}
- ])
- Menu.setApplicationMenu(menuTemplate)
+ ];
+ Menu.setApplicationMenu(Menu.buildFromTemplate(menuTemplate))
+
+ // 显示窗口
mainWin.once('ready-to-show', () => {
mainWin.maximize()
mainWin.show()
})
+
+ // 加载页面
createProtocol('app')
mainWin.loadURL('app://./index.html')
- toOpenDevTools = function() {
- mainWin.webContents.openDevTools()
- }
- } catch(error) {
- console.log(error)
+
+ // 打开开发者工具
+ toOpenDevTools = () => mainWin.webContents.openDevTools()
+ } catch (error) {
+ console.error('Failed to create window:', error)
}
}
+// 监听应用事件
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
+
app.whenReady().then(() => {
- globalShortcut.register('ctrl+shift+alt+d', () => {
- toOpenDevTools()
- })
+ globalShortcut.register('ctrl+shift+alt+d', toOpenDevTools)
})
app.on('activate', () => {
- if (BrowserWindow.getAllWindows().length === 0) createWindow()
+ if (BrowserWindow.getAllWindows().length === 0) {
+ createWindow()
+ }
})
-app.on('ready', async() => {
- createWindow()
-})
+app.on('ready', createWindow)
+// 开发环境下的优雅退出
if (isDevelopment) {
if (process.platform === 'win32') {
process.on('message', (data) => {
diff --git a/src/store/modules/node-source.js b/src/store/modules/node-source.js
index 4e354bbc664b67a522f132c7edee4c430993ca53..b6049d9f80b5bc984c41cb7ea9a645fa31064b7e 100644
--- a/src/store/modules/node-source.js
+++ b/src/store/modules/node-source.js
@@ -2,27 +2,33 @@
const nodeSource = {
state: {
// 存放节点,检测源配置30秒后才能再次操作
- nodeCheckSetting: []
+ nodeCheckSetting: new Map()
},
getters: {
},
mutations: {
- // 倒计时30秒
SET_CHECK_SOURCE_INTERVAL(state, nodeId) {
+ console.log(`Setting check source interval for node ${nodeId}`)
+
+ if (state.nodeCheckSetting.has(nodeId)) {
+ console.log(`Clearing existing interval for node ${nodeId}`)
+ clearTimeout(state.nodeCheckSetting.get(nodeId).timeout)
+ state.nodeCheckSetting.delete(nodeId)
+ }
+
const obj = {
nodeId,
time: 30
}
- obj.interval = setInterval(() => {
- obj.time--
- if (obj.time === 0 && obj.interval !== undefined) {
- clearInterval(obj.interval)
- const nodeIndex = state.nodeCheckSetting.findIndex(item => item.nodeId === nodeId)
- state.nodeCheckSetting.splice(nodeIndex, 1)
- }
- }, 1000)
- state.nodeCheckSetting.push(obj)
+
+ obj.timeout = setTimeout(() => {
+ console.log(`Interval finished for node ${nodeId}`)
+ state.nodeCheckSetting.delete(nodeId)
+ }, 30000)
+
+ state.nodeCheckSetting.set(nodeId, obj)
+ console.log(`Interval set for node ${nodeId}`)
}
},
actions: {