结合jqLoding分页读取下载

1. 下载插件jquery-ui-jqLoding.js

引入
~~~
<div class="col-md-1">
        <button id="orderTrackDown" type="button" class="btn btn-primary btn_sizes">下载</button>
</div>


<script src="{{ asset('assets/js/jqLod/jquery-ui-jqLoding.js') }}" type="text/javascript"></script>
~~~

2. jq

$('#orderTrackDown').click(function(){
            if(!check()){
                return false;
            }

            $.fn.jqLoading({height: 70, width: 210, text: "正在生成报表,请稍后"});
            buildTrackSummary(1,'');
        });
        function buildTrackSummary(id,fileName) {
            var data = $("#orderTracking").serialize();
            data += "&id=" + id;
            if (fileName != '') {
                data += "&file_name=" + fileName;
            }
            $.ajax({
                type: 'post',
                url: '{{url('admin/chart/orderTrackDownload')}}',
                dataType: 'json',
                data: data,
                success: function (res) {
                    if (res.status) {
                        buildTrackSummary(res.id, res.fileName);
                    } else {
                        $.fn.jqLoading("destroy");
                        layer.msg(res.msg);
                        if (res.fileName !== false) {
                            window.location.href = "{{url('admin/chart/orderTrackCsv')}}" + "?file=/" + res.fileName + "&fileName=订单物流信息统计数据";
                        }
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $.fn.jqLoading("destroy");
                    layer.msg("发生意外错误,请重试!");
                },
                complete: function (XMLHttpRequest, textStatus) {
                    this; // 调用本次AJAX请求时传递的options参数
                }
            });
        }

后段代码

public function orderTrackDownload(Request $request) {

        $query = \App\Models\Order::query()->where('status','>',Order::STATUS_READY_SHIP);

        if ($start_time = $request->get('starttime','')) {
            $start_time = convertTime($start_time, TIME_CARBON)->startOfDay();
            $query->where('created_at','>=',$start_time);
        }
        if ($end_time = $request->get('endtime','')) {
            $end_time = convertTime($end_time, TIME_CARBON)->endOfDay();
            $query->where('created_at','<=',$end_time);
        }
        if ($id = $request->get('id','')) {
            $query->where('id','>',$id);
        }
        //数据
        $orders = $query->orderBy('id','asc')->limit(1000)->get();
        //最后一个id
        $last_id = '';
        if ($orders) {
            //文件名
            $file_name = $request->get('file_name', storage_path('files/order-track-summary-' . Uuid::uuid4()->getHex() . '.csv'));
            $fp = fopen($file_name, 'a+');
            //第一次
            if ($id == 1) {
           		 //bom
                fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));
                $title_list = ['订单号','订单金额','订单类型'];
                fputcsv($fp,$title_list);
            }
            //数据格式
            foreach ($orders as $order) {
                //最后一个id,方便分页搜索
                $last_id = $order['id'];
                $data = [
                    'id'                => $order['id'],
                    'order_cost' => $order->cost['total'],
                    'type'              => Order::$_orderTypeArr[$order['type']] ?? '',
                ];

                fputcsv($fp,$data);
            }
            //关闭文件
            fclose($fp);
            if (count($orders) < 1000) {
                return response()->json(['status' => false, 'msg' => '导出成功', 'fileName' => $file_name]);
            }
            return response()->json(['status' => true, 'id' => $last_id, 'fileName' => $file_name]);
        }

        return response()->json(['status' => false, 'msg' => 'cuowu']);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值