layui根据部门查询信息


首先先看下图片

我之前写的前端代码:

DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <link rel="stylesheet" href="layui/css/layui.css">

    
    <script src="layui/layui.js">script>
    <script src="js/jquery-3.4.1.js">script>
head>
<body>
<div>
    <body class="layui-layout-body">
    <div class="layui-layout layui-layout-admin">
        <div class="layui-header">
            
            <ul class="layui-nav layui-layout-right">
                <li class="layui-nav-item">
                    admin
                li>
                <li class="layui-nav-item">
                    <a href="login.html">注销a>
                li>
            ul>
        div>
    div>
    body>
    <form class="layui-form" action="" lay-filter="example" id="form">
        <div class="layui-form-item">
            <label class="layui-form-label">所在部门label>
            <div class="layui-input-inline">
                <select id="ddremark" name="ddremark" lay-verify="required" lay-search="">
                    <option value="">请选择部门option>
                    <option value="财务部">财务部option>
                    <option value="市场部">市场部option>
                    <option value="业务部">业务部option>
                select>
            div>
            <div class="layui-btn-container">
                <button class="layui-btn" lay-submit lay-filter="formDemo">立即查询button>
            div>
        div>
    form>

    <table class="layui-hide" id="test" lay-filter="test">
    table>
    <script type="text/html" id="barDemo">
        <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
    script>
div>
<script>
    layui.use(['util', 'layer', 'table', 'form', 'jquery'], function () {
        var util = layui.util
            , layer = layui.layer
            , table = layui.table
            , $ = layui.jquery
            , form = layui.form;

        table.render({
            elem: '#test'
            , url: "/DepartmentFindAllServlet"/*tpa=http://www.layui.com/test/table/demo1.json*/
            , toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
            , defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
                title: '提示'
                , layEvent: 'LAYTABLE_TIPS'
                , icon: 'layui-icon-tips'
            }]
            , title: '用户数据表'
            , cols: [[
                {type: 'checkbox', fixed: 'left'}
                , {field: 'uid', title: '用户编号', width: 80, fixed: 'left', unresize: true}
                , {field: 'uname', title: '用户登录名', width: 100, edit: 'text'}
                , {field: 'urealname', title: '真实姓名', width: 120, edit: 'text'}
                , {field: 'urname', title: '所属角色', width: 150}
                , {field: 'ddremark', title: '所属部门', width: 100}
                , {fixed: 'right', title: '操作', toolbar: '#barDemo', width: 150}
            ]]
            , page: true
        });

        //select下拉框选中触发事件
        form.on("select", function (data) {
            table.render({
                elem: '#test'
                , url: '/DepartmentFindAllServlet?ddremark=' + data.value
                , toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
                , defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
                    title: '提示'
                    , layEvent: 'LAYTABLE_TIPS'
                    , icon: 'layui-icon-tips'
                }]
                , title: '用户数据表'
                , cols: [[
                    {type: 'checkbox', fixed: 'left'}
                    , {field: 'uid', title: '用户编号', width: 80, fixed: 'left', unresize: true}
                    , {field: 'uname', title: '用户登录名', width: 100, edit: 'text'}
                    , {field: 'urealname', title: '真实姓名', width: 120, edit: 'text'}
                    , {field: 'urname', title: '所属角色', width: 150}
                    , {field: 'ddremark', title: '所属部门', width: 100}
                    , {fixed: 'right', title: '操作', toolbar: '#barDemo', width: 150}
                ]]
                , page: true
            });
        });
     //头工具栏事件
        table.on('toolbar(test)', function (obj) {
            var checkStatus = table.checkStatus(obj.config.id);
            switch (obj.event) {
                case 'getCheckData':
                    var data = checkStatus.data;
                    layer.alert(JSON.stringify(data));
                    break;
                case 'getCheckLength':
                    var data = checkStatus.data;
                    layer.msg('选中了:' + data.length + '');
                    break;
                case 'isAll':
                    layer.msg(checkStatus.isAll ? '全选' : '未全选');
                    break;

                //自定义头工具栏右侧图标 - 提示
                case 'LAYTABLE_TIPS':
                    layer.alert('这是工具栏右侧自定义的一个图标按钮');
                    break;
            }
            ;
        });

        //监听行工具事件
        table.on('tool(test)', function (obj) {
            var data = obj.data;
            //console.log(obj)
            if (obj.event === 'del') {
                layer.confirm('真的删除行么', function (index) {
                    obj.del();
                    layer.close(index);
                });
            } else if (obj.event === 'edit') {
                layer.prompt({
                    formType: 2
                    , value: data.email
                }, function (value, index) {
                    obj.update({
                        email: value
                    });
                    layer.close(index);
                });
            }
        });
    });
script>

body>
html>

思考:

相信大家都已经看出来了,下拉框选中后触发的时间是又让表格重新渲染一遍,这样写明显不好

layui官网上有表格重载的方法

 注释上面黄色的代码,替换为下面的代码

form.on('submit(formDemo)', function (data) {
            console.log('部门', data.field.ddremark);
            table.reload('test', {
                url: '/DepartmentFindAllServlet',
                method: 'post',
                where: {
                    ddremark: data.field.ddremark,
                },
            });
            return false;
        });
               

这样就好多啦