//@ sourceURL=to-medicine-test.js
//待取药队列
var currentList = new Array();
//过号名单队列
var pastList = new Array();
//正在配药队列
var dispenseList = new Array();
//正在取药
var rightPerson = null;
//临时待取药队列
var tempCurrentList = new Array();
//临时过号名单
var tempPastList = new Array();
//临时正在配药队列
var tempDispenseList = new Array();
//待取药队列是否已经加载完成
var currentListHadDone = true;
//过号名单队列是否已经加载完成
var pastListHadDone = true;
//正在配药名单队列是否已经加载完成
var dispenseListHadDone = true;
//药房编号
var groupNo = null;
$(function () {
$(".selectpicker").selectpicker({
dropuAuto: false
});
var yesNo = '';
$('#fyClass').html(yesNo);
$('#fyClass').selectpicker('refresh');
$("#editModal").modal("show");
//进入页面就加载一次
CurentTime();
intClock();
//每秒获取当前时间
setInterval(CurentTime, 1000);
//三十秒从后台拉一次数据
//setInterval(getTableDate, 30000);
//getTableDate();
//设置页面宽度
setHeightForTable();
$(window).resize(function () {
//设置页面宽度
setHeightForTable();
});
$(document).keyup(function (event) {
if (event.keyCode == 13) {
initTable();
}
});
});
/**
* 设置页面宽度
*/
function setHeightForTable() {
var height = $(window).height() - 320;
var realHeigt = height / 7;
if (realHeigt < 88) {
realHeigt = 88;
}
$("#tableList tr").css("height", realHeigt + "px");
}
/**
* 取当前时间 格式 yyyy年mm月dd日 hh:mm:ss weekday
* @constructor
*/
function CurentTime() {
var now = new Date();
var year = now.getFullYear(); //年
var month = now.getMonth() + 1; //月
var day = now.getDate(); //日
var hh = now.getHours(); //时
var mm = now.getMinutes(); //分
// var ss=now.getSeconds(); //秒
var weekday = new Array(7) //周
weekday[0] = "星期日"
weekday[1] = "星期一"
weekday[2] = "星期二"
weekday[3] = "星期三"
weekday[4] = "星期四"
weekday[5] = "星期五"
weekday[6] = "星期六"
var date = year + "年";
if (month < 10) date += "0";
date += month + "月";
if (day < 10) date += "0";
date += day + "日 ";
date += " " + weekday[now.getDay()];
$("#dateNow").html(date);
var time = "";
if (hh < 10) time += "0";
time += hh + ":";
if (mm < 10) time += '0';
time += mm;
$("#timeNow").html(time)
}
/**
* 初始化时钟
*/
function intClock() {
var audioElement = new Audio("");
//clock plugin constructor
$('#myclock').thooClock({
//size:$(document).height()/1.4,
size: 80,
onAlarm: function () {
//all that happens onAlarm
//$('#alarm1').show();
// alarmBackground(0);
//audio element just for alarm sound
document.body.appendChild(audioElement);
var canPlayType = audioElement.canPlayType("audio/ogg");
if (canPlayType.match(/maybe|probably/i)) {
audioElement.src = 'alarm.ogg';
} else {
audioElement.src = 'alarm.mp3';
}
// erst abspielen wenn genug vom mp3 geladen wurde
audioElement.addEventListener('canplay', function () {
audioElement.loop = true;
audioElement.play();
}, false);
},
showNumerals: true,
brandText: 'THOOYORK',
brandText2: 'Germany',
onEverySecond: function () {
//callback that should be fired every second
},
//alarmTime:'15:10',
offAlarm: function () {
//$('#alarm1').hide();
audioElement.pause();
clearTimeout(intVal);
$('body').css('background-color', '#FCFCFC');
}
});
}
/**
* 实例化列表
*/
function initTable() {
var winNo = $("#winNo").val();
groupNo = $("#fyClass").val();
if (groupNo == null || groupNo == "") {
alert("未选择药房!");
return;
}
if (winNo == null || winNo == "") {
alert("窗口号未录入!");
return;
}
var yfName = "门诊西药房";
if (groupNo == 81) {
yfName = "门诊中药房";
} else if (groupNo == 82) {
yfName = "颗粒剂药房";
}
$("#yfName").html(yfName);
$("#winNum").text(winNo);
$("#editModal").modal("hide");
getTableDate();
}
/**
* 获取后台最新数据
*/
function getTableDate() {
$.ajax({
type: "GET",
contentType: "application/json;charset=UTF-8",
url: "/thmz/getToMedicineUser?groupNo=" + groupNo,
headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
dataType: 'json',
success: function (result) {
if (result == '401' || result == 401) {
window.location.href = '/thmz/login/view'
return;
}
if (result.code == 0) {
var list = result.currentList;
for (let i = 0; i < list.length; i++) {
var current = list[i];
if (current.confirm_flag == 5) {//已配药待发药
currentList[currentList.length] = current;
tempCurrentList[tempCurrentList.length] = current;
//重置标志
currentListHadDone = false;
} else if (current.confirm_flag == 0 || current.confirm_flag == 2) {
dispenseList[dispenseList.length] = current;
tempDispenseList[tempDispenseList.length] = current; //重置标志
dispenseListHadDone = false;
}
}
//10秒刷新一次队列里面的数据,应对数据很多,一页展示不完的情况
setInterval(refeshTable, 10000);
} else {
errorMesage(result);
}
}
});
}
/**
* 刷新列表
*/
function refeshTable() {
console.log(new Date().getSeconds());
for (var i = 1; i < 7; i++) {
if (tempPastList == null || tempPastList.length == 0) {
$("#past" + i).text("");
if (i == 6) {
currentListHadDone = true;
//如果过号列表也遍历完成,将待取药列表置空,否责重新遍历待取药列表
//深度拷贝数组
tempPastList = $.extend(true, [], pastList);
}
} else {
//删除并返回数组的第一个元素
var name = tempPastList.shift().name;
$("#past" + i).text(name);
}
}
for (var i = 1; i < 13; i++) {
if (tempCurrentList == null || tempCurrentList.length == 0) {
$("#current" + i).text("");
if (i == 12) {
currentListHadDone = true;
//如果过号列表也遍历完成,将待取药列表置空,否责重新遍历待取药列表
//深度拷贝数组
tempCurrentList = $.extend(true, [], currentList);
}
} else {
//删除并返回数组的第一个元素
var name = tempCurrentList.shift().name;
$("#current" + i).text(name);
}
}
for (var i = 1; i < 13; i++) {
if (tempDispenseList == null || tempDispenseList.length == 0) {
$("#dispense" + i).text("");
if (i == 12) {
dispenseListHadDone = true;
//如果过号列表也遍历完成,将待取药列表置空,否责重新遍历待取药列表
//深度拷贝数组
tempDispenseList = $.extend(true, [], dispenseList);
}
} else {
//删除并返回数组的第一个元素
var name = tempDispenseList.shift().name;
$("#dispense" + i).text(name);
}
}
}
/**
* 清空表格
*/
function dispenseClear() {
for (var i = 1; i < 13; i++) {
$("#dispense" + i).text("");
}
}
/**
* 清空表格
*/
function currentClear() {
for (var i = 1; i < 13; i++) {
$("#current" + i).text("");
}
}
/**
* 清空表格
*/
function pastClear() {
for (var i = 1; i < 7; i++) {
$("#past" + i).text("");
}
}
var websocket = null;
//判断当前浏览器是否支持WebSocket, 主要此处要更换为自己的地址
if ('WebSocket' in window) {
websocket = new WebSocket("ws://" + window.location.host + "/thmz/toMedicineSocket/acceptor");
} else {
alert('Not support websocket')
}
//连接发生错误的回调方法
websocket.onerror = function () {
console.log("发药提醒toMedicineSocket发生错误")
};
//连接成功建立的回调方法
websocket.onopen = function (event) {
console.log("发药提醒toMedicineSocket连接成功");
}
//接收到消息的回调方法
websocket.onmessage = function (event) {
var data = JSON.parse(event.data);
if(data.type == 'sf'){
//添加正在配药列表
dispenseList[dispenseList.length] = {name: data.name, patient_id: data.patient_id};
}else if (data.type == 'py') {//来自配药处理成功后的消息
//删除正在配药列表
for (let i = 0; i < dispenseList.length; i++) {
if (dispenseList[i].patient_id == data.patient_id) {
dispenseList.splice(i, 1);
}
}
//添加等待取药列表
currentList[currentList.length] = {name: data.name, patient_id: data.patient_id};
} else if (data.type == 'jh') {
//判断正在取药是否为空,不为空将上一位放入过号队列
if ($('#rightPerson').text() != "") {
pastList[pastList.length] = {name: rightPerson.name, patient_id: rightPerson.patient_id};
}
//设置正在取药,清除过号队列
$('#rightPerson').text(data.name);
rightPerson = data;
for (let i = 0; i < pastList.length; i++) {
if (pastList[i].patient_id == data.patient_id) {
pastList.splice(i, 1);
break;
}
}
//清除等待取药
for (let i = 0; i < currentList.length; i++) {
if (currentList[i].patient_id == data.patient_id) {
currentList.splice(i, 1);
break;
}
}
//清除正在配药
for (let i = 0; i < dispenseList.length; i++) {
if (dispenseList[i].patient_id == data.patient_id) {
dispenseList.splice(i, 1);
}
}
} else if (data.type == 'fy') {
//将该用户叫号列表清除
if(rightPerson != '' && rightPerson != null && rightPerson.patient_id == data.patient_id){
rightPerson = null;
$('#rightPerson').text("");
}
for (let i = 0; i < currentList.length; i++) {
if (currentList[i].patient_id == data.patient_id) {
currentList.splice(i, 1);
break;
}
}
for (let i = 0; i < dispenseList.length; i++) {
if (dispenseList[i].patient_id == data.patient_id) {
dispenseList.splice(i, 1);
}
}
for (let i = 0; i < pastList.length; i++) {
if (pastList[i].patient_id == data.patient_id) {
pastList.splice(i, 1);
break;
}
}
}
}
//连接关闭的回调方法
websocket.onclose = function () {
console.log("发药提醒toMedicineSocket连接关闭");
}
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
window.onbeforeunload = function () {
websocket.close();
}
//关闭连接
function closeWebSocket() {
websocket.close();
}