Layui_1.0.9_分頁實例_Java

1、實體javascript

package com.ebd.application.modules.taskManage.pojo;

import com.ebd.application.common.Base.BaseBean;

public class Task extends BaseBean{

	private String tName;	//任務名稱
	private String tStatus;	//任務狀態(0:未執行;1:執行成功;2執行失敗)
	private String tSchedule;	//任務進度
	private String tDesc;	//任務簡述
	private String tDatasource; 
	
	public String gettName() {
		return tName;
	}
	public void settName(String tName) {
		this.tName = tName;
	}
	public String gettStatus() {
		return tStatus;
	}
	public void settStatus(String tStatus) {
		this.tStatus = tStatus;
	}
	public String gettSchedule() {
		return tSchedule;
	}
	public void settSchedule(String tSchedule) {
		this.tSchedule = tSchedule;
	}
	public String gettDesc() {
		return tDesc;
	}
	public void settDesc(String tDesc) {
		this.tDesc = tDesc;
	}
	public String gettDatasource() {
		return tDatasource;
	}
	public void settDatasource(String tDatasource) {
		this.tDatasource = tDatasource;
	}
}

2、前端頁面css

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<%
	String path = request.getContextPath();
	String rootPath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ "/";
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path;
	request.setAttribute("basePath", basePath);
	request.setAttribute("rootPath", rootPath);
	pageContext.setAttribute("newLineChar", "\n");
%>
<link rel="stylesheet" href="${basePath}/static/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="//at.alicdn.com/t/font_tnyc012u2rlwstt9.css" media="all" />
<link rel="stylesheet" href="${basePath}/static/css/tasks.css" media="all" />
</head>
<body class="childrenBody">
	<blockquote class="layui-elem-quote tasks_search layui-form">
		<input id="checkids" type="hidden">
		<div class="layui-inline">
		    <div class="layui-input-inline">
		    	<input type="text" placeholder="請輸入關鍵字" class="layui-input search_input">
		    </div>
		    <div class="layui-input-inline">
		        <select lay-verify="required" class="search_select">
		          <option value="">請選擇任務狀態</option>
		          <option value="0">未執行</option>
		          <option value="1">執行成功</option>
		          <option value="2">執行失敗</option>
		        </select>
		      </div>
		    <a class="layui-btn search_btn" id="search">查詢</a>
		</div>
		<div class="layui-inline">
			<a class="layui-btn layui-btn-normal tasksAdd_btn" style="background-color:#5FB878">添加任務</a>
		</div>
		<div class="layui-inline">
			<a class="layui-btn tasksEdit_btn">編輯任務</a>
		</div>
		<div class="layui-inline">
			<a class="layui-btn layui-btn-warm tasksDel_btn">選擇刪除</a>
		</div>
		<div class="layui-inline">
			<a class="layui-btn layui-btn-danger tasksBatchDel_btn">批量刪除</a>
		</div>
	</blockquote>
	<div class="layui-form tasks_list">
	  	<table class="layui-table">
		    <colgroup>
				<col width="50">
				<col width="10%">
				<col>
				<col width="7%">
				<col width="25%">
				<col width="8%">
				<col width="15%">
				<col width="15%">
		    </colgroup>
		    <thead>
				<tr>
					<th><input type="checkbox" lay-skin="primary" lay-filter="allChoose" id="allChoose"></th>
					<th>名稱</th>
					<th>簡述</th>
					<th>狀態</th>
					<th>進度</th>
					<th>建立者</th>
					<th>建立時間</th>
					<th>操做</th>
				</tr> 
		    </thead>
		    <tbody class="tasks_content" ></tbody>
		</table>
	</div>
	<div id="page"></div>
	<script type="text/javascript" src="${basePath}/static/js/jquery.js"></script>
	<script type="text/javascript" src="${basePath}/static/layui/layui.js"></script>
	<script type="text/javascript">
        $(function(){
              //初始化列表及分頁
              submit();
              //點擊查詢時觸發
              $("#search").click(function(){ 
            	//當點擊搜索的時候,起始搜索值爲0-10,且當前頁回到第一頁
               	startPage = 0; 
               	currentPage = 1;
            	submit();
              })
        });

        //分頁參數設置 這些全局變量關係到分頁的功能
        var startPage = 0;
        var limitNum = 10;
        var currentPage = 1;
        var totalPage = 0;
        //ajax請求後臺數據
        function submit(){
        	var selectName = $(".search_input").val()
        	var selectStatus = $(".search_select").val()
            $.ajax({
                type:"post",
                async:false,
                url:"${basePath}/task/taskListByPage.htm",
                data:{start:startPage, limit:limitNum,selectName:selectName,selectStatus:selectStatus},
                success:function(data,status){
                    data=eval("("+data+")"); //轉爲對象
                    startPage = data.currentIndex;//當前頁數(後臺返回)
                    totalPage = data.totalPage;//總頁數(後臺返回)
                    toPage(data.dataList);
                }
            });
        }

        //看看參數有的是否爲空(data:後臺數據)
        function toPage(data){
            layui.use(['form', 'layer', 'layedit', 'laydate', 'laypage', 'element'], function() {
            	var form = layui.form(),
                layer = layui.layer,
                layedit = layui.layedit,
                laydate = layui.laydate,
                laypage = layui.laypage,
            	element = layui.element();
                //調用分頁
                laypage({
                    cont: 'page'
                    ,pages: totalPage 
                    ,curr: currentPage
                    ,skip: true
                    ,jump: function(obj, first){
                        currentPage = obj.curr;
                        startPage = (obj.curr-1)*limitNum;
                        getBacktasks(data); //渲染數據
                        if(!first){ //加此判斷,避免初始時會無限刷新
                      	  submit(); //必定要把翻頁的ajax請求放到這裏,否則會請求兩次。
                        }
                        element.init();
                        form.render(); 
                    }
                  });
                //全選
                form.on('checkbox(allChoose)', function (data) {
        	        var checkvals="";
                	var child = $(data.elem).parents('table').find('tbody input[type="checkbox"]:not([name="show"])');
                	child.each(function (index, item) {
        	            item.checked = data.elem.checked;
        	            if(item.checked){
        	            	checkvals += ","+item.value;
        	            }
        	        });
        	        //捕捉被選記錄個數及id
        	        $("#checkids").attr("valength",checkvals.split(",").length-1);
        	        $("#checkids").val(checkvals);
        	        form.render('checkbox');
        	    });
               //經過判斷文章是否所有選中來肯定全選按鈕是否選中
               form.on("checkbox(choose)", function (data) {
            	    var checkvals=""; 
            	    var child = $(data.elem).parents('table').find('tbody input[type="checkbox"]:not([name="show"])');
                    var childChecked = $(data.elem).parents('table').find('tbody input[type="checkbox"]:not([name="show"]):checked')
                    if (childChecked.length == child.length) {
                        $(data.elem).parents('table').find('thead input#allChoose').get(0).checked = true;
                    } else {
                        $(data.elem).parents('table').find('thead input#allChoose').get(0).checked = false;
                    }
                    //遍歷被選中的記錄
                    for(var i=0;i<childChecked.length;i++){
                    	checkvals += ","+childChecked[i].value;
                    }
                  	//捕捉被選記錄個數及id
                    $("#checkids").attr("valength",childChecked.length);
                    $("#checkids").val(checkvals);
                    form.render('checkbox');
                })
                
                //處理進度條(n:後臺獲取;timer:循環index;id:任務id;start:點擊啓動時記錄任務對象)
                var n = 0, timer = 0, id, start;
                var DISABLED = 'layui-btn-disabled';
                var active = {
            	    loading: function(othis){
            	      start = othis;
            	      if(othis.hasClass(DISABLED)) return;
            	      //初始化n
            	      n = parseInt(othis.context.lang);
            	      //loading
            	      timer = setInterval(function(){
	            	    n = n + Math.random()*10|0;  
	            	    if(n>100){
	            	      n = 100;
	            	      clearInterval(timer);
	            	      othis.removeClass(DISABLED);
	            	      //記錄到數據庫
	            	      taskSchedule(100,othis.context.name);
	            	    }
            	        element.progress(othis.context.id, n+'%');
            	      }, 300+Math.random()*1000);
            	      othis.addClass(DISABLED);
            	    },stop: function(othis){
            	    	//記錄進度
            	    	start.context.lang = n;
            	    	//中止循環
            	    	clearInterval(timer);
            	    	//去除disabled標記
            	    	start.removeClass(DISABLED);
            	    	//記錄到數據庫
            	    	taskSchedule(n,othis.context.name);
            	    }
            	  };
            	  
            	  $('.taskProgress').on('click', function(){
            	    var othis = $(this), type = $(this).data('type');
            	    active[type] ? active[type].call(this, othis) : '';
            	  });
            });
        };
        
        //遍歷裝載數據
        function getBacktasks(data){
        	var htmlStr = "";
        	$.each(data,function(v,o){
        		htmlStr+="<tr><td><input type=\"checkbox\" lay-skin=\"primary\" class='cd_checkbox' value=\""+o.id+"\" lay-filter=\"choose\"></td>";
        		htmlStr+='<td>'+o.tName+'</td>';
        		htmlStr+='<td>'+o.tDesc+'</td>';
        		htmlStr+='<td>';
       			if(0==o.tStatus){
       				htmlStr+='<i class=\"layui-icon\" style=\"font-size: 30px; color: #FFB800;\"></i>'
       			}else if(1==o.tStatus){
       				htmlStr+='<i class=\"layui-icon\" style=\"font-size: 30px; color: #5FB878\"></i>'
       			}else{
       				htmlStr+='<i class=\"layui-icon\" style=\"font-size: 30px; color: #FF5722;\">ဆ</i>'
       			}
       			htmlStr+='</td>';
        		htmlStr+='<td>';
        		htmlStr+='<div class=\"layui-progress layui-progress-big\" lay-showpercent=\"true\" lay-filter=\"task_'+o.id+'\">';
        		htmlStr+='	<div class=\"layui-progress-bar layui-bg-green\" lay-percent=\"'+o.tSchedule+'%\"></div>';
        		htmlStr+='</div>';
        		htmlStr+='</td>';
        		htmlStr+='<td>'+o.creater+'</td>';
        		htmlStr+='<td>'+o.createDate+'</td>';
        		htmlStr+='<td>';
        		htmlStr+='<a class=\"layui-btn layui-btn-mini taskProgress\" data-type=\"loading\" id=\"task_'+o.id+'\" name=\"'+o.id+'\" lang=\"'+o.tSchedule+'\"><i class=\"iconfont icon-edit\"></i>啓動</a>';
        		htmlStr+='<a class=\"layui-btn layui-btn-danger layui-btn-mini taskProgress\" data-type=\"stop\" name=\"'+o.id+'\"><i class=\"layui-icon\"></i>中止</a>';
        		htmlStr+='</td></tr>';
        	});

            if(data.length>0){
            	$("#page").show();
                $(".tasks_content").html(htmlStr);
            }else{
                $("#page").hide();
                $(".tasks_content").html("<tr><td colspan='9'>暫無數據</td></tr>");
            }
            
          	//清空checkids(checkbox記錄)
	        $("#checkids").attr("valength",0);
	        $("#checkids").val("");
        }
        
       //=============================點擊事件===============================
       $(window).one("resize",function(){
			$(".tasksAdd_btn").click(function(){
				var index = layui.layer.open({
					title : "添加任務",
					type : 2, anim: 2,
					content : "${basePath}/task/modifyPage.htm",
					success : function(layero, index){
						setTimeout(function(){
							layui.layer.tips('點擊此處返回數據源列表', '.layui-layer-setwin .layui-layer-close', {
								tips: 3
							});
						},500)
					}
				})			
				
				layui.layer.full(index);
			});
			$(".tasksEdit_btn").click(function(){
				if($("#checkids").attr("valength")==1){
					task_edit($("#checkids").val().substring(1));
				}else{
					layui.layer.alert('友情提示:請選擇一條記錄進行編輯', {
					  skin: 'layui-layer-molv' 
					  ,closeBtn: 0
					});
				}
			});
			$(".tasksDel_btn").click(function(){
				if($("#checkids").attr("valength")==1){
					task_del($("#checkids").val().substring(1));
				}else{
					layui.layer.alert('友情提示:請選擇一條記錄進行刪除', {
					  skin: 'layui-layer-molv' 
					  ,closeBtn: 0
					});
				}
			});
			$(".tasksBatchDel_btn").click(function(){
				if($("#checkids").attr("valength")>=1){
					task_del($("#checkids").val().substring(1));
				}else{
					layui.layer.alert('友情提示:至少選擇一條記錄進行刪除', {
					  skin: 'layui-layer-molv' 
					  ,closeBtn: 0
					});
				}
			});
		}).resize();
        function task_edit(id){
    	   var index = layui.layer.open({
				title : "編輯任務",
				type : 2, anim: 2,
				content : "${basePath}/task/modifyPage.htm?id="+id,
				success : function(layero, index){
					setTimeout(function(){
						layui.layer.tips('點擊此處返回數據源列表', '.layui-layer-setwin .layui-layer-close', {
							tips: 3
						});
					},500)
				}
			})			
		    layui.layer.full(index);
        }
        function task_del(ids){
        	layer.confirm('友情提示:你肯定要刪除該記錄嗎', {skin: 'layui-layer-molv' }, function(index){
        		$.ajax({
    				type : "POST",
    				async : false,
    				dataType : "JSON",
    				cache : false,
    				url : "${basePath}/task/delete.htm",
    				data :  {"ids":ids},
    				success : function(data) {
    					if (data.flag) {
    						layer.msg(data.msg, {
    						  icon:data.msgIcon,
    						  time:data.msgTime 
    						}, function(){
    							submit();
    						});  
    					} else {
    						layer.msg(data.msg, {
    						  icon:data.msgIcon,
    						  time:data.msgTime 
    						});  
    					}
    				}
    			});
        		layer.close(index);
        	}); 
        }
        
        //記錄進度
        function taskSchedule(n,id){
        	$.ajax({
				type : "POST",
				async : false,
				dataType : "JSON",
				cache : false,
				url : "${basePath}/task/remschedule.htm",
				data :  {"schedule":n, "id":id},
				success : function(data) {}
			});
        }
    </script>
</body>
</html>

3、分頁類html

package com.ebd.application.common.Base;

import java.util.List;
import java.util.Map;

public class Page<T> {

	/** 總記錄數 */
    private int total;
    /** 分頁結果 */
    private List<T> dataList;
    /** 開始頁碼 */
    private int start;
    /** 每頁多少 */
    private int limit;
    /** 查詢條件 */
    private Map<String,Object> condition;
    
    private int currentPage;    //當前頁
    private int currentIndex;   //當前記錄起始索引
    private int totalPage;      //總頁數
    
    public Page(int start, int limit) {
    	this.start = start;
    	this.limit = limit;
	}
    
    public Page(int start, int limit, Map<String,Object> condition) {
    	this.start = start;
    	this.limit = limit;
    	this.condition = condition;
    }

    public int getCurrentPage() {
        if(currentPage<=0) currentPage = 1;
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getCurrentIndex() {
    	this.currentIndex = (getCurrentPage()-1)*getLimit();
        if(currentIndex<0) currentIndex = 0;
        return currentIndex;
    }

    public void setCurrentIndex(int currentIndex) {
        this.currentIndex = currentIndex;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
    	if(total%limit==0)
            totalPage = total/limit;
        else
            totalPage = total/limit+1;
        this.total = total;
    }

	public List<T> getDataList() {
		return dataList;
	}

	public void setDataList(List<T> dataList) {
		this.dataList = dataList;
	}

	public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }

    public Map<String, Object> getCondition() {
	return condition;
    }

    public void setCondition(Map<String, Object> condition) {
	this.condition = condition;
    }

}

4、控制器前端

@ResponseBody
@RequestMapping("taskListByPage")
public Page<Task> listByPage(Integer start, Integer limit, String selectName, String selectStatus) {
	
	Map<String,Object> conditions = new HashMap<String,Object>();
	conditions.put("name", selectName);
	conditions.put("status", selectStatus);
	Page<Task> page = new Page<Task>(start,limit,conditions);
	page.setDataList(taskService.findByPage(page));
	page.setTotal(taskService.getCount(page));
	return page;
}

5、mapperjava

<!-- 獲取總數 -->
<select id="getCount" resultType="int">  
	select count(1) from bd_tasks
	where is_del = 0 
	<if test="condition.name != ''">
		and t_name like concat('%',#{condition.name,jdbcType=VARCHAR},'%') 
	</if>
	<if test="condition.status != ''">
		and t_status = #{condition.status,jdbcType=INTEGER}
	</if>
</select> 
<!-- 分頁獲取記錄 -->
<select id="findByPage" resultMap="BaseResultMap">
	select 
	<include refid="Base_Column_List" />
	from bd_tasks where is_del = 0 
	<if test="condition.name != ''">
		and t_name like concat('%',#{condition.name,jdbcType=VARCHAR},'%') 
	</if>
	<if test="condition.status != ''">
		and t_status = #{condition.status,jdbcType=INTEGER}
	</if>
	order by create_date desc,update_date desc
	limit #{start, jdbcType=INTEGER} , #{limit, jdbcType=INTEGER}
</select>

 效果圖python

相關文章
相關標籤/搜索