You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* DataTable二次封装
* @author [刘耀填]
* @date 2018-10-08
*/
define(['constant', 'utils'], function(constant, utils){
var table = {
"instance": null,
"api": '',
"queryParams": {}
};
// 初始化Datatables实例 并 绑定行点击事件
function init(option) {
var tableId = option.id;
var $table = $('#' + tableId);
var ajaxFun = option.ajax;
if (typeof ajaxFun !== "function") {
var ajaxSetting = option.ajaxSetting;
if (typeof ajaxSetting.api === 'string') {
table.queryParams = ajaxSetting.queryParamsDefault || {};
table.api = ajaxSetting.api;
ajaxFun = createAjaxFun;
} else {
alert('ajaxSetting配置错误');
}
}
table.instance = $table.DataTable({
"select": false,
"scrollX": option.scrollX,
"scrollY": option.scrollY,
"language": constant.DATATABLE_LANGUAGE,
"processing": true, // 加载提示
"serverSide": true, // 启用服务器端分页
"searching": option.searching, // 禁用原生搜索
"orderMulti": false, // 启用多列排序
"ordering": false, // 排序查询
/*"autoWidth": false,*/
"lengthMenu": [15, 30, 50], // 每页显示条数默认10
"bLengthChange": true,
"pagingType": "full_numbers", // 分页样式simple,simple_numbers,full,full_numbers
"ajax": ajaxFun,
"rowId": option.rowId ? option.rowId : "id",
"columns": option.columns
});
// 行点击事件
$table.find('tbody').on('click', 'tr', function () {
$(this)
.addClass('selected')
.siblings('.selected').removeClass('selected'); // 高亮显示
});
return table.instance;
}
function createAjaxFun(data, callback, settings) {
var ajaxOption = {
type: 'post',
contentType: 'application/json;charset=UTF-8',
url: table.api + "?rows=" + data.length + "&page=" + (data.start / data.length + 1),
data: JSON.stringify(table.queryParams),
success: function (ret) {
if (ret.code === 200) {
var data = ret.obj;
var tableData = data.items || []; // 无记录返回为null需要处理为[]
var callbackJson = {
'recordsTotal': data.totalNum, // 总记录数,分页显示用
'recordsFiltered': data.totalNum, // 过滤后的总记录数
'data': tableData // 表格填充用的数据
};
callback(callbackJson);
} else {
layer.msg('获取记录失败!(' + ret['msg'] + ')', {icon: 2});
}
}
};
utils.ajax(ajaxOption);
}
// 重新加载表格数据
function reload(params) {
table.queryParams = params || table.queryParams; // 使用createAjaxFun时才需要外部传参
table.instance.ajax.reload(); // 重新加载表格数据
}
// 刷新当前页数据
function refresh() {
table.instance.draw(false);
}
return {
'init':init,
'reload': reload,
'refresh': refresh
}
});