(function($) { $.fn.search = function(params,successCallback,failCallback) { if(!params) params = {}; var table = $(this).attr("id"); var div = table+"_div"; if(!params.currentPageIndex) params.currentPageIndex = 1; params = $("#"+table).params(params); var pageSize = $("#"+table+"-selectpagesize-server").val(); if(pageSize == undefined || pageSize == ""){ pageSize = 10; } params.pageSize = pageSize; if(!params._clazz){ //var clazz = $("#_clazz"); if($("#_clazz") != undefined){ params._clazz = $("#_clazz").text(); } } //自定义Action if($("#_action") != undefined){ params._action = $("#_action").text(); } if(!params._action){ var source = $("#"+div).attr("source"); if(typeof(source) == "string") source = eval("("+source+")"); if(source.server) params._action = source.server; else params._action = "_page"; } Newtouch.Ajax.sendParams(params, params._action, function(data){ addJSONData(table, data ,params); if(successCallback){ if(typeof(successCallback)=="function"){ successCallback(data); } if(typeof(successCallback)=="string"){ eval(successCallback); } } }, function(error){ if(failCallback){ if(typeof(failCallback)=="function"){ failCallback(error); } if(typeof(failCallback)=="string"){ eval(failCallback); } } }, true); }; $.fn.getSelectRows = function(){ var id = $(this).attr("id"); var manager = $("#"+id+"_div").webGetGridManager(); var rows = manager.getCheckedRows(); return rows; } $.fn.params = function(params){ var id = $(this).attr("id"); var origData = $("#"+id+"_div").data("params"); if(!origData) origData={}; if(!params) return origData; var data = $.extend(origData,params); $("#"+id+"_div").data("params",data); return data; }; $.fn.value = function(data){ var initData = eval("({currentPageIndex:1,lastPageIndex:1,nextPageIndex:1,pageSize:"+$("#payAndTaxGrid-selectpagesize-server").val()+",previousPageIndex:1,totalCount:"+data.length+",totalPage:"+Math.ceil(data.length/$("#payAndTaxGrid-selectpagesize-server").val())+",items:null})"); initData["items"] = data; var divId = $(this).attr("id"); addJSONData(divId,initData); }; $.fn.displayPageBar = function(){ var id = $(this).attr("id"); $("#"+id+"_div").find(".n-panel-bar").attr("style","display:none;"); }; $.fn.webuiGrid = function(p){ var _clazz = $(this).attr("clazz"); if(!_clazz) _clazz = "_clazz"; $("#"+_clazz).attr("style","display:none;"); if(!p) p = {}; var dom = this; var tableId = $(dom).attr("id"); if(tableId == undefined || tableId == ""){ $(dom).attr("id","grid_table"); tableId = "grid_table"; } //外层div var $div = $(dom).parent(); if($div.attr('tagName') != 'DIV'){ $(dom).wrap("
") } $div = $(dom).parent(); var _div = $div.attr("id"); if(_div == undefined || _div == ""){ $div.attr("id",tableId+"_div"); _div = tableId+"_div"; } $div.addClass("web-grid"); //处理外层form $div.wrap("
"); $div.before("
"); $("#"+tableId+"_div").data("params",{_clazz:$("#"+_clazz).text()}); //编辑grid var enabledEdit = false; if($(dom).attr("class") != undefined){ if($(dom).attr("class").indexOf("editable") != -1){ enabledEdit = true; } } //grid checkbox var checkbox = false; //grid列名 var colums = new Array(); //grid sort var sortColumns = new Array(); //grid colmn width var colWidth = new Array(); //checkbox function var is_checked = null; $("#"+tableId+" thead tr th").each(function(index, dom){ if($(dom).attr("class") != undefined && $(dom).attr("class").indexOf("checkbox") != -1){ checkbox = true; if($(dom).attr("func")) is_checked = $(dom).attr("func"); }else{ //列属性 var colum = {}; var field = $(dom).attr("field"); var text = $(dom).text(); var type = $(dom).attr("type"); if(!type) type = $(dom).attr("xtype"); if(!type) type = "text"; var _width = $(dom).attr("width"); if(_width){ colWidth.push(_width); }else{ colWidth.push("null"); } colum["display"] = text; colum["name"] = field; if($(dom).attr("align")) colum["align"] = $(dom).attr("align"); switch (type) { case "int": colum["editor"] = { type: 'int' }; colum["type"] = 'int'; break; case "date": colum["editor"] = { type:'date'}; colum["type"] = 'date' ; break; case "text": colum["editor"] = { type: 'text' }; colum["render"] = function (item){ if(item[field+"_name"]) return item[field+"_name"]; return item[field]; }; break; case "float": colum["editor"] = { type:'float'}; colum["type"] = 'float' ; break; case "string": colum["editor"] = { type: 'string' }; break; case "mtilselect": colum["editor"] = {}; var _initData = $(".initData_span").text(); if(_initData != "") _initData = eval("("+ _initData +")"); var data = _initData[field+"Data"]; colum["editor"]["data"] = data; if(!data){ colum["editor"] = { type: 'text' }; colum["render"] = function (item){ if(item[field+"_name"]) return item[field+"_name"]; return item[field]; }; break; } colum["editor"]["type"] = 'mtilselect'; colum["editor"]["valueColumnName"] = field + "_code"; colum["editor"]["displayColumnName"] = field + "_name"; colum["render"] = function (item){ var list = data; var text = ""; if(typeof(item[field]) == "array"){ for (var i = 0; i < list.length; i++){ if ($.inArray(""+list[i][field+"_code"], item[field]) != -1) text += list[i][field+"_name"]+";"; } }else if(typeof(item[field]) == "string"){ item[field] = item[field].replace(";",","); if(item[field].indexOf("[") == -1){ item[field] = "[" +item[field] + "]"; } var values = eval("("+item[field]+")"); for (var i = 0; i < list.length; i++){ var k = eval("("+list[i][field+"_code"]+")"); if ($.inArray(k, values) != -1){ text += list[i][field+"_name"]+";"; } } } if(text != "") return text; return item[field]; }; break; case "select": colum["editor"] = {}; var _initData = $(".initData_span").text(); if(_initData != "") _initData = eval("("+ _initData +")"); var data = _initData[field+"Data"]; if(!data){ colum["editor"] = { type: 'text' }; colum["render"] = function (item){ if(item[field+"_name"]) return item[field+"_name"]; return item[field]; }; break; } colum["editor"]["type"] = 'select'; colum["editor"]["valueColumnName"] = field + "_code"; colum["editor"]["displayColumnName"] = field + "_name"; colum["editor"]["data"] = data; colum["render"] = function (item){ if(item[field+"_name"]) return item[field+"_name"]; var list = data; for (var i = 0; i < list.length; i++) { if (list[i][field+"_code"] == item[field]) return list[i][field+"_name"]; } return item[field]; }; break; case "format": colum["format"] = true; colum["isAllowHide"] = false; var func = $(dom).attr("func"); if(func){ colum["render"] = eval("("+func+")"); } break; case "rownum": colum["format"] = true; var clazz = $(dom).attr("class"); if(!clazz) clazz = ""; if(clazz.indexOf("continue") != -1){ colum["render"] = function(item,rowindex){ var parent = $("#"+tableId+"-selectpagesize-server").parent().parent(); var num = Number($("#"+tableId+"-selectpagesize-server").val()); var current = Number($(".currentPageIndex-server",parent).val()); var index = (current-1) * num +rowindex +1; return index; }; }else{ colum["render"] = function(item,rowindex){ return (rowindex + 1); }; } break; case "casecade": colum["editor"] = {}; colum["editor"]["type"] = 'select'; colum["editor"]["valueColumnName"] = field + "_code"; colum["editor"]["displayColumnName"] = field + "_name"; colum["editor"]["data"] = data; colum["render"] = function (item){ }; break; } var validate = $(dom).attr("validate"); if(validate != null){ colum["validate"] = validate; } colums.push(colum); if($(dom).attr("class") != undefined && $(dom).attr("class").indexOf("sort") != -1){ sortColumns.push(field); } } }); //grid 数据源 var source = $(dom).attr("source"); $div.attr("source",source); //grid 数据源方式 var server = false; if(source != undefined){ if(typeof(source) == "string") source = eval("("+source+")"); if(source["server"] != undefined){ server = true; } }else{ server = true; } //grid pagebar var usePager = false; //grid pagebar var page = ""; //grid 自带button var btnColumns = []; //其余button var gridButtons = new Array(); $("#"+tableId+" tfoot").each(function(index, dom){ var _css = $(dom).attr("class"); if(_css.indexOf("pagebar") != -1){ usePager = true; page = "page"; }else if(_css.indexOf("pagebtn") != -1){ usePager = true; page = "page2"; } var btnColumn =$(dom).attr("btnColumn"); if(btnColumn){ btnColumns = btnColumn.split(","); } $(dom).find("tr td").each(function(index,dom){ $(dom).find("input").each(function(index,dom){ var but = {}; but["id"] = $(dom).attr("id"); but["value"] = $(dom).attr("value"); but["class"] = $(dom).attr("class"); but["style"] = $(dom).attr("style"); but["type"] = $(dom).attr("type"); gridButtons.push(but); }); }); }); var height = "100%"; if($("#"+tableId).attr("height")) height = $("#"+tableId).attr("height"); var cols = $("#"+tableId+" thead tr th").length - 1; if(cols == 0) cols = 1; $("#"+_div).webGrid({ isScroll: true, height: height, columns:colums, colWidth:colWidth, enabledEdit:enabledEdit, checkbox:checkbox, isChecked:eval("("+is_checked+")"), usePager:usePager, page:page, btnColumn:btnColumns, gridBtns:gridButtons, table:tableId, server:server, sortColumns:sortColumns, rowAttrRender:p.rowRender }); //数据处理方式 if(server){ if(source.autoload == undefined ||source.autoload == true) $("#"+tableId).search(); if(usePager){ //工具条 $("#"+tableId+"-selectpagesize-server").change(function(){ $("#"+tableId).search(); }); createPagebar(tableId); } }else{ var gridManager = $("#"+_div).webGetGridManager(); gridManager.loadData(source["local"]); } $.metadata.setType("attr", "validate"); $(".grid-validate").validate({ // debug: true, errorPlacement: function(lable, element) { element.webuiTip({ content: lable.html()}); // element.css({"border":"1px solid red"}); } }); $(".web-dialog").each(function(index,dom){ var url = $(dom).attr("url"); var element = $(dom).attr("element"); var eleArray = element.split(","); for(var i = 0;i totalBtns){ div2 = "..."; } if(currentPageIndex > totalBtns){ var n = parseInt(totalBtns/2); if(totalBtns%2 != 0) n = n + 1; index = currentPageIndex - n; count = currentPageIndex; div1 = "..."; } if(index == 1) div1 = ""; $page.append(""+div1+""); for(;index<=count ;index++){ select_class = ""; if(index == currentPageIndex) select_class = "n-select-btn"; $page.append(""); } if(index-1 == totalPage) div2 = ""; $page.append(""+div2+""); } }; var createPagebar = function(tableId){ var page = $("div.n-panel-bar"); var successCallback; var failCallback; if($("input.successCallback",$("#"+tableId+"_div"))){ successCallback = $("input.successCallback",$("#"+tableId+"_div")).val(); } if($("input.failCallback",$("#"+tableId+"_div"))){ failCallback = $("input.failCallback",$("#"+tableId+"_div")).val(); } $("div.n-bar-btnfirst-server",page).bind("click",function(){ if(!$(".n-bar-btnfirst-server span").hasClass("n-disabled")){ $("#"+tableId).search({currentPageIndex:1},successCallback,failCallback); } }); $("div.n-bar-btnprev-server",page).bind("click",function(){ if(!$(".n-bar-btnprev-server span").hasClass("n-disabled")){ var _currentPageIndex = $("input.currentPageIndex-server",page); var currentPageIndex = parseInt($(_currentPageIndex).val()); $("#"+tableId).search({currentPageIndex:currentPageIndex>1?(currentPageIndex-1):1},successCallback,failCallback); } }); $("div.n-bar-btnnext-server",page).bind("click",function(){ if(!$(".n-bar-btnnext-server span").hasClass("n-disabled")){ var _currentPageIndex = $("input.currentPageIndex-server",page); var currentPageIndex = parseInt($(_currentPageIndex).val()); var span_totalPage = $("span.totalPage-server",page); var totalPage = parseInt($(span_totalPage).html()); $("#"+tableId).search({currentPageIndex:currentPageIndex= 1 && currentPageIndex <= totalPage){ $("#"+tableId).search({currentPageIndex:currentPageIndex>totalPage?totalPage:(currentPageIndex<1?1:currentPageIndex)},successCallback,failCallback); } } }); $("div.n-bar-btnload-server",page).bind("click",function(){ var span_totalPage = $("span.totalPage-server",page); var totalPage = parseInt($(span_totalPage).html()); var input = $("input.currentPageIndex-server",page); var currentPageIndex = parseInt($(input).val()); if(currentPageIndex >= 1 && currentPageIndex <= totalPage){ $("#"+tableId).search({currentPageIndex:currentPageIndex>totalPage?totalPage:(currentPageIndex<1?1:currentPageIndex)},successCallback,failCallback); } }); $(".n-page-count",page).bind("click",function(e){ var obj = (e.target || e.srcElement); if(obj.tagName.toLowerCase() == "input" ){ var currentPageIndex = parseInt($(obj).val()); $("#"+tableId).search({currentPageIndex:currentPageIndex}); } }); /** * 项目组需求:翻页为按钮 * **/ // $("input", $(".n-page-count",page)).hover(function(){ // $(this).addClass("n-bar-button-over"); // }, function(){ // $(this).removeClass("n-bar-button-over"); // }); /** * 项目组需求:排序通过整个数据库排 * **/ // $("span.n-grid-hd-cell-text",$("#"+tableId+"_div")).bind("click",function(e){ // var obj = $((e.target || e.srcElement)).next(); // if(obj.length != 0 && obj.hasClass("n-grid-hd-cell-sort")){ // var sortName = obj.parent().parent().attr("columnname"); // var ad = null; // if(obj.hasClass("n-grid-hd-cell-sort-desc")) // ad = "desc"; // else if(obj.hasClass("n-grid-hd-cell-sort-asc")) // ad = "asc"; // // $("#"+tableId).search({orderBy:sortName,ascOrDescs:ad}); // } // }); };