Browse Source

支持时间查询(操作日志,登录日志,调度日志)

RuoYi 6 years ago
parent
commit
0414c25f9a
46 changed files with 1435 additions and 11 deletions
  1. 21 0
      src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
  2. 6 0
      src/main/resources/mybatis/monitor/JobLogMapper.xml
  3. 6 0
      src/main/resources/mybatis/monitor/LogininforMapper.xml
  4. 6 0
      src/main/resources/mybatis/monitor/OperLogMapper.xml
  5. BIN
      src/main/resources/static/ajax/libs/layer/.DS_Store
  6. 1 0
      src/main/resources/static/ajax/libs/layer/extend/layer.ext.js
  7. 10 0
      src/main/resources/static/ajax/libs/layer/laydate/laydate.js
  8. 75 0
      src/main/resources/static/ajax/libs/layer/laydate/need/laydate.css
  9. BIN
      src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png
  10. 59 0
      src/main/resources/static/ajax/libs/layer/laydate/skins/default/laydate.css
  11. 1 0
      src/main/resources/static/ajax/libs/layer/layer.js
  12. 30 0
      src/main/resources/static/ajax/libs/layer/layim/data/chatlog.json
  13. 107 0
      src/main/resources/static/ajax/libs/layer/layim/data/friend.json
  14. 57 0
      src/main/resources/static/ajax/libs/layer/layim/data/group.json
  15. 56 0
      src/main/resources/static/ajax/libs/layer/layim/data/groups.json
  16. 158 0
      src/main/resources/static/ajax/libs/layer/layim/layim.css
  17. 630 0
      src/main/resources/static/ajax/libs/layer/layim/layim.js
  18. BIN
      src/main/resources/static/ajax/libs/layer/layim/loading.gif
  19. 1 1
      src/main/resources/static/ajax/libs/layer/mobile/layer.js
  20. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png
  21. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/icon.png
  22. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/icon_ext.png
  23. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif
  24. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif
  25. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/loading-2.gif
  26. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/textbg.png
  27. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png
  28. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif
  29. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif
  30. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading2.gif
  31. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading3.gif
  32. BIN
      src/main/resources/static/ajax/libs/layer/skin/default/xubox_title0.png
  33. 6 0
      src/main/resources/static/ajax/libs/layer/skin/layer.css
  34. 7 0
      src/main/resources/static/ajax/libs/layer/skin/layer.ext.css
  35. BIN
      src/main/resources/static/ajax/libs/layer/skin/moon/default.png
  36. 141 0
      src/main/resources/static/ajax/libs/layer/skin/moon/style.css
  37. 1 0
      src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/laydate.css
  38. 1 0
      src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js
  39. 1 0
      src/main/resources/static/ajax/libs/layui/lay/modules/layer.js
  40. 1 0
      src/main/resources/static/ajax/libs/layui/layui.js
  41. 7 1
      src/main/resources/static/ruoyi/css/ry-ui.css
  42. 0 0
      src/main/resources/static/ruoyi/css/ry-ui.min.css
  43. 1 0
      src/main/resources/templates/include.html
  44. 15 3
      src/main/resources/templates/monitor/job/jobLog.html
  45. 15 3
      src/main/resources/templates/monitor/logininfor/logininfor.html
  46. 15 3
      src/main/resources/templates/monitor/operlog/operlog.html

+ 21 - 0
src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java

@@ -2,6 +2,8 @@ package com.ruoyi.framework.web.domain;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Map;
+
 import com.ruoyi.common.utils.DateUtils;
 
 /**
@@ -12,19 +14,28 @@ import com.ruoyi.common.utils.DateUtils;
 public class BaseEntity implements Serializable
 {
     private static final long serialVersionUID = 1L;
+
     /** 搜索值 */
     private String searchValue;
+
     /** 创建者 */
     private String createBy;
+
     /** 创建时间 */
     private Date createTime;
+
     /** 更新者 */
     private String updateBy;
+
     /** 更新时间 */
     private Date updateTime;
+
     /** 备注 */
     private String remark;
 
+    /** 请求参数 */
+    private Map<String, Object> reqParams;
+
     public String getSearchValue()
     {
         return searchValue;
@@ -95,4 +106,14 @@ public class BaseEntity implements Serializable
         this.remark = remark;
     }
 
+    public Map<String, Object> getReqParams()
+    {
+        return reqParams;
+    }
+
+    public void setReqParams(Map<String, Object> reqParams)
+    {
+        this.reqParams = reqParams;
+    }
+
 }

+ 6 - 0
src/main/resources/mybatis/monitor/JobLogMapper.xml

@@ -32,6 +32,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="methodName != null and methodName != ''">
 				AND method_name like concat('%', #{methodName}, '%')
 			</if>
+			<if test="reqParams != null and reqParams.beginTime != ''"><!-- 开始时间检索 -->
+				and date_format(create_time,'%y%m%d') &gt;= date_format(#{reqParams.beginTime},'%y%m%d')
+			</if>
+			<if test="reqParams != null and reqParams.endTime != ''"><!-- 结束时间检索 -->
+				and date_format(create_time,'%y%m%d') &lt;= date_format(#{reqParams.endTime},'%y%m%d')
+			</if>
 		</where>
 	</select>
 	

+ 6 - 0
src/main/resources/mybatis/monitor/LogininforMapper.xml

@@ -33,6 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="loginName != null and loginName != ''">
 				AND login_name like concat('%', #{loginName}, '%')
 			</if>
+			<if test="reqParams != null and reqParams.beginTime != ''"><!-- 开始时间检索 -->
+				and date_format(login_time,'%y%m%d') &gt;= date_format(#{reqParams.beginTime},'%y%m%d')
+			</if>
+			<if test="reqParams != null and reqParams.endTime != ''"><!-- 结束时间检索 -->
+				and date_format(login_time,'%y%m%d') &lt;= date_format(#{reqParams.endTime},'%y%m%d')
+			</if>
 		</where>
 	</select>
 	

+ 6 - 0
src/main/resources/mybatis/monitor/OperLogMapper.xml

@@ -38,6 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="operName != null and operName != ''">
 				AND oper_name like concat('%', #{operName}, '%')
 			</if>
+			<if test="reqParams != null and reqParams.beginTime != ''"><!-- 开始时间检索 -->
+				and date_format(oper_time,'%y%m%d') &gt;= date_format(#{reqParams.beginTime},'%y%m%d')
+			</if>
+			<if test="reqParams != null and reqParams.endTime != ''"><!-- 结束时间检索 -->
+				and date_format(oper_time,'%y%m%d') &lt;= date_format(#{reqParams.endTime},'%y%m%d')
+			</if>
 		</where>
 	</select>
 	

BIN
src/main/resources/static/ajax/libs/layer/.DS_Store


File diff suppressed because it is too large
+ 1 - 0
src/main/resources/static/ajax/libs/layer/extend/layer.ext.js


File diff suppressed because it is too large
+ 10 - 0
src/main/resources/static/ajax/libs/layer/laydate/laydate.js


+ 75 - 0
src/main/resources/static/ajax/libs/layer/laydate/need/laydate.css

@@ -0,0 +1,75 @@
+/**
+
+ @Name: laydate 核心样式
+ @Author:贤心
+ @Site:http://sentsin.com/layui/laydate
+
+**/
+
+html{_background-image:url(about:blank); _background-attachment:fixed;}
+.layer-date{display: inline-block!important;vertical-align:text-top;max-width:240px;}
+.laydate_body .laydate_box, .laydate_body .laydate_box *{margin:0; padding:0;}
+.laydate-icon,
+.laydate-icon-default,
+.laydate-icon-danlan,
+.laydate-icon-dahong,
+.laydate-icon-molv{height:34px; padding-right:20px;min-width:34px;vertical-align: text-top;border:1px solid #C6C6C6; background-repeat:no-repeat; background-position:right center;  background-color:#fff; outline:0;}
+.laydate-icon-default{ background-image:url(../skins/default/icon.png)}
+.laydate-icon-danlan{border:1px solid #B1D2EC; background-image:url(../skins/danlan/icon.png)}
+.laydate-icon-dahong{background-image:url(../skins/dahong/icon.png)}
+.laydate-icon-molv{background-image:url(../skins/molv/icon.png)}
+.laydate_body .laydate_box{width:240px; font:12px '\5B8B\4F53'; z-index:99999999; *margin:-2px 0 0 -2px; *overflow:hidden; _margin:0; _position:absolute!important; background-color:#fff;}
+.laydate_body .laydate_box li{list-style:none;}
+.laydate_body .laydate_box .laydate_void{cursor:text!important;}
+.laydate_body .laydate_box a, .laydate_body .laydate_box a:hover{text-decoration:none; blr:expression(this.onFocus=this.blur()); cursor:pointer;}
+.laydate_body .laydate_box a:hover{text-decoration:none;}
+.laydate_body .laydate_box cite, .laydate_body .laydate_box label{position:absolute; width:0; height:0; border-width:5px; border-style:dashed; border-color:transparent; overflow:hidden; cursor:pointer;}
+.laydate_body .laydate_box .laydate_yms, .laydate_body .laydate_box .laydate_time{display:none;}
+.laydate_body .laydate_box .laydate_show{display:block;}
+.laydate_body .laydate_box input{outline:0; font-size:14px; background-color:#fff;}
+.laydate_body .laydate_top{position:relative; height:26px; padding:5px; *width:100%; z-index:99;}
+.laydate_body .laydate_ym{position:relative; float:left; height:24px; cursor:pointer;}
+.laydate_body .laydate_ym input{float:left; height:24px; line-height:24px; text-align:center; border:none; cursor:pointer;}
+.laydate_body .laydate_ym .laydate_yms{position:absolute; left: -1px; top: 24px; height:181px;}
+.laydate_body .laydate_y{width:121px;}
+.laydate_body .laydate_y input{width:64px; margin-right:15px;}
+.laydate_body .laydate_y .laydate_yms{width:121px; text-align:center;}
+.laydate_body .laydate_y .laydate_yms a{position:relative; display:block; height:20px;}
+.laydate_body .laydate_y .laydate_yms ul{height:139px; padding:0; *overflow:hidden;}
+.laydate_body .laydate_y .laydate_yms ul li{float:left; width:60px; height:20px; line-height: 20px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
+.laydate_box *{box-sizing:content-box!important;}
+.laydate_body .laydate_m{width:99px;float: right;margin-right:-2px;}
+.laydate_body .laydate_m .laydate_yms{width:99px; padding:0;}
+.laydate_body .laydate_m input{width:42px; margin-right:15px;}
+.laydate_body .laydate_m .laydate_yms span{display:block; float:left; width:42px; margin: 5px 0 0 5px; line-height:24px; text-align:center; _display:inline;}
+.laydate_body .laydate_choose{display:block; float:left; position:relative; width:20px; height:24px;}
+.laydate_body .laydate_choose cite, .laydate_body .laydate_tab cite{left:50%; top:50%;}
+.laydate_body .laydate_chtop cite{margin:-7px 0 0 -5px; border-bottom-style:solid;}
+.laydate_body .laydate_chdown cite, .laydate_body .laydate_ym label{top:50%; margin:-2px 0 0 -5px; border-top-style:solid;}
+.laydate_body .laydate_chprev cite{margin:-5px 0 0 -7px;}
+.laydate_body .laydate_chnext cite{margin:-5px 0 0 -2px;}
+.laydate_body .laydate_ym label{right:28px;}
+.laydate_body .laydate_table{ width:230px; margin:0 5px; border-collapse:collapse; border-spacing:0px; }
+.laydate_body .laydate_table td{width:31px; height:19px; line-height:19px; text-align: center; cursor:pointer; font-size: 12px;}
+.laydate_body .laydate_table thead{height:22px; line-height:22px;}
+.laydate_body .laydate_table thead th{font-weight:400; font-size:12px; text-align:center;}
+.laydate_body .laydate_bottom{position:relative; height:22px; line-height:20px; padding:5px; font-size:12px;}
+.laydate_body .laydate_bottom #laydate_hms{position: relative; z-index: 1; float:left; }
+.laydate_body .laydate_time{ position:absolute; left:5px; bottom: 26px; width:129px; height:125px; *overflow:hidden;}
+.laydate_body .laydate_time .laydate_hmsno{ padding:5px 0 0 5px;}
+.laydate_body .laydate_time .laydate_hmsno span{display:block; float:left; width:24px; height:19px; line-height:19px; text-align:center; cursor:pointer; *margin-bottom:-5px;}
+.laydate_body .laydate_time1{width:228px; height:154px;}
+.laydate_body .laydate_time1 .laydate_hmsno{padding: 6px 0 0 8px;}
+.laydate_body .laydate_time1 .laydate_hmsno span{width:21px; height:20px; line-height:20px;}
+.laydate_body .laydate_msg{left:49px; bottom:67px; width:141px; height:auto; overflow: hidden;}
+.laydate_body .laydate_msg p{padding:5px 10px;}
+.laydate_body .laydate_bottom li{float:left; height:20px; line-height:20px; border-right:none; font-weight:900;}
+.laydate_body .laydate_bottom .laydate_sj{width:33px; text-align:center; font-weight:400;}
+.laydate_body .laydate_bottom input{float:left; width:21px; height:20px; line-height:20px; border:none; text-align:center; cursor:pointer; font-size:12px;  font-weight:400;}
+.laydate_body .laydate_bottom .laydte_hsmtex{height:20px; line-height:20px; text-align:center;}
+.laydate_body .laydate_bottom .laydte_hsmtex span{position:absolute; width:20px; top:0; right:0px; cursor:pointer;}
+.laydate_body .laydate_bottom .laydte_hsmtex span:hover{font-size:14px;}
+.laydate_body .laydate_bottom .laydate_btn{position:absolute; right:5px; top:5px;}
+.laydate_body .laydate_bottom .laydate_btn a{float:left; height:20px; padding:0 6px; _padding:0 5px;}
+.laydate_body .laydate_bottom .laydate_v{position:absolute; left:10px; top:6px; font-family:Courier; z-index:0;}
+

BIN
src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png


+ 59 - 0
src/main/resources/static/ajax/libs/layer/laydate/skins/default/laydate.css

@@ -0,0 +1,59 @@
+/**
+
+ @Name: laydate皮肤:墨绿
+ @Author:贤心
+ @Site:http://sentsin.com/layui/laydate
+
+**/
+
+.laydate-icon{border:1px solid #ccc; background-image:url(icon.png)}
+
+.laydate_body .laydate_bottom #laydate_hms,
+.laydate_body .laydate_time{border:1px solid #ccc;}
+
+.laydate_body .laydate_box,
+.laydate_body .laydate_ym .laydate_yms,
+.laydate_body .laydate_time{box-shadow: 2px 2px 5px rgba(0,0,0,.1);}
+
+.laydate_body .laydate_box{border-top:none; border-bottom:none; background-color:#fff; color:#00625A;}
+.laydate_body .laydate_box input{background:none!important; color:#fff;}
+.laydate_body .laydate_box .laydate_void{color:#00E8D7!important;}
+.laydate_body .laydate_box a, .laydate_body .laydate_box a:hover{color:#00625A;}
+.laydate_body .laydate_box a:hover{color:#666;}
+.laydate_body .laydate_click{background-color:#009F95!important; color:#fff!important;}
+.laydate_body .laydate_top{border-top:1px solid #009F95; background-color:#009F95}
+.laydate_body .laydate_ym{border:1px solid #009F95; background-color:#009F95;}
+.laydate_body .laydate_ym .laydate_yms{border:1px solid #009F95; background-color:#009F95; color:#fff;}
+.laydate_body .laydate_y .laydate_yms a{border-bottom:1px solid #009F95;}
+.laydate_body .laydate_y .laydate_yms .laydate_chdown{border-top:1px solid #009F95; border-bottom:none;}
+.laydate_body .laydate_choose{border-left:1px solid #009F95;}
+.laydate_body .laydate_chprev{border-left:none; border-right:1px solid #009F95;}
+.laydate_body .laydate_choose:hover,
+.laydate_body .laydate_y .laydate_yms a:hover{background-color:#00C1B3;}
+.laydate_body .laydate_chtop cite{border-bottom-color:#fff;}
+.laydate_body .laydate_chdown cite, .laydate_body .laydate_ym label{border-top-color:#fff;}
+.laydate_body .laydate_chprev cite{border-right-style:solid; border-right-color:#fff;}
+.laydate_body .laydate_chnext cite{border-left-style:solid; border-left-color:#fff;}
+.laydate_body .laydate_table{width: 240px!important; margin: 0!important; border:1px solid #ccc; border-top:none; border-bottom:none;}
+.laydate_body .laydate_table td{border:none;  height:21px!important; line-height:21px!important; background-color:#fff; color:#00625A;}
+.laydate_body .laydate_table .laydate_nothis{color:#999;}
+.laydate_body .laydate_table thead{border-bottom:1px solid #ccc; height:21px!important; line-height:21px!important;}
+.laydate_body .laydate_table thead th{}
+.laydate_body .laydate_bottom{border:1px solid #ccc; border-top:none;}
+.laydate_body .laydate_bottom #laydate_hms{background-color:#fff;}
+.laydate_body .laydate_time{background-color:#fff;}
+.laydate_body .laydate_time1{width: 226px!important; height: 152px!important;}
+.laydate_body .laydate_bottom .laydate_sj{width:31px!important; border-right:1px solid #ccc; background-color:#fff;}
+.laydate_body .laydate_bottom input{background-color:#fff; color:#00625A;}
+.laydate_body .laydate_bottom .laydte_hsmtex{border-bottom:1px solid #ccc;}
+.laydate_body .laydate_bottom .laydate_btn{border-right:1px solid #ccc;}
+.laydate_body .laydate_bottom .laydate_v{color:#999}
+.laydate_body .laydate_bottom .laydate_btn a{border: 1px solid #ccc; border-right:none; background-color:#fff;}
+.laydate_body .laydate_bottom .laydate_btn a:hover{background-color:#F6F6F6; color:#00625A;}
+
+.laydate_body .laydate_m .laydate_yms span:hover,
+.laydate_body .laydate_time .laydate_hmsno span:hover,
+.laydate_body .laydate_y .laydate_yms ul li:hover,
+.laydate_body .laydate_table td:hover{background-color:#00C1B3; color:#fff;}
+
+

File diff suppressed because it is too large
+ 1 - 0
src/main/resources/static/ajax/libs/layer/layer.js


+ 30 - 0
src/main/resources/static/ajax/libs/layer/layim/data/chatlog.json

@@ -0,0 +1,30 @@
+{
+    "status": 1,
+    "msg": "ok",
+    "data": [
+        {
+            "id": "100001",
+            "name": "Beaut-zihan",
+            "time": "10:23",
+            "face": "img/a1.jpg"
+        },
+        {
+            "id": "100002",
+            "name": "慕容晓晓",
+            "time": "昨天",
+            "face": "img/a2.jpg"
+        },
+        {
+            "id": "1000033",
+            "name": "乔峰",
+            "time": "2014-4.22",
+            "face": "img/a3.jpg"
+        },
+        {
+            "id": "10000333",
+            "name": "高圆圆",
+            "time": "2014-4.21",
+            "face": "img/a4.jpg"
+        }
+    ]
+}

+ 107 - 0
src/main/resources/static/ajax/libs/layer/layim/data/friend.json

@@ -0,0 +1,107 @@
+{
+    "status": 1,
+    "msg": "ok",
+    "data": [
+        {
+            "name": "销售部",
+            "nums": 36,
+            "id": 1,
+            "item": [
+                {
+                    "id": "100001",
+                    "name": "郭敬明",
+                    "face": "img/a5.jpg"
+                },
+                {
+                    "id": "100002",
+                    "name": "作家崔成浩",
+                    "face": "img/a6.jpg"
+                },
+                {
+                    "id": "1000022",
+                    "name": "韩寒",
+                    "face": "img/a7.jpg"
+                },
+                {
+                    "id": "10000222",
+                    "name": "范爷",
+                    "face": "img/a8.jpg"
+                },
+                {
+                    "id": "100002222",
+                    "name": "小马哥",
+                    "face": "img/a9.jpg"
+                }
+            ]
+        },
+        {
+            "name": "大学同窗",
+            "nums": 16,
+            "id": 2,
+            "item": [
+                {
+                    "id": "1000033",
+                    "name": "苏醒",
+                    "face": "img/a9.jpg"
+                },
+                {
+                    "id": "10000333",
+                    "name": "马云",
+                    "face": "img/a8.jpg"
+                },
+                {
+                    "id": "100003",
+                    "name": "鬼脚七",
+                    "face": "img/a7.jpg"
+                },
+                {
+                    "id": "100004",
+                    "name": "谢楠",
+                    "face": "img/a6.jpg"
+                },
+                {
+                    "id": "100005",
+                    "name": "徐峥",
+                    "face": "img/a5.jpg"
+                }
+            ]
+        },
+        {
+            "name": "H+后台主题",
+            "nums": 38,
+            "id": 3,
+            "item": [
+                {
+                    "id": "100006",
+                    "name": "柏雪近在它香",
+                    "face": "img/a4.jpg"
+                },
+                {
+                    "id": "100007",
+                    "name": "罗昌平",
+                    "face": "img/a3.jpg"
+                },
+                {
+                    "id": "100008",
+                    "name": "Crystal影子",
+                    "face": "img/a2.jpg"
+                },
+                {
+                    "id": "100009",
+                    "name": "艺小想",
+                    "face": "img/a1.jpg"
+                },
+                {
+                    "id": "100010",
+                    "name": "天猫",
+                    "face": "img/a8.jpg"
+                },
+                {
+                    "id": "100011",
+                    "name": "张泉灵",
+                    "face": "img/a7.jpg"
+                }
+            ]
+        }
+    ]
+}

+ 57 - 0
src/main/resources/static/ajax/libs/layer/layim/data/group.json

@@ -0,0 +1,57 @@
+{
+    "status": 1,
+    "msg": "ok",
+    "data": [
+        {
+            "name": "H+交流群",
+            "nums": 36,
+            "id": 1,
+            "item": [
+                {
+                    "id": "101",
+                    "name": "H+ Bug反馈",
+                    "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0"
+                },
+                {
+                    "id": "102",
+                    "name": "H+ 技术交流",
+                    "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1"
+                }
+            ]
+        },
+        {
+            "name": "Bootstrap",
+            "nums": 16,
+            "id": 2,
+            "item": [
+                {
+                    "id": "103",
+                    "name": "Bootstrap中文",
+                    "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0"
+                },
+                {
+                    "id": "104",
+                    "name": "Bootstrap资源",
+                    "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1"
+                }
+            ]
+        },
+        {
+            "name": "WebApp",
+            "nums": 106,
+            "id": 3,
+            "item": [
+                {
+                    "id": "105",
+                    "name": "移动开发",
+                    "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0"
+                },
+                {
+                    "id": "106",
+                    "name": "H5前言",
+                    "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1"
+                }
+            ]
+        }
+    ]
+}

+ 56 - 0
src/main/resources/static/ajax/libs/layer/layim/data/groups.json

@@ -0,0 +1,56 @@
+{
+    "status": 1,
+    "msg": "ok",
+    "data": [
+        {
+            "id": "100001",
+            "name": "無言的蒁説",
+            "face": "img/a1.jpg"
+        },
+        {
+            "id": "100002",
+            "name": "婷宝奢侈品",
+            "face": "img/a2.jpg"
+        },
+        {
+            "id": "100003",
+            "name": "忆恨思爱",
+            "face": "img/a3.jpg"
+        },
+        {
+            "id": "100004",
+            "name": "天涯奥拓慢",
+            "face": "img/a4.jpg"
+        },
+        {
+            "id": "100005",
+            "name": "雨落无声的天空",
+            "face": "img/a5.jpg"
+        },
+        {
+            "id": "100006",
+            "name": "李越LycorisRadiate",
+            "face": "img/a6.jpg"
+        },
+        {
+            "id": "100007",
+            "name": "冯胖妞张直丑",
+            "face": "img/a7.jpg"
+        },
+        {
+            "id": "100008",
+            "name": "陈龙hmmm",
+            "face": "img/a8.jpg"
+        },
+        {
+            "id": "100009",
+            "name": "别闹哥胆儿小",
+            "face": "img/a9.jpg"
+        },
+        {
+            "id": "100010",
+            "name": "锅锅锅锅萌哒哒 ",
+            "face": "img/a10.jpg"
+        }
+    ]
+}

+ 158 - 0
src/main/resources/static/ajax/libs/layer/layim/layim.css

@@ -0,0 +1,158 @@
+/*
+
+ @Name: layim WebIM 1.0.0
+ @Author:贤心(子涵修改)
+ @Date: 2014-04-25
+ @Blog: http://sentsin.com
+
+ */
+body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form{margin:0; padding:0;}
+input,button,textarea,select,optgroup,option{font-family:inherit; font-size:inherit; font-style:inherit; font-weight:inherit; outline: 0;}
+li{list-style:none;}
+.xxim_icon, .xxim_main i, .layim_chatbox i{position:absolute;}
+.loading{background:url(loading.gif) no-repeat center center;}
+.layim_chatbox a, .layim_chatbox a:hover{color:#343434; text-decoration:none; }
+.layim_zero{position:absolute; width:0; height:0; border-style:dashed; border-color:transparent; overflow:hidden;}
+
+.xxim_main{position:fixed; right:1px; bottom:1px; width:230px; border:1px solid #BEBEBE; background-color:#fff; font-size:12px; box-shadow: 0 0 10px rgba(0,0,0,.2); z-index:99999999}
+.layim_chatbox textarea{resize:none;}
+.xxim_main em, .xxim_main i, .layim_chatbox em, .layim_chatbox i{font-style:normal; font-weight:400;}
+.xxim_main h5{font-size:100%; font-weight:400;}
+
+/* 搜索栏 */
+.xxim_search{position:relative; padding-left:40px; height:40px; border-bottom:1px solid #DCDCDC; background-color:#fff;}
+.xxim_search i{left:10px; top:12px; width:16px; height:16px;font-size: 16px;color:#999;}
+.xxim_search input{border:none; background:none; width: 180px; margin-top:10px; line-height:20px;}
+.xxim_search span{display:none; position:absolute; right:10px; top:10px; height:18px; line-height:18px;width:18px;text-align: center;background-color:#AFAFAF; color:#fff; cursor:pointer; border-radius:2px; font-size:12px; font-weight:900;}
+.xxim_search span:hover{background-color:#FCBE00;}
+
+/* 主面板tab */
+.xxim_tabs{height:45px; border-bottom:1px solid #DBDBDB; background-color:#F4F4F4; font-size:0;}
+.xxim_tabs span{position:relative; display:inline-block; *display:inline; *zoom:1; vertical-align:top; width:76px; height:45px; border-right:1px solid #DBDBDB; cursor:pointer; font-size:12px;}
+.xxim_tabs span i{top:12px; left:50%; width:20px; margin-left:-10px; height:20px;font-size:20px;color:#ccc;}
+.xxim_tabs .xxim_tabnow{height:46px; background-color:#fff;}
+.xxim_tabs .xxim_tabnow i{color:#1ab394;}
+.xxim_tabs .xxim_latechat{border-right:none;}
+.xxim_tabs .xxim_tabfriend i{width:14px; margin-left:-7px;}
+
+/* 主面板列表 */
+.xxim_list{display:none; height:350px; padding:5px 0; overflow:hidden;}
+.xxim_list:hover{ overflow-y:auto;}
+.xxim_list h5{position:relative; padding-left:32px; height:26px; line-height:26px; cursor:pointer; color:#000; font-size:0;}
+.xxim_list h5 span{display:inline-block; *display:inline; *zoom:1; vertical-align:top; max-width:140px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; font-size:12px;}
+.xxim_list h5 i{left:15px; top:8px; width:10px; height:10px;font-size:10px;color:#666;}
+.xxim_list h5 *{font-size:12px;}
+.xxim_list .xxim_chatlist{display:none;}
+.xxim_list .xxim_liston h5 i{width:8px; height:7px;}
+.xxim_list .xxim_liston .xxim_chatlist{display:block;}
+.xxim_chatlist {}
+.xxim_chatlist li{position:relative; height:40px; line-height:30px; padding:5px 10px; font-size:0; cursor:pointer;}
+.xxim_chatlist li:hover{background-color:#F2F4F8}
+.xxim_chatlist li *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
+.xxim_chatlist li span{padding-left:10px; max-width:120px;  overflow:hidden; text-overflow: ellipsis; white-space:nowrap;}
+.xxim_chatlist li img{width:30px; height:30px;}
+.xxim_chatlist li .xxim_time{position:absolute; right:10px; color:#999;}
+.xxim_list .xxim_errormsg{text-align:center; margin:50px 0; color:#999;}
+.xxim_searchmain{position:absolute; width:230px; height:491px; left:0; top:41px; z-index:10; background-color:#fff;}
+
+/* 主面板底部 */
+.xxim_bottom{height:34px; border-top:1px solid #D0DCF3; background-color:#F2F4F8;}
+.xxim_expend{border-left:1px solid #D0DCF3; border-bottom:1px solid #D0DCF3;}
+.xxim_bottom li{position:relative; width:50px; height:32px; line-height:32px; float:left; border-right:1px solid #D0DCF3;  cursor:pointer;}
+.xxim_bottom li i{ top:9px;}
+.xxim_bottom .xxim_hide{border-right:none;}
+.xxim_bottom .xxim_online{width:72px; padding-left:35px;}
+.xxim_online i{left:13px; width:14px; height:14px;font-size:14px;color:#FFA00A;}
+.xxim_setonline{display:none; position:absolute; left:-79px; bottom:-1px;  border:1px solid #DCDCDC; background-color:#fff;}
+.xxim_setonline span{position:relative; display:block; width:32px;width: 77px; padding:0 10px 0 35px;}
+.xxim_setonline span:hover{background-color:#F2F4F8;}
+.xxim_offline .xxim_nowstate, .xxim_setoffline i{color:#999;}
+.xxim_mymsg i{left:18px; width:14px; height:14px;font-size: 14px;}
+.xxim_mymsg a{position:absolute; left:0; top:0; width:50px; height:32px;}
+.xxim_seter i{left:18px; width:14px; height:14px;font-size: 14px;}
+.xxim_hide i{left:18px; width:14px; height:14px;font-size: 14px;}
+.xxim_show i{}
+.xxim_bottom .xxim_on{position:absolute; left:-17px; top:50%; width:16px;text-align: center;color:#999;line-height: 97px; height:97px; margin-top:-49px;border:solid 1px #BEBEBE;border-right: none; background:#F2F4F8;}
+.xxim_bottom .xxim_off{}
+
+/* 聊天窗口 */
+.layim_chatbox{width:620px; border:1px solid #BEBEBE; background-color:#fff; font-size:12px; box-shadow: 0 0 10px rgba(0,0,0,.2);}
+.layim_chatbox h6{position:relative; height:40px; border-bottom:1px solid #D9D9D9; background-color:#FCFDFA}
+.layim_move{position:absolute; height:40px; width: 620px; z-index:0;}
+.layim_face{position:absolute; bottom:-1px; left:10px; width:64px; height:64px;padding:1px;background: #fff; border:1px solid #ccc;}
+.layim_face img{width:60px; height:60px;}
+.layim_names{position:absolute; left:90px; max-width:300px; line-height:40px; color:#000; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; font-size:14px;}
+.layim_rightbtn{position:absolute; right:15px; top:12px; font-size:20px;}
+.layim_rightbtn i{position:relative; width:16px; height:16px; display:inline-block; *display:inline; *zoom:1; vertical-align:top; cursor:pointer; transition: all .3s;text-align: center;line-height: 16px;}
+.layim_rightbtn .layim_close{background: #FFA00A;color:#fff;}
+.layim_rightbtn .layim_close:hover{-webkit-transform: rotate(180deg); -moz-transform: rotate(180deg);}
+.layim_rightbtn .layer_setmin{margin-right:5px;color:#999;font-size:14px;font-weight: 700;}
+.layim_chat, .layim_chatmore,.layim_groups{height:450px; overflow:hidden;}
+.layim_chatmore{display:none; float:left; width:135px; border-right:1px solid #BEBEBE; background-color:#F2F2F2}
+.layim_chatlist li, .layim_groups li{position:relative; height:30px; line-height:30px; padding:0 10px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; cursor:pointer;}
+.layim_chatlist li{padding:0 20px 0 10px;}
+.layim_chatlist li:hover{background-color:#E3E3E3;}
+.layim_chatlist li span{display:inline-block; *display:inline; *zoom:1; vertical-align:top; width:90px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;}
+.layim_chatlist li em{display:none; position:absolute; top:6px; right:10px; height:18px; line-height:18px;width:18px;text-align: center;font-size:14px;font-weight:900; border-radius:3px;}
+.layim_chatlist li em:hover{background-color: #FCBE00; color:#fff;}
+.layim_chatlist .layim_chatnow,.layim_chatlist .layim_chatnow:hover{/*border-top:1px solid #D9D9D9; border-bottom:1px solid #D9D9D9;*/ background-color:#fff;}
+.layim_chat{}
+.layim_chatarea{height:280px;}
+.layim_chatview{display:none; height:280px; overflow:hidden;}
+.layim_chatmore:hover, .layim_groups:hover, .layim_chatview:hover{overflow-y:auto;}
+.layim_chatview li{margin-bottom:10px; clear:both; *zoom:1;}
+.layim_chatview li:after{content:'\20'; clear:both; *zoom:1; display:block; height:0;}
+
+.layim_chatthis{display:block;}
+.layim_chatuser{float:left; padding:15px; font-size:0;}
+.layim_chatuser *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; line-height:30px; font-size:12px; padding-right:10px;}
+.layim_chatuser img{width:30px; height:30px;padding-right: 0;margin-right: 15px;}
+.layim_chatuser .layim_chatname{max-width:230px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;}
+.layim_chatuser .layim_chattime{color:#999; padding-left:10px;}
+.layim_chatsay{position:relative; float:left; margin:0 15px; padding:10px; line-height:20px; background-color:#F3F3F3; border-radius:3px; clear:both;}
+.layim_chatsay .layim_zero{left:5px; top:-8px; border-width:8px; border-right-style:solid; border-right-color:#F3F3F3;}
+.layim_chateme .layim_chatuser{float:right;}
+.layim_chateme .layim_chatuser *{padding-right:0; padding-left:10px;}
+.layim_chateme .layim_chatuser img{margin-left:15px;padding-left: 0;}
+.layim_chateme .layim_chatsay .layim_zero{left:auto; right:10px;}
+.layim_chateme .layim_chatuser .layim_chattime{padding-left:0; padding-right:10px;}
+.layim_chateme .layim_chatsay{float:right; background-color:#EBFBE3}
+.layim_chateme .layim_zero{border-right-color:#EBFBE3;}
+.layim_groups{display:none; float:right; width:130px; border-left:1px solid #D9D9D9; background-color:#fff;}
+.layim_groups ul{display:none;}
+.layim_groups ul.layim_groupthis{display:block;}
+.layim_groups li *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; margin-right:10px;}
+.layim_groups li img{width:20px; height:20px; margin-top:5px;}
+.layim_groups li span{max-width:80px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;}
+.layim_groups li:hover{background-color:#F3F3F3;}
+.layim_groups .layim_errors{text-align:center; color:#999;}
+.layim_tool{position:relative; height:35px; line-height:35px; padding-left:10px; background-color:#F3F3F3;}
+.layim_tool i{position:relative; top:10px; display:inline-block; *display:inline; *zoom:1; vertical-align:top; width:16px; height:16px; margin-right:10px; cursor:pointer;font-size:16px;color:#999;font-weight: 700;}
+.layim_tool i:hover{color:#FFA00A;}
+.layim_tool .layim_seechatlog{position:absolute; right:15px;}
+.layim_tool .layim_seechatlog i{}
+.layim_write{display:block; border:none; width:98%; height:90px; line-height:20px; margin:5px auto 0;}
+.layim_send{position:relative; height:40px; background-color:#F3F3F3;}
+.layim_sendbtn{position:absolute; height:26px; line-height:26px; right:10px; top:8px; padding:0 40px 0 20px; background-color:#FFA00A; color:#fff; border-radius:3px; cursor:pointer;}
+.layim_enter{position:absolute; right:0; border-left:1px solid #FFB94F; width:24px; height:26px;}
+.layim_enter:hover{background-color:#E68A00; border-radius:0 3px 3px 0;}
+.layim_enter .layim_zero{left:7px; top:11px; border-width:5px; border-top-style:solid; border-top-color:#FFE0B3;}
+.layim_sendtype{display:none; position:absolute; right:10px; bottom:37px; border:1px solid #D9D9D9; background-color:#fff; text-align:left;}
+.layim_sendtype span{display:block; line-height:24px; padding:0 10px 0 25px; cursor:pointer;}
+.layim_sendtype span:hover{background-color:#F3F3F3;}
+.layim_sendtype span i{left:5px;}
+
+.layim_min{display:none; position:absolute; left:-190px; bottom:-1px; width:160px; height:32px; line-height:32px; padding:0 10px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; border:1px solid #ccc; box-shadow: 0 0 5px rgba(0,0,75,.2); background-color:#FCFDFA; cursor:pointer;}
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 630 - 0
src/main/resources/static/ajax/libs/layer/layim/layim.js

@@ -0,0 +1,630 @@
+/*
+
+ @Name: layui WebIM 1.0.0
+ @Author:贤心
+ @Date: 2014-04-25
+ @Blog: http://sentsin.com
+
+ */
+
+;!function(win, undefined){
+
+var config = {
+    msgurl: 'mailbox.html?msg=',
+    chatlogurl: 'mailbox.html?user=',
+    aniTime: 200,
+    right: -232,
+    api: {
+        friend: 'js/plugins/layer/layim/data/friend.json', //好友列表接口
+        group: 'js/plugins/layer/layim/data/group.json', //群组列表接口
+        chatlog: 'js/plugins/layer/layim/data/chatlog.json', //聊天记录接口
+        groups: 'js/plugins/layer/layim/data/groups.json', //群组成员接口
+        sendurl: '' //发送消息接口
+    },
+    user: { //当前用户信息
+        name: '游客',
+        face: 'img/a1.jpg'
+    },
+
+    //自动回复内置文案,也可动态读取数据库配置
+    autoReplay: [
+        '您好,我现在有事不在,一会再和您联系。',
+        '你没发错吧?',
+        '洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!',
+        '你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。',
+        '我正在拉磨,没法招呼您,因为我们家毛驴去动物保护协会把我告了,说我剥夺它休产假的权利。',
+        '<(@ ̄︶ ̄@)>',
+        '你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。',
+        '主人正在开机自检,键盘鼠标看好机会出去凉快去了,我是他的电冰箱,我打字比较慢,你慢慢说,别急……',
+        '(*^__^*) 嘻嘻,是贤心吗?'
+    ],
+
+
+    chating: {},
+    hosts: (function(){
+        var dk = location.href.match(/\:\d+/);
+        dk = dk ? dk[0] : '';
+        return 'http://' + document.domain + dk + '/';
+    })(),
+    json: function(url, data, callback, error){
+        return $.ajax({
+            type: 'POST',
+            url: url,
+            data: data,
+            dataType: 'json',
+            success: callback,
+            error: error
+        });
+    },
+    stopMP: function(e){
+        e ? e.stopPropagation() : e.cancelBubble = true;
+    }
+}, dom = [$(window), $(document), $('html'), $('body')], xxim = {};
+
+//主界面tab
+xxim.tabs = function(index){
+    var node = xxim.node;
+    node.tabs.eq(index).addClass('xxim_tabnow').siblings().removeClass('xxim_tabnow');
+    node.list.eq(index).show().siblings('.xxim_list').hide();
+    if(node.list.eq(index).find('li').length === 0){
+        xxim.getDates(index);
+    }
+};
+
+//节点
+xxim.renode = function(){
+    var node = xxim.node = {
+        tabs: $('#xxim_tabs>span'),
+        list: $('.xxim_list'),
+        online: $('.xxim_online'),
+        setonline: $('.xxim_setonline'),
+        onlinetex: $('#xxim_onlinetex'),
+        xximon: $('#xxim_on'),
+        layimFooter: $('#xxim_bottom'),
+        xximHide: $('#xxim_hide'),
+        xximSearch: $('#xxim_searchkey'),
+        searchMian: $('#xxim_searchmain'),
+        closeSearch: $('#xxim_closesearch'),
+        layimMin: $('#layim_min')
+    };
+};
+
+//主界面缩放
+xxim.expend = function(){
+    var node = xxim.node;
+    if(xxim.layimNode.attr('state') !== '1'){
+        xxim.layimNode.stop().animate({right: config.right}, config.aniTime, function(){
+            node.xximon.addClass('xxim_off');
+            try{
+                localStorage.layimState = 1;
+            }catch(e){}
+            xxim.layimNode.attr({state: 1});
+            node.layimFooter.addClass('xxim_expend').stop().animate({marginLeft: config.right}, config.aniTime/2);
+            node.xximHide.addClass('xxim_show');
+        });
+    } else {
+        xxim.layimNode.stop().animate({right: 1}, config.aniTime, function(){
+            node.xximon.removeClass('xxim_off');
+            try{
+                localStorage.layimState = 2;
+            }catch(e){}
+            xxim.layimNode.removeAttr('state');
+            node.layimFooter.removeClass('xxim_expend');
+            node.xximHide.removeClass('xxim_show');
+        });
+        node.layimFooter.stop().animate({marginLeft: 0}, config.aniTime);
+    }
+};
+
+//初始化窗口格局
+xxim.layinit = function(){
+    var node = xxim.node;
+
+    //主界面
+    try{
+        /*
+        if(!localStorage.layimState){
+            config.aniTime = 0;
+            localStorage.layimState = 1;
+        }
+        */
+        if(localStorage.layimState === '1'){
+            xxim.layimNode.attr({state: 1}).css({right: config.right});
+            node.xximon.addClass('xxim_off');
+            node.layimFooter.addClass('xxim_expend').css({marginLeft: config.right});
+            node.xximHide.addClass('xxim_show');
+        }
+    }catch(e){
+        //layer.msg(e.message, 5, -1);
+    }
+};
+
+//聊天窗口
+xxim.popchat = function(param){
+    var node = xxim.node, log = {};
+
+    log.success = function(layero){
+        layer.setMove();
+
+        xxim.chatbox = layero.find('#layim_chatbox');
+        log.chatlist = xxim.chatbox.find('.layim_chatmore>ul');
+
+        log.chatlist.html('<li data-id="'+ param.id +'" type="'+ param.type +'"  id="layim_user'+ param.type + param.id +'"><span>'+ param.name +'</span><em>×</em></li>')
+        xxim.tabchat(param, xxim.chatbox);
+
+        //最小化聊天窗
+        xxim.chatbox.find('.layer_setmin').on('click', function(){
+            var indexs = layero.attr('times');
+            layero.hide();
+            node.layimMin.text(xxim.nowchat.name).show();
+        });
+
+        //关闭窗口
+        xxim.chatbox.find('.layim_close').on('click', function(){
+            var indexs = layero.attr('times');
+            layer.close(indexs);
+            xxim.chatbox = null;
+            config.chating = {};
+            config.chatings = 0;
+        });
+
+        //关闭某个聊天
+        log.chatlist.on('mouseenter', 'li', function(){
+            $(this).find('em').show();
+        }).on('mouseleave', 'li', function(){
+            $(this).find('em').hide();
+        });
+        log.chatlist.on('click', 'li em', function(e){
+            var parents = $(this).parent(), dataType = parents.attr('type');
+            var dataId = parents.attr('data-id'), index = parents.index();
+            var chatlist = log.chatlist.find('li'), indexs;
+
+            config.stopMP(e);
+
+            delete config.chating[dataType + dataId];
+            config.chatings--;
+
+            parents.remove();
+            $('#layim_area'+ dataType + dataId).remove();
+            if(dataType === 'group'){
+                $('#layim_group'+ dataType + dataId).remove();
+            }
+
+            if(parents.hasClass('layim_chatnow')){
+                if(index === config.chatings){
+                    indexs = index - 1;
+                } else {
+                    indexs = index + 1;
+                }
+                xxim.tabchat(config.chating[chatlist.eq(indexs).attr('type') + chatlist.eq(indexs).attr('data-id')]);
+            }
+
+            if(log.chatlist.find('li').length === 1){
+                log.chatlist.parent().hide();
+            }
+        });
+
+        //聊天选项卡
+        log.chatlist.on('click', 'li', function(){
+            var othis = $(this), dataType = othis.attr('type'), dataId = othis.attr('data-id');
+            xxim.tabchat(config.chating[dataType + dataId]);
+        });
+
+        //发送热键切换
+        log.sendType = $('#layim_sendtype'), log.sendTypes = log.sendType.find('span');
+        $('#layim_enter').on('click', function(e){
+            config.stopMP(e);
+            log.sendType.show();
+        });
+        log.sendTypes.on('click', function(){
+            log.sendTypes.find('i').text('')
+            $(this).find('i').text('√');
+        });
+
+        xxim.transmit();
+    };
+
+    log.html = '<div class="layim_chatbox" id="layim_chatbox">'
+            +'<h6>'
+            +'<span class="layim_move"></span>'
+            +'    <a href="'+ param.url +'" class="layim_face" target="_blank"><img src="'+ param.face +'" ></a>'
+            +'    <a href="'+ param.url +'" class="layim_names" target="_blank">'+ param.name +'</a>'
+            +'    <span class="layim_rightbtn">'
+            +'        <i class="layer_setmin">—</i>'
+            +'        <i class="layim_close">&times;</i>'
+            +'    </span>'
+            +'</h6>'
+            +'<div class="layim_chatmore" id="layim_chatmore">'
+            +'    <ul class="layim_chatlist"></ul>'
+            +'</div>'
+            +'<div class="layim_groups" id="layim_groups"></div>'
+            +'<div class="layim_chat">'
+            +'    <div class="layim_chatarea" id="layim_chatarea">'
+            +'        <ul class="layim_chatview layim_chatthis"  id="layim_area'+ param.type + param.id +'"></ul>'
+            +'    </div>'
+            +'    <div class="layim_tool">'
+            +'        <i class="layim_addface fa fa-meh-o" title="发送表情"></i>'
+            +'        <a href="javascript:;"><i class="layim_addimage fa fa-picture-o" title="上传图片"></i></a>'
+            +'        <a href="javascript:;"><i class="layim_addfile fa fa-paperclip" title="上传附件"></i></a>'
+            +'        <a href="" target="_blank" class="layim_seechatlog"><i class="fa fa-comment-o"></i>聊天记录</a>'
+            +'    </div>'
+            +'    <textarea class="layim_write" id="layim_write"></textarea>'
+            +'    <div class="layim_send">'
+            +'        <div class="layim_sendbtn" id="layim_sendbtn">发送<span class="layim_enter" id="layim_enter"><em class="layim_zero"></em></span></div>'
+            +'        <div class="layim_sendtype" id="layim_sendtype">'
+            +'            <span><i>√</i>按Enter键发送</span>'
+            +'            <span><i></i>按Ctrl+Enter键发送</span>'
+            +'        </div>'
+            +'    </div>'
+            +'</div>'
+            +'</div>';
+
+    if(config.chatings < 1){
+        $.layer({
+            type: 1,
+            border: [0],
+            title: false,
+            shade: [0],
+            area: ['620px', '493px'],
+            move: '.layim_chatbox .layim_move',
+            moveType: 1,
+            closeBtn: false,
+            offset: [(($(window).height() - 493)/2)+'px', ''],
+            page: {
+                html: log.html
+            }, success: function(layero){
+                log.success(layero);
+            }
+        })
+    } else {
+        log.chatmore = xxim.chatbox.find('#layim_chatmore');
+        log.chatarea = xxim.chatbox.find('#layim_chatarea');
+
+        log.chatmore.show();
+
+        log.chatmore.find('ul>li').removeClass('layim_chatnow');
+        log.chatmore.find('ul').append('<li data-id="'+ param.id +'" type="'+ param.type +'" id="layim_user'+ param.type + param.id +'" class="layim_chatnow"><span>'+ param.name +'</span><em>×</em></li>');
+
+        log.chatarea.find('.layim_chatview').removeClass('layim_chatthis');
+        log.chatarea.append('<ul class="layim_chatview layim_chatthis" id="layim_area'+ param.type + param.id +'"></ul>');
+
+        xxim.tabchat(param);
+    }
+
+    //群组
+    log.chatgroup = xxim.chatbox.find('#layim_groups');
+    if(param.type === 'group'){
+        log.chatgroup.find('ul').removeClass('layim_groupthis');
+        log.chatgroup.append('<ul class="layim_groupthis" id="layim_group'+ param.type + param.id +'"></ul>');
+        xxim.getGroups(param);
+    }
+    //点击群员切换聊天窗
+    log.chatgroup.on('click', 'ul>li', function(){
+        xxim.popchatbox($(this));
+    });
+};
+
+//定位到某个聊天队列
+xxim.tabchat = function(param){
+    var node = xxim.node, log = {}, keys = param.type + param.id;
+    xxim.nowchat = param;
+
+    xxim.chatbox.find('#layim_user'+ keys).addClass('layim_chatnow').siblings().removeClass('layim_chatnow');
+    xxim.chatbox.find('#layim_area'+ keys).addClass('layim_chatthis').siblings().removeClass('layim_chatthis');
+    xxim.chatbox.find('#layim_group'+ keys).addClass('layim_groupthis').siblings().removeClass('layim_groupthis');
+
+    xxim.chatbox.find('.layim_face>img').attr('src', param.face);
+    xxim.chatbox.find('.layim_face, .layim_names').attr('href', param.href);
+    xxim.chatbox.find('.layim_names').text(param.name);
+
+    xxim.chatbox.find('.layim_seechatlog').attr('href', config.chatlogurl + param.id);
+
+    log.groups = xxim.chatbox.find('.layim_groups');
+    if(param.type === 'group'){
+        log.groups.show();
+    } else {
+        log.groups.hide();
+    }
+
+    $('#layim_write').focus();
+
+};
+
+//弹出聊天窗
+xxim.popchatbox = function(othis){
+    var node = xxim.node, dataId = othis.attr('data-id'), param = {
+        id: dataId, //用户ID
+        type: othis.attr('type'),
+        name: othis.find('.xxim_onename').text(),  //用户名
+        face: othis.find('.xxim_oneface').attr('src'),  //用户头像
+        href: 'profile.html?user=' + dataId //用户主页
+    }, key = param.type + dataId;
+    if(!config.chating[key]){
+        xxim.popchat(param);
+        config.chatings++;
+    } else {
+        xxim.tabchat(param);
+    }
+    config.chating[key] = param;
+
+    var chatbox = $('#layim_chatbox');
+    if(chatbox[0]){
+        node.layimMin.hide();
+        chatbox.parents('.xubox_layer').show();
+    }
+};
+
+//请求群员
+xxim.getGroups = function(param){
+    var keys = param.type + param.id, str = '',
+    groupss = xxim.chatbox.find('#layim_group'+ keys);
+    groupss.addClass('loading');
+    config.json(config.api.groups, {}, function(datas){
+        if(datas.status === 1){
+            var ii = 0, lens = datas.data.length;
+            if(lens > 0){
+                for(; ii < lens; ii++){
+                    str += '<li data-id="'+ datas.data[ii].id +'" type="one"><img src="'+ datas.data[ii].face +'" class="xxim_oneface"><span class="xxim_onename">'+ datas.data[ii].name +'</span></li>';
+                }
+            } else {
+                str = '<li class="layim_errors">没有群员</li>';
+            }
+
+        } else {
+            str = '<li class="layim_errors">'+ datas.msg +'</li>';
+        }
+        groupss.removeClass('loading');
+        groupss.html(str);
+    }, function(){
+        groupss.removeClass('loading');
+        groupss.html('<li class="layim_errors">请求异常</li>');
+    });
+};
+
+//消息传输
+xxim.transmit = function(){
+    var node = xxim.node, log = {};
+    node.sendbtn = $('#layim_sendbtn');
+    node.imwrite = $('#layim_write');
+
+    //发送
+    log.send = function(){
+        var data = {
+            content: node.imwrite.val(),
+            id: xxim.nowchat.id,
+            sign_key: '', //密匙
+            _: +new Date
+        };
+
+        if(data.content.replace(/\s/g, '') === ''){
+            layer.tips('说点啥呗!', '#layim_write', 2);
+            node.imwrite.focus();
+        } else {
+            //此处皆为模拟
+            var keys = xxim.nowchat.type + xxim.nowchat.id;
+
+            //聊天模版
+            log.html = function(param, type){
+                return '<li class="'+ (type === 'me' ? 'layim_chateme' : '') +'">'
+                    +'<div class="layim_chatuser">'
+                        + function(){
+                            if(type === 'me'){
+                                return '<span class="layim_chattime">'+ param.time +'</span>'
+                                       +'<span class="layim_chatname">'+ param.name +'</span>'
+                                       +'<img src="'+ param.face +'" >';
+                            } else {
+                                return '<img src="'+ param.face +'" >'
+                                       +'<span class="layim_chatname">'+ param.name +'</span>'
+                                       +'<span class="layim_chattime">'+ param.time +'</span>';
+                            }
+                        }()
+                    +'</div>'
+                    +'<div class="layim_chatsay">'+ param.content +'<em class="layim_zero"></em></div>'
+                +'</li>';
+            };
+
+            log.imarea = xxim.chatbox.find('#layim_area'+ keys);
+
+            log.imarea.append(log.html({
+                time: '2014-04-26 0:37',
+                name: config.user.name,
+                face: config.user.face,
+                content: data.content
+            }, 'me'));
+            node.imwrite.val('').focus();
+            log.imarea.scrollTop(log.imarea[0].scrollHeight);
+
+            setTimeout(function(){
+                log.imarea.append(log.html({
+                    time: '2014-04-26 0:38',
+                    name: xxim.nowchat.name,
+                    face: xxim.nowchat.face,
+                    content: config.autoReplay[(Math.random()*config.autoReplay.length) | 0]
+                }));
+                log.imarea.scrollTop(log.imarea[0].scrollHeight);
+            }, 500);
+
+            /*
+            that.json(config.api.sendurl, data, function(datas){
+
+            });
+            */
+        }
+
+    };
+    node.sendbtn.on('click', log.send);
+
+    node.imwrite.keyup(function(e){
+        if(e.keyCode === 13){
+            log.send();
+        }
+    });
+};
+
+//事件
+xxim.event = function(){
+    var node = xxim.node;
+
+    //主界面tab
+    node.tabs.eq(0).addClass('xxim_tabnow');
+    node.tabs.on('click', function(){
+        var othis = $(this), index = othis.index();
+        xxim.tabs(index);
+    });
+
+    //列表展收
+    node.list.on('click', 'h5', function(){
+        var othis = $(this), chat = othis.siblings('.xxim_chatlist'), parentss = othis.find("i");
+        if(parentss.hasClass('fa-caret-down')){
+            chat.hide();
+            parentss.attr('class','fa fa-caret-right');
+        } else {
+            chat.show();
+            parentss.attr('class','fa fa-caret-down');
+        }
+    });
+
+    //设置在线隐身
+    node.online.on('click', function(e){
+        config.stopMP(e);
+        node.setonline.show();
+    });
+    node.setonline.find('span').on('click', function(e){
+        var index = $(this).index();
+        config.stopMP(e);
+        if(index === 0){
+            node.onlinetex.html('在线');
+            node.online.removeClass('xxim_offline');
+        } else if(index === 1) {
+            node.onlinetex.html('隐身');
+            node.online.addClass('xxim_offline');
+        }
+        node.setonline.hide();
+    });
+
+    node.xximon.on('click', xxim.expend);
+    node.xximHide.on('click', xxim.expend);
+
+    //搜索
+    node.xximSearch.keyup(function(){
+        var val = $(this).val().replace(/\s/g, '');
+        if(val !== ''){
+            node.searchMian.show();
+            node.closeSearch.show();
+            //此处的搜索ajax参考xxim.getDates
+            node.list.eq(3).html('<li class="xxim_errormsg">没有符合条件的结果</li>');
+        } else {
+            node.searchMian.hide();
+            node.closeSearch.hide();
+        }
+    });
+    node.closeSearch.on('click', function(){
+        $(this).hide();
+        node.searchMian.hide();
+        node.xximSearch.val('').focus();
+    });
+
+    //弹出聊天窗
+    config.chatings = 0;
+    node.list.on('click', '.xxim_childnode', function(){
+        var othis = $(this);
+        xxim.popchatbox(othis);
+    });
+
+    //点击最小化栏
+    node.layimMin.on('click', function(){
+        $(this).hide();
+        $('#layim_chatbox').parents('.xubox_layer').show();
+    });
+
+
+    //document事件
+    dom[1].on('click', function(){
+        node.setonline.hide();
+        $('#layim_sendtype').hide();
+    });
+};
+
+//请求列表数据
+xxim.getDates = function(index){
+    var api = [config.api.friend, config.api.group, config.api.chatlog],
+        node = xxim.node, myf = node.list.eq(index);
+    myf.addClass('loading');
+    config.json(api[index], {}, function(datas){
+        if(datas.status === 1){
+            var i = 0, myflen = datas.data.length, str = '', item;
+            if(myflen > 1){
+                if(index !== 2){
+                    for(; i < myflen; i++){
+                        str += '<li data-id="'+ datas.data[i].id +'" class="xxim_parentnode">'
+                            +'<h5><i class="fa fa-caret-right"></i><span class="xxim_parentname">'+ datas.data[i].name +'</span><em class="xxim_nums">('+ datas.data[i].nums +')</em></h5>'
+                            +'<ul class="xxim_chatlist">';
+                        item = datas.data[i].item;
+                        for(var j = 0; j < item.length; j++){
+                            str += '<li data-id="'+ item[j].id +'" class="xxim_childnode" type="'+ (index === 0 ? 'one' : 'group') +'"><img src="'+ item[j].face +'" class="xxim_oneface"><span class="xxim_onename">'+ item[j].name +'</span></li>';
+                        }
+                        str += '</ul></li>';
+                    }
+                } else {
+                    str += '<li class="xxim_liston">'
+                        +'<ul class="xxim_chatlist">';
+                    for(; i < myflen; i++){
+                        str += '<li data-id="'+ datas.data[i].id +'" class="xxim_childnode" type="one"><img src="'+ datas.data[i].face +'"  class="xxim_oneface"><span  class="xxim_onename">'+ datas.data[i].name +'</span><em class="xxim_time">'+ datas.data[i].time +'</em></li>';
+                    }
+                    str += '</ul></li>';
+                }
+                myf.html(str);
+            } else {
+                myf.html('<li class="xxim_errormsg">没有任何数据</li>');
+            }
+            myf.removeClass('loading');
+        } else {
+            myf.html('<li class="xxim_errormsg">'+ datas.msg +'</li>');
+        }
+    }, function(){
+        myf.html('<li class="xxim_errormsg">请求失败</li>');
+        myf.removeClass('loading');
+    });
+};
+
+//渲染骨架
+xxim.view = (function(){
+    var xximNode = xxim.layimNode = $('<div id="xximmm" class="xxim_main">'
+            +'<div class="xxim_top" id="xxim_top">'
+            +'  <div class="xxim_search"><i class="fa fa-search"></i><input id="xxim_searchkey" /><span id="xxim_closesearch">×</span></div>'
+            +'  <div class="xxim_tabs" id="xxim_tabs"><span class="xxim_tabfriend" title="好友"><i class="fa fa-user"></i></span><span class="xxim_tabgroup" title="群组"><i class="fa fa-users"></i></span><span class="xxim_latechat"  title="最近聊天"><i class="fa fa-clock-o"></i></span></div>'
+            +'  <ul class="xxim_list" style="display:block"></ul>'
+            +'  <ul class="xxim_list"></ul>'
+            +'  <ul class="xxim_list"></ul>'
+            +'  <ul class="xxim_list xxim_searchmain" id="xxim_searchmain"></ul>'
+            +'</div>'
+            +'<ul class="xxim_bottom" id="xxim_bottom">'
+            +'<li class="xxim_online" id="xxim_online">'
+                +'<i class="xxim_nowstate fa fa-check-circle"></i><span id="xxim_onlinetex">在线</span>'
+                +'<div class="xxim_setonline">'
+                    +'<span><i class="fa fa-check-circle"></i>在线</span>'
+                    +'<span class="xxim_setoffline"><i class="fa fa-check-circle"></i>隐身</span>'
+                +'</div>'
+            +'</li>'
+            +'<li class="xxim_mymsg" id="xxim_mymsg" title="我的私信"><i class="fa fa-comment"></i><a href="'+ config.msgurl +'" target="_blank"></a></li>'
+            +'<li class="xxim_seter" id="xxim_seter" title="设置">'
+                +'<i class="fa fa-gear"></i>'
+                +'<div>'
+
+                +'</div>'
+            +'</li>'
+            +'<li class="xxim_hide" id="xxim_hide"><i class="fa fa-exchange"></i></li>'
+            +'<li id="xxim_on" class="xxim_icon xxim_on fa fa-ellipsis-v"></li>'
+            +'<div class="layim_min" id="layim_min"></div>'
+        +'</ul>'
+    +'</div>');
+    dom[3].append(xximNode);
+
+    xxim.renode();
+    xxim.getDates(0);
+    xxim.event();
+    xxim.layinit();
+}());
+
+}(window);
+

BIN
src/main/resources/static/ajax/libs/layer/layim/loading.gif


File diff suppressed because it is too large
+ 1 - 1
src/main/resources/static/ajax/libs/layer/mobile/layer.js


BIN
src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png


BIN
src/main/resources/static/ajax/libs/layer/skin/default/icon.png


BIN
src/main/resources/static/ajax/libs/layer/skin/default/icon_ext.png


BIN
src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/loading-2.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/textbg.png


BIN
src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png


BIN
src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading2.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading3.gif


BIN
src/main/resources/static/ajax/libs/layer/skin/default/xubox_title0.png


File diff suppressed because it is too large
+ 6 - 0
src/main/resources/static/ajax/libs/layer/skin/layer.css


File diff suppressed because it is too large
+ 7 - 0
src/main/resources/static/ajax/libs/layer/skin/layer.ext.css


BIN
src/main/resources/static/ajax/libs/layer/skin/moon/default.png


+ 141 - 0
src/main/resources/static/ajax/libs/layer/skin/moon/style.css

@@ -0,0 +1,141 @@
+/*
+ * layer皮肤
+ * 作者:一☆隐☆一
+ * QQ:9073194
+ * 请保留这里的信息 谢谢!虽然你不保留我也不能把你怎么样!
+ */
+
+html #layui_layer_skinmoonstylecss {
+	display: none;
+	position: absolute;
+	width: 1989px;
+}
+body .layer-ext-moon[type="dialog"] {
+	min-width: 320px;
+}
+body .layer-ext-moon-msg[type="dialog"]{min-width:200px;}
+body .layer-ext-moon .layui-layer-title {
+	background: #f6f6f6;
+	color: #212a31;
+	font-size: 16px;
+	font-weight: bold;
+	height: 46px;
+	line-height: 46px;
+}
+
+
+
+body .layer-ext-moon .layui-layer-content .layui-layer-ico {
+	height: 32px;
+	width: 32px;
+	top:18.5px;
+}
+body .layer-ext-moon .layui-layer-ico0 {
+	background: url(default.png) no-repeat -96px 0;
+	;
+}
+body .layer-ext-moon .layui-layer-ico1 {
+	background: url(default.png) no-repeat -224px 0;
+	;
+}
+body .layer-ext-moon .layui-layer-ico2 {
+	background: url(default.png) no-repeat -192px 0;
+}
+body .layer-ext-moon .layui-layer-ico3 {
+	background: url(default.png) no-repeat -160px 0;
+}
+body .layer-ext-moon .layui-layer-ico4 {
+	background: url(default.png) no-repeat -320px 0;
+}
+body .layer-ext-moon .layui-layer-ico5 {
+	background: url(default.png) no-repeat -288px 0;
+}
+body .layer-ext-moon .layui-layer-ico6 {
+	background: url(default.png) -256px 0;
+}
+body .layer-ext-moon .layui-layer-ico7 {
+	background: url(default.png) no-repeat -128px 0;
+}
+body .layer-ext-moon .layui-layer-setwin {
+	top: 15px;
+	right: 15px;
+}
+body .layer-ext-moon .layui-layer-setwin a {
+	width: 16px;
+	height: 16px;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-min cite:hover {
+	background-color: #56abe4;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-max {
+	background: url(default.png) no-repeat -80px 0;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-max:hover {
+	background: url(default.png) no-repeat -64px 0;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin {
+	background: url(default.png) no-repeat -32px 0;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin:hover {
+	background: url(default.png) no-repeat -16px 0;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2 {
+	background: url(default.png) 0 0;
+}
+body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover {
+	background: url(default.png) -48px 0;
+}
+body .layer-ext-moon .layui-layer-padding{padding-top: 24px;}
+body .layer-ext-moon .layui-layer-btn {
+	padding: 15px 0;
+	background: #f0f4f7;
+	border-top: 1px #c7c7c7 solid;
+}
+body .layer-ext-moon .layui-layer-btn a {
+	font-size: 12px;
+	font-weight: normal;
+	margin: 0 3px;
+	margin-right: 7px;
+	margin-left: 7px;
+	padding: 6px 20px;
+	color: #fff;
+	border: 1px solid #0064b6;
+	background: #0071ce;
+	border-radius: 3px;
+	display: inline-block;
+	height: 20px;
+	line-height: 20px;
+	text-align: center;
+	vertical-align: middle;
+	background-repeat: no-repeat;
+	text-decoration: none;
+	outline: none;
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+	box-sizing: content-box;
+}
+body .layer-ext-moon .layui-layer-btn .layui-layer-btn0 {
+	background: #0071ce;
+}
+body .layer-ext-moon .layui-layer-btn .layui-layer-btn1 {
+	background: #fff;
+	color: #404a58;
+	border: 1px solid #c0c4cd;
+	border-radius: 3px;
+}
+body .layer-ext-moon .layui-layer-btn .layui-layer-btn2 {
+	background: #f60;
+	color: #fff;
+	border: 1px solid #f60;
+	border-radius: 3px;
+}
+body .layer-ext-moon .layui-layer-btn .layui-layer-btn3 {
+	background: #f00;
+	color: #fff;
+	border: 1px solid #f00;
+	border-radius: 3px;
+}
+
+body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{
+	height:46px;
+}

File diff suppressed because it is too large
+ 1 - 0
src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/laydate.css


File diff suppressed because it is too large
+ 1 - 0
src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js


File diff suppressed because it is too large
+ 1 - 0
src/main/resources/static/ajax/libs/layui/lay/modules/layer.js


File diff suppressed because it is too large
+ 1 - 0
src/main/resources/static/ajax/libs/layui/layui.js


+ 7 - 1
src/main/resources/static/ruoyi/css/ry-ui.css

@@ -201,6 +201,11 @@ label.error {
 }
 
 /** ±íµ¥²éѯÌõ¼þ */
+
+label{
+    font-weight: normal;
+}
+
 .container-div{
 	padding:20px 45px;
 	height:100%;
@@ -320,4 +325,5 @@ label.error {
 }
 .order-table .table>thead:first-child>tr:first-child>th{
 	color:#333;
-}
+}
+

File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/ruoyi/css/ry-ui.min.css


+ 1 - 0
src/main/resources/templates/include.html

@@ -39,6 +39,7 @@
 	<!-- 遮罩层 -->
 	<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
 	<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
+	<script th:src="@{/ajax/libs/layui/layui.js}"></script>
 	<script th:src="@{/ruoyi/js/common.js?v=2.1.0}"></script>
 	<script th:src="@{/ruoyi/js/ry-ui.min.js?v=2.1.0}"></script>
 	<script src="http://tajs.qq.com/stats?sId=62048022"></script>

+ 15 - 3
src/main/resources/templates/monitor/job/jobLog.html

@@ -12,17 +12,23 @@
 					<div class="select-list gd">
 						<ul>
 							<li>
-								任务名称:<input type="text" name="jobName"/>
+								<label>任务名称:</label><input type="text" name="jobName"/>
 							</li>
 							<li>
-								方法名称:<input type="text" name="methodName"/>
+								<label>方法名称:</label><input type="text" name="methodName"/>
 							</li>
 							<li>
-								执行状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_common_status')}">
+								<label>执行状态:</label><select name="status" th:with="type=${@dictService.selectDictData('sys_common_status')}">
 									<option value="">所有</option>
 									<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
 								</select>
 							</li>
+							<li class="time">
+								<label>操作时间: </label>
+								<input type="text" class="layui-input" id="startTime" placeholder="开始时间" name="reqParams[beginTime]"/>
+								<span>-</span>
+								<input type="text" class="layui-input" id="endTime" placeholder="结束时间" name="reqParams[endTime]"/>
+							</li>
 							<li>
 								<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i>&nbsp;搜索</a>
 								<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i>&nbsp;下载</a>
@@ -113,6 +119,12 @@
 		    };
 		    $.table.init(options);
 		});
+		
+		layui.use('laydate', function() {
+		    var laydate = layui.laydate;
+		    laydate.render({ elem: '#startTime', theme: 'molv' });
+		    laydate.render({ elem: '#endTime', theme: 'molv' });
+		});
 	</script>
 </body>
 </html>

+ 15 - 3
src/main/resources/templates/monitor/logininfor/logininfor.html

@@ -12,17 +12,23 @@
 					<div class="select-list gd">
 						<ul>
 							<li>
-								登录地址:<input type="text" name="ipaddr"/>
+								<label>登录地址:</label><input type="text" name="ipaddr"/>
 							</li>
 							<li>
-								登录名称:<input type="text" name="loginName"/>
+								<label>登录名称:</label><input type="text" name="loginName"/>
 							</li>
 							<li>
-								登录状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_common_status')}">
+								<label>登录状态:</label><select name="status" th:with="type=${@dictService.selectDictData('sys_common_status')}">
 									<option value="">所有</option>
 									<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
 								</select>
 							</li>
+							<li class="time">
+								<label>操作时间: </label>
+								<input type="text" class="layui-input" id="startTime" placeholder="开始时间" name="reqParams[beginTime]"/>
+								<span>-</span>
+								<input type="text" class="layui-input" id="endTime" placeholder="结束时间" name="reqParams[endTime]"/>
+							</li>
 							<li>
 								<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i>&nbsp;搜索</a>
 								<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i>&nbsp;下载</a>
@@ -107,6 +113,12 @@
 		    };
 		    $.table.init(options);
 		});
+		
+		layui.use('laydate', function() {
+		    var laydate = layui.laydate;
+		    laydate.render({ elem: '#startTime', theme: 'molv' });
+		    laydate.render({ elem: '#endTime', theme: 'molv' });
+		});
 	</script>
 </body>
 </html>

+ 15 - 3
src/main/resources/templates/monitor/operlog/operlog.html

@@ -12,17 +12,23 @@
 					<div class="select-list gd">
 						<ul>
 							<li>
-								系统模块:<input type="text" name="title"/>
+								<label>系统模块: </label><input type="text" name="title"/>
 							</li>
 							<li>
-								操作人员:<input type="text" name="operName"/>
+								<label>操作人员: </label><input type="text" name="operName"/>
 							</li>
 							<li>
-								操作类型:<select name="action" th:with="type=${@dictService.selectDictData('sys_oper_type')}">
+								<label>操作类型: </label><select name="action" th:with="type=${@dictService.selectDictData('sys_oper_type')}">
 									<option value="">所有</option>
 									<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
 								</select>
 							</li>
+							<li class="time">
+								<label>操作时间: </label>
+								<input type="text" class="layui-input" id="startTime" placeholder="开始时间" name="reqParams[beginTime]"/>
+								<span>-</span>
+								<input type="text" class="layui-input" id="endTime" placeholder="结束时间" name="reqParams[endTime]"/>
+							</li>
 							<li>
 								<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i>&nbsp;搜索</a>
 								<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i>&nbsp;下载</a>
@@ -147,6 +153,12 @@
 		    var url = prefix + '/detail/' + id;
 		    $.modal.open("操作日志详细", url);
 		}
+		
+		layui.use('laydate', function() {
+		    var laydate = layui.laydate;
+		    laydate.render({ elem: '#startTime', theme: 'molv' });
+		    laydate.render({ elem: '#endTime', theme: 'molv' });
+		});
 	</script>
 </body>
 </html>

Some files were not shown because too many files changed in this diff