layui.config({ base: 'plugins/layui/modules/' }); layui.define(['layer', 'laypage', 'icheck'], function(exports) { "use strict"; var $ = layui.jquery, layer = parent.layer === undefined ? layui.layer : parent.layer, laypage = layui.laypage; /** * @description begtable元素 */ var ELEM = { table: 'beg-table', hover: 'beg-table-hovered', border: 'beg-table-bordered', strip: 'beg-table-striped' }; /** * @constructor begTable 构造函数 */ var begTable = function() { this.config = { elem: undefined, //存放begtable的窗口,必填 bordered: false, //是否加边框 striped: false, //是否显示斑马线 hovered: false, //鼠标悬停样式 checked: false, //显示多选按钮 checkboxClass: 'icheckbox_flat-green', //checkbox样式 tips: '这是默认Tips', columns: undefined, // 数据列 url: undefined, //远程地址 data: undefined, //数据 identity: undefined, // 标识字段 paged: true, //启用分页功能 type: 'get', //远程读取数据的方式 pageSet: { jump: undefined, // groups: 5, } //分页设置 }; }; /** * @description 设置 * @param {Object} options */ begTable.prototype.set = function(options) { var that = this; $.extend(true, that.config, options); return that; }; /** * @description 获取选择的行 */ begTable.prototype.getSelectedRows = function() { console.log(this.config.tips); }; /** * 初始化begtable */ begTable.prototype.init = function() { var _that = this; var _config = _that.config; var elem = _config.elem; if(typeof(elem) !== 'string' && typeof(elem) !== 'object') { throwError('elem参数未定义或设置出错,具体设置格式请参考文档API.'); } var $container; if(typeof(elem) === 'string') { $container = $(elem); } if(typeof(elem) === 'object') { $container = elem; } if($container.length === 0) { throwError('找不到elem参数配置的容器,请检查.'); } if(typeof(_config.columns) !== 'object') { throwError('请配置columns参数,具体设置格式请参考文档API'); } var tableClass = ELEM.table; if(_config.bordered) { tableClass += ' ' + ELEM.border; } if(_config.hovered) { tableClass += ' ' + ELEM.hover; } if(_config.striped) { tableClass += ' ' + ELEM.strip; } var tableTemp = ''; var columns = _config.columns; var theadTemp = ''; //添加全选按钮 if(_config.checked) { theadTemp += '' } for(var i = 0; i < columns.length; i++) { theadTemp += '' } theadTemp += ''; var tbodyTemp = ''; var data = _config.data; if(data !== undefined && typeof(data) === 'object') { for(var i = 0; i < data.length; i++) { var tr = ''; if(_config.checked) { tr += ''; } for(var j = 0; j < columns.length; j++) { tr += ''; } tr += ''; tbodyTemp += tr; } } tbodyTemp += ''; tableTemp = tableTemp + theadTemp + tbodyTemp + '
' + columns[i].title + '
' + data[i][columns[j].field] + '
'; //渲染table $container.html('
' + tableTemp + '
'); //checkbox if(_config.checked) { //渲染checkbox $container.find('input[type=checkbox]').iCheck({ checkboxClass: _config.checkboxClass }); } //分页 if(_config.paged) { var $tableBox = $container.children('.beg-table-box'); $tableBox.append('
'); loadData($tableBox, 1); } else { $container.find('.' + ELEM.table).css('margin-bottom', '0px'); } //msgErrorTips('请对begtable返回正确的JSON字符'); return _that; }; begTable.prototype.getConfig = function() { return this.config; }; /** * 加载数据 * @param {Object} $tableBox * @param {Number} page */ function loadData($tableBox, page) { //var that = ''; /*$.ajax({ type: that.config.type, success: function(result) { } });*/ laypage({ cont: $tableBox.find('.beg-table-paged'), curr: page, pages: 25, //总页数 groups: 5, //连续显示分页数 jump: function(obj, first) { //得到了当前页,用于向服务端请求对应数据 var curr = obj.curr; if(!first) { //layer.msg('第 '+ obj.curr +' 页'); that.loadData() } } }); } /** * 抛出一个异常错误信息 * @param {String} msg */ function throwError(msg) { throw new Error('betTable error:' + msg); return; } /** * 弹出一个错误提示 * @param {String} msg */ function msgErrorTips(msg) { layer.msg(msg, { icon: 5 }); return; } var begtable = new begTable(); //begtable.init(); exports('begtable', function(options) { return begtable.set(options); }); });