html代码

<form class="layui-form" lay-filter="layui-form" action="" style="margin: 1.5rem 3rem">
        <input type="hidden" name="id" id="id" value="${entity.id }">
        <input type="hidden" id="ids1" value="${ids1 }">
        <input type="hidden" id="ids2" value="${ids2 }">
        
            <div class="layui-fluid" style="margin-top: 15px;">
                <div class="layui-row layui-col-space10">
                    <div class="layui-col-md5">
                        <table class="layui-hide" id="left_tab" lay-filter="left"></table>
                    </div>
                    <div class="layui-col-md2 btn-height">
                        <div style="margin-bottom: 10px;">
                            <button class="layui-btn  layui-btn-disabled left-btn" type="button">
                                <i class="layui-icon">&#xe602;</i>
                            </button>
                        </div>
                        <div >
                            <button class="layui-btn layui-btn-disabled right-btn" type="button">
                                <i class="layui-icon">&#xe603;</i>
                            </button>
                        </div>
                    </div>
                    <div class="layui-col-md5">
                        <table class="layui-hide" id="right_tab" lay-filter="right"></table>
                    </div>
                </div>
            </div>
        
        
             <div class="layui-form-item">
                <div class="layui-input-block">
                  <button class="layui-btn" lay-submit="" lay-filter="demo">立即提交</button>
                </div>
             </div>
        </form>

js代码

<script>
    layui.use('table', function(){
        var table = layui.table,$ = layui.$;
        var height = 490; //固定表格高度
        //计算按钮的高度
        var btn_height = height /2 -44;
        $('.btn-height').css('padding-top',btn_height).css('text-align','center')
        
        //左边表格
        table.render({
            elem: '#left_tab'
            ,url: '${pageContext.request.contextPath}/manage/questionnaire/transfer'
            ,where:{ids:$("#ids1").val()}
            ,cols: [[
                {checkbox: true, fixed: true}
                ,{field:'id', title: 'ID', width:80, sort: true, fixed: true}
                ,{field:'problem', title: '题目'}
               
            ]]
            ,response: {
              statusName: 'flag' //数据状态的字段名称,默认:code
              ,statusCode: 200 //成功的状态码,默认:0
              ,msgName: 'message' //状态信息的字段名称,默认:msg
              ,countName:'totalCount' //数据总数的字段名称,默认:count
            } 
            ,request: {
              pageName: 'page.pageNo' //页码的参数名称,默认:page
              ,limitName: 'page.pageSize' //每页数据量的参数名,默认:limit
            } 
            ,id: 'left_table_id'
            ,page: true
            ,height: height
        });
        //右边表格
        table.render({
            elem: '#right_tab'
            ,url: '${pageContext.request.contextPath}/manage/questionnaire/transfer'
            ,where:{ids:$("#ids2").val()}
            ,cols: [[
                {checkbox: true, fixed: true}
                ,{field:'id', title: 'ID', width:80, sort: true, fixed: true}
                ,{field:'problem', title: '题目'}
             
            ]]
            ,method:'post'
            ,response: {
                  statusName: 'flag' //数据状态的字段名称,默认:code
                  ,statusCode: 200 //成功的状态码,默认:0
                  ,msgName: 'message' //状态信息的字段名称,默认:msg
                  ,countName:'totalCount' //数据总数的字段名称,默认:count
                } 
            ,request: {
                pageName: 'page.pageNo' //页码的参数名称,默认:page
                ,limitName: 'page.pageSize' //每页数据量的参数名,默认:limit
              } 
            ,data: []
            ,id: 'right_table_id'
            ,page: true
            ,height: height
        });

        layui.sessionData('tabData',{ key: 'ids1',value: $("#ids1").val().split(",") })
        layui.sessionData('tabData',{ key: 'ids2',value: $("#ids2").val().split(",") })
        var ids1 = layui.sessionData('tabData').ids1;
        var ids2 = layui.sessionData('tabData').ids2;
        console.log(ids1);
        console.log(ids2);
        
        //监听左表格选中
        table.on('checkbox(left)', function(obj){
            btnIf(getTableData('left_table_id'),'.left-btn')
        });
        //监听右表格选中
        table.on('checkbox(right)', function(obj){
            btnIf(getTableData('right_table_id'),'.right-btn')
        });
        //移动按钮是否隐藏显示
        function btnIf(data,btn){
            if(data && data.length){
                $(btn).removeClass('layui-btn-disabled')
            }else{
                $(btn).addClass('layui-btn-disabled')
            }
        }
        //公共方法
        function getTableData(id){
            var checkStatus = table.checkStatus(id)
                ,data = checkStatus.data;
            return data;
        }
        //重载左边表格
        function reloadTable() {debugger
            var ids1 = layui.sessionData('tabData').ids1;
            var id_str1 = ids1.join(',');
            var ids2 = layui.sessionData('tabData').ids2;
            var id_str2 = ids2.join(',');
            table.reload('left_table_id', {
                page:{curr:1}
                ,method:'post'
                ,where: {
                    ids: id_str1
                }
            });
            table.reload('right_table_id', {
                page:{curr:1}
                ,method:'post'
                ,where: {
                    ids: id_str2
                }
            });
        }
        //左按钮点击移动数据
        $('.left-btn').on('click',function(){
            if(!$(this).hasClass('layui-btn-disabled')){
                $('.left-btn,.right-btn').addClass('layui-btn-disabled')
                var data = getTableData('left_table_id');debugger
                //查询缓存2是否存在数据
                var ids2 = layui.sessionData('tabData').ids2;
                  //查询缓存1存在的数据
                var ids1 = layui.sessionData('tabData').ids1;
                $.each(data,function(k,v){
                    ids2.push(v.id)
                });
                $.each(data,function(k,v){
                    ids1.splice($.inArray(v.id.toString(),ids1),1) //删除选中的
                });
                //存储缓存2
                layui.sessionData('tabData',{key: 'ids2',value: ids2});
                //存储缓存1
                layui.sessionData('tabData',{key: 'ids1',value: ids1});
                reloadTable();
            }
        })
        //右按钮点击移动数据
        $('.right-btn').on('click',function () {
            if(!$(this).hasClass('layui-btn-disabled')){
                $('.left-btn,.right-btn').addClass('layui-btn-disabled')
                var data = getTableData('right_table_id');
                  //查询缓存2是否存在数据
                var ids2 = layui.sessionData('tabData').ids2;
                  //查询缓存1存在的数据
                var ids1 = layui.sessionData('tabData').ids1;
                $.each(data,function(k,v){
                    ids1.push(v.id)
                });
                $.each(data,function(k,v){
                    ids2.splice($.inArray(v.id,ids2),1) //删除选中的
                });
                //存储缓存2
                layui.sessionData('tabData',{key: 'ids2',value: ids2});
                //存储缓存1
                layui.sessionData('tabData',{key: 'ids1',value: ids1});
                reloadTable();
            }
        })
        //左表双击事件
        table.on('rowDouble(left)', function(obj){
            var ids1 = layui.sessionData('tabData').ids1;
            var ids2 = layui.sessionData('tabData').ids2;
            ids2.push(obj.data.id)
            ids1.splice($.inArray(obj.data.id,ids1),1) //删除选中的
            layui.sessionData('tabData',{ key: 'ids1',value: ids1 })
            layui.sessionData('tabData',{ key: 'ids2',value: ids2 })
            reloadTable()
        });
        //右表双击事件
        table.on('rowDouble(right)', function(obj){
            var ids1 = layui.sessionData('tabData').ids1;
            var ids2 = layui.sessionData('tabData').ids2;
            ids1.push(obj.data.id)
            ids2.splice($.inArray(obj.data.id,ids2),1) //删除选中的
            layui.sessionData('tabData',{ key: 'ids1',value: ids1 })
            layui.sessionData('tabData',{ key: 'ids2',value: ids2 })
            reloadTable()
        });
    });
</script>

注意传到后台的是已逗号分隔的id字符串,然后进行查询

如果无效果可能是button按钮没有加 type="button"

没有加会默认是submit提交重新原页面刷新

使用sessionData是临时数据,刷新页面就会重置,如果希望一直存在

使用layui.data('tabData',{})方法

分类:

技术点:

相关文章: