ComplianceServer/oldcode/WEB/Scripts/op/jquery.tablegrid.js

469 lines
23 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$(function () {
var tablepage_methods = {
};
$.fn.tablepage = function (settings, n1) {
//console.log("settings:" + settings);
//console.log(n1);
var _gridid = $(this).attr("id");
if (_gridid == null)
return;
var pageControl = $(".datagrid-pager:[tableid='" + _gridid + "']");
if (pageControl.length == 0)
return;
if (settings == null) {//第一次初始化。如果没有数据不需要初始化
var pageHtml = '<div class="layui-table-page">';
pageHtml += '<div class="layui-box layui-laypage layui-laypage-default">';
var methods = JSON.parse($(pageControl).attr("pagination"));
//========limit选择===============
pageHtml += '<span class="layui-laypage-limits"><select lay-ignore="">';
$(methods.pagination.split(',')).each(function (d, m) {
if (methods.rows.toString() == m)
pageHtml += '<option value="' + m + '" selected>' + m + ' 条/页</option>';
else
pageHtml += '<option value="' + m + '">' + m + ' 条/页</option>';
});
pageHtml += "</select></span>";
//========Count数据量=============
pageHtml += '<span class="layui-laypage-count">共 0 条</span>';
//========上一页=======================
pageHtml += '<a href="javascript:;" class="layui-laypage-prev layui-disabled" data-page="0"><i class="layui-icon layui-icon-left"></i></a>';
//========第一页=======================
pageHtml += '<span class="depage">';//详细页数
pageHtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>1</em></span>';
pageHtml += '</span>';
//========下一页=======================
pageHtml += '<a href="javascript:;" class="layui-laypage-next layui-disabled"><i class="layui-icon layui-icon-right"></i></a>';
//========到第几页=====================
pageHtml += '<span class="layui-laypage-skip">到第<input type="text" min="1" value="1" class="layui-input" drump>页<button drumpbtn type="button" class="layui-laypage-btn">确定</button></span>';
//========刷新当前page=================
pageHtml += '<a href="javascript:;" data-page="37" class="layui-laypage-refresh"><i class="layui-icon layui-icon-refresh"></i></a>';
pageHtml += "</div></div>";
$(pageControl).html(pageHtml);
//点击那一页
$(".datagrid-pager:[tableid='" + _gridid + "'] [data-page]:not(.layui-disabled)").live("click", function () {
var methods = JSON.parse($(pageControl).attr("pagination"));
methods.page = parseInt($(this).attr("data-page"));
$(pageControl).find("[drump]").val(methods.page);
$("#" + _gridid).tablegrid("Load", methods);
});
//点击跳转页面按钮
$(pageControl).find("[drumpbtn]").click(function () {
var te = /^[1-9]+[0-9]*]*$/;
var methods = JSON.parse($(pageControl).attr("pagination"));
var drumpvalue = $(pageControl).find("[drump]");
if (!te.test($(drumpvalue).val())) {
$(this).val(1);
methods.page = 1;
} else {
var pageNumber = parseInt($(drumpvalue).val());
if (pageNumber <= 1)
methods.page = 1;
else if (pageNumber >= methods.totalPages)
methods.page = methods.totalPages;
else
methods.page = pageNumber;
}
$("#" + _gridid).tablegrid("Load", methods);
pagination_state_load(methods);
});
///调整每页limit
$(pageControl).find("[lay-ignore]").change(function () {
var methods = JSON.parse($(pageControl).attr("pagination"));
methods.rows = $(this).val();
methods.page = 1;
$(pageControl).find("[drump]").val(methods.page);
$("#" + _gridid).tablegrid("Load", methods);
pagination_state_load(methods);
});
} else if (settings == "getPagination") {
var methods = JSON.parse($(pageControl).attr("pagination"));
return methods;
} else if (settings == "setPagination") {
pagination_state_load(n1);
}
///修改上一页下一页的按钮状态
function chnageFisrtOrLast(pageControl, methods) {
$(pageControl).find('.layui-laypage-refresh').attr("data-page", methods.page);
if (methods.page <= 1) {
$(pageControl).find('.layui-laypage-prev').attr("data-page", methods.page - 1).addClass("layui-disabled");
} else {
$(pageControl).find('.layui-laypage-prev').attr("data-page", methods.page - 1).removeClass("layui-disabled");
}
if (methods.page >= methods.totalPages) {
$(pageControl).find('.layui-laypage-next').attr("data-page", methods.page + 1).addClass("layui-disabled");
} else {
$(pageControl).find('.layui-laypage-next').attr("data-page", methods.page + 1).removeClass("layui-disabled");
}
}
function pagination_state_load(methods) {
var shenlvehtml = '<span class="layui-laypage-spr">…</span>';
methods = $.extend($("#" + _gridid).tablepage("getPagination"), methods);
var nowhtml = "";
if (methods.totalPages <= 6) {//如果大于6页中间部分页面用....代替
for (var i = 1; i <= methods.totalPages; i++) {
if (i == methods.page) {
nowhtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' + methods.page + '</em></span>';
} else {
nowhtml += '<a href="javascript:;" data-page="' + i + '">' + i + '</a>';
}
}
} else {//超过6页
if (methods.page == 1)
nowhtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>1</em></span>';//选中了第一页
else
nowhtml += '<a href="javascript:;" data-page="1">1</a>';//第一页
if ((methods.page - 1) > 3) {
nowhtml += shenlvehtml;//省略号
}
if (methods.page < 5) {//小于5的时候
for (var i = 2; i <= 5; i++) {
if (i == methods.page) {
nowhtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' + i + '</em></span>';//选中了最后一页
} else {
nowhtml += '<a href="javascript:;" data-page="' + i + '">' + i + '</a>';//
}
}
} else if ((methods.totalPages - methods.page) > 3) {
for (var i = methods.page - 2; i <= methods.page + 2; i++) {
if (i == methods.page) {
nowhtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' + i + '</em></span>';//选中了最后一页
} else {
nowhtml += '<a href="javascript:;" data-page="' + i + '">' + i + '</a>';//
}
}
} else {
for (var i = methods.totalPages - 4; i < methods.totalPages; i++) {
if (i == methods.page) {
nowhtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' + i + '</em></span>';//选中了最后一页
} else {
nowhtml += '<a href="javascript:;" data-page="' + i + '">' + i + '</a>';//
}
}
}
if ((methods.totalPages - methods.page) > 3) {
nowhtml += shenlvehtml;//省略号
}
if (methods.page == methods.totalPages) //最后一页
nowhtml += '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' + methods.totalPages + '</em></span>';//选中了最后一页
else
nowhtml += '<a href="javascript:;" data-page="' + methods.totalPages + '">' + methods.totalPages + '</a>';//
}
chnageFisrtOrLast(pageControl, methods);//修改上一页和下页状态
$(pageControl).find(".depage").html(nowhtml);
$(pageControl).find(".layui-laypage-count").html("共 " + methods.totalRows + " 条");
//var pageHtml = '<div class="layui-table-page">';
//pageHtml +='<div class="layui-box layui-laypage layui-laypage-default">';
//pageHtml += "</div></div>";
//$(pageControl).html(pageHtml);
//$("[tableid='" + _gridid + "'] .pagination-num").val(methods.page);
//$(pageControl).find("[nid='ofPage']").html("of " + methods.totalPages);
//$(pageControl).find(".pagination-info").html(function () {
// return "共 " + methods.totalRows + " 条";
//});
//if (methods.page <= 1) {
// $("[tableid='" + _gridid + "'] .pagination-first").parent().parent().parent().addClass("l-btn-disabled");
// $("[tableid='" + _gridid + "'] .pagination-prev").parent().parent().parent().addClass("l-btn-disabled");
//}
//else {
// $("[tableid='" + _gridid + "'] .pagination-first").parent().parent().parent().removeClass("l-btn-disabled");
// $("[tableid='" + _gridid + "'] .pagination-prev").parent().parent().parent().removeClass("l-btn-disabled");
//}
//if (methods.page >= methods.totalPages) {
// $("[tableid='" + _gridid + "'] .pagination-next").parent().parent().parent().addClass("l-btn-disabled");
// $("[tableid='" + _gridid + "'] .pagination-last").parent().parent().parent().addClass("l-btn-disabled");
//} else {
// $("[tableid='" + _gridid + "'] .pagination-next").parent().parent().parent().removeClass("l-btn-disabled");
// $("[tableid='" + _gridid + "'] .pagination-last").parent().parent().parent().removeClass("l-btn-disabled");
//}
$(pageControl).attr("pagination", JSON.stringify(methods));
}
}
$.fn.tablegrid = function (settings, n1) {
var _gridid = $(this).attr("id");
if (_gridid == null)
return;
var parames = {
url: '',//地址
data: {},//参数
height: 0,//高度
isCheckMore: false,//是否可以多选
isRotating30: true,//是否为转动30s自动关闭转动
//page: 1,//当前第几页
//rows: 15,//每页行数
//order: "",//排序方式
//sort: "",//排序列
loadNow: false//是否立马更新数据
}
var qutype = typeof (settings);
if (qutype == "string" || qutype == null) {
if (settings == null) {//啥都不传,重新样式
datagrid_style_load();
}
else if (settings == "getSelected") {
var selected = {};
var index = 0;
$("#" + _gridid + " .tr_onclick td:[field]").each(function (i, n) {
var _html = $.trim($(n).text());
selected[$(n).attr("field")] = (_html == "&nbsp;" ? "" : _html);
index++;
});
if (index == 0)
return null;
else
return selected;
} else if (settings == "getHead") {
var head = [];
var index = 0;
$("#" + _gridid + " th[field]:not(:hidden)").each(function (i, n) {
head[i] = { field: $(n).attr("field"), title: $(n).text() };
index++;
});
if (index == 0)
return null;
else
return head;
} else if (settings == "getAllHead") {
var head = [];
var index = 0;
$("#" + _gridid + " th[field]").each(function (i, n) {
head[i] = { field: $(n).attr("field"), title: $(n).text() };
index++;
});
if (index == 0)
return null;
else
return head;
} else if (settings == "getSelections") {
var selections = new Array();
var index = 0;
$("#" + _gridid + " .tr_onclick").each(function (i, n) {
var row = {};
$(n).find("td:[field]").each(function (j, m) {
var _html = $(m).html()
row[$(m).attr("field")] = (_html == "&nbsp;" ? "" : _html);
});
selections[i] = row;
index++;
});
return selections;
} else if (settings == "getAllRows") {
var selections = new Array();
var index = 0;
$("#" + _gridid + " tr:gt(0)").each(function (i, n) {
var row = {};
$(n).find("td:[field]").each(function (j, m) {
var _html = $(m).html()
row[$(m).attr("field")] = (_html == "&nbsp;" ? "" : _html);
});
selections[i] = row;
index++;
});
return selections;
} else if (settings == "getOptions") {
return JSON.parse($("#" + _gridid).attr("gridParames"));
}
else if (settings == "Load") {
if (n1 == null)
n1 = $("#" + _gridid).tablepage("getPagination");
datagrid_getData(n1);
} else if (settings == "Search") {
if (n1 == null)
n1 = $("#" + _gridid).tablepage("getPagination");
datagrid_getData($.extend(n1, { page: 1 }));
} else if (settings == "Clear") {
$("#" + _gridid).tablepage("setPagination", { page: "1", totalRows: "0", totalPages: "0" });
$("#" + _gridid + " tbody").html("");
}
else if (settings == "resize") {
if (parseInt(n1.height) < 200)
n1.height == 200;
$("#" + _gridid).parent().height(n1.height);
$("#" + _gridid).parent().parent().height(n1.height + 60);
}
} else if (qutype == "object") {
$.extend(parames, settings);
$("#" + _gridid).tablepage();//加载分页
$("#" + _gridid).attr("gridParames", JSON.stringify(parames));//存储table参数信息
//给委托赋值
funcLoad();
$("#" + _gridid + " .tablegrid_sort").unbind('click').click(function () {//排序操作的绑定
if ($(this).hasClass("tablegrid_sort_desc"))//有过有升序
{
$("#" + _gridid + " .tablegrid_sort_asc").removeClass("tablegrid_sort_asc");//移除所有效果
$("#" + _gridid + " .tablegrid_sort_desc").removeClass("tablegrid_sort_desc");
$(this).addClass("tablegrid_sort_asc");
} else {
$("#" + _gridid + " .tablegrid_sort_asc").removeClass("tablegrid_sort_asc");//移除所有效果
$("#" + _gridid + " .tablegrid_sort_desc").removeClass("tablegrid_sort_desc");
$(this).addClass("tablegrid_sort_desc");
}
$("#" + _gridid).tablegrid("Load");//重新加载数据
});
if (parames.loadNow) {
var pagemessage = $("#" + _gridid).tablepage("getPagination");//获取分页信息
if (pagemessage != null) {
parames.page = pagemessage.page;
parames.rows = pagemessage.rows;
parames.orders = pagemessage.orders;
parames.sorts = pagemessage.sorts;
n1 = pagemessage;
}
datagrid_getData(parames);//加载数据
if (pagemessage != null) {
$("#" + _gridid).tablepage("setPagination", n1);
}
}
datagrid_style_load();
}
function datagrid_getData(params) {
var orderCloumn = $("#" + _gridid + " .tablegrid_sort_asc");//排序列
if (orderCloumn.length > 0) {
params.sort = $(orderCloumn).attr("field");
params.order = "asc";
} else {
orderCloumn = $("#" + _gridid + " .tablegrid_sort_desc");//排序列
if (orderCloumn.length > 0) {
params.sort = $(orderCloumn).attr("field");
params.order = "desc";
}
}
var gridParames = JSON.parse($("#" + _gridid).attr("gridParames"));
var allCanshu = $.extend({ columns: $("#" + _gridid).attr("columns") }, params);
allCanshu = $.extend(allCanshu, gridParames);
var canshu = {
order: allCanshu.order,
page: allCanshu.page,
rows: allCanshu.rows,
sort: allCanshu.sort,
totalPages: allCanshu.totalPages,
totalRows: allCanshu.totalRows,
columns: allCanshu.columns
};
var dataType = typeof (tablepage_methods[_gridid]["data"]);
if (dataType == "function") {
canshu = $.extend(canshu, tablepage_methods[_gridid]["data"]());
} else if (dataType = "object") {
canshu = $.extend(canshu, tablepage_methods[_gridid]["data"]);
} else { }
var r_ajax_position = {
url: gridParames.url,
type: "Post",
data: $.extend(canshu, GetParams()),
dataType: "json",
async: true,//异步请求
loading: true,
success: function (data) {
if ($("#" + _gridid).find("thead").length > 0)
$("#" + _gridid + " tbody").html("");
else
$("#" + _gridid + " tr:gt(0)").remove();
if (data.errorMessag && data.errorMessag != "") {
$.messageBoxAuto('提示', data.errorMessag);
}
else {
$("#" + _gridid + " tbody").append(data.rowsList);
if (data.foot != null) {
if ($("#" + _gridid + " tfoot").length == 0)
$("#" + _gridid).append("<tfoot>" + data.foot + "</tfoot>");
else {
$("#" + _gridid + " tfoot").html("");
$("#" + _gridid + " tfoot").append(data.foot);
}
}
if (n1 != null) {
n1.totalPages = data.totalPages;
n1.totalRows = data.totalRows;
}
datagrid_style_load();
$("#" + _gridid).tablepage("setPagination", n1);
evalFunc("onLoadSuccess", data);//成功执行
}
}, error: function (xx) {
evalFunc("onLoadError");//成功执行
}
}
$.r_ajax(r_ajax_position);
}
//事件绑定
function datagrid_event_bind() {
if ($("#" + _gridid).attr("state") == "true")
return;
var gridParames = JSON.parse($("#" + _gridid).attr("gridParames"));
if (!gridParames.isCheckMore)
$("#" + _gridid + " [ntype='checkAll']").remove();
else {
$("#" + _gridid + " [ntype='checkAll']").click(function () {
if ($(this).attr("checked") == "checked")
$("#" + _gridid + " tr:gt(0)").not(":has(input:disabled)").addClass("tr_onclick").find("input:checkbox").attr("checked", "checked");
else
$("#" + _gridid + " tr:gt(0)").not(":has(input:disabled)").removeClass("tr_onclick").find("input:checked").removeAttr("checked");
});
}
$("#" + _gridid + " tbody tr:not(.grid_table_head)").live("click", function () {
if (!gridParames.isCheckMore) {
$("#" + _gridid + " .tr_onclick").removeClass("tr_onclick").find("input:checked").removeAttr("checked");//单选模式
$(this).addClass("tr_onclick").find(":checkbox").attr("checked", "checked");
} else {
var checkbox = $(this).find(":checkbox");
if ($(checkbox).attr("disabled") == null) {
$(this).toggleClass("tr_onclick");
if ($(this).hasClass("tr_onclick")) {
$(checkbox).attr("checked", "checked");
} else {
$(checkbox).removeAttr("checked");
}
}
}
});
if (gridParames.height == 0)
gridParames.height = $(window).height() - 170;
gridParames.height = gridParames.height - 20;
//console.log("我改了没"+gridParames.height);
$("#" + _gridid).parent().height(gridParames.height);
$("#" + _gridid).parent().parent().height(gridParames.height + 70);
$("#" + _gridid).attr("state", "true");//已经加载完事件绑定
}
function datagrid_style_load() {
$("#" + _gridid + " tr:gt(1):even").addClass("bas_datagrid_tr_even");
datagrid_event_bind();
}
function funcLoad() {
tablepage_methods[_gridid] = {
onLoadSuccess: settings.onLoadSuccess,
onLoadError: settings.onLoadError,
data: settings.data
};
}
function evalFunc(manager, data) {
if (tablepage_methods[_gridid][manager] != null)
tablepage_methods[_gridid][manager](data);
}
}
});