钜星新版审处方客户端初始提交
This commit is contained in:
136
src/views/list_printer.html
Normal file
136
src/views/list_printer.html
Normal file
@ -0,0 +1,136 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>选择打印机</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||
<link href="../../node_modules/bootstrap-icons/font/bootstrap-icons.css" rel="stylesheet" />
|
||||
</head>
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.container-fluid {
|
||||
height: 100%;
|
||||
padding: 5% 0;
|
||||
}
|
||||
|
||||
.list-group {
|
||||
height: 80%;
|
||||
overflow: auto;
|
||||
margin-bottom: 10%;
|
||||
}
|
||||
|
||||
.printer-btn-box {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 0 3%;
|
||||
}
|
||||
|
||||
.printer-btn {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.active {
|
||||
background-color: #c6c9ce !important;
|
||||
border-color: #c6c9ce !important;
|
||||
}
|
||||
|
||||
.printer-button {
|
||||
width: 65px;
|
||||
margin-right: 10px;
|
||||
background-color: #4495ec !important;
|
||||
border-color: #4495ec !important;
|
||||
}
|
||||
|
||||
.printer-button:hover {
|
||||
background-color: #4495ec !important;
|
||||
border-color: #4495ec !important;
|
||||
}
|
||||
|
||||
.cancel-button {
|
||||
width: 65px;
|
||||
color: #4495ec !important;
|
||||
background-color: #fff !important;
|
||||
border-color: #4495ec !important;
|
||||
}
|
||||
|
||||
.cancel-button:hover {
|
||||
color: #4495ec !important;
|
||||
background-color: #fff !important;
|
||||
border-color: #4495ec !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<body>
|
||||
<div class="container-fluid" id="div">
|
||||
<div class="list-group">
|
||||
|
||||
</div>
|
||||
<div class="printer-btn-box">
|
||||
<div class="printer-btn">
|
||||
<button type="button" class="btn btn-success printer-button">打印</button>
|
||||
<button type="button" class="btn btn-danger cancel-button">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.$ = window.jQuery = require('jquery');
|
||||
const ipcRenderer = require('electron').ipcRenderer;
|
||||
|
||||
let printData = {
|
||||
printer: '',
|
||||
pdf_url: ''
|
||||
}
|
||||
$(function () {
|
||||
// 获取打印机数据,拼接打印机列表
|
||||
ipcRenderer.on('printerData', function (event, json_data) {
|
||||
let data = JSON.parse(json_data)
|
||||
let defaultPrinter = data.defaultPrinter;
|
||||
|
||||
printData.pdf_url = data.pdf_url;
|
||||
|
||||
// 绘制页面
|
||||
let html = [];
|
||||
for (const printer of data.listPrinter) {
|
||||
if (printer === defaultPrinter) {
|
||||
html.push(`<a href="#" class="list-group-item list-group-item-action active" data-name="${printer}">
|
||||
<i class="bi bi-printer-fill"></i> ${printer}
|
||||
</a>
|
||||
`)
|
||||
continue;
|
||||
}
|
||||
html.push(`<a href="#" class="list-group-item list-group-item-action" data-name="${printer}">
|
||||
<i class="bi bi-printer-fill"></i> ${printer}
|
||||
</a>
|
||||
`)
|
||||
}
|
||||
$(".list-group").html(html.join(''));
|
||||
})
|
||||
|
||||
// 绑定列表点击事件
|
||||
$(".list-group").on('click', 'a', function () {
|
||||
$(".list-group a").removeClass('active');
|
||||
$(this).addClass('active');
|
||||
printData.printer = $(this).data('name');
|
||||
})
|
||||
|
||||
// 绑定打印点击事件
|
||||
$(".printer-button").click(function () {
|
||||
let data = JSON.stringify(printData);
|
||||
ipcRenderer.send('print', data)
|
||||
});
|
||||
|
||||
// 绑定取消打印事件
|
||||
$(".cancel-button").click(function () {
|
||||
ipcRenderer.send('close_listPrinter');
|
||||
})
|
||||
})
|
||||
|
||||
</script>
|
||||
411
src/views/setting.html
Normal file
411
src/views/setting.html
Normal file
@ -0,0 +1,411 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>钜星应用程序管理工具</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<script src="../../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<link href="../css/set.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container-fluid" id="div">
|
||||
<table class="table table-striped " style="text-align: center">
|
||||
<tr>
|
||||
<th>编号</th>
|
||||
<th>端口</th>
|
||||
<th>快捷地址</th>
|
||||
<th>缓存文件夹</th>
|
||||
<th colspan="2">操作</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="cover"></div>
|
||||
<div id="box">
|
||||
<select id="weburl" class="form-control" onchange="clientChange()">
|
||||
</select><br/>
|
||||
<label style="color: red;">注意:以下项不允许与其它快捷方式一致!!</label>
|
||||
<input id="lnkName" placeholder="快捷名称(必填,不能与其它快捷方式名称一致)" class="form-control"/>
|
||||
<br/>
|
||||
<input id="cachePath" placeholder="缓存名称(必填,不能与其它缓存位置一致)" class="form-control"/>
|
||||
<br/>
|
||||
<div style="margin-left: 20%;padding-top: 2em">
|
||||
<input type="button" onclick="createInk()" class="btn btn-success" value="生成"/>
|
||||
<input type="button" onclick="exit()" class="btn btn-danger" value="退出" style="margin-left: 30%;"/>
|
||||
</div>
|
||||
</div>
|
||||
<!--确认提示框-->
|
||||
<div id="box1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5>删除提示</h5>
|
||||
<hr/>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<span>是否删除此条桌面快捷方式?</span>
|
||||
<div style="margin-left: 20%;padding-top: 2em">
|
||||
<input type="button" onclick="deleteConfirm()" class="btn btn-success" value="确认"/>
|
||||
<input type="button" onclick="exit1()" class="btn btn-danger" value="取消" style="margin-left: 30%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--更新进度展示框-->
|
||||
<div id="box2">
|
||||
<!-- 更新信息提示-->
|
||||
<div id="update_label"></div>
|
||||
<!--更新进度条-->
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="60"
|
||||
aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--确认更新提示框-->
|
||||
<div id="box3">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" id="update_confirm_header" style="margin-left: 29%"></div>
|
||||
<hr/>
|
||||
<div class="panel-body" style="width: 100%;height: 25rem">
|
||||
<ul class="list-group" id="update_confirm_content" style="text-align: center"></ul>
|
||||
<div style="padding-left: 20%;height: 5rem">
|
||||
<div class="checkbox">
|
||||
<label style="font-size: 12px">
|
||||
<input type="checkbox" class="is_restart" value="1">
|
||||
更新后是否重新启动程序?
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="button" onclick="updateConfirm()" class="btn btn-success" value="立即升级"/>
|
||||
<input type="button" onclick="exit2()" class="btn btn-danger" value="取消" style="margin-left: 30%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<input type="button" id="create" class="btn btn-success floating-button" value="创建">
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
const dpth=require('path');
|
||||
const log = require(".."+dpth.sep+"js"+dpth.sep+"setting"+dpth.sep+"set_log").clog;
|
||||
const fs = require("fs");
|
||||
const ws = require('windows-shortcuts');
|
||||
const os=require('os');
|
||||
let desktop = dpth.join(os.homedir(), 'Desktop');
|
||||
let ele = require('electron');
|
||||
let ipcRenderer = ele.ipcRenderer;
|
||||
window.$ = window.jquery = require('jquery');
|
||||
let update_info = {};
|
||||
|
||||
log.info("-->进入配置页面...");
|
||||
//进行程序检查更新
|
||||
ipcRenderer.send("checkForUpdate");
|
||||
//程序更新信息监听
|
||||
ipcRenderer.on("message", (event, args) => {
|
||||
if (args[0] == -1) {
|
||||
$("#update_label").html("<span style='color:red'>" + args[1] + "</span>");
|
||||
setTimeout(function () {
|
||||
$("#box2").hide();
|
||||
if (!$("#box1").is(":visible") && !$("#box").is(":visible") && !$("#box3").is(":visible")) {
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
}
|
||||
}, 1500)
|
||||
} else if (args[0] == 2) {
|
||||
log.info(args[1]);
|
||||
$("#update_label").html(args[1]);
|
||||
update_info = args[2];
|
||||
//检查到可用更新弹出下载进度弹框
|
||||
$("#box2").show();
|
||||
$("#cover").css("cssText", "background:#aaa");
|
||||
//禁用创建和删除按钮
|
||||
$("#create").attr("disabled", "disabled");
|
||||
$(".delete").attr("disabled", "disabled");
|
||||
} else {
|
||||
log.info(args[1]);
|
||||
}
|
||||
});
|
||||
//下载进度条实时更新
|
||||
ipcRenderer.on("downloadProgress", (event, progressObj) => {
|
||||
let downloadPercent = progressObj.percent || 0;
|
||||
log.info("传过来的数据百分数样式:" + progressObj.percent);
|
||||
$(".progress-bar").css("cssText", "width:" + downloadPercent + "%");
|
||||
$(".sr-only").html(downloadPercent + "%");
|
||||
});
|
||||
//下载完成立即进行重启安装
|
||||
ipcRenderer.on("isQuitAndInstall", () => {
|
||||
$("#box2").hide();
|
||||
$("#update_confirm_header").html("<h5>" + update_info.version + "版本说明</h5>");
|
||||
$("#update_confirm_content").html(update_info.updateInfo);
|
||||
$("#box3").show();
|
||||
});
|
||||
|
||||
//更新确认提示框
|
||||
function updateConfirm() {
|
||||
let is_restart = $(".is_restart").val();
|
||||
$("#box3").hide();
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
|
||||
if (is_restart == "1") {
|
||||
ipcRenderer.send("isQuitAndInstall", [true]);
|
||||
} else {
|
||||
ipcRenderer.send("isQuitAndInstall", [false]);
|
||||
}
|
||||
}
|
||||
|
||||
function exit2() {
|
||||
$("#box3").hide();
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
}
|
||||
|
||||
let respath = null;
|
||||
let lnkList = {};
|
||||
let lnks_url=null;
|
||||
|
||||
//接收传过来得配置信息
|
||||
ipcRenderer.on('toConfig', function (event, data) {
|
||||
respath = data[0];
|
||||
loadPortSet();
|
||||
lnks_url=data[1];
|
||||
loadInit(respath,data[1]);
|
||||
});
|
||||
|
||||
let j = null;
|
||||
let lnk_url = null;
|
||||
|
||||
//删除快捷方式
|
||||
function deleteLnk(index, url) {
|
||||
$("#box1").show();
|
||||
$("#cover").css("cssText", "background:#aaa");
|
||||
//禁用创建和删除按钮
|
||||
$("#create").attr("disabled", "disabled");
|
||||
$(".delete").attr("disabled", "disabled");
|
||||
j = index;
|
||||
lnk_url = url;
|
||||
return;
|
||||
}
|
||||
|
||||
function deleteConfirm() {
|
||||
let lnks = {};
|
||||
$.each(lnkList, function (i, item) {
|
||||
if (i != j) {
|
||||
lnks[i] = item;
|
||||
}
|
||||
});
|
||||
lnkList=lnks;
|
||||
//删除存在的快捷方式
|
||||
if (fs.existsSync(desktop+dpth.sep+lnk_url)) {
|
||||
fs.unlinkSync(desktop+dpth.sep+lnk_url);
|
||||
}
|
||||
let jsonstr = JSON.stringify(lnks);
|
||||
fs.writeFileSync(lnks_url+dpth.sep+"lnks.json", jsonstr, function (err) {
|
||||
log.error("更新应用程序失败!");
|
||||
});
|
||||
//第四步删除当前页面dom结构
|
||||
let list = $(".lnk_code");
|
||||
for (let k = 0; k < list.length; k++) {
|
||||
if (list[k].innerHTML === j) {
|
||||
list[k].parentElement.remove();
|
||||
}
|
||||
}
|
||||
$("#box1").hide();
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
}
|
||||
|
||||
//选择的客户端变化时
|
||||
function clientChange() {
|
||||
//获取端口url
|
||||
let myselect = document.getElementById("weburl");
|
||||
let index = myselect.selectedIndex;
|
||||
let weburl = myselect.options[index].value;
|
||||
let lastnum = $(".table tr:last").find(".lnk_code").text();
|
||||
let ind = 1
|
||||
if (lastnum !== '') {
|
||||
ind = parseInt(lastnum) + 1;
|
||||
}
|
||||
if (weburl === "pharmacy") {
|
||||
if (ind == 1) {
|
||||
$("#lnkName").val("钜星科技便民问诊系统-门店端");
|
||||
$("#cachePath").val("default");
|
||||
} else {
|
||||
$("#lnkName").val("钜星科技便民问诊系统-门店端" + ind);
|
||||
$("#cachePath").val("pharmacy-" + ind);
|
||||
}
|
||||
} else if (weburl === "doctor") {
|
||||
$("#lnkName").val("钜星科技便民问诊系统-医生端" + ind);
|
||||
$("#cachePath").val("doctor-" + ind);
|
||||
} else {
|
||||
$("#lnkName").val("钜星科技便民问诊系统-药师端" + ind);
|
||||
$("#cachePath").val("pharmacist-" + ind);
|
||||
}
|
||||
}
|
||||
|
||||
//创建按钮点击事件
|
||||
$("#create").click(function () {
|
||||
$("#box").show();
|
||||
$("#cover").css("cssText", "background:#aaa");
|
||||
//禁用创建和删除按钮
|
||||
$("#create").attr("disabled", "disabled");
|
||||
$(".delete").attr("disabled", "disabled");
|
||||
|
||||
let lastnum = $(".table tr:last").find(".lnk_code").text();
|
||||
let ind = 1
|
||||
if (lastnum !== '') {
|
||||
ind = parseInt(lastnum) + 1;
|
||||
}
|
||||
if (ind == 1) {
|
||||
$("#lnkName").val("钜星科技便民问诊系统-门店端");
|
||||
$("#cachePath").val("default");
|
||||
} else {
|
||||
$("#lnkName").val("钜星科技便民问诊系统-门店端" + ind);
|
||||
$("#cachePath").val("pharmacy-" + ind);
|
||||
}
|
||||
//点击创建按钮首先清楚所有的选项,然后加载端口选项
|
||||
$("#weburl").empty();
|
||||
loadPortSet();
|
||||
});
|
||||
|
||||
//创建快捷方式
|
||||
function createInk() {
|
||||
//获取端口url
|
||||
let myselect = document.getElementById("weburl");
|
||||
let index = myselect.selectedIndex;
|
||||
let weburl = myselect.options[index].value;
|
||||
|
||||
//获取快捷方式名称
|
||||
let InkName = $("#lnkName").val().trim();
|
||||
//获取缓存文件夹名称
|
||||
let cacheDir = $("#cachePath").val().trim();
|
||||
//第一步创建桌面快捷方式
|
||||
setlnk(InkName, weburl, cacheDir);
|
||||
//第二步将数据添加到setting.json文件中
|
||||
let lastnum = $(".table tr:last").find(".lnk_code").text();
|
||||
let itemNum = 1;
|
||||
if (lastnum != "") {
|
||||
itemNum = parseInt(lastnum) + itemNum;
|
||||
}
|
||||
let thisItem = {};
|
||||
if (weburl === "pharmacy") {
|
||||
thisItem.client = "门店端";
|
||||
} else if (weburl === "doctor") {
|
||||
thisItem.client = "医生端";
|
||||
} else {
|
||||
thisItem.client = "药师端";
|
||||
}
|
||||
thisItem.lnk_url = desktop + dpth.sep + InkName + ".lnk";
|
||||
thisItem.cache_dir = cacheDir;
|
||||
|
||||
lnkList[itemNum] = thisItem;
|
||||
let jsonstr = JSON.stringify(lnkList);
|
||||
fs.writeFileSync(lnks_url+dpth.sep+"lnks.json", jsonstr, function (err) {
|
||||
log.error("创建快捷方式,写入文件失败!" + err);
|
||||
});
|
||||
$("#box").hide();
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
|
||||
let list = $(".lnk_code");
|
||||
for (let k = 0; k < list.length; k++) {
|
||||
list[k].parentElement.remove();
|
||||
}
|
||||
loadLnkList(lnkList);
|
||||
}
|
||||
|
||||
//
|
||||
function setlnk(lnkname, targetUrl, cacheDir) {
|
||||
//查看当前文件夹目录
|
||||
let thisurl = location.href;
|
||||
thisurl = thisurl.substring(8, thisurl.lastIndexOf("resources") - 1);
|
||||
if(fs.existsSync(desktop + dpth.sep + lnkname + ".lnk")){
|
||||
fs.unlinkSync(desktop + dpth.sep + lnkname + ".lnk");
|
||||
}
|
||||
//获取当前文件的绝对路径
|
||||
ws.create(desktop + dpth.sep + lnkname + ".lnk", {
|
||||
args: targetUrl + "--" + cacheDir,
|
||||
//打包时修改exe文件路径
|
||||
target: decodeURIComponent(thisurl) + dpth.sep+"钜星科技便民问诊系统.exe",
|
||||
runStyle: ws.MIN,
|
||||
desc: "钜星科技便民问诊系统"
|
||||
}, function (err) {
|
||||
if (err) {
|
||||
console.log("创建快捷方式出错:" + err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function exit() {
|
||||
$("#box").hide();
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
}
|
||||
|
||||
function exit1() {
|
||||
$("#box1").hide();
|
||||
$("#cover").css("cssText", "background:");
|
||||
$("#create").removeAttr("disabled");
|
||||
$(".delete").removeAttr("disabled");
|
||||
}
|
||||
|
||||
|
||||
//选择下拉框填充
|
||||
function loadPortSet() {
|
||||
//加载到下拉框中
|
||||
let str = "<option value='pharmacy'>门店端</option>";
|
||||
str = str + "<option value='doctor'>医生端</option>"
|
||||
str = str + "<option value='pharmacist'>药师端</option>"
|
||||
$("#weburl").append(str);
|
||||
}
|
||||
|
||||
//加载已创建的程序快捷方式
|
||||
function loadInit(respath,lnks_url) {
|
||||
log.info("快捷方式数据存放目录:"+lnks_url);
|
||||
if(!fs.existsSync(lnks_url)){
|
||||
fs.mkdirSync(lnks_url);
|
||||
fs.writeFileSync(lnks_url+dpth.sep+"lnks.json", JSON.stringify({}), function (err) {
|
||||
});
|
||||
}
|
||||
$.getJSON(lnks_url+dpth.sep+"lnks.json", function (data) {
|
||||
if (!$.isEmptyObject(data)) {
|
||||
loadLnkList(data);
|
||||
lnkList = data;
|
||||
}
|
||||
});
|
||||
}
|
||||
//加载存在快捷方式
|
||||
function loadLnkList(data) {
|
||||
$.each(data, function (i, item) {
|
||||
let str = "<tr>";
|
||||
str = str + "<td class='lnk_code'>" + i + "</td>";
|
||||
str = str + "<td>" + item.client + "</td>";
|
||||
str = str + "<td>" + item.lnk_url + "</td>";
|
||||
str = str + "<td>" + item.cache_dir + "</td>";
|
||||
let lnk_name=item.lnk_url.substring(item.lnk_url.lastIndexOf(dpth.sep)+1);
|
||||
let type=null;
|
||||
if(item.client=="门店端"){
|
||||
type="pharmacy"
|
||||
}else if(item.client=="医生端"){
|
||||
type="doctor"
|
||||
}else{
|
||||
type="pharmacist"
|
||||
}
|
||||
str = `${str}<td><input type='button' onclick='setlnk("${lnk_name}","${type}","${item.cache_dir}")' class='btn btn-success' value='重创快捷方式'/></td>`;
|
||||
str = `${str}<td><input type='button' onclick='deleteLnk("${i}" , "${lnk_name}")' class='btn btn-danger delete' value='删除'/></td>`;
|
||||
str = str + "</tr>"
|
||||
$(".table").append(str);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user