hdw
2018-11-29 1c6c2939c18a0dc3968ea04e398f6fb0ef3396f4
gx_tieta/WebRoot/batt-station-update1.jsp
@@ -380,10 +380,11 @@
                  ,{field:'stationid', title:'机房ID', align:'center'}
                  ,{field:'stationname', title:'机房名称', align:'center', width: 400}
                  ,{field:'fbsid', title:'设备ID', align:'center'}
                  ,{field:'fbsname', title:'设备名称', align:'center'}
                  ,{field:'updatestatus', title:'升级状态', align:'center'}
                  ,{field: 'version', title: '版本号', align: 'center'}
                  ,{field:'filename', title:'升级文件名', align:'center'}
                  ,{field:'status', title:'读写状态', align:'center'}
                  ,{field:'progress', title:'上传进度', align: 'center', templet:'#upProgress'}
                  ,{field:'progress', title:'读/写进度', align: 'center', templet:'#upProgress'}
                  ,{field:'datapackage', title:'当前数据包', align:'center'}
                  ,{fixed: 'right', title:'操作', align:'center', toolbar: '#barDemo', width:100}
                ]]
@@ -495,17 +496,19 @@
                          var formaterData = formaterAddData(rs.data, allData);      //解析数据
                          if(formaterData.length) {
                             // 遍历formaterData
                             //console.log(formaterData);
                             for(var i=0; i<formaterData.length; i++) {
                                var _formaterData = formaterData[i];
                                var tmp = {};
                                tmp.stationid = _formaterData.StationId;      // 机房id
                                tmp.stationname = _formaterData.StationName;   // 机房名称
                                tmp.fbsid = _formaterData.FBSDeviceId;         // 设备id
                                tmp.fbsname = _formaterData.FBSDeviceName;      // 设备名称
                                tmp.filename = getFnameByVer(_formaterData.StationIp);      // 升级文件名称
                                tmp.updatestatusnum = 0;                  // 0 等待升级
                                tmp.updatestatus = '等待升级';                  // 升级状态
                                tmp.status = '写';                        // 读写状态
                                tmp.datapackage = 1;                     // 当前数据包
                                tmp.version = _formaterData.StationIp;         // 版本号
                                tmp.isNewAdd = true;
                                //console.log(tmp);
                                allData.push(tmp);
@@ -622,12 +625,16 @@
                          status: [],
                          datapackage: []
                       };
                       //console.log(rs);
                       console.log(rs);
                       if(rs.code == 1 && rs.data.length>0){
                          var tblData = tOptions.data;
                          for(var i=0; i<rs.data.length; i++) {
                             var _data = rs.data[i];
                             var num = -1;
                             // 计算进度
                             var currentPer = getStrPercent(_data.dfu_data_blocknum, _data.dfu_data_blocklen, _data.dfu_file_len, _data.dfu_wr_stat);
                             updateTblPorgress(_data.dev_id, currentPer);
                             //console.log(currentPer);
                             // 遍历现有的tblData/根据表格的设别id对获取到值进行排序以便对应表格内容
                             for(var k=0; k<tblData.length;k++) {
                                var _tblData = tblData[k];
@@ -696,7 +703,7 @@
            }
            
            
            //验证设备是否允许设备进行远程升级
            // 验证设备是否允许设备进行远程升级
            function checkStationState(temp, all){
               $.ajax({    
                    type: "post",             
@@ -710,12 +717,12 @@
                       if(rs.code == 1) {
                          var data = rs.data;
                          var updateData = checkUpdating(data, all);
                          var errorUpdate = checkErrorUpdate(data, all);
                          $('#updateIframeData').data('update', updateData);            // 可更新的设备信息
                          $('#updateIframeData').data('errorUpdate', errorUpdate);   // 无法更新的设备信息
                          $('#updateIframeData').data('update', updateData.good);            // 可更新的设备信息
                          $('#updateIframeData').data('errorUpdate', updateData.bad);   // 无法更新的设备信息
                          
                          console.log(updateData);
                          // 判断是否有升级的设备
                          if(updateData.length == 0) {
                          if(updateData.good.length == 0) {
                             if(temp.length == 1) {
                                layer.msg('当前设备无法升级!');
                             }else {
@@ -735,18 +742,24 @@
                           content: 'iframe/batt-station-update.html',
                           btn: ['确认升级', '取消'],
                           yes: function(index, layero) {
                              var updateData = $('#updateIframeData').data('update');   // 获取可升级设备的信息
                              var goodUpdateData = $('#updateIframeData').data('update');   // 获取可升级设备的信息
                              // 根据可升级设备的信息构造查询条件
                              var updateList = [];
                              for(var i=0; i<updateData.length; i++) {
                              for(var i=0; i<goodUpdateData.length; i++) {
                                 var _data  = goodUpdateData[i];
                                 //var filename = getFnameByVer(_data.version);
                                 var _tmp = {
                                    dev_id: updateData[i].fbsid
                                    dev_id: _data.fbsid
                                    ,dfu_file: _data.filename
                                 };
                                 console.log(_data);
                                 // 添加到设备升级列表中
                                 updateList.push(_tmp);
                                 if(_data.filename && _data.filename.length != 0) {
                                    updateList.push(_tmp);
                                 }
                              }
                              //console.log(updateList);
                              // 关闭弹出面板
                              layer.close(index);
                              
@@ -771,34 +784,12 @@
            
            }
            
            // 从返回的可升级的设备中剔除正在升级的设备
            // 格式话升级的设备
            function checkUpdating(rsData, all) {
               var rs = [];
               // 遍历all
               for(var i=0; i<all.length; i++) {
                  var _all = all[i];
                  var isError = true;
                  for(var k=0; k<rsData.length; k++) {
                     var _rsData = rsData[k];
                     // 判断当前设备是否正在升级
                     if(_all.updatestatusnum == 1) {
                        isError = false;
                     }
                  }
                  // 根据isError判读是否是不可添加的机房
                  if(isError) {
                     rs.push(_all);
                  }
               }
               return rs;
            }
            // 获取无法升级的设备
            function checkErrorUpdate(rsData, all) {
               var rs = [];
               var rs = {
                  good: []
                  ,bad: []
               };
               // 遍历all
               for(var i=0; i<all.length; i++) {
                  var _all = all[i];
@@ -816,7 +807,9 @@
                  
                  // 根据isError判读是否是不可添加的机房
                  if(isError) {
                     rs.push(_all);
                     rs.bad.push(_all);
                  }else {
                     rs.good.push(_all);
                  }
               }
               
@@ -868,6 +861,8 @@
                             tmp.fbsid = _data.dev_id;               // 设备id
                             tmp.fbsname = _data.fBSDeviceName;         // 设备名称
                             tmp.updatestatusnum = 1;               // 0 等待升级 1正在升级
                             tmp.version = _data.note;               // 版本号
                             tmp.filename = _data.dfu_file;            // 升级文件名称
                             tmp.updatestatus = '升级中';               // 升级状态
                             tmp.status = _data.dfu_wr_stat == 1?'写':_data.dfu_wr_stat == 2?'读':_data.dfu_wr_stat == 3?'完成':'';                     // 读写状态
                             tmp.datapackage = _data.dfu_data_blocknum;                  // 当前数据包
@@ -878,11 +873,11 @@
                          
                          // 更新表格
                          table.render(tOptions);
                          renderTblPorgess(allData);
                       }
                    }
                });
            }
            
            // 渲染进度条
            function renderTblPorgess(tblData) {
@@ -895,6 +890,54 @@
               }
               
            }
            // 更新进度条
            function updateTblPorgress(fbsid, percent) {
               // 更新进度条
               element.progress('upload'+fbsid, percent);
            }
            // 计算进度
            function getStrPercent(current, blocklen, all, status) {
               var rs = '0%';
               if(all != 0) {
                  var num = Math.ceil(current*blocklen*100/all);
                  if(num>=100) {
                     num = status == 1?'写完成':'升级完成';
                  }
                  rs = num+'%';
               }
               return rs;
            }
            //console.log(getFnameByVer('D:8,V2.53.40'));
            // 更具版本号获取文件的名称
            function getFnameByVer(version) {
               var fileList = [
                  {
                     filename: 'avr_dfu.uc3'
                     ,pattern: /^.*\.24\.[0-9]*$/
                  }
                  ,{
                     filename: 'E51_DFU.SM5'
                     ,pattern: /^.*\.53\.[0-9]*$/
                  }
               ];
               // 遍历并获取filename
               var filename = undefined;
               for(var i=0; i<fileList.length; i++) {
                  var _fileList = fileList[i];
                  if(_fileList.pattern.test(version)) {
                     filename = _fileList.filename;
                  }
               }
               return filename;
            }
           });
        </script>
    </body>