layui 导出全部数据

框架组成

前端 : layui 后端 : laravel

需求

导出商品列表(6000多条数据),渠道列表(100条数据)

代码

<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
      <button class="layui-btn layui-btn-sm" lay-event="export">导出</button>
    </div>
</script>
// 头工具栏事件
table.on('toolbar(test)', function (obj) {
  if (obj.event == 'export') {
    $.ajax({
      url : '{{ route('order_build.export') }}',
      type: 'get',
      data: {//可查询的数据
        goods_name    : $('input[name="goods_name"]').val(),
        order_id      : $('input[name="order_id"]').val()
      }
    }).done(function (data) {
      table.exportFile(tableIns.config.id, data, 'csv');
    });
  }
});
...
public function export(Request $request, OrderBuild $order_build)
{
    if ($request->filled('goods_name')) {
        $order_build = $order_build->where(
            'order_build.goods_name',
            'like',
            '%' . $request->input('goods_name') . '%'
        );
    }

    if ($request->filled('order_id')) {
        $order_build = $order_build->where('order_build.order_id', $request->input('order_id'));
    }
    // 排序
    $order_build = $order_build->orderBy('order_build.create_time', 'desc');
    $order_build = $order_build->get();
    //格式化导出数据
    foreach ($order_build as $key=>$value) {
        $order_build[$key]['order_id'] = $value['order_id']."\t";
        $order_build[$key]['subcustomer_id'] = $value['subcustomer_id']."\t";
        $order_build[$key]['linkmanphone'] = $value['linkmanphone']."\t";
    }

    return response()->json($order_build);
}
...

结果

  1. 需要配合头工具栏事件使用,否则会出现可以导出全部数据,不能导出查询数据的问题
  2. 可以解决渠道列表的导出问题,不能解决商品列表的导出问题,数据太多,会出现超时问题

    未完待续...


喜欢做饭的PHP开发

大春儿
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!