first-electron/main.js

254 lines
7.3 KiB
JavaScript
Raw Permalink Normal View History

2020-10-22 10:51:21 +08:00
const windowStateKeeper =require( 'electron-window-state')
2018-05-26 04:09:14 +08:00
// Modules to control application life and create native browser window
2020-10-22 10:51:21 +08:00
const {app, BrowserWindow,ipcMain,Tray,Menu,dialog,globalShortcut } = require('electron')
const fs = require("fs")
const path = require("path")
2020-10-22 10:51:21 +08:00
var urlConfig = require("./url.config");
console.log(urlConfig)
var url =urlConfig .url
var type = urlConfig.type;
//获取mac地址的js
const getMac = require('getmac')
//网络请求
const request = require("request");
//登陆状态
let logined = false;
2015-10-17 08:04:57 +08:00
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
2016-04-30 04:08:11 +08:00
let mainWindow
2020-10-22 10:51:21 +08:00
let tray;
let settings = {};;
let isWin = process.platform === 'win32';
let isOsx = process.platform === 'darwin';
global.account = {
accountId: ''
,realName:''
}
//托盘菜单
var lable = '切换为'+(type=='1'?'正式版':'测试版');
let trayMenu = [
{
label: `打开`,
click() {
mainWindow.show();
}
},
{
label:lable,
click(){
var data = {"type":"1","url": "http://192.168.3.203:8087/"}
if(type==1){
var data = {"type":"2","url": "http://202.106.159.90/"}
}
fs.writeFile(path.join(app.getPath('userData'), '/url.config.json'),JSON.stringify(data),function(){
app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) })
app.quit();
})
}
},
{
type: 'separator'
},
{
label: '退出',
selector: 'terminate:',
click() {
logined = false;
mainWindow = null;
tray.destroy();
tray = null;
app.quit();
}
}
];
const icon = __dirname+'/src/assets/images/applogo.png';
//Windows系统托盘
function createTray() {
if (!isOsx) {
// Always show the tray icon on windows
settings.showOnTray = true;
}
if (settings.showOnTray) {
if (tray ) {
return;
}
let contextmenu = Menu.buildFromTemplate(trayMenu);
// Init tray icon
tray = new Tray(icon);
tray.on('right-click', () => {
tray.popUpContextMenu();
});
tray.on('click', () => {
mainWindow.show();
});
tray.setContextMenu(contextmenu);
} else {
if (!tray) return;
tray.destroy();
tray = null;
}
}
function updateTray() {
trayMenu.splice(1,1)
let contextmenu1 = Menu.buildFromTemplate(trayMenu);
if (!tray) {
tray = new Tray(icon);
}
tray.setContextMenu(contextmenu1);
}
2015-10-17 08:04:57 +08:00
2020-10-22 10:51:21 +08:00
//创建应用窗口方法
2015-12-17 03:19:56 +08:00
function createWindow () {
2020-10-22 10:51:21 +08:00
var mainWindowState = windowStateKeeper({
defaultWidth: 715,
defaultHeight: 400,
});
2015-10-17 08:04:57 +08:00
// Create the browser window.
2020-10-22 10:51:21 +08:00
mainWindow = new BrowserWindow({
x: mainWindowState.x,
y: mainWindowState.y,
width: 730,
height: 420,
minWidth: 400,
minHeight: 350,
})
mainWindow.setResizable(false);
// 当窗口被关闭时判断用户是否登陆来决定是否退出应用
mainWindow.on('close', function (e) {
console.log(logined)
if (!logined) {
mainWindow = null;
app.quit();
} else {
e.preventDefault();
mainWindow.hide();
}
})
2015-10-17 08:04:57 +08:00
2020-10-22 10:51:21 +08:00
ipcMain.on('print-getList', (event, deviceName) => {
const printers = mainWindow.webContents.getPrinters();
event.returnValue= printers;
2015-10-17 08:04:57 +08:00
2020-10-22 10:51:21 +08:00
})
2015-10-17 08:04:57 +08:00
2020-10-22 10:51:21 +08:00
ipcMain.on('print-start', (event, deviceName) => {
console.info('deviceName>>>>'+deviceName)
const printers = mainWindow.webContents.getPrinters();
console.info(printers)
printers.forEach(element => {
if (element.name === deviceName) {
console.log(element);
}
if (element.name === deviceName && element.status != 0) {
console.info('print-error', deviceName + '打印机异常');
event.returnValue = false;
}
event.returnValue = true;
});
})
//登陆成功请求跳转
ipcMain.on('asynchronous-message', (event, arg) => {
logined = true;
updateTray();
mainWindow.setResizable(true);
mainWindow.setSize(mainWindowState.width, mainWindowState.height);
mainWindowState.manage(mainWindow);
mainWindow.loadFile('src/index.html')
})
//注册账号请求跳转
ipcMain.on('asynchronous-zhuce', (event, arg) => {
mainWindow.setResizable(true);
mainWindow.setSize(mainWindowState.width, mainWindowState.height);
mainWindowState.manage(mainWindow);
mainWindow.loadFile('registered.html')
})
//注册序列号
ipcMain.on('asynchronous-reg', (event, arg) => {
getMac.getMac(function(err, macAddress){
request.post({url:'http://202.106.159.90/client/selectBySerialNumber', form: {serialNumber:arg,macAddress:macAddress}}, function(err,res,body){
var by= JSON.parse(body);
if(by.status==1){
mainWindow.loadFile('login.html')
}
event.returnValue = by
})
})
})
//下载文件
ipcMain.on('download', (event, arg) => {
mainWindow.webContents.downloadURL(arg);
})
mainWindow.webContents.session.on('will-download', (e, item) => {
const totalBytes = item.getTotalBytes();
//监听下载过程,计算并设置进度条进度
item.on('updated', () => {
mainWindow.setProgressBar(item.getReceivedBytes() / totalBytes);
});
//监听下载结束事件
item.on('done', (e, state) => {
//如果窗口还在的话,去掉进度条
if (!mainWindow.isDestroyed()) {
mainWindow.setProgressBar(-1);
}
//下载被取消或中断了
if (state === 'interrupted') {
dialog.showErrorBox('下载失败', `文件 ${item.getFilename()} 因为某些原因被中断下载`);
}
//下载完成
if (state === 'completed') {
dialog.showMessageBox({type:'info',title :'消息',message :'下载完成'})
}
});
});
createTray()
2015-12-17 03:19:56 +08:00
}
2020-10-22 10:51:21 +08:00
app.on('ready', ()=>{
//判断软件是否被激活
// getMac.getMac(function(err, macAddress){
// console.info(macAddress)
// request.post({url:'http://202.106.159.90/client/selectByMacAddress', form: {macAddress:macAddress}}, function(err,res,body){
// if(err){
// console.info(err)
// }
// var by= JSON.parse(body);
createWindow()
// if(by.status==1){
// console.info(mainWindow.getSize())
mainWindow.loadFile('login.html')
// }else{
// //如没有进入激活窗口
// mainWindow.loadFile('serialNumber.html')
// }
// })
// })
2016-04-30 04:08:11 +08:00
})
2015-12-17 03:19:56 +08:00
app.on('activate', function () {
2020-10-22 10:51:21 +08:00
if (!mainWindow.isVisible()) {
mainWindow.show();
}
2016-04-30 04:08:11 +08:00
})