469 lines
23 KiB
JavaScript
469 lines
23 KiB
JavaScript
|
||
$(function () {
|
||
var tablepage_methods = {
|
||
};
|
||
$.fn.tablepage = function (settings, 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) {
|
||
|
||
//console.log("settings:" + settings);
|
||
//console.log(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 == " " ? "" : _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 == " " ? "" : _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 == " " ? "" : _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);
|
||
}
|
||
}
|
||
|
||
}); |