From e265a82fd7e6b12039dd1947f499f0622f2359e6 Mon Sep 17 00:00:00 2001
From: hdw <496960745@qq.com>
Date: 星期一, 08 十月 2018 13:15:44 +0800
Subject: [PATCH] 排序问题

---
 gx_tieta/WebRoot/pages/css/common.css       |   33 +--
 gx_tieta/WebRoot/ele-match-group.jsp        |  385 ++++++++++++++++++++++++++++++++++++++++++-----
 gx_tieta/WebRoot/pages/js/pages/siderbar.js |    4 
 gx_tieta/WebRoot/css/common.css             |    5 
 4 files changed, 364 insertions(+), 63 deletions(-)

diff --git a/gx_tieta/WebRoot/css/common.css b/gx_tieta/WebRoot/css/common.css
index 7b2e324..f93a87f 100644
--- a/gx_tieta/WebRoot/css/common.css
+++ b/gx_tieta/WebRoot/css/common.css
@@ -53,7 +53,10 @@
 	-o-transform: rotate(90deg);
 	transform: rotate(90deg);
 }
-
+.treeview-txt {
+	display: inline-block;
+	width: 100%;
+}
 .whyc-sider-menu>ul ul {
 	display: none;
 }
diff --git a/gx_tieta/WebRoot/ele-match-group.jsp b/gx_tieta/WebRoot/ele-match-group.jsp
index 4db2ee7..ae55089 100644
--- a/gx_tieta/WebRoot/ele-match-group.jsp
+++ b/gx_tieta/WebRoot/ele-match-group.jsp
@@ -27,6 +27,12 @@
 		#sideBar {
 			height: 100%;
 		}
+		.layui-table table thead th {
+			font-weight: bold;
+		}
+		.layui-form-radio {
+			margin-right: 10px !important;
+		}
 	</style>
   </head>
   <body class="h" style="padding: 0; overflow: hidden;">
@@ -38,22 +44,28 @@
 	<!-- 涓讳綋鍐呭 -->
 	<div id="main" class="full-container-layui">
 		<!-- 瀵艰埅缁撴潫 -->
-		<div class="whyc-page-content-tbl">
-			<div class="whyc-page-content-tbl-cell w360" id="resizeCont">
-				<div class="tbl-cell-container">
-					<div class="side-bar-container">
-						<div class="side-bar" id="sideBar"></div>
-					</div>
+		<div class="whyc-page-content-layui">
+			<div class="abs abs-left w360" id="resizeCont">
+				<div class="side-bar-container">
+					<div class="side-bar" id="sideBar"></div>
 				</div>
 			</div>
-			<div class="whyc-page-content-tbl-cell">
-				<div id="groupTbl"></div>
+			<div class="abs abs-right left360" id="inforCont">
+				<div class="tbl-container">
+					<table class="" id="groupTbl" lay-filter="groupTbl"></table>
+				</div>
 			</div>
 		</div>
 	</div>
 	<script type="text/html" id="groupTblTools">
-		<div class="layui-btn-container">
-      		<input type="checkbox" name="" lay-skin="primary" title="鍝佺墝涓�鑷�" checked="">
+		<div class="layui-btn-container" id="tblToolsBtn">
+      		<input type="checkbox" id="brandAgreement" name="" lay-skin="primary" title="鍝佺墝涓�鑷�" {{ d.brandAgreement }}>
+			<input type="radio" data-max="100" data-min="0" id="cap100" name="perCap" lay-skin="primary" title="鍏ㄩ儴" {{ d.cap100 }}>			
+			<input type="radio" data-max="100" data-min="90" id="cap90" name="perCap" lay-skin="primary" title="90%浠ヤ笂" {{ d.cap90 }}>
+			<input type="radio" data-max="90" data-min="80" id="cap80" name="perCap" lay-skin="primary" title="80%~90%" {{ d.cap80 }}>
+			<input type="radio" data-max="80" data-min="70" id="cap70" name="perCap" lay-skin="primary" title="70%~80%" {{ d.cap70 }}>
+			<input type="radio" data-max="70" data-min="60" id="cap60" name="perCap" lay-skin="primary" title="60%~70%" {{ d.cap60 }}>
+			<input type="radio" data-max="60" data-min="0" id="cap0" name="perCap" lay-skin="primary" title="60%浠ヤ笅" {{ d.cap0 }}>
 			<button class="layui-btn layui-btn-sm" lay-event="startMatchGroup">鍚姩閰嶇粍</button>
   		</div>
 	</script>
@@ -64,19 +76,22 @@
 	<script type="text/javascript" src="pages/js/pages/siderbar.js"></script>
   	<script type="text/javascript">
 		// treeView妯″潡
-		layui.use(['table', 'layer'],function() {
+		layui.use(['table', 'layer', 'laytpl'],function() {
 			var layer = layui.layer;				// 鑾峰彇layer妯″潡
 			var table = layui.table;				// 鑾峰彇table妯″潡
+			var laytpl = layui.laytpl;				// 鑾峰彇laytpl妯″潡
 			var TreeView = GLOBAL.pages.TreeView;
 			var treeView = new TreeView($('#sideBar'));
 			
 			// 璁剧疆宸﹀彸缂╂斁
-			$('#resizeCont').resizable({
+			$('#resizeCont .side-bar-container').resizable({
 				handles: 'e',
 				maxWidth: 520,
 				minWidth: 240,
-				resize: function() {
+				alsoResize:$('#resizeCont'),
+				resize: function(event, ui) {
 					treeView.setContainer();
+					$('#inforCont').css('left', ui.size.width+'px');
 				}
 			});
 			
@@ -93,42 +108,328 @@
 			treeView.ele.on('click', '.city', function() {
 				var city = $(this).data('attr');
 				third(treeView, $(this).parent(), city);
-				
 				var radio = $(this).children('.treeview-txt').find('input');
 				radio.prop('checked', true);
+				
+				// 鏈閫変腑
+				if(!$(this).hasClass('acCity')) {
+					// 娣诲姞琚�変腑鐨勬爣璇嗙
+					treeView.ele.find('.city').removeClass('acCity');
+					$(this).addClass('acCity');
+					
+					// 鏌ヨ甯傜殑鏈烘埧淇℃伅骞剁敓鎴愯〃鏍�
+					searchData();
+				}
+				
 			});
 			
-			// 鏈烘埧->鐢垫睜缁�
-			treeView.ele.on('click', '.home', function() {
-				var home = $(this).data('attr');
+			// 琛ㄦ牸鏁版嵁閰嶇疆椤�
+			var tOptions = {
+				elem: '#groupTbl'
+				,toolbar: ''
+				,defaultToolbar: ['exports', 'filter']
+				,cellMinWidth: 80
+				,cols: [[
+			      {field:'stationname', title:'鏈烘埧鍚嶇О', align:'center', width: 380}
+			      ,{field:'groupname', title:'鐢垫睜缁勫悕绉�', align:'center'}
+			      ,{field:'monnum', title:'鍗曚綋缂栧彿', align:'center'}
+			      ,{field:'brandname', title:'鍝佺墝鍚嶇О', align:'center'}
+			      ,{field:'nominalcap', title:'鏍囩О瀹归噺', align:'center'}
+			      ,{field:'monvol', title:'鏍囩О鐢靛帇锛圴锛�', align:'center'}
+			      ,{field:'relcap', title:'瀹為檯瀹归噺', align:'center'}
+			      ,{field:'percap', title:'瀹归噺鐧惧垎姣�(%)', align:'center'}
+			    ]]
+				,data:[
+			    	
+			    ]
+			    ,page: {}
+			    ,height: 'full-170'
+			};
+			
+			var toolBarTpl = groupTblTools.innerHTML;
+			// 璁剧疆琛ㄦ牸澶撮儴鐨勫唴瀹�
+			laytpl(toolBarTpl).render(getToolBarStatus(true), function(html){
+				tOptions.toolbar = html;
+			});
+			
+			// 鑾峰彇宸ュ叿鏍忎腑鐘舵��
+			function getToolBarStatus(isFirst) {
 				var tmp = {
-					StationName1: home.StationName1,
-					StationName2: home.StationName2,
-					StationName: home.StationName,
-					StationId: home.StationId
+					brandAgreement: 'checked=""',
+					cap100: 'checked=""',
+					cap90:'',
+					cap80:'',
+					cap70:'',
+					cap60:'',
+					cap0:'',
+					range: {
+						max: 100,
+						min: 0
+					}
 				};
-				fourth(treeView, $(this).parent(), tmp);
-			});
-			
+				
+				// 鏄惁涓虹涓�娆″姞杞�
+				if(!isFirst) {
+					Object.keys(tmp).forEach(function(key) {
+						if(key != 'range')  {
+							tmp[key] = getCheckString(key);
+						}
+					});
+				}
+				return tmp;
+				
+				// 鑾峰彇checked=""瀛楃涓�
+				function getCheckString(key) {
+					var ele = $('#'+key);
+					var rs = "";
+					if(ele.is(':checked')) {
+						rs = 'checked=""';
+						
+						// 鍒ゆ柇涓嶆槸鍝佺墝涓�鑷�
+						if(key != 'brandAgreement') {
+							var range = ele.data();
+							setRange(range.max, range.min);	// 璁剧疆鑼冨洿
+						}
+					}
+					return rs;
+				}
+				
+				// 璁剧疆鑼冨洿
+				function setRange(max, min) {
+					tmp.range.max = max;
+					tmp.range.min = min;
+				}
+			}
 			
 			// 鐢熸垚琛ㄦ牸鏁版嵁
-			table.render({
-				elem: '#groupTbl'
-				,toolbar: '#groupTblTools'
-				,defaultToolbar: ['exports', 'filter']
-				,cols: [[
-			      ,{field:'staionname', title:'鏈烘埧鍚嶇О'}
-			      ,{field:'groupname', title:'鐢垫睜缁勫悕绉�'}
-			      ,{field:'monnum', title:'鍗曚綋缂栧彿'}
-			      ,{field:'brandname', title:'鍝佺墝鍚嶇О'}
-			      ,{field:'monvol', title:'鍗曚綋鐢靛帇'}
-			      ,{field:'nominalcap', title:'鏍囩О瀹归噺'}
-			      ,{field:'relcap', title:'瀹為檯瀹归噺',sort: true}
-			    ]]
-			    ,data:[]
-			    ,page: true
-			    ,height: 'full-200'
-			});
+			table.render(tOptions);
+			
+			
+			// 鑾峰彇鍚庡彴鏁版嵁
+			var allGroup = [];	// 璁板綍鎵�鏈夌數姹犵粍鐨勪俊鎭�
+			function searchData() {
+				var temp = getSearchParams();	// 鑾峰彇鏌ヨ鏉′欢
+				// 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏈烘埧淇℃伅
+				var loading = layer.load(0, {shade: [0.1,'#fff']}); //0浠h〃鍔犺浇鐨勯鏍硷紝鏀寔0-2
+				$.ajax({
+					type: 'post',
+					url: 'BattInfAction!serchMakeGroup',
+					async: true,
+					data: 'json='+JSON.stringify(temp),
+					dataType: 'json',
+					success: function(result) {
+						layer.close(loading);	// 鍏抽棴绛夊緟妗�
+						var rs = JSON.parse(result.result);
+						tOptions.data = [];	// 鍒濆鍖栨煡璇㈠唴瀹�
+						allGroup = []; 		// 鍒濆鍖栨墍鏈夋暟鎹唴瀹�
+						// 鏌ヨ鎴愬姛
+						if(rs.code == 1) {
+							var data = rs.data;
+							var num = 0;
+							var rsData = formaterTblData(data);
+							// 璁剧疆琛ㄦ牸鐨勬暟鎹�
+							num = rsData.length;
+							tOptions.data = rsData;
+							allGroup = rsData;
+							// 璁剧疆鍒嗛〉淇℃伅
+							tOptions.page.layout = ['count', 'prev', 'page', 'next'];  //鑷畾涔夊垎椤靛竷灞�
+							tOptions.page.limit= num;
+							tOptions.page.limits = [num];
+						}
+						
+						// 璁剧疆琛ㄦ牸澶撮儴鐨勫唴瀹�
+						laytpl(toolBarTpl).render(getToolBarStatus(true), function(html){
+							tOptions.toolbar = html;
+						});
+						// 閲嶆柊缁樺埗琛ㄦ牸鍐呭
+						table.reload('groupTbl', tOptions);
+					}
+				});
+			}
+			
+			// 鏋勯�犵敓鎴愯〃鏍兼暟鎹殑鏂规硶
+			function formaterTblData(data) {
+				var rs = [];	// 缁撴灉闆�
+				
+				// 閬嶅巻鏌ヨ鐨勭粨鏋滄牴鎹煡璇㈢粨鏋滅敓鎴愭寚瀹氱殑鏍煎紡
+				for(var i=0; i<data.length; i++) {
+					var _data = data[i];
+					var obj = {};
+					obj.stationname = _data.StationName;	// 鏈烘埧鍚嶇О
+					obj.groupname = _data.BattGroupName;	// 鐢垫睜缁勫悕绉�
+					obj.brandname = _data.BattProducer;		// 鍝佺墝
+					obj.monvol = _data.MonVolStd;			// 鏍囩О鐢靛帇
+					obj.nominalcap = _data.MonCapStd;		// 鏍囩О瀹归噺
+					
+					for(var k=0; k<_data.obj.length;k++) {
+						var _obj = $.extend({}, obj);
+						var __data = _data.obj[k];
+						_obj.monnum = '#'+__data.mon_num;	// 鍗曚綋缂栧彿
+						_obj.relcap = __data.test_cap.toFixed(0);	// 瀹為檯瀹归噺
+						_obj.percap = (__data.percent*100).toFixed(1);	// 瀹归噺鐧惧垎姣�
+						rs.push(_obj);
+					}
+				}
+				
+				return rs;	// 杩斿洖缁撴灉闆�
+			}
+			
+			// 鏋勯�犳煡璇㈠悗鍙扮殑鍙傛暟
+			function getSearchParams() {
+				var acCity = treeView.ele.find('.acCity');	// 琚�変腑鐨勬満鎴�
+				// 娌℃湁閫夋嫨甯傚氨杩斿洖涓篺alse
+				if(acCity.length == 0) {
+					return false;
+				}
+				var attr = acCity.data('attr');	  // 鏈烘埧淇℃伅
+				// 绗﹀悎鏉′欢鍚敤鏋勯�犲璞�
+				var temp = {
+					StationName2: attr.StationName2,
+					BattProducer: 1
+				};
+				
+				return temp;
+			}
+			
+			
+			//澶村伐鍏锋爮浜嬩欢
+  			table.on('toolbar(groupTbl)', function(obj){
+  				var event = obj.event;
+  				switch(event){
+  					case 'startMatchGroup':
+  						startMatchGroup(obj.config);
+  					break;
+  				}
+  				
+  				// 璁剧疆startMatchGroup鍑芥暟
+  				function startMatchGroup(obj) {
+  					var toolBarStatus = getToolBarStatus();		// 鑾峰彇鐘舵�佹爮
+  					var data= getDataByRange(allGroup, toolBarStatus.range);
+  					var fData = toolBarStatus.brandAgreement.length>0?formaterData(data):formaterData2(data);
+  					var rsData = decodeObj(fData);
+  					
+  					// 璁剧疆琛ㄦ牸鐨勬暟鎹�
+					num = rsData.length;
+					tOptions.data = rsData;
+					// 璁剧疆鍒嗛〉淇℃伅
+					tOptions.page.layout = ['count', 'prev', 'page', 'next'];  //鑷畾涔夊垎椤靛竷灞�
+					tOptions.page.limit= num;
+					tOptions.page.limits = [num];
+					// 璁剧疆琛ㄦ牸澶撮儴鐨勫唴瀹�
+					laytpl(toolBarTpl).render(toolBarStatus, function(html){
+						tOptions.toolbar = html;
+					});
+					
+					table.reload('groupTbl', tOptions);
+  				}
+  				
+  				// 鏍规嵁閫夋嫨鑼冨洿杩斿洖鏁版嵁
+  				function getDataByRange(data, range) {
+  					var rs = [];
+  					var max = range.max;
+  					var min = range.min;
+  					// 閬嶅巻data
+  					for(var i=0; i<data.length; i++) {
+  						var _data = data[i];
+  						if(_data.percap<=max && _data.percap>=min) {
+  							rs.push(_data);
+  						}
+  					}
+  					return rs;
+  				}
+  				
+  				// 鏍煎紡鍖栫數姹犵粍鍝佺墝涓�鑷存暟鎹�
+  				function formaterData(data) {
+  					var obj = {};
+  					for(var i=0;i<data.length;i++) {
+  						var _data = data[i];	
+  						
+  						var brandname = _data.brandname;	// 鐢垫睜鍝佺墝
+  						// 鍒ゆ柇obj.brandname鏄惁瀛樺湪
+  						if(typeof obj[brandname] != 'object') {
+  							obj[brandname] = {};
+  						}
+  						
+  						// 鑾峰彇褰撳墠鐨勭數姹犲搧鐗屽璞�
+  						var _brandname = obj[brandname];
+  						var cap = _data.nominalcap;		// 鐢垫睜瀹归噺
+  						// 鍒ゆ柇obj.brandname.nominalcap鏄惁瀛樺湪
+  						if(typeof _brandname[cap] != 'object') {
+  							_brandname[cap] = {};
+  						}
+  						
+  						// 鑾峰彇褰撳墠鐨勭數姹犲閲忕殑瀵硅薄
+  						var _cap = _brandname[cap];
+  						var vol = _data.monvol;		// 鐢垫睜鐢靛帇
+  						// 鍒ゆ柇obj.brandname.nominalcap.monvol鏄惁瀛樺湪
+  						if(typeof _cap[vol] != 'object') {
+  							_cap[vol] = [];
+  						}
+  						_cap[vol].push(_data);
+  					}
+  					return obj;
+  				}
+  				
+  				// 鏍煎紡鍖栨暟鎹笉鍖呭惈鐢垫睜缁勪竴鑷�
+  				function formaterData2(data) {
+  					var obj = {};
+  					for(var i=0;i<data.length;i++) {
+  						var _data = data[i];
+  						// 鑾峰彇褰撳墠鐨勭數姹犲搧鐗屽璞�
+  						var cap = _data.nominalcap;		// 鐢垫睜瀹归噺
+  						// 鍒ゆ柇obj.brandname.nominalcap鏄惁瀛樺湪
+  						if(typeof obj[cap] != 'object') {
+  							obj[cap] = {};
+  						}
+  						
+  						// 鑾峰彇褰撳墠鐨勭數姹犲閲忕殑瀵硅薄
+  						var _cap = obj[cap];
+  						var vol = data[i].monvol;		// 鐢垫睜鐢靛帇
+  						// 鍒ゆ柇obj.brandname.nominalcap.monvol鏄惁瀛樺湪
+  						if(typeof _cap[vol] != 'object') {
+  							_cap[vol] = [];
+  						}
+  						_cap[vol].push(_data);
+  					}
+  					return obj;
+  				}
+  				// 瑙g爜瀵硅薄
+  				function decodeObj(obj) {
+  					var rs = [];
+  					Object.keys(obj).forEach(function(key){
+  						decodeObjRec(rs, obj[key]);
+  					});
+  					//console.log(rs);
+  					return rs;
+  				}
+  				
+  				// 瑙g爜閫掑綊鍑芥暟
+  				function decodeObjRec(rs, obj) {
+  					if(obj instanceof Array) {
+  						var tmp = [];
+  						for(var i=0; i<obj.length; i++) {
+  							var cap = obj[i].relcap;
+  							var _index = tmp.length;
+  							for(var k=0; k<tmp.length; k++) {
+  								if(tmp[k].relcap<cap) {
+  									_index = k;
+  									break;
+  								}
+  							}
+  							
+  							tmp.splice(_index, 0, obj[i]);
+  						}
+  						for(var i=0; i<tmp.length; i++) {
+  							rs.push(tmp[i]);
+  						}
+  					}else {
+  						Object.keys(obj).forEach(function(key){
+	  						decodeObjRec(rs, obj[key]);
+	  					});
+  					}
+  				}
+  			});
+			
 			
 			// 鐢熸垚涓�绾у鑸�-鐪�
 			function first(treeView, container) {
@@ -214,7 +515,7 @@
 			        		for(var i=0; i<_data.length;i++) {
 			        			var __data = _data[i];
 			        			var txt = '<input type="checkbox" checked="checked" disabled name="home">'+ __data.StationName;
-			        			var tmp = treeView.getFile(txt, 'home', __data);
+			        			var tmp = treeView.getFile(txt, 'home', __data.StationId,__data);
 			        			formatData.push(tmp);
 			        		}
 			        		treeView.treeView(container, formatData);
diff --git a/gx_tieta/WebRoot/pages/css/common.css b/gx_tieta/WebRoot/pages/css/common.css
index 69b60f3..35184c7 100644
--- a/gx_tieta/WebRoot/pages/css/common.css
+++ b/gx_tieta/WebRoot/pages/css/common.css
@@ -56,8 +56,6 @@
 /* absolute 椤堕儴 灞呬腑 搴曢儴瀹氫綅*/
 .abs {
     position: absolute;
-    left: 0;
-    right: 0;
     z-index: 1;
 }
 .abs-top {
@@ -70,10 +68,22 @@
     bottom: 0;
     margin: auto; 
 }
-
+.abs-left {
+	top:0;
+	bottom: 0;
+	left: 0;
+}
+.abs-right {
+	top:0;
+	bottom: 0;
+	right: 0;
+}
 .abs-bottom {
     bottom: 0; 
     margin: 0 auto;
+}
+.left360 {
+	left: 360px;
 }
 /* float */
 .fix-left {
@@ -732,24 +742,11 @@
 	top: 124px;
 	bottom: 32px;
 }
-.whyc-page-content-tbl {
-	display: table;
-	width: 100%;
-	height: 100%;
-}
-.whyc-page-content-tbl-cell {
-	display: table-cell;
-	height: 100%;
+.whyc-page-content-layui {
 	position: relative;
-}
-
-.tbl-cell-container {
-	position: absolute;
 	width: 100%;
-	top: 0;
-	bottom: 0;
+	height: 100%;
 }
-
 .side-bar-container {
 	height: 100%;
 }
\ No newline at end of file
diff --git a/gx_tieta/WebRoot/pages/js/pages/siderbar.js b/gx_tieta/WebRoot/pages/js/pages/siderbar.js
index 0efbfc9..b15bc4f 100644
--- a/gx_tieta/WebRoot/pages/js/pages/siderbar.js
+++ b/gx_tieta/WebRoot/pages/js/pages/siderbar.js
@@ -29,8 +29,8 @@
 		//this.resize(options);
 
 		// 缁欏鍣ㄥ唴瀹规坊鍔犵粦瀹氫簨浠�
-		this.ele.off('click.treeView.folder').on('click.treeView.folder', '.sider-menu-folder>i.fa-caret-right', function() {
-			$(this).parent().parent().toggleClass('sider-menu-open');
+		this.ele.off('click.treeView.folder').on('click.treeView.folder', '.sider-menu-folder', function() {
+			$(this).parent().toggleClass('sider-menu-open');
 		});
 
 		this.ele.off('click.treeView.file').on('click.treeView.file', '.sider-menu-file', function() {

--
Gitblit v1.9.1