使用layui-soul-table实现嵌套表格

 官网:示例文档 | layui-soul-table 

前端代码:

@{ Layout = "~/Views/Shared/_Index.cshtml"; }
<link href="~/lib/layui/css/layui.css" rel="stylesheet" />
<link href="~/lib/layui-soul-table/soulTable.css" rel="stylesheet" />
<link href="~/lib/layui-soul-table/soulTable.js" rel="stylesheet" />
<script src="~/lib/layui/layui.js"></script> 
<div class="tabs-container">
    <ul class="nav nav-tabs">
        <li class="active">
            <a data-toggle="tab" lay-submit="" lay-filter="switch1" aria-expanded="true"> 未审核</a>
        </li>
        <li class="">
            <a data-toggle="tab" lay-submit="" lay-filter="switch2" aria-expanded="false">已审核</a>
        </li>
        <li class="">
            <a data-toggle="tab" lay-submit="" lay-filter="switch3" aria-expanded="false">已拒绝</a>
        </li>
    </ul>
</div>
<div class="layui-row layui-form">
    <div class="layui-col-md3">
        <div class="layui-inline">
            <label class="layui-form-label">表单编码</label>
            <div class="layui-input-inline">
                <input type="text" name="MasterBillNo"
                       class="layui-input" placeholder="请输入表单编码关键字">
            </div>
        </div>
    </div>
    <div class="layui-col-md3">
        <div class="layui-inline">
            <label class="layui-form-label">物料名称</label>
            <div class="layui-input-inline">
                <input type="text" name="MaterialName"
                       class="layui-input" placeholder="请输入物料名称关键字">
            </div>
        </div>
    </div>
    <div class="layui-col-md2">
        <div class="layui-inline">
            <label class="layui-form-label">开始时间</label>
            <div class="layui-input-inline">
                <input id="startTime" name="StartTime"
                       type="text" class="layui-input time-input" placeholder="开始时间" />
            </div>
        </div>
    </div>
    <div class="layui-col-md2">
        <div class="layui-inline">
            <label class="layui-form-label">结束时间</label>
            <div class="layui-input-inline">
                <input id="endTime" name="EndTime"
                       type="text" class="layui-input time-input" placeholder="结束时间" />
            </div>
        </div>
    </div>
    <div class="layui-col-md2">
        <button class="layui-btn mgl-20" lay-submit="" lay-filter="search"><i class="layui-icon">&#xe615;</i>查询</button>
    </div>
</div>
<table id="myTable2" lay-filter="myTable2"></table>
<script>
    var clickTab = 0;
    $(function () {
    });
    var bodyHeight = $('body').height();
    var souTableHeight = bodyHeight - 100;
    var param = {};
    var checkStatus = 0;
    var allowRows = [];
    var rejectRows = [];
    var cancelRows = [];
    laydate.render({ elem: '#startTime', format: 'yyyy-MM-dd', value: new Date() });
    laydate.render({ elem: '#endTime', format: 'yyyy-MM-dd', value: new Date() });
    param.MasterBillNo = "";
    // 自定义模块
    layui.config({
        base: '/lib/layui-soul-table/',   // 模块目录
    }).extend({// 模块别名
        soulTable: 'soulTable'
    });
    //function soulTable_init(){
        layui.use(['form', 'table', 'soulTable'], function () {
            var table = layui.table,
                form = layui.form,
                soulTable = layui.soulTable;
            table.render({
                elem: '#myTable2',
                url: '@Url.Content("~/MaintainManage/Stock/GetPageListJson")',
                height: souTableHeight,
                toolbar: '<div class="check-btn"><a class="layui-btn layui-btn-sm allow-btn" lay-event="allow">审核通过</a><a class="layui-btn layui-btn-sm  reject-btn" lay-event="reject">审核未通过</a><a class="layui-btn layui-btn-sm  cancel-btn" lay-event="cancel">取消审核</a></div>',
                page: true,
                cols: [[
                    { type: 'checkbox', fixed: 'left' },
                    {
                        title: '#', width: 50, children: function (row) {
                            console.log(row)
                            return [
                                {
                                    title: '出(入)库详情表',
                                    url: '@Url.Content("~/MaintainManage/Stock/GetDetailList")',
                                    height: 300,
                                    page: false,
                                    where: function (row) {
                                        //row 为当前行数据
                                        console.log(row);
                                        return { BillNo: row.BillNo }
                                    },
                                    cols: [[
                                        { type: 'checkbox', fixed: 'left' },
                                        { field: 'MaterialCode', title: '物料编码', sort: true, filter: true },
                                        { field: 'MaterialName', title: '物料名称', sort: true, filter: true },
                                        { field: 'Qty', title: '数量', filter: true },
                                        { field: 'Unit', title: '单位', sort: true, filter: true },
                                        { field: 'DeviceNo', title: '设备编码', sort: true, filter: true },
                                        { field: 'StockDate', title: '出(入)库日期', sort: true },
                                        { field: 'OutInv', title: '出库仓库', sort: true, filter: true },
                                        { field: 'InInv', title: '入库仓库', sort: true, filter: true },
                                        { field: 'Type', title: '单据类型', filter: true },
                                        { field: 'Remark', title: '备注', filter: true },
                                        { field: 'CreateTime', title: '创建时间', sort: true }
                                    ]]
                                    , done: function () {
                                        soulTable.render(this);
                                    }
                                    , filter: {
                                        bottom: false
                                    }
                                }
                            ]
                        }
                    },
                    { field: 'BillNo', title: '表单编码', sort: true, filter: true },
                    { field: 'WareHouser', title: '入库人', filter: true },
                    { field: 'WarehouseManager', title: '仓管员', filter: true },
                    { field: 'Duty', title: '负责人', filter: { split: ',' }, sort: true },
                    { field: 'BillDate', title: '单据日期', sort: true },
                    { field: 'StatusStr', title: '状态', filter: true, sort: true },
                    { field: 'Remark', title: '备注', filter: true, sort: true },
                ]],
                done: function () {
                    soulTable.render(this);
                    openTab(clickTab);
                }, filter: {
                    bottom: false
                }
            });
            form.on('submit(search)', function (data) {
                debugger;
                var param = {};
                data.field.Status = checkStatus;
                param = data.field;
                table.reload('myTable2', {
                    where: param
                })
                openTab(clickTab);
            }),
            form.on('submit(switch1)', function (data) {
                var param = {};
                param.Status = 0;
                checkStatus = 0;
                table.reload('myTable2', {
                    where: param
                })
                clickTab = 0;
                openTab(clickTab);
            }),
            form.on('submit(switch2)', function (data) {
                var param = {};
                param.Status = 1;
                checkStatus = 1;
                table.reload('myTable2', {
                    where: param
                })
                clickTab = 1;
                openTab(clickTab);
            }) ,
            form.on('submit(switch3)', function (data) {
                var param = {};
                param.Status = 2;
                checkStatus = 2;
                table.reload('myTable2', {
                    where: param
                })
                clickTab = 2;
                openTab(clickTab);
            })
            table.on('toolbar(myTable2)', function (obj) {
                debugger;
                var type = 1;
                if (obj.event === 'allow') {
                    allowRows = soulTable.cache['myTable2'].filter(item => item.LAY_CHECKED)
                }
                if (obj.event === 'reject') {
                    type = 2;
                    rejectRows = soulTable.cache['myTable2'].filter(item => item.LAY_CHECKED)
                }
                if (obj.event === 'cancel') {
                    type = 0;
                    cancelRows = soulTable.cache['myTable2'].filter(item => item.LAY_CHECKED)
                }
                var list=allowRows.length > 0 ? allowRows:(rejectRows.length > 0 ? rejectRows:cancelRows);
                 zz.ajax({
                    url: '@Url.Content("~/MaintainManage/Stock/UpdateStatus")',
                    type: "post",
                     data: { "type":type,"list": list},
                        success: function (obj) {
                            if (obj.Tag == 1) {
                                zz.msgSuccess(obj.Message);
                                allowRows = [];
                                rejectRows = [];
                                cancelRows = [];
                                table.reload('myTable2', {});
                                openTab(clickTab);
                            }
                            else {
                                zz.msgError(obj.Message);
                            }
                        }
                    });
            });
        })
    //}
    function statusChoose(statusId) {
        alert(statusId);
    }
    function checkPass() {
    }
    function openTab(clickTab) {
        switch (clickTab) {
            case 0:
                $(".allow-btn").show();
                $(".reject-btn").show();
                $(".cancel-btn").hide();
                break;
            default:
                $(".allow-btn").hide();
                $(".reject-btn").hide();
                $(".cancel-btn").show();
                break;
        }
    }
</script>

 数据格式

父数据格式
"data":[{"Id":186,"BillNo":"STI2207290002","WareHouser":null,"WarehouseManager":null,"Duty":null,"BillDate":"2022-07-29","OnUse":null,"Status":0,"StatusStr":"0.未审核","Remark":null}

孩子数据格式
"data":[{"Id":378,"MasterBillNo":null,"MaterialCode":"xxxxxx","MaterialName":"xxxxxx","Qty":1,"Type":"xxxxxx","Remark":"xxxxxx","StockDate":"2022-01-01","CreateTime":"2022-07-29 13:07:40","OutInv":null,"InInv":"xxxxxx","OutInvName":null,"InInvName":"xxxxxx","DeviceNo":"xxxxxx","Unit":"个"}]
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layui-soul-table 是一款基于layui框架开发的用于展示数据的表格插件。要快速隐藏列,可以通过以下步骤进行操作: 1. 首先,确保已加载layuilayui-soul-table的相关资源文件。可以在页面中引入layuilayui-soul-table的CSS和JS文件,例如: ```html <link rel="stylesheet" href="path/to/layui/css/layui.css"> <link rel="stylesheet" href="path/to/layui-soul-table/soulTable.css"> <script src="path/to/layui/layui.js"></script> <script src="path/to/layui-soul-table/soulTable.js"></script> ``` 2. 在HTML页面中,创建一个具有固定id的表格元素,例如: ```html <table id="demo" lay-filter="test"></table> ``` 3. 在JavaScript代码中,使用layui-soul-table的自定义参数来创建表格,并设置隐藏列的显示属性。例如: ```javascript layui.use(['table', 'soulTable'], function(){ var table = layui.table; var soulTable = layui.soulTable; table.render({ elem: '#demo', url: '/api/data', // 数据接口 cols: [[ {field:'id', title: 'ID'}, {field:'name', title: '名称'}, {field:'age', title: '年龄'}, // 其他列 {field:'操作', title: '操作', toolbar: '#barDemo', width: 150} // 需要隐藏的列 ]], }); soulTable.on('filter(test)', function(data){ // 判断隐藏列的显示状态 var isHide = data.isHide; if(isHide){ $('#demo .layui-table-view .layui-table').find('[data-field="操作"]').hide(); }else{ $('#demo .layui-table-view .layui-table').find('[data-field="操作"]').show(); } }); }); ``` 通过以上步骤,就可以在 layui-soul-table 中快速隐藏指定的列。具体实现是通过监听"filter(test)"事件,判断隐藏列的状态,然后利用jQuery的hide()和show()方法来控制目标列的显示属性。使用这种方法,我们可以方便地实现快速隐藏列功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值