| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- 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 = '<table class="' + tableClass + '">';
- var columns = _config.columns;
- var theadTemp = '<thead><tr>';
- //添加全选按钮
- if(_config.checked) {
- theadTemp += '<th style="width:25px;"><input type="checkbox" id="begtable-selected-all"></th>'
- }
- for(var i = 0; i < columns.length; i++) {
- theadTemp += '<th>' + columns[i].title + '</th>'
- }
- theadTemp += '</tr></thead>';
- var tbodyTemp = '<tbody>';
- var data = _config.data;
- if(data !== undefined && typeof(data) === 'object') {
- for(var i = 0; i < data.length; i++) {
- var tr = '<tr>';
- if(_config.checked) {
- tr += '<td style="text-align: center;"><input type="checkbox" /></td>';
- }
- for(var j = 0; j < columns.length; j++) {
- tr += '<td>' + data[i][columns[j].field] + '</td>';
- }
- tr += '</tr>';
- tbodyTemp += tr;
- }
- }
- tbodyTemp += '</tbody>';
- tableTemp = tableTemp + theadTemp + tbodyTemp + '</table>';
- //渲染table
- $container.html('<div class="beg-table-box"><div class="beg-table-body">' + tableTemp + '</div></div>');
- //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('<div class="beg-table-paged"></div>');
- 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);
- });
- });
|