var websocket; //执行次数 var executeCount = 0; //定时ID var timeIds = new Array(); $(function () { $("#socketText").hide(); //模态框 $("#assignModel,#resultModel,#myModal").modal({ backdrop: 'static', show: false }); disabled(true); //websocket初始化 try { $('#serverModal').modal({ backdrop: 'static', show: true }); websocket = new WebSocket("ws://" + $("#socketAddress").val() + "/webSokcetServer"); websocket.onopen = function () { disabled(false); $('#serverModal').modal("hide"); //alert("The client is ready"); } websocket.onerror = function (evt) { $('#serverModal').modal("hide"); //alert("client error"); } websocket.onclose = function () { $('#serverModal').modal("hide"); alert("The client closed"); } websocket.onmessage = function (evt) { var json = eval('(' + evt.data + ')'); jsonToView(json); } } catch (e) { $("#socketText").show(); //alert("ERROR:"+e.message+",请升级你的浏览器。"); } //开始测试 $("#allBut").click(function () { $("#checkboxList").prop("checked", true); $("#checkboxList").click(); if (executeCount == -1) { executeCount = parseInt($("#noexecute").val()); } var macList = $("td[id$='Ip']"); var isLine = false; for (var i = 0; i < macList.length; i++) { if ($(macList[i]).html() != "") { isLine = true; break; } } if (!isLine) { alert("没有在线的设备"); return false; } else if ($("#selectTypeCount").val() == "0") { alert("没有匹配的测试类型"); return false; } //清空结果 clearResult(true); var interval = $("#interval").val(); // var order = new Array(); //指令数 var checkboxs = $("input[id$='Checkbox']"); for (var i = 0; i < checkboxs.length; i++) { //for (var j = 0; j < 2; j++) { order.push($(checkboxs[i]).attr("id")); //} } //var orderCount = checkboxs.length*2; var orderCount = checkboxs.length; var tt = interval * 1000 + (interval * (orderCount - 1)) * 1000; var ttime = tt; disabled(true); setTime("倒计时" + (tt / 1000) + "s"); $("#" + order[0]).bootstrapSwitch('toggleState'); timeIds = new Array(); for (var i = 1000; i <= tt; i += 1000) { var num = i / 1000; if (i >= tt) { var timeId = setTimeout("setTime('开始测试')", i); timeIds.push(timeId); } else { ttime -= 1000; var timeId = setTimeout("setTime('倒计时" + (ttime / 1000) + "s','" + order[num / interval] + "')", i); timeIds.push(timeId); } } }); //选择测试类型 $("#controlType").change(function () { sendParam(); $('#myModal').modal("show"); setTimeout("location.reload(true)", 600); }); //选择执行次数 $("#executeCount").change(function () { sendParam(); executeCount = parseInt($("#executeCount").val()); $("#noexecute").val(executeCount); }); //选择浮动值 $("#floatValue").change(function () { sendParam(); }); //勾选温度比对 $("#isCompare").click(function () { sendParam(); }); //清空结果 $("#clearBut").click(function () { clearResult(true); }); //清空离线设备 $("#clearOffLine").click(function () { send("{caozuo:'clear',type:'offLine'}"); $('#myModal').modal("show"); setTimeout("location.reload(true)", 1000); }); //清空所有设备 $("#clearAll").click(function () { send("{caozuo:'clear',type:'all'}"); $('#myModal').modal("show"); setTimeout("location.reload(true)", 1000); }); //清空选中设备 $("#clearChoice").click(function () { var macArray = new Array(); var checkboxList = $(".checkboxList"); for (var i = 0; i < checkboxList.length; i++) { var checked = checkboxList[i].checked; if (checked) { var mac = $(checkboxList[i]).parents("tr").find("td:eq(2)").html(); macArray.push(mac); } } if (macArray.toString() == "") { alert("没有选中的设备"); return false; } else { send("{caozuo:'clear',type:'choice',macs:'" + macArray.toString() + "'}"); $('#myModal').modal("show"); setTimeout("location.reload(true)", 1000); } }); //导出Excel $("#export").click(function () { send("{caozuo:'download'}"); }); //停止测试 $("#stopBut").click(function () { for (var i = 0; i < timeIds.length; i++) { clearTimeout(timeIds[i]); } setTimeout("setTime('开始测试')", 500); executeCount = 0; }); //扫描局域网内设备 $("#scanDevice").click(function () { var msg = "{caozuo:'scanDevice'}"; send(msg); }); //设置本地测试 $("#setTcp").click(function () { var ipStr = getIps(true); clearSetTcpStatus(); if (ipStr == "") { var r = confirm("没有符合条件的设备,点击确定将局域网内所有设备连接到本地!"); if (!r) { return false; } } var msg = "{caozuo:'setTcp',ipStr:'" + ipStr + "'}"; send(msg); }); //设置测试云 $("#setTestYun").click(function () { var ipStr = getIps(false); clearSetTcpStatus(); if (ipStr == "") { var r = confirm("没有符合条件的设备,点击确定将局域网内所有设备连接到测试云!"); if (!r) { return false; } } var msg = "{caozuo:'setTestYun',ipStr:'" + ipStr + "'}"; send(msg); }); //设置生产云 $("#setProductYun").click(function () { var ipStr = getIps(false); clearSetTcpStatus(); if (ipStr == "") { var r = confirm("没有符合条件的设备,点击确定将局域网内所有设备连接到正式云!"); if (!r) { return false; } } var msg = "{caozuo:'setProductYun',ipStr:'" + ipStr + "'}"; send(msg); }); //选择框 $("#checkboxList").click(function () { var checked = this.checked; var checkboxList = $(".checkboxList"); for (var i = 0; i < checkboxList.length; i++) { checkboxList[i].checked = checked; } }); //刷新状态 $("#refresh").click(function () { var macList = $("td[id$='Ip']"); var isLine = false; for (var i = 0; i < macList.length; i++) { if ($(macList[i]).html() != "") { isLine = true; break; } } if (!isLine) { alert("没有在线的设备"); return false; } else if ($("#selectTypeCount").val() == "0") { alert("没有匹配的测试类型"); return false; } clearResult(false); var msg = "{caozuo:'refresh'}"; send(msg); }); //复选框选择 $("#checkboxAll").click(function () { var checked = this.checked; var checkboxList = $(".checkboxList"); for (var i = 0; i < checkboxList.length; i++) { $(checkboxList[i]).prop("checked", checked); } }); //间隔下拉框赋值 for (var i = 2; i <= 10; i++) { $("#interval").append(""); } //执行次数 $("#executeCount").append(""); $("#executeCount").append(""); $("#executeCount").append(""); $("#executeCount").append(""); $("#executeCount").append(""); for (var i = 10; i <= 50; i = i + 10) { $("#executeCount").append(""); } $("#executeCount").append(""); }); //websocket发送消息 function send(data) { websocket.send(data); } //保存参数 function sendParam() { var checked = $("#isCompare").is(":checked"); send("{caozuo:'selectType',type:'" + $("#controlType").val() + "',interval:'" + $("#interval").val() + "',executeCount:'" + $("#executeCount").val() + "',floatValue:'" + $("#floatValue").val() + "',isCompare:'" + checked + "'}"); } //清除设置域名状态 function clearSetTcpStatus() { var setTcp = $("span[id$='Set']"); for (var i = 0; i < setTcp.length; i++) { $(setTcp[i]).addClass("hide"); } } //按钮禁用 function disabled(bln) { $("#controlType").attr("disabled", bln); $("#allBut").attr("disabled", bln); $("#clearBut").attr("disabled", bln); $("#clearOffLine").attr("disabled", bln); $("#clearAll").attr("disabled", bln); $("#clearChoice").attr("disabled", bln); $("#setTcp").attr("disabled", bln); $("#setTestYun").attr("disabled", bln); $("#setProductYun").attr("disabled", bln); $("#assign").attr("disabled", bln); $("#refresh").attr("disabled", bln); } //IP格式化/0.0.0.0:14556 ->0.0.0.0 function formatAddress(val) { return val.substring(1, val.indexOf(":")); } //bln 是否设置本地 function getIps(bln) { var ipArray = new Array(); var checkboxList = $(".checkboxList"); for (var i = 0; i < checkboxList.length; i++) { var checked = checkboxList[i].checked; if (checked) { var ip = $(checkboxList[i]).parents("tr").find("td:eq(5)").html(); var status = $(checkboxList[i]).parents("tr").find("td:eq(7)").html(); if (ip != '') { //是否本地 if (bln) { if (status != '连接正常') { ipArray.push(ip); } } else { ipArray.push(ip); } } } } return ipArray.toString(); } //bln布尔值,n第几个命令 function returnResult(id, bln, n) { if (bln) { $("#" + id + "Result" + n).addClass("label-success"); $("#" + id + "Result" + n).html(""); } else { $("#" + id + "Result" + n).addClass("label-danger"); $("#" + id + "Result" + n).html(""); } } //超时,返回命令失败结果,n表示第几个命令 function returnFailed(n) { var result = $("span[id$='Result" + n + "']"); var ipList = $("td[id$='Ip']"); var hardTypeList = $("td[id$='HardType']"); for (var i = 0; i < result.length; i++) { if ($(ipList[i]).html() != "") { var rt = $(result[i]).html(); if (rt == "" && ($("#controlType").val() == "" || $(hardTypeList[i]).html() == $("#controlType").val())) { $(result[i]).addClass("label-danger"); $(result[i]).html(""); } } } } //倒计时 function setTime(tt, id) { if (tt == "开始测试") { disabled(false); //如有错误停下来 if (!errorStatus()) { executeCount--; if (executeCount >= 1) { //继续执行 $("#noexecute").val(executeCount); setTimeout("beginTest()", 1000); } else if (executeCount == -1) { } else { $("#executeCount").change(); } } } if (!(typeof (id) == "undefined")) { $("#" + id).bootstrapSwitch('toggleState'); } $("#allBut").html(tt); } //标记错误状态 function errorStatus() { var isError = false; //温度比对 var checked = $("#isCompare").is(":checked"); if (checked) { var wenduValue = 0.0; var wendu = $("span[id$='Wendu']"); var count = 0; for (var i = 0; i < wendu.length; i++) { var v = $(wendu[i]).html(); if (v != "" && v != "0.0") { count++; wenduValue += parseFloat(v); } } //温度平均值 var averageValue = count == 0 ? wenduValue.toFixed(1) : (wenduValue / count).toFixed(1); $("#averageValue").val(averageValue); //浮动值 var floatValue = $("#floatValue").val(); var maxValue = parseFloat(averageValue) + parseFloat(floatValue); var minValue = parseFloat(averageValue) - parseFloat(floatValue); for (var i = 0; i < wendu.length; i++) { var v = $(wendu[i]).html(); if (v != "" && v != "0.0") { if (parseFloat(v) > maxValue || parseFloat(v) < minValue) { $(wendu[i]).parent().addClass("label-warning"); isError = true; } } } } else { $("#averageValue").val("0.0"); } //列数 var orderCount = $("#orderCount").val(); for (var j = 0; j < orderCount; j++) { //按钮状态 var onOff = $("#onOff" + j + "Checkbox").prop("checked"); //返回状态 var results = $("span[id$='Result" + (j + 1) + "']"); for (var i = 0; i < results.length; i++) { var result = $(results[i]).html(); if (result != "" && onOff != undefined) { if (result == "开") { if (!onOff) { $(results[i]).parent().addClass("label-warning"); isError = true; } } else if (result == "关") { if (onOff) { $(results[i]).parent().addClass("label-warning"); isError = true; } } //模式 else if (result == "自动") { //if(onOff){ $(results[i]).parent().addClass("label-warning"); isError = true; //} } //加热温度 else if (result == "32.0") { if (!onOff) { $(results[i]).parent().addClass("label-warning"); isError = true; } } else if (result == "0.0") { if (onOff) { $(results[i]).parent().addClass("label-warning"); isError = true; } } //背光亮度 else if (result == "250") { if (!onOff) { $(results[i]).parent().addClass("label-warning"); isError = true; } } else if (result == "0") { if (onOff) { $(results[i]).parent().addClass("label-warning"); isError = true; } } } } } return isError; } //清空结果 function clearResult(bln) { var result = $(".result"); for (var i = 0; i < result.length; i++) { $(result[i]).removeClass("label-danger label-success"); if (bln) { $(result[i]).parent().removeClass("label-warning"); } $(result[i]).html(""); } var wendu = $("span[id$='Wendu']"); for (var i = 0; i < wendu.length; i++) { $(wendu[i]).html(""); } } //开始测试 function beginTest() { $("#allBut").click(); } //接受的json数据显示至页面 function jsonToView(json) { var result = json["result"]; var data = json["data"]; //查询全部连接信息 if (result == "query") { if (data != "undefined") { /** * 基本参数 */ for (var p in data) { if (p == "isCompare") { $("#isCompare").prop("checked", data[p]); } else if (p == "floatValue") { $("#floatValue").val(data[p].toFixed(1)); } else { $("#" + p).val(data[p]); } } executeCount = $("#executeCount").val(); $("#noexecute").val(executeCount); //指令数 var orderCount = $("#orderCount").val(); //指令数 $("#tr").find("td:gt(" + (parseInt(orderCount) + 8) + ")").remove(); //获取电子厂信息 getFactoryInfo(); /** * 设备参数 */ //连接状态 var statusMap = json["statusMap"]; //硬件型号 var hardTypeMap = json["hardTypeMap"]; //硬件类型 var controlTypeMap = json["controlTypeMap"]; //重连次数 var resetCountMap = json["resetCountMap"]; //ip var ipMap = json["ipMap"]; //显示名称 var showNameMap = json["showNameMap"]; for (var p in showNameMap) { var showName = showNameMap[p]; //显示 if (showName == "加热状态") { $("#" + p).parent("td").html(showNameMap[p]); } //手动模式 else if (showName == "手动模式") { $("#" + p).bootstrapSwitch({ "onColor": "success", "offColor": "success", "onText": "开", "offText": "开", "labelText": showName, "onSwitchChange": function (event, state) { var number = this.value; var singleTest = false; //单个测试 var cb = $(".checkboxList:checked"); if (cb.length > 0) { var trClass = $(cb[0]).parents("tr").attr("class"); if (trClass == "marryType") { var macAddress = $(cb[0]).parents("tr").find("td:eq(2)").html(); singleTest = true; send("{caozuo:'onoffTest',number:'" + number + "',checked:false,macAddress:'" + macAddress + "',singleTest:'" + singleTest + "'}"); } } if (!singleTest) { //多个测试 var marryType = $(".marryType"); if (marryType.length > 0) { send("{caozuo:'onoffTest',number:'" + number + "',checked:'false',macAddress:'',singleTest:'" + singleTest + "'}"); } } } }); } //设置加热温度 else if (showName == "加热温度") { $("#" + p).bootstrapSwitch({ "onColor": "success", "offColor": "danger", "onText": "32.0", "offText": "0.0", "labelText": showName, "onSwitchChange": function (event, state) { var number = this.value; var checked = this.checked; var singleTest = false; //单个测试 var cb = $(".checkboxList:checked"); if (cb.length > 0) { var trClass = $(cb[0]).parents("tr").attr("class"); if (trClass == "marryType") { var macAddress = $(cb[0]).parents("tr").find("td:eq(2)").html(); singleTest = true; send("{caozuo:'setHeat',number:'" + number + "',checked:'" + checked + "',macAddress:'" + macAddress + "',singleTest:'" + singleTest + "'}"); } } if (!singleTest) { //多个测试 var marryType = $(".marryType"); if (marryType.length > 0) { send("{caozuo:'setHeat',number:'" + number + "',checked:'" + checked + "',macAddress:'',singleTest:'" + singleTest + "'}"); } } } }); } //调整背光亮度 else if (showName == "背光亮度") { $("#" + p).bootstrapSwitch({ "labelText": showName, "onColor": "success", "offColor": "danger", "onText": "250", "offText": "0", "onSwitchChange": function (event, state) { var number = this.value; var checked = this.checked; var singleTest = false; //单个测试 var cb = $(".checkboxList:checked"); if (cb.length > 0) { var trClass = $(cb[0]).parents("tr").attr("class"); if (trClass == "marryType") { var macAddress = $(cb[0]).parents("tr").find("td:eq(2)").html(); singleTest = true; send("{caozuo:'changeLightness',number:'" + number + "',checked:'" + checked + "',macAddress:'" + macAddress + "',singleTest:'" + singleTest + "'}"); } } if (!singleTest) { //多个测试 var marryType = $(".marryType"); if (marryType.length > 0) { send("{caozuo:'changeLightness',number:'" + number + "',checked:'" + checked + "',macAddress:'',singleTest:'" + singleTest + "'}"); } } } }); } //普通开关 else { $("#" + p).bootstrapSwitch({ "onColor": "success", "offColor": "danger", "onText": "开", "offText": "关", "labelText": showName, "onSwitchChange": function (event, state) { var number = this.value; var checked = this.checked; var singleTest = false; //单个测试 var cb = $(".checkboxList:checked"); if (cb.length > 0) { var trClass = $(cb[0]).parents("tr").attr("class"); if (trClass == "marryType") { var macAddress = $(cb[0]).parents("tr").find("td:eq(2)").html(); singleTest = true; send("{caozuo:'onoffTest',number:'" + number + "',checked:'" + checked + "',macAddress:'" + macAddress + "',singleTest:'" + singleTest + "'}"); } } if (!singleTest) { //多个测试 var marryType = $(".marryType"); if (marryType.length > 0) { send("{caozuo:'onoffTest',number:'" + number + "',checked:'" + checked + "',macAddress:'',singleTest:'" + singleTest + "'}"); } } } }); } } //发送指令顺序 var orderNumberMap = json["orderNumberMap"]; if (orderNumberMap != undefined) { for (var i = 0; i < orderNumberMap.length; i++) { $("#onOff" + i + "Checkbox").val(orderNumberMap[i]); } } //遍历json对象的每个key/value对,p为key for (var id in ipMap) { //var ip = formatAddress(ipMap[id]); var str = ""; //列数 for (var i = 1; i <= orderCount; i++) { str = str + ""; } $("#tab").append("" + // "" + "" + "" + id + "" + "" + hardTypeMap[id] + "" + "" + controlTypeMap[id] + "" + "" + ipMap[id] + "" + "" + resetCountMap[id] + "" + "" + statusMap[id] + "" + "" + str + ""); } //断开的移动到最后一行 var ipList = $("td[id$='Ip']"); for (var i = 0; i < ipList.length; i++) { if ($(ipList[i]).html() == "") { $("#tab").find("tr:last").after($(ipList[i]).parent()); } } //变成选择的颜色 changeColor(); //重新编号 renumber(); } } //新增连接信息 else if (result == "add") { if (data != "undefined") { //macAddress var id = json["id"]; //指令数 var orderCount = $("#orderCount").val(); //不存在新增 if ($("#" + id + "Mac").val() == undefined) { var str = ""; for (var i = 1; i <= orderCount; i++) { str = str + ""; } $("#tab").append("" + // "" + "" + "" + "" + "" + "" + "" + "" + "" + str + ""); } //赋值 for (var p in data) { if (p == "lineCount") { $("#lineCount").val(data[p]); } else { $("#" + p).html(data[p]); } } $("#" + id + "Set").addClass("hide"); //连接的移动到第一行 $("#tab").find("tr:first").before($("#" + id + "Mac").parent()); //变成选择的颜色 changeColor(); //重新编号 renumber(); } } //扫描局域网内设备 else if (result == "scanDevice") { if (data != "undefined") { //macAddress var id = json["id"]; //指令数 var orderCount = $("#orderCount").val(); //不存在新增 if ($("#" + id + "Mac").val() == undefined) { var str = ""; for (var i = 1; i <= orderCount; i++) { str = str + ""; } $("#tab").append("" + // "" + "" + "" + "" + "" + "" + "" + "" + "" + str + ""); //赋值 for (var p in data) { $("#" + p).html(data[p]); } //连接的移动到第一行 $("#tab").find("tr:last").after($("#" + id + "Mac").parent()); //变成选择的颜色 changeColor(); //重新编号 renumber(); } } } //响应连接断开 else if (result == "connClose") { if (data != "undefined") { //赋值 for (var p in data) { if (p == "lineCount") { $("#lineCount").val(data[p]); } else { $("#" + p).html(data[p]); } } //断开的移动到最后一行 $("#tab").find("tr:last").after($("#" + id + "Mac").parent()); //重新编号 renumber(); } } //灯开关状态 else if (result == "onoff") { if (data != "undefined") { for (var p in data) { $("#" + p).removeClass("label-danger label-success"); var v = data[p]; if (v == "开") { $("#" + p).addClass("label-success"); $("#" + p).html(v); } else if (v == "关") { $("#" + p).addClass("label-danger"); $("#" + p).html(v); } else if (v == "手动") { $("#" + p).addClass("label-success"); $("#" + p).html(v); } else if (v == "自动") { $("#" + p).addClass("label-danger"); $("#" + p).html(v); } //背光250亮度 /温度32℃ else if (v == "250" || v == "32.0") { $("#" + p).addClass("label-success"); $("#" + p).html(v); } //背光0亮度/温度0℃ else if (v == "0" || v == "0.0") { $("#" + p).addClass("label-danger"); $("#" + p).html(v); } else { $("#" + p).addClass("label-default"); $("#" + p).html(v); } } } } //设置TCP域名 else if (result == "setTcp") { if (data != "undefined") { for (var p in data) { $("#" + p).removeClass("hide"); } } } //设置TCP域名 else if (result == "download") { alert(data); } //命令回复 else { var id = data["id"]; var control = data["control"]; var wendu = data["wendu"]; $("#" + id + "Wendu").html(wendu); returnResult(id, control, result); } } //重新编号 function renumber() { var indexList = $(".index"); for (var i = 0; i < indexList.length; i++) { $(indexList[i]).html(i + 1); } } //匹配测试类型变换颜色 function changeColor() { var count = 0; var controls = $("td[id$='HardType']"); for (var i = 0; i < controls.length; i++) { if ($(controls[i]).html() == $("#hardwareType").val()) { //变换颜色 $(controls[i]).parent().css("background-color", "Beige"); $(controls[i]).parent().addClass("marryType"); //移动到首行 $("#tab").find("tr:first").before($(controls[i]).parent()); count++; } else { $(controls[i]).parent().css("background-color", ""); $(controls[i]).parent().removeClass("marryType"); } } //匹配测试类型的数量 $("#selectTypeCount").val(count); } function getFactoryInfo() { $.ajax({ //url: "https://bg.zhangxinyanv5.top/page/public/getVenderList.do?rm=" + Math.random() + "&factoryCode=" + $("#factoryCode").val(), url: "http://192.168.199.129:7080/page/public/getVenderList.do?rm=" + Math.random() + "&factoryCode=" + $("#factoryCode").val(), //url: "https://bg.ifish7.com/page/public/getVenderList.do?rm=" + Math.random() + "&factoryCode=" + $("#factoryCode").val(), type: "get", dataType: "json", success: function (evt) { var data = evt.venderMap; var data1 = evt.hardwareMap; var trs = ""; var i = 1; $.each(data1, function (k, v) { $("#controlType").append(''); }); $("#controlType").val($("#hardwareType").val()); $.each(data, function (k, v) { if (i % 2 == 1) { trs = trs + '
 ' + v + '
' + ''; } else { trs = trs + '
 ' + v + '
' + ''; } i++; }); if (i % 2 == 0) { trs = trs + ''; } $("#venderTbale").append(trs); }, error: function () { alert("获取厂家信息失败"); } }); }