Authored by jack.xue

Merge branch 'master' of http://git.yoho.cn/ops/monitor-ui

@@ -8,6 +8,7 @@ public class HttpUriContants { @@ -8,6 +8,7 @@ public class HttpUriContants {
8 /*** 机组信息 ****/ 8 /*** 机组信息 ****/
9 public static final String HOST_GROUP_GETALL = "/hostGroup/getHostGroups"; 9 public static final String HOST_GROUP_GETALL = "/hostGroup/getHostGroups";
10 public static final String HOST_GROUP_SAVE = "/hostGroup/saveHostGroup"; 10 public static final String HOST_GROUP_SAVE = "/hostGroup/saveHostGroup";
  11 + public static final String HOST_GROUP_DELETE = "/hostGroup/delHostGroup";
11 12
12 public static final String HOST_ALL_GROUPS = "/hostGroup/getAllGroups"; 13 public static final String HOST_ALL_GROUPS = "/hostGroup/getAllGroups";
13 14
@@ -18,6 +19,8 @@ public class HttpUriContants { @@ -18,6 +19,8 @@ public class HttpUriContants {
18 public static String TYPE_ADD = "/type/add"; 19 public static String TYPE_ADD = "/type/add";
19 public static String TYPE_DEL = "/type/delete"; 20 public static String TYPE_DEL = "/type/delete";
20 public static String TYPE_UPDATE = "/type/update"; 21 public static String TYPE_UPDATE = "/type/update";
  22 + public static String TYPE_QUERY_NODE = "/type/queryNode";
  23 +
21 24
22 /*** 主机信息 ****/ 25 /*** 主机信息 ****/
23 public static final String GET_HOST_INFOS = "/hostInfo/getHostInfos"; 26 public static final String GET_HOST_INFOS = "/hostInfo/getHostInfos";
1 package com.ui.http; 1 package com.ui.http;
2 2
3 import com.ui.config.SystemConfig; 3 import com.ui.config.SystemConfig;
  4 +import org.apache.http.client.methods.HttpGet;
4 import org.slf4j.Logger; 5 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory; 6 import org.slf4j.LoggerFactory;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +30,15 @@ public class HttpRestClient { @@ -29,7 +30,15 @@ public class HttpRestClient {
29 30
30 public <T> T defaultGet(String uri, Class<T> responseType,Map<String, ?> map) { 31 public <T> T defaultGet(String uri, Class<T> responseType,Map<String, ?> map) {
31 try { 32 try {
32 - return restTemplate.getForObject(systemConfig.getServiceUrl() + uri, responseType,map); 33 + StringBuilder url = new StringBuilder(uri);
  34 + if(map != null){
  35 + url.append("?");
  36 + for (Map.Entry<String, ?> entry : map.entrySet()) {
  37 + url.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
  38 + }
  39 + return restTemplate.getForObject(systemConfig.getServiceUrl() + url.toString().substring(0, url.length()-1), responseType);
  40 + }
  41 + return restTemplate.getForObject(systemConfig.getServiceUrl() + uri, responseType);
33 } catch (Exception e) { 42 } catch (Exception e) {
34 logger.error("getForObject failed!url: "+uri, e); 43 logger.error("getForObject failed!url: "+uri, e);
35 return null; 44 return null;
@@ -13,6 +13,9 @@ import org.springframework.stereotype.Controller; @@ -13,6 +13,9 @@ import org.springframework.stereotype.Controller;
13 import org.springframework.web.bind.annotation.RequestMapping; 13 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.ResponseBody; 14 import org.springframework.web.bind.annotation.ResponseBody;
15 15
  16 +import java.util.HashMap;
  17 +import java.util.Map;
  18 +
16 /** 19 /**
17 * Created by yoho on 2016/6/14. 20 * Created by yoho on 2016/6/14.
18 * 查询机器信息 21 * 查询机器信息
@@ -36,12 +39,22 @@ public class HostGroupCtrl { @@ -36,12 +39,22 @@ public class HostGroupCtrl {
36 39
37 @RequestMapping("/saveHostGroup") 40 @RequestMapping("/saveHostGroup")
38 @ResponseBody 41 @ResponseBody
39 - public BaseResponse saveHostGroup(String req) {  
40 - BaseResponse response = httpRestClient.defaultPost(HttpUriContants.HOST_GROUP_SAVE, req, BaseResponse.class); 42 + public BaseResponse saveHostGroup(int id,String groupName) {
  43 + Map map = new HashMap<>();
  44 + map.put("id",id);
  45 + map.put("groupName",groupName);
  46 + BaseResponse response = httpRestClient.defaultPost(HttpUriContants.HOST_GROUP_SAVE, map, BaseResponse.class);
41 return response; 47 return response;
42 } 48 }
43 49
44 - 50 + @RequestMapping("/deleteHostGroup")
  51 + @ResponseBody
  52 + public BaseResponse deleteHostGroup(int id) {
  53 + Map map = new HashMap<>();
  54 + map.put("id",id);
  55 + BaseResponse response = httpRestClient.defaultGet(HttpUriContants.HOST_GROUP_DELETE, BaseResponse.class, map);
  56 + return response;
  57 + }
45 58
46 @RequestMapping("/getAllGroups") 59 @RequestMapping("/getAllGroups")
47 @ResponseBody 60 @ResponseBody
@@ -3,6 +3,7 @@ package com.ui.ctrl; @@ -3,6 +3,7 @@ package com.ui.ctrl;
3 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
4 import com.ui.contants.HttpUriContants; 4 import com.ui.contants.HttpUriContants;
5 import com.ui.http.HttpRestClient; 5 import com.ui.http.HttpRestClient;
  6 +import com.ui.model.BaseResponse;
6 import org.slf4j.Logger; 7 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory; 8 import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,10 +64,10 @@ public class TypeCtrl { @@ -63,10 +64,10 @@ public class TypeCtrl {
63 @ResponseBody 64 @ResponseBody
64 public String delType(@RequestParam int id) { 65 public String delType(@RequestParam int id) {
65 String rel = ""; 66 String rel = "";
66 - logger.info("update type id {} ", id); 67 + logger.info("del type id {} ", id);
67 rel = httpClient.defaultGet(HttpUriContants.TYPE_DEL+"/"+id,String.class); 68 rel = httpClient.defaultGet(HttpUriContants.TYPE_DEL+"/"+id,String.class);
68 - logger.info("update type: {}", rel);  
69 - return "ok"; 69 + logger.info("del type: {}", rel);
  70 + return rel;
70 } 71 }
71 72
72 73
@@ -88,4 +89,11 @@ public class TypeCtrl { @@ -88,4 +89,11 @@ public class TypeCtrl {
88 return rel; 89 return rel;
89 } 90 }
90 91
  92 +
  93 + @RequestMapping("/queryNode")
  94 + @ResponseBody
  95 + public BaseResponse queryNode() throws Exception {
  96 + BaseResponse response=httpClient.defaultGet(HttpUriContants.TYPE_QUERY_NODE, BaseResponse.class);
  97 + return response;
  98 + }
91 } 99 }
@@ -35,8 +35,8 @@ @@ -35,8 +35,8 @@
35 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js" charset="UTF-8" type="text/javascript"></script> 35 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js" charset="UTF-8" type="text/javascript"></script>
36 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js" charset="UTF-8" type="text/javascript"></script> 36 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js" charset="UTF-8" type="text/javascript"></script>
37 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.form.js" charset="UTF-8" type="text/javascript"></script> 37 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.form.js" charset="UTF-8" type="text/javascript"></script>
  38 +<script src="<%=basePath %>js/layer/layer.js" charset="UTF-8" type="text/javascript"></script>
38 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.select.js" charset="UTF-8" type="text/javascript"></script> 39 <script src="<%=basePath %>js/bootstrap-plugin/bootstrap.select.js" charset="UTF-8" type="text/javascript"></script>
39 -  
40 <script src="<%=basePath %>js/jstree/jstree.min.js"></script> 40 <script src="<%=basePath %>js/jstree/jstree.min.js"></script>
41 <script src="<%=basePath %>js/jquery.toaster.js"></script> 41 <script src="<%=basePath %>js/jquery.toaster.js"></script>
42 <script> 42 <script>
  1 +/*! layer弹层组件拓展类 */
  2 +;!function(){layer.use("skin/layer.ext.css",function(){layer.layui_layer_extendlayerextjs=!0});var a=layer.cache||{},b=function(b){return a.skin?" "+a.skin+" "+a.skin+"-"+b:""};layer.prompt=function(a,c){a=a||{},"function"==typeof a&&(c=a);var d,e=2==a.formType?'<textarea class="layui-layer-input">'+(a.value||"")+"</textarea>":function(){return'<input type="'+(1==a.formType?"password":"text")+'" class="layui-layer-input" value="'+(a.value||"")+'">'}();return layer.open($.extend({btn:["&#x786E;&#x5B9A;","&#x53D6;&#x6D88;"],content:e,skin:"layui-layer-prompt"+b("prompt"),success:function(a){d=a.find(".layui-layer-input"),d.focus()},yes:function(b){var e=d.val();""===e?d.focus():e.length>(a.maxlength||500)?layer.tips("&#x6700;&#x591A;&#x8F93;&#x5165;"+(a.maxlength||500)+"&#x4E2A;&#x5B57;&#x6570;",d,{tips:1}):c&&c(e,b,d)}},a))},layer.tab=function(a){a=a||{};var c=a.tab||{};return layer.open($.extend({type:1,skin:"layui-layer-tab"+b("tab"),title:function(){var a=c.length,b=1,d="";if(a>0)for(d='<span class="layui-layer-tabnow">'+c[0].title+"</span>";a>b;b++)d+="<span>"+c[b].title+"</span>";return d}(),content:'<ul class="layui-layer-tabmain">'+function(){var a=c.length,b=1,d="";if(a>0)for(d='<li class="layui-layer-tabli xubox_tab_layer">'+(c[0].content||"no content")+"</li>";a>b;b++)d+='<li class="layui-layer-tabli">'+(c[b].content||"no content")+"</li>";return d}()+"</ul>",success:function(b){var c=b.find(".layui-layer-title").children(),d=b.find(".layui-layer-tabmain").children();c.on("mousedown",function(b){b.stopPropagation?b.stopPropagation():b.cancelBubble=!0;var c=$(this),e=c.index();c.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"),d.eq(e).show().siblings().hide(),"function"==typeof a.change&&a.change(e)})}},a))},layer.photos=function(a,c,d){function e(a,b,c){var d=new Image;d.onload=function(){d.onload=null,b(d)},d.onerror=function(a){d.onerror=null,c(a)},d.src=a}var f={};if(a=a||{},a.photos){var g=a.photos.constructor===Object,h=g?a.photos:{},i=h.data||[],j=h.start||0;if(f.imgIndex=j+1,g){if(0===i.length)return layer.msg("&#x6CA1;&#x6709;&#x56FE;&#x7247;")}else{var k=$(a.photos),l=function(){return i=[],k.find(a.img||"img").each(function(a){var b=$(this);i.push({alt:b.attr("alt"),pid:b.attr("layer-pid"),src:b.attr("layer-src")||b.attr("src"),thumb:b.attr("src")})}),arguments.callee}();if(0===i.length)return;if(c||k.on("click",a.img||"img",function(){var b=$(this),c=b.index();l(),layer.photos($.extend(a,{photos:{start:c,data:i,tab:a.tab},full:a.full}),!0)}),!c)return}f.imgprev=function(a){f.imgIndex--,f.imgIndex<1&&(f.imgIndex=i.length),f.tabimg(a)},f.imgnext=function(a,b){f.imgIndex++,f.imgIndex>i.length&&(f.imgIndex=1,b)||f.tabimg(a)},f.keyup=function(a){if(!f.end){var b=a.keyCode;a.preventDefault(),37===b?f.imgprev(!0):39===b?f.imgnext(!0):27===b&&layer.close(f.index)}},f.tabimg=function(b){i.length<=1||(h.start=f.imgIndex-1,layer.close(f.index),layer.photos(a,!0,b))},f.event=function(){f.bigimg.hover(function(){f.imgsee.show()},function(){f.imgsee.hide()}),f.bigimg.find(".layui-layer-imgprev").on("click",function(a){a.preventDefault(),f.imgprev()}),f.bigimg.find(".layui-layer-imgnext").on("click",function(a){a.preventDefault(),f.imgnext()}),$(document).on("keyup",f.keyup)},f.loadi=layer.load(1,{shade:"shade"in a?!1:.9,scrollbar:!1}),e(i[j].src,function(c){layer.close(f.loadi),f.index=layer.open($.extend({type:1,area:function(){var b=[c.width,c.height],d=[$(window).width()-100,$(window).height()-100];return!a.full&&b[0]>d[0]&&(b[0]=d[0],b[1]=b[0]*d[1]/b[0]),[b[0]+"px",b[1]+"px"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:".layui-layer-phimg img",moveType:1,scrollbar:!1,moveOut:!0,shift:5*Math.random()|0,skin:"layui-layer-photos"+b("photos"),content:'<div class="layui-layer-phimg"><img src="'+i[j].src+'" alt="'+(i[j].alt||"")+'" layer-pid="'+i[j].pid+'"><div class="layui-layer-imgsee">'+(i.length>1?'<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>':"")+'<div class="layui-layer-imgbar" style="display:'+(d?"block":"")+'"><span class="layui-layer-imgtit"><a href="javascript:;">'+(i[j].alt||"")+"</a><em>"+f.imgIndex+"/"+i.length+"</em></span></div></div></div>",success:function(b,c){f.bigimg=b.find(".layui-layer-phimg"),f.imgsee=b.find(".layui-layer-imguide,.layui-layer-imgbar"),f.event(b),a.tab&&a.tab(i[j],b)},end:function(){f.end=!0,$(document).off("keyup",f.keyup)}},a))},function(){layer.close(f.loadi),layer.msg("&#x5F53;&#x524D;&#x56FE;&#x7247;&#x5730;&#x5740;&#x5F02;&#x5E38;<br>&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x67E5;&#x770B;&#x4E0B;&#x4E00;&#x5F20;&#xFF1F;",{time:3e4,btn:["下一张","不看了"],yes:function(){i.length>1&&f.imgnext(!0,!0)}})})}}}();
  1 +/*! layer-v2.2 弹层组件 License LGPL http://layer.layui.com/ By 贤心 */
  2 +;!function(a,b){"use strict";var c,d,e={getPath:function(){var a=document.scripts,b=a[a.length-1],c=b.src;if(!b.getAttribute("merge"))return c.substring(0,c.lastIndexOf("/")+1)}(),enter:function(a){13===a.keyCode&&a.preventDefault()},config:{},end:{},btn:["&#x786E;&#x5B9A;","&#x53D6;&#x6D88;"],type:["dialog","page","iframe","loading","tips"]},f={v:"2.2",ie6:!!a.ActiveXObject&&!a.XMLHttpRequest,index:0,path:e.getPath,config:function(a,b){var d=0;return a=a||{},f.cache=e.config=c.extend(e.config,a),f.path=e.config.path||f.path,"string"==typeof a.extend&&(a.extend=[a.extend]),f.use("skin/layer.css",a.extend&&a.extend.length>0?function g(){var c=a.extend;f.use(c[c[d]?d:d-1],d<c.length?function(){return++d,g}():b)}():b),this},use:function(a,b,d){var e=c("head")[0],a=a.replace(/\s/g,""),g=/\.css$/.test(a),h=document.createElement(g?"link":"script"),i="layui_layer_"+a.replace(/\.|\//g,"");return f.path?(g&&(h.rel="stylesheet"),h[g?"href":"src"]=/^http:\/\//.test(a)?a:f.path+a,h.id=i,c("#"+i)[0]||e.appendChild(h),function j(){(g?1989===parseInt(c("#"+i).css("width")):f[d||i])?function(){b&&b();try{g||e.removeChild(h)}catch(a){}}():setTimeout(j,100)}(),this):void 0},ready:function(a,b){var d="function"==typeof a;return d&&(b=a),f.config(c.extend(e.config,function(){return d?{}:{path:a}}()),b),this},alert:function(a,b,d){var e="function"==typeof b;return e&&(d=b),f.open(c.extend({content:a,yes:d},e?{}:b))},confirm:function(a,b,d,g){var h="function"==typeof b;return h&&(g=d,d=b),f.open(c.extend({content:a,btn:e.btn,yes:d,cancel:g},h?{}:b))},msg:function(a,d,g){var i="function"==typeof d,j=e.config.skin,k=(j?j+" "+j+"-msg":"")||"layui-layer-msg",l=h.anim.length-1;return i&&(g=d),f.open(c.extend({content:a,time:3e3,shade:!1,skin:k,title:!1,closeBtn:!1,btn:!1,end:g},i&&!e.config.skin?{skin:k+" layui-layer-hui",shift:l}:function(){return d=d||{},(-1===d.icon||d.icon===b&&!e.config.skin)&&(d.skin=k+" "+(d.skin||"layui-layer-hui")),d}()))},load:function(a,b){return f.open(c.extend({type:3,icon:a||0,shade:.01},b))},tips:function(a,b,d){return f.open(c.extend({type:4,content:[a,b],closeBtn:!1,time:3e3,shade:!1,maxWidth:210},d))}},g=function(a){var b=this;b.index=++f.index,b.config=c.extend({},b.config,e.config,a),b.creat()};g.pt=g.prototype;var h=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];h.anim=["layui-anim","layui-anim-01","layui-anim-02","layui-anim-03","layui-anim-04","layui-anim-05","layui-anim-06"],g.pt.config={type:0,shade:.3,fix:!0,move:h[1],title:"&#x4FE1;&#x606F;",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,shift:0,icon:-1,scrollbar:!0,tips:2},g.pt.vessel=function(a,b){var c=this,d=c.index,f=c.config,g=f.zIndex+d,i="object"==typeof f.title,j=f.maxmin&&(1===f.type||2===f.type),k=f.title?'<div class="layui-layer-title" style="'+(i?f.title[1]:"")+'">'+(i?f.title[0]:f.title)+"</div>":"";return f.zIndex=g,b([f.shade?'<div class="layui-layer-shade" id="layui-layer-shade'+d+'" times="'+d+'" style="'+("z-index:"+(g-1)+"; background-color:"+(f.shade[1]||"#000")+"; opacity:"+(f.shade[0]||f.shade)+"; filter:alpha(opacity="+(100*f.shade[0]||100*f.shade)+");")+'"></div>':"",'<div class="'+h[0]+" "+(h.anim[f.shift]||"")+(" layui-layer-"+e.type[f.type])+(0!=f.type&&2!=f.type||f.shade?"":" layui-layer-border")+" "+(f.skin||"")+'" id="'+h[0]+d+'" type="'+e.type[f.type]+'" times="'+d+'" showtime="'+f.time+'" conType="'+(a?"object":"string")+'" style="z-index: '+g+"; width:"+f.area[0]+";height:"+f.area[1]+(f.fix?"":";position:absolute;")+'">'+(a&&2!=f.type?"":k)+'<div id="'+(f.id||"")+'" class="layui-layer-content'+(0==f.type&&-1!==f.icon?" layui-layer-padding":"")+(3==f.type?" layui-layer-loading"+f.icon:"")+'">'+(0==f.type&&-1!==f.icon?'<i class="layui-layer-ico layui-layer-ico'+f.icon+'"></i>':"")+(1==f.type&&a?"":f.content||"")+'</div><span class="layui-layer-setwin">'+function(){var a=j?'<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>':"";return f.closeBtn&&(a+='<a class="layui-layer-ico '+h[7]+" "+h[7]+(f.title?f.closeBtn:4==f.type?"1":"2")+'" href="javascript:;"></a>'),a}()+"</span>"+(f.btn?function(){var a="";"string"==typeof f.btn&&(f.btn=[f.btn]);for(var b=0,c=f.btn.length;c>b;b++)a+='<a class="'+h[6]+b+'">'+f.btn[b]+"</a>";return'<div class="'+h[6]+'">'+a+"</div>"}():"")+"</div>"],k),c},g.pt.creat=function(){var a=this,b=a.config,g=a.index,i=b.content,j="object"==typeof i;if(!c("#"+b.id)[0]){switch("string"==typeof b.area&&(b.area="auto"===b.area?["",""]:[b.area,""]),b.type){case 0:b.btn="btn"in b?b.btn:e.btn[0],f.closeAll("dialog");break;case 2:var i=b.content=j?b.content:[b.content||"http://layer.layui.com","auto"];b.content='<iframe scrolling="'+(b.content[1]||"auto")+'" allowtransparency="true" id="'+h[4]+g+'" name="'+h[4]+g+'" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="'+b.content[0]+'"></iframe>';break;case 3:b.title=!1,b.closeBtn=!1,-1===b.icon&&0===b.icon,f.closeAll("loading");break;case 4:j||(b.content=[b.content,"body"]),b.follow=b.content[1],b.content=b.content[0]+'<i class="layui-layer-TipsG"></i>',b.title=!1,b.fix=!1,b.tips="object"==typeof b.tips?b.tips:[b.tips,!0],b.tipsMore||f.closeAll("tips")}a.vessel(j,function(d,e){c("body").append(d[0]),j?function(){2==b.type||4==b.type?function(){c("body").append(d[1])}():function(){i.parents("."+h[0])[0]||(i.show().addClass("layui-layer-wrap").wrap(d[1]),c("#"+h[0]+g).find("."+h[5]).before(e))}()}():c("body").append(d[1]),a.layero=c("#"+h[0]+g),b.scrollbar||h.html.css("overflow","hidden").attr("layer-full",g)}).auto(g),2==b.type&&f.ie6&&a.layero.find("iframe").attr("src",i[0]),c(document).off("keydown",e.enter).on("keydown",e.enter),a.layero.on("keydown",function(a){c(document).off("keydown",e.enter)}),4==b.type?a.tips():a.offset(),b.fix&&d.on("resize",function(){a.offset(),(/^\d+%$/.test(b.area[0])||/^\d+%$/.test(b.area[1]))&&a.auto(g),4==b.type&&a.tips()}),b.time<=0||setTimeout(function(){f.close(a.index)},b.time),a.move().callback()}},g.pt.auto=function(a){function b(a){a=g.find(a),a.height(i[1]-j-k-2*(0|parseFloat(a.css("padding"))))}var e=this,f=e.config,g=c("#"+h[0]+a);""===f.area[0]&&f.maxWidth>0&&(/MSIE 7/.test(navigator.userAgent)&&f.btn&&g.width(g.innerWidth()),g.outerWidth()>f.maxWidth&&g.width(f.maxWidth));var i=[g.innerWidth(),g.innerHeight()],j=g.find(h[1]).outerHeight()||0,k=g.find("."+h[6]).outerHeight()||0;switch(f.type){case 2:b("iframe");break;default:""===f.area[1]?f.fix&&i[1]>=d.height()&&(i[1]=d.height(),b("."+h[5])):b("."+h[5])}return e},g.pt.offset=function(){var a=this,b=a.config,c=a.layero,e=[c.outerWidth(),c.outerHeight()],f="object"==typeof b.offset;a.offsetTop=(d.height()-e[1])/2,a.offsetLeft=(d.width()-e[0])/2,f?(a.offsetTop=b.offset[0],a.offsetLeft=b.offset[1]||a.offsetLeft):"auto"!==b.offset&&(a.offsetTop=b.offset,"rb"===b.offset&&(a.offsetTop=d.height()-e[1],a.offsetLeft=d.width()-e[0])),b.fix||(a.offsetTop=/%$/.test(a.offsetTop)?d.height()*parseFloat(a.offsetTop)/100:parseFloat(a.offsetTop),a.offsetLeft=/%$/.test(a.offsetLeft)?d.width()*parseFloat(a.offsetLeft)/100:parseFloat(a.offsetLeft),a.offsetTop+=d.scrollTop(),a.offsetLeft+=d.scrollLeft()),c.css({top:a.offsetTop,left:a.offsetLeft})},g.pt.tips=function(){var a=this,b=a.config,e=a.layero,f=[e.outerWidth(),e.outerHeight()],g=c(b.follow);g[0]||(g=c("body"));var i={width:g.outerWidth(),height:g.outerHeight(),top:g.offset().top,left:g.offset().left},j=e.find(".layui-layer-TipsG"),k=b.tips[0];b.tips[1]||j.remove(),i.autoLeft=function(){i.left+f[0]-d.width()>0?(i.tipLeft=i.left+i.width-f[0],j.css({right:12,left:"auto"})):i.tipLeft=i.left},i.where=[function(){i.autoLeft(),i.tipTop=i.top-f[1]-10,j.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",b.tips[1])},function(){i.tipLeft=i.left+i.width+10,i.tipTop=i.top,j.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",b.tips[1])},function(){i.autoLeft(),i.tipTop=i.top+i.height+10,j.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",b.tips[1])},function(){i.tipLeft=i.left-f[0]-10,i.tipTop=i.top,j.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",b.tips[1])}],i.where[k-1](),1===k?i.top-(d.scrollTop()+f[1]+16)<0&&i.where[2]():2===k?d.width()-(i.left+i.width+f[0]+16)>0||i.where[3]():3===k?i.top-d.scrollTop()+i.height+f[1]+16-d.height()>0&&i.where[0]():4===k&&f[0]+16-i.left>0&&i.where[1](),e.find("."+h[5]).css({"background-color":b.tips[1],"padding-right":b.closeBtn?"30px":""}),e.css({left:i.tipLeft,top:i.tipTop})},g.pt.move=function(){var a=this,b=a.config,e={setY:0,moveLayer:function(){var a=e.layero,b=parseInt(a.css("margin-left")),c=parseInt(e.move.css("left"));0===b||(c-=b),"fixed"!==a.css("position")&&(c-=a.parent().offset().left,e.setY=0),a.css({left:c,top:parseInt(e.move.css("top"))-e.setY})}},f=a.layero.find(b.move);return b.move&&f.attr("move","ok"),f.css({cursor:b.move?"move":"auto"}),c(b.move).on("mousedown",function(a){if(a.preventDefault(),"ok"===c(this).attr("move")){e.ismove=!0,e.layero=c(this).parents("."+h[0]);var f=e.layero.offset().left,g=e.layero.offset().top,i=e.layero.outerWidth()-6,j=e.layero.outerHeight()-6;c("#layui-layer-moves")[0]||c("body").append('<div id="layui-layer-moves" class="layui-layer-moves" style="left:'+f+"px; top:"+g+"px; width:"+i+"px; height:"+j+'px; z-index:2147483584"></div>'),e.move=c("#layui-layer-moves"),b.moveType&&e.move.css({visibility:"hidden"}),e.moveX=a.pageX-e.move.position().left,e.moveY=a.pageY-e.move.position().top,"fixed"!==e.layero.css("position")||(e.setY=d.scrollTop())}}),c(document).mousemove(function(a){if(e.ismove){var c=a.pageX-e.moveX,f=a.pageY-e.moveY;if(a.preventDefault(),!b.moveOut){e.setY=d.scrollTop();var g=d.width()-e.move.outerWidth(),h=e.setY;0>c&&(c=0),c>g&&(c=g),h>f&&(f=h),f>d.height()-e.move.outerHeight()+e.setY&&(f=d.height()-e.move.outerHeight()+e.setY)}e.move.css({left:c,top:f}),b.moveType&&e.moveLayer(),c=f=g=h=null}}).mouseup(function(){try{e.ismove&&(e.moveLayer(),e.move.remove(),b.moveEnd&&b.moveEnd()),e.ismove=!1}catch(a){e.ismove=!1}}),a},g.pt.callback=function(){function a(){var a=g.cancel&&g.cancel(b.index);a===!1||f.close(b.index)}var b=this,d=b.layero,g=b.config;b.openLayer(),g.success&&(2==g.type?d.find("iframe").on("load",function(){g.success(d,b.index)}):g.success(d,b.index)),f.ie6&&b.IE6(d),d.find("."+h[6]).children("a").on("click",function(){var e=c(this).index();g["btn"+(e+1)]&&g["btn"+(e+1)](b.index,d),0===e?g.yes?g.yes(b.index,d):f.close(b.index):1===e?a():g["btn"+(e+1)]||f.close(b.index)}),d.find("."+h[7]).on("click",a),g.shadeClose&&c("#layui-layer-shade"+b.index).on("click",function(){f.close(b.index)}),d.find(".layui-layer-min").on("click",function(){f.min(b.index,g),g.min&&g.min(d)}),d.find(".layui-layer-max").on("click",function(){c(this).hasClass("layui-layer-maxmin")?(f.restore(b.index),g.restore&&g.restore(d)):(f.full(b.index,g),g.full&&g.full(d))}),g.end&&(e.end[b.index]=g.end)},e.reselect=function(){c.each(c("select"),function(a,b){var d=c(this);d.parents("."+h[0])[0]||1==d.attr("layer")&&c("."+h[0]).length<1&&d.removeAttr("layer").show(),d=null})},g.pt.IE6=function(a){function b(){a.css({top:f+(e.config.fix?d.scrollTop():0)})}var e=this,f=a.offset().top;b(),d.scroll(b),c("select").each(function(a,b){var d=c(this);d.parents("."+h[0])[0]||"none"===d.css("display")||d.attr({layer:"1"}).hide(),d=null})},g.pt.openLayer=function(){var a=this;f.zIndex=a.config.zIndex,f.setTop=function(a){var b=function(){f.zIndex++,a.css("z-index",f.zIndex+1)};return f.zIndex=parseInt(a[0].style.zIndex),a.on("mousedown",b),f.zIndex}},e.record=function(a){var b=[a.outerWidth(),a.outerHeight(),a.position().top,a.position().left+parseFloat(a.css("margin-left"))];a.find(".layui-layer-max").addClass("layui-layer-maxmin"),a.attr({area:b})},e.rescollbar=function(a){h.html.attr("layer-full")==a&&(h.html[0].style.removeProperty?h.html[0].style.removeProperty("overflow"):h.html[0].style.removeAttribute("overflow"),h.html.removeAttr("layer-full"))},a.layer=f,f.getChildFrame=function(a,b){return b=b||c("."+h[4]).attr("times"),c("#"+h[0]+b).find("iframe").contents().find(a)},f.getFrameIndex=function(a){return c("#"+a).parents("."+h[4]).attr("times")},f.iframeAuto=function(a){if(a){var b=f.getChildFrame("html",a).outerHeight(),d=c("#"+h[0]+a),e=d.find(h[1]).outerHeight()||0,g=d.find("."+h[6]).outerHeight()||0;d.css({height:b+e+g}),d.find("iframe").css({height:b})}},f.iframeSrc=function(a,b){c("#"+h[0]+a).find("iframe").attr("src",b)},f.style=function(a,b){var d=c("#"+h[0]+a),f=d.attr("type"),g=d.find(h[1]).outerHeight()||0,i=d.find("."+h[6]).outerHeight()||0;(f===e.type[1]||f===e.type[2])&&(d.css(b),f===e.type[2]&&d.find("iframe").css({height:parseFloat(b.height)-g-i}))},f.min=function(a,b){var d=c("#"+h[0]+a),g=d.find(h[1]).outerHeight()||0;e.record(d),f.style(a,{width:180,height:g,overflow:"hidden"}),d.find(".layui-layer-min").hide(),"page"===d.attr("type")&&d.find(h[4]).hide(),e.rescollbar(a)},f.restore=function(a){var b=c("#"+h[0]+a),d=b.attr("area").split(",");b.attr("type");f.style(a,{width:parseFloat(d[0]),height:parseFloat(d[1]),top:parseFloat(d[2]),left:parseFloat(d[3]),overflow:"visible"}),b.find(".layui-layer-max").removeClass("layui-layer-maxmin"),b.find(".layui-layer-min").show(),"page"===b.attr("type")&&b.find(h[4]).show(),e.rescollbar(a)},f.full=function(a){var b,g=c("#"+h[0]+a);e.record(g),h.html.attr("layer-full")||h.html.css("overflow","hidden").attr("layer-full",a),clearTimeout(b),b=setTimeout(function(){var b="fixed"===g.css("position");f.style(a,{top:b?0:d.scrollTop(),left:b?0:d.scrollLeft(),width:d.width(),height:d.height()}),g.find(".layui-layer-min").hide()},100)},f.title=function(a,b){var d=c("#"+h[0]+(b||f.index)).find(h[1]);d.html(a)},f.close=function(a){var b=c("#"+h[0]+a),d=b.attr("type");if(b[0]){if(d===e.type[1]&&"object"===b.attr("conType")){b.children(":not(."+h[5]+")").remove();for(var g=0;2>g;g++)b.find(".layui-layer-wrap").unwrap().hide()}else{if(d===e.type[2])try{var i=c("#"+h[4]+a)[0];i.contentWindow.document.write(""),i.contentWindow.close(),b.find("."+h[5])[0].removeChild(i)}catch(j){}b[0].innerHTML="",b.remove()}c("#layui-layer-moves, #layui-layer-shade"+a).remove(),f.ie6&&e.reselect(),e.rescollbar(a),c(document).off("keydown",e.enter),"function"==typeof e.end[a]&&e.end[a](),delete e.end[a]}},f.closeAll=function(a){c.each(c("."+h[0]),function(){var b=c(this),d=a?b.attr("type")===a:1;d&&f.close(b.attr("times")),d=null})},e.run=function(){c=jQuery,d=c(a),h.html=c("html"),f.open=function(a){var b=new g(a);return b.index}},"function"==typeof define?define(function(){return e.run(),f}):function(){e.run(),f.use("skin/layer.css")}()}(window);
  1 +/*!
  2 +
  3 + @Name: layer's style
  4 + @Author: 贤心
  5 + @Blog: sentsin.com
  6 +
  7 + */*html{background-image:url(about:blank);background-attachment:fixed}html #layui_layer_skinlayercss{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{top:150px;left:50%;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;box-shadow:1px 1px 50px rgba(0,0,0,.3);border-radius:2px;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.3);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-moves{position:absolute;border:3px solid #666;border:3px solid rgba(0,0,0,.5);cursor:move;background-color:#fff;background-color:rgba(255,255,255,.3);filter:alpha(opacity=50)}.layui-layer-load{background:url(default/loading-0.gif) center center no-repeat #fff}.layui-layer-ico{background:url(default/icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layui-anim{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.03);transform:scale(1.03)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layui-anim-close{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layui-anim-01{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layui-anim-02{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layui-anim-03{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layui-anim-04{-webkit-animation-name:rollIn;animation-name:rollIn}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-anim-05{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layui-anim-06{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:0 -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 10px 12px;pointer-events:auto}.layui-layer-btn a{height:28px;line-height:28px;margin:0 6px;padding:0 15px;border:1px solid #dedede;background-color:#f1f1f1;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.7}.layui-layer-btn .layui-layer-btn0{border-color:#4898d5;background-color:#2e8ded;color:#fff}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;font-size:14px;overflow:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe .layui-layer-content{overflow:hidden}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(default/loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:5px 10px;font-size:12px;_float:left;border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.3);background-color:#F90;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#F90}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:1px;border-bottom-style:solid;border-bottom-color:#F90}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#BBB5B5;border:none}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}
  1 +/*!
  2 +
  3 + @Name: layer拓展样式
  4 + @Date: 2012.12.13
  5 + @Author: 贤心
  6 + @blog: sentsin.com
  7 +
  8 + */.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span{text-overflow:ellipsis;white-space:nowrap}.layui-layer-iconext{background:url(default/icon-ext.png) no-repeat}html #layui_layer_skinlayerextcss{display:none;position:absolute;width:1989px}.layui-layer-prompt .layui-layer-input{display:block;width:220px;height:30px;margin:0 auto;line-height:30px;padding:0 5px;border:1px solid #ccc;box-shadow:1px 1px 5px rgba(0,0,0,.1) inset;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;border-bottom:1px solid #ccc;background-color:#eee;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;cursor:default;overflow:hidden}.layui-layer-tab .layui-layer-title span.layui-layer-tabnow{height:43px;border-left:1px solid #ccc;border-right:1px solid #ccc;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.xubox_tab_layer{display:block}.xubox_tabclose{position:absolute;right:10px;top:5px;cursor:pointer}.layui-layer-photos{-webkit-animation-duration:1s;animation-duration:1s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}
@@ -37,8 +37,8 @@ @@ -37,8 +37,8 @@
37 37
38 <div class="form-group" > 38 <div class="form-group" >
39 <label class="col-sm-2 control-label"> <span style="color:red">*</span>安装软件:</label> 39 <label class="col-sm-2 control-label"> <span style="color:red">*</span>安装软件:</label>
40 - <div class="col-sm-8">  
41 - <input type="checkbox" name="appName" value="JAVA"> JAVA <input type="checkbox" name="appName" value="Redis" > Redis 40 + <div class="col-sm-8" id="appNameContent">
  41 +
42 </div> 42 </div>
43 </div> 43 </div>
44 44
@@ -62,12 +62,20 @@ @@ -62,12 +62,20 @@
62 }); 62 });
63 63
64 $.ajax({ 64 $.ajax({
65 - url : contextPath +"/PushTemplateController/deletePushTemplateById.do", 65 + url : contextPath +"/type/queryNode",
66 type : 'post', 66 type : 'post',
67 async : false, 67 async : false,
68 dataType : "json", 68 dataType : "json",
69 success : function(data) { 69 success : function(data) {
  70 + var contentHtml='';
  71 + $.each(data.data,function(n,value) {
  72 + if(n%6==0){
  73 + contentHtml+='</br>';
  74 + }
  75 + contentHtml+='<input type="checkbox" name="appName" value="'+value.typeName+'">' +value.typeName+'&nbsp;&nbsp;';
70 76
  77 + });
  78 + $("#appNameContent").html(contentHtml);
71 } 79 }
72 }); 80 });
73 81
@@ -2,101 +2,172 @@ @@ -2,101 +2,172 @@
2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <div id="breadcrumb"> 3 <div id="breadcrumb">
4 <a href="#" title="Go to Home" class="tip-bottom"><i 4 <a href="#" title="Go to Home" class="tip-bottom"><i
5 - class="icon-home"></i> Home</a> <a href="#" class="current">Tables</a> 5 + class="icon-home"></i> Home</a> <a href="#" class="current">主机组</a>
6 </div> 6 </div>
7 7
8 <div class="container-fluid"> 8 <div class="container-fluid">
9 -  
10 -  
11 <div class="widget-box"> 9 <div class="widget-box">
12 <div class="widget-title"> 10 <div class="widget-title">
13 -  
14 - <h5>机组信息列表</h5> 11 + <h5>机组操作</h5>
15 </div> 12 </div>
16 <div class="widget-content nopadding"> 13 <div class="widget-content nopadding">
17 <div class="widget-title" style="height: 53px;"> 14 <div class="widget-title" style="height: 53px;">
18 - <div>  
19 - <a href="#" id="open-modal" class="btn btn-primary">新增主机组</a> </div> 15 + <div>
  16 + <div class="form-inline" role="form" id="inBoxQueryDiv"
  17 + style=" margin-top: 12px;margin-left: 25px;float: left;">
  18 + </div>
  19 + <a href="#" id="addHostGroup" class="btn btn-primary" style="margin-top: 12px;margin-left: 0px;" onclick="editHostGroup(0,0)">新增主机组</a></div>
  20 + </div>
20 </div> 21 </div>
21 <div id="hostGroupTable"> 22 <div id="hostGroupTable">
22 23
23 </div> 24 </div>
24 - <div id="myModal" class="modal hide">  
25 - <div class="modal-header">  
26 - <button data-dismiss="modal" class="close" type="button">×</button>  
27 - <h3>Modal header</h3>  
28 - </div>  
29 - <div class="modal-body">  
30 - <label class="control-label">机组ID</label>  
31 - <div class="controls">  
32 - <input type="text" name="editGroupId"/>  
33 - </div>  
34 - <label class="control-label">机组名称</label>  
35 - <div class="controls">  
36 - <input type="text" name="editGroupName"/> 25 + </div>
  26 + </div>
  27 +
  28 +</div>
  29 +
  30 +<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  31 + <div class="modal-dialog">
  32 + <div class="modal-content">
  33 + <div class="modal-header">
  34 + <button type="button" class="close" data-dismiss="modal"
  35 + aria-hidden="true">&times;</button>
  36 + <h4 class="modal-title" id="myModalLabel"></h4>
  37 + </div>
  38 + <div class="modal-body">
  39 + <form class="form-horizontal">
  40 + <input type="hidden" name="editGroupId"/>
  41 + <div class="control-group">
  42 + <label class="control-label" style="float: left;">机组名称 : </label>
  43 +
  44 + <div class="controls">
  45 + <input type="text" name="editGroupName"/>
  46 + </div>
37 </div> 47 </div>
38 - </div>  
39 - <div class="modal-footer">  
40 - <button type="button" class="btn btn-default" data-dismiss="modal">关闭  
41 - </button>  
42 - <button type="button" id="submitBtn" class="btn btn-primary">提交</button>  
43 - </div> 48 + </form>
  49 + </div>
  50 + <div class="modal-footer">
  51 + <button type="button" class="btn btn-danger" data-dismiss="modal">关闭
  52 + </button>
  53 + <button type="button" class="btn btn-success" value="Validate" onclick="saveHostGroup()">提交</button>
44 </div> 54 </div>
45 </div> 55 </div>
  56 + <!-- /.modal-content -->
46 </div> 57 </div>
  58 + <!-- /.modal -->
47 </div> 59 </div>
  60 +
  61 +
48 <script> 62 <script>
49 $(function () { 63 $(function () {
50 -  
51 //加载表格 64 //加载表格
52 $("#hostGroupTable").table({ 65 $("#hostGroupTable").table({
53 - columnAutoWidth : false,  
54 - url : contextPath+"hostGroup/getHostGroups",  
55 - striped : true,  
56 - title : "主机信息列表",  
57 - pagination : true,  
58 - pageSize : 10,  
59 - loadFilter : function(data) { 66 + columnAutoWidth: false,
  67 + url: contextPath + "hostGroup/getHostGroups",
  68 + striped: true,
  69 + title: "主机信息列表",
  70 + pagination: true,
  71 + pageSize: 10,
  72 + loadFilter: function (data) {
60 return defaultLoadFilter(data); 73 return defaultLoadFilter(data);
61 }, 74 },
62 - columns : [{  
63 - title : "ID",  
64 - field : "id",  
65 - width : "5%" 75 + columns: [{
  76 + title: "ID",
  77 + field: "id",
  78 + width: "10%"
66 }, { 79 }, {
67 - title : "机组名",  
68 - field : "groupName",  
69 - width : "8%" 80 + title: "机组名",
  81 + field: "groupName",
  82 + width: "20%"
70 }, { 83 }, {
71 - title : "createTime",  
72 - field : "createTime",  
73 - width : "10%" 84 + title: "createTime",
  85 + field: "createTime",
  86 + width: "20%"
74 }, { 87 }, {
75 - title : "updateTime",  
76 - field : "updateTime",  
77 - width : "5%" 88 + title: "updateTime",
  89 + field: "updateTime",
  90 + width: "20%"
78 91
79 - },{  
80 - title : "操作",  
81 - formatter : function(rowData) { 92 + }, {
  93 + title: "操作",
  94 + formatter: function (value, rowData, rowIndex) {
82 var div = $("<div>"); 95 var div = $("<div>");
83 - var editBtn = $("<button onclick='editHostGroup(rowData.id,rowData.groupName)'>").addClass("btn btn-xs btn-success").html("修改").appendTo(div); 96 + $("<button onclick=\"editHostGroup(\'" + rowData.id + "\',\'" + rowData.groupName + "\')\">").addClass("btn btn-xs btn-success").html("修改").appendTo(div);
84 div.append("&nbsp;"); 97 div.append("&nbsp;");
85 - var delBtn = $("<button onclick='deleteHostGroup(rowData.id)'>").addClass("btn btn-xs btn-danger").html("删除")  
86 - .appendTo(div);  
87 - delBtn.click(function() {  
88 -  
89 - }); 98 + $("<button onclick=\"deleteHostGroup(\'" + rowData.id + "\')\">").addClass("btn btn-xs btn-danger").html("删除").appendTo(div);
90 return div; 99 return div;
91 } 100 }
92 - } ] 101 + }]
93 }); 102 });
94 -  
95 }); 103 });
96 104
97 //打开新增或修改页面 105 //打开新增或修改页面
98 - function editHostGroup(id,groupName) { 106 + function editHostGroup(id, groupName) {
  107 + if (id == 0) {//新增页面
  108 + $("input[name='editGroupId']").val(0);
  109 + $("input[name='editGroupName']").val();
  110 + $("#myModalLabel").text("新增机组信息");
  111 + } else {
  112 + $("#myModalLabel").text("修改机组信息");
  113 + $("input[name='editGroupId']").val(id);
  114 + $("input[name='editGroupName']").val(groupName);
  115 + }
  116 + $("#myModal").modal('show');
  117 + }
99 118
  119 + //打开新增或修改页面
  120 + function saveHostGroup() {
  121 + var id = $("input[name='editGroupId']").val();
  122 + var groupName = $("input[name='editGroupName']").val();
  123 + if (groupName == null || groupName == "") {
  124 + layer.alert("机组名称不能为空", {icon: 2});
  125 + return;
  126 + }
  127 + var param = {
  128 + id: id,
  129 + groupName: groupName
  130 + }
  131 + $.ajax({
  132 + type: 'post',
  133 + url: contextPath + "hostGroup/saveHostGroup",
  134 + data: param,
  135 + dataType: 'json',
  136 + success: function (data) {
  137 + $("#myModal").modal('hide');
  138 + $("#hostGroupTable").table("load");
  139 + },
  140 + error: function (data) {
  141 + layer.msg("系统异常", {icon: 2});
  142 + }
  143 + });
  144 + }
  145 +
  146 + //打开新增或修改页面
  147 + function deleteHostGroup(id) {
  148 + layer.confirm('确认删除?', {
  149 + btn: ['确认', '取消'] //按钮
  150 + }, function () {
  151 + var param = {
  152 + id: id
  153 + }
  154 + $.ajax({
  155 + type: 'post',
  156 + url: contextPath + "hostGroup/deleteHostGroup",
  157 + data: param,
  158 + dataType: 'json',
  159 + success: function (data) {
  160 + layer.closeAll('dialog');
  161 + $("#hostGroupTable").table("load");
  162 + },
  163 + error: function (data) {
  164 + layer.msg("系统异常", {icon: 2});
  165 + }
  166 + });
  167 + }, function () {
  168 + });
100 } 169 }
  170 +
  171 +
101 </script> 172 </script>
102   173  
@@ -21,8 +21,10 @@ @@ -21,8 +21,10 @@
21 <div class="widget-title"> 21 <div class="widget-title">
22 <h5>Tree Title</h5> 22 <h5>Tree Title</h5>
23 </div> 23 </div>
24 - <div id="jstree" class="jstree jstree-default" role="tree" aria-multiselectable="true"  
25 - tabindex="0" style="height: 400px;color: black"></div> 24 + <div class="tree_container" style="height: 560px;color: black;overflow:auto">
  25 + <div id="jstree" class="jstree jstree-default" role="tree" aria-multiselectable="true"
  26 + tabindex="0"></div>
  27 + </div>
26 </div> 28 </div>
27 <!-- 列表 --> 29 <!-- 列表 -->
28 <div class="widget-content nopadding" style="margin-left: 300px;"> 30 <div class="widget-content nopadding" style="margin-left: 300px;">
@@ -101,7 +103,6 @@ @@ -101,7 +103,6 @@
101 <script type="text/javascript" src="<%=basePath %>/script/yoho.type.tree.js"></script> 103 <script type="text/javascript" src="<%=basePath %>/script/yoho.type.tree.js"></script>
102 104
103 105
104 -  
105 <div class="modal fade" id="myModal" tabindex="-1" role="dialog" 106 <div class="modal fade" id="myModal" tabindex="-1" role="dialog"
106 aria-labelledby="myModalLabel" aria-hidden="true"> 107 aria-labelledby="myModalLabel" aria-hidden="true">
107 <div class="modal-dialog" style="width: 300px"> 108 <div class="modal-dialog" style="width: 300px">
@@ -26,7 +26,6 @@ var getPath = function (nodeid) { @@ -26,7 +26,6 @@ var getPath = function (nodeid) {
26 for (var i = 0; i < num; i++) { 26 for (var i = 0; i < num; i++) {
27 strPath += paths.pop() + "/"; 27 strPath += paths.pop() + "/";
28 } 28 }
29 -  
30 return strPath; 29 return strPath;
31 } 30 }
32 31
@@ -53,6 +52,8 @@ var addType = function (node) { @@ -53,6 +52,8 @@ var addType = function (node) {
53 $('#modal_type_del').hide(); 52 $('#modal_type_del').hide();
54 $('#modal_type_add').show(); 53 $('#modal_type_add').show();
55 $('#myModalLabel').html("添加类型"); 54 $('#myModalLabel').html("添加类型");
  55 + $('#cb_new_type_isleaf').prop("checked",true);// 默认为子节点
  56 + $('#tx_new_type_name').val("");
56 $('#tx_type_id').val(nodeId2id(node.id)); 57 $('#tx_type_id').val(nodeId2id(node.id));
57 $('#tx_type_action').val("add"); 58 $('#tx_type_action').val("add");
58 $('#tx_new_type_isleaf').val(1); 59 $('#tx_new_type_isleaf').val(1);
@@ -79,6 +80,7 @@ var updateType = function (id, oldName) { @@ -79,6 +80,7 @@ var updateType = function (id, oldName) {
79 $('#tx_type_action').val("update"); 80 $('#tx_type_action').val("update");
80 $('#tx_type_id').val(nodeId2id(id)); 81 $('#tx_type_id').val(nodeId2id(id));
81 $('#tx_update_type_name_old').val(oldName); 82 $('#tx_update_type_name_old').val(oldName);
  83 + $('#tx_update_type_name_new').val();
82 $('#modal_type_update').show(); 84 $('#modal_type_update').show();
83 $('#modal_type_add').hide(); 85 $('#modal_type_add').hide();
84 $('#modal_type_del').hide(); 86 $('#modal_type_del').hide();
@@ -110,6 +112,10 @@ var addMObjType = function (nodeid, name) { @@ -110,6 +112,10 @@ var addMObjType = function (nodeid, name) {
110 var doAddType = function () { 112 var doAddType = function () {
111 var pid = $('#tx_type_id').val(); 113 var pid = $('#tx_type_id').val();
112 var name = $('#tx_new_type_name').val(); 114 var name = $('#tx_new_type_name').val();
  115 + if(name==null||$('#tx_new_type_name').val()=="") {
  116 + $.toaster('输入类型名' + repjson.code, '提示', 'warning');
  117 + return;
  118 + }
113 var isleaf = $('#cb_new_type_isleaf').prop("checked") == true ? 1 : 0; 119 var isleaf = $('#cb_new_type_isleaf').prop("checked") == true ? 1 : 0;
114 $.get("type/add", {"pid": pid, "name": name, "isleaf": isleaf}, 120 $.get("type/add", {"pid": pid, "name": name, "isleaf": isleaf},
115 function (data, state) { 121 function (data, state) {
@@ -124,14 +130,15 @@ var doAddType = function () { @@ -124,14 +130,15 @@ var doAddType = function () {
124 'text': newNode.typeName, 130 'text': newNode.typeName,
125 'parent': "#node_" + newNode.typeParentId, 131 'parent': "#node_" + newNode.typeParentId,
126 'data':newNode.typeIsLeaf 132 'data':newNode.typeIsLeaf
127 - }  
128 - , 'last'); 133 + }, 'last');
  134 + $('#jstree').jstree().get_node("node_" + newNode.typeId).data=newNode.typeIsLeaf;
129 } else 135 } else
130 $.toaster('添加失败' + repjson.code, '提示', 'warning'); 136 $.toaster('添加失败' + repjson.code, '提示', 'warning');
131 } 137 }
132 ).fail(function () { 138 ).fail(function () {
133 $.toaster('添加失败:', '提示', 'warning'); 139 $.toaster('添加失败:', '提示', 'warning');
134 }); 140 });
  141 + $('#myModal').dialog('hide');
135 } 142 }
136 var doUpdateType = function () { 143 var doUpdateType = function () {
137 var id = $('#tx_type_id').val(); 144 var id = $('#tx_type_id').val();
@@ -139,25 +146,34 @@ var doUpdateType = function () { @@ -139,25 +146,34 @@ var doUpdateType = function () {
139 console.log("update " + id + " name " + name); 146 console.log("update " + id + " name " + name);
140 $.get("type/update", {"id": id, "name": name}, 147 $.get("type/update", {"id": id, "name": name},
141 function (data, state) { 148 function (data, state) {
142 - $.toaster('更新成功', '更新', 'info');  
143 - $("#jstree").jstree('set_text', '#node_' + id, name); 149 + var repjson = JSON.parse(data);
  150 + if (state == "success" && repjson.code == 200) {
  151 + $.toaster('更新成功', '更新', 'info');
  152 + $("#jstree").jstree('set_text', '#node_' + id, name);
  153 + } else
  154 + $.toaster('更新失败:', '提示', 'warning');
144 } 155 }
145 ).fail(function () { 156 ).fail(function () {
146 $.toaster('更新失败:', '提示', 'warning'); 157 $.toaster('更新失败:', '提示', 'warning');
147 }); 158 });
148 - ; 159 + $('#myModal').dialog('hide');
149 } 160 }
150 var doDelType = function () { 161 var doDelType = function () {
151 var id = $('#tx_type_id').val(); 162 var id = $('#tx_type_id').val();
152 console.log("delete " + id); 163 console.log("delete " + id);
153 $.get("type/del", {"id": id}, 164 $.get("type/del", {"id": id},
154 function (data, state) { 165 function (data, state) {
155 - $('#jstree').jstree("delete_node", $("#" + id)); 166 + var repjson = JSON.parse(data);
  167 + if (state == "success" && repjson.code == 200) {
  168 + $.toaster('删除成功', '删除', 'info');
  169 + $('#jstree').jstree("delete_node", $("#node_" + id));
  170 + } else
  171 + $.toaster('删除失败:', '提示', 'warning');
156 } 172 }
157 ).fail(function () { 173 ).fail(function () {
158 $.toaster('删除失败:', '提示', 'warning'); 174 $.toaster('删除失败:', '提示', 'warning');
159 }); 175 });
160 - ; 176 + $('#myModal').dialog('hide');
161 } 177 }
162 178
163 179
@@ -202,7 +218,7 @@ $("#btn4type").click(function () { @@ -202,7 +218,7 @@ $("#btn4type").click(function () {
202 } else if ($("#tx_type_action").val() == "del") { 218 } else if ($("#tx_type_action").val() == "del") {
203 doDelType(); 219 doDelType();
204 } 220 }
205 - $('#myModal').dialog('hide'); 221 +
206 }); 222 });
207 223
208 224
@@ -246,7 +262,8 @@ $(function () { @@ -246,7 +262,8 @@ $(function () {
246 "action": function (obj) { 262 "action": function (obj) {
247 var inst = jQuery.jstree.reference(obj.reference); 263 var inst = jQuery.jstree.reference(obj.reference);
248 var clickedNode = inst.get_node(obj.reference); 264 var clickedNode = inst.get_node(obj.reference);
249 - console.log("add operation--clickedNode's id is:" + clickedNode.id + " " + clickedNode); 265 + console.log(clickedNode);
  266 + console.log("add operation--clickedNode's id is:" + clickedNode.id);
250 if (clickedNode.data != 0) { 267 if (clickedNode.data != 0) {
251 $.toaster('叶子节点无法添加子类型', '提示', 'info'); 268 $.toaster('叶子节点无法添加子类型', '提示', 'info');
252 return; 269 return;