ifishSystem/src/main/webapp/WEB-INF/view/roleAdmin/deviceList.jsp

728 lines
27 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>硬件信息</title>
<!-- css and js -->
<%@ include file="../htm/script.jsp" %>
<link href="<%=basePath%>static/css/datepicker.css" rel="stylesheet"/>
<script src="<%=basePath%>static/js/date-time/bootstrap-datepicker.min.js"></script>
<style type="text/css">
.important
{
vertical-align:middle;
text-align:right;
padding:10px;
}
</style>
<script type="text/javascript">
var dataTable = null;
$(function(){
$("#searchTable").find("td:even").addClass("important");
$("#searchTable").find("input").addClass("searchClass");
$("#searchTable").find("select").addClass("searchClass");
//日期控件
$('#sSearch4,#sSearch5').datepicker({
format:"yyyy-mm-dd"
});
//模态框
$('.modal').modal({
backdrop:'static',
show:false
});
//关闭
$(".closeBtn").click(function(){
$('.modal').modal("hide");
});
//分页
dataTable = $('#sample-table-2').dataTable({
"sPaginationType": "bootstrap",
//"bProcessing": true,
"bLengthChange": false,
"bFilter": false,
"bServerSide": true,//指定从服务器端获取数据
"bStateSave" : false,
"sAjaxSource": "<%=basePath%>page/admin/deviceListInf.do",
"fnServerData": returnServerData,
"aoColumns": [
{ "mData": function(device){
return "<div class='label label-xlg label-inverse'>"+device.macAddress+"</div><br><div class='label label-default'>"+device.deviceId+"</div>";
},
"bSortable": false
},
{ "mData": function(device){
var factoryList = device.factoryList!=null?device.factoryList.factoryName:'';
factoryList = "<div class='label label-xlg label-danger'>"+factoryList+"</div><br>";
var venderList = device.venderList!=null?device.venderList.brandName:'';
venderList = "<div class='label label-xlg label-primary'>"+venderList+"</div><br>";
var hardwareType = device.hardwareType!=null?device.hardwareType.hardwareName:'';
hardwareType = "<div class='label label-xlg label-success'>"+hardwareType+"</div>";
return factoryList+venderList+hardwareType;
},
"bSortable": false
},
{ "mData": function(device){
var onOff = device.onOff==1?"开":"关";
onOff = "<div class='label label-light'>预警:"+onOff+"</div><br>";
var waterOnOff = device.waterRemind==1?"开":"关";
waterOnOff = "<div class='label label-default'>换水:"+waterOnOff+"</div><br>";
var cycle = device.remindCycle;
cycle = cycle!=null?"<div class='label label-default'>周期:"+cycle+"天</div><br>":"";
var remindDate = device.remindDate;
remindDate = remindDate!=null?"<div class='label label-success'>日期:"+remindDate+"</div>":"";
return onOff+waterOnOff+cycle+remindDate;
},
"bSortable": false
},
{ "mData": function(device){
var sdkVersion = device.sdkVersion;
sdkVersion = "<div class='label label-info'>SDK版本:"+sdkVersion+"</div><br>";
var sdkTime = device.sdkTime;
sdkTime = sdkTime!=null?"<div class='label label-success'>版本日期:"+sdkTime+"</div><br>":"";
var upgradeTime = device.upgradeTime;
upgradeTime = upgradeTime!=null?"<div class='label label-success'>升级时间:"+upgradeTime+"</div><br>":"";
var isUpgrade = device.isUpgrade==1?"开":"关";
isUpgrade = "<div class='label label-default'>自动升级:"+isUpgrade+"</div><br>";
var upgradeVersion = device.upgradeVersion;
upgradeVersion = "<div class='label label-default'>升级版本:"+upgradeVersion+"</div>";
return sdkVersion+sdkTime+upgradeTime+isUpgrade+upgradeVersion;
},
"bSortable": false
},
{ "mData": function(device){
var loginCount = "<div class='label label-light'>"+device.loginCount+"次</div><br>";
var loginTime = device.loginTime;
loginTime = loginTime!=null?"<div class='label label-success'>"+loginTime+"</div>":"";
return loginCount+loginTime;
},
"bSortable": false
},
{ "mData": function(device){
var createDate = device.createDate;
createDate = createDate!=null?"<div class='label label-success'>分配日期:"+createDate+"</div><br>":"";
var createCode = device.createCode;
createCode = (createCode!=null && createCode!="")?"<div class='label label-light'>分配编号:"+createCode+"</div><br>":"";
var firstActivate = device.firstActivate;
firstActivate = firstActivate!=null?"<div class='label label-success'>激活时间:"+firstActivate+"</div><br>":"";
var createTime = device.createTime;
createTime = createTime!=null?"<div class='label label-success'>创建时间:"+createTime+"</div>":"";
return createDate+createCode+firstActivate+createTime;
},
"bSortable": false
},
{ "mData": function(device){
var number1 = device.number1;
number1 = number1!=null?"<div class='label label-info'>MCU启动次数:"+number1+"次</div><br>":"";
var number2 = device.number2;
number2 = number2!=null?"<div class='label label-info'>模块启动次数:"+number2+"次</div><br>":"";
var number3 = device.number3;
number3 = number3!=null?"<div class='label label-info'>连接路由器次数:"+number3+"次</div><br>":"";
var number4 = device.number4;
number4 = number4!=null?"<div class='label label-info'>成功连接次数:"+number4+"次</div><br>":"";
var number5 = device.number5;
number5 = number5!=null?"<div class='label label-info'>尝试连接次数:"+number5+"次</div><br>":"";
return number1+number2+number3+number4+number5;
},
"bSortable": false
},
{ "mData": function(device){
var isCharge = device.isCharge==1?"是":"否";
isCharge = "<div class='label label-light'>是否收费:"+isCharge+"</div><br>";
var isBlacklist = device.isBlacklist==1?"NO":"OK";
isBlacklist = "<div class='label label-light'>授权状态:"+isBlacklist+"</div><br>";
var authorizeTime = device.authorizeTime;
authorizeTime = authorizeTime!=null?"<div class='label label-success'>授权时间:"+authorizeTime+"</div>":"";
return isCharge+isBlacklist+authorizeTime;
},
"bSortable": false
},
{ "mData": function(device){
var isCharge = device.isCharge;
var isBlacklist = device.isBlacklist;
var isUpgrade = device.isUpgrade;
var yes = '<a href="javascript:void(0);" title="授权" onclick="hardwareLicense('+device.deviceId+',0)" class="label label-primary"><span class="icon-ok"></span>授予权限</a><br>';
var no = '<a href="javascript:void(0);" title="取消授权" onclick="hardwareLicense('+device.deviceId+',1)" class="label label-danger"><span class="icon-remove"></span>取消授权</a><br>';
var caozuo = "";
if(isCharge==0){
if(isBlacklist==1){
caozuo = yes;
}
else{
caozuo = no;
}
}
return caozuo;
},
"bSortable": false,
"sClass":"center"
},
{ "mData": function(device){
var isUpgrade = device.isUpgrade;
var searchStatus = '<a href="javascript:void(0);" title="查询设备状态" onclick="searchStatus(\''+device.macAddress+'\')" class="label label-inverse"><span class="icon-search"></span>查询状态</a><br>';
var onlineUpgradeSdk = '<a href="javascript:void(0);" title="在线升级SDK" onclick="onlineUpgradeSdk(\''+device.macAddress+'\')" class="label label-success"><span class="icon-cloud-upload"></span>在线升级</a><br>';
var upgradeSdk = '<a href="javascript:void(0);" title="重启升级SDK" onclick="upgradeSdk('+device.deviceId+','+device.sdkVersion+',1)" class="label label-primary"><span class="icon-cloud-upload"></span>重启升级</a><br>';
var noUpgradeSdk = '<a href="javascript:void(0);" title="取消升级SDK" onclick="noUpgradeSdk('+device.deviceId+','+device.sdkVersion+',0)" class="label label-danger"><span class="icon-cloud-download"></span>取消升级</a><br>';
var caozuo = "";
if(isUpgrade==1){
caozuo = noUpgradeSdk;
}
else{
caozuo = upgradeSdk;
}
return caozuo+searchStatus+onlineUpgradeSdk;
},
"bSortable": false,
"sClass":"center"
}
],
"oLanguage": {
"sLengthMenu": "每页显示 _MENU_条",
"sZeroRecords": "没有找到符合条件的数据",
"sInfo": "当前第 _START_ - _END_ 条 共计 _TOTAL_ 条",
"sProcessing": "<img src='<%=basePath%>static/css/images/loading.gif'>",
"sInfoEmpty": "木有记录",
"sInfoFiltered": "(从 _MAX_ 条记录中过滤)",
"sSearch": "",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "前一页",
"sNext": "后一页",
"sLast": "尾页"
}
}
});
//在线升级SDK
$("#onlineUpgradeBtn").click(function(){
onlineUpgradeSdk("");
});
$("#onlineUpgradeModalBtn").click(function(){
var macAddress = $("#onlineUpgrade-macAddress").val();
var sdkVersion = $("#onlineUpgrade-sdkVersion").val();
if(macAddress==""){
jAlert('mac地址不能为空!', '提示');
return false;
}
if(sdkVersion==""){
jAlert('升级版本不能为空!', '提示');
return false;
}
$("#onlineUpgradeModalBtn").attr("disabled",true);
$('#form-onlineUpgrade').submit();
});
$('#form-onlineUpgrade').ajaxForm(function(data){
if(data==""){
jAlert('出错啦!', '提示');
}
else if(data!=null){
var json = eval('('+data+')');
var map = json["map"];
var bln = map["bln"];
jAlert('发送升级指令:'+bln, '提示');
}
else{
jAlert('出错啦!', '提示');
}
$("#onlineUpgradeModalBtn").attr("disabled",false);
});
//在线状态
$("#searchStatus").click(function(){
searchStatus("");
});
$("#searchStatusModalBtn").click(function(){
$("#searchStatusModalBtn").attr("disabled",true);
$('#form-searchStatus').submit();
});
$('#form-searchStatus').ajaxForm(function(data){
if(data==""){
jAlert('出错啦!', '提示');
}
else if(data!=null){
var json = eval('('+data+')');
var map = json["map"];
var bln = map["bln"];
var number = map["number"];
jAlert('是否在线:'+bln+"\n在线设备数量"+number, '提示');
}
else{
jAlert('出错啦!', '提示');
}
$("#searchStatusModalBtn").attr("disabled",false);
});
//查询
$('#form1').ajaxForm(function(data){
//弹出ajax请求后的回调结果
if(data==true){
//刷新当前页面
refreshTable();
jAlert('成功', '提示');
}
else{
//刷新当前页面
refreshTable();
jAlert('失败', '提示');
}
});
//批量升级SDK
$("#addUpgradeBtn").click(function(){
var tj = "";
var i = 0 ;
if($("#selectField3").val()!=""){
i++;
tj = tj + i + "、电子厂:"+$("#selectField3").find("option:selected").text()+"\n";
}
if($("#selectField1").val()!=""){
i++;
tj = tj + i + "、鱼缸厂:"+$("#selectField1").find("option:selected").text()+"\n";
}
if($("#selectField2").val()!=""){
i++;
tj = tj + i + "、硬件型号:"+$("#selectField2").find("option:selected").text()+"\n";
}
if($("#sSearch2").val()!=""){
i++;
tj = tj + i + "、SDK版本"+$("#sSearch2").val()+" ";
}
if(tj==""){
jAlert('没有选择的条件!', '提示');
return false;
}
jConfirm("确定要按以下条件新增自动升级吗?\n"+tj, '确认对话框', function(r){
if (r == true) {
jPrompt('输入需要升级的目标版本号(填写一个数字)','', '升级SDK版本', function(str) {
if(str!=null && str!=""){
//判断数字
if(str>=0 && !isNaN(str)){
$("#upgradeVersion").val(str);
$("#form1").submit();
return false;
}
else{
jAlert('请填写一个不小于0的数字', '提示');
}
}
else{
jAlert('不能为空', '提示');
}
});
}
});
$("#sdkVersion").val("");
});
//重置
$("#reset").click(function(){
var searchClass = $(".searchClass");
for (var i = 0; i < searchClass.length; i++) {
$(searchClass[i]).val("");
}
dataTable.fnDraw();
});
//自动查询
$("#searchTable").find("input,select").change(function(){
dataTable.fnDraw();
});
});
//服务器返回数据
function returnServerData(sSource, aoData, fnCallback){
//查询参数
var searchClass = $(".searchClass");
for (var i = 0; i < searchClass.length; i++) {
var id = $(searchClass[i]).attr("id");
var value = $(searchClass[i]).val();
aoData.push({"name":id,"value":value});
}
$.ajax({
"url": sSource,
"type": "POST",
"data": aoData,
"dataType": "json",
"cache": false,
"success": function(json){
fnCallback(json);
}
});
}
//刷新当前页
function refreshTable(){
var iDisplayStart = dataTable.fnSettings()._iDisplayStart;
var iDisplayLength = dataTable.fnSettings()._iDisplayLength;
var pageNum = (iDisplayStart+iDisplayLength)/iDisplayLength;
dataTable.fnPageChange(--pageNum,true);
}
//授权
function hardwareLicense(deviceId,isBlacklist){
jConfirm('确定要执行该操作吗?', '确认对话框', function(bln){
if(bln){
$.ajax({
"url": "<%=basePath%>page/admin/deviceAuthority.do?rm="+Math.random(),
"type": 'POST',
"data": {"deviceId":deviceId,"isBlacklist":isBlacklist},
"dataType": "json",
"success":function(re){
if(re){
//刷新当前页
refreshTable();
jAlert('成功', '提示');
}
else{
jAlert('失败', '提示');
}
},
error:function(){
//刷新当前页
refreshTable();
jAlert('错误', '提示');
},
});
}
});
}
//在线状态
function searchStatus(macAddress){
if(macAddress!=""){
$("#searchStatus-macAddress").val(macAddress);
}
$("#searchStatusModal").modal("show");
}
//在线升级SDK
function onlineUpgradeSdk(macAddress){
if(macAddress!=""){
$("#onlineUpgrade-macAddress").val(macAddress);
}
$("#onlineUpgradeModal").modal("show");
}
//取消SDK升级
function noUpgradeSdk(deviceId,sdkVersion,isUpgrade){
jConfirm('确定要取消升级吗?', '确认对话框', function(bln){
if(bln){
$.ajax({
"url": "<%=basePath%>page/admin/onoffUpgradeSdk.do?rm="+Math.random(),
"type": 'POST',
"data": {"deviceId":deviceId,"isUpgrade":isUpgrade},
"dataType": "json",
"success":function(re){
if(re){
//刷新当前页
refreshTable();
jAlert('成功', '提示');
}
else{
jAlert('失败', '提示');
}
},
error:function(){
//刷新当前页
refreshTable();
jAlert('错误', '提示');
},
});
}
});
}
//单个SDK升级
function upgradeSdk(deviceId,sdkVersion,isUpgrade){
jPrompt('输入需要升级的目标版本号(填写一个数字)','', '升级SDK版本', function(str) {
if(str!=null && str!=""){
//判断数字
if(str>=0 && !isNaN(str)){
$.ajax({
"url": "<%=basePath%>page/admin/onoffUpgradeSdk.do?rm="+Math.random(),
"type": 'POST',
"data": {"deviceId":deviceId,"upgradeVersion":str,"isUpgrade":isUpgrade},
"dataType": "json",
"success":function(re){
if(re){
//刷新当前页
refreshTable();
jAlert('成功', '提示');
}
else{
jAlert('失败', '提示');
}
},
error:function(){
//刷新当前页
refreshTable();
jAlert('错误', '提示');
},
});
}
else{
jAlert('请填写一个不小于0的数字', '提示');
}
}
else{
jAlert('不能为空', '提示');
}
});
}
</script>
</head>
<body>
<!-- 头部 -->
<%@ include file="../htm/header.jsp" %>
<!-- 主体 -->
<div class="main-container" id="main-container">
<div class="main-container-inner">
<!-- 侧边栏 -->
<%@ include file="../htm/sidebar.jsp" %>
<!-- 主体内容 -->
<div class="main-content">
<div class="breadcrumbs" id="breadcrumbs">
<script type="text/javascript">
try{ace.settings.check('breadcrumbs' , 'fixed')}catch(e){}
</script>
<ul class="breadcrumb">
<li>
<i class="icon-home home-icon"></i>
<a href="<%=basePath%>page/public/index.do">首页</a>
</li>
<li class="active">硬件信息</li>
</ul>
</div>
<div class="page-content">
<div class="row">
<div class="col-xs-12">
<div class="table-responsive">
<form id="form1" method="post" class="form-horizontal" action="<%=basePath%>page/admin/addUpgradeNotes.do">
<input type="hidden" name="upgradeVersion" id="upgradeVersion"/>
<table id="searchTable" class="col-xs-12">
<tr>
<td>
<label>MAC地址</label>
</td>
<td>
<input type="text" id='sSearch' value="${sSearch}" class="input-medium" maxlength='20'/>
</td>
<td>
<label>设备ID</label>
</td>
<td>
<input type="text" id='sSearch1' class="input-medium" maxlength='20'/>
</td>
<td>
<label>SDK版本</label>
</td>
<td>
<input type="text" id='sSearch2' name="sdkVersion" class="input-medium" maxlength='20'/>
</td>
<td>
<label>目标版本</label>
</td>
<td>
<input type="text" id='sSearch3' class="input-medium" maxlength='20'/>
</td>
<td>
<label>分配日期</label>
</td>
<td>
<input type='text' id='sSearch4' class='date-picker input-medium' maxlength='20'/>
</td>
</tr>
<tr>
<td>
<label>登陆日期</label>
</td>
<td>
<input type='text' id='sSearch5' class='date-picker input-medium' maxlength='20'/>
</td>
<td>
<label>分配编号</label>
</td>
<td>
<input type='text' id='sSearch6' class='input-medium' maxlength='20'/>
</td>
<td>
<label>电子厂</label>
</td>
<td>
<select id="selectField3" name="factoryList.factoryCode" class="input-medium">
<option value="">请选择</option>
<c:forEach items="${list3}" var="vl">
<option value="${vl.factoryCode}">${vl.factoryName}</option>
</c:forEach>
</select>
</td>
<td>
<label>鱼缸厂</label>
</td>
<td>
<select id="selectField1" name="venderList.brandCode" class="input-medium">
<option value="">请选择</option>
<c:forEach items="${list2}" var="vl">
<option value="${vl.brandCode}">${vl.brandName}</option>
</c:forEach>
</select>
</td>
<td>
<label>硬件类型</label>
</td>
<td>
<select id="selectField2" name="hardwareType.hardwareType" class="input-medium">
<option value="">请选择</option>
<c:forEach items="${list1}" var="vl">
<option value="${vl.hardwareType}">${vl.hardwareName}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>
<label>是否收费</label>
</td>
<td>
<select id="selectField" class="input-medium">
<option value="">请选择</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</td>
<td>
<label>授权状态</label>
</td>
<td>
<select id="selectField4" class="input-medium">
<option value="">请选择</option>
<option value="0">OK</option>
<option value="1">NO</option>
</select>
</td>
<td>
<label>自动升级</label>
</td>
<td>
<select id="selectField5" class="input-medium">
<option value="">请选择</option>
<option value="1">开</option>
<option value="0">关</option>
</select>
</td>
<td>
<label>排序字段</label>
</td>
<td>
<select id="sortField" class="input-medium">
<option value="">请选择</option>
<option value="loginCount">登陆次数</option>
<option value="loginTime">登陆时间</option>
<option value="firstActivate">激活时间</option>
<option value="createTime">创建时间</option>
<option value="number1">MCU启动次数</option>
<option value="number2">模块启动次数</option>
<option value="number3">连接路由器次数</option>
<option value="number4">成功连接次数</option>
<option value="number5">尝试连接次数</option>
</select>
</td>
<td>
<label>排序方式</label>
</td>
<td>
<select id="sortMode" class="input-medium">
<option value="">请选择</option>
<option value="asc">升序↑</option>
<option value="desc">降序↓</option>
</select>
</td>
</tr>
<tr>
<td colspan="12" style="text-align:center;">
<button type="button" class="btn btn-sm btn-info" onclick="refreshTable();" style="margin-right:20px;"><i class="icon-refresh"></i>刷新</button>
<button id="reset" type="reset" class="btn btn-sm btn-info" style="margin-right:20px;"><i class="icon-undo"></i>重置</button>
<button id="addUpgradeBtn" type="button" class="btn btn-sm btn-info" style="margin-right:20px;"><i class="icon-cloud-upload"></i>批量升级SDK</button>
<button id="onlineUpgradeBtn" type="button" class="btn btn-sm btn-info" style="margin-right:20px;"><i class="icon-cloud-upload"></i>在线升级SDK</button>
<button id ="searchStatus" type="button" class="btn btn-sm btn-info" style="margin-right:20px;"><i class="icon-search"></i>设备在线状态</button>
</td>
</tr>
</table>
</form>
<table id="sample-table-2" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>设备/ID</th>
<th>设备信息</th>
<th>设备参数</th>
<th>SDK版本信息</th>
<th>登陆信息</th>
<th>分配信息</th>
<th>上报记录</th>
<th>授权信息</th>
<th>授权</th>
<th>操作</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
<form action="<%=basePath%>page/admin/searchStatus.do" class="form-horizontal" method="post" id="form-searchStatus">
<div class="modal fade" id="searchStatusModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closeBtn close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">查询在线状态</h4>
</div>
<div class="modal-body row">
<div class="col-xs-12">
<div class="form-group">
<label class="col-xs-2 control-label no-padding-right">mac地址<span style="color:red;">*</span></label>
<div class="col-xs-8">
<input type="text" name="macAddress" id="searchStatus-macAddress" class="input-medium" required="required" maxlength="20">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="closeBtn btn btn-default">关闭</button>
<button id="searchStatusModalBtn" type="submit" class="btn btn-primary">确定</button>
</div>
</div>
</div>
</div>
</form>
<form action="<%=basePath%>page/admin/onlineUpgrade.do" class="form-horizontal" method="post" id="form-onlineUpgrade">
<div class="modal fade" id="onlineUpgradeModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closeBtn close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">在线升级SDK</h4>
</div>
<div class="modal-body row">
<div class="col-xs-12">
<div class="form-group">
<label class="col-xs-2 control-label no-padding-right">mac地址<span style="color:red;">*</span></label>
<div class="col-xs-8">
<input type="text" name="macAddress" id="onlineUpgrade-macAddress" class="input-medium" required="required">
</div>
</div>
<div class="form-group">
<label class="col-xs-2 control-label no-padding-right">升级版本<span style="color:red;">*</span></label>
<div class="col-xs-8">
<input type="number" name="sdkVersion" id="onlineUpgrade-sdkVersion" class="input-medium" required="required" maxlength="20">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="closeBtn btn btn-default">关闭</button>
<button id="onlineUpgradeModalBtn" type="submit" class="btn btn-primary">确定</button>
</div>
</div>
</div>
</div>
</form>
<!-- 设置工具 -->
<%@ include file="../htm/setting.jsp" %>
</div>
</div>
</body>
</html>