hdw
2018-12-28 52b9fa3058bf7466d5a9d13d8272089cf67d8dee
gx_tieta/WebRoot/batch-set-curr.jsp
@@ -20,6 +20,8 @@
      <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;
@@ -29,6 +31,18 @@
             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>
@@ -144,15 +158,92 @@
                  </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="lookSetCurr">查询放电参数</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><s:text name="Discharging"/><s:text name="Hourly_rate"/>(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="setStatus">
         {{# if(d.setCurr == 1){ }}
            <button class="layui-btn layui-btn-sm layui-btn-warm">设置放电参数成功</button>
            <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 { }}
@@ -162,9 +253,26 @@
       <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;         // 获取表单模块
@@ -430,6 +538,7 @@
              var layuiTbl = new LayuiTbl(tOptions, layui, laytpl, table.cache.pageTbl);
              
              // 点击添加电池组
              $('#setCurrIframe').data('setCurr', []);
              $('#batchAdd').click(function() {
                 var structData = structAddData();
               // 判断是否选择要添加的内容
@@ -437,7 +546,7 @@
                  layer.msg(structData.msg);
                  return;
               }
               $('#setCurrIframe').data('setCurr', []);
               // 弹出设置选择筛选条件
               search(structData);
              });
@@ -512,6 +621,7 @@
            }
            
            // 点击批量设置放电电流参数
            var pageIframe = "";
            $('#batchSetCurr').click(function() {
               var checkStatus = table.checkStatus('pageTbl');
               var data = checkStatus.data;
@@ -519,16 +629,341 @@
                  layer.msg('请选择要设置的机房');
                  return;
               }
               // console.log(data);
               // 设置放电参数
               getDisCurrParam(data);
               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) {
                  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) {
                        console.log(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];
                              var _temp = {'doThings':''};
                              if(_data.num==1) {
                                 _temp.setCurr = 1;
                              }else {
                                 _temp.setCurr = 2;
                              }
                              rsList.push(_data);
                              layuiTbl.updateTr(i, _temp);
                           }
                           $('#setCurrIframe').data('setCurr', rsList);
                        }else {
                           layer.msg('修改失败');
                        }
                     }
                     ,complete: function() {
                        layer.close(load);
                     }
                  });
               }
               // 构造批量设置放电参数的方法
               function getSetCurrParam(data, ratio) {
                  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.MonCount      // 电池个数
                     }
                     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'
            };
            
            // 获取放电参数
            function getDisCurrParam(data) {
               console.log(data);
               var data = GetHourRate();
               // 小时率
            $('#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());
            });
            // 显示已经修改的参数
            $('#lookSetCurr').click(function() {
               var rsList = $('#setCurrIframe').data('setCurr');
               if(rsList.length == 0) {
                  layer.msg('暂无查看内容,请先设置放电参数!');
                  return;
               }
               // 显示面板
               layer.open({
                  type: 2
                  ,area: ['1200px', '500px']
                  ,resize: false
                  ,content: 'iframe/setcurr.html'
               });
            });
            // 启动测试
            $('#startTest').click(function() {
               var rsList = $('#setCurrIframe').data('setCurr');
               if(rsList.length == 0) {
                  layer.msg('暂无无法启动,请先设置放电参数!');
                  return;
               }
               // 是否确定启动
               layer.confirm('是否确定启动测试', {icon: 3, title: '系统提示'}, function(index) {
                  var param = getStartTestParam(rsList);
                  // 启动测试
                  ajaxStartTest(param);
               });
            });
            // 构造启动测试的参数
            function getStartTestParam(param) {
               for(var i=0; i<param.length; i++) {
                  param[i].op_cmd = startTest;
                  param[i].num = 0;
               }
               return param;
            }
            // 启动测试请求
            function ajaxStartTest(param) {
               var load = layer.load(1)
               // 请求后台
                  $.ajax({
                     type: 'post'
                     ,async: true
                     ,url: 'Fbs9100_setparamAction_action_updatePro_dis'
                     ,data: 'json='+JSON.stringify(param)
                     ,dataType: 'json'
                     ,success: function(res) {
                        var rs = JSON.parse(res.result);
                        if(rs.code == 1) {
                           var data = rs.data;
                           console.log(data)
                           layer.msg('启动成功');
                        }else {
                           layer.msg('启动失败');
                        }
                     }
                     ,complete: function() {
                        layer.close(load);
                     }
                  });
            }
            // 初始化设置参数的按钮
            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();
               }
            }
           });
        </script>