123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- 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 class="layui-container">\
- <div class="layui-row">\
- <div class="'+MD5+'">\
- <table class="layui-hide" id="'+LEFT_TABLE+index+'" lay-filter="'+FILTER+'"></table>\
- </div>\
- <div class="'+MD2+'" style="text-align: center;">\
- <div id="'+LEFT_BTN+index+'" style="margin-bottom: 10px;"><button data-type="0" data-index="'+index+'" class="layui-btn '+DISABLED+' '+BTN_STLY+'"> <i class="layui-icon"></i></button></div>\
- <div id="'+RIGHT_BTN+index+'" ><button data-type="1" data-index="'+index+'" class="layui-btn '+DISABLED+' '+BTN_STLY+'"> <i class="layui-icon"></i></button></div>\
- </div>\
- <div class="'+MD5+'">\
- <table class="layui-hide" 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];
- }
- //数据处理
- // 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)
- })
|