layui.define(['table', 'jquery', 'form'], function (exports) { "use strict"; var MOD_NAME = 'tableSelect', $ = layui.jquery, table = layui.table, form = layui.form; var tableSelect = function () { this.v = '1.1.0'; }; /** * 初始化表格选择器 */ tableSelect.prototype.render = function (opt) { var elem = $(opt.elem); var tableDone = opt.table.done || function(){}; //默认设置 opt.searchKey = opt.searchKey || 'keyword'; opt.searchPlaceholder = opt.searchPlaceholder || '关键词搜索'; opt.checkedKey = opt.checkedKey; opt.table.page = opt.table.page || true; opt.table.height = opt.height || 315; //最小宽度 opt.width = opt.width || '530'; //多搜索条件 opt.searchType = opt.searchType || 'one'; opt.searchList = opt.searchList || [{key: opt.searchKey, placeholder: opt.searchPlaceholder}]; elem.off('click').on('click', function(e) { e.stopPropagation(); if($('div.tableSelect').length >= 1){ return false; } var t = elem.offset().top + elem.outerHeight()+"px"; var l = elem.offset().left +"px"; var tableName = "tableSelect_table_" + new Date().getTime(); var tableBox = '
'; tableBox += '
'; tableBox += '
'; //判断是否多搜索条件 if(opt.searchType == 'more'){ $.each(opt.searchList, function (index, item) { tableBox += ''; }); }else{ tableBox += ''; } tableBox += ''; tableBox += '
'; tableBox += ''; tableBox += '
'; tableBox += '
'; tableBox += '
'; tableBox = $(tableBox); $('body').append(tableBox); //数据缓存 var checkedData = []; //渲染TABLE opt.table.elem = "#"+tableName; opt.table.id = tableName; opt.table.done = function(res, curr, count){ defaultChecked(res, curr, count); setChecked(res, curr, count); tableDone(res, curr, count); }; var tableSelect_table = table.render(opt.table); //分页选中保存数组 table.on('radio('+tableName+')', function(obj){ if(opt.checkedKey){ checkedData = table.checkStatus(tableName).data } updataButton(table.checkStatus(tableName).data.length) }) table.on('checkbox('+tableName+')', function(obj){ if(opt.checkedKey){ if(obj.checked){ for (var i=0;i $(window).height(); var overWidth = (elem.offset().left + tableBox.outerWidth()) > $(window).width(); overHeight && tableBox.css({'top':'auto','bottom':'0px'}); overWidth && tableBox.css({'left':'auto','right':'5px'}) //关键词搜索 form.on('submit(tableSelect_btn_search)', function(data){ tableSelect_table.reload({ where: data.field, page: { curr: 1 } }); return false; }); //双击行选中 table.on('rowDouble('+tableName+')', function(obj){ var checkStatus = {data:[obj.data]}; selectDone(checkStatus); }) //按钮选中 tableBox.find('.tableSelect_btn_select').on('click', function() { var checkStatus = table.checkStatus(tableName); if(checkedData.length > 1){ checkStatus.data = checkedData; } selectDone(checkStatus); }) //写值回调和关闭 function selectDone (checkStatus){ if(opt.checkedKey){ var selected = []; for(var i=0;i