| | |
| | | <td>区/县</td> <!-- 市 -->
|
| | | <td><s:text name="Computer_name"/></td> <!-- 机房名称 -->
|
| | | <td>系统类型</td>
|
| | | |
| | | </tr>
|
| | | <tr>
|
| | | <td>
|
| | |
| | | </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>
|
| | | |
| | | <button class="layui-btn layui-btn-sm" id="batchRead">批量读取电池参数</button>
|
| | | </div>
|
| | | </div>
|
| | | <!-- 表格内容 -->
|
| | |
| | | {{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>
|
| | | <!-- STD_CAP -->
|
| | |
| | | <span style="color: #FF0000;">{{ d.OnlineVolLow }}</span>
|
| | | {{# } }}
|
| | | </script>
|
| | | |
| | | <!-- 操作栏 -->
|
| | | <script type="text/html" id="doThings">
|
| | | <button class="layui-btn layui-btn-sm layui-btn-normal" lay-event="read">读取</button>
|
| | | </script>
|
| | | <!-- 读取状态 -->
|
| | | <script type="text/html" id="readStatus">
|
| | | {{# if(d.readStatus == 1){ }}
|
| | | <button class="layui-btn layui-btn-sm layui-btn-normal">读取成功</button>
|
| | | {{# }else { }}
|
| | | <button class="layui-btn layui-btn-sm layui-btn-danger">读取失败</button>
|
| | | {{# } }}
|
| | | </script>
|
| | | <!-- 设置状态 -->
|
| | | <script type="text/html" id="setStatus">
|
| | | {{# if(d.setStatus == 1){ }}
|
| | | <button class="layui-btn layui-btn-sm layui-btn-normal">设置成功</button>
|
| | | {{# }else if(d.setStatus == 2) { }}
|
| | | <button class="layui-btn layui-btn-sm layui-btn-danger">设置失败</button>
|
| | | {{# }else { }}
|
| | | <button class="layui-btn layui-btn-sm layui-btn-disabled">未设置</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>
|
| | |
| | | {type:'checkbox',fixed: 'left'}
|
| | | ,{field:'dev_id', title:'设备ID', align:'center', width: 160}
|
| | | ,{field:'StationName', title:'机房名称', align:'center', width: 470}
|
| | | ,{field:'readStatus', title:'读取状态', templet: '#readStatus', align:'center', width: 120}
|
| | | ,{field:'setStatus', title:'设置状态', templet: '#setStatus', align:'center', width: 120} |
| | | ,{field:'STD_CAP', title:'电池标称容量(AH)<i class="fa fa-refresh" title="同步电池标称容量参数"></i>', templet: '#STD_CAP', align:'center', width: 220}
|
| | | ,{field:'STD_RES', title:'电池标称内阻(uΩ)<i class="fa fa-refresh" title="同步电池标称内阻参数"></i>', templet: '#STD_RES', align:'center', width: 220}
|
| | | ,{field:'BattGroupCount', title:'电池组组数 <i class="fa fa-refresh" title="同步电池组组数参数"></i>', templet: '#BattGroupCount', align:'center', width: 180}
|
| | | ,{field:'EachGroupBattCount', title:'每组电池单体数量 <i class="fa fa-refresh" title="同步每组电池单体数量参数"></i>', templet: '#EachGroupBattCount', align:'center', width: 220}
|
| | | ,{field:'MonomerVol', title:'单体标称电压(V) <i class="fa fa-refresh" title="同步单体标称电压参数"></i>', templet: '#MonomerVol', align:'center', width: 220}
|
| | | ,{field:'StationName9', title:'设备版本号', align:'center', width: 180}
|
| | | ,{field:'GroupVol', title:'电池组端标称电压(V) <i class="fa fa-refresh" title="同步电池组端标称电压参数"></i>', templet: '#GroupVol', align:'center', width: 220}
|
| | | ,{field:'GroupVol', title:'电池组端标称电压(V)', align:'center', width: 220}
|
| | | ,{field:'BattTemp', title:'电池标称温度(℃) <i class="fa fa-refresh" title="同步电池标称温度参数"></i>', templet: '#BattTemp', align:'center', width: 220}
|
| | | ,{field:'FloatChargeVol', title:'电池浮充电压阀值(V) <i class="fa fa-refresh" title="同步电池浮充电压阀值参数"></i>', templet: '#FloatChargeVol', align:'center', width: 220}
|
| | | ,{field:'FloatChargeCurr', title:'电池浮充电流阀值(A) <i class="fa fa-refresh" title="同步电池浮充电流阀值参数"></i>', templet: '#FloatChargeCurr', align:'center', width: 220}
|
| | | ,{field:'OnlineVolLow', title:'在线电压低阀值(V) <i class="fa fa-refresh" title="同步在线电压低阀值参数"></i>', templet: '#OnlineVolLow', align:'center', width: 220}
|
| | | ,{field:'GroupConnType', title:'电池组连接类型', templet: '#GroupConnType', align:'center', width: 220}
|
| | | ,{field:'doThings', fixed: 'right', title: '设置状态', toolbar: '#setStatus', align: 'center', width: 160} |
| | |
|
| | | ,{field:'doThings', fixed: 'right', title: '操作', toolbar: '#doThings', align: 'center', width: 120} |
| | | ]]
|
| | | ,data:[]
|
| | | ,limit: 10000
|
| | |
| | |
|
| | | }
|
| | |
|
| | | // 表格工具栏操作
|
| | | table.on('tool(pageTbl)', function(obj){
|
| | | var event = obj.event;
|
| | | switch(event) {
|
| | | case 'read': // 读取参数
|
| | | readBattParams(obj); |
| | | break;
|
| | | case 'del': // 删除
|
| | | delItem(obj);
|
| | | break;
|
| | | }
|
| | | });
|
| | | |
| | | // 电池参数的命名
|
| | | var battParam = GLOBAL.CMD.batt;
|
| | | // 读取单行放电参数
|
| | | function readBattParams(obj) {
|
| | | var data = getCheckedData([obj.data]);
|
| | | var keyIds= getKeyId([obj.data]);
|
| | | // 构造查询条件
|
| | | var tmp = {
|
| | | num: 0 // 默认为0
|
| | | ,dev_id: data[0].dev_id // 设备id
|
| | | ,op_cmd: battParam.get // 电池参数获取命令
|
| | | };
|
| | | |
| | | // 请求读取参数
|
| | | ajaxReadBattParams([tmp], keyIds);
|
| | | }
|
| | | |
| | | // 点击批量读取按钮
|
| | | $('#batchRead').click(function() {
|
| | | var checkStatus = table.checkStatus('pageTbl'); //idTest 即为基础参数 id 对应的值
|
| | | var cData = checkStatus.data;
|
| | | if(cData.length == 0) {
|
| | | layer.msg('请选择要读取的机房!');
|
| | | return;
|
| | | }
|
| | | |
| | | // 请求后台
|
| | | batchReadBattParams(cData);
|
| | | });
|
| | | |
| | | // 批量读取参数
|
| | | function batchReadBattParams(cData) {
|
| | | var data = getCheckedData(cData);
|
| | | var keyIds= getKeyId(cData);
|
| | | var tmps = [];
|
| | | // 遍历data的值,构造查询条件
|
| | | for(var i=0; i<data.length; i++) {
|
| | | var _data = data[i];
|
| | | var tmp = {
|
| | | num: 0 // 默认为0
|
| | | ,dev_id: _data.dev_id // 设备id
|
| | | ,op_cmd: battParam.get // 电池参数获取命令
|
| | | };
|
| | | tmps.push(tmp);
|
| | | }
|
| | | |
| | | // 请求读取参数
|
| | | ajaxReadBattParams(tmps, keyIds);
|
| | | }
|
| | | |
| | | // 向后台发送请求读取参数
|
| | | function ajaxReadBattParams(params, keys) {
|
| | | var loading = layer.load(1);
|
| | | // 请求后台
|
| | | $.ajax({
|
| | | type: 'post'
|
| | | ,async: true
|
| | | ,url: 'Fbs9100_battparamAction_action_readPL'
|
| | | ,data: 'json='+JSON.stringify(params)
|
| | | ,dataType: 'json'
|
| | | ,success: function(res) {
|
| | | var rs = JSON.parse(res.result);
|
| | | // 判断是否有数据
|
| | | if(rs.code == 1) {
|
| | | var data = rs.data;
|
| | | formaterReadDatas(data, keys);
|
| | | }else {
|
| | | layer.msg('读取失败!请重新请求');
|
| | | }
|
| | | }
|
| | | ,error: function() {
|
| | | layer.msg('读取失败,请检查网络是否正常!')
|
| | | }
|
| | | ,complete: function() {
|
| | | layer.close(loading);
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | // 处理读取结果集并返回指定结果集
|
| | | function formaterReadDatas(data, keys) {
|
| | | var rs = [];
|
| | | // 遍历data的值
|
| | | for(var i=0; i<data.length; i++) {
|
| | | var _data = data[i];
|
| | | var _key_id = keys[i].key_id; // 获取标识位
|
| | | var _tmp = {};
|
| | | _tmp.key_id = _key_id; // 添加标识位
|
| | | |
| | | // 获取对应的tr的值
|
| | | var layuiData = layuiTbl.getTr('key_id', _key_id);
|
| | | |
| | | // 判断是否存在对应的表格数据
|
| | | if(layuiData.code == 1) {
|
| | | // 判断是否读取成功
|
| | | if(_data.num==1) {
|
| | | var obj = _data.obj[0];
|
| | | _tmp = contrastData(layuiData.data, _data.obj[0]);
|
| | | _tmp.setStatus = 0; // 设置参数状态初始化
|
| | | }else {
|
| | | _tmp.num = 0;
|
| | | _tmp.readStatus = 0;
|
| | | _tmp.setStatus = 0; // 设置参数状态初始化
|
| | | }
|
| | | |
| | | }else {
|
| | | console.log(layuiData.msg); // 输出读取失败原因
|
| | | _tmp.num = 0; |
| | | _tmp.readStatus = 0; // 读取失败
|
| | | _tmp.setStatus = 0; // 设置参数状态初始化
|
| | | }
|
| | | // 将数据添加到结果集中
|
| | | rs.push(_tmp);
|
| | | }
|
| | | // 更新表格
|
| | | layuiTbl.update('key_id', rs);
|
| | | }
|
| | | |
| | | // 对比表格数据和读取到的数据
|
| | | function contrastData(tData, rData) {
|
| | | var rs = {};
|
| | | // 遍历rData的值
|
| | | Object.keys(rData).forEach(function(key) {
|
| | | // 判断是否为num
|
| | | var _data = rData[key];
|
| | | rs.key_id = tData.key_id;
|
| | | if(key != 'num') {
|
| | | rs[key] = _data;
|
| | | // 获取其他辅助值
|
| | | var bKey = key+'_b';
|
| | | var boolKey = key+'_bool';
|
| | | var bVal = tData[bKey];
|
| | | if(bVal != undefined && bVal != _data) {
|
| | | rs[boolKey] = false;
|
| | | }
|
| | | } |
| | | });
|
| | | |
| | | return rs;
|
| | | }
|
| | | |
| | | // 删除表格的行
|
| | | function delItem(obj) {
|
| | | // 弹出是否删除面板
|
| | | layer.confirm('是否删除当前行', {icon: 2, title: '删除提示'}, function(index) {
|
| | | layer.close(index);
|
| | | layuiTbl.delTr(table.cache.pageTbl, obj); // 删除指定的行
|
| | | });
|
| | | }
|
| | | |
| | | // 批量设置电池参数的按钮
|
| | | $('#sysSet').click(function() {
|
| | | var checkStatus = table.checkStatus('pageTbl'); //idTest 即为基础参数 id 对应的值
|
| | | var cData = checkStatus.data;
|
| | | if(cData.length == 0) {
|
| | | layer.msg('请选择要批量设置的机房!');
|
| | | return;
|
| | | }
|
| | | |
| | | var data = getCheckedData(cData); // 格式化被选中行数据
|
| | | var keyIds= getKeyId(cData); // 获取标识符
|
| | | var rsData = [];
|
| | | for(var i=0; i<data.length; i++) {
|
| | | var _data = data[i];
|
| | | _data.op_cmd = battParam.set;
|
| | | _data.num = 0;
|
| | | rsData.push(_data);
|
| | | }
|
| | | |
| | | // 批量设置
|
| | | batchSetBattParams(rsData, keyIds);
|
| | | });
|
| | | |
| | | // 批量设置放电参数
|
| | | function batchSetBattParams(params, keys) {
|
| | | // 判断data的值是否为空
|
| | | if(params.length == 0) {
|
| | | layer.msg('请选择要批量设置的机房!');
|
| | | }
|
| | | // 判断是否批量设置
|
| | | layer.confirm('是否确认批量设置电池参数', {icon: 3, title: '批量设置提醒'}, function(index) {
|
| | | layer.close(index);
|
| | | var loading = layer.load(1);
|
| | | // 请求后台
|
| | | $.ajax({
|
| | | type: 'post'
|
| | | ,async: true
|
| | | ,url: 'Fbs9100_battparamAction_action_updatePro'
|
| | | ,data: 'json='+JSON.stringify(params)
|
| | | ,dataType: 'json'
|
| | | ,success: function(res) {
|
| | | var rs = JSON.parse(res.result);
|
| | | var rsData= [];
|
| | | if(rs.code == 1) {
|
| | | var data = rs.data;
|
| | | for(var i=0; i<data.length; i++) {
|
| | | var _data = data[i];
|
| | | var _key = keys[i];
|
| | | var _tmp = {
|
| | | key_id: _key.key_id
|
| | | };
|
| | | |
| | | // 判断是否设置成功
|
| | | if(_data.num == 1) {
|
| | | _tmp.setStatus = 1; // 设置成功
|
| | | }else {
|
| | | _tmp.setStatus = 2; // 设置失败
|
| | | }
|
| | | |
| | | rsData.push(_tmp);
|
| | | }
|
| | | }else {
|
| | | for(var i=0; i<keys.length; i++) {
|
| | | var _key = keys[i];
|
| | | var _tmp = {
|
| | | key_id: _key.key_id
|
| | | ,setStatus: 2
|
| | | };
|
| | | rsData.push(_tmp);
|
| | | }
|
| | | }
|
| | | |
| | | // 更新表格
|
| | | layuiTbl.update('key_id', rsData);
|
| | | }
|
| | | ,complete: function() {
|
| | | layer.close(loading);
|
| | | }
|
| | | });
|
| | | });
|
| | | }
|
| | |
|
| | |
|
| | | // 点击添加电池组
|
| | |
| | | ,dataType: 'json'
|
| | | ,success: function(res) {
|
| | | var rs = JSON.parse(res.result);
|
| | | console.log(rs);
|
| | | //console.log(rs);
|
| | | var data = [];
|
| | | if(rs.code == 1) {
|
| | | data = rs.data;
|
| | |
| | | layer.msg('没有可设置的电池组!');
|
| | | }
|
| | | tOptions.data = data;
|
| | | console.log(data);
|
| | | //console.log(data);
|
| | | // 生成表格数据
|
| | | table.render(tOptions);
|
| | | layuiTbl.setCache(table.cache.pageTbl);
|
| | | }
|
| | | ,complete:function() {
|
| | | layer.close(load);
|
| | |
| | |
|
| | | // 处理添加机房信息的结果
|
| | | function formatSearchData(data) {
|
| | | console.log(data);
|
| | | var rs = [];
|
| | | // 遍历data的
|
| | | for(var i=0; i<data.length; i++) {
|
| | |
| | | var obj = _data.obj[0];
|
| | | var tmp = {};
|
| | | tmp.num = _data.num; // 判断是否读取成功
|
| | | tmp.readStatus = _data.num;
|
| | | tmp.key_id = i;
|
| | | tmp.dev_id = obj.dev_id; // 设备ID
|
| | | tmp.dev_ip = obj.dev_ip; // 设备IP
|
| | | tmp.StationName = obj.StationName; // 机房名称
|
| | | tmp.GroupConnType = 0; // 电池组连接类型
|
| | | tmp.StationName9 = _data.StationName9; // 设备版本号
|
| | | |
| | | tmp.GroupVol = obj.GroupVol; // 电池组端标称电压(V)
|
| | |
|
| | | tmp.STD_CAP = obj.STD_CAP; // 电池标称容量(AH)
|
| | |
| | | function isNumEqual(num1, num2) {
|
| | | return num1==num2;
|
| | | }
|
| | | |
| | | // 获取被选中行的标识位
|
| | | function getKeyId(data) {
|
| | | var rs = [];
|
| | | // 遍历data的值
|
| | | for(var i=0; i<data.length; i++) {
|
| | | var _data = data[i];
|
| | | var tmp = {};
|
| | | tmp.key_id = _data.key_id;
|
| | | rs.push(tmp);
|
| | | }
|
| | | return rs;
|
| | | }
|
| | | |
| | | |
| | | // 获取被选中的行的数据并处理返回指定的对象数组
|
| | | function getCheckedData(data) {
|
| | | var rs = [];
|
| | | // 处理数据
|
| | | for(var i=0; i<data.length; i++) {
|
| | | var _data = data[i];
|
| | | var tmp = {};
|
| | | tmp.num = _data.num; // 判断是否读取成功
|
| | | tmp.dev_id = _data.dev_id; // 设备ID
|
| | | tmp.dev_ip = _data.dev_ip; // 设备IP
|
| | | tmp.StationName = _data.StationName; // 机房名称
|
| | | tmp.GroupConnType = 0; // 电池组连接类型
|
| | | tmp.StationName9 = _data.StationName9; // 设备版本号
|
| | | tmp.GroupVol = _data.GroupVol; // 电池组端标称电压(V)
|
| | | tmp.STD_CAP = _data.STD_CAP; // 电池标称容量(AH)
|
| | | tmp.STD_RES = _data.STD_RES; // 电池标称内阻(uΩ)
|
| | | tmp.BattGroupCount = _data.BattGroupCount; // 电池组组数
|
| | | tmp.EachGroupBattCount = _data.EachGroupBattCount; // 每组电池单体数量
|
| | | tmp.MonomerVol = _data.MonomerVol; // 单体标称电压(V)
|
| | | tmp.BattTemp = _data.BattTemp; // 电池标称温度(℃)
|
| | | tmp.FloatChargeVol = _data.FloatChargeVol; // 电池浮充电压阀值(V)
|
| | | tmp.FloatChargeCurr = _data.FloatChargeCurr; // 电池浮充电流阀值(A)
|
| | | tmp.OnlineVolLow = _data.OnlineVolLow; // 在线电压低阀值(V)
|
| | | // 将数据放到返回的结果集中
|
| | | rs.push(tmp);
|
| | | }
|
| | | return rs;
|
| | | }
|
| | | });
|
| | | </script>
|
| | | </body>
|