1
。
1 <%@ page language="java" contentType="text/html; charset=UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 <base href="${pageContext.request.scheme}://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath }/"> 8 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 9 <link href="css/style.css" rel="stylesheet" type="text/css" /> 10 <link href="css/table.css" rel="stylesheet" type="text/css"> 11 12 <link href="jquery/pagination/pagination.css" rel="stylesheet" type="text/css"/> 13 <link href="jquery/ui/css/ui-lightness/jquery-ui-1.8.18.custom.css" rel="stylesheet" type="text/css" /> 14 <script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script> 15 <script type="text/javascript" src="jquery/pagination/jquery.pagination.js"></script> 16 <script type="text/javascript" src="jquery/ui/js/jquery-ui-1.8.18.custom.min.js"></script> 17 <script type="text/javascript" src="jquery/ui/js/jquery.ui.datepicker-zh-CN.js"></script> 18 <script type="text/javascript" src="jquery/timepicker/jquery-ui-timepicker-addon.js"></script> 19 <script type="text/javascript" src="js/JsUtil.js"></script> 20 <script type="text/javascript"> 21 $.fx.speeds._default = 1000; 22 23 $(function(){ 24 //日期顯示 25 $(".time").datetimepicker({ 26 changeMonth: true, 27 changeYear: true, 28 showButtonPanel: true, 29 showSecond: true, 30 timeFormat: 'hh:mm:ss', 31 }); 32 //分頁加載數據 33 displayData(0); 34 //回車加載數據 35 $("#pageNo").keydown(function(event){//event 表示剛剛發生的事件 36 if(event.keyCode==13){ 37 displayData(this.value-1); 38 } 39 }); 40 //操作人員彈出窗口 41 $("#operatorInfo").dialog({ 42 autoOpen: false, 43 show: "blind", 44 hide: "explode" 45 }); 46 //點擊操作員得到記錄 47 $("#selectOperatorImg").click(function() { 48 //發送ajax請求,查詢所有用戶,系統管理員除外 49 $.getJSON("${pageContext.request.contextPath}/user/getAll.action",{"_":new Date().getTime()},function(jsonObject){ 50 //{"data":[{"operatorNanme":"","orgName":""},{},{}]} 51 $("#operatorInfo").empty(); 52 var htmlString = ""; 53 htmlString+='<table border="1" width="100%">'; 54 htmlString+='<tr align="center">'; 55 htmlString+='<td>選擇</td>'; 56 htmlString+='<td>操作員</td>'; 57 htmlString+='<td>機構</td>'; 58 htmlString+='</tr>'; 59 60 $.each(jsonObject.data,function(i,n){ 61 htmlString+='<tr align="center">'; 62 htmlString+='<td> <input type="radio" onclick="selectOperator(\''+n.operatorName+'\')"></td>'; 63 htmlString+='<td>'+n.operatorName+'</td>'; 64 htmlString+='<td>'+n.orgName+'</td>'; 65 htmlString+='</tr>'; 66 }); 67 htmlString+='</table>'; 68 $("#operatorInfo").append(htmlString); 69 }); 70 $( "#operatorInfo" ).dialog( "open" ); 71 return false; 72 }); 73 }); 74 //單選 75 function selectOperator(operatorName){ 76 //設置到查詢文本框中 77 $("#operatorName").val(operatorName); 78 //關閉彈出框 79 $( "#operatorInfo" ).dialog( "close" ); 80 } 81 82 //分頁查詢的方法 83 function displayData(pageNo){ 84 var pageSize = $("#pageSize").val(); 85 $.ajax({ 86 url:"${pageContext.request.contextPath}/operationLog/getByPage.action", 87 type:"get", 88 cache:false,//也可以解決瀏覽器緩存的問題,另一種方式是加時間戳 89 data:{ 90 "pageNo":pageNo+1, 91 "pageSize":pageSize, 92 "operatorName":$("#operatorName").val(), 93 "operationType":$("#operationType").val(), 94 "startTime":$("#startTime").val(), 95 "endTime":$("#endTime").val() 96 }, 97 beforeSend:function(){ 98 $("#message").text("正在分頁查詢請稍后..."); 99 return true; 100 }, 101 success:function(jsonObject){ 102 //清空tbody 103 $("#operationLogInfoTBody").empty(); 104 //操作時間 操作員 IP地址 操作模塊 操作節點 操作類型 105 //{"total":100,"dataList":[{"id":"","time":"","operatorName":"","ip":"","module":"","node":"","type":""},{},{}]} 106 //{"total":0} 107 if(jsonObject.total==0){ 108 $("#message").text("沒有符合條件的記錄"); 109 }else{ 110 $("#message").text("查詢結果如下"); 111 //拼接字符串 112 var htmlString = ""; 113 $.each(jsonObject.dataList,function(i,n){ 114 htmlString+="<tr class='odd'>"; 115 htmlString+="<td><span class='box_table_even'> <input type='checkbox' name='id' value='"+n.id+"' /> </span></td>"; 116 htmlString+="<td>"+n.time+"</td>"; 117 htmlString+="<td>"+n.operatorName+"</td>"; 118 htmlString+="<td>"+n.ip+"</td>"; 119 htmlString+="<td>"+n.module+"</td>"; 120 htmlString+="<td>"+n.node+"</td>"; 121 htmlString+="<td>"+n.type+"</td>"; 122 htmlString+="</tr>"; 123 }); 124 125 //將上面拼接好的html字符串追加到tbody標簽中 126 $("#operationLogInfoTBody").append(htmlString); 127 } 128 129 //翻頁顯示 130 $("#pagination").pagination(jsonObject.total, {// 總記錄條數 131 callback: displayData,//每次點擊翻頁按鈕的時候,都會自動調用這個回調函數 名字隨意取 132 items_per_page:pageSize, //每頁顯示多少條數據 133 current_page:pageNo,//當前頁碼 134 link_to:"javascript:void(0)",//只保留超鏈接的樣式,點擊超鏈接的時候執行js代碼,但是不跳轉到任何資源 135 num_display_entries:5,//默認顯示幾個頁碼 136 next_text:"下一頁", 137 prev_text:"上一頁", 138 prev_show_always:true,//沒有上一頁的時候是否還顯示按鈕 139 next_show_always:true,//沒有上一頁的時候是否還顯示按鈕 140 num_edge_entries:2,//頁碼多的時候省略 141 ellipse_text:"..." 142 }); 143 144 //顯示總記錄條數 145 $("#total").text(jsonObject.total); 146 //顯示總頁數 147 var pageCount = jsonObject.total%pageSize==0?jsonObject.total/pageSize:parseInt(jsonObject.total/pageSize)+1; 148 $("#pageCount").text(pageCount); 149 } 150 }); 151 } 152 </script> 153 </head> 154 155 <body> 156 <div id="operatorInfo" title="選擇操作員"> 157 </div> 158 <table border="0" cellpadding="0" cellspacing="0" class="table_border"> 159 <tr> 160 <td> 161 <table width="100%" border="0" cellpadding="0" cellspacing="0" 162 class="table_right"> 163 <tr> 164 <td width="25" height="26" align="right"><img 165 src="images/ico_location.gif" width="16" height="15" /></td> 166 <td><font style="font-size: 12px;"><strong>位置:</strong>首頁>系統管理>日志管理>操作日志管理</font></td> 167 </tr> 168 </table> 169 </td> 170 </tr> 171 <tr> 172 <td> 173 <table width="100%" border="0" cellspacing="0" class="table_padding"> 174 <tr> 175 <td align="center"> 176 <table border="0" cellpadding="0" cellspacing="0" 177 class="table_border"> 178 <tr> 179 <td> 180 <table width="100%" border="0" cellpadding="0" cellspacing="0" 181 class="table_right"> 182 <tr> 183 <td height="26" class="font_left"></td> 184 </tr> 185 </table> 186 </td> 187 </tr> 188 <tr> 189 <td align="center"> 190 <table border="0" cellpadding="0" cellspacing="0" 191 class="box_table" id="box_table"> 192 <thead> 193 <tr> 194 <td width="105" class="box_table_even">操作員 :</td> 195 <td width="658" class="box_table_odd"> 196 <span class="in"> 197 <input type="text" id="operatorName"/> 198 <img src="images/3_r11_c21.jpg" id="selectOperatorImg" alt="aa" width="16" height="16" class="refButtonClass" style="cursor: pointer;"/> 199 </span> 200 </td> 201 <td width="268" class="box_table_even">操作類型 :</td> 202 <td width="212" class="box_table_odd"> 203 <select id="operationType"> 204 <option value="">--請選擇--</option> 205 <option value="新增">新增</option> 206 <option value="刪除">刪除</option> 207 <option value="修改">修改</option> 208 </select> 209 </td> 210 <td width="105" class="box_table_odd"> </td> 211 </tr> 212 <tr> 213 <td class="box_table_even">日期 :</td> 214 <td class="box_table_odd"> 215 <input type="text" class="time" id="startTime"/> 216 <img src="images/kalendar1button.gif" width="25" height="21" align="absmiddle" /> 217 <input class="time" type="text" id="endTime"/> 218 <img src="images/kalendar1button.gif" width="25" height="21" align="absmiddle" /> 219 </td> 220 <td class="box_table_even"> </td> 221 <td class="box_table_odd"> </td> 222 <td class="box_table_odd"> 223 <span class="font_middle"> 224 <input type="button" value="查詢" onclick="displayData(0)"/> 225 </span> 226 </td> 227 </tr> 228 </thead> 229 <tbody> 230 </tbody> 231 </table> 232 </td> 233 </tr> 234 </table> 235 <table border="0" cellpadding="0" cellspacing="0" 236 class="table_border"> 237 <tr> 238 <td> 239 <table width="100%" border="0" cellpadding="0" cellspacing="0" 240 class="table_right"> 241 <tr> 242 <td height="26" align="right"> 243 <span class="font_right"> 244 <span id="message" style="color: red;font-size: 12px"></span> 245 <input type="button" value="查看明細" onclick="window.location.href='operationLog/detail.action';" /> 246 <%-- <input type="button" value="導出" onclick="window.location.href='${pageContext.request.contextPath}/operationLog/exportExcel.action';"/>--%> 247 <input type="button" value="導出" onclick="window.location.href='${pageContext.request.contextPath}/operationLog/exportCSV.action';"/> 248 </span> 249 </td> 250 </tr> 251 </table> 252 </td> 253 </tr> 254 <tr> 255 <td> 256 <table width="100%" border="0" cellspacing="0" cellpadding="0"> 257 <tr> 258 <td align="center"> 259 <table border="0" cellpadding="0" cellspacing="0" 260 id="box_num_table2" class="box_num_table"> 261 <thead> 262 <tr> 263 <td> </td> 264 <td>操作時間</td> 265 <td>操作員</td> 266 <td>IP地址</td> 267 <td>操作模塊</td> 268 <td>操作節點</td> 269 <td>操作類型</td> 270 </tr> 271 </thead> 272 <tbody id="operationLogInfoTBody"> 273 </tbody> 274 </table> 275 </td> 276 </tr> 277 <tr> 278 <td> 279 <%@ include file="/WEB-INF/jsp/common/pageFoot.jsp" %> 280 </td> 281 </tr> 282 </table> 283 </td> 284 </tr> 285 </table> 286 </td> 287 </tr> 288 </table> 289 </td> 290 </tr> 291 </table> 292 </body> 293 </html>
2.分頁工具欄
1 <%@ page language="java" contentType="text/html; charset=UTF-8"%> 2 <table width="100%" height="30" border="0" cellpadding="0" 3 cellspacing="0" class="page_table"> 4 <tr> 5 <td width="8%" class="font_left"> 6 數據:<span id="total"></span> 條 7 </td> 8 9 <td width="12" class="font_left"> 10 第 11 </td> 12 <td width="375" class="font_left"> 13 <input id="pageNo" type="text" size="2" maxlength="4"/> 14 /<span id="pageCount"></span>頁 15 <input type="image" border="0" src="images/go.gif" onclick="displayData($('#pageNo').val()-1)" /> 16 <select id="pageSize" onchange="displayData(0)"> 17 <c:forTokens items="${initParam.pageSizeString }" delims="," var="pageSize"> 18 <option value="${pageSize}">每頁${pageSize}條</option> 19 </c:forTokens> 20 </select> 21 </td> 22 <td width="478" class="font_right"> 23 <div id="pagination"></div> 24 25 <input type="image" class="font_right" 26 onclick="displayData(0)" 27 src="images/botton_page_refresh.png" 28 border="0" /> 29 </td> 30 </tr> 31 </table>
3.
1 public PaginationVO<OperationLog> getByPage(Integer pageNo, 2 Integer pageSize, String operatorName, String operationType, 3 String startTime, String endTime) { 4 5 StringBuilder hql = new StringBuilder("from OperationLog ol join fetch ol.operator where 1=1 "); 6 List<Object> paramList = new ArrayList<Object>(); 7 if(StringUtil.isNotEmpty(operatorName)){ 8 hql.append(" and ol.operator.name like ?"); 9 paramList.add(operatorName+"%"); 10 } 11 12 if(StringUtil.isNotEmpty(operationType)){ 13 hql.append(" and ol.type = ?"); 14 paramList.add(operationType); 15 } 16 if (StringUtil.isNotEmpty(startTime)) { 17 hql.append(" and ol.time >= ?"); 18 paramList.add(startTime); 19 } 20 if (StringUtil.isNotEmpty(endTime)) { 21 hql.append(" and ol.time <= ?"); 22 paramList.add(endTime); 23 } 24 hql.append(" order by ol.time desc"); 25 Query query = getSession().createQuery(hql.toString()); 26 for (int i = 0; i < paramList.size(); i++) { 27 query.setParameter(i, paramList.get(i)); 28 } 29 query.setFirstResult((pageNo-1)*pageSize); 30 query.setMaxResults(pageSize); 31 List<OperationLog> dataList = query.list(); 32 //---------------------------------------------------------------- 33 StringBuilder countHql = new StringBuilder("select count(*) from OperationLog ol where 1=1 "); 34 List<Object> countParamList = new ArrayList<Object>(); 35 if(StringUtil.isNotEmpty(operatorName)){ 36 countHql.append(" and ol.operator.name like ?"); 37 countParamList.add(operatorName+"%"); 38 } 39 40 if(StringUtil.isNotEmpty(operationType)){ 41 countHql.append(" and ol.type = ?"); 42 countParamList.add(operationType); 43 } 44 if (StringUtil.isNotEmpty(startTime)) { 45 countHql.append(" and ol.time >= ?"); 46 countParamList.add(startTime); 47 } 48 if (StringUtil.isNotEmpty(endTime)) { 49 countHql.append(" and ol.time <= ?"); 50 countParamList.add(endTime); 51 } 52 53 Query countQuery = getSession().createQuery(countHql.toString()); 54 for (int i = 0; i < countParamList.size(); i++) { 55 countQuery.setParameter(i, countParamList.get(i)); 56 } 57 Long total = (Long) countQuery.uniqueResult(); 58 59 PaginationVO<OperationLog> paginationVO = new PaginationVO<OperationLog>(); 60 paginationVO.setTotal(total); 61 paginationVO.setDataList(dataList); 62 return paginationVO; 63 }