layui表格功能合集 _ 增加和编辑页面、表格快速增加一行或编辑数据,快速删除一行或多行、批量导出、全部导出、关键字搜索等功能合集

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

全部带演示!!功能如下图所示,前后台数据链路已打通: 如果有需要后台代码的可以私聊我!

首先概览图:

在这里插入图片描述 顺便附上echarts复杂图表:每位成员一段时间内最高最低值、每天平均值、组员均值 在这里插入图片描述 长文预警!!

添加功能演示:

在这里插入图片描述 核心代码:

form.on('submit(add)',function(data) {
            console.log($(".zbmc").val(),$(".zbmc").val());
            console.log($("#test1").val(),$("#test1").val());
            if ( $(".zbmc").val()==undefined || $("#test1").val()==undefined){
                top.layer.msg("请完善内容", {
                    icon: 0,
                    title:'任务单管理',
                    time:2000
                })
                return false
            }
                var source=data.field//表单数据
                console.log(source)


                //发异步,把数据提交给php

            top.layer.msg("正在添加任务单", {
                        icon: 16,
                    title:'任务单管理'
                    },
                function() {
                        //调用接口传递数据添加
                    var data = {
                        yycj:source.yycj
                        ,ywlb:source.ywlb
                        ,zbbh: source.zbbh
                        ,zbmc: source.zbmc
                        ,zrr: source.zrr
                        ,lszrr: source.lszrr
                        ,zbccbm:source.zbccbm
                        ,scdwsb:source.scdwsb
                        ,dwszbmxb:source.dwszbmxb
                        ,dwszbhzb:source.dwszbhzb
                        ,adszbb:source.adszbb
                        ,zbmxbm:source.zbmxbm
                        ,sfwc:source.sfwc
                        ,wcrq: source.wcrq
                        ,sfydd: source.sfydd
                        ,lsqk: source.lsqk
                        ,kzlmc: source.kzlmc
                        ,zbylxy: source.zbylxy
                    }
                    console.log(data);
                    $.ajax({
                        url: '/TaskMana/addTask',
                        data: JSON.stringify(data),
                        type: 'post',
                        dataType: 'text',
                        headers: {
                            Accept: "application/json",
                            "Content-Type": "application/json"
                        },
                        processData: false,
                        cache: false,
                        success: function (msg) {
                            top.layer.msg('添加成功', {icon: 1});
                            //子页面调用父页面方法,把新增的值传过去,那边
                            window.parent.location.reload();//修改成功后刷新父界面
                            // 获得frame索引
                            var index = parent.layer.getFrameIndex(window.name);//关闭当前frame

                            parent.layer.close(index); //再执行关闭
                        },
                        error: function () {
                            top.layer.msg('添加失败,请重试', {icon: 2});

                        }
                    })


                    });
                return false;
            });

快速添加一行和快速编辑演示:

在这里插入图片描述 功能代码和上面一样,只是参数稍有变动,如果需要添加有默认值可以直接填写:

//快捷添加
    $("#addOne").click(function () {
        layui.use(['layer', 'table'], function () {

        })
        top.layer.msg("正在插入...", {
                icon: 16,
                title:'任务单管理'
            },
            function() {
                //调用接口传递数据添加   默认数据
                var data = {
                    yycj:""
                    ,ywlb:""
                    ,zbbh: ""
                    ,zbmc: ""
                    ,zrr: ""
                    ,lszrr:""
                    ,zbccbm:""
                    ,scdwsb:""
                    ,dwszbmxb:""
                    ,dwszbhzb:""
                    ,adszbb:""
                    ,zbmxbm:""
                    ,sfwc:""
                    ,wcrq:""
                    ,sfydd:""
                    ,lsqk:""
                    ,kzlmc:""
                    ,zbylxy:""
                }
                console.log(data);
                $.ajax({
                    url: '/TaskMana/addTask',
                    data: JSON.stringify(data),
                    type: 'post',
                    dataType: 'text',
                    headers: {
                        Accept: "application/json",
                        "Content-Type": "application/json"
                    },
                    processData: false,
                    cache: false,
                    success: function (msg) {
                        top.layer.msg('添加成功,请在表单内编辑', {icon: 1});
                        //子页面调用父页面方法,把新增的值传过去,那边
                        // window.location.reload();//修改成功后刷新父界面
                        layui.table.reload('table1')
                    },
                    error: function () {
                        top.layer.msg('添加失败', {icon: 2});

                    }
                })


            });
        return false;
    })

删除一行或多行演示

在这里插入图片描述 核心功能代码,如果只有一条数据直接删除,多条循环调用后端接口删除:

function taskdel(tableBox) {
        layui.use('table', function () {
            var table = layui.table;
            var table1 = table.checkStatus(tableBox).data; //idTest 即为基础参数 id 对应的值
            if (table1.length>0){
                top.layer.confirm('确定删除选中的数据?', {icon: 3, title: '提示信息'}, function (index) {
                    console.log("确认删除")
                    if (table1.length > 1) {
                        console.log("走if")
                        for(var i = 0; i<table1.length;i++){
                            $.getJSON('/TaskMana/delTask?xh='+table1[i].xh,function (data) {
                                top.layer.close(index);
                                top.layer.msg('删除成功', {icon: 1,time: 2000});
                                location.reload();
                                table.reload(tableBox)
                            })
                        }

                    }else{
                        console.log("走else")
                        $.getJSON('/TaskMana/delTask?xh='+table1[0].xh,function (data) {
                            // console.log("删除成功+"+i)
                            top.layer.close(index);
                            top.layer.msg('删除成功', {icon: 1,time: 2000});
                            location.reload();
                            table.reload(tableBox)
                        })
                    }
                })

            }else{
                top.layer.msg("请选择需要删除的行");
            }
            console.log(table1);
        })
    }

导出演示

在这里插入图片描述

核心代码:

$('.out-excel').on('click',function () {
        var $ = layui.jquery
        var layer = layui.layer
        var excel = layui.excel

        // 模拟从后端接口读取需要导出的数据
        $.ajax({
            url: "/TaskMana/export"
            , dataType: 'json'
            , success: function (res) {
                var data = res
            for(var i = 0; i < data.length; i++)
                {
                    delete data[i].num
                }
                console.log(data);
                // 重点2!!!一般都需要加一个表头,表头的键名顺序需要与最终导出的数据一致
                data.unshift({
                    xh:"序号",
                    // num:"数字",
                    yycj: '应用场景',
                    ywlb: '业务类别',
                    zbbh 	:'指标编号',
                    zbmc 	:'指标名称',
                    zrr 	:'责任人',
                    lszrr	:'历史责任人',
                    zbccbm 	:'指标存储表名',
                    zbmxbm 	:'指标模型表名'	,
                    sfwc	:'是否完成',
                    wcrq 	:'脚本完成时间',
                    sfydd   :'是否已调度',
                    scdwsb 	:'数仓dws层表',
                    dwszbmxb:'DWS层指标明细表',
                    dwszbhzb:'DWS层指标汇总表',
                    adszbb	:'ADS层指标表',
                    lsqk	:'历史情况',
                    kzlmc	:'控制流名称',
                    zbylxy	:'指标依赖血缘'
                })

                var timestart = Date.now()
                excel.exportExcel({
                    sheet1: data
                }, '任务单汇总数据.xlsx', 'xlsx')
                // var timeend = Date.now()

                // var spent = (timeend - timestart) / 1000
                // layer.alert('单纯导出耗时 ' + spent + ' s')
            }
            , error: function () {
                layer.alert('获取数据失败,请检查是否部署在本地服务器环境下')
            }
        })

    });

导入演示

在这里插入图片描述 核心代码

layui.use('upload', function() {
        var $ = layui.jquery
            , upload = layui.upload;
        //多文件列表示例
        var demoListView = $('#demoList')
            ,uploadListIns = upload.render({
            elem: '#test8'
            ,url: '/TaskMana/a' //改成您自己的上传接口
            // ,url: 'https://httpbin.org/post' //改成您自己的上传接口
            ,exts: 'xlsx'//设置可上传文件
            ,accept: 'file'
            ,multiple: true
            ,auto: false
            ,bindAction: '#test9'

            ,done: function(res, index, upload){


                top.layer.msg('添加成功!', {icon: 1,time: 3000});
                setTimeout(function () {
                    window.parent.location.reload();//修改成功后刷新父界面
                    // 获得frame索引
                    var index = parent.layer.getFrameIndex(window.name);//关闭当前frame

                    parent.layer.close(index); //再执行关闭
                },2000);


            }
            ,error: function(index, upload){
                console.log(index,upload);
                var tr = demoListView.find('tr#upload-'+ index)
                    ,tds = tr.children();
                tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
                tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
            }
        });
    })

关键字搜索演示

在这里插入图片描述

核心代码,后台sql语句把需要搜索的字段都like一下:

扫描二维码关注公众号,回复: 14347799 查看本文章
function taskSearch() {
        top.layer.msg("正在查询", {
                icon: 16,
                title:'任务单管理'
            },
            function() {
                console.log($("#world").val());
                var world=$("#world").val();
                // $.getJSON("/TaskMana/findTaskManaByWorld?word="+world,function (data) {
                //     console.log(data);
                // })
                //上述方法等价于
                layui.use('table', function () {
                    var table = layui.table;
                    layui.table.reload('table1', {
                        url: "/TaskMana/findTaskManaByWorld"
                        ,where: {
                             word: world
                            }
                        ,page: true
                        ,limit:10

                    });
                })
            }
        )


        // return false
    }

编辑页面

前面已经说了单元格编辑,这里不再讲编辑页面,其实就是带主键去编辑页面显示数据,再进行修改 根据主键更新!

上面的demo已经实现前后端交互,希望和大佬们交流探讨,以上。

猜你喜欢

转载自juejin.im/post/7114957824618135583