2 lines
2.8 KiB
JavaScript
2 lines
2.8 KiB
JavaScript
layui.define("layer",function(w){var s=layui.$,p=layui.layer,g=function(n){this.c={elem:"",data:"",url:"",placeholder:"请选择:",disabledTips:"",success:function(){}},this.c=s.extend(this.c,n),this.getData=function(e){var a;return s.ajax({url:e,type:"get",dataType:"json",async:!1,success:function(l){a=l.data||p.msg("数据接口错误,请正确配置")},error:function(){p.msg("数据接口错误,请正确配置"),a=""}}),a},this.getChild=function(e,a){for(var l=[],t=0;t<e.length;t++)e[t].pid==a&&l.push(e[t]);return l},this.createChild=function(e){for(var a=this,l="<ul>",t=0;t<e.length;t++){var i=a.getChild(a.data,e[t].id);i=i.length!=0?"child-row":"";var r=e[t].off?"layui-disabled":"";l+='<li class ="'+i+" "+r+'" data-id="'+e[t].id+'">'+e[t].name+"</li>"}return l+="</ul>",l},this.setValue=function(e){for(var a=this,l=a.data,t=[],i=0;i<l.length;i++)for(var r=0;r<e.length;r++)e[r]==l[i].name&&t.push(l[i].id);return t},this.showPopup=function(e,a){var l=this,t=l.getChild(e,a);if(t.length!=0){var i=l.createChild(t);s(l.c.elem).parent().find(".pop").append(i)}},this.scroll=function(){for(var e=this,a=e.c,l=a.elem,t=s(l).parent().find(".pop ul"),i=0;i<t.length;i++){var r=t.eq(i).children("li.active");if(r[0]){var c=r.position().top,d=t.eq(i).height(),o=r.height();c>d&&t.eq(i).scrollTop(c+t.eq(i).scrollTop()-d+o+3),c<0&&t.eq(i).scrollTop(c+t.eq(i).scrollTop()-5)}}},this.data=this.c.url?this.getData(this.c.url):this.c.data};g.prototype.render=function(){var n=this,e=n.c,a=e.elem,l='<div class="selectY-box"></div>',t='<span class="show"><span class="cl-exp">'+e.placeholder+"</span></span>",i='<div class="pop"></div>';if(s(a).wrap(l),s(a).after(t+i),n.showPopup(n.data,0),s(a).val()!=""){var r=s(a).val().split("/"),c=r.join("<i>/</i>");s(a).parent().find(".show").html(c);for(var d=this.setValue(r),o=0;o<d.length;o++){n.showPopup(n.data,d[o]);var C=s(a).parent().find(".pop ul");C.eq(o).find("li[data-id="+d[o]+"]").addClass("active")}}s(a).parent().find(".pop").on("click","ul li",function(f){if(s(this).hasClass("layui-disabled"))return p.msg(e.disabledTips),!1;s(this).addClass("active").siblings().removeClass("active"),s(this).parent().nextAll("ul").remove();var q=s(this).data("id");if(n.showPopup(n.data,q),!s(this).hasClass("child-row")){s(a).parent().find(".pop").hide();for(var u=s(a).parent().find(".pop li.active"),v=[],y=[],h=0;h<u.length;h++)v.push(u.eq(h).html()),y.push(u.eq(h).data("id"));var m=v.join("/"),T=v.join("<i>/</i>");if(s(a).val(m),s(a).parent().find(".show").html(T),typeof e.success=="function"){var b={data:m,ids:y};e.success(b)}}layui.stope(f)}),s(a).parent().find(".show").on("click",function(f){s(a).parent().find(".pop").show(),n.scroll(),layui.stope(f)}),s(document).on("click",function(){s(a).parent().find(".pop").hide()})},w("selectY",function(n){var e=new g(n);e.render()})}).link(layui.cache.base+"selectY/selectY.css?v="+new Date().getTime());
|