JS:jquery.dataTables.bootstrap插件详解

12 篇文章 0 订阅

dataTable介绍


DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, build upon the foundations of progressive enhancement, that adds all of these advanced features to any HTML table.

1. 列表显示


html
    <script src="${pageContext.request.contextPath}/core/js/jquery.min.js"></script>
    <script src="${pageContext.request.contextPath}/assets/js/bootstrap.min.js"></script>
    <script src="${pageContext.request.contextPath}/assets/js/jquery-ui-1.10.3.custom.min.js"></script>
    <script src="${pageContext.request.contextPath}/assets/js/jquery.dataTables.min.js"></script>
    <script src="${pageContext.request.contextPath}/assets/js/jquery.dataTables.bootstrap.js"></script>
                    <div class="col-xs-12">
                        <div class="table-header">
                            订单列表
                        </div>
                        <div class="table-responsive">
                            <table id="orderTable" class="table table-striped table-bordered table-hover">
                                <thead>
                                <tr>
                                    <th class="center" style="width: 50px;">
                                        <label>
                                            <input type="checkbox" class="ace"/>
                                            <span class="lbl"></span>
                                        </label>
                                    </th>

                                    <th class="hidden-480" style="width: 80px;">ID</th>
                                    <th class="hidden-480" style="width: 150px;">主订单号</th>
                                    <th class="hidden-480" style="width: 130px;">订单类型</th>
                                    <th class="hidden-480" style="width: 150px;">物流信息</th>
                                    <th class="hidden-480" style="width: 80px;">买家留言</th>
                                    <th class="hidden-480" style="width: 100px;">支付日期</th>
                                    <th class="hidden-480" style="width: 70px;">订单状态</th>
                                    <th class="hidden-480" style="width: 400px;">订单商品</th>
                                </tr>
                                </thead>
                            </table>
                        </div><!--/.table-responsive -->
                    </div><!-- /.col -->

js
        $('#orderTable').dataTable({
            "bPaginate": true,//分页工具条显示
            "bStateSave": false, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态
            "bScrollCollapse": true, //当显示的数据不足以支撑表格的默认的高度
            "bLengthChange": true, //每页显示的记录数
            "bFilter": false, //搜索栏
            "bInfo": true, //显示表格信息
            "bSort": false, //是否支持排序功能
            "bAutoWidth": false, //自适应宽度
            "bJQueryUI": false,//是否开启主题
            "bDestroy": true,
            "bProcessing": false, //开启读取服务器数据时显示正在加载中……特别是大数据量的时候,开启此功能比较好
            "bServerSide": true,//服务器处理分页,默认是false,需要服务器处理,必须true
            "sAjaxDataProp": "aData",//是服务器分页的标志,必须有
            "sServerMethod": "POST", // 请求方式  默认为GET
            "sAjaxSource": "${pageContext.request.contextPath}/manage/order/getTableData",//通过ajax实现分页的url路径。
            "fnServerParams": function (aoData) {  //查询条件
                aoData.push(
                    {"name": "mainorderNum", "value": $("#mainorderNum").val()},
                    {"name": "phone", "value": $("#phone").val()},
                    {"name": "deliveryState", "value": $("#deliveryState").val()},
                    {"name": "orderType", "value": $("#orderType").val()},
                    {"name": "orderState", "value": $("#orderState").val()},
                    {"name": "startTime", "value": $("#startTime").val()},
                    {"name": "endTime", "value": $("#endTime").val()},
                    {"name": "goodsId", "value": $("#ddGoods").val()}
                )
            },
            "aoColumns": [//初始化要显示的列
                {
                    "mDataProp": "id",//获取列数据
                    "sClass": "center",//显示样式
                    "mRender": function (data, type, full) {//返回自定义的样式
                        return "<label><input type='checkbox' class='ace' /><span class='lbl'></span></label>"
                    }
                },
                {
                    "sWidth": "60px",
                    "mDataProp": "id",//获取列数据,跟服务器返回字段一致
                    "sClass": "left",//显示样式
                    "title": "ID"
                },
                {
                    "sWidth": "150px",
                    "mDataProp": "mainorderNum",
                    "mRender": function (data, type, full) {
                        return data + "<br> 外部订单号:" + (full['outerOrderNum'] == null ? "" : full['outerOrderNum']);
                    }

                },
                {
                    "sWidth": "80px",
                    "mDataProp": "orderType",
                    "mRender": function (data, type, full) {
                        if (data == 0) {
                            return "有赞"
                        } else if (data == 1) {
                            return "淘宝"
                        } else if (data == 2) {
                            return "手工"
                        } else if (data == 3) {
                            return "提货卡"
                        } else {
                            return ""
                        }
                    }
                },


                {
                    "mDataProp": "addressee",
                    "mRender": function (data, type, full) {
                        var html = full['addressee'] + " - " + full['phone'] + " - ";
                        if (full['yzExpressType'] != 1) {
                            html += full['province'] + " - " + full['city'] + " - " + full['district'] + " - " + full['address'];
                        } else {
                            html += full['address'];
                        }
                        html += "<br>物流类型:";
                        //物流类型 0:快递发货; 1:到店自提; 2:同城配送; 9:无需发货(虚拟商品订单)
                        if (full['yzExpressType'] == 0) {
                            html += "快递发货"
                        } else if (full['yzExpressType'] == 1) {
                            html += "到店自提"
                        } else if (full['yzExpressType'] == 2) {
                            html += "同城配送"
                        } else if (full['yzExpressType'] == 9) {
                            html += "无需发货"
                        } else {
                            html += ""
                        }
                        return html;
                    }
                },
                {
                    "mDataProp": "buyerMessag"
                },
                {
                    "mDataProp": "orderTime",
                    "mRender": function (data, type, full) {
                        return timeStampToString(data);
                    }
                },
                {
                    "mDataProp": "orderState",
                    "mRender": function (data, type, full) {
                        //0 待付款  1 待送货   2 已发货  3 已收货 4交易关闭 5退款中
                        var html = "";
                        if (data == 0) {
                            html = "<span class='label label-warning'>待付款</span>"
                        } else if (data == 1) {
                            html = "<span class='label label-warning'>待发货</span>"
                        } else if (data == 2) {
                            html = "<span class='label label-primary'>已发货</span>"
                        } else if (data == 3) {
                            html = "<span class='label label-primary'>交易完成</span>"
                        } else if (data == 4) {
                            html = "<span class='label label-primary'>交易关闭</span>"
                        } else if (data == 5) {
                            html = "<span class='label label-primary'>退款中</span>"
                        } else {
                            html = ""
                        }
                        if (full['yzIsSync'] == 0 && full['orderType'] == 0) {
                            html += "<br>量大于2";
                        }
                        return html;
                    }
                },
                {
                    "mDataProp": "orderGoods",
                    "mRender": function (data, type, full) {
                        var html = "";
                        for (var i = 0; i < data.length; i++) {
                            html = html + "<div class='col-sm-12' style='margin-bottom:10px;'>"
                            html = html + "<img src='${pageContext.request.contextPath}/upload/" + data[i].img + "' style='width:50px;height:50px;margin-bottom:5px;' /> ";

                            if (data[i].goodsId == 0) {
                                html = html + "<a id='" + data[i].id + "' title='" + data[i].goodsName1 + "<br>商品ID:" + data[i].outGoodsId + "<br>规格ID:" + data[i].outSkuid + "' href='javascript:refreshGoods(" + data[i].id + ")'>" + "商品ID:" + data[i].outGoodsId + " 规格ID:" + data[i].outSkuid + "</a>";
                            } else {
                                html = html + data[i].goodsName;
                                html = html + "(" + data[i].goodsNum + ")" + data[i].model + "(" + data[i].validNum + data[i].texture + ")";
                            }
                            html = html + "<br>";
                            if (isupdate == 1) {
                                //判断是否有赞自提订单
                                if (full['orderType'] == 0 && full['yzExpressType'] == 1) {

                                    //手工订单
                                } else if (full['orderType'] == 2) {
                                    //快递发货
                                    if (full['yzExpressType'] == 0) {


                                        //到店自提
                                    } else if (full['yzExpressType'] == 1) {
                                        html += "<a class='blue' href=javascript:sendSMS('" + data[i].id + "')>" +
                                            " 短 信 " +
                                            "</a>";
                                    }
                                }
                                //快递发货
                                if (full['yzExpressType'] == 0 && (full['orderState'] == 1 || full['orderState'] == 2)
                                    && (data[i].expressSate == null || data[i].expressSate == 1)) { //待送货状态

                                    html += "<select  class='col-sm-3' style='padding:0 0' onchange=sendGoods('" + data[i].id + "',this.value)>" +
                                        "<option value=''>下发货单</option>"
                                    for (var n in expressList) {
                                        html += "<option value='" + expressList[n].name + "'>" + JSON.parse(expressList[n].value).type + "</option>"
                                    }
                                    html += "</select>";
                                    html += "<select  class='col-sm-3' style='padding:0 0' onchange=javascript:printFaceSheet('" + data[i].orderNum + "',this.value)>" +
                                        "<option value=''>打印面单</option>"
                                    for (var n in expressList) {
                                        html += "<option value='" + expressList[n].name + "'>" + JSON.parse(expressList[n].value).type + "</option>"
                                    }
                                    html += "</select>";
                                    html += "<select  class='col-sm-3' style='padding:0 0' onchange=javascript:faceSheetCode('" + data[i].id + "',this.value)>" +
                                        "<option value=''>录入面单号</option>"
                                    html += "<option value='zt'>无需发货</option>";
                                    for (var n in expressList) {
                                        html += "<option value='" + expressList[n].name + "'>" + JSON.parse(expressList[n].value).type + "</option>"
                                    }
                                    //                                    html += "<option value='zt'>自提订单</option>"
                                    html += "</select>";
                                    html += "<a class='blue' href=javascript:sendSMS('" + data[i].id + "')>" +
                                        " 短 信 " +
                                        "</a>";
                                }
                                if (full['orderState'] == 1 && full['orderType'] == 2) {
                                    html += "<a class='blue' href=javascript:deleteOrder('" + full['orderNum'] + "')>" +
                                        "删除订单" +
                                        "</a>";
                                } else if (data[i].expressSate == 2) { //已发货
                                    html += "<a class='blue' href=javascript:sendState('" + data[i].expressId + "')>" +
                                        "物流状态:已发货," + data[i].expressType + "面单号【" + data[i].slogisticCode + "】" +
                                        "</a>";
                                } else if (data[i].expressSate == 3) { //已签收
                                    html += "<a class='blue' href=javascript:sendState('" + data[i].expressId + "')>" +
                                        "物流状态:已签收," + data[i].expressType + "面单号【" + data[i].slogisticCode + "】" +
                                        "</a>";
                                }
                            }
                            html = html + "</div>";
                        }
                        return html;
                    }
                }
            ],

            "oLanguage": {//语言设置
                "sProcessing": "处理中...",
                "sLengthMenu": "显示 _MENU_ 项记录",
                "sZeroRecords": "没有匹配记录",
                "sInfo": "显示第 _START_ 至 _END_ 条记录,共 _TOTAL_ 条",
                "sInfoEmpty": "显示第 0 至 0 条记录,共 0 条",
                "sInfoFiltered": "",
                "sInfoPostFix": "",
                "sSearch": "搜索:",
                "sUrl": "",
                "sEmptyTable": "表中数据为空",
                "sLoadingRecords": "载入中...",
                "sInfoThousands": ",",
                "oPaginate": {
                    "sFirst": "首页",
                    "sPrevious": "上页",
                    "sNext": "下页",
                    "sLast": "末页"
                },
                "oAria": {
                    "sSortAscending": ": 以升序排列此列",
                    "sSortDescending": ": 以降序排列此列"
                }
            }
        });

2. 条件查询


html
                    <div class="col-xs-12">
                        <div class="table-header">
                            查询条件
                        </div>
                        <div class="query_well">
                            <br>
                            <div class="row">
                                <div class="col-xs-12">
                                    <div class="form-group">

                                        <label class="col-sm-1 control-label center" for="mainorderNum">
                                            主订单号: </label>
                                        <div class="col-sm-2">
                                            <input type="text" id="mainorderNum" placeholder="主订单号"
                                                   class="col-xs-10 col-sm-12"/>
                                        </div>

                                        <label class="col-sm-1 control-label center" for="phone"> 买家电话: </label>
                                        <div class="col-sm-2">
                                            <input type="text" id="phone" placeholder="买家电话"
                                                   class="col-xs-10 col-sm-12"/>
                                        </div>


                                        <label class="col-sm-1 control-label center" for="startTime"> 创建时间: </label>
                                        <div class="col-sm-5">
                                            <div class="col-sm-12">
                                                <div class="col-sm-5">
                                                    <input class="col-sm-12" id="startTime" type="text"
                                                           readonly="readonly" placeholder="开始日期"/>
                                                </div>
                                                <label class="col-sm-2 control-label center"> — </label>
                                                <div class="col-sm-5">
                                                    <input class="col-sm-12" id="endTime" type="text"
                                                           readonly="readonly" placeholder="结束日期"/>
                                                </div>
                                            </div>
                                        </div>
                                    </div>

                                </div>
                            </div>

                            <br>
                            <div class="row">
                                <div class="col-xs-12">
                                    <div class="form-group">

                                        <label class="col-sm-1 control-label center" for="orderType"> 订单类型: </label>

                                        <div class="col-sm-2">
                                            <select class="col-sm-12" id="orderType" style="padding:0 0">
                                                <option value=""> 请选择类型</option>
                                                <option value="0"> 有赞商城订单</option>
                                                <option value="1"> 淘宝商城订单</option>
                                                <option value="2"> 手工订单</option>
                                                <option value="3"> 提货卡自动订单</option>
                                            </select>
                                        </div>

                                        <label class="col-sm-1 control-label center" for="orderState">
                                            订单状态: </label>

                                        <div class="col-sm-2">
                                            <select class="col-sm-12" id="orderState" style="padding:0 0">
                                                <option value=""> 请选择状态</option>
                                                <option value="0">待付款</option>
                                                <option value="1">待发货</option>
                                                <option value="2">已发货</option>
                                                <option value="3">交易完成</option>
                                                <option value="4">交易关闭</option>
                                                <option value="5">退款中</option>

                                            </select>
                                        </div>
                                        <label class="col-sm-1 control-label center" for="ddGoods"> 订单商品: </label>

                                        <div class="col-sm-2">
                                            <select class="col-sm-12" id="ddGoods" style="padding:0 0">
                                                <option value=""> 请选择商品</option>
                                                <c:forEach items="${ddGoodList}" var="ddgood"
                                                           varStatus="roleStatus">
                                                    <option value="${ddgood.id}"> ${ddgood.name}</option>
                                                </c:forEach>
                                            </select>
                                        </div>

                                        <div class="col-sm-1">
                                            <div class="col-sm-12">
                                                <div class="col-sm-1">
                                                    <button id="query" class="btn btn-sm btn-success">
                                                        查 &nbsp;&nbsp;询
                                                    </button>
                                                </div>
                                            </div>
                                        </div>
                                        <c:if test="${auth.isadd == 1}">
                                            <div class="col-sm-1">
                                                <div class="col-sm-12">
                                                    <div class="col-sm-1">
                                                        <button id="importYz" class="btn btn-sm btn-success">
                                                            同步有赞订单
                                                        </button>
                                                    </div>
                                                </div>
                                            </div>
                                        </c:if>
                                        <div class="col-sm-1">

                                            <%--<div id="demoOut" class="MyCssBtn leftBtn" onclick="demoOut();"><span>模板下载</span>--%>
                                            <%--</div>--%>
                                            <%--<div id="excelOut" class="MyCssBtn leftBtn" onclick="excelOut();"><span>Excel导出</span>--%>
                                            <%--</div>--%>


                                        </div>
                                    </div>
                                </div>
                            </div>
                            <br>
                        </div>
                    </div><!-- 查询条件 -->
js
            "fnServerParams": function (aoData) {  //查询条件
                aoData.push(
                    {"name": "mainorderNum", "value": $("#mainorderNum").val()},
                    {"name": "phone", "value": $("#phone").val()},
                    {"name": "deliveryState", "value": $("#deliveryState").val()},
                    {"name": "orderType", "value": $("#orderType").val()},
                    {"name": "orderState", "value": $("#orderState").val()},
                    {"name": "startTime", "value": $("#startTime").val()},
                    {"name": "endTime", "value": $("#endTime").val()},
                    {"name": "goodsId", "value": $("#ddGoods").val()}
                )
            },
        //查询
        $("#query").click(function () {
            $("#orderTable").dataTable().fnDraw(true);
        });

3. 导入导出


html
                <div class="row" style="height: 50px;">
                    <div class="col-xs-12">
                        <div class="form-group">
                            <c:if test="${auth.isadd == 1}">
                                <li class="col-sm-2">
                                    <button onclick="addOrder();" class="btn btn-success btn-sm ">新&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;增</button>
                                </li>
                            </c:if>
                            <form class="col-sm-2" action="/manage/order/downLoadDemo" method="post">
                                <input type="submit" class="btn btn-success btn-sm " value="模板下载">
                            </form>
                            <form class="col-sm-2" action="/manage/order/download" method="post" onsubmit="checkForm()">
                                <input type="submit" class="btn btn-success btn-sm " value="Excel导出">
                                <input id="mainorderNum1" name="mainorderNum" value="" style="display: none"></input>
                                <input id="phone1" name="phone" value="" style="display: none"></input>
                                <input id="deliveryState1" name="deliveryState" value="" style="display: none"></input>
                                <input id="orderType1" name="orderType" value="" style="display: none"></input>
                                <input id="orderState1" name="orderState" value="" style="display: none"></input>
                                <input id="startTime1" name="startTime" value="" style="display: none"></input>
                                <input id="endTime1" name="endTime" value="" style="display: none"></input>
                                <input id="goodsId1" name="goodsId" value="" style="display: none"></input>
                            </form>
                            <c:if test="${auth.isadd == 1}">
                                <li class="col-sm-1">
                                    <span>上&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传:</span>
                                </li>
                                <li class="col-sm-3">
                                    <span>
                                         <input type="file" accept=".xls" id="upfile" name="upfile" placeholder="">
                                    </span>
                                </li>
                                <li class="col-sm-2">
                                    <button id="importExp" onclick="importExp();" class="btn btn-success btn-sm ">导&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;入</button>
                                    <span>格式:.xls</span>
                                </li>
                            </c:if>
                        </div>
                    </div>
                </div><!-- 导入导出 -->

js
    //导入文件
    function importExp() {
        name = $("#upfile").val();
        if (name == "") {
            alert("请先选择文件!");
            return;

        }
        layer.msg("开始导入订单...");
        var formData = new FormData();
        formData.append("file", $("#upfile")[0].files[0]);
        formData.append("name", name);
        $.ajax({
            url: '/manage/order/upload',
            type: 'POST',
            async: false,
            data: formData,
            // 告诉jQuery不要去处理发送的数据
            processData: false,
            // 告诉jQuery不要去设置Content-Type请求头
            contentType: false,
            dataType: 'JSON',
            beforeSend: function () {
                console.log("正在进行,请稍候");
            },
            success: function (result) {
                var res = result.res;
                var resmsg = result.resMsg;
                if (res != 0 && res != "0") {
                    layer.msg("导入成功" + resmsg + "条数据!");
                    $("#upfile").val("");
                    $("#orderTable").dataTable().fnDraw(true);
                    window.location.reload();
                } else {
                    alert("导入失败," + resmsg);
                    $("#upfile").val("");
                    window.location.reload();


                }
            }
        });
    }

4. 编辑修改一


html
<div class="modal fade" id="ztCode" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabe2">填写运单信息</h4>
            </div>
            <div class="modal-body">
                <div class="row">
                    <div class="form-group">
                        <label class="col-sm-4 control-label text-right" for="slogisticCode">自提点: </label>
                        <div class="col-sm-6">
                            <select class="col-sm-12" id="ztid" style="padding:0 0">
                                <option value=""> 请选择自提点</option>
                                <c:forEach items="${ztList}" var="zt" varStatus="roleStatus">
                                    <option value="${zt.id}"> ${zt.name}</option>
                                </c:forEach>
                            </select>
                        </div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                <button type="button" class="btn btn-primary" id="saveztCode">提交更改</button>
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal -->
</div>
js
  var ztid = $("#ztid").val();
            $('#ztCode').modal('show');
            $.ajax({
                type: "POST",
                url: "/manage/order/modifySlogisticCode",
                data: {
                    id: goodsId,
                    expressType: expressType,
                    slogisticCode: slogisticCode
                },
                dataType: "json",
                success: function (data) {
                    if (data.res == 1) {
                        layer.msg("面单号提交成功")
                        $("#orderTable").dataTable().fnDraw(true);
                        $('#ztCode').modal('hide');

                    } else {
                        alert(data.resMsg);
                        $('#ztCode').modal('hide');

                    }
                }
            });

5. 编辑修改二


html
js

点击修改按钮,使用layer.open方法加载toadd页面;
controller查询add页面需要的参数加到model中返回;
在add页面提交数据,刷新列表;

    //手工订单
    function handOrderGoods(id) {
	    handIndex=layer.open({
		  type: 2,
		  title: '手工订单',
		  shadeClose: true,
		  shade: 0.8,
		  area: ['800px', '500px'],
		  content: '${pageContext.request.contextPath}/manage/card/toCardphoneOrderAdd?id='+id //iframe的url
		}); 
       
    }   
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值