layui.define('table',function (exports) { "use strict"; var $ = layui.$ ,table = layui.table ,MOD_NAME = 'transfer',LEFT_TABLE = 'left-table-',RIGHT_TABLE = 'right-table-',LEFT_BTN = 'left-btn-',RIGHT_BTN = 'right-btn-',FILTER= 'test' ,DISABLED = 'layui-btn-disabled',BTN = 'button',BTN_STLY='btn',MD5='layui-col-md5',MD2='layui-col-md2' ,transfer = { index:layui.transfer?(layui.transfer+1000):0 ,idData:[] //ID池 ,data:[] //原始数据 ,options:[] ,update:function (data,filed) { if(filed=='' && data && data.length > 0){ var d = []; $.each(data,function (k,v) { v.LAY_TABLE_INDEX && delete v.LAY_TABLE_INDEX v.LAY_CHECKED && delete v.LAY_CHECKED d.push(v) }) return d }else if(filed && data && data.length > 0){ d = ''; $.each(data,function (k,v) { if( k === 0 ){ d += v[filed] }else{ d += ','+ v[filed] } }) return d }else{ return []; } } ,get:function (option,type,field) { var index = option.index var data = transfer.data; if(!index){ return []; } if(type==='all'){ var d = [],d1=[],d2=[]; for (var i = data.length - 1; i >= 0; i--) { if(data[i].id==LEFT_TABLE+index){ d1= data[i].data; }else if(data[i].id==RIGHT_TABLE+index){ d2 = data[i].data; } } d.push({left:d1}) d.push({right:d2}) return d }else if(type==='left' || type==='l'){ for (var i = data.length - 1; i >= 0; i--) { if(data[i].id==LEFT_TABLE+index){ return this.update(data[i].data,field); } } }else if(type === 'right' || type==='r'){ for (var i = data.length - 1; i >= 0; i--) { if(data[i].id==RIGHT_TABLE+index){ return this.update(data[i].data,field); } } } } } ,thisRate = function () { var that = this return { index:that.index } } ,Class = function (options) { var that = this that.index = transfer.index?transfer.index:++transfer.index that.config = options transfer.options = options that.createHTMLDocument() that.render() }; Class.prototype.createHTMLDocument = function () { var that = this ,elem = that.config.elem ,index= that.index; //创建页面元素 var html = '
\
\
\
\
\
\
\
\
\
\
\
\
\
'; $(elem).html(html) } //初始化表格 Class.prototype.render = function () { var that = this,options = that.config; var d1_c = { elem: '#'+LEFT_TABLE+that.index ,cols: [options.cols] ,data: (options.data[0]?options.data[0]:[]) ,id:LEFT_TABLE+that.index } var d2_c = { elem: '#'+RIGHT_TABLE+that.index ,cols: [options.cols] ,data: (options.data[1]?options.data[1]:[]) ,id:RIGHT_TABLE+that.index } if(options.tabConfig){ d1_c = $.extend(d1_c,options.tabConfig) d2_c = $.extend(d2_c,options.tabConfig) } transfer.idData.push(that.index) transfer.data = []; transfer.data.push({id:LEFT_TABLE+that.index,data:(options.data[0]?options.data[0]:[])}) transfer.data.push({id:RIGHT_TABLE+that.index,data:(options.data[1]?options.data[1]:[])}) table.render(d1_c) table.render(d2_c) that.move() }; //左右移动按钮根据左表格居中 Class.prototype.move = function () { var that = this ,elem = $('#'+LEFT_TABLE+that.index) ,h = elem.parent().height(); h = h / 2 - 44; elem.parents('.layui-row').find('.'+MD2).css('padding-top',h+'px') } //点击事件 $(document).on('click','.'+BTN_STLY,function () { if(!$(this).hasClass(DISABLED)){ var othis = $(this),type = othis.data('type'); datas(type) } }) //数据处理 //data 选中数据 //type 类型 0 左 1 右 function datas (type) { var d = transfer.data; var d1 = d[0].data; var d2 = d[1].data; var _d = []; if(d1.length > 0 && type==0){ //左边的数据移动到右表 var n_d1 = []; d1.reverse() for (var i = 0; i < d1.length; i++) { if(d1[i].LAY_CHECKED===true){ delete d1[i].LAY_CHECKED delete d1[i].LAY_TABLE_INDEX d2.unshift(d1[i]) }else{ delete d1[i].LAY_TABLE_INDEX n_d1.push(d1[i]) } } _d.push(n_d1,d2) }else if(d2.length > 0 && type==1){ //左边的数据移动到右表 var n_d2 = []; for (var i = 0; i < d2.length; i++) { if(d2[i].LAY_CHECKED && d2[i].LAY_CHECKED===true){ delete d2[i].LAY_CHECKED d2[i].LAY_TABLE_INDEX && delete d2[i].LAY_TABLE_INDEX d1.push(d2[i]) }else{ delete d2[i].LAY_TABLE_INDEX n_d2.push(d2[i]) } } _d.push(d1,n_d2) } var options = transfer.options options.data =datasChecked(_d); transfer.render(options) } function datasChecked(data){ var d1= []; var d2 = []; if(data[0] && data[0].length){ $.each(data[0],function(k,v){ v.LAY_CHECKED===true && delete v.LAY_CHECKED d1.push(v) }); } if(data[1] && data[1].length){ $.each(data[1],function(k,v){ v.LAY_CHECKED===true && delete v.LAY_CHECKED d2.push(v) }); } return [d1,d2]; } //数据处理 // Class.prototype.shiftData = function (data1,data2,data,type) { // var da = [];//未选中的数据 // // d1.reverse(); // $.each(data1,function(k,v){ // if(!v.LAY_CHECKED){ // da.push(v) // } // }) // // dd.reverse(); // $.each(data,function(kk,vv){ // data2.push(vv) // }) // var d = []; // if(type==0){ // d.push(da) // d.push(data2) // $('#'+LEFT_BTN+this.index).children(BTN).addClass(DISABLED); // }else if(type==1){ // d.push(data2) // d.push(da) // $('#'+RIGHT_BTN+this.index).children(BTN).addClass(DISABLED); // } // this.config.data = d // this.render() // } //选中状态 table.on('checkbox('+FILTER+')', function(obj){ var idData = transfer.idData,lenght = idData.length; if(lenght > 0){ for (var i=0;i<=lenght-1;i++){ var checkStatus1 = table.checkStatus(LEFT_TABLE+idData[i]) ,data_1 = checkStatus1.data ,checkStatus2 = table.checkStatus(RIGHT_TABLE+idData[i]) ,data_2 = checkStatus2.data; if(data_1.length >0){ $('#'+LEFT_BTN+idData[i]).children(BTN).removeClass(DISABLED); }else{ $('#'+LEFT_BTN+idData[i]).children(BTN).addClass(DISABLED); } if(data_2.length >0){ $('#'+RIGHT_BTN+idData[i]).children(BTN).removeClass(DISABLED); }else{ $('#'+RIGHT_BTN+idData[i]).children(BTN).addClass(DISABLED); } } } }); transfer.render = function (options) { var inst = new Class(options) return thisRate.call(inst) } exports(MOD_NAME,transfer) })