一、HTML
1 <table class="layui-hide layui-table" id="spu-data"></table>
二、JS
說明:需要引入layui中的table和laytpl模板引擎,laytpl可以自定義事件及自定義數據字段等
1 <!-- 拼接圖片 --> 2 <script type="text/html" id="pimg"> 3 <img class="img" onmouseover="divIn(event)" onmouseout="divOut(event)" onmousemove="divIn(event)" src="__PUBLIC__/{{d.pimgurl}}t_{{d.pimgname}}" alt=""> 4 </script> 5 6 <!-- 查看詳情按鈕 --> 7 <script type="text/html" id="spu_detail"> 8 <button class="layui-btn layui-btn-xs layui-btn-primary spu_detail" artnum="{{d.artnum}}" value="{{d.basic_id}}" onclick="spuDetail(event)">查看詳情</button> 9 </script> 10 11 <script type="text/html" id="hotcake_color"> 12 {{# if (d.hotcake === '超級爆款') { }} 13 <span style="display: block;background-color: #CCFFCC;">{{ d.hotcake }}</span> 14 {{# } else if(d.hotcake === '大爆款') { }} 15 <span style="display: block;background-color: #99CCCC;">{{ d.hotcake }}</span> 16 {{# } else if(d.hotcake === '小爆款') { }} 17 <span style="display: block;background-color: #FFCCCC;">{{ d.hotcake }}</span> 18 {{# } else if(d.hotcake === '熱銷款') { }} 19 <span style="display: block;background-color: #FFFFCC;">{{ d.hotcake }}</span> 20 {{# } else { }} 21 <span style="display: block;background-color: #CCFFFF;">{{ d.hotcake }}</span> 22 {{# } }} 23 </script>
1 <script type="text/javascript"> 2 3 layui.use(['form','laydate','layer','table','laytpl'],function(){ 4 var laydate = layui.laydate; 5 var layer = layui.layer; 6 var table = layui.table; 7 var laytpl = layui.laytpl; 8 9 //---SPU數據--------------------------------------------- 10 var spu_table = table.render({ 11 elem: '#spu-data', //html中table窗口的id 12 height: 800, 13 url: '__URL__/spu_data', //后台接口 14 toolbar: true, 15 loading: true, 16 text: { 17 none: '空空如也' 18 }, 19 title: 'spu數據', 20 size: 'sm', 21 page: { 22 layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'], 23 limit: 20, 24 limits: [20,30,50,100,200,5000] 25 }, 26 cols: [[ 27 {field:'n', title: 'i', width: 55}, 28 {field:'', title: '圖', width: 31, templet: '#pimg'}, // templet 引用laytpl中的自定義模板 29 {field:'', title: '查看詳情', width: 120, templet: '#spu_detail'}, // 引用laytpl中的自定義模板 30 {field:'artnum', title: '貨號', sort: true}, 31 {field:'gcolor', title: '顏色組', sort: true}, 32 {field:'cate', title: '品類', sort: true}, 33 {field:'price', title: '業績', sort: true}, 34 {field:'sales', title: '銷量', sort: true}, 35 {field:'hotcake', title: '熱銷程度', templet: '#hotcake_color', sort: true}, 36 {field:'sumcost', title: '商品成本', sort: true} 37 ]] 38 }); 39 40 // 搜索重載數據 41 $('#spudata_search').click(function(){ 42 // 獲取日期的值 43 var date = $('#spusearch_date').val(); 44 if (!date) { 45 layer.msg('請選擇日期區間搜索', { 46 time: 2000 47 }); 48 return false; 49 } 50 51 var perfor_val = $('#perfor_val').val();; 52 var hot_type = $('#hot_type').val(); 53 var artnum = $('#artnum').val(); 54 var cate_id = $('#cate_id').val(); 55 56 // 只選其一條件 57 if (perfor_val && hot_type) { 58 layer.msg('業績區間和爆款類型只選其一', { 59 time: 2000 60 }); 61 return false; 62 } 63 64 // 數據重載 65 spu_table.reload({ 66 // 發送條件 67 where: { 68 artnum: artnum, 69 perfor_val: perfor_val, 70 hot_type: hot_type, 71 cate_id: cate_id, 72 date: date, 73 act: 'reload' 74 }, 75 page: { 76 layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'], 77 curr: 1 78 } 79 }); 80 81 }) 82 83 }) 84 </script>
三、PHP
1 #這里是PHP類中主要的配合步驟 2 3 # 接收layui發送的limit 4 if (trim($_GET['limit'])) { 5 $limit = trim($_GET['limit']); 6 }else{ 7 $limit = 15; 8 } 9 10 # 按某字段排序,$rows為數據數組 11 $sort_num = array_column($rows,'num'); 12 array_multisort($sort_num,SORT_DESC,$rows, SORT_DESC); 13 14 # 調用自定義分頁函數 15 $datas = array(); 16 $datas = showpage($rows,$limit); 17 18 $items = array(); 19 20 # 返回layui數據格式 21 $items['data'] = $datas['rows']; 22 $items['code'] = 0; 23 $items['msg'] = 'ok'; 24 $items['count'] = $datas['tot']; 25 26 exit(json_encode($items));
1 # showpage函數 2 3 function showpage($rows,$count){ 4 $tot = count($rows); // 總數據條數 5 6 if ($_GET['page']) { //獲取當前頁碼 7 $page = $_GET['page']; 8 }else{ 9 $page = 1; 10 } 11 12 // $count = $count; # 每頁顯示條數 13 14 $countpage = ceil($tot/$count); # 計算總共頁數 15 16 $start = ($page-1)*$count; # 計算每頁開始位置 17 18 $datas = array_slice($rows, $start, $count); # 計算當前頁數據 19 20 # 獲取上一頁和下一頁 21 if ($page > 1) { 22 $uppage = $page-1; 23 }else{ 24 $uppage = 1; 25 } 26 27 if ($page < $countpage) { 28 $nextpage = $page+1; 29 }else{ 30 $nextpage = $countpage; 31 } 32 33 $pages['countpage'] = $countpage; 34 $pages['page'] = $page; 35 $pages['uppage'] = $uppage; 36 $pages['nextpage'] = $nextpage; 37 $pages['tot'] = $tot; 38 39 //循環加入序號 , 避免使用$i引起的序號跳位 40 $n = 1; 41 foreach ($datas as &$data) { 42 $data['n'] = $n; 43 $n++; 44 } 45 46 $pages['rows'] = $datas; 47 48 return $pages; 49 }