Files
ifishSystem/src/main/webapp/WEB-INF/view/roleAdmin/deviceList.jsp
T
2017-07-10 11:50:05 +08:00

728 lines
27 KiB
Plaintext

<%@ 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>