mirror of
https://github.com/jeecgboot/jeecg-boot.git
synced 2025-09-23 21:38:33 +00:00
v3.8.1发布,上传前端代码
This commit is contained in:
85
jeecgboot-vue3/electron/utils/window.ts
Normal file
85
jeecgboot-vue3/electron/utils/window.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import type {BrowserWindowConstructorOptions} from 'electron';
|
||||
import {BrowserWindow, dialog} from 'electron';
|
||||
import path from 'path';
|
||||
import {_PATHS} from '../paths';
|
||||
import {$env, isDev} from '../env';
|
||||
import {createTray} from './tray';
|
||||
|
||||
// 创建窗口
|
||||
export function createBrowserWindow(options?: BrowserWindowConstructorOptions) {
|
||||
const win = new BrowserWindow({
|
||||
width: 1200,
|
||||
height: 800,
|
||||
webPreferences: {
|
||||
preload: path.join(_PATHS.preloadRoot, 'index.js'),
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
},
|
||||
// 应用图标
|
||||
icon: isDev ? _PATHS.appIcon : void 0,
|
||||
...options,
|
||||
});
|
||||
|
||||
// 设置窗口打开处理器
|
||||
win.webContents.setWindowOpenHandler(({url}) => {
|
||||
const win = createBrowserWindow();
|
||||
win.loadURL(url);
|
||||
// 阻止创建新窗口,因为已经被接管
|
||||
return {action: 'deny'};
|
||||
});
|
||||
|
||||
// 当 beforeunload 阻止窗口关闭时触发
|
||||
win.webContents.on('will-prevent-unload', () => {
|
||||
const choice = dialog.showMessageBoxSync(win, {
|
||||
type: 'question',
|
||||
title: '确认关闭吗?',
|
||||
message: '系统可能不会保存您所做的更改。',
|
||||
buttons: ['关闭', '取消'],
|
||||
defaultId: 1,
|
||||
cancelId: 1,
|
||||
noLink: true,
|
||||
});
|
||||
// 用户选择了关闭,直接销毁窗口
|
||||
if (choice === 0) {
|
||||
win.destroy();
|
||||
}
|
||||
});
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
// 创建主窗口、系统托盘
|
||||
export function createMainWindow() {
|
||||
const win = createIndexWindow()
|
||||
|
||||
// 设置系统托盘图标
|
||||
createTray(win);
|
||||
|
||||
// 主窗口尝试关闭时,默认不直接退出应用,而是隐藏到托盘
|
||||
win.on('close', (event) => {
|
||||
event.preventDefault();
|
||||
win.hide();
|
||||
});
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
// 创建索引窗口
|
||||
export function createIndexWindow() {
|
||||
const win = createBrowserWindow({
|
||||
width: 1600,
|
||||
height: 1000,
|
||||
title: $env.VITE_GLOB_APP_TITLE!,
|
||||
});
|
||||
|
||||
// 开发环境加载Vite服务,生产加载打包文件
|
||||
if (isDev) {
|
||||
win.loadURL($env.VITE_DEV_SERVER_URL!)
|
||||
// 开发环境下,自动打开调试工具
|
||||
// win.webContents.openDevTools()
|
||||
} else {
|
||||
win.loadFile(path.join(_PATHS.publicRoot, 'index.html'));
|
||||
}
|
||||
|
||||
return win;
|
||||
}
|
Reference in New Issue
Block a user