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")
|
2016-11-01 01:32:20 +08:00
|
|
|
|
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
|
|
|
})
|