<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"></c:set>

<link rel="stylesheet" href="${contextPath}/static/assets/css/jquery-ui.css" />
<link rel="stylesheet" href="${contextPath}/static/assets/css/ui.jqgrid.css" />

<div class="row">
	<div class="col-xs-12">
		<div class="dropdown">
			省:<select id="areaProvince" onchange="setChArea(this)">
					<option selected value="" >全部</option>						    
				</select>
			市:<select id="areaCity" onchange="setChArea(this)"></select>
			区:<select id="areaCounty"></select>
			查档类型:
			<select id='orderType'>
			    <option selected value="" >全部</option>
			    <option value="1" >工商基本信息</option>
			    <option value="2" >工商内档信息</option>
			    <option value="3" >户籍信息</option>
			    <option value="4" >婚姻信息</option>
			    <option value="5" >房产信息</option>
			    <option value="6" >车辆信息</option>
			</select>
			接单状态:
			<select id='status'>
			    <option selected value="" >全部</option>
			    <option value="0" >备选</option>
			    <option value="1" >默认</option>
			</select>
			关键字:<input id="keyword" class="input-medium search-query" type="text" /> 
		<button id="searchd" type="button" class="btn" >搜索</button>		
		<table id="grid-table"></table>
		<div id="grid-pager"></div>
		<script type="text/javascript">
			var $path_base = "${contextPath}/static";//in Ace demo this will be used for editurl parameter
		</script>
	</div>
</div>

<div id="button-modal-table" class="modal fade" tabindex="-1" data-backdrop="static">
	<div class="modal-dialog">
		<form id="authorityForm">
			<div class="modal-content">
				<div class="modal-header no-padding">
					<div class="table-header">
						<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
							<span class="white">&times;</span>
						</button>
						按钮授权
					</div>
				</div>
				<div class="modal-body">
					<div id="modal-tip" class="red clearfix"></div>
					<input id="modalValue" type="hidden" />
					<input id="menuCodeId" type="hidden" />
					<div class="widget-box widget-color-blue2">
						<div class="widget-body">
							<div class="widget-main padding-8">
								<div class="row">
									<div class="col-xs-12 col-sm-12">
										<div class="control-group">
											<div id="checkboxList" class="checkbox">

											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
					</div>
				</div>
				<div class="modal-footer no-margin-top">
					<div class="text-center">
						<button id="submitButton" type="button" class="btn btn-app btn-success btn-xs">
							<i class="ace-icon fa fa-floppy-o bigger-160"></i>
							保存
						</button>
						<button class="btn btn-app btn-pink btn-xs" data-dismiss="modal">
							<i class="ace-icon fa fa-share bigger-160"></i>
							取消
						</button>
					</div>
				</div>
			</div><!-- /.modal-content -->
		</form>
	</div><!-- /.modal-dialog -->
</div>

<!-- page specific plugin scripts -->
<script type="text/javascript">
		var scripts = [ null, "${contextPath}/static/assets/js/jqGrid/jquery.jqGrid.js", "${contextPath}/static/assets/js/jqGrid/i18n/grid.locale-cn.js", null ]
        $('.page-content-area').ace_ajax('loadScripts', scripts, function() {
        	// inline scripts related to this page
        	jQuery(function($) {
        		var grid_selector = "#grid-table";
        		var pager_selector = "#grid-pager";

        		// resize to fit page size
        		$(window).on('resize.jqGrid', function() {
        			$(grid_selector).jqGrid('setGridWidth', $(".page-content").width());
        		})
        		// resize on sidebar collapse/expand
        		var parent_column = $(grid_selector).closest('[class*="col-"]');
        		$(document).on('settings.ace.jqGrid', function(ev, event_name, collapsed) {
        			if (event_name === 'sidebar_collapsed' || event_name === 'main_container_fixed') {
        				// setTimeout is for webkit only to give time for DOM changes and then redraw!!!
        				setTimeout(function() {
        					$(grid_selector).jqGrid('setGridWidth', parent_column.width());
        				}, 0);
        			}
        		});
        		
        		/*搜索框  主要对Jquery grid进行刷新 带参数刷新    */
				$("#searchd").click(function(){
					var keyword =$("#keyword").val();
					var status =$("#status").val();
					var orderType =$("#orderType").val();
					var cityCode =$("#areaCity").val()==null?"":$("#areaCity").val();
					var countyCode =$("#areaCounty").val()==null?"":$("#areaCounty").val();
			    	myGrid.setGridParam({data:'json',url : '${contextPath}/sys/cdPrice/getCdPrice?isFlag=0&keyword='+keyword+'&status='+status+'&orderType='+orderType+'&cityCode='+cityCode+'&countyCode='+countyCode}).trigger('reloadGrid');
				});

        		var myGrid = jQuery(grid_selector).jqGrid({
        			subGrid : false,
        			url : "${contextPath}/sys/cdPrice/getCdPrice",
        			datatype : "json",
        			height : 450,
        			colNames : ['','律师', '手机', '地区', '查档天数', '绑定时间','查档类型', '金额', '接单优化级', '备注'],
        			colModel : [ {
        				name : '',
        				index : '',
        				width : 80,
        				fixed : true,
        				sortable : false,
        				resize : false,
        				formatter : 'actions',
        				formatoptions : {
        					keys : true,
        					delOptions : {
        						recreateForm : true,
        						beforeShowForm : beforeDeleteCallback
        					}
        				}
        			},{
        				name : 'lawyerName',
        				index : 'lawyerName',
        				width : 80,
        				editable : false
        			},{
        				name : 'mobile',
        				index : 'mobile',
        				width : 80,
        				editable : true
        			}, {
        				name : 'areaName',
        				index : 'areaName',
        				editable : false,
        				width : 80,
        			},  {
        				name : 'takeTime',
        				index : 'takeTime',
        				editable : true,
        				width : 80,
        			}, {
        				name : 'createDate',
        				index : 'createDate',
        				editable : false,
        				width : 80,
        			}, {
        				name : 'orderTypeName',
        				index : 'orderTypeName',
        				width : 120,
        				editable : false,
        			}, {
        				name : 'price',
        				index : 'price',
        				editable : true,
        				width : 120,
        			}, {
        				name : 'status',
        				index : 'status',
        				label : '接单状态',
        				width : 80,
        				editable : true,
        				edittype : "select",
        				editoptions:{value:"0:0;1:1;2:2;3:3;4:4;5:5;6:6;7:7;8:8;9:9"}
        			}, {name : 'remark', index : 'remark', width : 150, editable : true, search : false, edittype: 'textarea',
        			}],
        			//scroll : 1, // set the scroll property to 1 to enable paging with scrollbar - virtual loading of records
        			sortname : "createDate",
        			sortorder : "desc",
        			viewrecords : true,
        			rowNum : 10,
        			rowList : [ 10, 20, 30 ],
        			pager : pager_selector,
        			altRows : true,
        			//toppager : true,
        			multiselect : true,
        			//multikey : "ctrlKey",
        	        multiboxonly : true,
        			loadComplete : function() {
        				var table = this;
        				setTimeout(function(){
        					styleCheckbox(table);
        					updateActionIcons(table);
        					updatePagerIcons(table);
        					enableTooltips(table);
        				}, 0);
        			},
        			editurl : "${contextPath}/sys/cdPrice/operateCdPrice"
        		});
        		
        		$(window).triggerHandler('resize.jqGrid');
        		function aceSwitch(cellvalue, options, cell) {
        			setTimeout(function() {
        				$(cell).find('input[type=checkbox]').addClass('ace ace-switch ace-switch-5').after('<span class="lbl"></span>');
        			}, 0);
        		}
        		
        		// navButtons
        		jQuery(grid_selector).jqGrid('navGrid', pager_selector, { // navbar options
        			edit : <shiro:hasPermission name="${ROLE_KEY}:authority:edit">true</shiro:hasPermission><shiro:lacksPermission name="${ROLE_KEY}:authority:edit">false</shiro:lacksPermission>,
        			editicon : 'ace-icon fa fa-pencil blue',
        			add : <shiro:hasPermission name="${ROLE_KEY}:authority:add">true</shiro:hasPermission><shiro:lacksPermission name="${ROLE_KEY}:authority:add">false</shiro:lacksPermission>,
        			addicon : 'ace-icon fa fa-plus-circle purple',
        			del : <shiro:hasPermission name="${ROLE_KEY}:authority:delete">true</shiro:hasPermission><shiro:lacksPermission name="${ROLE_KEY}:authority:delete">false</shiro:lacksPermission>,
        			delicon : 'ace-icon fa fa-trash-o red',
        			search : <shiro:hasPermission name="${ROLE_KEY}:authority:search">true</shiro:hasPermission><shiro:lacksPermission name="${ROLE_KEY}:authority:search">false</shiro:lacksPermission>,
        			searchicon : 'ace-icon fa fa-search orange',
        			refresh : true,
        			refreshicon : 'ace-icon fa fa-refresh blue',
        			view : <shiro:hasPermission name="${ROLE_KEY}:authority:view">true</shiro:hasPermission><shiro:lacksPermission name="${ROLE_KEY}:authority:view">false</shiro:lacksPermission>,
        			viewicon : 'ace-icon fa fa-search-plus grey'
        		}, {
        			// edit record form
        			// closeAfterEdit: true,
        			// width: 700,
        			recreateForm : true,
        			beforeShowForm : function(e) {
        				var form = $(e[0]);
        				form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
        				style_edit_form(form);
        			},
    				errorTextFormat: function (response) {
    					var result = eval('('+response.responseText+')');
    				    return result.message;
    				}
        		}, {
        			// new record form
        			// width: 700,
        			closeAfterAdd : true,
        			recreateForm : true,
        			viewPagerButtons : false,
        			beforeShowForm : function(e) {
        				var form = $(e[0]);
        				form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
        				style_edit_form(form);
        			},
    				errorTextFormat: function (response) {
    					var result = eval('('+response.responseText+')');
    				    return result.message;
    				}
        		}, {
        			// delete record form
        			recreateForm : true,
        			beforeShowForm : function(e) {
        				var form = $(e[0]);
        				if (form.data('styled'))
        					return false;
        				form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
        				style_delete_form(form);
        				form.data('styled', true);
        			},
        			onClick : function(e) {
        				// alert(1);
        			}
        		}, {
        			// search form
        			recreateForm : true,
        			afterShowSearch : function(e) {
        				var form = $(e[0]);
        				form.closest('.ui-jqdialog').find('.ui-jqdialog-title').wrap('<div class="widget-header" />')
        				style_search_form(form);
        			},
        			afterRedraw : function() {
        				style_search_filters($(this));
        			},
        			multipleSearch : true 
	        		/**
	        		 * multipleGroup:true, showQuery: true
	        		 */
        		}, {
        			// view record form
        			recreateForm : true,
        			beforeShowForm : function(e) {
        				var form = $(e[0]);
        				form.closest('.ui-jqdialog').find('.ui-jqdialog-title').wrap('<div class="widget-header" />')
        			}
        		})
        		
        		// add custom button to export the data to excel
        		if(<shiro:hasPermission name="${ROLE_KEY}:authority:export">true</shiro:hasPermission><shiro:lacksPermission name="${ROLE_KEY}:authority:export">false</shiro:lacksPermission>){
        			jQuery(grid_selector).jqGrid('navButtonAdd', pager_selector,{
     				   caption : "",
     			       title : "导出Excel",
     			       buttonicon : "ace-icon fa fa-file-excel-o green", 
     			       onClickButton : function () { 
     			    	   var keys = [], ii = 0, rows = "";
     			    	   var ids = $(grid_selector).getDataIDs(); // Get All IDs
     			    	   var row = $(grid_selector).getRowData(ids[0]); // Get First row to get the labels
     			    	   //var label = $(grid_selector).jqGrid('getGridParam','colNames');
        			    	   for (var k in row) {
     			    	   	   keys[ii++] = k; // capture col names
     			    	   	   rows = rows + k + "\t"; // output each Column as tab delimited
     			    	   }
     			    	   rows = rows + "\n"; // Output header with end of line
     			    	   for (i = 0; i < ids.length; i++) {
     			    	   	   row = $(grid_selector).getRowData(ids[i]); // get each row
     			    	   	   for (j = 0; j < keys.length; j++)
     			    	   		   rows = rows + row[keys[j]] + "\t"; // output each Row as tab delimited
     			    	   	   rows = rows + "\n"; // output each row with end of line
     			    	   }
     			    	   rows = rows + "\n"; // end of line at the end
     			    	   var form = "<form name='csvexportform' action='${contextPath}/sys/authority/operateAuthority?oper=excel' method='post'>";
     			    	   form = form + "<input type='hidden' name='csvBuffer' value='" + encodeURIComponent(rows) + "'>";
     			    	   form = form + "</form><script>document.csvexportform.submit();</sc" + "ript>";
     			    	   OpenWindow = window.open('', '');
     			    	   OpenWindow.document.write(form);
     			    	   OpenWindow.document.close();
     			       } 
     				});
        		}
        		
        		function buttonAuthorityFormatter(cellvalue, options, cell) {
        			var template = "<button data-toggle='modal' onclick='javascript:$(\"#button-modal-table\").modal(\"toggle\");$(\"#menuCodeId\").val(\"" + cell.menuCode +"\")' class='btn btn-xs btn-warning'><i class='ace-icon fa fa-flag bigger-120'></i></button>";
        			if(cell.parentMenuCode == "0" || cell.parentMenuCode == "bootstrapinstance" || cell.parentMenuCode == "chartsreports" || cell.menuCode == "mail"){
        				return "";
        			}else{
        				return template;
        			}
        		}
        		
        		$("#button-modal-table").on('shown.bs.modal', function() {
        			$("#modal-tip").html("");
        			$.ajax({
    					url : "${contextPath}/sys/authority/getAuthorityButtonList?rand=" + Math.random(1000),
    					data : {
    						menuCode : $("#menuCodeId").val()
    					},
    					type : 'POST',
    					dataType : 'json',
    					complete : function(response) {
    						var returninfo = eval("(" + response.responseText + ")");
    						$("#checkboxList").html(returninfo.data);
    					}
    				});
        		});
        		
        		$('#submitButton').on('click', function() {
        			var allArray = [];
        			$("input[name='form-field-checkbox']").each(function(){
        				if($(this).attr("type") == "checkbox"){
        					allArray.push($(this).attr("id"),",",$(this).is(':checked') == "" ? "false" : "true",";");
        				} else {
        					allArray.push("AND");
        				}
        			});
        			$("#modalValue").html(allArray);
					$.ajax({
    					url : "${contextPath}/sys/authority/saveAuthorityButtonList",
    					data : {
    						checkboxList : $("#modalValue").text(),
    						menuCode : $("#menuCodeId").val()
    					},
    					type : 'POST',
    					dataType : 'json',
    					complete : function(response) {
    						$("#button-modal-table").modal("toggle");
    					}
    				});
        		});
        		
        		function style_edit_form(form) {
        			// form.find('input[name=statusCn]').addClass('ace ace-switch ace-switch-5').after('<span class="lbl"></span>');
        			// don't wrap inside a label element, the checkbox value won't be submitted (POST'ed)
        			// .addClass('ace ace-switch ace-switch-5').wrap('<label class="inline" />').after('<span class="lbl"></span>');

        			// update buttons classes
        			var buttons = form.next().find('.EditButton .fm-button');
        			buttons.addClass('btn btn-sm').find('[class*="-icon"]').hide();// ui-icon, s-icon
        			buttons.eq(0).addClass('btn-primary').prepend('<i class="ace-icon fa fa-check"></i>');
        			buttons.eq(1).prepend('<i class="ace-icon fa fa-times"></i>')

        			buttons = form.next().find('.navButton a');
        			buttons.find('.ui-icon').hide();
        			buttons.eq(0).append('<i class="ace-icon fa fa-chevron-left"></i>');
        			buttons.eq(1).append('<i class="ace-icon fa fa-chevron-right"></i>');
        		}

        		function style_delete_form(form) {
        			var buttons = form.next().find('.EditButton .fm-button');
        			buttons.addClass('btn btn-sm btn-white btn-round').find('[class*="-icon"]').hide();// ui-icon, s-icon
        			buttons.eq(0).addClass('btn-danger').prepend('<i class="ace-icon fa fa-trash-o"></i>');
        			buttons.eq(1).addClass('btn-default').prepend('<i class="ace-icon fa fa-times"></i>')
        		}

        		function style_search_filters(form) {
        			form.find('.delete-rule').val('X');
        			form.find('.add-rule').addClass('btn btn-xs btn-primary');
        			form.find('.add-group').addClass('btn btn-xs btn-success');
        			form.find('.delete-group').addClass('btn btn-xs btn-danger');
        		}
        		function style_search_form(form) {
        			var dialog = form.closest('.ui-jqdialog');
        			var buttons = dialog.find('.EditTable')
        			buttons.find('.EditButton a[id*="_reset"]').addClass('btn btn-sm btn-info').find('.ui-icon').attr('class', 'ace-icon fa fa-retweet');
        			buttons.find('.EditButton a[id*="_query"]').addClass('btn btn-sm btn-inverse').find('.ui-icon').attr('class', 'ace-icon fa fa-comment-o');
        			buttons.find('.EditButton a[id*="_search"]').addClass('btn btn-sm btn-purple').find('.ui-icon').attr('class', 'ace-icon fa fa-search');
        		}

        		function beforeDeleteCallback(e) {
        			var form = $(e[0]);
        			if (form.data('styled'))
        				return false;
        			form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
        			style_delete_form(form);
        			form.data('styled', true);
        		}

        		function beforeEditCallback(e) {
        			var form = $(e[0]);
        			form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
        			style_edit_form(form);
        		}

        		// it causes some flicker when reloading or navigating grid
        		// it may be possible to have some custom formatter to do this as the grid is being created to prevent this
        		// or go back to default browser checkbox styles for the grid
        		function styleCheckbox(table) {
        			/**
        			 * $(table).find('input:checkbox').addClass('ace') .wrap('<label />') .after('<span class="lbl align-top" />') $('.ui-jqgrid-labels th[id*="_cb"]:first-child')
        			 * .find('input.cbox[type=checkbox]').addClass('ace') .wrap('<label />').after('<span class="lbl align-top" />');
        			 */
        		}

        		// unlike navButtons icons, action icons in rows seem to be hard-coded
        		// you can change them like this in here if you want
        		function updateActionIcons(table) {
        			/**
        			 * var replacement = { 'ui-ace-icon fa fa-pencil' : 'ace-icon fa fa-pencil blue', 'ui-ace-icon fa fa-trash-o' : 'ace-icon fa fa-trash-o red', 'ui-icon-disk' : 'ace-icon fa fa-check green', 'ui-icon-cancel' :
        			 * 'ace-icon fa fa-times red' }; $(table).find('.ui-pg-div span.ui-icon').each(function(){ var icon = $(this); var $class = $.trim(icon.attr('class').replace('ui-icon', '')); if($class in replacement)
        			 * icon.attr('class', 'ui-icon '+replacement[$class]); })
        			 */
        		}

        		// replace icons with FontAwesome icons like above
        		function updatePagerIcons(table) {
        			var replacement = {
        				'ui-icon-seek-first' : 'ace-icon fa fa-angle-double-left bigger-140',
        				'ui-icon-seek-prev' : 'ace-icon fa fa-angle-left bigger-140',
        				'ui-icon-seek-next' : 'ace-icon fa fa-angle-right bigger-140',
        				'ui-icon-seek-end' : 'ace-icon fa fa-angle-double-right bigger-140'
        			};
        			$('.ui-pg-table:not(.navtable) > tbody > tr > .ui-pg-button > .ui-icon').each(function() {
        				var icon = $(this);
        				var $class = $.trim(icon.attr('class').replace('ui-icon', ''));

        				if ($class in replacement)
        					icon.attr('class', 'ui-icon ' + replacement[$class]);
        			})
        		}

        		function enableTooltips(table) {
        			$('.navtable .ui-pg-button').tooltip({
        				container : 'body'
        			});
        			$(table).find('.ui-pg-div').tooltip({
        				container : 'body'
        			});
        		}

        		// var selr = jQuery(grid_selector).jqGrid('getGridParam','selrow');

        		$(document).one('ajaxloadstart.page', function(e) {
        			$(grid_selector).jqGrid('GridUnload');
        			$('.ui-jqdialog').remove();
        		});
        		
        	});
        });
		
		
		function initAreaProvince(){
			$.getJSON("${contextPath}/sys/cdPrice/getProvince",function(result){
	    		$.each(result, function(i, v){
	    			$("#areaProvince").append("<option value='"+v.code+"'>"+v.name+"</option>");
	    		});
	  		});	
		}

		function setChArea(obj){  
		    var val = obj.value;  
		    var sec = null;
		    var areaId = $(obj).attr("id");
			if(areaId=="areaProvince"){
				sec = document.getElementById('areaCity');
			}else{
				sec = document.getElementById('areaCounty');
			}			
		    sec.innerHTML = "<option selected value='' >全部</option>"; 
		    if(val != ''){  
		    	//ajax
		    	$.getJSON("${contextPath}/sys/cdPrice/getAreas?parentCode="+val,function(result){
		    		$.each(result, function(i, v){
		    			sec.innerHTML+="<option value='"+v.code+"'>"+v.name+"</option>";
		    		});
		  		});
		    }     
		}
		initAreaProvince();
</script>