From bb241a63754a41d49739ab016b6387084d5225d9 Mon Sep 17 00:00:00 2001
From: xy <271556543@qq.com>
Date: Fri, 24 May 2024 17:32:22 +0800
Subject: [PATCH] 1
---
build/builder-debug.yml | 17 +++++
src/main/config/SettingFile.js | 21 ++++++
src/main/config/StaticPath.js | 2 +-
src/main/config/menu.js | 13 ++--
src/main/index.js | 4 +-
src/main/services/ipcMain.js | 7 ++
src/main/services/notices.js | 3 +
src/main/services/windowManager.js | 28 ++++----
src/renderer/App.vue | 9 +--
src/renderer/icons/svg/setting.svg | 2 +
.../layout/components/Sidebar/index.vue | 19 +++++-
src/renderer/main.js | 1 +
src/renderer/router/index.js | 29 ++++++++-
src/renderer/store/notice.js | 15 +++--
src/renderer/utils/index.js | 8 +++
src/renderer/utils/request.js | 15 +++--
src/renderer/views/login/index.vue | 2 +-
src/renderer/views/setting/index.vue | 64 +++++++++++++++++++
static/setting.json | 1 +
19 files changed, 219 insertions(+), 41 deletions(-)
create mode 100644 build/builder-debug.yml
create mode 100644 src/main/config/SettingFile.js
create mode 100644 src/renderer/icons/svg/setting.svg
create mode 100644 src/renderer/utils/index.js
create mode 100644 src/renderer/views/setting/index.vue
create mode 100644 static/setting.json
diff --git a/build/builder-debug.yml b/build/builder-debug.yml
new file mode 100644
index 0000000..a4905e1
--- /dev/null
+++ b/build/builder-debug.yml
@@ -0,0 +1,17 @@
+arm64:
+ firstOrDefaultFilePatterns:
+ - '!**/node_modules'
+ - '!build{,/**/*}'
+ - '!build{,/**/*}'
+ - dist/electron/**/*
+ - package.json
+ - '!**/*.{iml,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,suo,xproj,cc,d.ts,mk,a,o,forge-meta,pdb}'
+ - '!**/._*'
+ - '!**/electron-builder.{yaml,yml,json,json5,toml,ts}'
+ - '!**/{.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,.DS_Store,thumbs.db,.gitignore,.gitkeep,.gitattributes,.npmignore,.idea,.vs,.flowconfig,.jshintrc,.eslintrc,.circleci,.yarn-integrity,.yarn-metadata.json,yarn-error.log,yarn.lock,package-lock.json,npm-debug.log,appveyor.yml,.travis.yml,circle.yml,.nyc_output,.husky,.github}'
+ - '!.yarn{,/**/*}'
+ - '!.editorconfig'
+ - '!.yarnrc.yml'
+ nodeModuleFilePatterns:
+ - '**/*'
+ - dist/electron/**/*
diff --git a/src/main/config/SettingFile.js b/src/main/config/SettingFile.js
new file mode 100644
index 0000000..3032ebf
--- /dev/null
+++ b/src/main/config/SettingFile.js
@@ -0,0 +1,21 @@
+import fs from "fs";
+import path from "path";
+export function readSettingFile () {
+ try {
+ const res = fs.readFileSync(path.resolve(__static, "./setting.json"), "utf-8")
+ global._DefaultSetting = JSON.parse(res)
+ return JSON.parse(res)
+ } catch (err) {
+ throw new Error(err)
+ }
+}
+
+export function writeSettingFile (data) {
+ try {
+ fs.writeFileSync(path.resolve(__static, "./setting.json"), data)
+ return true
+ } catch (err) {
+ console.error(err)
+ return false
+ }
+}
diff --git a/src/main/config/StaticPath.js b/src/main/config/StaticPath.js
index e7f54c3..3122461 100644
--- a/src/main/config/StaticPath.js
+++ b/src/main/config/StaticPath.js
@@ -16,4 +16,4 @@ export const loadingURL = process.env.NODE_ENV === 'development' ? `http://local
export const libPath = process.env.libPath
export const remindURL = 'development' ? `http://localhost:${process.env.PORT}/#/remind` : `file://${__dirname}/index.html/#/remind`
//export const adminWebUri = process.env.NODE_ENV === 'development' ? "http://contract-sqhj-test.ali251.langye.net/admin_test/#/" : "http://contract-sqhj.ali251.langye.net/admin/#/"
-export const adminWebUri = "http://contract-sqhj-test.ali251.langye.net/admin_test/#/"
+export let adminWebUri = "http://contract-sqhj-test.ali251.langye.net/admin_test/#/"
diff --git a/src/main/config/menu.js b/src/main/config/menu.js
index 3149a53..367c70b 100644
--- a/src/main/config/menu.js
+++ b/src/main/config/menu.js
@@ -1,5 +1,5 @@
// 这里是定义菜单的地方,详情请查看 https://electronjs.org/docs/api/menu
-const { dialog } = require('electron')
+const { dialog,app } = require('electron')
const os = require('os')
const version = require('../../../package.json').version
const menu = [
@@ -9,6 +9,12 @@ const menu = [
label: '快速重启',
accelerator: 'F5',
role: 'reload'
+ },{
+ label: '退出',
+ accelerator: 'CmdOrCtrl+F4',
+ click(){
+ app.quit()
+ }
}]
},
{
@@ -53,11 +59,6 @@ const menu = [
},
{
type: "separator"
- },
- {
- label: '退出',
- accelerator: 'CmdOrCtrl+F4',
- role: 'close'
}]
function info() {
dialog.showMessageBox({
diff --git a/src/main/index.js b/src/main/index.js
index 1d4e949..fc68859 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -5,7 +5,9 @@ import { initWindow, initTrayIcon, tray } from './services/windowManager'
import DisableButton from './config/DisableButton'
import electronDevtoolsInstaller, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
import { init } from "./services/notices"
+import { readSettingFile } from "./config/SettingFile"
function onAppReady () {
+ readSettingFile()
initWindow()
initTrayIcon()
init()
@@ -30,7 +32,7 @@ app.on('window-all-closed', () => {
tray.destroy();
}
// 所有平台均为所有窗口关闭就退出软件
- app.quit()
+ //app.quit()
})
app.on('browser-window-created', () => {
console.log('window-created')
diff --git a/src/main/services/ipcMain.js b/src/main/services/ipcMain.js
index 83f11ad..e14cf66 100644
--- a/src/main/services/ipcMain.js
+++ b/src/main/services/ipcMain.js
@@ -5,6 +5,7 @@ import downloadFile from './downloadFile'
import Update from './checkupdate'
import { updater } from './HotUpdater'
import { createNotification } from "./notices"
+import { writeSettingFile } from "../config/SettingFile"
import {
createAdminWindow,
toggleMainWindowResizable,
@@ -22,6 +23,12 @@ import {
export default {
Mainfunc(IsUseSysTitle) {
const allUpdater = new Update();
+ ipcMain.handle('write-default-setting', async (event, str) => {
+ return writeSettingFile(str)
+ })
+ ipcMain.handle('get-default-setting',async _ => {
+ return global._DefaultSetting
+ })
ipcMain.handle('create-notice', async (event, args) => {
const { title,body } = args
createNotification(title,body)
diff --git a/src/main/services/notices.js b/src/main/services/notices.js
index 3f7b1f7..b257fff 100644
--- a/src/main/services/notices.js
+++ b/src/main/services/notices.js
@@ -5,6 +5,9 @@ export function init () {
notification = new Notification()
}
export function createNotification(title,body) {
+ if (!global._DefaultSetting?.isNotice) {
+ return
+ }
if (Notification.isSupported()) {
notification.title = title;
notification.body = body;
diff --git a/src/main/services/windowManager.js b/src/main/services/windowManager.js
index 27cfd3b..c5ca56b 100644
--- a/src/main/services/windowManager.js
+++ b/src/main/services/windowManager.js
@@ -44,11 +44,11 @@ function createAdminView () {
mainWindow.setBrowserView(adminView)
mainWindow?.webContents.executeJavaScript("window.localStorage.getItem('token')",true).then((token) => {
session.defaultSession.cookies.set({
- url: adminWebUri,
+ url: global._DefaultSetting.adminWebUri,
name: "sqhj_workerbench_web_token",
value: token
}).then(_ => {
- adminView.webContents.loadURL(adminWebUri)
+ adminView.webContents.loadURL(global._DefaultSetting.adminWebUri)
})
})
adminView.webContents.on('dom-ready', () => {
@@ -71,7 +71,7 @@ function createAdminView () {
export function setAdminCookie () {
mainWindow?.webContents.executeJavaScript("window.localStorage.getItem('token')",true).then((token) => {
session.defaultSession.cookies.set({
- url: adminWebUri,
+ url: global._DefaultSetting.adminWebUri,
name: "sqhj_workerbench_web_token",
value: token
}).then(_ => {
@@ -102,11 +102,11 @@ function createAdminWindow() {
mainWindow?.webContents.executeJavaScript("window.localStorage.getItem('token')",true).then((token) => {
session.defaultSession.cookies.set({
- url: adminWebUri,
+ url: global._DefaultSetting.adminWebUri,
name: "sqhj_workerbench_web_token",
value: token
}).then(_ => {
- adminWindow.loadURL(adminWebUri)
+ adminWindow.loadURL(global._DefaultSetting.adminWebUri)
})
})
@@ -127,8 +127,9 @@ function createAdminWindow() {
adminWindow = null
})
}
+const iconPath = path.join(__static,"./ico.png")
function initTrayIcon () {
- tray = new Tray(path.join(__static,"./ico.png"))
+ tray = new Tray(iconPath)
tray.setToolTip("江苏省宿迁环境监测中心")
const menu = Menu.buildFromTemplate(menuconfig)
tray.setContextMenu(menu)
@@ -136,7 +137,6 @@ function initTrayIcon () {
if (!mainWindow.isVisible()) {
mainWindow.show()
}
- mainWindow.webContents.send("to-notice")
})
}
let trayTimer = null;
@@ -158,7 +158,11 @@ function setTrayTitle (title) {
if (process.platform === "darwin") {
tray.setTitle(title.toString())
} else {
- noticeFlash()
+ if (Number(title) && Number(title) > 0) {
+ noticeFlash()
+ } else {
+ tray.setImage(iconPath)
+ }
}
}
function createMainWindow() {
@@ -218,10 +222,10 @@ function createMainWindow() {
mainWindow.webContents.send("w-max", false)
})
mainWindow.on('closed', () => {
- mainWindow = null
- adminView = null
- remindWindow = null
- app.quit();
+ // mainWindow = null
+ // adminView = null
+ // remindWindow = null
+ // app.quit();
})
}
function createRemindWindow () {
diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index 8843ec8..adc681d 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -12,17 +12,14 @@ import CHeader from "./components/title";
import { useNoticeStore } from "@/store/notice";
import { onUnmounted } from "vue";
import { ipcRenderer } from "electron"
-import { useRouter } from "@/hooks/use-router"
-
+import { useRouter, useRoute } from "@/hooks/use-router"
+const $route = useRoute()
const $router = useRouter()
const noticeStore = useNoticeStore()
noticeStore.startNoticeTimer()
-ipcRenderer.on("to-notice",_ => {
- $router.push("/notice/index")
-})
+
onUnmounted(() => {
noticeStore.destroyNoticeTimer()
- ipcRenderer.removeListener("to-notice")
})
diff --git a/src/renderer/icons/svg/setting.svg b/src/renderer/icons/svg/setting.svg
new file mode 100644
index 0000000..21f3639
--- /dev/null
+++ b/src/renderer/icons/svg/setting.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/src/renderer/layout/components/Sidebar/index.vue b/src/renderer/layout/components/Sidebar/index.vue
index 5fedf57..c09b99a 100644
--- a/src/renderer/layout/components/Sidebar/index.vue
+++ b/src/renderer/layout/components/Sidebar/index.vue
@@ -7,6 +7,7 @@
:collapse="isCollapse">
+
@@ -21,7 +22,7 @@ import { useAppStore } from "@/store/app"
import { usePermissionStore } from "@/store/permission"
import { constantRouterMap } from "@/router"
import SvgIcon from "@/components/SvgIcon";
-import { useRouter } from "@/hooks/use-router";
+import { useRouter, useRoute } from "@/hooks/use-router";
import { useUserStore } from "@/store/user"
defineComponent({
name: 'Sidebar'
@@ -36,12 +37,17 @@ const isCollapse = computed(() => !sidebarStatus.opened)
const { logOut } = useUserStore()
const router = useRouter()
+const route = useRoute()
const logout = async () => {
await ipcRenderer.invoke("hide-admin-view")
logOut().then(() => {
router.push('/login')
})
}
+const toSetting = () => {
+ if (route.path === '/setting' || route.path === '/setting/index') return
+ router.push('/setting/index')
+}
diff --git a/static/setting.json b/static/setting.json
new file mode 100644
index 0000000..870a99d
--- /dev/null
+++ b/static/setting.json
@@ -0,0 +1 @@
+{"adminWebUri":"http://contract-sqhj-test.ali251.langye.net/admin_test/#/","api":"http://contract-sqhj-test.ali251.langye.net/","uploadApi":"http://contract-sqhj-test.ali251.langye.net/api/admin/upload-file","isNotice":true}