<%@ 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>批量核容测试</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">
|
<link rel="stylesheet" type="text/css" href="css/popup-tbl.css">
|
<link rel="stylesheet" type="text/css" href="css/whyc-ui.css">
|
<style>
|
.dataTypeCont {
|
width: 160px;
|
text-align: center;
|
}
|
.dataTypeCont .layui-form-switch {
|
min-width: 70px;
|
margin-top: 4px;
|
}
|
.error-img {
|
visibility: hidden;
|
font-size: 20px;
|
color: #FF0000;
|
}
|
.error-data {
|
visibility:visible !important;
|
}
|
input.error-data {
|
outline: none !important;
|
border: 1px solid #FF0000 !important;
|
}
|
</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> <!-- 机房名称 -->
|
<td>系统类型</td>
|
<td>电池组号</td>
|
</tr>
|
<tr>
|
<td>
|
<div class="layui-form" lay-filter="provinceFilter">
|
<div class="layui-form-item">
|
<label ></label>
|
<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" lay-search="">
|
<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" lay-search="">
|
<option value="">请选择机房</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
</td>
|
<td>
|
<div class="layui-form" lay-filter="sysTypeFilter">
|
<div class="layui-form-item">
|
<div class="layui-input-block">
|
<select name="sysType" id="sysType" lay-filter="sysType" lay-search="">
|
<option value="12">12V设备</option>
|
<option value="2">2V设备</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
</td>
|
<td>
|
<div class="layui-form" lay-filter="battNumFilter">
|
<div class="layui-form-item">
|
<div class="layui-input-block">
|
<select name="battNum" id="battNum" lay-filter="battNum">
|
<option value="0">电池组1</option>
|
<option value="1">电池组2</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="batchAdd"><i class="fa fa-plus mrr8"></i>添加电池组</button>
|
<button class="layui-btn layui-btn-sm" id="batchSetCurr">批量设置放电参数</button>
|
<button class="layui-btn layui-btn-sm" id="startTest">批量启动测试</button>
|
<button class="layui-btn layui-btn-sm" id="export_table"><s:text name="Export"/><!-- 导出 --></button>
|
<!-- <button class="layui-btn layui-btn-sm" id="noNuclearExport">批量导入待核容设备</button> -->
|
</div>
|
</div>
|
<!-- 表格内容 -->
|
<table id="pageTbl" lay-filter="pageTbl"></table>
|
</div>
|
</div>
|
<!-- bts设备弹出框 -->
|
<div class="popup" id="bts">
|
<div class="popup-title"><span>BTS设备<s:text name="Discharging"/><s:text name="Parameter_Set"/><!-- 放电参数设置 --></span> <a href="javascript:;" class="close">X</a></div>
|
<div class="popup-content">
|
<div class="popup-tbl">
|
<table>
|
<tbody>
|
<tr>
|
<th>测试类型<!-- 放电类型 --></th>
|
<th><s:text name="Discharging"/><s:text name="Time_long"/><!-- 放电时长 -->(0~5940<s:text name="Minutes"/>)</th>
|
</tr>
|
<tr>
|
<td>
|
<select id="discharge_type">
|
<option value="37"><s:text name="Capacity"/><s:text name="Test"/><!-- 容量测试 --></option>
|
<option value="50"><s:text name="Internal_resistance"/><s:text name="Test"/><!-- 内阻测试 --></option>
|
</select>
|
</td>
|
<td><input id="distime" type="text" value="600"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
</tr>
|
<tr>
|
<th>放电电流百分比(0~300%)<!-- 放电小时率 --></th>
|
<th>放电容量百分比(0~300%)</th>
|
</tr>
|
<tr>
|
<td><input id="hourrate" type="text" value="10"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
<td><input id="disCapPer" type="text" value="60"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
</tr>
|
<tr>
|
<th>单体电压下限百分比(0~300%)</th>
|
<th>组端电压下限百分比(0~300%)</th>
|
</tr>
|
<tr>
|
<td><input id="monVolLowPer" type="text" value="90"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
<td><input id="groupVolLowPer" type="text" value="90"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
</tr>
|
<tr>
|
<th>单体下限数量百分比(0~100%)</th>
|
<th>充电电流百分比(0~300%)</th>
|
</tr>
|
<tr>
|
<td><input id="monNumLow" type="text" value="25"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
<td><input id="chargeCurrPer" type="text" value="10"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
</tr>
|
<tr>
|
<th><s:text name="Booster"/><s:text name="Upper_limit"/><!-- 升压上限 -->(V)</th>
|
<th><s:text name="On-line_voltage"/><s:text name="Low"/><s:text name="Dispose"/><!-- 在线电压低处理 --></th>
|
</tr>
|
<tr>
|
<td><input id="DCVolHighLimit" type="text" value="0"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
<td>
|
<select id="OnlineVolLowAction">
|
<option value="0"><s:text name="Stop"/><s:text name="Test"/><!-- 停止测试 --></option>
|
<option value="1"><s:text name="Continue"/><s:text name="Test"/><!-- 继续测试 --></option>
|
</select>
|
</td>
|
</tr>
|
<tr>
|
<th>温度上限(℃)</th>
|
</tr>
|
<tr>
|
<td><input id="TempUpHighLimit" type="text" value="40"><i class="fa fa-frown-o error-img" title="数据格式错误"></i></td>
|
</tr>
|
</tbody>
|
</table>
|
</div>
|
</div>
|
<div class="popup-footer">
|
<input type="button" class="mrr8" name="" id="btn_set" value="参数设置" > <!-- 参数设置 -->
|
</div>
|
</div>
|
|
<!-- 存储set-curr.html的信息 -->
|
<div id="setCurrIframe"></div>
|
<div id="setCurrBtn"></div>
|
<!-- 设备工作状态 -->
|
<script type="text/html" id="devStatus">
|
{{# if(d.devStatus) { }}
|
{{d.devStatus}}
|
{{# }else{ }}
|
状态:???,告警:???,组端电压(V):???,电流(A):???,容量(AH):???
|
{{# } }}
|
</script>
|
<!-- 已测时长 -->
|
<script type="text/html" id="testTime">
|
{{# if(d.testTime) { }}
|
{{d.testTime}}
|
{{# }else{ }}
|
00:00:00
|
{{# } }}
|
</script>
|
<!-- 通信计数signalNum -->
|
<script type="text/html" id="signalNum">
|
{{# if(d.signalNum) { }}
|
{{d.signalNum}}
|
{{# }else{ }}
|
???
|
{{# } }}
|
</script>
|
<script type="text/html" id="setStatus">
|
{{# if(d.setCurr == 1){ }}
|
<button class="layui-btn layui-btn-xs">设置成功</button>
|
{{# }else if(d.setCurr == 2){ }}
|
<button class="layui-btn layui-btn-xs layui-btn-danger">设置失败</button>
|
{{# }else { }}
|
<button class="layui-btn layui-btn-xs layui-btn-normal">未设置</button>
|
{{# } }}
|
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="control">实时数据</a>
|
</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="js/popup.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="js/whyc-jqueryui.js"></script>
|
<script type="text/javascript" src="pages/js/common.js"></script>
|
<script type="text/javascript">
|
var BTS_popup = new Popup($('#bts'));
|
// 充放电弹出框设置
|
$(function() {
|
// 初始化bts弹出框
|
$('#bts').find('.close').bind('click', function() {
|
BTS_popup.hidePopup(); // 隐藏bts弹出框和遮罩层
|
});
|
|
// 窗口大小改变
|
$(window).resize(function() {
|
BTS_popup.hidePopup(); // 隐藏bts弹出框和遮罩层
|
});
|
});
|
|
layui.use(['form', 'table', 'layer', 'element', 'laytpl'], function() {
|
var table = layui.table; // 获取表格模块
|
var form = layui.form; // 获取表单模块
|
var layer = layui.layer; // 获取弹出框模块
|
var element = layui.element; // 获取元素操作模块
|
var laytpl = layui.laytpl; // 获取模块操作
|
|
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;
|
var allTxt = "<s:text name='All'/>(<s:text name='Common'/>"+data.length+"<s:text name='Species'/>)";
|
list.push(getLayuiSelect(allTxt, '', {}, 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;
|
var allTxt = "<s:text name='All'/>(<s:text name='Common'/>"+data.length+"<s:text name='Species'/>)";
|
list.push(getLayuiSelect(allTxt, '', {}, 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);
|
});
|
|
$('#export_table').click(function(){
|
var data = table.checkStatus('pageTbl').data;
|
if (data.length) {
|
table.exportFile('pageTbl', data, 'xls');
|
} else {
|
layer.msg("请选中要导出的记录");
|
}
|
});
|
|
// 查询区/县
|
function searchCounty(isLoad) {
|
var list = []; // option结果集
|
var ele = $('#county'); // 目标select
|
// 判断必要条件是否存在
|
var parentStatus = checkLayuiParent($("#city"));
|
if(!parentStatus) {
|
layer.close(filterLoad); // 关闭等待框
|
list.push(getLayuiSelect('请先选择市', '', {}, undefined));
|
// 根据对象数组生成下拉列表
|
createLayuiSelect(ele, list);
|
form.render('select', 'countyFilter');
|
// 查询机房
|
searchHome();
|
return;
|
}
|
|
// 构造查询条件
|
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;
|
var allTxt = "<s:text name='All'/>(<s:text name='Common'/>"+data.length+"<s:text name='Species'/>)";
|
list.push(getLayuiSelect(allTxt, '', {}, 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 list = []; // option结果集
|
var ele = $('#home'); // 目标select
|
// 判断必要条件是否存在
|
var parentStatus = checkLayuiParent($("#county"));
|
if(!parentStatus) {
|
layer.close(filterLoad); // 关闭等待框
|
list.push(getLayuiSelect('请先选择区/县', '', {}, undefined));
|
// 根据对象数组生成下拉列表
|
createLayuiSelect(ele, list);
|
form.render('select', 'homeFilter');
|
return;
|
}
|
|
// 构造查询条件
|
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;
|
var allTxt = "<s:text name='All'/>(<s:text name='Common'/>"+data.length+"<s:text name='Species'/>)";
|
list.push(getLayuiSelect(allTxt, '', {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.StationName, _attr, _data);
|
if(pre_home == _data.StationName && isNewLoad){
|
_tmp = getLayuiSelect(_data.StationName, _data.StationName, _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);
|
}
|
});
|
}
|
|
// 切换机房
|
form.on('select(home)', function(data) {
|
|
});
|
|
// 表格模块
|
var tOptions = {
|
elem: '#pageTbl'
|
,toolbar: true
|
,defaultToolbar: []
|
,cellMinWidth: 80
|
,cols: [[
|
{type:'checkbox',fixed: 'left'}
|
,{field:'FBSDeviceId', title:'设备ID', align:'center', width: 160}
|
,{field:'StationName', title:'机房名称', align:'center', width: 470}
|
,{field:'BattGroupId', title:'电池组ID', align:'center', width: 160}
|
,{field:'BattGroupName', title:'电池组名称', align:'center', width: 160}
|
,{field:'devStatus', title:'设备状态', templet: '#devStatus', align:'center', width: 700}
|
,{field:'testTime', title:'已测时长', templet: '#testTime', align:'center', width: 140}
|
,{field:'signalNum', title:'通信计数', templet: '#signalNum', align:'center', width: 140}
|
,{field:'StationName9', title:'设备版本号', align:'center', width: 160}
|
,{field:'Load_curr', title:'负载电流', align:'center', width: 100}
|
,{field:'MonCapStd', title:'标称容量', align:'center', width: 100}
|
,{field:'doThings', fixed: 'right', title: '设置状态', toolbar: '#setStatus', align: 'center', width: 200}
|
]]
|
,data:[]
|
,limit: 10000
|
,page: false
|
,height: 'full-252'
|
};
|
|
// 生成表格数据
|
table.render(tOptions);
|
|
// 点击表格中的工具按钮
|
table.on('tool(pageTbl)', function(obj){
|
//console.log(obj);
|
switch(obj.event) {
|
case 'control':
|
targetControl(obj);
|
break;
|
};
|
});
|
|
// 检测是否有批量核容权限
|
// 如果有权限就无感操作
|
// 如果无权限 不让多选 弹窗提示无权限
|
// $('body').on('click', )
|
|
// 表格中行的选中事件
|
table.on("checkbox(pageTbl)", function (obj) {
|
// console.log('check');
|
// console.log($(this));
|
// console.log($(this).siblings('input'));
|
// console.log(table.checkStatus('pageTbl').data.length);
|
// console.log(table.checkStatus('pageTbl').data);
|
var batt_discharge_model_permit = checkUserPermit(permits, 'batt_discharge_model_permit');
|
if(table.checkStatus('pageTbl').data.length > 1 && !batt_discharge_model_permit) {
|
layer.msg('当前用户没有批量核容权限');
|
// 更新表单 显示
|
$(this).siblings('input').prop('checked', false);
|
form.render("checkbox");
|
|
// 更新表格数据
|
obj.checked = false;
|
obj.update({
|
LAY_CHECKED: false
|
});
|
}
|
});
|
|
// 表格行 全选事件
|
form.on('checkbox(layTableAllChoose)', function (obj) {
|
// console.log('selectAll');
|
var child = $(".layui-table-box input[type='checkbox']");
|
|
var batt_discharge_model_permit = checkUserPermit(permits, 'batt_discharge_model_permit');
|
if (!batt_discharge_model_permit) {
|
layer.msg('当前用户没有批量核容权限');
|
child.each(function (index, item) {
|
if($(item).is(':checked')) {
|
$(item).prop('checked', true);
|
return true;
|
}
|
$(item).prop('checked', false);
|
});
|
// 全选框取消选择
|
$(obj.elem).prop('checked', false);
|
form.render('checkbox');
|
}
|
});
|
|
|
|
// 跳转到实时界面
|
function targetControl(obj) {
|
var data = obj.data;
|
var pageName = "control.jsp"; // 跳转页面名称
|
var province = data.StationName1; // 省
|
var city = data.StationName2; // 市
|
var county = data.StationName5; // 区县
|
var home = data.StationName; // 机房名称
|
var battid = data.BattGroupId; // 电池组id
|
// 实现跳转
|
window.open(skipUrl(pageName, province, city, county, home, battid));
|
}
|
|
|
// 更新表格的对象
|
var layuiTbl = new LayuiTbl(tOptions, layui, laytpl, table.cache.pageTbl);
|
|
// 设备类型
|
var devType = 0; // 1U:12 2U:2
|
// 查询正在放电的设备
|
searchChargeDev(search, {}, false);
|
|
// 点击添加电池组
|
$('#setCurrIframe').data('setCurr', []);
|
|
$('#batchAdd').click(function() {
|
var structData = structAddData();
|
// 判断是否选择要添加的内容
|
if(structData.msg) {
|
layer.msg(structData.msg);
|
return;
|
}
|
$('#setCurrIframe').data('setCurr', []);
|
// 弹出设置选择筛选条件
|
searchChargeDev(search, structData, true);
|
});
|
|
|
// 设置添加操作的字符串
|
var addBattStr = '';
|
// 查询正在放电的设备
|
function searchChargeDev(callback, cParam, isCallback) {
|
var rq = structAddData(); // 获取查询条件
|
var preDevType = $('#sysType').val();
|
// 判断当前设备的类型是否和上一次一致
|
if(preDevType != devType) {
|
var loading = layer.load(1);
|
devType = preDevType;
|
// 设备类型的条件改变清空表格
|
tOptions.data = [];
|
// 清空字符串
|
addBattStr = '';
|
// 查询正在放电的内容
|
$.ajax({
|
type: 'post'
|
,async: true
|
,url: 'Fbs9100_stateAction_action_seachDischarge'
|
,data: 'json='+JSON.stringify(rq)
|
,dataType: 'json'
|
,success:function(res) {
|
var rs = JSON.parse(res.result);
|
var rsData = [];
|
//console.log(rs);
|
if(rs.code == 1) {
|
data = rs.data;
|
var tmps = [];
|
for(var i=0; i<data.length; i++) {
|
var _tmp = {};
|
var _data = data[i];
|
_tmp.FBSDeviceId = _data.dev_id; // 设备ID
|
_tmp.StationName = _data.stationName; // 机房名称
|
_tmp.BattGroupId = _data.battgroupid; // 机房ID
|
_tmp.BattGroupName = _data.note; // 电池组名称
|
_tmp.StationName9 = _data.dev_version; // 设备版本号
|
_tmp.GroupIndexInFBSDevice = _data.dev_testgroupnum-1; // 电池组索引
|
_tmp.MonCount = _data.moncount; // 单体数量
|
_tmp.MonCapStd = _data.moncapstd; // 标称容量
|
_tmp.MonVolStd = _data.monvolstd; // 标称电压
|
tmps.push(_tmp);
|
}
|
rsData = tmps;
|
}
|
//console.log(rsData);
|
tOptions.data = rsData;
|
|
table.render(tOptions);
|
// 判断是否执行callback函数
|
if(isCallback) {
|
callback(cParam);
|
}else {
|
updateDevStatus();
|
}
|
}
|
,complete: function() {
|
layer.close(loading);
|
}
|
});
|
|
}else {
|
// 设备类型的条件没有发生变化,向表格添加数据
|
callback(cParam);
|
}
|
|
}
|
|
// 构造查询正在放电的设备的条件
|
function searchChargeDevRq() {
|
var temp = {
|
MonVolStd: $('#sysType').val()
|
};
|
|
return temp;
|
}
|
|
// 根据查询条件查询内容
|
function search(temp) {
|
var load = layer.load(1);
|
// 查询后台
|
$.ajax({
|
type: 'post'
|
,async: true
|
,url: 'BattInfAction!serchByDischarge'
|
,data: 'json='+JSON.stringify(temp)
|
,dataType: 'json'
|
,success: function(res) {
|
// console.log(res);
|
var rs = JSON.parse(res.result);
|
var data = [];
|
if(rs.code == 1) {
|
data = getFilterData(rs.data, tOptions.data);
|
}
|
|
// 如果有添加的数据
|
if(data.length !=0) {
|
if(addBattStr.length == 0) { // 字符串长度为0
|
addBattStr += getFilterStr(temp);
|
}else {
|
addBattStr += ','+getFilterStr(temp);
|
}
|
}
|
// 将数据添加到表格中
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
tOptions.data.push(_data);
|
}
|
//console.log(tOptions.data);
|
// 生成表格数据
|
if(data.length != 0) {
|
table.render(tOptions);
|
}
|
updateDevStatus();
|
|
}
|
,complete:function() {
|
layer.close(load);
|
}
|
});
|
}
|
|
// 根据设备对数据进行筛选
|
function getFilterData(data, all) {
|
var rs = [];
|
// 遍历data的值
|
for(var i=0; i<data.length; i++) {
|
var isExist = false;
|
var _data = data[i];
|
// 遍历all
|
for(var k=0; k<all.length;k++) {
|
var _all = all[k];
|
// 判断设备id是否已经被添加
|
if(_data.FBSDeviceId == _all.FBSDeviceId) {
|
isExist = true;
|
break;
|
}
|
}
|
// 如果不存在添加数据
|
if(!isExist) {
|
rs.push(_data);
|
}
|
}
|
|
return rs; // 返回结果集
|
}
|
|
// 点击添加构造查询
|
function structAddData() {
|
//1省(文本值) 2:市(文本值) 5:区县(文本值) 0:机房 (设备id)
|
var addType = $('#addType').val(); // 添加机房的方式
|
var msg = ''; // 提示信息
|
var rs = {
|
num: addType,
|
StationName: '',
|
GroupIndexInFBSDevice: $('#battNum').val(),
|
MonVolStd: $('#sysType').val()
|
};
|
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;
|
}
|
|
// 点击批量设置放电电流参数
|
var pageIframe = "";
|
$('#batchSetCurr').click(function() {
|
var checkStatus = table.checkStatus('pageTbl');
|
var data = checkStatus.data;
|
if(data.length == 0) {
|
layer.msg('请选择要设置的机房');
|
return;
|
}
|
|
setBtsPopup(); // 设置BTS面板的初始值
|
BTS_popup.showPopup(); // 显示BTS面板
|
|
});
|
|
var btsCmd = GLOBAL.CMD.BTS; // 获取BTS的CMD
|
var setParamCmd = btsCmd.setDischargeParm; // 设置参数的cmd
|
var startTest = btsCmd.start;
|
// 点击放电参数设置页面设置按钮
|
$('#btn_set').click(function() {
|
if($(this).hasClass('whyc-btn-disabled')) {
|
layer.msg('存在不合法的数据');
|
return;
|
}
|
|
var checkStatus = table.checkStatus('pageTbl');
|
var data = checkStatus.data;
|
var ratio = getBtsPopup();
|
var currParam = getSetCurrParam(data, ratio);
|
|
// 判断是否设置机房
|
layer.confirm('是否确认批量设置参数', {icon: 3, title: '系统提示'}, function(index) {
|
layer.close(index);
|
ajaxSetParam(currParam);
|
});
|
});
|
|
// 请求设置参数
|
function ajaxSetParam(param) {
|
//console.log(param);
|
var load = layer.load(1);
|
// 请求后台
|
$.ajax({
|
type: 'post'
|
,async: true
|
,url: 'Fbs9100_setparamAction_action_updatePro'
|
,data: 'json='+JSON.stringify(param)+'&json_msg='+addBattStr // 添加操作记录
|
,dataType: 'json'
|
,success: function(res) {
|
var rs = JSON.parse(res.result);
|
if(rs.code == 1) {
|
layer.msg('设置完成!');
|
BTS_popup.hidePopup(); // 关闭面板
|
var data = rs.data;
|
console.log(data);
|
var rsList = [];
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
rsList.push(_data);
|
}
|
|
var trIndex = getSetCurrIndex(data, tOptions.data);
|
//console.log(trIndex);
|
// 被设置参数的机房
|
for(var i=0; i<trIndex.length; i++) {
|
var _data = data[i];
|
console.log(_data);
|
var _trIndex = trIndex[i];
|
var _temp = {'doThings':''};
|
if(_data.num==1) {
|
_temp.setCurr = 1;
|
}else {
|
_temp.setCurr = 2;
|
}
|
layuiTbl.updateTr(i, _temp);
|
}
|
|
$('#setCurrIframe').data('setCurr', rsList);
|
}else {
|
layer.msg('修改失败');
|
}
|
}
|
,complete: function() {
|
layer.close(load);
|
}
|
});
|
}
|
|
|
// 构造批量设置放电参数的方法
|
function getSetCurrParam(data, ratio) {
|
// console.log(data);
|
var rs = [];
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var disCurr = getDisCurr(_data.MonCapStd, ratio.hourrate); // 小时率
|
var chargeCurr = getChargeCurr(_data.MonCapStd, ratio.chargeCurrPer); // 充电电流
|
var groupVolLow = getGroupVolLow(_data.MonVolStd, _data.MonCount, ratio.groupVolLowPer); // 组端电压下限
|
var monVolLow = getMonVolLow(_data.MonVolStd, ratio.monVolLowPer); // 单体电压下限
|
var monNumLow = getMonNumLow(_data.MonCount, ratio.monNumLow); // 单体数量下限
|
var disCap = getDisCap(_data.MonCapStd, ratio.disCapPer); // 放电容量
|
var temp= {
|
num: 0
|
,dev_id: _data.FBSDeviceId // 设备id
|
,op_cmd: setParamCmd // 设置参数命令
|
,TestCmd: ratio.testType // 测试类型
|
,HourRate: ratio.hourrate // 小时率
|
,DisCurr: disCurr // 放电电流
|
,DisCap: disCap // 放电容量
|
,DisTime: ratio.distime // 放电时长
|
,GroupVol_Low: groupVolLow // 组端电压下限
|
,MonomerVol_Low: monVolLow // 单体电压下限
|
,MonomerLowCount: monNumLow // 单体数量下限
|
,MonomerTmp_High: ratio.TempUpHighLimit // 温度上限
|
,OnlineLowAction: ratio.OnlineVolLowAction // 在线电压低处理
|
,ChargeCurrSet: chargeCurr // 充电电流
|
,DCVolHighLimit: ratio.DCVolHighLimit // 升压上限
|
,BattGroupNum: _data.GroupIndexInFBSDevice+1 // 电池组的索引
|
,StationName: _data.StationName // 机房名称
|
}
|
|
rs.push(temp);
|
}
|
|
return rs;
|
}
|
|
|
|
// 获取批量设置的参数
|
function getBtsPopup() {
|
var temp={
|
num: 0
|
,testType: $('#discharge_type').val() // 测试类型
|
,distime: $('#distime').val() // 放电时长
|
,hourrate: $('#hourrate').val() // 放电小时率
|
,disCapPer: $('#disCapPer').val() // 放电容量百分比
|
,monVolLowPer: $('#monVolLowPer').val() // 单体电压下限百分比
|
,groupVolLowPer: $('#groupVolLowPer').val() // 组端电压下限百分比
|
,monNumLow: $('#monNumLow').val() // 单体数量百分比
|
,chargeCurrPer: $('#chargeCurrPer').val() // 充电电流百分比
|
,DCVolHighLimit: $('#DCVolHighLimit').val() // 升压上限
|
,TempUpHighLimit: $('#TempUpHighLimit').val() // 温度上限
|
,OnlineVolLowAction: $('#OnlineVolLowAction').val() // 在线电压低处理
|
};
|
|
return temp;
|
}
|
|
|
// 获取放电电流(标称容量的*小时率)
|
function getDisCurr(monCapStd, ratio) {
|
return monCapStd*ratio/100;
|
}
|
|
// 获取组端电压下限(标称单体电压*单体数量*百分比)
|
function getGroupVolLow(monVolStd, monCount, ratio) {
|
return monVolStd*monCount*ratio/100;
|
}
|
|
// 获取单体电压下限(标称单体电压*百分比)
|
function getMonVolLow(monVolStd, ratio) {
|
return monVolStd*ratio/100;
|
}
|
|
// 单体数量下限(单体节数*百分比)
|
function getMonNumLow(monCount, ratio) {
|
return Math.floor(monCount*ratio/100);
|
}
|
|
// 放电容量(标称容量*百分比)
|
function getDisCap(monCapStd, ratio) {
|
return monCapStd*ratio/100;
|
}
|
|
// 充电电流(标称容量*百分比)
|
function getChargeCurr(monCapStd, ratio) {
|
return monCapStd*ratio/100;
|
}
|
|
// 放电时长distime
|
$('#distime').testVal({
|
pattern: /^[0-9]+$/,
|
regVal: true,
|
min: 0,
|
max: 5940,
|
msg: '取值范围0~5940'
|
});
|
|
var regs = {
|
pattern: /^[0-9]+$/,
|
regVal: true,
|
min: 0,
|
max: 300,
|
msg: '取值范围0~300'
|
};
|
|
// 小时率
|
$('#hourrate').testVal(regs);
|
|
// 放电容量百分比
|
$('#disCapPer').testVal(regs);
|
|
// 单体电压下限百分比
|
$('#monVolLowPer').testVal(regs);
|
|
// 组端下限百分比
|
$('#groupVolLowPer').testVal(regs);
|
|
// 充电电流百分比
|
$('#chargeCurrPer').testVal(regs);
|
|
// 单体下限数量
|
$('#monNumLow').testVal({
|
pattern: /^[0-9]+$/,
|
regVal: true,
|
min: 0,
|
max: 100,
|
msg: '取值范围0~100'
|
});
|
|
// 获取BTS面板的所有文本框
|
$('#bts').on('input propertychange', 'input[type=text]', function() {
|
setBTSPopupStatus($(this).attr('id'), $(this).val());
|
});
|
|
// 启动测试
|
$('#startTest').click(function() {
|
var rsList = $('#setCurrIframe').data('setCurr');
|
if(rsList.length == 0) {
|
layer.msg('暂无无法启动,请先设置放电参数!');
|
return;
|
}
|
$('#setCurrIframe').data('addBattStr', addBattStr);
|
// 显示面板
|
layer.open({
|
type: 2
|
,area: ['1200px', '500px']
|
,resize: false
|
,maxmin: true
|
,fixed: true
|
,content: 'iframe/setcurr.html'
|
});
|
|
});
|
|
// 点击批量导入未核容按钮
|
$('#noNuclearExport').click(function() {
|
// 显示面板
|
layer.open({
|
type: 2
|
,area: ['1200px', '500px']
|
,resize: false
|
,maxmin: true
|
,fixed: true
|
,content: 'iframe/no-nuclear-home.html'
|
});
|
});
|
|
// 初始化设置参数的按钮
|
var BTSBtn = {
|
disabled: function() {
|
$('#btn_set').addClass('whyc-btn-disabled'); // 设置参数按钮无效
|
},
|
active:function() {
|
$('#btn_set').removeClass('whyc-btn-disabled'); // 设置参数按钮有效
|
}
|
};
|
|
// 设置批量设置放电参数面板
|
function setBtsPopup() {
|
$('#distime').val(600); // 放电时长
|
$('#hourrate').val(10); // 小时率
|
$('#disCapPer').val(60); // 放电容量百分比
|
$('#monVolLowPer').val(90); // 单体电压下限百分比
|
$('#groupVolLowPer').val(90); // 组端电压下限百分比
|
$('#monNumLow').val(25); // 单体数量百分比
|
$('#chargeCurrPer').val(10); // 充电电流百分比
|
$('#DCVolHighLimit').val(56.4); // 升压上限
|
$('#TempUpHighLimit').val(60); // 温度上限
|
|
// 初始化面板状态
|
$('#bts').find('input').removeClass('error-data'); // 移除错误提示
|
$('#bts').find('.error-img').removeClass('error-data'); // 移除错误提示
|
BTSBtn.active();
|
}
|
|
//根据文本框内容设置61850的按钮状态
|
function setBTSPopupStatus(id, val) {
|
var textList = BTS_popup.popup.find('input[type=text]');
|
var selectList = BTS_popup.popup.find('.popup-tbl select');
|
var errorStatus = BTS_popup.popup.data().errorStatus; // 获取是否读取参数失败
|
//console.log(BTS_popup.popup.data().attr);
|
// 读取设备参数失败
|
if(errorStatus) {
|
BTSBtn.disabled();
|
return false; // 结束函数运行
|
}
|
|
// 遍历面板下的所有文本框查看是否有错误数据
|
var isDisabled = false;
|
textList.each(function() {
|
if($(this).hasClass('error-data')) {
|
isDisabled = true;
|
}
|
});
|
|
// 存在错误的数据
|
if(isDisabled) {
|
BTSBtn.disabled();
|
return false; // 结束函数运行
|
}else {
|
BTSBtn.active();
|
}
|
}
|
|
// 获取设置放电参数的下标
|
function getSetCurrIndex(setData, allData) {
|
var rs = [];
|
// 遍历setData
|
for(var i=0; i<setData.length; i++) {
|
var _setData = setData[i];
|
var setDevId = _setData.dev_id;
|
//console.log(setDevId);
|
// 遍历allData
|
for(var k=0; k<allData.length; k++) {
|
var _allData = allData[k];
|
var allDevId = _allData.FBSDeviceId;
|
if(setDevId == allDevId) {
|
rs.push(k);
|
break;
|
}
|
}
|
|
}
|
|
return rs;
|
}
|
|
// 更新设备状态
|
var BTS9100 = GLOBAL.BTS9100;
|
var workStates = BTS9100.workstates;
|
var alarmStates = BTS9100.alarmstates;
|
function updateDevStatus1() {
|
var battlist = tOptions.data;
|
var battIdList = updateDevStatusRq();
|
console.log(battIdList);
|
clearInterval(updateDevStatus.timer);
|
if(battlist.length > 0){
|
$.ajax({
|
type: "post",
|
url: "Fbs9100_setparamAction_action_serchByInfo",
|
async:true,
|
dataType:'text',
|
data:"json="+JSON.stringify(battlist),
|
dataType: 'json',
|
success: function(res){
|
var rs = JSON.parse(res.result);
|
console.log(rs);
|
if(rs.code == 1) {
|
var data = rs.data;
|
// console.log(data);
|
layuiTbl.getCache(table.cache['pageTbl']);
|
for(var i=0; i<data.length; i++) {
|
var obj = data[i];
|
if(obj.fstate.num > 0){
|
var str = '';
|
var index = obj.fstate.dev_workstate;
|
// 内阻测试(工作状态为0, 内阻测试不为0)
|
if(obj.fstate.dev_workstate ==0 && obj.fstate.dev_res_test_state != 0) {
|
index = 3;
|
}
|
// 设置文本值
|
str = "状态:" + workStates[index]+
|
",告警:"+alarmStates[obj.fstate.dev_alarmstate]+
|
",组端电压(V):"+obj.fstate.dev_captest_groupvol+
|
",电流(A):"+obj.fstate.dev_captest_curr+
|
",容量(AH):"+obj.fstate.dev_captest_cap;
|
if(index == 3){
|
str = "状态:"+workStates[index]+
|
",组号:"+obj.fstate.dev_testgroupnum+
|
",当前单体编号:"+(obj.fstate.dev_restest_monindex+1)+
|
",被测单体总数:"+obj.fstate.dev_restest_moncount;
|
}
|
var temp = {
|
devStatus: str // 设备状态
|
,testTime: formatSeconds(obj.fstate.dev_captest_timelong) // 测试时长
|
,signalNum: obj.fstate.dev_commcount
|
}
|
layuiTbl.updateTr(i, temp);
|
}
|
}
|
}
|
updateDevStatus.timer = setTimeout(updateDevStatus, 4000);
|
},
|
});
|
}
|
}
|
|
|
// 获取设备实时状态的参数
|
function updateDevStatus() {
|
var battIdList = updateDevStatusRq(); // 获取电池id列表
|
// 判断如果battIdList长度为0不执行请求后台
|
if(battIdList.length == 0) {
|
return;
|
}
|
clearInterval(updateDevStatus.timer);
|
// 请求后台
|
$.ajax({
|
type: 'post'
|
,async:true
|
,url: 'Fbs9100_stateAction_action_freshenDischarge'
|
,data: 'json='+JSON.stringify(battIdList)
|
,dataType: 'json'
|
,success: function(res) {
|
var rs = JSON.parse(res.result);
|
//console.log(rs);
|
// 如果有查询结果
|
if(rs.code == 1) {
|
var data = rs.data;
|
layuiTbl.getCache(table.cache["pageTbl"]);
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
_data = _data[0];
|
var str = ''; // 设备工作状态
|
var index = _data.dev_workstate; // 设备状态
|
|
// 内阻测试(工作状态为0, 内阻测试不为0)
|
if(_data.dev_workstate ==0 && _data.dev_res_test_state != 0) {
|
index = 3;
|
}
|
var monCap = _data.dev_captest_cap==0?_data.dev_captest_cap:_data.dev_captest_cap.toFixed(1);
|
// 设置设备状态字符串
|
str = "状态:" + workStates[index]+
|
",告警:"+alarmStates[_data.dev_alarmstate]+
|
",在线电压(V):"+_data.dev_captest_onlinevol+
|
",电流(A):"+_data.dev_captest_curr+
|
",容量(AH):"+monCap;
|
// 设置设备内阻测试的字符串
|
if(index == 3){
|
str = "状态:"+workStates[index]+
|
",组号:"+_data.dev_testgroupnum+
|
",当前单体编号:"+(_data.dev_restest_monindex+1)+
|
",被测单体总数:"+_data.dev_restest_moncount;
|
}
|
// 构造更新表格数据对象
|
var temp = {
|
devStatus: str // 设备状态
|
,testTime: formatSeconds(_data.dev_captest_timelong) // 测试时长
|
,signalNum: _data.dev_commcount
|
}
|
|
// 更新表格
|
layuiTbl.updateTr(i, temp);
|
}
|
}
|
}
|
,complete: function() {
|
// 轮询查看内容
|
updateDevStatus.timer = setTimeout(updateDevStatus, 4000);
|
}
|
});
|
|
|
}
|
|
// 构造查询设备实时状态的参数
|
function updateDevStatusRq() {
|
var data = tOptions.data;
|
var rs = [];
|
// 遍历data的值构造对象
|
for(var i=0; i<data.length; i++) {
|
var _data = data[i];
|
var tmp = {
|
BattGroupId: _data.BattGroupId
|
};
|
|
rs.push(tmp);
|
}
|
|
return rs;
|
}
|
|
// 获取筛选条件的字符串
|
function getFilterStr(data) {
|
var rsString = '';
|
rsString += data.StationName;
|
rsString += '-'+data.MonVolStd+'V设备';
|
rsString += '-'+(data.GroupIndexInFBSDevice == '0'?'电池组1': '电池组2');
|
return rsString;
|
}
|
|
});
|
</script>
|
</body>
|
</html>
|