From 2fe250ece8de95b3f70172fe5b45793ab6a3084a Mon Sep 17 00:00:00 2001
From: D:/workspace/chenjingjing/git/gx_tieta/gx_tieta/.gitignore <chenjingjing@LAPTOP-E51P2139>
Date: 星期五, 18 一月 2019 17:30:50 +0800
Subject: [PATCH] 未审批可更改

---
 gx_tieta/WebRoot/batt-station-update1.jsp |  266 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 210 insertions(+), 56 deletions(-)

diff --git a/gx_tieta/WebRoot/batt-station-update1.jsp b/gx_tieta/WebRoot/batt-station-update1.jsp
index da68f44..a2d5656 100644
--- a/gx_tieta/WebRoot/batt-station-update1.jsp
+++ b/gx_tieta/WebRoot/batt-station-update1.jsp
@@ -15,7 +15,7 @@
 		<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>
+	    <title>BTS璁惧鍗囩骇</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">
@@ -130,7 +130,14 @@
         <!-- 鏁翠綋鐏拌壊閬僵灞� -->
 	    <div id="allShade"></div>
 	    <script type="text/html" id="barDemo">
-			<a class="layui-btn layui-btn-xs" lay-event="update">鍗囩骇</a>
+			{{# if(d.updatestatusnum != 1){ }}
+				<a class="layui-btn layui-btn-xs" lay-event="update">鍗囩骇</a>
+			{{# } }}
+		</script>
+		<script type="text/html" id="upProgress">
+			<div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="upload{{d.fbsid}}" style="margin-top:6px">
+  				<div class="layui-progress-bar" lay-percent="0%"></div>
+			</div>
 		</script>
 	    <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 	    <script type="text/javascript" src="js/echarts.js"></script>
@@ -143,6 +150,28 @@
         		var table = layui.table;		// 鑾峰彇琛ㄦ牸妯″潡
         		var form = layui.form;			// 鑾峰彇琛ㄥ崟妯″潡
         		var layer = layui.layer;		// 鑾峰彇寮瑰嚭妗嗘ā鍧�
+        		var element = layui.element;	// 鑾峰彇鍏冪礌鎿嶄綔妯″潡
+        		
+        		// 璁剧疆妫�娴嬫枃浠跺悕寮瑰嚭妗嗙殑content
+        		var cFilenameContent = '<div style="width:300px; height: 110px;"><div style="margin-top: 20px;margin-left: 8px; margin-right: 8px; text-algin: center;">'+
+										'<span>閫夋嫨鏂囦欢鍚嶏細</span>'+
+										'<select id="equipeTypeSel" style="width: 200px;height: 26px; border: 1px solid #ccc">'+
+											'<option value="avr_dfu.uc3">avr_dfu.uc3</option>'+
+											'<option value="E51_DFU.SM5">E51_DFU.SM5</option>'+
+										'</select><br><br>'+
+										'<span>绯�&nbsp;缁�&nbsp;绫�&nbsp;鍨嬶細</span>'+
+										'<select id="sysType" style="width: 200px;height: 26px; border: 1px solid #ccc">'+
+											'<option value="12">1U</option>'+
+											'<option value="2">2U</option>'+
+										'</select><br><br>'+
+										'<span>杈撳叆鐗堟湰鍙凤細</span>'+
+										'<input type="text" id="newestVer" style="width: 200px;height: 24px; border: 1px solid #ccc">'+
+									'</div></div>';
+									
+				var cVerContent = '<div style="width:300px; height: 50px;"><div style="margin-top: 20px;margin-left: 8px; margin-right: 8px; text-algin: center;">'+
+										'<span>杈撳叆鐗堟湰鍙凤細</span>'+
+										'<input type="text" id="newestVer" style="width: 200px;height: 24px; border: 1px solid #ccc">'+
+									'</div></div>';
         		
 				var isNewLoad = true;
 				var pre_province = getQueryString('province');
@@ -372,9 +401,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:'datapackage', title:'褰撳墠鏁版嵁鍖�', align:'center'}
 						,{fixed: 'right', title:'鎿嶄綔', align:'center', toolbar: '#barDemo', width:100}
 				    ]]
@@ -404,8 +435,26 @@
 						updateList.push(data[i].fbsid);
 					}
 					
+					// 鎵撳紑闈㈡澘璁剧疆鍗囩骇璁惧埆鐨勭被鍨�
+					layer.open({
+						type: 1
+						,title: '鍗囩骇鏂囦欢鍚�/鐗堟湰鍙�'
+						,content: cFilenameContent
+						,fixed: true
+						,resize: false
+						,btn:['璁剧疆', '鍙栨秷']
+						,yes: function(index) {
+							var filename = $('#equipeTypeSel').val();
+							var newestVer = $('#newestVer').val();
+							var sysType = $('#sysType').val();
+							
+							// 鏍¢獙瑕佹洿鏂扮殑璁惧
+							checkStationState(updateList, data, filename, newestVer, sysType);
+							layer.close(index);
+						}
+					});
 					// 鏍¢獙瑕佹洿鏂扮殑璁惧
-					checkStationState(updateList, data);
+					// checkStationState(updateList, data);
 				});
 				
 				// 鐐瑰嚮琛ㄦ牸鐨則oolbar
@@ -428,8 +477,24 @@
 					var updateList = [data.fbsid];
 					var allData = [data];
 					
-					// 鏍¢獙瑕佹洿鏂扮殑璁惧
-					checkStationState(updateList, allData);
+					// 鎵撳紑闈㈡澘璁剧疆鍗囩骇璁惧埆鐨勭被鍨�
+					layer.open({
+						type: 1
+						,title: '鍗囩骇鏂囦欢鍚�/鐗堟湰鍙�'
+						,content: cFilenameContent
+						,fixed: true
+						,resize: false
+						,btn:['璁剧疆', '鍙栨秷']
+						,yes: function(index) {
+							var newestVer = $('#newestVer').val();
+							var sysType = $('#sysType').val();
+							// 鏍¢獙瑕佹洿鏂扮殑璁惧
+							checkStationState(updateList, allData, data.filename, newestVer, sysType);
+							layer.close(index);
+						}
+					});
+					
+					
 				}
 				
 				// 鐐瑰嚮娣诲姞鐢熸垚琛ㄦ牸
@@ -486,17 +551,19 @@
 				        		var formaterData = formaterAddData(rs.data, allData);		//瑙f瀽鏁版嵁
 				        		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);
@@ -504,6 +571,7 @@
 				        			
 				        			// 鐢熸垚琛ㄦ牸鏁版嵁
 									table.render(tOptions);
+									renderTblPorgess(allData);
 				        		}else {
 				        			layer.msg('娌℃湁瑕佹坊鍔犵殑鍐呭锛�');
 				        		}
@@ -618,14 +686,17 @@
 				        		for(var i=0; i<rs.data.length; i++) {
 				        			var _data = rs.data[i];
 				        			var num = -1;
-				        			// 閬嶅巻鐜版湁鐨則blData
+				        			// 璁$畻杩涘害
+				        			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);
+				        			// 閬嶅巻鐜版湁鐨則blData/鏍规嵁琛ㄦ牸鐨勮鍒玦d瀵硅幏鍙栧埌鍊艰繘琛屾帓搴忎互渚垮搴旇〃鏍煎唴瀹�
 				        			for(var k=0; k<tblData.length;k++) {
 				        				var _tblData = tblData[k];
 				        				if(_tblData.fbsid == _data.dev_id) {
 				        					num = k;
 				        					break;
 				        				}
-				        				
 				        			}
 				        			
 				        			if(num == -1) {
@@ -650,7 +721,7 @@
 				        			tmp.datapackage[num] = dfuData;
 				        		}
 				        		var pageTbl = $('#pageTbl');
-				        		
+				        		//console.log(tmp);
 				        		// 鏇存柊琛ㄦ牸鍐呭
 				        		Object.keys(tmp).forEach(function(key) {
 				        			updateLayuiTblCol(pageTbl, key, tmp[key]);
@@ -687,8 +758,8 @@
 				}
 				
 				
-				//楠岃瘉璁惧鏄惁鍏佽璁惧杩涜杩滅▼鍗囩骇
-				function checkStationState(temp, all){
+				// 楠岃瘉璁惧鏄惁鍏佽璁惧杩涜杩滅▼鍗囩骇
+				function checkStationState(temp, all, filename, newestVer, sysType){
 					$.ajax({ 	
 				        type: "post", 				
 				        url: "Fbs9100s_dfu_stateAction_action_judgeStation",				
@@ -700,13 +771,13 @@
 				        	//console.log(rs);
 				        	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);	// 鏃犳硶鏇存柊鐨勮澶囦俊鎭� 
+				        		var updateData = checkUpdating(data, all, filename, newestVer, sysType);
+				        		$('#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 {
@@ -720,27 +791,34 @@
 								layer.open({
 									type: 2,
 									title: '鏇存柊璁惧',
-									area: ['700px', '524px'],
+									area: ['960px', '524px'],
 									fixed: false, //涓嶅浐瀹�
 									maxmin: true,
 									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);
+										//return;
 										// 鍏抽棴寮瑰嚭闈㈡澘
 										layer.close(index);
-										
+										// console.log(updateList);
 										// 鍗囩骇璁惧
 										updateBTSDevice(updateList);
 										//console.log(updateList);
@@ -762,34 +840,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];
-							
-							// 鍒ゆ柇褰撳墠璁惧鏄惁姝e湪鍗囩骇
-							if(_all.updatestatusnum == 1) {
-								isError = false;
-							}
-						}
-						
-						// 鏍规嵁isError鍒よ鏄惁鏄笉鍙坊鍔犵殑鏈烘埧
-						if(isError) {
-							rs.push(_all);
-						}
-					}
-					
-					return rs;
-				}
-				
-				// 鑾峰彇鏃犳硶鍗囩骇鐨勮澶�
-				function checkErrorUpdate(rsData, all) {
-					var rs = [];
+				// 鏍煎紡璇濆崌绾х殑璁惧
+				function checkUpdating(rsData, all, filename, newestVer, sysType) {
+					var rs = {
+						good: []
+						,bad: []
+					};
 					// 閬嶅巻all
 					for(var i=0; i<all.length; i++) {
 						var _all = all[i];
@@ -799,15 +855,22 @@
 							
 							// 鍒ゆ柇褰撳墠璁惧鏄惁姝e湪鍗囩骇
 							if(_all.updatestatusnum != 1) {
-								if(_all.fbsid == _rsData.FBSDeviceId) {
-									isError = false;	
+								if(_all.fbsid == _rsData.FBSDeviceId && _all.filename == filename) {
+									// 妫�娴嬪綋鍓嶇増鏈彿鏄惁涓烘渶鏂�
+									var isNewstVer = checkNewestVer(newestVer, _all.version);
+									var isSysType = checkSysType(sysType, _all.version);
+									if(!isNewstVer && isSysType) {
+										isError = false;	
+									}
 								}
 							}
 						}
 						
 						// 鏍规嵁isError鍒よ鏄惁鏄笉鍙坊鍔犵殑鏈烘埧
 						if(isError) {
-							rs.push(_all);
+							rs.bad.push(_all);
+						}else {
+							rs.good.push(_all);
 						}
 					}
 					
@@ -859,6 +922,8 @@
 			        				tmp.fbsid = _data.dev_id;					// 璁惧id
 			        				tmp.fbsname = _data.fBSDeviceName;			// 璁惧鍚嶇О
 			        				tmp.updatestatusnum = 1;					// 0 绛夊緟鍗囩骇 1姝e湪鍗囩骇
+			        				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;						// 褰撳墠鏁版嵁鍖�
@@ -869,11 +934,100 @@
 				        		
 				        		// 鏇存柊琛ㄦ牸
 				        		table.render(tOptions);
+				        		renderTblPorgess(allData);
 				        	}
 				        }
 				    });
 				}
 				
+				// 娓叉煋杩涘害鏉�
+				function renderTblPorgess(tblData) {
+					// 閬嶅巻tblData鏍规嵁fbsid娓叉煋杩涘害鏉�
+					for(var i=0; i<tblData.length; i++) {
+						var fbsid = tblData[i].fbsid;
+						
+						// 娓叉煋杩涘害鏉�
+						element.render('progress', 'upload'+fbsid);
+					}
+					
+				}
+				
+				// 鏇存柊杩涘害鏉�
+				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]*$/
+						}
+					];
+					
+					// 閬嶅巻骞惰幏鍙杅ilename
+					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;
+				}
+				
+				//console.log(checkNewestVer('42', 'D:8,V2.53.44'));
+				// 楠岃瘉鐗堟湰
+				function checkNewestVer(ver ,version) {
+					var pattern = '^.*\\.[0-9]*\\.([0-9]*)$';
+					var reg = new RegExp(pattern);
+					reg.test(version);
+					// 鍒ゆ柇褰撳墠鐗堟湰鏄惁涓烘渶鏂扮増鏈�
+					var isNewest = false;
+					if(ver == RegExp.$1) {
+						isNewest = true;
+					}
+					return isNewest;
+				}
+				
+				//checkSysType('12', 'D:8,V12.53.44');
+				// 楠岃瘉褰撳墠鐗堟湰2v/12v
+				function checkSysType(sys ,version) {
+					var pattern = '^.*V([0-9]*)\\.[0-9]*\\.[0-9]*$';
+					var reg = new RegExp(pattern);
+					reg.test(version);
+					//console.log(RegExp.$1);
+					var rs = false;
+					if(sys == RegExp.$1) {
+						rs = true;
+					}
+					// console.log(rs);
+					return rs;
+				}
         	});
         </script>
     </body>

--
Gitblit v1.9.1