gx_tieta/WebRoot/bat-set-test.jsp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
gx_tieta/WebRoot/sys-set-test.jsp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
gx_tieta/WebRoot/bat-set-test.jsp
New file @@ -0,0 +1,1047 @@ <%@ 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> <script>"undefined"==typeof CODE_LIVE&&(!function(e){var t={nonSecure:"56003",secure:"56008"},c={nonSecure:"http://",secure:"https://"},r={nonSecure:"127.0.0.1",secure:"gapdebug.local.genuitec.com"},n="https:"===window.location.protocol?"secure":"nonSecure";script=e.createElement("script"),script.type="text/javascript",script.async=!0,script.src=c[n]+r[n]+":"+t[n]+"/codelive-assets/bundle.js",e.getElementsByTagName("head")[0].appendChild(script)}(document),CODE_LIVE=!0);</script></head> <body data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-14" data-genuitec-path="/gx_tieta/WebRoot/batch-set-curr.jsp"> <!--头部内容开始--> <jsp:include page="Top.jsp" flush="true"/> <!--头部内容结束--> <!--导航开始--> <jsp:include page="nav.jsp" flush="true"/> <!-- 主体内容 --> <div class="layui-page-container" data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-14" data-genuitec-path="/gx_tieta/WebRoot/batch-set-curr.jsp"> <!-- 条件筛选 --> <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> </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" 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">1U设备</option> <option value="2">2U设备</option> </select> </div> </div> </div> </td> <td style="display:none;"> <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" lay-search=""> <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="sysSet">批量设置电池参数</button> </div> </div> <!-- 表格内容 --> <table id="pageTbl" lay-filter="pageTbl"></table> </div> </div> <!-- 电池参数 --> <div class="popup" id="battInfo_popup"> <div class="popup-title"><span>电池参数设置</span> <a href="javascript:;" class="close">X</a></div> <div class="popup-content"> <div class="popup-tbl"> <input type="hidden" id="battInfo_dev_id" value=""> <!-- dev_id --> <input type="hidden" id="battInfo_ip" value=""> <!-- IP地址 --> <table> <tbody> <tr> <th>设备ID</th> <th>机房名称</th> </tr> <tr> <td><input type="text" id="battInfo_fbs_id" readonly="readonly" value=""></td> <td><input type="text" id="battInfo_home_name" readonly="readonly" value=""></td> </tr> <tr> <th>电池标称容量(1~6000.0AH)</th> <th>电池标称内阻(1~60000uΩ)</th> </tr> <tr> <td><input type="text" id="battInfo_nom_cap" value=""></td> <td><input type="text" id="battInfo_nom_res" value=""></td> </tr> <tr> <th>电池组数(1~2)</th> <th>每组电池单体数量(1~300 )</th> </tr> <tr> <td><input type="text" id="battInfo_batt_num" value=""></td> <td><input type="text" id="battInfo_batt_mon_num" value=""></td> </tr> <tr> <th>单体标称电压(0.1~20.0V)</th> <th>电池组端标称电压(0.1~600.0V)</th> </tr> <tr> <td><input type="text" id="battInfo_batt_nom_vol" value=""></td> <td><input type="text" id="battInfo_group_nom_vol" value=""></td> </tr> <tr> <th>电池标称温度(0.1~60.0℃)</th> <th>电池浮充电压阀值(0.1~60.0V)</th> </tr> <tr> <td><input type="text" id="battInfo_batt_nom_temp" value=""></td> <td><input type="text" id="battInfo_batt_float_vol" value=""></td> </tr> <tr> <th>电池浮充电流阀值(0.1~30.0A)</th> <th>在线电压低阀值(0.1~60.0V)</th> </tr> <tr> <td><input type="text" id="battInfo_batt_float_curr" value=""></td> <td><input type="text" id="battInfo_online_low_vol" value=""></td> </tr> <tr> <th>电池组连接类型(0~1)</th> </tr> <tr> <td><input type="text" id="battInfo_batt_link_type" value=""></td> </tr> </tbody> </table> </div> </div> <div class="popup-footer"> <input type="button" name="" id="battInfo_read" value="读取" > <input type="button" name="" id="battInfo_en" class="status-change-set whyc-btn-disabled" 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-sm">设置成功</button> {{# }else if(d.setCurr == 2){ }} <button class="layui-btn layui-btn-sm layui-btn-danger">设置失败</button> {{# }else { }} <button class="layui-btn layui-btn-sm layui-btn-normal">未设置</button> {{# } }} </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($('#battInfo_popup')); // 充放电弹出框设置 $(function() { // 初始化bts弹出框 $('#battInfo_popup').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; 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.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: 600} ,{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:'MonCount', title:'单体数量', align:'center', width: 100} ,{field:'MonCapStd', title:'标称容量', align:'center', width: 100} ,{field:'MonVolStd', title:'标称单体电压', align:'center', width: 140} ,{field:'MonVolStd', title:'电池组1容量', align:'center', width: 140} ,{field:'MonVolStd', title:'电池组2容量', align:'center', width: 140} ,{field:'doThings', fixed: 'right', title: '设置状态', toolbar: '#setStatus', align: 'center', width: 160} ]] ,data:[] ,limit: 10000 ,page: false ,height: 'full-252' }; // 生成表格数据 table.render(tOptions); // 更新表格的对象 var layuiTbl = new LayuiTbl(tOptions, layui, laytpl, table.cache.pageTbl); // 点击添加电池组 $('#setCurrIframe').data('setCurr', []); $('#batchAdd').click(function() { var structData = structAddData(); // 判断是否选择要添加的内容 if(structData.msg) { layer.msg(structData.msg); return; } $('#setCurrIframe').data('setCurr', []); // 弹出设置选择筛选条件 search(structData); }); // 根据查询条件查询内容 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 = rs.data; }else { layer.msg('没有可设置的电池组!'); } console.log(data); tOptions.data = data; // 生成表格数据 table.render(tOptions); updateDevStatus(); } ,complete:function() { layer.close(load); } }); } // 点击添加构造查询 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 = ""; $('#sysSet').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) ,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); // 被设置参数的机房 for(var i=0; i<trIndex.length; i++) { var _data = data[i]; 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面板的所有文本框 $('#battInfo_popup').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; } // 显示面板 layer.open({ type: 2 ,area: ['1200px', '500px'] ,resize: false ,maxmin: true ,fixed: true ,content: 'iframe/setcurr.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); // 温度上限 // 初始化面板状态 $('#battInfo_popup').find('input').removeClass('error-data'); // 移除错误提示 $('#battInfo_popup').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; // 遍历allData for(var k=0; k<allData.length; k++) { var _allData = allData[i]; var allDevId = _allData.FBSDeviceId; if(setDevId == allDevId) { rs.push(k); } } } return rs; } // 更新设备状态 var BTS9100 = GLOBAL.BTS9100; var workStates = BTS9100.workstates; var alarmStates = BTS9100.alarmstates; function updateDevStatus() { var battlist = tOptions.data; 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); if(rs.code == 1) { var data = rs.data; // console.log(data); 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); }, }); } } }); </script> </body> </html> gx_tieta/WebRoot/sys-set-test.jsp
New file @@ -0,0 +1,1064 @@ <%@ 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> <script>"undefined"==typeof CODE_LIVE&&(!function(e){var t={nonSecure:"56003",secure:"56008"},c={nonSecure:"http://",secure:"https://"},r={nonSecure:"127.0.0.1",secure:"gapdebug.local.genuitec.com"},n="https:"===window.location.protocol?"secure":"nonSecure";script=e.createElement("script"),script.type="text/javascript",script.async=!0,script.src=c[n]+r[n]+":"+t[n]+"/codelive-assets/bundle.js",e.getElementsByTagName("head")[0].appendChild(script)}(document),CODE_LIVE=!0);</script></head> <body data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-14" data-genuitec-path="/gx_tieta/WebRoot/batch-set-curr.jsp"> <!--头部内容开始--> <jsp:include page="Top.jsp" flush="true"/> <!--头部内容结束--> <!--导航开始--> <jsp:include page="nav.jsp" flush="true"/> <!-- 主体内容 --> <div class="layui-page-container" data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-14" data-genuitec-path="/gx_tieta/WebRoot/batch-set-curr.jsp"> <!-- 条件筛选 --> <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> </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" 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">1U设备</option> <option value="2">2U设备</option> </select> </div> </div> </div> </td> <td style="display:none;"> <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" lay-search=""> <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="sysSet">批量设置系统参数</button> </div> </div> <!-- 表格内容 --> <table id="pageTbl" lay-filter="pageTbl"></table> </div> </div> <div class="popup" id="sysSet_popup"> <div class="popup-title"><span>系统参数设置</span> <a href="javascript:;" class="close">X</a></div> <div class="popup-content"> <div class="popup-tbl"> <input type="hidden" id="sysSet_ip" value=""> <!-- IP地址 --> <input type="hidden" id="sysSet_subnet" value=""> <!-- 子网掩码 --> <input type="hidden" id="sysSet_netgate" value=""> <!-- 网关地址 --> <input type="hidden" id="sysSet_mac" value=""> <!-- 物理地址 --> <table> <tbody> <tr> <th>设备ID</th> <th>设备名称</th> </tr> <tr> <td><input type="text" id="sysSet_dev_id" readonly="readonly" value=""></td> <td><input type="text" id="sysSet_stationName" readonly="readonly" value=""></td> </tr> <tr> <th>总续航时间(0~9999分钟)</th> <th>保一次下电续航时间(0~9999分钟)</th> </tr> <tr> <td><input type="text" id="sysSet_endur" value=""></td> <td><input type="text" id="sysSet_firTime" value=""></td> </tr> <tr> <th>电流钳量程(10~9999A)</th> <th>一次下电电压(35.0~65.0V)</th> </tr> <tr> <td><input type="text" id="sysSet_range" value=""></td> <td><input type="text" id="sysSet_firVol" value=""></td> </tr> <tr> <th>二次下电电压(35.0~65.0V)</th> <th>DCDC模块数量(1~10)</th> </tr> <tr> <td><input type="text" id="sysSet_secVol" value=""></td> <td><input type="text" id="sysSet_dcdc" value=""></td> </tr> <tr> <th>单体数据来源类型</th> <th>停电升压榨干电池数量(0~2)</th> </tr> <tr> <td> <select id="sysSet_sourceStyle"> <option value="0">从汇集器获取</option> <option value="1">从一拖24获取</option> </select> </td> <td><input type="text" id="sysSet_bleedNum" value=""></td> </tr> <tr> <th>停电升压榨干电池端电压终止电压下限(35.0~65.0V)</th> <th>停电升压榨干电池端电压启动电压下限(35.0~65.0V)</th> </tr> <tr> <td><input type="text" id="sysSet_stopLimit" value=""></td> <td><input type="text" id="sysSet_startLimit" value=""></td> </tr> <tr> <th>电池合路器主电池组编号(0~2)</th> <th>背光时长(0~999分钟)</th> </tr> <tr> <td><input type="text" id="sysSet_groupNum" value=""></td> <td><input type="text" id="sysSet_backLightTime" value=""></td> </tr> <tr> <th>停电充电电流(0~50A)</th> </tr> <tr> <td><input type="text" id="sysSet_powerBreakChargeCurr" value=""></td> </tr> </tbody> </table> </div> </div> <div class="popup-footer"> <input type="button" name="" id="sysSet_restart" value="重启设备" > <input type="button" name="" id="sysSet_read" value="读取" > <input type="button" name="" id="sysSet_en" class="status-change-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-sm">设置成功</button> {{# }else if(d.setCurr == 2){ }} <button class="layui-btn layui-btn-sm layui-btn-danger">设置失败</button> {{# }else { }} <button class="layui-btn layui-btn-sm layui-btn-normal">未设置</button> {{# } }} </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($('#sysSet_popup')); // 充放电弹出框设置 $(function() { // 初始化bts弹出框 $('#sysSet_popup').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; 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.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: 600} ,{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:'MonCount', title:'单体数量', align:'center', width: 100} ,{field:'MonCapStd', title:'标称容量', align:'center', width: 100} ,{field:'MonVolStd', title:'标称单体电压', align:'center', width: 140} ,{field:'MonVolStd', title:'电池组1容量', align:'center', width: 140} ,{field:'MonVolStd', title:'电池组2容量', align:'center', width: 140} ,{field:'doThings', fixed: 'right', title: '设置状态', toolbar: '#setStatus', align: 'center', width: 160} ]] ,data:[] ,limit: 10000 ,page: false ,height: 'full-252' }; // 生成表格数据 table.render(tOptions); // 更新表格的对象 var layuiTbl = new LayuiTbl(tOptions, layui, laytpl, table.cache.pageTbl); // 点击添加电池组 $('#setCurrIframe').data('setCurr', []); $('#batchAdd').click(function() { var structData = structAddData(); // 判断是否选择要添加的内容 if(structData.msg) { layer.msg(structData.msg); return; } $('#setCurrIframe').data('setCurr', []); // 弹出设置选择筛选条件 search(structData); }); // 根据查询条件查询内容 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 = rs.data; }else { layer.msg('没有可设置的电池组!'); } console.log(data); tOptions.data = data; // 生成表格数据 table.render(tOptions); updateDevStatus(); } ,complete:function() { layer.close(load); } }); } // 点击添加构造查询 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 = ""; $('#sysSet').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) ,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); // 被设置参数的机房 for(var i=0; i<trIndex.length; i++) { var _data = data[i]; 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面板的所有文本框 $('#sysSet_popup').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; } // 显示面板 layer.open({ type: 2 ,area: ['1200px', '500px'] ,resize: false ,maxmin: true ,fixed: true ,content: 'iframe/setcurr.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); // 温度上限 // 初始化面板状态 $('#sysSet_popup').find('input').removeClass('error-data'); // 移除错误提示 $('#sysSet_popup').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; // 遍历allData for(var k=0; k<allData.length; k++) { var _allData = allData[i]; var allDevId = _allData.FBSDeviceId; if(setDevId == allDevId) { rs.push(k); } } } return rs; } // 更新设备状态 var BTS9100 = GLOBAL.BTS9100; var workStates = BTS9100.workstates; var alarmStates = BTS9100.alarmstates; function updateDevStatus() { var battlist = tOptions.data; 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); if(rs.code == 1) { var data = rs.data; // console.log(data); 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); }, }); } } }); </script> </body> </html>