2020-12-02

layui table-transfer 分页穿梭框

效果:

 

 

 

 

代码:

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport"   content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Transfer Table穿梭框组件-基于layui</title> <link rel="stylesheet" href="layui/layui/css/layui.css"></head><body><div > <div >  <button >获取全部数据</button>  <button >获取左边数据</button>  <button >获取右边数据</button> </div> <div id="root"></div></div></body><script type="text/javascript" src="layui/layui/layui.js"></script><script> layui.config({  base: 'layui_exts/transfer/' }).use(['transfer'], function () {  var transfer = layui.transfer, $ = layui.$;  //数据源  var data1 = [   {    id:'1',    planName:'张三',    sex:0   },   {    id:'2',    planName:'李四',    sex:0   },   {    id:'3',    planName:'王五',    sex:0   },   {    id:'4',    planName:'小赵',    sex:0   },   {    id:'5',    planName:'小赵',    sex:0   },   {    id:'6',    planName:'小赵',    sex:0   },   {    id:'7',    planName:'小赵',    sex:0   },   {    id:'8',    planName:'小赵',    sex:0   },   {    id:'9',    planName:'小赵',    sex:0   },   {    id:'10',    planName:'小赵',    sex:0   },   {    id:'11',    planName:'小赵',    sex:0   },  ];  var data2 = [];  //表格列  var cols = [   {type: 'checkbox', fixed: 'left'},   {field: 'id', title: 'ID', width: 80, sort: true},   {field: 'name', title: '用户名'},   {field: 'sex', title: '性别'}]  //表格配置文件  var tabConfig = {'page': true, 'limits': [10, 50, 100], 'height': 420}  var tb1 = transfer.render({   elem: "#root", //指定元素   cols: cols, //表格列 支持layui数据表格所有配置   data: [data1, data2], //[左表数据,右表数据[非必填]]   tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置  })  //transfer.get(参数1:初始化返回值,参数2:获取数据[all,left,right,l,r],参数:指定数据字段)  //获取数据  $('.all').on('click', function () {   var data = transfer.get(tb1, 'all');   layer.msg(JSON.stringify(data))  });  $('.left').on('click', function () {   var data = transfer.get(tb1, 'left', 'id');   layer.msg(JSON.stringify(data))  });  $('.right').on('click', function () {   var data = transfer.get(tb1, 'r','');   layer.msg(JSON.stringify(data))  }); })</script></html>

 

插件transfer.js源码:

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 = '<div >\     <div >\      <div color: rgba(0, 0, 0, 1)">">\      <table id="'+LEFT_TABLE+index+'" lay-filter="'+FILTER+'"></table>\      </div>\      <div color: rgba(0, 0, 0, 1)">" >\      <div id="'+LEFT_BTN+index+'" ><button data-type="0" data-index="'+index+'" color: rgba(0, 0, 0, 1)">"> <i >&#xe602;</i></button></div>\      <div id="'+RIGHT_BTN+index+'" ><button data-type="1" data-index="'+index+'" color: rgba(0, 0, 0, 1)">"> <i >&#xe603;</i></button></div>\      </div>\      <div color: rgba(0, 0, 0, 1)">">\      <table id="'+RIGHT_TABLE+index+'" lay-filter="'+FILTER+'"></table>\      </div>\     </div>\     </div>';  $(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]; } //选中状态 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)})

 来源:https://github.com/9499574/layui-transfer









原文转载:http://www.shaoqun.com/a/494623.html

出口易:https://www.ikjzd.com/w/1317

飞书互动:https://www.ikjzd.com/w/1319

farfetch:https://www.ikjzd.com/w/2133


效果:代码:<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,user-scalable=no,initial-sca
孙琦:孙琦
周宁:周宁
秋天这样找虐才够味(组图):秋天这样找虐才够味(组图)
云台山:太极拳 - :云台山:太极拳 -
冬天去九寨沟有什么好玩的民间活动?:冬天去九寨沟有什么好玩的民间活动?

No comments:

Post a Comment