layui table组件与php后端分页的排序功能
1、前端代码
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">详情</a>
</script>
layui.use('table', function(){
var table = layui.table;
//第一个实例
table.render({
elem: '#demo'
,autoSort: false //禁用前端自动排序
,url: "{{route('image_get_user_list_ajax')}}" //数据接口
,where:{
timeType:"{{$_GET['timeType']}}",
startTime:"{{$data['param']['startTime']}}",
endTime:"{{$data['param']['endTime']}}",
keyword:"{{$data['param']['keyword']}}"
}
,page: true //开启分页
,cols: [[ //表头 sort 表示分页
{field: 'id', title: '会员ID', fixed: 'left',unresize: true,width:120}
,{field: 'phone', title: '手机号',unresize: true,width:150}
,{field: 'pur_amount', title: '消费金额',unresize: true,width:150,sort: true}
,{field: 'regtime', title: '注册时间',unresize: true,width:210}
,{field: 'last_pur', title: '最近支付时间',unresize: true,width:210}
,{field: 'vip_end_time', title: 'vip到期时间',unresize: true,width:250}
,{field: 'status_str', title: '会员状态', width: 100}
,{field: 'free_times', title: '剩余免费次数', width: 150,sort: true}
,{field: '', title: '操作', toolbar: '#barDemo',align:'center'}
]]
});
//监听工具条 点击详情按钮
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
location.href="{{ route($data['route_prefix'].'_user_detail') }}?id="+data.id
}
});
//触发排序事件
table.on('sort(test)', function(obj){
table.reload('demo', {
initSort: obj
,where: {
field: obj.field //排序字段
,order: obj.type //排序方式
}
});
});
});
2、php代码
<?php
$res = $list->toArray()['data']; //分页之后的数据
if ($request->input('field') && $request->input('order')) { //排序
$res_order = array_column($res, $request->input('filed'));
if ($request->input('order') == 'asc') $order = SORT_ASC;
if ($request->input('order') == 'desc') $order = SORT_DESC;
array_multisort($res_order, $order, $res);
}
$ajax_data['code'] = 0;
$ajax_data['msg'] = '';
$ajax_data['count'] = $list->total();
$ajax_data['data'] = $res;
return json_encode($ajax_data);