/** * 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 } });