<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
|
<%
|
String path = request.getContextPath();
|
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
|
%>
|
<%@ taglib uri="/struts-tags" prefix="s" %>
|
<!DOCTYPE HTML>
|
<html>
|
<head>
|
<base href="<%=basePath%>">
|
<meta charset="UTF-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta http-equiv="pragma" content="no-cache">
|
<meta http-equiv="cache-control" content="no-cache">
|
<meta http-equiv="expires" content="0">
|
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
|
<meta http-equiv="description" content="This is my page">
|
<title>BTS设备升级</title>
|
<link rel="stylesheet" type="text/css" href="pages/css/base.css">
|
<link rel="stylesheet" type="text/css" href="jqueryui/jquery-ui.css">
|
<link rel="stylesheet" type="text/css" href="src/css/layui.css">
|
<link rel="stylesheet" type="text/css" href="pages/css/mylayui.css">
|
<style>
|
.dataTypeCont {
|
width: 160px;
|
text-align: center;
|
}
|
.dataTypeCont .layui-form-switch {
|
min-width: 70px;
|
margin-top: 4px;
|
}
|
</style>
|
</head>
|
<body>
|
<!--头部内容开始-->
|
<jsp:include page="Top.jsp" flush="true"/>
|
<!--头部内容结束-->
|
<!--导航开始-->
|
<jsp:include page="nav.jsp" flush="true"/>
|
<!-- 主体内容 -->
|
<div class="layui-page-container">
|
<!-- 条件筛选 -->
|
<div class="layui-page-filter">
|
<div class="page-filter-header layui-page-filter-fweight">机房站点升级功能</div>
|
<div class="page-filter-content">
|
<table>
|
<tr class="layui-page-filter-tbl-header layui-page-filter-fweight">
|
<td>省</td> <!-- 省 -->
|
<td>市</td> <!-- 市 -->
|
<td>区/县</td> <!-- 市 -->
|
<td><s:text name="Computer_name"/></td> <!-- 机房名称 -->
|
</tr>
|
<tr>
|
<td>
|
<div class="layui-form" lay-filter="provinceFilter">
|
<div class="layui-form-item">
|
<div class="layui-input-block">
|
<select name="province" id="province" lay-filter="province">
|
<option value="">请选择省</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
</td>
|
<td>
|
<div class="layui-form" lay-filter="cityFilter">
|
<div class="layui-form-item">
|
<div class="layui-input-block">
|
<select name="city" id="city" lay-filter="city">
|
<option value="">请选择市/区</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
</td>
|
|
<td>
|
<div class="layui-form" lay-filter="countyFilter">
|
<div class="layui-form-item">
|
<div class="layui-input-block">
|
<select name="county" id="county" lay-filter="county">
|
<option value="">请选择区/县</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
</td>
|
|
<td>
|
<div class="layui-form" lay-filter="homeFilter">
|
<div class="layui-form-item">
|
<div class="layui-input-block">
|
<select name="home" id="home" lay-filter="home">
|
<option value="">请选择机房</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
</td>
|
</tr>
|
</table>
|
</div>
|
</div>
|
<!-- 页面主题内容 -->
|
<div class="layui-page-content" style="position: relative;">
|
<div class="layui-tbl-filter">
|
<div class="layui-form layui-form-pane" lay-filter="tblFilter">
|
<div class="layui-inline">
|
<div class="layui-input-inline">
|
<div class="layui-form" lay-filter="addTypeFilter">
|
<select name="addType" id="addType" lay-filter="addType">
|
<option value="0">单个机房</option>
|
<option value="5">全区/县</option>
|
<option value="2">全市</option>
|
<option value="1">全省</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
<button class="layui-btn layui-btn-sm mrl8" id="addUpdate"><i class="fa fa-plus mrr8"></i>添加</button>
|
<button class="layui-btn layui-btn-sm" id="acUpdate"><i class="fa fa-refresh mrr8"></i>批量升级</button>
|
</div>
|
</div>
|
<!-- 表格内容 -->
|
<table id="pageTbl" lay-filter="pageTbl"></table>
|
</div>
|
</div>
|
<!-- 存储iframe需要的值 -->
|
<div id="updateIframeData"></div>
|
<!-- 整体灰色遮罩层 -->
|
<div id="allShade"></div>
|
<script type="text/html" id="barDemo">
|
{{# if(d.updatestatusnum != 1){ }}
|
<a class="layui-btn layui-btn-xs" lay-event="update">升级</a>
|
{{# } }}
|
</script>
|
<script type="text/html" id="upProgress">
|
<div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="upload{{d.fbsid}}" style="margin-top:6px">
|
<div class="layui-progress-bar" lay-percent="0%"></div>
|
</div>
|
</script>
|
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
|
<script type="text/javascript" src="js/echarts.js"></script>
|
<script type="text/javascript" src="jqueryui/jquery-ui.min.js"></script>
|
<script type="text/javascript" src="src/layui.js"></script>
|
<script type="text/javascript" src="pages/js/mylayui.js"></script>
|
<script type="text/javascript" src="pages/js/pages/control-common.js"></script>
|
<script type="text/javascript">
|
layui.use(['form', 'table', 'layer', 'element'], function() {
|
var table = layui.table; // 获取表格模块
|
var form = layui.form; // 获取表单模块
|
var layer = layui.layer; // 获取弹出框模块
|
var element = layui.element; // 获取元素操作模块
|
|
// 设置检测文件名弹出框的content
|
var cFilenameContent = '<div style="width:300px; height: 110px;"><div style="margin-top: 20px;margin-left: 8px; margin-right: 8px; text-algin: center;">'+
|
'<span>选择文件名:</span>'+
|
'<select id="equipeTypeSel" style="width: 200px;height: 26px; border: 1px solid #ccc">'+
|
'<option value="avr_dfu.uc3">avr_dfu.uc3</option>'+
|
'<option value="E51_DFU.SM5">E51_DFU.SM5</option>'+
|
'</select><br><br>'+
|
'<span>系 统 类 型:</span>'+
|
'<select id="sysType" style="width: 200px;height: 26px; border: 1px solid #ccc">'+
|
'<option value="12">1U</option>'+
|
'<option value="2">2U</option>'+
|
'</select><br><br>'+
|
'<span>输入版本号:</span>'+
|
'<input type="text" id="newestVer" style="width: 200px;height: 24px; border: 1px solid #ccc">'+
|
'</div></div>';
|
|
var cVerContent = '<div style="width:300px; height: 50px;"><div style="margin-top: 20px;margin-left: 8px; margin-right: 8px; text-algin: center;">'+
|
'<span>输入版本号:</span>'+
|
'<input type="text" id="newestVer" style="width: 200px;height: 24px; border: 1px solid #ccc">'+
|
'</div></div>';
|
|
var isNewLoad = true;
|
var pre_province = getQueryString('province');
|
// 查询省下拉框
|
searchProvince();
|
// 查询省
|
var filterLoad = layer.load();
|
function searchProvince() {
|
// 请求后台查询
|
$.ajax({
|
type:'post',
|
async:true,
|
url: 'User_battgroup_baojigroup_battgroupAction!serchStationName1InGroup',
|
data: null,
|
dataType: 'json',
|
success:function(result) {
|
var rs = JSON.parse(result.result);
|
var list = []; // option结果集
|
var ele = $('#province'); // 目标select
|
if(rs.code == 1) {
|
var data = rs.data;
|
list.push(getLayuiSelect('请选择省/直辖市', '', {}, undefined));
|
// 遍历查询结果
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var _tmp = getLayuiSelect(_data, _data, {}, {});
|
if(pre_province == _data && isNewLoad){
|
_tmp = getLayuiSelect(_data, _data, {}, {},true);
|
}
|
list.push(_tmp);
|
}
|
}else {
|
list.push(getLayuiSelect('暂无省/直辖市', '', {}, undefined));
|
}
|
|
// 根据对象数组生成下拉列表
|
createLayuiSelect(ele, list);
|
form.render('select', 'provinceFilter');
|
|
// 查询市
|
searchCity();
|
}
|
});
|
}
|
|
// 切换省-市
|
form.on('select(province)', function(data) {
|
// 查询市
|
searchCity(true);
|
});
|
|
// 查询市
|
function searchCity(isLoad) {
|
// 构造查询条件
|
var tmp = {
|
StationName1: $("#province").val()
|
};
|
var pre_city = getQueryString('city');
|
|
// 是否添加等待
|
if(isLoad) {
|
filterLoad = layer.load();
|
}
|
// 根据构造条件查询内容
|
$.ajax({
|
type: 'post',
|
async: true,
|
url: 'BattInfAction!serchStationName2',
|
dataType: 'json',
|
data: "json = "+JSON.stringify(tmp),
|
success: function(result) {
|
var rs = JSON.parse(result.result);
|
var list = []; // option结果集
|
var ele = $('#city'); // 目标select
|
if(rs.code == 1) {
|
var data = rs.data;
|
list.push(getLayuiSelect('请选择市/区', '', {}, undefined));
|
// 遍历查询结果
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var _tmp = getLayuiSelect(_data.StationName2, _data.StationName2, {}, _data);
|
if(pre_city == _data.StationName2 && isNewLoad){
|
_tmp = getLayuiSelect(_data.StationName2, _data.StationName2, {}, _data,true);
|
}
|
list.push(_tmp);
|
}
|
}else {
|
list.push(getLayuiSelect('暂无市/区', '', {}, undefined));
|
}
|
|
// 根据对象数组生成下拉列表
|
createLayuiSelect(ele, list);
|
form.render('select', 'cityFilter');
|
|
// 查询区县
|
searchCounty();
|
}
|
});
|
}
|
|
// 切换市-区县
|
form.on('select(city)', function(data) {
|
// 查询区县
|
searchCounty(true);
|
});
|
|
|
// 查询区/县
|
function searchCounty(isLoad) {
|
// 构造查询条件
|
var tmp = {
|
StationName1: $("#province").val(),
|
StationName2: $("#city").val()
|
};
|
// 是否添加等待
|
if(isLoad) {
|
filterLoad = layer.load();
|
}
|
var pre_county = getQueryString('county');
|
// 根据构造条件查询内容
|
$.ajax({
|
type: 'post',
|
async: true,
|
url: 'BattInfAction!serchStationName5',
|
dataType: 'json',
|
data: "json = "+JSON.stringify(tmp),
|
success: function(result) {
|
var rs = JSON.parse(result.result);
|
//console.info(rs);
|
var list = []; // option结果集
|
var ele = $('#county'); // 目标select
|
if(rs.code == 1) {
|
var data = rs.data;
|
list.push(getLayuiSelect('请选择区/县', '', {}, undefined));
|
// 遍历查询结果
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var _tmp = getLayuiSelect(_data.StationName5, _data.StationName5, {}, _data);
|
if(pre_county == _data.StationName5 && isNewLoad){
|
_tmp = getLayuiSelect(_data.StationName5, _data.StationName5, {}, _data,true);
|
}
|
//console.info(_tmp);
|
list.push(_tmp);
|
}
|
}else {
|
list.push(getLayuiSelect('暂无区/县', '', {}, undefined));
|
}
|
|
// 根据对象数组生成下拉列表
|
createLayuiSelect(ele, list);
|
form.render('select', 'countyFilter');
|
|
// 查询机房
|
searchHome();
|
}
|
});
|
}
|
|
// 切换市-区县
|
form.on('select(county)', function(data) {
|
// 查询区县
|
searchHome(true);
|
});
|
|
// 查询机房
|
function searchHome(isLoad) {
|
// 构造查询条件
|
var tmp = {
|
StationName1:$("#province").val(),
|
StationName2:$("#city").val(),
|
StationName5:$("#county").val(),
|
};
|
var pre_home = getQueryString('home');
|
var auto_seach = false;
|
// 是否添加等待
|
if(isLoad) {
|
filterLoad = layer.load();
|
}
|
// 根据构造条件查询内容
|
$.ajax({
|
type: 'post',
|
async: true,
|
url: 'BattInfAction!serchStationName3',
|
dataType: 'json',
|
data: "json = "+JSON.stringify(tmp),
|
success: function(result) {
|
var rs = JSON.parse(result.result);
|
var list = []; // option结果集
|
var ele = $('#home'); // 目标select
|
if(rs.code == 1) {
|
var data = rs.data;
|
list.push(getLayuiSelect('请选择机房', '', {StationId: '', dev_id: ''}, undefined));
|
// 遍历查询结果
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var _attr = {
|
StationId: _data.StationId,
|
dev_id: _data.FBSDeviceId
|
};
|
var _tmp = getLayuiSelect(_data.StationName, _data.StationName3, _attr, _data);
|
if(pre_home == _data.StationName && isNewLoad){
|
_tmp = getLayuiSelect(_data.StationName, _data.StationName3, _attr, _data,true);
|
auto_seach = true;
|
}
|
list.push(_tmp);
|
}
|
}else {
|
list.push(getLayuiSelect('暂无机房', '', {}, undefined));
|
}
|
// 根据对象数组生成下拉列表
|
createLayuiSelect(ele, list);
|
form.render('select', 'homeFilter');
|
isNewLoad = false;
|
layer.close(filterLoad);
|
}
|
});
|
}
|
|
// 表格模块
|
var tOptions = {
|
elem: '#pageTbl'
|
,toolbar: true
|
,defaultToolbar: []
|
,cellMinWidth: 80
|
,cols: [[
|
{type: 'checkbox', fixed: 'left'}
|
,{field:'stationid', title:'机房ID', align:'center'}
|
,{field:'stationname', title:'机房名称', align:'center', width: 400}
|
,{field:'fbsid', title:'设备ID', align:'center'}
|
,{field:'updatestatus', title:'升级状态', align:'center'}
|
,{field: 'version', title: '版本号', align: 'center'}
|
,{field:'filename', title:'升级文件名', align:'center'}
|
,{field:'status', title:'读写状态', align:'center'}
|
,{field:'progress', title:'读/写进度', align: 'center', templet:'#upProgress'}
|
,{field:'datapackage', title:'当前数据包', align:'center'}
|
,{fixed: 'right', title:'操作', align:'center', toolbar: '#barDemo', width:100}
|
]]
|
,data:[]
|
,limit: 1000
|
,page: false
|
,height: 'full-252'
|
};
|
|
// 生成表格数据
|
table.render(tOptions);
|
|
// 批量升级
|
$('#acUpdate').click(function() {
|
var checkStatus = table.checkStatus('pageTbl'); // 获取选中的内容
|
var data = checkStatus.data;
|
// 判断是否勾选内容
|
if(data.length == 0) {
|
layer.msg('请选择要升级的设备!');
|
return;
|
}
|
|
// 要更新的设备id列表
|
var updateList = [];
|
// 遍历data获取
|
for(var i=0; i<data.length; i++) {
|
updateList.push(data[i].fbsid);
|
}
|
|
// 打开面板设置升级设别的类型
|
layer.open({
|
type: 1
|
,title: '升级文件名/版本号'
|
,content: cFilenameContent
|
,fixed: true
|
,resize: false
|
,btn:['设置', '取消']
|
,yes: function(index) {
|
var filename = $('#equipeTypeSel').val();
|
var newestVer = $('#newestVer').val();
|
var sysType = $('#sysType').val();
|
|
// 校验要更新的设备
|
checkStationState(updateList, data, filename, newestVer, sysType);
|
layer.close(index);
|
}
|
});
|
// 校验要更新的设备
|
// checkStationState(updateList, data);
|
});
|
|
// 点击表格的toolbar
|
table.on('tool(pageTbl)', function(obj) {
|
var event = obj.event;
|
switch(event) {
|
case 'update':
|
// 格式化当前设备的信息并检测
|
formaterEquipeData(obj.data);
|
break;
|
default:
|
layer.msg('功能开发中...');
|
break;
|
}
|
});
|
|
// 检测当前设备的信息
|
function formaterEquipeData(data) {
|
// 构造查询条件
|
var updateList = [data.fbsid];
|
var allData = [data];
|
|
// 打开面板设置升级设别的类型
|
layer.open({
|
type: 1
|
,title: '升级文件名/版本号'
|
,content: cFilenameContent
|
,fixed: true
|
,resize: false
|
,btn:['设置', '取消']
|
,yes: function(index) {
|
var newestVer = $('#newestVer').val();
|
var sysType = $('#sysType').val();
|
// 校验要更新的设备
|
checkStationState(updateList, allData, data.filename, newestVer, sysType);
|
layer.close(index);
|
}
|
});
|
|
|
}
|
|
// 点击添加生成表格
|
$('#addUpdate').click(function() {
|
var structData = structAddData();
|
// 判断是否选择要添加的内容
|
if(structData.msg) {
|
layer.msg(structData.msg);
|
return;
|
}
|
// 根据对象查询内容
|
addStationOnTable(structData);
|
});
|
|
//添加设备到表格
|
var load;
|
function addStationOnTable(temp){
|
load = layer.load(1);
|
$.ajax({
|
type: "post",
|
url: "Fbs9100s_dfu_stateAction_action_addPro", //将当前需要升级的设备添加到数据库表中
|
async:true,
|
dataType:'json',
|
data:"json = "+JSON.stringify(temp),
|
success: function(data){
|
var rs = JSON.parse(data.result);
|
// console.log(rs);
|
if(rs.code == 1){
|
searchAddStationInfo(temp); //添加成功的时候查询当前已经添加到数据库表中的机房信息
|
}else{
|
layer.msg('没有要添加的内容!');
|
layer.close(load);
|
}
|
},error:function(e){
|
layer.msg('没有要添加的内容!');
|
layer.close(load);
|
}
|
});
|
}
|
|
|
//查询添加到表格中的设备信息
|
function searchAddStationInfo(temp){
|
$.ajax({
|
type: "post",
|
url: "Fbs9100s_dfu_stateAction_action_serchInserStation",
|
async:true,
|
dataType:'json',
|
data:"json = "+JSON.stringify(temp),
|
success: function(data){
|
var rs = JSON.parse(data.result);
|
if(rs.code == 1 && rs.data.length>0){
|
var allData = tOptions.data;
|
var formaterData = formaterAddData(rs.data, allData); //解析数据
|
if(formaterData.length) {
|
// 遍历formaterData
|
//console.log(formaterData);
|
for(var i=0; i<formaterData.length; i++) {
|
var _formaterData = formaterData[i];
|
var tmp = {};
|
tmp.stationid = _formaterData.StationId; // 机房id
|
tmp.stationname = _formaterData.StationName; // 机房名称
|
tmp.fbsid = _formaterData.FBSDeviceId; // 设备id
|
tmp.filename = getFnameByVer(_formaterData.StationIp); // 升级文件名称
|
tmp.updatestatusnum = 0; // 0 等待升级
|
tmp.updatestatus = '等待升级'; // 升级状态
|
tmp.status = '写'; // 读写状态
|
tmp.datapackage = 1; // 当前数据包
|
tmp.version = _formaterData.StationIp; // 版本号
|
tmp.isNewAdd = true;
|
//console.log(tmp);
|
allData.push(tmp);
|
}
|
|
// 生成表格数据
|
table.render(tOptions);
|
renderTblPorgess(allData);
|
}else {
|
layer.msg('没有要添加的内容!');
|
}
|
}else{
|
layer.msg('添加失败');
|
}
|
layer.close(load);
|
},error:function(e){
|
layer.msg('添加失败');
|
layer.close(load);
|
}
|
});
|
}
|
|
// 点击添加构造查询
|
function structAddData() {
|
//1省(文本值) 2:市(文本值) 5:区县(文本值) 0:机房 (设备id)
|
var addType = $('#addType').val(); // 添加机房的方式
|
var msg = ''; // 提示信息
|
var rs = {
|
num: addType,
|
StationName: ''
|
};
|
switch(addType) {
|
case '1':
|
var province = $('#province').val();
|
rs.StationName = province;
|
msg = '请选择省';
|
break;
|
case '2':
|
var city = $('#city').val();
|
rs.StationName = city;
|
msg = '请选择市';
|
break;
|
case '5':
|
var county = $('#county').val();
|
rs.StationName = county;
|
msg = '请选择区/县';
|
break;
|
case '0':
|
var home = $('#home').find('option:selected').attr('stationid');
|
rs.StationName = home;
|
msg = '请选择机房';
|
break;
|
}
|
if(!rs.StationName) {
|
rs.msg = msg;
|
}
|
return rs;
|
}
|
|
// 格式化加载的数据
|
function formaterAddData(addData, all) {
|
//console.log(addData);
|
var rs = [];
|
// 遍历addData的值
|
for(var i=0; i<addData.length; i++) {
|
var _addData = addData[i];
|
var fbsid = _addData.FBSDeviceId; // 设备的ID
|
var isAdd = true; // 是否添加
|
for(var k=0; k<all.length;k++) {
|
var _all = all[k];
|
if(_all.fbsid == fbsid) {
|
isAdd = false;
|
}
|
}
|
// 根据isAdd添加数据
|
if(isAdd) {
|
rs.push(_addData);
|
}
|
}
|
return rs;
|
}
|
|
var myTimeOutThreath; // 计时器
|
fulshMyTable(); //更新表格
|
//更新表格线程
|
function fulshMyTable(){
|
//console.info(allUpdataList);
|
var temp = new Array();
|
for(var i =0 ; i< tOptions.data.length ; i++){
|
temp.push(tOptions.data[i].fbsid);
|
}
|
if(temp.length > 0){
|
updateDevUpdate(temp,fulshMyTable);
|
}else{
|
window.clearTimeout(myTimeOutThreath);
|
myTimeOutThreath = window.setTimeout(fulshMyTable,4000);
|
}
|
|
}
|
|
//更新设备更新的表格
|
function updateDevUpdate(temp,callback){
|
//console.info(temp);
|
$.ajax({
|
type: "post",
|
url: "Fbs9100s_dfu_stateAction_action_serchByCondition",
|
async:true,
|
dataType:'json',
|
data:"json = "+JSON.stringify(temp),
|
success: function(data){
|
var rs = JSON.parse(data.result);
|
var tmp = {
|
updatestatus:[],
|
status: [],
|
datapackage: []
|
};
|
//console.log(rs);
|
if(rs.code == 1 && rs.data.length>0){
|
var tblData = tOptions.data;
|
for(var i=0; i<rs.data.length; i++) {
|
var _data = rs.data[i];
|
var num = -1;
|
// 计算进度
|
var currentPer = getStrPercent(_data.dfu_data_blocknum, _data.dfu_data_blocklen, _data.dfu_file_len, _data.dfu_wr_stat);
|
updateTblPorgress(_data.dev_id, currentPer);
|
//console.log(currentPer);
|
// 遍历现有的tblData/根据表格的设别id对获取到值进行排序以便对应表格内容
|
for(var k=0; k<tblData.length;k++) {
|
var _tblData = tblData[k];
|
if(_tblData.fbsid == _data.dev_id) {
|
num = k;
|
break;
|
}
|
}
|
|
if(num == -1) {
|
continue;
|
}
|
// 更新内容
|
var _tblData = tblData[num];
|
if(_data.dfu_en == 1){
|
_tblData.isNewAdd = false; //判断是否是第一次添加数据
|
}
|
var dfuEn = _data.dfu_en == 1?'升级中':_tblData.isNewAdd?'等待升级':_data.dfu_en == 0?'升级完成':'';
|
var dfuWr = _data.dfu_wr_stat == 1?'写':_data.dfu_wr_stat == 2?'读':_data.dfu_wr_stat == 3?'完成':'';
|
var dfuData = _data.dfu_data_blocknum;
|
// 更新表格配置项的值
|
_tblData.updatestatus = dfuEn;
|
_tblData.status = dfuWr;
|
_tblData.datapackage = dfuData;
|
_tblData.updatestatusnum = _data.dfu_en; // 0等待升级 1升级完成
|
|
tmp.updatestatus[num] = dfuEn;
|
tmp.status[num] = dfuWr;
|
tmp.datapackage[num] = dfuData;
|
}
|
var pageTbl = $('#pageTbl');
|
//console.log(tmp);
|
// 更新表格内容
|
Object.keys(tmp).forEach(function(key) {
|
updateLayuiTblCol(pageTbl, key, tmp[key]);
|
});
|
}else{
|
|
}
|
|
window.clearTimeout(myTimeOutThreath);
|
myTimeOutThreath = window.setTimeout(callback,4000);
|
},error:function(e){
|
window.clearTimeout(myTimeOutThreath);
|
myTimeOutThreath = window.setTimeout(callback,4000);
|
}
|
});
|
}
|
|
// 更新layui框架的指定的列
|
function updateLayuiTblCol(tbl, field, list) {
|
var layuiTbl = tbl.next('.layui-table-view');
|
var layuiTblContent = layuiTbl.find('.layui-table-box .layui-table-body table');
|
var tr = layuiTblContent.find('tr');
|
// 遍历list的值更新表格指定的单元格
|
for(var i=0; i<list.length; i++) {
|
var _tr = tr.eq(i);
|
var td = _tr.find('td');
|
td.each(function() {
|
var tdField = $(this).data('field');
|
if(tdField == field) {
|
$(this).find('.layui-table-cell').text(list[i]);
|
}
|
});
|
}
|
}
|
|
|
// 验证设备是否允许设备进行远程升级
|
function checkStationState(temp, all, filename, newestVer, sysType){
|
$.ajax({
|
type: "post",
|
url: "Fbs9100s_dfu_stateAction_action_judgeStation",
|
async:true,
|
dataType:'json',
|
data:"json = "+JSON.stringify(temp),
|
success: function(result){
|
var rs = JSON.parse(result.result);
|
//console.log(rs);
|
if(rs.code == 1) {
|
var data = rs.data;
|
var updateData = checkUpdating(data, all, filename, newestVer, sysType);
|
$('#updateIframeData').data('update', updateData.good); // 可更新的设备信息
|
$('#updateIframeData').data('errorUpdate', updateData.bad); // 无法更新的设备信息
|
|
//console.log(updateData);
|
// 判断是否有升级的设备
|
if(updateData.good.length == 0) {
|
if(temp.length == 1) {
|
layer.msg('当前设备无法升级!');
|
}else {
|
layer.msg('暂无可升级的设备!');
|
}
|
|
return;
|
}
|
|
// 显示面板
|
layer.open({
|
type: 2,
|
title: '更新设备',
|
area: ['960px', '524px'],
|
fixed: false, //不固定
|
maxmin: true,
|
content: 'iframe/batt-station-update.html',
|
btn: ['确认升级', '取消'],
|
yes: function(index, layero) {
|
var goodUpdateData = $('#updateIframeData').data('update'); // 获取可升级设备的信息
|
// 根据可升级设备的信息构造查询条件
|
var updateList = [];
|
for(var i=0; i<goodUpdateData.length; i++) {
|
var _data = goodUpdateData[i];
|
//var filename = getFnameByVer(_data.version);
|
var _tmp = {
|
dev_id: _data.fbsid
|
,dfu_file: _data.filename
|
};
|
console.log(_data);
|
// 添加到设备升级列表中
|
if(_data.filename && _data.filename.length != 0) {
|
updateList.push(_tmp);
|
}
|
|
}
|
//console.log(updateList);
|
//return;
|
// 关闭弹出面板
|
layer.close(index);
|
// console.log(updateList);
|
// 升级设备
|
updateBTSDevice(updateList);
|
//console.log(updateList);
|
}
|
});
|
}else {
|
if(temp.length == 1) {
|
layer.msg('当前设备无法升级!');
|
}else {
|
layer.msg('暂无可升级的设备!');
|
}
|
|
}
|
},
|
error: function() {
|
layer.msg('校验可升级设备失败!');
|
}
|
});
|
|
}
|
|
// 格式话升级的设备
|
function checkUpdating(rsData, all, filename, newestVer, sysType) {
|
var rs = {
|
good: []
|
,bad: []
|
};
|
// 遍历all
|
for(var i=0; i<all.length; i++) {
|
var _all = all[i];
|
var isError = true;
|
for(var k=0; k<rsData.length; k++) {
|
var _rsData = rsData[k];
|
|
// 判断当前设备是否正在升级
|
if(_all.updatestatusnum != 1) {
|
if(_all.fbsid == _rsData.FBSDeviceId && _all.filename == filename) {
|
// 检测当前版本号是否为最新
|
var isNewstVer = checkNewestVer(newestVer, _all.version);
|
var isSysType = checkSysType(sysType, _all.version);
|
if(!isNewstVer && isSysType) {
|
isError = false;
|
}
|
}
|
}
|
}
|
|
// 根据isError判读是否是不可添加的机房
|
if(isError) {
|
rs.bad.push(_all);
|
}else {
|
rs.good.push(_all);
|
}
|
}
|
|
return rs;
|
}
|
|
|
//批量升级BTS设备
|
function updateBTSDevice(temp){
|
$.ajax({
|
type: "post",
|
url: "Fbs9100s_dfu_stateAction_action_updatePro",
|
async:true,
|
dataType:'json',
|
data:"json = "+JSON.stringify(temp),
|
success: function(data){
|
var rs = JSON.parse(data.result);
|
console.info(rs);
|
if(rs.code == 1){
|
layer.msg("启动远程升级");
|
}else{
|
layer.msg("启动远程失败");
|
}
|
}
|
});
|
}
|
// 查询正在升级的设备
|
searchUpgrades();
|
// 查询正在升级的设备
|
function searchUpgrades() {
|
$.ajax({
|
type: "post",
|
url: "Fbs9100s_dfu_stateAction_action_searchAll",
|
async:true,
|
dataType:'json',
|
data:null,
|
success: function(result){
|
var rs = JSON.parse(result.result);
|
// 遍历查询结果
|
if(rs.code == 1) {
|
var data = rs.data;
|
//console.log(data);
|
var allData = tOptions.data;
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var tmp = {};
|
tmp.stationid = _data.stationId; // 机房id
|
tmp.stationname = _data.stationName; // 机房名称
|
tmp.fbsid = _data.dev_id; // 设备id
|
tmp.fbsname = _data.fBSDeviceName; // 设备名称
|
tmp.updatestatusnum = 1; // 0 等待升级 1正在升级
|
tmp.version = _data.note; // 版本号
|
tmp.filename = _data.dfu_file; // 升级文件名称
|
tmp.updatestatus = '升级中'; // 升级状态
|
tmp.status = _data.dfu_wr_stat == 1?'写':_data.dfu_wr_stat == 2?'读':_data.dfu_wr_stat == 3?'完成':''; // 读写状态
|
tmp.datapackage = _data.dfu_data_blocknum; // 当前数据包
|
tmp.isNewAdd = false;
|
|
allData.push(tmp);
|
}
|
|
// 更新表格
|
table.render(tOptions);
|
renderTblPorgess(allData);
|
}
|
}
|
});
|
}
|
|
// 渲染进度条
|
function renderTblPorgess(tblData) {
|
// 遍历tblData根据fbsid渲染进度条
|
for(var i=0; i<tblData.length; i++) {
|
var fbsid = tblData[i].fbsid;
|
|
// 渲染进度条
|
element.render('progress', 'upload'+fbsid);
|
}
|
|
}
|
|
// 更新进度条
|
function updateTblPorgress(fbsid, percent) {
|
|
// 更新进度条
|
element.progress('upload'+fbsid, percent);
|
}
|
|
// 计算进度
|
function getStrPercent(current, blocklen, all, status) {
|
var rs = '0%';
|
if(all != 0) {
|
var num = Math.ceil(current*blocklen*100/all);
|
if(num>=100) {
|
num = status == 1?'写完成':'升级完成';
|
|
}
|
|
rs = num+'%';
|
}
|
|
return rs;
|
}
|
//console.log(getFnameByVer('D:8,V2.53.40'));
|
// 根据版本号获取文件的名称
|
function getFnameByVer(version) {
|
var fileList = [
|
{
|
filename: 'avr_dfu.uc3'
|
,pattern: /^.*\.24\.[0-9]*$/
|
}
|
,{
|
filename: 'E51_DFU.SM5'
|
,pattern: /^.*\.53\.[0-9]*$/
|
}
|
];
|
|
// 遍历并获取filename
|
var filename = undefined;
|
for(var i=0; i<fileList.length; i++) {
|
var _fileList = fileList[i];
|
if(_fileList.pattern.test(version)) {
|
filename = _fileList.filename;
|
}
|
}
|
|
return filename;
|
}
|
|
//console.log(checkNewestVer('42', 'D:8,V2.53.44'));
|
// 验证版本
|
function checkNewestVer(ver ,version) {
|
var pattern = '^.*\\.[0-9]*\\.([0-9]*)$';
|
var reg = new RegExp(pattern);
|
reg.test(version);
|
// 判断当前版本是否为最新版本
|
var isNewest = false;
|
if(ver == RegExp.$1) {
|
isNewest = true;
|
}
|
return isNewest;
|
}
|
|
//checkSysType('12', 'D:8,V12.53.44');
|
// 验证当前版本2v/12v
|
function checkSysType(sys ,version) {
|
var pattern = '^.*V([0-9]*)\\.[0-9]*\\.[0-9]*$';
|
var reg = new RegExp(pattern);
|
reg.test(version);
|
//console.log(RegExp.$1);
|
var rs = false;
|
if(sys == RegExp.$1) {
|
rs = true;
|
}
|
// console.log(rs);
|
return rs;
|
}
|
});
|
</script>
|
</body>
|
</html>
|