layui 导出全部数据

  1. 在表头加一个导出按钮

    <div class="admin-main layui-anim layui-anim-upbit">

        <fieldset class="layui-elem-field layui-field-title">

            <legend>卡号列表</legend>

        </fieldset>

        <button class="layui-btn" id="setExcel"><i class="layui-inline layui-icon layui-icon-refresh-3"></i>导出数据</button>

        <table class="layui-table" id="list" lay-filter="list">

        </table>

    </div>

  2. 导出的js部分

    $('#setExcel').on('click', function () {

        //套餐id,筛选条件

        var receive_id = {$receive_id};

        $.post("{:U('Receive/ajaxList')}", {receive_id: receive_id}, function (res) {

            layer.msg('数据导出成功', {time: 1000, icon: 1}, function () {

                //number,password,status,use_time,start_time,end_time(字段的位置严格对应下面的列名)

                table.exportFile(['卡号','密码','使用状态','使用时间','生效时间','截止时间'],res, 'xls');

            });

        });

    });

  3. 数据请求(即获取需要导出的数据)

    //获取导出数据

    public function ajaxList(){

        $where = [];

        //套餐筛选

        $receive_id = I('post.receive_id',0);

        if($receive_id){

            $where['a.receive_id'] = $receive_id;

        }

        //实例化卡号表

        $model = M('account');

        $list = $model

            ->alias('a')

            ->field('number,password,a.status,use_time,start_time,end_time')

            //左连套餐表

            ->join('left join __RECEIVE__ as b on a.receive_id=b.receive_id')

            ->where($where)

            ->select();

        if($list)

        {

            foreach ($list as $key=>$val)

            {

                //状态替换为中文

                if($val['status'] == 1){

                    $list[$key]['status'] = '未使用';

                }elseif ($val['status'] == 2){

                    $list[$key]['status'] = '已使用';

                }else{

                    $list[$key]['status'] = '已过期';

                }

                //时间戳格式化

                if($val['use_time']){

                    $list[$key]['use_time'] = date('Y-m-d H:i:s', $val['use_time']);

                }else{

                    $list[$key]['use_time'] = '/';

                }

                //时间戳格式化

                if($val['start_time']){

                    $list[$key]['start_time'] = date('Y-m-d H:i:s', $val['start_time']);

                }else{

                    $list[$key]['start_time'] = '/';

                }

                //时间戳格式化

                if($val['end_time']){

                    $list[$key]['end_time'] = date('Y-m-d H:i:s', $val['end_time']);

                }else{

                    $list[$key]['end_time'] = '/';

                }

            }

        }

        $this->ajaxReturn($list);

    }

  4. 点击导出数据

    _BCH%V7NO{(}E@KY7WLZV(S.png

    DDV1]JMN{YTK[@9}M}[62P0.png

    眼尖的朋友一眼就能看出生效时间和截止时间显示有问题,实际这不是乱码.只是列宽不够

    3}9M_0`3C3L4})JPD_0[WEC.png

    文档也没有调整列宽的介绍,至此导出功能就完了

发表评论

  1. :cool: