From 4af994d21897c5bbca08bb293f572e7226cea3f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?= <3277200+sentsim@users.noreply.github.com> Date: Thu, 18 Jan 2024 14:07:00 +0800 Subject: [PATCH] release: v2.9.4 --- dist/css/layui.css | 2 +- dist/css/layui.css.map | 2 +- dist/layui.js | 2 +- dist/layui.js.map | 2 +- package.json | 2 +- src/layui.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/css/layui.css b/dist/css/layui.css index 3cb3a4dc..e26fbd3e 100644 --- a/dist/css/layui.css +++ b/dist/css/layui.css @@ -1,2 +1,2 @@ -blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none;border-bottom:1px solid #eee;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}hr.layui-border-black,hr.layui-border-blue,hr.layui-border-cyan,hr.layui-border-green,hr.layui-border-orange,hr.layui-border-purple,hr.layui-border-red{border-width:0 0 1px}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input.layui-form-danger:focus+.layui-input-split{border-color:#ff5722}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-wrap .layui-input-suffix.layui-input-split{border-width:0;border-left-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-input-wrap .layui-input[type=number].layui-input-number-out-of-range{color:#ff5722}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}.layui-table-main>.layui-table>tbody>tr:last-child>td>.layui-table-cell-c{bottom:0}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:0 0 1px;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform:rotate(180deg)}.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform:rotate(-180deg)}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;background:0 0;background-color:rgba(0,0,0,.3);box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child,.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left:11px;background:0 0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover,.layui-rate-hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark,.layui-code-theme-dark>.layui-code-header{border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f}.layui-code-theme-dark{border-width:1px;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-full .layui-code-item-preview{overflow:auto}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{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{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-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)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-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 layer-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}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-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)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-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 layer-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}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-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 layer-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)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-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 layer-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)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.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-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;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 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:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.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:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;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:#000}.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:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.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;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s} +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none;border-bottom:1px solid #eee;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}hr.layui-border-black,hr.layui-border-blue,hr.layui-border-cyan,hr.layui-border-green,hr.layui-border-orange,hr.layui-border-purple,hr.layui-border-red{border-width:0 0 1px}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input.layui-form-danger:focus+.layui-input-split{border-color:#ff5722}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-wrap .layui-input-suffix.layui-input-split{border-width:0;border-left-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-input-wrap .layui-input[type=number].layui-input-number-out-of-range{color:#ff5722}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}.layui-table-main>.layui-table>tbody>tr:last-child>td>.layui-table-cell-c{bottom:0}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:0 0 1px;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform:rotate(180deg)}.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform:rotate(-180deg)}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;background:0 0;background-color:rgba(0,0,0,.3);box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child,.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left:11px;background:0 0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover,.layui-rate-hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark,.layui-code-theme-dark>.layui-code-header{border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f}.layui-code-theme-dark{border-width:1px;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-full .layui-code-item-preview{overflow:auto}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{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{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-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)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-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 layer-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}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-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)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-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 layer-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}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-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 layer-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)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-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 layer-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)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.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-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;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 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:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.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:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;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:#000}.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:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.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;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s} /*# sourceMappingURL=layui.css.map */ diff --git a/dist/css/layui.css.map b/dist/css/layui.css.map index 93d0a177..208ef827 100644 --- a/dist/css/layui.css.map +++ b/dist/css/layui.css.map @@ -1 +1 @@ -{"version":3,"sources":["layui.css","modules/code.css","modules/laydate.css","modules/layer.css"],"names":[],"mappings":"AAQqE,WAArE,KAAmD,OAApC,GAAV,IAAI,GAAG,GAA0E,KAA3D,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAArB,GAAH,GAA8C,EAAwB,IAAR,GAAzB,SAAsB,GAA9D,GAA6E,OAAQ,EAAG,QAAS,EAAG,4BAA4B,cAClJ,SAAS,QAAQ,QAAQ,EACzB,IAAI,QAAS,aAAc,OAAQ,KAAM,eAAgB,OACzD,GAAG,WAAW,KACd,MAAM,gBAAiB,SAAU,eAAgB,EACjD,GAAG,GAAG,GAAG,GAAG,YAAa,IACzB,GAAG,GAAG,YAAa,IAAK,UAAW,KACnC,OAAO,MAAM,OAAO,SAAS,UAAW,KAClC,OAAN,MAA6B,SAAS,OAAhB,OAAT,SAAgC,YAAa,QAAS,UAAW,QAAS,WAAY,QAAS,YAAa,QAAS,QAAS,EAC3I,IAAI,YAAa,SAAU,YAAa,cAAe,YAAa,UAAW,YAAa,YAAa,UAAW,WAGpH,KAAK,YAAa,IAAK,MAAO,KAAM,MAAO,gBAAiB,KAAM,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WACzH,GAAG,OAAQ,EAAG,YAAa,EAAG,OAAQ,KAAK,EAAG,QAAS,EAAG,OAAQ,KAAM,cAAe,IAAI,MAAM,KAAM,MAAO,KAAM,SAAU,OAAQ,WAAY,IAClJ,EAAE,MAAO,KAAM,gBAAgB,KAC/B,QAAQ,MAAO,KACf,OAAO,WAAY,OAAQ,QAAQ,QAGnC,kBAAmB,oBAAoB,WAAY,WAC/B,WAAY,aAAa,WAAY,YACzD,aAAa,MAAO,KAAM,MAAO,EACjC,mBAAmB,QAAQ,MAAO,MAAM,KAAM,MAAM,EAAG,QAAQ,MAAO,OAAO,EAC7E,mBAAmB,aAAc,KACjC,cAAc,SAAU,SAAU,QAAS,aAAc,SAAS,OAAQ,MAAM,EAAG,eAAgB,OAC1F,YAAY,SAAU,SAAU,QAAS,aAAc,eAAgB,OAAQ,MAAO,EAAG,OAAQ,EAAG,aAAc,IAAK,aAAc,OAAQ,aAAc,YAAa,SAAU,OAC3L,gBAAgB,IAAK,KAAM,oBAAqB,KAAM,oBAAqB,MAC3E,kBAAkB,kBAAmB,KAAM,kBAAmB,MAC9D,mBAAmB,IAAK,IAAK,iBAAkB,KAAM,iBAAkB,MACvE,iBAAiB,mBAAoB,KAAM,mBAAoB,MACnD,YAAY,cAAe,SAAU,SAAU,OAAQ,YAAa,OACzC,gBAAb,YAAhB,gBAA6C,iBAAkB,KAAM,oBAAqB,KAAM,gBAAiB,KACnH,gBAAgB,sBAAsB,MAAO,kBAAoB,OAAQ,sBACxE,cAAc,cAAe,KACtC,YAAY,QAAS,gBACrB,YAAY,QAAS,eACrB,cAAc,WAAY,kBAC1B,cAAc,WAAY,iBAG1B,WACE,YAAa,WACb,IAAK,gCACL,IAAK,sCAAwC,2BAA2B,CACnE,kCAAoC,eAAe,CACnD,iCAAmC,cAAc,CACjD,gCAAkC,kBAAkB,CACpD,2CAA6C,cAGpD,YACE,YAAY,qBACZ,UAAW,KACX,WAAY,OACZ,uBAAwB,YACxB,wBAAyB,UAI3B,wBAAwB,QAAS,QACjC,0BAA0B,QAAS,QACnC,+BAA+B,QAAS,QACxC,yBAAyB,QAAS,QAClC,0BAA0B,QAAQ,QAClC,4BAA4B,QAAQ,QACpC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,2BAA2B,QAAQ,QACnC,4BAA4B,QAAQ,QACpC,wBAAwB,QAAQ,QAChC,uBAAuB,QAAQ,QAC/B,iCAAiC,QAAQ,QACzC,6BAA6B,QAAQ,QACrC,6BAA6B,QAAQ,QACrC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,8BAA8B,QAAQ,QACtC,yBAAyB,QAAQ,QACjC,yBAAyB,QAAQ,QACjC,wBAAwB,QAAQ,QAChC,sBAAsB,QAAQ,QAC9B,2BAA2B,QAAQ,QACnC,sBAAsB,QAAQ,QAC9B,6BAA6B,QAAQ,QACrC,0BAA0B,QAAQ,QAClC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,uBAAuB,QAAQ,QAC/B,2BAA2B,QAAQ,QACnC,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,2BAA2B,QAAQ,QACnC,uBAAuB,QAAQ,QAC/B,0BAA0B,QAAQ,QAClC,wBAAwB,QAAQ,QAChC,uBAAuB,QAAQ,QAC/B,yBAAyB,QAAQ,QACjC,iCAAiC,QAAQ,QACzC,4BAA4B,QAAQ,QACpC,2BAA2B,QAAQ,QACnC,4BAA4B,QAAQ,QACpC,+BAA+B,QAAQ,QACvC,0BAA0B,QAAQ,QAClC,yBAAyB,QAAQ,QACjC,0BAA0B,QAAQ,QAClC,wBAAwB,QAAQ,QAChC,+BAA+B,QAAQ,QACvC,kCAAkC,QAAQ,QAC1C,6BAA6B,QAAQ,QACrC,8BAA8B,QAAQ,QACtC,wBAAwB,QAAQ,QAChC,6BAA6B,QAAQ,QACrC,2BAA2B,QAAQ,QACnC,+BAA+B,QAAQ,QACvC,4BAA4B,QAAQ,QACpC,gCAAgC,QAAQ,QACxC,4BAA4B,QAAQ,QACpC,4BAA4B,QAAQ,QACpC,6BAA6B,QAAQ,QACrC,uBAAuB,QAAQ,QAC/B,gCAAgC,QAAQ,QACxC,+BAA+B,QAAQ,QACvC,6BAA6B,QAAQ,QACrC,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,6BAA6B,QAAQ,QACrC,2BAA2B,QAAQ,QACnC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,0BAA0B,QAAQ,QAClC,2BAA2B,QAAQ,QACnC,2BAA2B,QAAQ,QACnC,kCAAkC,QAAQ,QAC1C,uBAAuB,QAAQ,QAC/B,4BAA4B,QAAQ,QACpC,uBAAuB,QAAQ,QAC/B,8BAA8B,QAAQ,QACtC,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,0BAA0B,QAAQ,QAClC,uBAAuB,QAAQ,QAC/B,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,+BAA+B,QAAQ,QACvC,4BAA4B,QAAQ,QACpC,8BAA8B,QAAQ,QACtC,0BAA0B,QAAQ,QAClC,wBAAwB,QAAQ,QAChC,4BAA4B,QAAQ,QACpC,0BAA0B,QAAQ,QAClC,2BAA2B,QAAQ,QACnC,0BAA0B,QAAQ,QAClC,+BAA+B,QAAQ,QACvC,wBAAwB,QAAQ,QAChC,iCAAiC,QAAQ,QACzC,wBAAwB,QAAQ,QAChC,6BAA6B,QAAQ,QACrC,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,+BAA+B,QAAQ,QACvC,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,6BAA6B,QAAQ,QACrC,6BAA6B,QAAQ,QACrC,2BAA2B,QAAQ,QACnC,6BAA6B,QAAQ,QACrC,yBAAyB,QAAQ,QACjC,yBAAyB,QAAQ,QACjC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,2BAA2B,QAAQ,QACnC,yBAAyB,QAAQ,QACjC,2BAA2B,QAAQ,QACnC,6BAA6B,QAAQ,QACrC,8BAA8B,QAAQ,QACtC,8BAA8B,QAAQ,QACtC,gCAAgC,QAAQ,QACxC,0BAA0B,QAAQ,QAClC,2BAA2B,QAAQ,QACnC,wBAAwB,QAAQ,QAChC,gCAAgC,QAAQ,QACxC,gCAAgC,QAAQ,QACxC,+BAA+B,QAAQ,QACvC,8BAA8B,QAAQ,QACtC,2BAA2B,QAAQ,QACnC,2BAA2B,QAAQ,QACnC,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,yBAAyB,QAAQ,QACjC,yBAAyB,QAAQ,QACjC,wBAAwB,QAAQ,QAChC,0BAA0B,QAAQ,QAClC,0BAA0B,QAAQ,QAClC,gCAAgC,QAAQ,QACxC,yBAAyB,QAAQ,QACjC,yBAAyB,QAAQ,QACjC,wBAAwB,QAAQ,QAChC,iCAAiC,QAAQ,QACzC,+BAA+B,QAAQ,QACvC,wBAAwB,QAAQ,QAChC,2BAA2B,QAAQ,QACnC,+BAA+B,QAAQ,QACvC,4BAA4B,QAAQ,QACpC,+BAA+B,QAAQ,QACvC,yBAAyB,QAAQ,QACjC,wBAAwB,QAAQ,QAChC,yBAAyB,QAAQ,QACjC,+BAA+B,QAAQ,QACvC,4BAA4B,QAAQ,QACpC,kCAAkC,QAAQ,QAC1C,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,8BAA8B,QAAQ,QACtC,8BAA8B,QAAQ,QACtC,0BAA0B,QAAQ,QAClC,8BAA8B,QAAQ,QACtC,kCAAkC,QAAQ,QAC1C,oCAAoC,QAAQ,QAC5C,uBAAuB,QAAQ,QAC/B,yBAAyB,QAAQ,QACjC,+BAA+B,QAAQ,QACvC,wBAAwB,QAAQ,QAChC,sBAAsB,QAAQ,QAC9B,8BAA8B,QAAQ,QACtC,4BAA4B,QAAQ,QACpC,0BAA0B,QAAQ,QAClC,2BAA2B,QAAQ,QACnC,yBAAyB,QAAQ,QACjC,8BAA8B,QAAQ,QACtC,6BAA6B,QAAQ,QACrC,mCAAmC,QAAQ,QAC3C,gCAAgC,QAAQ,QACxC,uBAAuB,QAAQ,QAC/B,wBAAwB,QAAQ,QAChC,2BAA2B,QAAQ,QACnC,mCAAmC,QAAQ,QAC3C,sBAAsB,QAAQ,QAC9B,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,uBAAuB,QAAQ,QAC/B,yBAAyB,QAAQ,QACjC,wBAAwB,QAAQ,QAChC,wBAAwB,QAAQ,QAChC,mCAAmC,QAAQ,QAC3C,yBAAyB,QAAQ,QACjC,8BAA8B,QAAQ,QACtC,6BAA6B,QAAQ,QAIrC,YAAY,SAAU,SAAU,MAAO,OAAQ,OAAQ,EAAE,KACzD,cAAc,SAAU,SAAU,QAAS,KAAM,OAAQ,KACzD,sBAAsB,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACnE,YAAY,SAAU,MAAO,KAAM,EAAG,IAAK,EAAG,OAAQ,EAAG,QAAS,IAAK,MAAO,MAAO,WAAY,OACjG,mBAAmB,SAAU,SAAU,MAAO,MAAO,OAAQ,KAAM,WAAY,OAC/E,YAAY,SAAU,SAAU,KAAM,MAAO,MAAO,EAAG,IAAK,EAAG,OAAQ,EAAG,QAAS,IAAK,MAAO,KAAM,WAAY,WAGjH,mBAAmB,WAAY,OAC/B,kCAAkC,SAAU,MAAO,IAAK,EAAG,KAAM,EAAG,MAAO,EAAG,iBAAkB,QAChG,gCAAgC,IAAK,KAAM,MAAO,MAAO,WAAY,OACrE,gCAAgC,SAAU,SAAU,IAAK,KAAM,eAAgB,KAC/E,gCAAgC,MAAO,KAAM,OAAQ,EAAE,KACvD,kCAAkC,SAAU,MAAO,KAAM,MAAO,MAAO,EAAG,OAAQ,EAAG,QAAS,IAAK,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAM,WAAY,KAAK,EAAE,IAAI,iBAAkB,iBAAkB,QAChN,gCAAgC,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,MAAO,OAAQ,KAAM,YAAa,KAAM,WAAY,OAAQ,MAAO,QAAS,UAAW,KAAM,WAAY,EAAE,IAAI,IAAI,EAAE,iBACjM,6CAA6C,WAAY,IACzD,mBAAmB,SAAU,mBAAqB,KAAM,MAAO,IAAK,EACpE,oBAAoB,SAAU,mBAAqB,MAAO,EAAG,IAAK,EAIlE,iBAAiB,SAAU,SAAU,OAAQ,EAAE,KAAM,WAAY,WACjE,aAAa,SAAU,SAAU,OAAQ,EAAE,KAAM,QAAS,EAAE,KAEzC,iBAAnB,kBAAoC,QAAS,GAAI,QAAS,MAAO,MAAO,KAIvE,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eADhI,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eADhI,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAGhI,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAJjI,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAK/H,SAAU,SAAU,QAAS,MAAO,WAAY,WAEjD,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAkE,MAAO,KACzM,eAAe,MAAO,YACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,KAEvB,sBAAsB,YAAa,YACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,KAGpC,uCACE,iBAAiB,QAAS,EAAE,KAC5B,eAAe,QAAS,eACxB,qBAAqB,QAAS,gBAC9B,sBAAsB,QAAS,iBAC/B,4BAA4B,QAAS,wBAIvC,oCACE,iBAAiB,MAAO,MACxB,eAAe,QAAS,eACxB,qBAAqB,QAAS,gBAC9B,sBAAsB,QAAS,iBAC/B,4BAA4B,QAAS,uBAErC,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAkE,MAAO,KACzM,eAAe,MAAO,YACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,KAEvB,sBAAsB,YAAa,YACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,MAGtC,oCACE,iBAAiB,MAAO,MACxB,eAAe,QAAS,eACxB,qBAAqB,QAAS,gBAC9B,sBAAsB,QAAS,iBAC/B,4BAA4B,QAAS,uBAErC,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAkE,MAAO,KACzM,eAAe,MAAO,YACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,KAEvB,sBAAsB,YAAa,YACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,MAGtC,qCACE,iBAAiB,MAAO,OACxB,eAAe,QAAS,eACxB,qBAAqB,QAAS,gBAC9B,sBAAsB,QAAS,iBAC/B,4BAA4B,QAAS,uBAErC,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAkE,MAAO,KACzM,eAAe,MAAO,YACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,KAEvB,sBAAsB,YAAa,YACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,MAGtC,qCACE,iBAAiB,MAAO,OACxB,eAAe,QAAS,eACxB,qBAAqB,QAAS,gBAC9B,sBAAsB,QAAS,iBAC/B,4BAA4B,QAAS,uBAErC,eAAgJ,gBAAiB,gBAAiB,gBAAlK,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAkE,MAAO,KACzM,eAAe,MAAO,YACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,eAAe,MAAO,aACtB,eAAe,MAAO,aACtB,eAAe,MAAO,IACtB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,aACvB,gBAAgB,MAAO,KAEvB,sBAAsB,YAAa,YACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,aACnC,sBAAsB,YAAa,IACnC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,aACpC,uBAAuB,YAAa,MAItC,kBAAkB,OAAQ,MAC1B,oBAAoB,QAAS,KAC7B,kBAAkB,OAAQ,KAC1B,oBAAoB,QAAS,IAC7B,kBAAkB,OAAQ,KAC1B,oBAAoB,QAAS,IAC7B,kBAAkB,OAAQ,OAC1B,oBAAoB,QAAS,MAC7B,kBAAkB,OAAQ,KAC1B,oBAAoB,QAAS,IAC7B,kBAAkB,OAAQ,KAC1B,oBAAoB,QAAS,IAC7B,mBAAmB,OAAQ,KAC3B,qBAAqB,QAAS,IAC9B,mBAAmB,OAAQ,KAC3B,qBAAqB,QAAS,IAC9B,mBAAmB,OAAQ,KAC3B,qBAAqB,QAAS,IAC9B,mBAAmB,OAAQ,OAC3B,qBAAqB,QAAS,MAC9B,mBAAmB,OAAQ,KAC3B,qBAAqB,QAAS,IAC9B,mBAAmB,OAAQ,KAC3B,qBAAqB,QAAS,IAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAC9B,mBAAmB,OAAQ,QAC3B,qBAAqB,QAAS,OAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAC9B,mBAAmB,OAAQ,MAC3B,qBAAqB,QAAS,KAI9B,iBAAiB,QAAS,cAC1B,iBAAiB,QAAS,cAC1B,iBAAiB,QAAS,eAC1B,iBAAiB,QAAS,eAC1B,iBAAiB,QAAS,eAG1B,gBAAgB,OAAQ,cACxB,gBAAgB,OAAQ,cACxB,gBAAgB,OAAQ,eACxB,gBAAgB,OAAQ,eACxB,gBAAgB,OAAQ,eAOxB,WACA,aACA,cACA,gBACA,qBAAqB,QAAS,EAAM,mBAAoB,KAAM,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAAK,WAAY,WAG5H,kBAAkB,cAAe,KAAM,QAAS,KAAM,YAAa,IAAK,YAAa,IAAI,MAAM,QAAS,cAAe,EAAE,IAAI,IAAI,EAAG,iBAAkB,QACtJ,gBAAgB,aAAc,MAAO,aAAc,IAAK,kBAAmB,IAAK,WAAY,IAG5F,kBAAkB,cAAe,KAAM,QAAS,EAAG,aAAc,IAAK,aAAc,MACpF,yBAAyB,YAAa,KAAM,QAAS,EAAE,KAAM,UAAW,KACxE,mBAAmB,OAAQ,KAAK,EAAG,aAAc,EAAG,iBAAkB,IACtE,iBAAiB,QAAS,KAC1B,oCAAoC,QAAS,KAAK,EAGlD,gBAAgB,SAAU,SAAU,OAAQ,IAAK,cAAe,KAAM,iBAAkB,KACxF,oBAAoB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,EAAG,UAAW,KAAM,OAAQ,IAAK,cAAe,KAAM,WAAY,MAAO,iBAAkB,QAAS,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACjN,oBACA,wCAAwC,OAAQ,KAAM,YAAa,KACnE,qBAAqB,SAAU,SAAU,IAAK,MAAO,YAAa,KAAM,UAAW,KAAM,MAAO,QAChG,yCAAyC,SAAU,OAAQ,QAAS,EAAE,KAAM,MAAO,KASnF,gBAAgB,aAAc,IAAK,aAAc,MAAO,cAAe,IAEvE,qBADA,kBACqB,iBAAkB,IAAK,iBAAkB,MAC9D,8BAA8B,WAAY,KAC1C,mBAAmB,SAAU,SAAU,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAK,EAAE,KAAM,MAAO,KAAM,iBAAkB,QAAS,OAAQ,QAAS,UAAW,KAAM,SAAU,OACpL,qBAAqB,QAAS,KAAM,QAAS,KAAK,KAAM,YAAa,IAAK,MAAO,QACjF,kBAAkB,SAAU,SAAU,KAAM,KAAM,IAAK,EAAG,UAAW,KAGrE,YAAY,cAAe,KAAM,cAAe,IAAK,iBAAkB,KAAM,WAAY,EAAE,IAAI,IAAI,EAAE,gBACrG,uBAAuB,cAAe,EACtC,mBAAmB,SAAU,SAAU,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAM,cAAe,IAAI,MAAM,QAAS,MAAO,KAAM,cAAe,IAAI,IAAI,EAAE,EAAG,UAAW,KAC/K,iBAAiB,SAAU,SAAU,QAAS,KAAK,KAAM,YAAa,KACtE,wBAAwB,QAAS,KACjC,wBAAwB,QAAS,KACjC,8BAA8B,OAAQ,IAAI,EAC1C,uBAAuB,OAAQ,EAG/B,aAAa,SAAU,SAAU,aAAc,IAAK,aAAc,MAAO,cAAe,IAAK,WAAY,IAAI,IAAI,IAAI,gBAAiB,iBAAkB,KAAM,MAAO,QAGrK,oBAAoB,SAAU,SAAU,QAAS,KAAM,cAAe,EAAG,WAAY,IAAI,MAAM,KAAM,iBAAkB,KAGvH,uBAAuB,SAAU,MAAO,KAAM,EAAG,MAAO,EAAG,IAAK,EAAG,OAAQ,EAAG,MAAO,KAAM,OAAQ,KAAM,WAAY,IAAM,QAAS,WACpI,sBAAsB,SAAU,iBAShC,cAAc,iBAAkB,kBAAoB,MAAO,eAC3D,iBAAiB,iBAAkB,kBAAmB,MAAO,eAC7D,gBAAgB,iBAAkB,kBAAmB,MAAO,eAC5D,eAAe,iBAAkB,kBAAmB,MAAO,eAC3D,eAAe,iBAAkB,kBAAmB,MAAO,eAC3D,iBAAiB,iBAAkB,kBAAmB,MAAO,eAC7D,gBAAgB,iBAAkB,kBAAmB,MAAO,eAC5D,eAAe,iBAAkB,kBAAmB,MAAO,kBAU3D,iBAPA,cAMA,qBADA,kBAFA,gBADA,kBAcA,wCADA,mCAFA,aACA,mBAVA,aAHA,gBAY+B,cAH/B,eACA,gBAHA,iBACA,mCAIc,gBAG0B,aAAc,KAEtD,cAAc,aAAc,IAAK,aAAc,MAAO,MAAO,kBAC7D,kBAAkB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBAClG,qBAAqB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBACrG,oBAAoB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBACpG,mBAAmB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBACnG,mBAAmB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBACnG,qBAAqB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBACrG,oBAAoB,aAAc,IAAK,aAAc,MAAO,aAAc,kBAAmB,MAAO,kBASpG,sBAFA,qBADA,qBADA,sBADA,uBAIA,uBALA,oBAMsB,aAAc,EAAE,EAAE,IAGxC,4BAA4B,iBAAkB,KAG9C,YAAY,YAAa,IAAK,UAAW,KACzC,eACA,eACA,eACA,eACA,eACA,eAAe,MAAO,QACtB,eAAe,UAAW,KAC1B,eAAe,UAAW,KAC1B,eAAe,UAAW,KAC1B,eAAe,UAAW,KAC1B,eAAe,UAAW,KAC1B,eAAe,UAAW,KAE1B,eADA,eACe,aAAc,KAC7B,kBAAkB,WAAY,IAAK,gBAAiB,KACpD,kBAAkB,WAAY,IAAK,gBAAiB,QACpD,eACA,gBAAgB,MAAO,eAAiB,aAAc,cAAgB,cAAe,cACrF,cAAc,OAAQ,KAAK,EAC3B,0BAA0B,WAAY,EACtC,yBAAyB,cAAe,EACxC,8BAA8B,MAAO,QACrC,oCAAoC,gBAAiB,UACrD,8CAA8C,QAAS,IAAI,KAAM,YAAa,IAAI,MAAM,KACxF,sCAAwC,QAAS,KAAM,YAAa,aAAa,CAAC,QAAQ,CAAC,iBAG3F,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAC1B,eAAe,UAAW,eAG1B,gBAAgB,MAAO,kBACvB,mBAAmB,MAAO,kBAC1B,kBAAkB,MAAO,kBACzB,iBAAiB,MAAO,kBACxB,iBAAiB,MAAO,kBACxB,mBAAmB,MAAO,kBAC1B,kBAAkB,MAAO,eACzB,iBAAiB,MAAO,kBAQxB,WAAW,QAAS,aAAc,eAAgB,OAAQ,OAAQ,KAAM,YAAa,KAAM,OAAQ,IAAI,MAAM,YAAa,QAAS,EAAE,KAAM,iBAAkB,QAAS,MAAO,KAAM,YAAa,OAAQ,WAAY,OAAQ,UAAW,KAAM,cAAe,IAAK,OAAQ,QAAS,iBAAkB,KAAM,oBAAqB,KAAM,gBAAiB,KACtV,iBAAiB,QAAS,GAAK,OAAO,kBAAmB,MAAO,KAChE,kBAAkB,QAAS,EAAG,OAAO,mBACrC,sBAAsB,YAAa,KAGnC,qBAAqB,aAAc,KACnC,gCAAgC,aAAc,KAAM,cAAe,KAAM,aAAc,OACvF,2CAA2C,YAAa,EACxD,6CAA6C,cAAe,IAGpD,kBAAkB,cAAe,MACzC,uBAAuB,QAAS,EAAE,IAAK,eAAgB,SAAU,eAAgB,OAEzE,mBAAmB,aAAc,QAAS,WAAY,IAAM,MAAO,QAC3E,yBAAyB,aAAc,QAAS,MAAO,KAC/C,kBAAkB,iBAAkB,QACpC,gBAAgB,iBAAkB,QAClC,kBAAkB,iBAAkB,QACpC,mBAAmB,iBAAkB,QACrC,oBAAgD,2BAA3B,0BAAsD,aAAc,eAAiB,iBAAkB,kBAAoB,MAAO,kBAAoB,OAAQ,sBAAwB,QAAS,EAEpN,cAAc,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAM,UAAW,KAC3E,cAAc,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAM,UAAW,KAC3E,cAAc,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,IAAK,UAAW,KAClF,gBAAgB,UAAW,eAClB,iBAAiB,QAAS,aAAc,eAAgB,OAAQ,UAAW,EACpF,4BAA4B,YAAa,YAAa,aAAc,YAAa,YAAa,IAAI,MAAM,qBAAsB,cAAe,EAC7I,oCAAoC,YAAa,KACjD,0CAA0C,aAAc,QAAS,MAAO,QACxE,wCAAwC,YAAa,KAAM,cAAe,IAAI,EAAE,EAAE,IAClF,gDAAgD,YAAa,IAAI,MAAM,QACvE,uCAAuC,cAAe,EAAE,IAAI,IAAI,EAChE,uCAAuC,YAAa,EACpD,kCAAkC,YAAa,KACvC,iBAAiB,MAAO,KAGhC,aAA+B,cAAjB,gBAA+B,OAAQ,KAAM,YAAa,IAAK,YAAa,OAAQ,aAAc,IAAK,aAAc,MAAO,iBAAkB,KAAM,MAAO,gBAAiB,cAAe,IACzM,wCAEA,yCADA,2CACyC,YAAa,IACtD,aAAc,gBAAgB,QAAS,MAAO,MAAO,KAAM,aAAc,KACzE,mBAAoB,sBAAsB,aAAc,kBACxD,mBAAoB,sBAAsB,aAAc,kBAAoB,WAAY,EAAE,EAAE,EAAE,IAAI,qBAClG,gBAAgB,SAAU,SAAU,WAAY,MAAO,OAAQ,KAAM,YAAa,KAAM,QAAS,IAAI,KAAM,OAAQ,SACnH,uBAAwB,0BAA0B,iBAAkB,QACpE,cAAc,QAAS,EAAE,KAEzB,iCACA,8BAFA,mBAE8B,QAAS,KACvC,yBAA0B,QAAS,QAEnC,iBAAiB,SAAU,SAAU,cAAe,KAAM,MAAO,KAAM,MAAO,EAC9E,uBAAuB,QAAQ,MAAO,MAAO,KAAM,MAAO,EAAG,QAAS,MAAO,OAAO,EACpF,kBAAkB,SAAU,SAAU,MAAO,KAAM,QAAS,MAAO,QAAS,IAAI,KAAO,MAAO,KAAM,YAAa,IAAK,YAAa,KAAM,WAAY,MACrJ,sBAAsB,QAAS,MAAO,MAAO,KAAM,QAAS,IAAI,EAAG,YAAa,KAAM,WAAY,KAClG,+BAA+B,cAAe,IAAK,aAAc,KACjE,mBAAoB,oBAAoB,SAAU,SAClD,mBAAmB,YAAa,MAAO,WAAY,KACnD,oBAAoB,QAAS,aAAc,eAAgB,OAC3D,qCAAqC,MAAO,KAAM,MAAO,MAAO,aAAc,KAC9E,qCAAqC,MAAO,KAG5C,gBAAgB,SAAU,SAAU,MAAO,KAAM,QAAS,MAAO,QAAS,IAAI,YAAc,YAAa,KAAM,aAAc,KAI7H,mDADA,yBACmD,aAAc,kBAAoB,WAAY,EAAE,EAAE,EAAE,IAAI,oBAI3G,oBAEA,mBADA,oBAEA,uCAAuC,SAAU,SAAU,MAAO,EAAG,IAAK,EAAG,QAAS,EAAE,KAAM,MAAO,KAAM,OAAQ,KAAM,WAAY,OAAQ,WAAY,IAAI,IAAK,WAAY,WAC9K,oBAAoB,KAAM,EAAG,cAAe,IAAI,EAAE,EAAE,IACpD,oBAAoB,MAAO,EAAG,cAAe,EAAE,IAAI,IAAI,EACvD,mBAAmB,aAAc,IAAK,aAAc,MACpD,gCAEA,+BADA,gCAC+B,SAAU,SAAU,UAAW,KAAM,MAAO,QAAS,WAAY,IAAI,IAGpG,mBAAmB,SAAU,SAAU,QAAS,MAAO,WAAY,WACnE,qBAAqB,QAAS,WAAY,eAAgB,OAAQ,SAAU,SAC5E,gCAAgC,cAAe,KAC/C,uCAAyC,MAAO,KAAM,aAAc,EACpE,uCAAyC,MAAO,KAAM,YAAa,EACnE,sCAAsC,YAAa,OAGnD,kBAAkB,SAAU,SAAU,YAAa,KACnD,+BAA+B,cAAe,KAC9C,0CACA,2CAA2C,QAAS,KACpD,mDACA,qDAAuD,aAAc,KACrE,kDACA,oDAAsD,aAAc,KACpE,yDAA2D,SAAU,OACrE,sCAEA,qCADA,sCACqC,eAAgB,KACrD,wDAA0D,aAAc,QACxE,wDAA0D,aAAc,QACxE,0EAA4E,aAAc,QAC1F,wDAAwD,aAAc,EAAG,mBAAoB,IAC7F,wDAAwD,aAAc,EAAG,kBAAmB,IAG5F,mBAAmB,YAAa,KAChC,uCAAuC,MAAO,KAAM,KAAM,MAC1D,+BAA+B,MAAO,eAAgB,eAAgB,eAAgB,OAAQ,QAC9F,qCAAqC,MAAO,eAC5C,qCAAqC,MAAO,eAG5C,sCAAsC,MAAO,KAAM,QAAS,EAC5D,kDAAkD,SAAU,SAAU,MAAO,EAAG,MAAO,KAAM,OAAQ,IAAK,YAAa,OAAQ,UAAW,KAC1I,yDAAyD,SAAU,SAAU,KAAM,IAAK,IAAK,IAAK,WAAY,KAAM,YAAa,KACjI,qDAAqD,IAAK,EAAG,cAAe,IAAI,MAAM,KACtF,uDAAuD,OAAQ,EAC/D,wDAAwD,YAAa,IAErE,uEADA,uEACyE,mBAAoB,eAC7F,4CAA8C,gBAAiB,UAC/D,4EAA8E,MAAM,QAKpF,mBAAmB,SAAU,SAAU,MAAO,QAC9C,gCAAgC,cAAe,KAAM,OAAQ,QAC7D,+BAA+B,SAAU,SAAU,MAAO,KAAM,IAAK,IAAK,WAAY,KAAM,OAAQ,QAAS,aAAc,IAAK,iBAAkB,QAAS,iBAAkB,MAAO,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACjO,sBAAsB,QAAS,KAAM,SAAU,SAAU,KAAM,EAAG,IAAK,KAAM,QAAS,IAAI,EAAG,QAAS,IAAK,UAAW,KAAM,OAAQ,IAAI,MAAM,KAAM,WAAY,MAAO,WAAY,KAAM,iBAAkB,KAAM,cAAe,IAAK,WAAY,IAAI,IAAI,IAAI,gBAAiB,WAAY,WAE1R,yBADA,yBACyB,QAAS,EAAE,KAAM,YAAa,KAAM,YAAa,OAAQ,SAAU,OAAQ,cAAe,SACnH,yBAAyB,UAAW,KAAM,MAAO,KACjD,yBAAyB,OAAQ,QACjC,+BAA+B,iBAAkB,QAAS,mBAAoB,IAAI,IAAK,WAAY,IAAI,IACvG,0CAA0C,aAAc,KACxD,2CAA2C,aAAc,eAAiB,MAAO,KACjF,oCAAoC,iBAAkB,QAAS,MAAO,QAAS,YAAa,IAE5F,wCAAwC,iBAAkB,KAC1D,wBAAwB,QAAS,MACjC,iCAAiC,WAAY,KAAM,kBAAkB,eAAgB,UAAW,eAChG,iCAAiC,WAAY,OAC7C,uCAAuC,WAAY,MAAM,CAAC,IAC1D,wBAAwB,IAAK,KAAM,OAAQ,KAC3C,mBAAmB,OAAQ,IAAI,EAAG,WAAY,OAAQ,MAAO,KAE7D,uCAAuC,aAAc,eACrD,mCAAmC,iBAAkB,QAGrD,qBAAqB,SAAU,SAAU,QAAS,aAAc,eAAgB,OAAQ,OAAQ,KAAM,YAAa,KAAM,aAAc,KAAM,cAAe,KAAM,iBAAkB,KAAM,OAAQ,QAAS,UAAW,EAAI,mBAAoB,IAAI,OAAQ,WAAY,IAAI,OAAQ,WAAY,WAE9R,uBAAyB,QAAS,aAAc,eAAgB,OAChE,yBAA2B,QAAS,EAAE,KAAM,UAAW,KAAM,cAAe,IAAI,EAAE,EAAE,IAAK,iBAAkB,QAAS,MAAO,KAAM,SAAU,OAAQ,YAAa,OAAQ,cAAe,SACvL,qCAAyC,YAAa,OACtD,+BAAiC,iBAAkB,QACnD,uBAAyB,SAAU,SAAU,MAAO,EAAG,IAAK,EAAG,MAAO,KAAM,OAAQ,KAAM,OAAQ,IAAI,MAAM,QAAS,YAAa,KAAM,cAAe,EAAE,IAAI,IAAI,EAAG,MAAO,KAAM,MAAO,oBAAqB,UAAW,KAAM,WAAY,OAAQ,WAAY,WAC9P,6BAA+B,aAAc,QAAS,MAAO,QAC7D,oBACA,0BAA0B,aAAc,QAExC,8BADA,wBACgC,iBAAkB,QAElD,4BADA,sBAC8B,MAAO,QACrC,sCAAsC,WAAY,IAClD,iDAAmD,iBAAkB,eACrE,2BAA4B,QAAS,KAGrC,uCAAyC,OAAQ,eAAgB,YAAa,iBAAkB,UAAW,KAAM,WAAY,KAAM,OAAQ,eAAgB,aAAc,EAAG,aAAc,KAAM,cAAe,EAAG,WAAY,IAC9N,2CAA+C,WAAY,KAAM,aAAc,EAAG,cAAe,KAAM,YAAa,KAAM,WAAY,IAAM,MAAO,QACnJ,yCAA6C,MAAO,KAAM,KAAM,EAAG,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,OAAQ,IAAI,MAAM,QAAS,UAAW,KAAM,cAAe,IAAK,iBAAkB,KAAM,mBAAoB,IAAI,OAAQ,WAAY,IAAI,OACzP,+CAAmD,aAAc,QAAS,MAAO,KACjF,wCAA4C,aAAc,kBAAoB,iBAAkB,QAAS,MAAO,KAChH,+CAAmD,WAAY,cAC/D,gEAAoE,WAAY,eAAgB,aAAc,eAC9G,mDAAuD,aAAc,QACrE,wDAA0D,WAAY,KACtE,iEAAqE,aAAc,QACnF,wEAA4E,QAAS,GAAI,QAAS,aAAc,eAAgB,OAAQ,SAAU,SAAU,MAAO,IAAK,OAAQ,IAAK,OAAQ,KAAK,KAAK,EAAG,iBAAkB,QAG5N,mBAAmB,SAAU,SAAU,QAAS,aAAc,eAAgB,OAAQ,OAAQ,KAAM,YAAa,KAAM,UAAW,KAAM,QAAS,EAAE,IAAK,WAAY,IAAK,OAAQ,IAAI,MAAM,QAAS,cAAe,KAAM,OAAQ,QAAS,WAAY,WAAY,iBAAkB,KAAM,mBAAoB,IAAI,OAAQ,WAAY,IAAI,OAC1U,qBAAuB,SAAU,SAAU,KAAM,IAAK,IAAK,IAAK,MAAO,KAAM,OAAQ,KAAM,cAAe,KAAM,iBAAkB,QAAS,mBAAoB,IAAI,OAAQ,WAAY,IAAI,OAC3L,uBAAyB,SAAU,SAAU,IAAK,EAAG,YAAa,KAAM,QAAS,YAAa,WAAY,iBAAkB,MAAO,eAAgB,WAAY,iBAAkB,UAAW,KAC5L,qBAAqB,aAAc,QAAS,iBAAkB,QAC9D,uBAAyB,KAAM,KAAM,YAAa,MAAO,iBAAkB,KAC3E,yBAA2B,YAAa,EAAG,aAAc,KAAM,MAAO,eAEtE,yBAAyB,aAAc,eACvC,6BAA+B,MAAO,kBACtC,2BAA6B,aAAc,eAC3C,iCAAmC,MAAO,eAG1C,kBAAkB,QAAS,aAAc,eAAgB,OAAQ,YAAa,KAAM,OAAQ,IAAI,KAAK,EAAE,EAAG,cAAe,KAAM,OAAQ,QAAS,UAAW,EAC3J,oBAAsB,QAAS,aAAc,eAAgB,OAAQ,UAAW,KAChF,oBAAsB,aAAc,IAAK,UAAW,KAAM,MAAO,QAGjE,0BAFA,oBACA,sBAC4B,MAAO,QACnC,wBAA0B,MAAO,eACjC,wBAA0B,MAAO,kBACjC,wBAAyB,QAAS,KAGlC,mCAAmC,MAAO,MAAO,QAAS,IAAI,KAAM,OAAQ,KAAM,YAAa,KAAM,aAAc,IAAK,aAAc,MAAO,cAAe,IAAI,EAAE,EAAE,IAAK,WAAY,OAAQ,iBAAkB,QAAS,SAAU,OAAQ,YAAa,OAAQ,cAAe,SAAU,WAAY,WACpS,qCAAqC,YAAa,KAClD,oCAAoC,YAAa,MAAO,KAAM,KAC9D,8BAA8B,cAAe,EAAE,IAAI,IAAI,EACvD,oDAAoD,MAAO,KAAM,MAAO,KAAM,cAAe,IAAK,WAAY,WAAY,WAAY,KACtI,sDAAsD,QAAS,MAAO,OAAQ,EAAG,IAAK,KAAM,MAAO,KACnG,qDAAqD,OAAQ,EAAG,KAAM,EAAG,IAAK,KAC9E,kDAAkD,WAAY,MAAO,cAAe,EAAE,EAAE,IAAI,IAC5F,sCAAsC,OAAQ,IAAI,EAAE,IAAI,KAExD,mCADA,oCACmC,WAAY,IAAK,YAAa,KACjE,wCAAwC,SAAU,SAAU,aAAc,IAAK,aAAc,MAC7F,0DAA0D,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,OAAQ,KAAM,aAAc,EAAK,mBAAoB,IACpJ,4DAA4D,YAAa,MAGzE,oCACE,mCAAmC,cAAe,SAAU,SAAU,OAAQ,YAAa,OAC3F,+BAA+B,QAAS,MAAO,aAAc,EAAG,cAAe,KAAM,MAAO,KAC5F,qCAAqC,QAAQ,MAAO,MAAM,KAAM,QAAQ,MAAO,OAAO,EACtF,qCAAqC,QAAS,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,eAAiB,OAAQ,EAAE,EAAE,KAAK,MACvH,qDAAqD,YAAa,MAAO,IAAK,KAAM,QAAS,EAC7F,sCAAsC,aAAc,IAAK,cAAe,KAI1E,eAAe,QAAS,aAAc,SAAU,OAAQ,MAAO,EAAG,eAAgB,OAAQ,OAAQ,KAAK,EAAG,UAAW,EACrH,6BACA,gCAAgC,cAAe,IAAI,EAAE,EAAE,IACvD,4BACA,+BAA+B,cAAe,EAAE,IAAI,IAAI,EACxD,4BAA6B,YAAa,YAC1C,2BAA4B,aAAc,YAC1C,iBAGA,sBADA,qBAEA,sBAHA,oBAGsB,OAAQ,IAAI,MAAM,KACxC,iBACA,oBAAoB,QAAS,aAAc,SAAU,OAAQ,MAAO,EAAG,eAAgB,OAAQ,QAAS,EAAE,KAAM,OAAQ,KAAM,YAAa,KAAM,OAAQ,EAAE,KAAK,IAAI,EAAG,iBAAkB,KAAM,MAAO,KAAM,UAAW,KACvN,4BAA4B,MAAO,KACnC,iBAAiB,gBAAiB,eAAiB,OAAQ,QAC3D,uBAAuB,MAAO,QAC9B,kBAAkB,WAAY,OAC9B,kCAAkC,MAAM,KAAM,YAAa,IAC3D,mCAAmC,SAAU,SAC7C,sCAAsC,SAAU,SAAU,MAAO,KACjE,qDAAqD,SAAU,SAAU,KAAM,KAAM,IAAK,KAAM,QAAS,IAAK,MAAO,KAAM,OAAQ,KAAM,iBAAkB,QAC3J,kBAAkB,cAAe,IAEjC,uBADA,uBACuB,YAAa,IAAI,IAAK,UAAW,KAExD,oCACA,qCACA,sCACA,mCAAmC,YAAa,KAAM,aAAc,KAAM,QAAS,EAAG,OAAQ,KAC9F,qCACA,sCAAsC,eAAgB,IACtD,wCAAwC,UAAW,KAAM,OAAQ,QACjE,sBAAsB,OAAQ,KAAM,QAAS,IAAK,cAAe,IAAK,OAAQ,QAC9E,mCAAmC,OAAQ,KAAM,YAAa,KAAM,MAAO,KACrD,sBAAtB,qBAA4C,OAAQ,KAAM,YAAa,KAAM,cAAe,IAAK,eAAgB,IAAM,iBAAkB,KAAM,WAAY,WAC3J,qBAAqB,QAAS,aAAc,MAAO,KAAM,OAAQ,EAAE,KAAM,QAAS,EAAE,IAAK,WAAY,OACrG,2BACA,4BAA4B,aAAc,kBAC1C,sBAAsB,YAAa,KAAM,QAAS,EAAE,KAAM,OAAQ,QAGlE,iBAAiB,OAAQ,KAAK,EAAG,WAAY,OAAQ,MAAO,KAAM,UAAW,KAAM,MAAO,KAC1F,mBAAoB,OAAQ,KAAM,YAAa,KAC/C,qBAAqB,QAAS,aAAc,eAAgB,IAC5D,wBAAwB,QAAS,EAAE,KAAM,cAAe,IAAK,iBAAkB,KAAM,MAAO,KAAM,WAAY,OAC9G,8BAA8B,QAAS,GACvC,qBAAqB,UAAW,KAAM,MAAO,QAG7C,aAAa,MAAO,KAAM,OAAQ,KAAK,EAAG,iBAAkB,KAAM,MAAO,QACzE,gBAAgB,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAC7D,gBAAgB,WAAY,KAAM,YAAa,IAQ/C,kBAAkB,iBAAkB,KAEpC,mBADA,mBAEA,gDAAgD,iBAAkB,QAClE,qBAAqB,iBAAkB,QAEvC,uCADA,uCACuC,iBAAkB,QAIzD,gBADA,gBAOA,qBAGA,qBAGA,uBAPA,oBAKA,kBAFA,kBAGA,uBAPA,kBAGA,mBAJA,kBAFA,4BACA,2BAUuB,aAAc,IAAK,aAAc,MAAO,aAAc,KAE5D,gBAAjB,gBAAiC,SAAU,SAAU,QAAS,IAAI,KAAM,WAAY,KAAM,YAAa,KAAO,UAAW,KAEvF,+BAAlC,+BAAmE,aAAc,EAAG,oBAAqB,IACxE,8BAAjC,8BAAiE,aAAc,EAAE,mBAAoB,IACpE,8BAAjC,8BAAiE,OAAQ,KAEzE,iBAAiB,UAAU,MAI3B,6BADA,6BAC+B,YAAa,KAAM,cAAe,KAAM,eAAgB,KAAM,aAAc,KAC3G,8DAAgE,OAAQ,KAAM,YAAa,KAI3F,6BADA,6BAC+B,YAAa,IAAK,cAAe,KAAM,eAAgB,IAAK,aAAc,KAAM,UAAW,KAC1H,8DAAgE,OAAQ,KAAM,YAAa,KAAM,YAAa,IAAK,aAAc,KAAM,cAAe,KAGtJ,uBACA,0BAA0B,QAAS,KACnC,iBAAiB,SAAU,SAAU,SAAU,OAC/C,kBAAkB,MAAO,KACzB,+BAA+B,SAAU,SAAU,MAAO,KAAM,OAAQ,EAAG,OAAQ,EAAG,gBAAiB,SACvG,8CAAgD,aAAc,EAAG,mBAAoB,IACrF,6CAA+C,aAAc,EAAG,oBAAqB,IAErF,kCADA,kCACkC,QAAS,EAAG,WAAY,KAAM,YAAa,KAC7E,8CACA,wEAAwE,OAAQ,QAEhF,kCADA,uCACkC,OAAQ,QAC1C,6CAA6C,OAAQ,KACrD,yDAAyD,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,KAAM,OAAQ,KAAM,WAAY,WAAY,OAAQ,IAAI,MAAM,QAAS,eAAgB,KAAM,QAAS,GAE3M,2DAA6D,MAAO,KAAM,OAAQ,KAAM,YAAa,KACrG,oCAAoC,YAAa,EAAG,QAAS,EAC7D,sCAAsC,OAAQ,EAAG,UAAW,KAC5D,kBAAkB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,KAAM,OAAQ,KAAM,WAAY,OAAQ,QAAS,IAC/G,8BAA8B,SAAU,SAAU,KAAM,IAAK,IAAK,IAAK,OAAQ,MAAM,EAAE,EAAE,MAAO,UAAW,KAAM,MAAO,QACxH,oBAAoB,aAAc,EAAG,oBAAqB,IAAK,SAAU,OACzE,iCAAiC,cAAe,KAEhD,oBAAoB,SAAU,SAAU,MAAO,KAAM,WAAY,KAAM,QAAS,IAAI,KAAM,aAAc,EAAG,oBAAqB,IAChI,yCAAyC,cAAe,KACxD,oDAAoD,aAAc,IAAK,cAAe,IAEtF,2CAA2C,SAAU,SAAU,MAAO,KAAM,OAAQ,KAAM,QAAS,IAAK,YAAa,KAAM,aAAc,KAAM,WAAY,OAAQ,MAAO,KAAM,OAAQ,IAAI,MAAM,KAAM,OAAQ,QAAS,mBAAoB,IAAI,IAAK,WAAY,IAAI,IACtQ,iDAAiD,OAAQ,IAAI,MAAM,KACnE,uBAAuB,cAAe,MACtC,uBAAuB,SAAU,SAAU,MAAO,KAAM,IAAK,KAC7D,kEAAkE,OAAQ,EAAE,EAAE,EAAE,KAChF,wBAAwB,SAAU,SAAU,IAAK,KAAM,KAAM,KAAM,QAAS,IAAK,QAAS,IAAI,YAAc,UAAW,MAAO,WAAY,KAAM,OAAQ,IAAI,MAAM,QAAS,WAAY,KAAM,WAAY,KAAM,iBAAkB,KAAM,WAAY,EAAE,IAAI,IAAI,gBAC7P,2BAA2B,QAAS,EAAE,KAAM,OAAQ,YAAc,YAAa,KAAM,gBAAiB,eAAiB,YAAa,OAAQ,SAAU,OAAQ,cAAe,SAAU,mBAAoB,IAAI,IAAK,WAAY,IAAI,IACpO,kEAAoE,MAAO,KAC3E,iCAAiC,iBAAkB,QACnD,kEAAoE,aAAc,KAClF,oEAAsE,SAAU,SAAU,KAAM,EAAG,IAAK,EACxG,uEAAyE,QAAS,EAClF,iEAAiE,KAAM,KAAM,MAAO,KAEpF,qBAAqB,SAAU,SAAU,MAAO,EAAG,IAAK,EAAG,MAAO,KAAM,OAAQ,KAAM,aAAc,EAAG,kBAAmB,IAAK,iBAAkB,KAEjJ,kBAAkB,MAAO,KAAM,OAAQ,KAAM,YAAa,IAAK,OAAQ,kBACvE,8BAA8B,SAAU,SAAU,KAAM,IAAK,aAAc,IAC3E,wCAAwC,IAAK,IAAK,WAAY,KAAM,oBAAqB,MAAO,oBAAqB,QACrH,8CAA8C,oBAAqB,QACnE,yCAAyC,OAAQ,IAAK,cAAe,KAAM,iBAAkB,MAAO,iBAAkB,QACtH,+CAA+C,iBAAkB,QACjE,sDAAwD,oBAAqB,KAC7E,wDAA0D,iBAAkB,KAE5E,kBAAkB,OAAQ,KAAM,YAAa,KAAM,QAAS,IAAI,KAAM,SAAU,SAAU,SAAU,OAAQ,cAAe,SAAU,YAAa,OAAQ,WAAY,WACtK,yDAA2D,IAAK,KAAM,QAAS,EAC/E,6DAAiE,aAAc,KAC/E,oCAAoC,MAAO,QAC3C,6BAA6B,eAAgB,QAC7C,gCAAkC,iBAAkB,OACpD,+BAAiC,iBAAkB,IAEnD,wBAGA,uBAFA,qBACA,qBACuB,WAAY,OAAQ,iBAAkB,OAE7D,kBAAkB,SAAU,SAAU,SAAU,KAAM,aAAc,KAAM,cAAe,KACzF,8BAA8B,YAAa,KAAM,QAAS,KAAK,KAAM,WAAY,OAAQ,MAAO,KAChG,mBAAmB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,QAAS,IACjE,qCAAqC,SAAU,OAC/C,qBAAqB,WAAY,IAAI,EAAE,IAAI,gBAC3C,qBAAqB,KAAM,KAAM,MAAO,KAAM,aAAc,EAAG,kBAAmB,IAAK,WAAY,KAAK,EAAE,IAAI,gBAC9G,yCAAyC,SAAU,SAAU,SAAU,QACvE,kBAAkB,SAAU,SAAU,MAAO,MAAO,IAAK,EAAG,OAAQ,KAAM,MAAO,KAAM,aAAc,EAAG,kBAAmB,IAE3H,kBAAkB,SAAU,SAAU,MAAO,KAAM,WAAY,KAAM,YAAa,KAAM,QAAS,KAAK,KAAM,aAAc,EAAG,oBAAqB,IAClJ,uCAAuC,cAAe,MAEtD,mBAAmB,cAAe,KAAM,aAAc,EAAG,iBAAkB,IAAK,SAAU,OAG1F,kBAAkB,aAAc,EAAG,iBAAkB,IAAK,cAAe,KAAM,YAAa,OAAQ,SAAU,OAC9G,sBAAsB,OAAQ,KAC9B,iCAAiC,OAAQ,EACzC,mCACA,sCAAsC,OAAQ,KAAM,YAAa,KAAM,cAAe,KAAM,OAAQ,KAAM,WAAY,IACtH,mCACA,yDAAyD,QAAS,EAAE,KACpE,sCAAsC,YAAa,EAAG,QAAS,EAC/D,qDAAqD,YAAa,gBAClE,uEAAuE,KAAM,EAAG,IAAK,EAAG,QAAS,EAEjG,wCADA,uCACwC,OAAQ,KAAM,YAAa,KACnE,uCAAuC,MAAO,KAC9C,wCAAwC,QAAS,EAAE,KACnD,yBAAyB,OAAQ,KACjC,qBAAqB,MAAO,MAAO,YAAa,KAChD,mCAAmC,WAAY,KAC/C,mCAAmC,WAAY,IAE/C,qCAAqC,QAAS,aAC9C,qCAAqC,QAAS,EAAG,MAAO,KAExD,kBAAkB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,QAAS,IAAK,UAAW,KAAM,WAAY,KAAM,QAAS,IAAI,KAAM,cAAe,EAAG,WAAY,IAAI,IAAI,KAAK,gBAAiB,iBAAkB,KACzM,wBAAwB,aAAc,kBACtC,mCAAmC,OAAQ,KAC3C,wBAAwB,QAAS,EAAE,EAAE,EAAE,KAAM,aAAc,QAE3D,uCACA,oCAFA,qCAEoC,IAAK,EAAG,OAAQ,EACpD,uCAAuC,IAAK,KAAM,OAAQ,KAAM,YAAa,KAC7E,yCAAyC,OAAQ,KAGjD,oCAAoC,SAAU,QAC9C,uBAAuB,SAAU,SAAU,IAAK,EAAG,MAAO,EAAG,MAAO,KAAM,OAAQ,KAAM,QAAS,IAAI,EAAG,aAAc,EAAG,kBAAmB,IAAK,WAAY,OAAQ,iBAAkB,KAAM,MAAO,KAAM,OAAQ,QAClN,mCAAmC,SAAU,SAAU,IAAK,IAAK,KAAM,IAAK,OAAQ,KAAK,EAAE,EAAE,KAAM,UAAW,KAC9G,6BAA6B,iBAAkB,QAG/C,sBAAsB,OAAQ,KAC9B,wCAEA,oFADA,oFACsF,OAAQ,KAAM,WAAY,KAAM,YAAa,OAAQ,cAAe,KAC1J,oBAAoB,SAAU,SAAU,OAAQ,MAAO,MAAO,IAAK,aAAc,KAAM,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,OAAQ,QAAS,WAAY,OAAQ,iBAAkB,KAAM,OAAQ,IAAI,MAAM,KAAM,cAAe,IAAK,QAAS,KAAM,WAAY,IAAK,IAAK,UAAW,KAC9R,0BAA0B,aAAc,QACxC,iDAAiD,SAAU,KAC3D,0EAAoF,OAAQ,EAG5F,4CAA4C,WAAY,IAAM,QAAS,EAAG,WAAY,EAAE,IAAI,IAAI,gBAChG,uBAAuB,OAAQ,MAAM,EAAE,EAAE,KAAM,WAAY,MAAO,QAAS,IAAI,KAAM,UAAW,KAAM,WAAY,OAAQ,iBAAkB,KAAM,MAAO,QACzJ,oBAAoB,SAAU,SAAU,MAAO,KAAM,IAAK,MAAO,MAAO,KAAM,OAAQ,KAAM,QAAS,IAAK,OAAQ,QAAS,iBAAkB,QAAS,cAAe,IAAK,MAAO,KACjL,0BAA0B,iBAAkB,KAC5C,2BAA2B,SAAU,SAAU,MAAO,KAItD,2BAA4B,UAAW,KACvC,6BAAgC,MAAO,KACvC,2BAA2B,2BAA4B,aAAc,IACrE,2BAA4B,OAAQ,QAGpC,mBAAmB,QAAS,eAAgB,QAAS,IAAK,OAAQ,iBAClE,mBAAmB,OAAQ,KAAK,EAChC,qBAAqB,UAAW,MAAO,QAAS,EAAE,KAAM,MAAO,KAAM,UAAW,KAAM,cAAe,SAAU,SAAU,OAAQ,YAAa,OAC9I,mBAAmB,SAAU,SAAU,QAAS,aAAc,QAAS,KAAM,OAAQ,IAAI,OAAO,QAAS,iBAAkB,KAAM,WAAY,OAAQ,OAAQ,QAAS,MAAO,KAC7K,+BAA+B,UAAW,KAAM,MAAO,QACvD,6BAA6B,aAAc,QAC3C,mBAAmB,QAAS,aAC5B,qBAAqB,SAAU,SAAU,MAAO,EAAG,OAAQ,EAAG,OAAQ,EAAG,WAAY,OACrF,mBAAmB,SAAU,SAAU,QAAS,aAAc,eAAgB,OAC9E,sCAAsC,QAAS,gBAAiB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,QAAS,GAAI,UAAW,MAAO,MAAO,KAAM,OAAQ,KAAM,QAAS,IAAK,OAAQ,iBAAkB,OAAQ,QAC/M,0CAA0C,aAAc,EAIxD,YAAY,SAAU,SAAU,OAAQ,IAAI,EAAG,iBAAkB,KAAM,WAAY,WACnF,cAAc,WAAY,WAC1B,eACA,uBACA,yBAAyB,QAAS,IAAI,KAAM,MAAO,QACnD,eAAe,SAAU,SAAU,OAAQ,EAAE,EAAE,IAAK,YAAa,KAAM,MAAO,eAAgB,UAAW,KAAM,YAAa,OAAQ,OAAQ,QAAS,WAAY,IAAI,IACrK,qBAAqB,iBAAkB,QACvC,8BACA,gCAAgC,WAAY,cAAiB,MAAO,kBAAoB,OAAQ,sBAEhG,qDAAqD,QAAS,MAAO,eAAgB,aAAc,mBAAoB,IAAM,oBAAqB,KAAM,gBAAgB,IAExK,8CADA,+CAC8C,cAAe,KAI7D,2CAFA,yCACA,wCAC2C,WAAY,IAAM,OAAQ,QACrE,sCAAsC,OAAQ,IAAI,EAAE,KACpD,0DAA0D,MAAO,gBAAiB,YAAa,KAC/F,kCAAkC,MAAO,gBAAiB,OAAQ,QAElE,kCAAkC,WAAY,OAC9C,qCAAqC,OAAQ,IAAI,EAAG,QAAS,EAAG,OAAQ,EAAG,YAAa,EAAG,cAAe,IAAI,MAAM,KAAM,SAAU,OAGpI,wCADA,sCACwC,OAAQ,QAChD,uDAAwD,MAAO,eAC/D,mCAAmC,WAAY,OAAQ,OAAQ,EAAG,SAAU,OAC5E,0EAA0E,UAAW,eACrF,sEAAsE,UAAW,gBAEjF,2EADA,yEAC2E,MAAO,KAClF,qCAAqC,WAAY,QAAS,OAAQ,KAElE,qCACA,sCAAsC,iBAAkB,kBAAmB,MAAO,QAClF,uCACA,wCAAwC,MAAO,QAC/C,2CAA2C,SAAU,SAAU,MAAO,KAAM,IAAK,EAAG,OAAQ,EAAG,aAAc,IAAI,MAAM,QAAS,QAAS,GAEzI,uBAAuB,SAAU,SAAU,OAAQ,KAAK,MAAO,SAAU,OAAQ,cAAe,SAChG,yBAAyB,QAAS,MAAO,OAAQ,KAAK,MAAO,MAAO,eACpE,+BAA+B,WAAY,IAAI,IAC/C,mCAAmC,SAAU,SAAU,MAAO,KAAM,IAAK,IAAK,WAAY,KAAM,YAAa,OAAQ,UAAW,KAAM,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACnL,yCAAyC,WAAY,IAAI,IACzD,yCAAyC,MAAO,KAChD,uBAAuB,QAAS,KAAM,SAAU,SAAU,IAAK,KAAM,KAAM,KAAM,QAAS,KAAM,YAAa,KAAM,QAAS,IAAI,EAChI,8BAA8B,QAAS,GAAI,SAAU,SAAU,MAAO,KAAM,KAAM,MAAO,IAAK,EAAG,OAAQ,EACzG,4BAA4B,KAAM,KAAM,MAAO,KAAM,OAAQ,EAAE,KAAK,EACpE,mCAAmC,KAAM,KAAM,MAAO,MAEtD,kBAAkB,YAAa,KAE/B,8CADA,wBAC8C,WAAY,IAAM,MAAO,QACvE,yCAAyC,YAAa,KACtD,8CAA8C,OAAQ,EAAE,KAAK,EAI7D,gBAAgB,SAAU,SAAU,KAAM,UAAW,IAAK,UAAW,QAAS,SAAU,OAAQ,IAAI,EAAG,UAAW,MAClH,uBAAuB,QAAQ,GAAI,SAAU,SAAU,MAAO,KAAM,OAAQ,IAAK,KAAM,EAAG,IAAK,KAC/F,sBAAsB,IAAK,EAAG,KAAM,EAAG,MAAO,KAAM,OAAQ,KAAM,QAAS,4CAA6C,SAAU,MAAO,UAAW,SAAU,eAAgB,KAG9K,WAAW,SAAU,SAAU,QAAS,EAAE,KAAM,iBAAkB,QAAS,MAAO,KAAM,cAAe,IAAK,UAAW,EAAG,WAAY,WACtI,aAAa,UAAW,KACxB,2BAA2B,SAAU,SAAU,QAAS,aAAc,SAAU,OAAQ,MAAO,EAAG,WAAY,EAAG,WAAY,KAAM,eAAgB,OAAQ,YAAa,KACxK,6BAA6B,QAAS,MAAO,QAAS,EAAE,KAAM,MAAO,KAAM,MAAO,qBAAsB,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAErJ,6BADA,eAC6B,QAAS,GAAI,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,EAAG,OAAQ,IAAK,iBAAkB,QAAS,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAAK,eAAgB,KACnM,eAAe,QAAS,KACxB,4CAA8C,QAAS,KAGvD,mCADA,yBACmC,MAAO,KAAM,gBAAiB,KACjE,6BAA6B,IAAK,KAAM,OAAQ,EAAG,MAAO,KAC1D,eAAe,MAAO,KAAM,OAAQ,KAAM,aAAc,KAAM,cAAe,IAE7E,2BAA2B,SAAU,SAAU,IAAK,EAAG,MAAO,IAAK,KAAM,eAAiB,WAAY,EAAG,UAAW,KAAM,OAAQ,QAAS,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACxL,4BACA,oCAAsC,UAAW,eAGjD,iBAAiB,QAAS,KAAM,SAAU,SAAU,KAAM,EAAG,IAAK,KAAM,UAAW,KAAM,YAAa,KAAM,QAAS,IAAI,EAAI,WAAY,EAAE,IAAI,IAAI,gBAAiB,OAAQ,IAAI,MAAM,KAAM,iBAAkB,KAAM,QAAS,IAAK,cAAe,IAAK,YAAa,OAAQ,WAAY,WACvR,8BAA8B,MAAO,QAAS,MAAO,eACrD,oCAAoC,iBAAkB,QAAS,MAAO,eACtE,oBAAoB,OAAQ,IAAI,EAAG,SAAU,SAC7C,+BAA+B,iBAAkB,QAAS,MAAO,KACjE,qCAAqC,QAAS,KAC9C,mBAAmB,KAAM,KAAM,MAAO,EACtC,mBAAmB,WAAY,OAG/B,0BAA0B,MAAO,MAAO,QAAS,EACjD,gCAAgC,QAAS,MAAO,MAAO,KAAM,YAAa,KAC1E,kCAAkC,SAAU,SAAU,OAAQ,KAAM,YAAa,KAAM,cAAe,SAAU,SAAU,OAAQ,YAAa,OAC/I,kCAAkC,YAAa,IAAK,eAAgB,IACpE,gCAAgC,MAAO,KACvC,kDAAkD,QAAS,IAAI,EAC/D,+BAA+B,MAAO,IAAK,OAAQ,EACnD,2CAA2C,MAAO,IAIlD,+CACA,iDAJA,4BACA,8BACA,oCAEiD,iBAAkB,QAAS,MAAO,KACnF,kCAAkC,QAAS,KAG3C,oBAFA,mCACA,yCACoB,MAAO,eAC3B,+BAA+B,iBAAkB,QAEjD,iCAAiC,SAAU,SAAU,QAAS,EAAG,IAAK,EAAG,OAAQ,KAAM,WAAY,IAAM,iBAAkB,eAAgB,WAAY,KACvJ,oCAAoC,OAAQ,EAC5C,mCAAmC,MAAO,KAAM,MAAO,qBACvD,yCAAyC,WAAY,IAAM,MAAO,KAGlE,mCACA,gEAAgE,QAAS,MAGzE,gBAAgB,SAAU,MAAO,IAAK,EAAG,OAAQ,EAAG,KAAM,EAAG,WAAY,OAAQ,QAAS,IAI1F,gCADA,2CACgC,MAAO,QAAS,MAAO,eACvD,kDAAkD,MAAO,eACzD,uCAAuC,MAAO,QAC9C,+CAA+C,aAAc,KAAM,WAAY,IAG/E,6DACA,+DAHA,0CACA,4CAE+D,WAAY,cAAgB,MAAO,kBAAmB,YAAa,IAClI,6CAA6C,iBAAkB,QAI/D,kBAAkB,WAAY,OAAQ,UAAW,EACjD,oBAAoB,UAAW,KAC/B,oBAAoB,MAAO,eAC3B,0BAA0B,MAAO,kBACjC,yBAAyB,MAAO,QAAS,WAAY,OACrD,sCAAsC,OAAQ,EAAE,KAAM,MAAO,KAG7D,WAAW,OAAQ,KAAK,EAAG,WAAY,eACvC,sCAAsC,SAAU,OAChD,4BAA4B,SAAU,SAAU,KAAM,EAAG,OAAQ,KAAM,YAAa,OAAQ,UAAW,EAAG,oBAAqB,IAAK,oBAAqB,MAAO,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAC7M,+BAA+B,QAAS,aAAc,SAAU,OAAQ,MAAO,EAAG,eAAgB,OAAQ,UAAW,KAAM,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACxK,+BAA+B,SAAU,SAAU,YAAa,KAAM,UAAW,KAAM,OAAQ,EAAG,QAAS,EAAE,KAAM,WAAY,OAAQ,OAAQ,QAC/I,iCAAiC,QAAS,MAAO,QAAS,EAAE,KAAM,OAAQ,EAAE,MAC5E,6BAA6B,MAAO,KAEpC,mCAAmC,SAAU,SAAU,KAAK,EAAG,IAAK,EAAG,QAAS,GAAI,MAAM,KAAM,OAAQ,KAAM,aAAc,IAAK,aAAc,MAAO,oBAAqB,KAAM,cAAe,IAAI,IAAI,EAAE,EAAG,WAAY,WAAY,eAAgB,KACrP,eAAe,SAAU,SAAU,MAAO,EAAG,IAAK,EAAG,QAAS,GAAI,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,aAAc,IAAK,aAAc,MAAO,cAAe,IAAK,WAAY,OAAQ,iBAAkB,KAAM,OAAQ,QAChO,2BAA2B,SAAU,SAAU,QAAS,aAAc,IAAK,IAAK,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAC7H,gBAAgB,QAAS,KACzB,gBAAgB,cAAe,KAAM,OAAQ,eAAiB,YAAa,iBAC3E,oCAAoC,oBAAqB,KAAM,cAAe,IAC9E,2CAA2C,IAAK,KAAM,IAAK,MAAO,kBAAmB,eAAgB,UAAW,eAChH,iDAAiD,IAAK,MAAM,CAAC,IAE7D,mBAAmB,QAAS,KAAK,EAErB,qCAAqC,SAAU,SAAU,QAAS,aAAc,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,YAAa,IAAK,IAAK,IAAK,WAAY,OAAQ,UAAW,KAAM,MAAO,QAAS,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACxQ,2CAA2C,cAAe,IAAK,iBAAkB,QAAS,MAAO,KAEnF,8CAAgD,MAAO,QAEpE,qDADD,oDACwD,OAAQ,KAAM,cAAe,EAAG,cAAe,IAAI,MAAM,QACjH,8DAAgE,IAAK,KAEvD,gBAAgB,aAAc,IAAK,aAAc,MAAO,cAAe,IAAK,WAAY,EAAE,IAAI,IAAI,EAAE,eAClH,iCAAmC,iBAAkB,QACrD,oCAAsC,aAAc,KAAM,YAAa,KACvE,6CAA+C,iBAAkB,KACjE,mDAAqD,WAAY,KAAM,aAAc,IAAK,oBAAqB,KAC/G,gDAAkD,OAAQ,KAAM,YAAa,KAAM,cAAe,EAAG,WAAY,KAAM,aAAc,KACrI,4CAA8C,WAAY,IAAM,MAAO,QACvE,kDAAoD,OAAQ,KAG5D,gBAAgB,aAAc,IAC9B,qBAAqB,SAAU,SAAU,eAAgB,KACzD,qBAAqB,SAAU,SAAU,KAAM,KAAM,IAAK,EAAG,QAAS,GAAI,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,iBAAkB,KAAM,MAAO,QAAS,cAAe,IAAK,WAAY,OAAQ,OAAQ,QAChN,2BAA2B,MAAO,QAClC,4BAA4B,QAAS,GAAI,SAAU,SAAU,KAAM,IAAK,IAAK,EAAG,QAAS,EAAG,MAAO,IAAK,OAAQ,KAEhH,wCAAwC,QAAS,MACjD,uCAAuC,QAAS,KAChD,wBAAwB,aAAc,KACtC,sBAAsB,SAAU,SAAU,cAAe,KAAM,YAAa,KAG5E,aACA,iBACA,iBAAiB,SAAS,SAAU,QAAS,aAAc,QAAS,EAAE,IAAK,UAAW,KAAM,WAAY,OAAQ,iBAAkB,QAAS,MAAO,KAAM,cAAe,IACvK,aAAa,OAAQ,KAAM,YAAa,KACxC,iBAAiB,MAAO,IAAK,OAAQ,IAAK,QAAS,EAAG,cAAe,IACrE,iBAAiB,OAAQ,KAAM,YAAa,KAAM,aAAc,IAAK,aAAc,MAAO,iBAAkB,KAAM,MAAO,QAEzH,wBACA,4BAA4B,YAAa,IACzC,wBACA,4BAA4B,SAAU,SAAU,IAAK,IAAK,OAAQ,KAAK,IAAI,EAC3E,wBAAwB,WAAY,MACpC,8BACA,kCAAkC,KAAM,IAAK,IAAK,KAGlD,gBAAgB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,iBAAkB,QACvE,gCAAiC,SAAU,SAAU,MAAO,KAAM,OAAQ,KAAM,SAAU,OAC1F,uCAAwC,SAAU,SAAU,QAAS,QAAS,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,YAAa,KAAM,OAAQ,MAAM,EAAE,EAAE,MAAO,WAAY,OAAQ,MAAO,QAAS,YAAY,qBAAyB,UAAW,KAAM,WAAY,OAAQ,uBAAwB,YAAa,wBAAyB,UACzU,kCAAqC,QAAS,KAAM,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,KAAM,OAAQ,KAAM,iBAAkB,QAAS,oBAAqB,IAAK,4BAA6B,IACtM,yBAA2B,mBAAoB,IAAI,YAAY,GAAI,WAAY,IAAI,YAAY,GAC/F,sBAAsB,QAAS,OAAQ,QAAS,EAAG,SAAU,SAAU,KAAM,KAAM,IAAK,IAAK,WAAY,MAAO,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,WAAY,OAAQ,UAAW,KAAM,OAAQ,KAAK,EAAG,cAAe,IAAK,iBAAkB,eAAgB,MAAO,KAAM,4BAA6B,IAAK,oBAAqB,IAAK,OAAQ,QAC1V,oCAAsC,KAAM,eAAgB,MAAO,KACnE,wDAA0D,QAAS,EAAG,KAAM,KAC5E,sEAA0E,MAAO,KACjF,sDAAwD,QAAS,KACjE,4BACA,6BAA6B,iBAAkB,gBAC/C,4CAA4C,QAAS,QAAS,QAAS,EAAG,KAAM,KAChF,0DAA4D,MAAO,KACnE,oBAAoB,SAAU,SAAU,IAAK,MAAO,MAAO,KAAM,YAAa,YAAa,WAAY,OAAQ,UAAW,EAC1H,uCAAyC,cAAe,KACxD,2DAA6D,IAAK,KAClE,8DAAgE,iBAAkB,eAClF,wDAA0D,QAAS,KACnE,uBAAuB,QAAS,aAAc,QAAS,IAAK,iBAAkB,eAAgB,cAAe,KAAM,4BAA6B,IAAK,oBAAqB,IAC1K,0BAA0B,QAAS,aAAc,MAAO,KAAM,OAAQ,KAAM,OAAQ,EAAE,IAAK,UAAW,KAAM,iBAAkB,KAAM,iBAAkB,qBAAsB,cAAe,IAAK,OAAQ,QAAS,4BAA6B,IAAK,oBAAqB,IACxQ,gCAAgC,iBAAkB,qBAClD,qCAAqC,iBAAkB,KAGvD,qDADA,qDADA,4CAEsD,QAAS,MAC/D,4CAA6C,KAAM,EACnD,qDAAsD,KAAM,MAC5D,qDAAsD,KAAM,KAE5D,yEADA,0EAC0E,KAAM,EAChF,gEAAiE,KAAM,MACvE,iEAAkE,KAAM,KAE9D,uDAAyD,KAAM,cAAe,IAAK,KAAM,OAAQ,EAAE,EAAE,EAAE,MACjH,qEAAyE,IAAK,eAAgB,OAAQ,KACtG,qDAAuD,SAAU,SAAU,IAAK,IAAK,MAAO,KAAM,MAAO,KAAM,OAAQ,KACvH,wDAA0D,QAAS,IAAI,IACvE,wDAA0D,QAAS,MAAO,OAAQ,IAAI,EAEtF,mDAAsD,KAAM,YAC5D,6DAAgE,IAAK,EACrE,sEAAyE,IAAK,MAC9E,sEAAyE,IAAK,KAE9E,0FADA,2FAC6F,IAAK,EAClG,iFAAoF,IAAK,MACzF,kFAAqF,IAAK,KAEhF,iDAAoD,KAAM,YAEpE,oEADA,oEACuE,QAAS,EAEhF,wFADA,yFAC2F,QAAS,EACpG,+EACA,gFAAmF,QAAS,EAG5F,cAAc,SAAU,MAAO,MAAO,KAAM,OAAQ,KAAM,QAAS,OACnE,iBAAiB,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,cAAe,IAAK,WAAW,OAAQ,OAAQ,QAAS,UAAU,KAAM,iBAAkB,QAAS,MAAM,KAAM,cAAe,IAAK,QAAS,IAC3M,uBAAuB,QAAS,IAChC,wBAAwB,QAAS,EACjC,gCAAgC,QAAS,KAAM,UAAW,KAG1D,sBAAsB,OAAQ,KAAM,WAAY,IAChD,2CAA4C,QAAQ,EAAG,iBAAiB,KAAM,MAAM,QAAS,WAAW,KACxG,oCAAoC,QAAQ,KAC5C,oBAAoB,SAAS,SAAU,MAAM,MAAO,QAAQ,KAAM,OAAO,IAAI,MAAM,QAAS,iBAAiB,KAAM,WAAY,EAAE,EAAE,KAAK,eACxI,uBAAuB,OAAQ,QAAS,MAAO,KAAM,OAAQ,IAAI,MAAM,QAAS,OAAQ,KAAM,MAAO,KAAM,SAAU,OAAQ,OAAQ,KAAK,EAAE,EAAE,KAAM,QAAS,IAAI,IAAK,WAAY,OAClL,6BAA6B,SAAU,SAAU,QAAS,EAAG,OAAQ,IAAI,MAAM,QAAS,WAAY,QAGpG,YAAY,QAAS,MAAO,SAAU,SAAU,QAAS,KAAM,YAAa,KAAM,OAAQ,IAAI,MAAM,KAAM,kBAAmB,IAAK,iBAAkB,KAAM,MAAO,KAAM,YAAa,aAAa,CAAC,QAAQ,CAAC,iBAAkB,UAAW,KAGxO,oBACA,uBACA,uBAAuB,aAAc,EAAG,aAAc,MAAO,aAAc,KAC3E,oBAAoB,SAAU,SAAU,QAAS,aAAc,eAAgB,OAAQ,aAAc,IAAK,MAAO,MAAO,OAAQ,MAAO,cAAe,IAAK,iBAAiB,KAC5K,yCAAyC,MAAO,KAAM,OAAQ,YAC9D,uBAAuB,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAM,oBAAqB,IAC9F,uBAAuB,SAAS,SAAU,QAAS,KAAM,oBAAqB,IAC9E,oCAAoC,OAAQ,KAAM,aAAc,KAAM,UAAW,KACjF,0CAA0C,SAAU,SAAU,KAAM,KAAM,IAAK,IAAK,YAAa,OAAQ,WAAY,KAAM,MAAO,QAClI,uBAAuB,OAAQ,EAAE,KAAM,QAAS,aAAc,eAAgB,OAC9E,kCAAkC,QAAS,MAAO,OAAQ,EAAG,QAAS,EAAE,KAAM,iBAAkB,QAAS,aAAc,QAAS,MAAO,KACvI,2CAA2C,iBAAkB,QAAS,aAAc,KAAM,MAAO,QACjG,8CAA8C,cAAe,KAC7D,8CAA8C,OAAQ,EAAG,UAAW,eACpE,qBAAqB,QAAS,IAAI,EAAG,SAAU,KAC/C,wBAAwB,OAAQ,KAAM,YAAa,KAAM,WAAY,YAAc,QAAS,EAAE,KAAK,gBAAiB,eACpH,8BAA8B,iBAAkB,QAAS,WAAY,IAAI,IACzE,iCAAiC,QAAS,KAAK,KAAM,WAAY,OAAQ,MAAO,KAGhF,YACA,cAAc,QAAS,aAAc,eAAgB,OACrD,YAAY,QAAS,KAAK,IAAI,KAAK,EAAG,UAAW,EACjD,eAAe,WAAY,YAC3B,4BAA6B,UAAW,KAAM,MAAO,QACrD,4BAA4B,aAAc,IAAK,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAC5F,uBACA,kBAAkB,OAAQ,QAAS,UAAW,YAAa,kBAAmB,YAC9E,iCAAiC,OAAQ,QAAS,UAAW,SAG7D,mBAAmB,MAAO,KAAM,OAAQ,KAAM,OAAQ,IAAI,MAAM,KAAM,QAAS,IAAK,cAAe,IAAK,YAAa,KAAM,QAAS,aAAc,OAAQ,QAAS,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAAK,WAAY,WACjO,yBAAyB,aAAc,QACvC,wCAAwC,MAAO,KAAM,OAAQ,KAAM,YAAa,KAChF,wCAAwC,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,QAAS,IAC/F,wCAAwC,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,QAAS,IAE/F,mCAAmC,QAAS,MAAO,WAAY,4IAA8I,cAAe,IAC5N,gCAAgC,QAAS,MAAO,OAAQ,KAAM,WAAY,WAAY,OAAQ,IAAI,MAAM,gBAAiB,cAAe,IAAK,WAAY,OACzJ,6BAA6B,QAAS,aAAc,MAAO,KAAM,UAAW,KAC5E,8CAA8C,MAAO,KAErD,wBAAwB,SAAU,SAAU,KAAM,UAAW,IAAK,UAAW,QAAS,SAAU,MAAO,MAAO,OAAQ,IAAI,EAAG,QAAS,IAAK,WAAY,KAAM,OAAQ,IAAI,MAAM,QAAS,cAAe,IAAK,WAAY,EAAE,IAAI,IAAI,gBAClO,gCAAgC,OAAQ,MAAO,SAAU,SACzD,yBAAyB,MAAO,MAAO,OAAQ,KAAM,SAAU,SAC/D,+BAA+B,MAAO,KAAM,OAAQ,KAAM,SAAU,SAAU,IAAK,EAAG,KAAM,EAAG,WAAY,8CAC3G,+BAA+B,MAAO,KAAM,OAAQ,KAAM,SAAU,SAAU,IAAK,EAAG,KAAM,EAAG,WAAY,uCAC3G,gCAAgC,MAAO,KAAM,OAAQ,KAAM,OAAQ,IAAI,MAAM,KAAM,cAAe,IAAK,SAAU,SAAU,IAAK,KAAM,MAAO,KAAM,OAAQ,QAC3J,wBAAwB,SAAU,SAAU,IAAK,EAAG,MAAO,EAAG,MAAO,KAAM,OAAQ,KAAM,WAAY,kDACrG,+BAA+B,MAAO,KAAM,OAAQ,IAAK,WAAY,EAAE,EAAE,IAAI,KAAS,WAAY,WAAY,WAAY,KAAM,cAAe,IAAK,OAAQ,IAAI,MAAM,QAAS,OAAQ,QAAS,SAAU,SAAU,KAAM,EAC1N,8BAA8B,QAAS,KAAM,OAAQ,KAAM,WAAY,IAAK,WAAY,4IACxF,iCAAiC,OAAQ,KAAM,SAAU,SACzD,gCAAgC,MAAO,IAAK,OAAQ,KAAM,WAAY,EAAE,EAAE,IAAI,KAAS,WAAY,WAAY,WAAY,KAAM,cAAe,IAAK,OAAQ,IAAI,MAAM,QAAS,OAAQ,QAAS,SAAU,SAAU,IAAK,EAC1N,4BAA4B,YAAa,IAAK,UAAW,EACzD,uBAAuB,MAAO,KAAM,OAAQ,KAAO,cAAe,IAAK,QAAS,aAAc,YAAa,IAAK,cAAe,IAAK,OAAQ,QAC5I,wCAAwC,YAAa,EACrD,+BAA+B,WAAY,4IAC3C,kCAAkC,WAAY,EAAE,EAAE,IAAI,IAAI,gBAC1D,2BAA6B,OAAQ,KAAM,cAAe,IAC1D,8BAA8B,WAAY,MAAO,YAAa,IAC9D,8DAA8D,OAAQ,EAAE,EAAE,EAAE,KAC5E,+CAA+C,MAAO,KAAM,aAAc,KAAM,UAAW,KAC3F,gDAAgD,MAAO,MAAO,OAAQ,KAAM,MAAO,QAGnF,cAAc,OAAQ,IAAK,WAAY,KAAM,cAAe,IAAK,SAAU,SAAU,OAAQ,QAC7F,kBAAkB,cAAe,IAAK,SAAU,SAAU,OAAQ,KAClE,mBAAmB,SAAU,SAAU,IAAK,EAAG,MAAO,IAAK,OAAQ,IAAK,cAAe,IAAK,WAAY,KAAM,kBAAmB,iBAAkB,UAAW,iBAC9J,mBAAmB,MAAO,KAAM,OAAQ,KAAM,SAAU,SAAU,IAAK,MAAO,kBAAmB,iBAAkB,UAAW,iBAAkB,QAAS,GAAI,WAAY,OACzK,uBAAuB,MAAO,KAAM,OAAQ,KAAM,cAAe,IAAK,WAAY,KAAM,QAAS,aAAc,eAAgB,OAAQ,OAAQ,QAAS,WAAY,IACpK,yBAAyB,QAAS,GAAI,OAAQ,KAAM,QAAS,aAAc,eAAgB,OAE3F,0CADA,6BAC0C,UAAW,WACrD,4CAA4C,UAAW,mBACvD,mBAAmB,SAAU,SAAU,IAAK,MAAO,QAAS,SAAU,YAAY,OAAQ,QAAS,KAAM,kBAAmB,iBAAkB,UAAW,iBAAkB,MAAO,KAAM,WAAY,KAAM,cAAe,IAAK,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAC1Q,yBAAyB,QAAS,GAAI,SAAU,SAAU,OAAQ,MAAO,KAAM,IAAK,YAAa,KAAM,MAAO,EAAG,OAAQ,EAAG,aAAc,IAAK,aAAc,MAAO,aAAc,KAAK,YAAY,YAAY,YAC/M,oBAAoB,MAAO,KAAM,OAAQ,KAAM,OAAQ,IAAI,MAAM,KAAM,cAAe,IAAK,UAAW,KAAM,YAAa,KAAM,SAAU,SAAU,MAAO,EAAG,IAAK,MAAO,WAAY,WACrL,wBAAwB,SAAU,SAAU,IAAK,EAAG,MAAO,EAAG,MAAO,KAAM,OAAQ,KAAM,YAAa,IAAI,MAAM,KAChH,0BAA0B,OAAQ,QAAS,SAAU,SAAU,MAAO,EAAG,OAAQ,EAAG,MAAO,KAAM,OAAQ,IAAK,UAAW,KAAM,YAAa,KAAM,WAAY,OAAQ,MAAO,KAC7K,sCAAsC,IAAK,EAAG,cAAe,IAAI,MAAM,KACvE,wBAAwB,OAAQ,KAAM,UAAW,KACjD,8BAA8B,OAAQ,KAAM,OAAQ,KAAM,cAAe,KACzE,gCAAgC,MAAO,QAEvC,uBAAuB,MAAO,IAAK,YAAa,KAChD,yCAAyC,MAAO,IAChD,0CAA0C,IAAK,KAAM,KAAM,EAAK,kBAAmB,gBAAiB,UAAW,gBAC/G,0CAA0C,IAAK,KAAM,KAAM,MAAO,kBAAmB,gBAAiB,UAAW,gBACjH,0CAA0C,IAAK,KAAM,KAAM,IAC3D,gBACE,uBAAuB,YAAa,MACpC,8CAA8C,YAAa,EAAG,cAAe,MAC7E,0CAA0C,YAAa,KACvD,mBAAqB,YAAa,KAIpC,YAAY,YAAa,KACzB,iCAAiC,OAAQ,YACzC,gBAAgB,MAAO,KAAM,SAAU,SACvC,iBAAiB,QAAS,KAAM,aAAc,KAAM,SAAU,SAC9D,kCAAkC,aAAc,KAChD,uDAAuD,QAAS,GAAI,SAAU,SAAU,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,OAAQ,EAAG,WAAY,IAAI,OAAO,QAC9J,kBAAkB,SAAU,SAAU,QAAS,IAAI,EAAG,OAAQ,KAAM,YAAa,OACjF,wBAAwB,iBAAkB,KAC1C,yCAAyC,iBAAkB,cAC3D,yDAAyD,MAAO,KAAM,gBAAiB,UAAW,WAAY,IAC9G,iBAAiB,QAAS,aAAc,eAAgB,OAAQ,OAAQ,QAAS,cAAe,KAChG,wCAAwC,QAAS,GAAI,SAAU,SAAU,IAAK,EAAG,KAAM,KAAM,MAAO,EAAG,OAAQ,KAAM,YAAa,IAAI,OAAO,QAC7I,gEAAgE,OAAQ,KACxE,2DAA2D,OAAQ,EACnE,sBAAsB,QAAS,aAAc,eAAgB,OAAQ,SAAU,SAAU,OAAQ,KAAM,YAAa,KAAM,OAAQ,EAAE,KAAM,MAAO,QACjJ,iBAAiB,OAAQ,KAAM,YAAa,KAAM,MAAO,KAAM,WAAY,OAAQ,OAAQ,IAAI,MAAM,QACrG,kCAAkC,UAAW,KAC7C,6BAA6B,UAAW,KAAM,MAAO,QACrD,sBAAsB,QAAS,EAAE,IACjC,4BAA4B,QAAS,GAAI,SAAU,SAAU,KAAM,IAAK,IAAK,IAAK,QAAS,IAAK,MAAO,EAAG,OAAQ,EAAG,aAAc,IAAK,aAAc,MAAO,aAAc,YAAY,YAAY,YAAY,QAAS,WAAY,IACpO,uFAAuF,UAAW,cAAc,mBAChH,gBAAgB,QAAS,aAAc,eAAgB,OAAQ,MAAO,KACtE,mBAAmB,cAAe,KAAM,MAAO,QAC/C,qBAAqB,WAAY,OAAQ,QAAS,aAAc,eAAgB,OAAQ,SAAU,SAClG,iCAAiC,QAAS,aAAc,eAAgB,OAAQ,QAAS,EAAE,IAAK,OAAQ,QACxG,uCAAuC,MAAO,KAAM,WAAY,IAChE,6CAA6C,WAAY,QACzD,sBAAsB,SAAU,SAAU,QAAS,aAAc,eAAgB,OAAQ,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAG,OAAQ,KAAM,iBAAkB,gBACtK,sBAAsB,WAAY,OAAQ,MAAO,KAMjD,YAAY,2BAA4B,IAAM,4BAA6B,KAAM,mBAAoB,IAAM,oBAAqB,KAChI,uBAAuB,QAAS,aAChC,iBAAiB,kCAAmC,SAAU,0BAA2B,SACzF,aACA,eAAe,WAAY,IAAI,IAAK,mBAAoB,IAAI,IAG5D,gCACE,KAAM,kBAAmB,UACzB,GAAI,kBAAmB,gBAEzB,wBACE,KAAM,UAAW,UACjB,GAAI,UAAW,gBAEjB,mBAAmB,uBAAwB,aAAc,eAAgB,aAAc,2BAA4B,GAAI,mBAAoB,GAAK,kCAAmC,OAAQ,0BAA2B,OAGtN,4BACE,KAAM,kBAAmB,sBAAyB,QAAS,GAC3D,GAAI,kBAAmB,mBAAuB,QAAS,GAEzD,oBACE,KAAM,UAAW,sBAA0B,QAAS,GACpD,GAAI,UAAW,mBAAuB,QAAS,GAEjD,eAAe,uBAAwB,SAAU,eAAgB,SAGjE,+BACE,KAAM,kBAAmB,sBAAyB,QAAS,GAC3D,GAAI,kBAAmB,mBAAuB,QAAS,GAEzD,uBACE,KAAM,UAAW,sBAA0B,QAAS,GACpD,GAAI,UAAW,mBAAuB,QAAS,GAEjD,kBAAkB,uBAAwB,YAAa,eAAgB,YAGvE,sBACE,GAAI,QAAS,GAAK,UAAW,uBAC7B,KAAM,QAAS,EAAG,UAAW,oBAE/B,iBAAiB,eAAgB,WAGjC,yBACE,GAAI,QAAS,GAAK,UAAW,sBAC7B,KAAM,QAAS,EAAG,UAAW,oBAE/B,oBAAoB,eAAgB,cAGpC,+BACE,GAAI,QAAS,GAAK,kBAAmB,UACrC,KAAM,QAAS,EAAG,kBAAmB,UAEvC,uBACE,GAAI,QAAS,GAAK,cAAe,UAAW,UAAW,UACvD,KAAM,QAAS,EAAG,cAAe,SAAU,UAAW,UAExD,kBAAkB,uBAAwB,YAAa,eAAgB,YAGvE,sCACE,GAAI,QAAS,GAAK,kBAAmB,UACrC,IAAK,QAAS,GAAK,kBAAmB,WACtC,KAAM,QAAS,EAAG,kBAAmB,UAEvC,8BACE,GAAI,QAAS,GAAK,UAAW,UAC7B,IAAK,QAAS,GAAK,UAAW,WAC9B,KAAM,QAAS,EAAG,UAAW,UAE/B,wBAAwB,uBAAwB,mBAAoB,eAAgB,mBAGpF,4BACE,GAAI,QAAS,GAAK,UAAW,WAC7B,KAAM,QAAS,EAAG,UAAW,UAE/B,uBAAuB,eAAgB,iBAGvC,mCACE,GAAI,QAAS,GAAK,UAAW,WAC7B,IAAK,QAAS,GAAK,UAAW,UAC9B,KAAM,QAAS,EAAG,UAAW,UAE/B,8BAA8B,eAAgB,wBAI9C,gCACE,GAAI,QAAS,EACb,KAAM,QAAS,GAEjB,wBACE,GAAI,QAAS,EACb,KAAM,QAAS,GAEjB,mBAAmB,uBAAwB,aAAc,eAAgB,aAGzE,iCACE,GAAI,QAAS,EACb,KAAM,QAAS,GAEjB,yBACE,GAAI,QAAS,EACb,KAAM,QAAS,GAEjB,oBAAoB,uBAAwB,cAAe,eAAgB,cCzsD3E,2BAA2B,QAAS,KAAM,SAAU,SAAU,MAAO,OAGrE,iBAAiB,UAAW,KAAM,YAAa,aAAa,CAAC,QAAQ,CAAC,iBAGtE,iBAAiB,QAAS,MAAO,SAAU,SAAU,QAAS,YAAc,OAAQ,IAAI,MAAM,KAAM,kBAAmB,IAAK,iBAAkB,KAAM,MAAO,KAC3J,qBAAqB,OAAQ,YAE7B,mBAAmB,SAAU,SAAU,QAAS,EAAG,QAAS,EAAE,KAAM,OAAQ,KAAM,YAAa,KAAM,cAAe,IAAI,MAAM,KAAM,iBAAkB,QAAS,UAAW,KAC1K,4CAA8C,SAAU,SAAU,MAAO,KAAM,IAAK,EAAG,MAAO,QAC9F,2BAA6B,aAAc,KAE3C,iBAAiB,SAAU,SAAU,QAAS,MAAO,QAAS,EAAG,OAAQ,YAAc,QAAS,KAAK,YAAc,WAAY,OAAQ,WAAY,KACnJ,iBAAiB,SAAU,SAAU,YAAa,KAAM,OAAQ,YAChE,wBAAwB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,QAAS,EAAE,IAAK,UAAW,KAAM,OAAQ,KAAM,WAAY,MAAO,YAAa,KAAM,YAAa,OAAQ,SAAU,OACjL,yBAAyB,QAAS,EAAE,KAAM,UAAW,WAAY,YAAa,SAE9E,sDAA0D,aAAc,KACxE,oBAAoB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,OAAQ,EAAG,QAAS,EAAG,MAAO,KAAM,aAAc,IAAI,MAAM,KAAM,aAAc,uBAAwB,iBAAkB,QAAS,eAAgB,KAG5M,oCAAsC,SAAU,KAChD,8EAAoF,YAAa,IAAK,UAAW,OACjH,uCAAyC,mBAAoB,YAAc,WAAY,cAEvF,mBAAmB,SAAU,SAAU,IAAK,IAAK,MAAO,KAAM,cAAe,KAAM,QAAS,EAC5F,wBAA0B,SAAU,SAAU,MAAO,EAAG,IAAK,EAAG,QAAS,EAAE,IAAK,MAAO,KAAM,WAAY,IAAI,IAC7G,8BAAgC,MAAO,QACvC,iBAAiB,QAAS,KAAM,OAAQ,QACxC,yEAA6E,QAAS,eACtF,2DAA6D,QAAS,MACtE,kEAAoE,QAAS,KAG7E,uBACA,0CAA4C,aAAc,uBAAwB,iBAAkB,QACpG,uBAAuB,aAAc,IAAK,MAAO,KACjD,2CAA6C,mBAAoB,QAAS,WAAY,IAAM,MAAO,QAInG,qBAAqB,QAAS,KAC9B,gCACA,qCAAuC,OAAQ,EAC/C,+BAAiC,SAAU,SAAU,QAAS,EAAG,cAAe,EAChF,gDAAoD,aAAc,EAClE,qCAAqC,QAAS,KAE9C,yBAAyB,SAAU,SAAU,QAAS,KACtD,gCAAkC,SAAU,SAAU,IAAK,EAAG,KAAM,EAAG,MAAO,KAAM,OAAQ,KAAM,OAAQ,KAG1G,kBAAkB,SAAU,SAAU,MAAO,KAAM,IAAK,IAAK,YAAa,OAC1E,oBAAsB,QAAS,aAAc,YAAa,IAAK,QAAS,IAAK,OAAQ,QACrF,sCAAwC,MAAO,KAC/C,0BAA4B,MAAO,QAGnC,iBAAiB,SAAU,MAAO,KAAM,EAAG,IAAK,EAAG,QAAS,QAAS,MAAO,KAAM,OAAQ,KAAM,iBAAkB,KAClH,kCAAkC,MAAO,eAAiB,aAAc,YAAc,iBAAkB,cACxG,kCACA,kCACA,kCAAkC,OAAQ,6BAA+B,WAAY,WACrF,0CAA0C,SAAU,KAGpD,+BAA+B,YAAa,eAAiB,kBAAmB,IAChF,mDAAqD,iBAAkB,YACvE,qCACA,yDAA2D,aAAc,uBCrEzE,uBAAuB,QAAS,KAAM,SAAU,SAAU,MAAO,OAGjE,iBAAiB,OAAQ,EAAG,QAAS,EAGrC,eAAgB,iBAAiB,WAAY,WAC7C,eAAe,SAAU,SAAU,QAAS,SAAU,OAAQ,IAAI,EAAG,cAAe,IAAK,UAAW,KAAM,YAAa,OAAQ,2BAA4B,IAAM,mBAAoB,IAAM,4BAA6B,KAAM,oBAAqB,KACnP,oBAAoB,MAAO,MAE3B,0BADA,wBAEA,uBAAuB,oBAAqB,IAAK,4BAA6B,IAC9E,qBAAqB,IAAK,EAAG,KAAM,EAAG,MAAO,KAAM,OAAQ,KAAM,QAAS,4CAA6C,SAAU,MAAO,UAAW,SAAU,eAAgB,KAG7K,2BACE,GAAI,QAAS,GAAK,UAAW,sBAC7B,KAAM,QAAS,EAAG,UAAW,oBAG/B,eAAe,eAAgB,gBAC/B,sBAAuB,SAAU,SAAU,QAAS,EAAG,QAAS,aAAc,OAAQ,EAAG,kBAAmB,KAAM,UAAW,KAI7H,iCADA,iCACiC,QAAS,eAE1C,iCADA,iCACiC,QAAS,uBAC1C,sDAAwD,QAAS,eAKjE,wDADA,uDADA,qDAE0D,QAAS,eAGnE,sBAAsB,SAAU,SAAU,YAAY,KAAM,QAAS,KAAK,KAAK,IAC/E,wBAAwB,QAAS,aAAc,eAAgB,OAC/D,wBAAwB,SAAU,SAAU,IAAK,KAAM,QAAS,EAAE,IAAK,MAAO,KAAM,UAAW,KAAM,OAAQ,QAC7G,uCAAuC,KAAM,KAC7C,uCAAuC,KAAM,KAC7C,uCAAuC,MAAO,KAC9C,uCAAuC,MAAO,KAC9C,gBAAgB,MAAO,KAAM,WAAY,OAAQ,WAAY,WAAY,cAAe,SAAU,SAAU,OAAQ,YAAa,OACjI,qBAAqB,QAAS,EAAE,KAAM,OAAQ,QAC9C,mBAAmB,OAAQ,kBAG3B,uBAAuB,SAAU,SAAU,QAAS,KAAM,iBAAkB,KAAM,oBAAqB,KAAM,gBAAiB,KAC9H,6BAA6B,gBAAiB,SAAU,eAAgB,EAExE,0BADA,0BAC0B,MAAO,KAAM,OAAQ,KAAM,QAAS,EAAG,WAAY,OAC7E,0BAA0B,YAAa,IACvC,0BAA0B,SAAU,SAAU,OAAQ,QACtD,kBAAkB,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,KAAM,YAAa,KAAM,UAAW,KAAM,SAAU,OAClH,yBAAyB,SAAU,SAAU,QAAQ,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,OAAQ,IAAK,cAAe,IACvH,6BAA6B,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,UAAW,KAAM,UAAW,UAC9F,6BAA6B,QAAQ,QAAS,MAAO,QACrD,wCAA0C,QAAQ,QAAS,MAAO,QAClE,wDAAwD,MAAO,KAG/D,sBAAsB,SAAU,SAAU,OAAQ,KAAM,YAAa,KAAM,QAAS,KACpF,2BAA2B,QAAS,aAAe,eAAgB,IAAK,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAAM,OAAQ,IAAI,MAAM,QAAS,cAAe,IAAK,iBAAkB,KAAM,UAAW,KAAM,OAAQ,QAAS,YAAa,OAAQ,WAAY,IAAI,IACxQ,iCAAiC,MAAO,QACxC,iDAAiD,OAAQ,QAAS,aAAc,sBAChF,uDAAuD,MAAO,KAC9D,6DAA6D,aAAc,EAC3E,qBAAsB,SAAU,SAAU,MAAO,KAAM,IAAK,KAC5D,0BAA0B,OAAQ,EAAE,EAAE,EAAE,KAAM,cAAe,EAC7D,sCAAwC,cAAe,IAAI,EAAI,EAAI,IACnE,qCAAuC,cAAe,EAAI,IAAI,IAAI,EAGlE,wBAAwB,MAAO,KAAM,QAAS,IAAI,EAAG,QAAS,aAAa,eAAgB,IAAK,SAAU,KAAM,WAAY,MAAO,WAAY,OAC/I,4CAA4C,QAAS,aAAa,YAAa,IAAI,MAAM,QACzF,2BAA2B,QAAS,IAAI,IAAK,OAAQ,QAAS,YAAa,KAG3E,mCAAmC,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,MAAO,KAAM,OAAQ,KAAM,QAAS,KAAM,WAAY,WAAY,iBAAkB,KAC5J,sCAAsC,SAAU,SAAU,QAAS,aAAc,MAAO,MAAO,OAAQ,KAAM,YAAa,KAAM,OAAQ,IAAI,EAAG,eAAgB,OAAQ,WAAY,OAAQ,OAAQ,QAAS,WAAY,KACxN,sCAAsC,MAAO,IAAK,OAAQ,KAAK,EAE/D,qCAAqC,OAAQ,KAAM,OAAQ,EAAG,YAAa,OAAQ,OAAQ,QAC3F,oCAAoC,SAAU,SAAU,IAAK,KAAM,OAAQ,EAAG,YAAa,KAC3F,qCAAqC,OAAQ,MAAO,SAAU,OAC9D,8CAA8C,WAAY,KAC1D,wCAAwC,MAAO,KAAM,aAAc,KAAM,OAAQ,KAAM,YAAa,KAAM,WAAY,KAAM,OAAQ,QAGpI,oBAAoB,SAAU,SAAU,IAAK,MAAO,KAAM,IAAK,MAAO,MAAO,YAAa,OAAQ,YAAa,KAAM,QAAS,KAAM,WAAY,OAAQ,UAAW,KAAM,MAAO,QAIhL,qBAAqB,MAAO,MAC5B,yCAAyC,QAAS,aAAc,eAAgB,OAAO,UAAW,IAElG,iEADA,gEACiE,YAAa,IAAI,MAAM,QACxF,gFAAiF,gFACjF,gFAAiF,gFAAgF,QAAS,KAI1K,eAAgB,oBAAoB,OAAQ,IAAI,MAAM,QAAS,WAAY,EAAE,IAAI,IAAI,gBAAiB,iBAAkB,KAAM,MAAO,KACrI,sBAAsB,cAAe,IAAI,MAAM,QAC/C,8BACA,iCAAiC,MAAO,QACxC,uBAAuB,WAAY,KAAK,EAAG,cAAe,KAAK,EAC/D,0BAA0B,MAAO,KACjC,0BAA0B,MAAO,KACjC,0CAA0C,MAAO,QACjD,gDAAgD,QAAS,GAAI,SAAU,SAAU,MAAO,KAAM,OAAQ,KAAM,KAAM,EAAG,IAAK,EAAG,OAAQ,IAAI,MAAM,QAAS,WAAY,WACpK,sEAAsE,iBAAkB,QACxF,mDAAmD,iBAAkB,kBAErE,iDADA,sCACiD,QAAS,KAC1D,oCACA,6BACA,iCAAiC,iBAAkB,KAAM,MAAO,KAChE,yBAAyB,OAAQ,EAAG,QAAS,EAAG,OAAQ,IAAI,MAAM,QAAS,kBAAmB,EAC9F,qCAAqC,kBAAmB,IACxD,4BAA4B,WAAY,IAExC,yCADA,yCACyC,MAAO,QAEhD,8DADA,8DAC8D,iBAAkB,kBAChF,sBAAsB,WAAY,IAAI,MAAM,QAC5C,oBAAoB,MAAO,QAC3B,yBAAyB,iBAAkB,QAC3C,8DAA8D,QAAS,KACvE,0CAA4C,MAAO,QACnD,2BAA2B,+BAA+B,iBAAkB,kBAAoB,MAAO,eACvG,iCACA,uCAAuC,WAAW,cAAiB,MAAO,kBAAoB,OAAQ,sBAAwB,iBAAkB,KAAM,oBAAqB,KAAM,gBAAiB,KAClM,8BAA8B,QAAS,IAAI,EAAE,OAAQ,KAGrD,oBAAoB,OAAQ,KAC5B,wCAAwC,MAAO,MAC/C,wCAAwC,MAAO,MAC/C,0CAA0C,OAAQ,KAAM,iBAAkB,QAC1E,4CACA,+CAA+C,MAAO,QACtD,kDACA,qDAAqD,MAAO,KAC5D,2CAA2C,OAAQ,IAAI,MAAM,QAAS,WAAY,KAAM,cAAe,KACvG,gEAAgE,YAAa,KAC7E,0CAA0C,OAAQ,IAAI,MAAM,QAM5D,2CADA,0CAFA,8CACA,iDAE2C,OAAQ,IAAI,MAAM,QAC7D,4DACA,kEAAkE,iBAAkB,kBAAoB,MAAO,kBAE/G,6EADA,6EAC6E,MAAO,kBAEpF,wCADA,uCACwC,OAAQ,IAAI,EAAE,EAAE,IAExD,2CADA,0CAC2C,OAAQ,EAAE,KAAK,KAAK,EAC/D,0CAA0C,OAAQ,KAAM,YAAa,KACrE,2CAA2C,OAAQ,KAAM,YAAa,KACtE,kDAAkD,OAAQ,KAAK,WAAY,KAI3E,+DADA,oDAC+D,MAAO,KAAK,OAAQ,KAAK,YAAa,KAAK,cAAe,KAAK,OAAQ,EAAE,IAAI,QAAS,EACrJ,+EAA+E,iBAAkB,sBACjG,uEAAuE,OAAQ,EAAE,MAGjF,6CAA8C,MAAO,MACrD,6CAA8C,MAAO,MAAM,KAAM,MACjE,8CAA+C,QAAS,KAGxD,iFADA,gFADA,8EAEoF,QAAS,uBAC7F,4CAA4C,QAAS,KCpLrD,qBAAqB,QAAS,KAAM,SAAU,SAAU,MAAO,OAG3C,aAApB,mBAAiC,SAAS,MAAO,UAAU,SAAU,eAAgB,KACrF,mBAAmB,IAAI,EAAG,KAAK,EAAG,MAAM,KAAM,OAAO,KAAM,QAAQ,4CACnE,aAAa,2BAA4B,MACzC,aAAa,IAAI,MAAO,KAAM,EAAG,OAAO,EAAG,QAAQ,EAAG,iBAAiB,KAAM,wBAAyB,QAAS,cAAe,IAAK,WAAY,IAAI,IAAI,KAAK,eAC5J,mBAAmB,SAAS,SAC5B,qBAAqB,SAAS,SAC9B,oBAAoB,OAAQ,IAAI,MAAM,QAAS,OAAQ,IAAI,MAAM,eAAgB,WAAY,IAAI,IAAI,IAAI,eAEzG,mBADA,yBACmB,QAAS,aAAc,eAAgB,OAAQ,SAAU,OAAQ,MAAM,EAE1F,kBAAkB,QAAS,KAAM,SAAU,MAAO,UAAW,SAAU,KAAM,EAAK,IAAK,EAAK,MAAO,KAAM,OAAQ,KAAM,OAAQ,KAAM,QAAS,EAAG,OAAO,iBAAkB,iBAAkB,KAAM,QAAS,WAC3M,oBAAoB,SAAU,SAAU,MAAO,KAAM,OAAQ,KAAM,MAAO,EAAG,OAAQ,EAAG,OAAQ,UAGhG,YAAY,4BAA6B,KAAM,oBAAqB,KAAM,2BAA2B,IAAK,mBAAmB,IAE7H,kCACC,GAAI,QAAS,EAAG,kBAAmB,UAAW,UAAW,UACzD,KAAM,QAAS,EAAG,kBAAmB,SAAU,UAAW,UAE3D,0BACC,GAAI,QAAS,EAAG,kBAAmB,UAAW,cAAe,UAAW,UAAW,UACnF,KAAM,QAAS,EAAG,kBAAmB,SAAU,cAAe,SAAU,UAAW,UAEpF,eAAe,uBAAwB,eAAe,eAAgB,eAEtE,oCAAoC,GAAG,QAAQ,EAAE,kBAAkB,UAAU,oBAAoB,UAAU,UAAU,oBAAoB,kCAAkC,YAAY,0BAA0B,YAAY,IAAI,QAAQ,EAAE,kBAAkB,YAAY,iBAAiB,UAAU,YAAY,iBAAiB,kCAAkC,SAAS,0BAA0B,UAAU,4BAA4B,GAAG,QAAQ,EAAE,kBAAkB,UAAU,oBAAoB,cAAc,UAAU,oBAAoB,UAAU,UAAU,oBAAoB,kCAAkC,YAAY,0BAA0B,YAAY,IAAI,QAAQ,EAAE,kBAAkB,YAAY,iBAAiB,cAAc,YAAY,iBAAiB,UAAU,YAAY,iBAAiB,kCAAkC,SAAS,0BAA0B,UAAU,eAAe,uBAAuB,iBAAiB,eAAe,iBAEr7B,qCAAqC,GAAG,QAAQ,EAAE,kBAAkB,mBAAmB,UAAU,mBAAmB,KAAK,QAAQ,EAAE,kBAAkB,cAAc,UAAU,eAAe,6BAA6B,GAAG,QAAQ,EAAE,kBAAkB,mBAAmB,cAAc,mBAAmB,UAAU,mBAAmB,KAAK,QAAQ,EAAE,kBAAkB,cAAc,cAAc,cAAc,UAAU,eAAe,eAAe,uBAAuB,kBAAkB,eAAe,kBAEpf,oCAAoC,GAAG,QAAQ,EAAE,kBAAkB,UAAU,oBAAoB,UAAU,UAAU,oBAAoB,kCAAkC,YAAY,0BAA0B,YAAY,IAAI,QAAQ,EAAE,kBAAkB,YAAY,iBAAiB,UAAU,YAAY,iBAAiB,kCAAkC,SAAS,0BAA0B,UAAU,4BAA4B,GAAG,QAAQ,EAAE,kBAAkB,UAAU,oBAAoB,cAAc,UAAU,oBAAoB,UAAU,UAAU,oBAAoB,kCAAkC,YAAY,0BAA0B,YAAY,IAAI,QAAQ,EAAE,kBAAkB,YAAY,iBAAiB,cAAc,YAAY,iBAAiB,UAAU,YAAY,iBAAiB,kCAAkC,SAAS,0BAA0B,UAAU,eAAe,uBAAuB,iBAAiB,eAAe,iBAEr7B,gCAAgC,GAAG,QAAQ,EAAE,kBAAkB,kBAAkB,gBAAgB,UAAU,kBAAkB,gBAAgB,KAAK,QAAQ,EAAE,kBAAkB,cAAgB,UAAa,UAAU,cAAgB,WAAc,wBAAwB,GAAG,QAAQ,EAAE,kBAAkB,kBAAkB,gBAAgB,cAAc,kBAAkB,gBAAgB,UAAU,kBAAkB,gBAAgB,KAAK,QAAQ,EAAE,kBAAkB,cAAgB,UAAa,cAAc,cAAgB,UAAa,UAAU,cAAgB,WAAc,eAAe,uBAAuB,aAAa,eAAe,aAE3nB,wBAAwB,GAAG,QAAQ,EAAE,KAAK,QAAQ,GAAG,eAAe,uBAAuB,aAAa,eAAe,aAEvH,+BAA+B,GAAG,KAAK,kBAAkB,cAAc,UAAU,cAAc,IAAI,IAAI,IAAI,IAAI,IAAI,kBAAkB,kBAAkB,UAAU,kBAAkB,IAAI,IAAI,IAAI,IAAI,kBAAkB,iBAAiB,UAAU,kBAAkB,uBAAuB,GAAG,KAAK,kBAAkB,cAAc,cAAc,cAAc,UAAU,cAAc,IAAI,IAAI,IAAI,IAAI,IAAI,kBAAkB,kBAAkB,cAAc,kBAAkB,UAAU,kBAAkB,IAAI,IAAI,IAAI,IAAI,kBAAkB,iBAAiB,cAAc,iBAAiB,UAAU,kBAAkB,eAAe,uBAAuB,YAAY,eAAe,YAAY,0BAA0B,GAAG,QAAQ,EAAE,KAAK,QAAQ,GAGxtB,4BACE,KACE,UAAW,uBACX,GACA,UAAW,oBAGf,gCACE,KACE,UAAW,mBACX,GACA,UAAW,wBAGf,uBAAuB,eAAgB,iBACvC,2BAA2B,eAAgB,qBAG3C,4BACE,KACE,UAAW,sBACX,GACA,UAAW,oBAGf,gCACE,KACE,UAAW,mBACX,GACA,UAAW,uBAGf,uBAAuB,eAAgB,iBACvC,2BAA2B,eAAgB,qBAG3C,0BACE,KACE,UAAW,sBACX,GACA,UAAW,oBAGf,8BACE,KACE,UAAW,mBACX,GACA,UAAW,uBAGf,qBAAqB,eAAgB,eACrC,yBAAyB,eAAgB,mBAGzC,6BACE,KACE,UAAW,uBACX,GACA,UAAW,oBAGf,iCACE,KACE,UAAW,mBACX,GACA,UAAW,wBAGf,wBAAwB,eAAgB,kBACxC,4BAA4B,eAAgB,sBAK5C,mBAAmB,QAAS,EAAE,KAAK,EAAE,KAAM,OAAQ,KAAM,YAAa,KAAM,cAAc,IAAI,MAAM,QAAS,UAAW,KAAM,MAAM,KAAM,SAAU,OAAQ,cAAe,SAAU,YAAa,OAAQ,cAAe,IAAI,IAAI,EAAE,EACnO,oBAAoB,SAAS,SAAU,MAAO,KAAM,OAAO,EAAG,IAAK,KAAM,UAAU,EAAG,YAAa,QACnG,yBAAyB,SAAS,SAAU,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,YAAa,KAAM,WAAY,OAAQ,UAAW,KAAM,OAAQ,QAAS,MAAO,KAAM,UAAW,OAAQ,WAAY,WAC/M,4CAA4C,QAAS,GAAI,SAAU,SAAU,MAAO,KAAM,cAAe,IAAI,MAAM,QAAS,KAAM,IAAK,IAAK,IAAK,OAAQ,MAAO,EAAE,EAAE,KAAM,OAAQ,QAAS,UAAU,OACrM,kDAAkD,iBAAkB,QAEpE,2CADA,4CAC2C,QAAS,GAAI,SAAU,SAAU,KAAM,IAAK,IAAK,IAAK,QAAS,EAAG,MAAO,IAAK,OAAQ,IAAK,OAAQ,KAAK,EAAE,EAAE,KAAM,OAAQ,IAAI,MAAM,QAE/K,iDADA,kDACiD,aAAc,QAC/D,kDAAkD,iBAAkB,QAEpE,8CADA,+CAC8C,MAAO,IAAK,OAAQ,IAAK,OAAQ,KAAK,EAAE,EAAE,KAAM,iBAAkB,KAChH,8CAA8C,QAAS,EAAG,OAAQ,KAAK,EAAE,EAAE,KAC3E,uCAAuC,OAAQ,QAC/C,6CAA6C,QAAQ,GACrD,wCAAwC,SAAS,SAAU,MAAO,MAAO,IAAK,MAAO,MAAO,KAAM,iBAAkB,QAAS,QAAS,IAAK,OAAQ,IAAI,MAAO,MAAO,KAAM,OAAQ,KAAM,UAAW,KAAM,YAAa,OAAQ,cAAe,IAAK,YAAa,EAAG,OAAO,MAAO,SAAS,KAC1R,8CAA8C,QAAS,MAAO,iBAAkB,QAGhF,iBAAiB,WAAY,MAAO,QAAS,EAAE,KAAK,KAAM,eAAgB,KAAM,YAAa,KAAM,oBAAqB,KACxH,mBAAmB,OAAQ,KAAM,YAAa,KAAM,OAAQ,IAAI,IAAI,EAAG,QAAS,EAAE,KAAM,OAAQ,IAAI,MAAM,QAAS,iBAAkB,KAAM,MAAO,KAAM,cAAe,IAAK,YAAa,IAAK,OAAQ,QAAS,gBAAiB,KAAM,WAAY,WAClP,yBAAyB,QAAS,GAAK,gBAAiB,KACxD,0BAA0B,QAAS,GACnC,mCAAmC,aAAc,YAAa,iBAAkB,QAAS,MAAM,KAC/F,mBAAmB,WAAY,KAC/B,mBAAmB,WAAY,OAG/B,oBAAoB,UAAW,MAC/B,yCAAyC,SAAU,SAAU,QAAS,KAAM,YAAa,KAAM,WAAY,UAAW,SAAS,OAAQ,UAAU,KAAM,WAAY,OAAQ,WAAW,KACtL,2DAA2D,SAAU,SAAU,IAAK,KAAM,KAAM,KAAM,MAAO,QAAS,UAAW,KAAM,MAAO,MAC9I,0DAA0D,MAAO,QACjE,6DAA6D,MAAO,QACpE,2DAA2D,IAAK,KAAM,MAAO,QAC7E,8DAA8D,MAAO,QACrE,0DAA0D,MAAO,QACjE,8DAA8D,MAAO,QACrE,gEAAgE,MAAO,QAEvE,iBAAiB,OAAO,IAAI,MAAM,QAAS,OAAO,IAAI,MAAM,eAAgB,cAAc,IAAK,WAAY,KAC3G,iBAAiB,UAAU,MAAO,OAAO,IAAI,MAAM,QAAS,WAAY,KACxE,iBAAiB,UAAU,MAAQ,iBAAkB,KAAM,OAAO,kBAAmB,iBAAkB,eAAiB,MAAO,KAAM,OAAO,KAC5I,oCAAoC,MAAO,KAC3C,sCAAsC,QAAS,KAAK,KAAM,WAAY,OACtE,yCAAyC,QAAS,KAAK,KAAK,KAAK,KAAM,WAAY,KACnF,uCAAuC,SAAS,SAAU,SAAS,KAChC,qCAAnC,mCAAwE,YAAY,KACpF,kBAAkB,WAAW,IAC7B,2BAA2B,QAAS,MAAO,MAAO,KAElD,qBAAqB,cAAc,KAAM,WAAW,IAAO,WAAW,KAAO,OAAO,KACpF,0CAA0C,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,WAAY,OACpG,0BAA0B,UAAW,KAAM,MAAO,QAClD,sBAAsB,WAAY,OAClC,uBAAuB,SAAU,SAAU,OAAQ,KAEnD,6BADA,8BAC6B,QAAS,GAAI,SAAU,SAAU,KAAM,IAAK,IAAK,IAAK,MAAO,KAAM,OAAQ,KAAM,OAAQ,MAAM,EAAE,EAAE,MAAO,cAAe,IAAK,OAAQ,IAAI,MAAM,QAAS,WAAY,WAClM,6BAA6B,aAAc,YAAa,kBAAmB,QAG3E,kBAAkB,WAAY,IAAM,WAAW,KAAM,OAAO,KAC5D,uCAAuC,SAAU,SAAU,YAAa,KAAM,UAAW,KAAM,QAAS,IAAI,KAAM,UAAW,KAAM,OAAO,KAAM,cAAe,IAAK,WAAY,IAAI,IAAI,IAAI,eAAgB,iBAAkB,KAAM,MAAO,KAC3O,qCAAqC,MAAM,KAAM,IAAI,KACrD,sCAAuC,SAAS,SAAW,MAAM,EAAG,OAAO,EAAG,aAAa,IAAK,aAAa,YAAa,aAAa,OAAQ,UAAU,OAClH,sCAAvC,sCAA6E,KAAK,IAAK,mBAAmB,MAAO,mBAAoB,KACrI,sCAAsC,OAAO,KAC7C,sCAAsC,IAAI,KACH,sCAAvC,sCAA6E,IAAK,IAAK,oBAAoB,MAAO,oBAAqB,KACvI,sCAAsC,KAAK,KAC3C,sCAAsC,MAAM,KAG5C,oCAAoC,WAAW,QAAS,MAAM,KAAM,OAAQ,KAC5E,kCAAkC,QAAS,IAAI,KAAK,KAAM,WAAW,IAAI,MAAM,QAC/E,oCAAoC,WAAY,KAAM,aAAc,QAAS,MAAO,KACpF,oDAAoD,WAAW,QAC/D,qCAAqC,WAAY,QAAS,MAAM,KAAM,OAAQ,KAC9E,qCAAqC,WAAY,QAAS,aAAc,QACxE,qDAAqD,WAAW,QAChE,iDACA,kDAAkD,MAAO,KAGzD,mBAAmB,OAAQ,IAAI,MAAM,KAAM,WAAY,IAAI,IAAI,IAAI,eAAgB,cAAe,KAClG,sCAAsC,OAAQ,KAAM,YAAa,KAAM,aAAc,IAAK,cAAe,KAAM,UAAW,KAC1H,uCAAuC,MAAO,EAAG,IAAK,EACtD,4CAA4C,YAAa,EAAG,MAAO,KAAM,OAAQ,KAAM,QAAS,IAChG,6DAA6D,MAAO,KACpE,kDAAkD,iBAAkB,QACpE,mEAAmE,iBAAkB,QAAS,MAAO,KACrG,2DAA2D,QAAS,IAAI,KAAK,KAAM,MAAO,QAC1F,2DAA2D,YAAa,KAAM,aAAc,KAC5F,oCAAoC,QAAS,IAAI,IAAI,KAAM,WAAW,IAAI,MAAM,QAAS,iBAAkB,QAC3G,sCAAsC,OAAQ,KAAM,YAAa,KAAM,iBAAkB,QAAS,aAAc,QAAS,MAAO,KAAM,UAAW,KAAM,WAAY,IAAI,IACvK,4CAA4C,aAAc,QAAS,iBAAkB,QACrF,sDAAsD,aAAc,QAUpE,uCAAuC,QAAS,MAAO,MAAO,MAAO,OAAQ,KAAM,OAAQ,EAAE,KAAM,YAAa,KAAM,aAAc,KAAM,OAAQ,IAAI,MAAM,QAAS,MAAO,KAC5K,+CAA+C,MAAO,MAAO,OAAQ,MAAO,YAAa,KAAM,QAAS,IAAI,KAC5G,yCAAyC,QAAS,KAClD,qCAAqC,YAAa,EAGlD,iBAAiB,WAAW,IAAI,IAAI,KAAK,eACzC,oCAAoC,aAAa,EAAG,SAAU,QAC9D,yCAAyC,SAAS,SAAU,QAAS,aAAc,eAAgB,IAAK,YAAa,IAAI,MAAM,YAAa,aAAc,IAAI,MAAM,YAAa,UAAU,KAAM,UAAW,MAAO,QAAQ,EAAE,KAAM,WAAW,OAAQ,OAAO,QAAS,cAAe,SAAU,SAAU,OAAQ,YAAa,OAAQ,OAAQ,QAC9U,oDAAoD,OAAQ,KAAM,kBAAmB,KAAM,mBAAoB,KAAM,iBAAkB,KAAM,QAAS,GACtJ,qDAAqD,kBAAmB,YACxE,qBAAqB,YAAY,KAAM,MAAO,KAC9C,wCAAwC,QAAQ,KAChD,mDAAmD,QAAS,MAG5D,oBAAoB,WAAY,IAAM,WAAY,KAClD,yCAAyC,SAAU,QAAS,WAAY,OACxE,iDAAiD,SAAU,SAAU,MAAM,KAAM,QAAS,aAAc,SAAS,OAAQ,MAAM,EAAG,eAAe,IAEjJ,yBADA,yBACyB,SAAU,MAAO,IAAK,IAAK,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,WAAY,MAAO,OAAQ,QAAS,UAAW,KAAM,MAAO,QAC9J,yBAAyB,KAAM,KAC/B,yBAAyB,MAAO,KAEhC,+BADA,+BAC+B,MAAO,QAEtC,4BAA4B,SAAU,MAAO,KAAM,EAAG,MAAO,EAAG,OAAQ,EAAG,MAAO,KAAM,OAAQ,KAAM,YAAa,KAAM,iBAAkB,OAAQ,OAAQ,kBAAmB,iBAAkB,gBAAiB,MAAO,KAAM,cAAe,SAAU,SAAU,OAAQ,YAAa,OAAQ,UAAU,EACxS,8BAAgC,QAAQ,aAAc,eAAgB,IAAK,QAAS,EAAE,KAAM,UAAW,KAAM,MAAO,KAAM,SAAS,OAAQ,MAAO,EAClJ,8BAA8B,UAAW,KACzC,2BAA2B,IAAK,EAAG,OAAQ,KAC3C,gCAAkC,OAAQ,QAC1C,sCAAwC,iBAAkB,mBAC1D,uCAAuC,UAAW,KAClD,8BAAgC,UAAW,IAAK,cAAe,SAAU,SAAU,OAAQ,YAAa,OACxG,mCAAmC,gBAAiB,UACpD,8BAA8B,WAAY,OAG1C,mCACE,KAAM,QAAS,EAAG,kBAAmB,UAAW,UAAW,UAC3D,IAAK,kBAAmB,YAAa,UAAW,YAChD,GAAI,kBAAmB,SAAU,UAAW,UAE9C,2BACE,KAAM,QAAS,EAAG,kBAAmB,UAAW,cAAe,UAAW,UAAW,UACrF,IAAK,kBAAmB,YAAa,cAAe,YAAa,UAAW,YAC5E,GAAI,kBAAmB,SAAU,cAAe,SAAS,UAAW,UAEtE,kBAAkB,uBAAwB,gBAAiB,eAAgB,gBAAiB,4BAA6B,KAAM,oBAAqB,KAAM,2BAA2B,IAAK,mBAAmB","file":"layui.css","sourcesContent":["/**\r\n * Layui\r\n * Classic modular Front-End UI library\r\n * MIT Licensed\r\n */\r\n\r\n\r\n/** 初始化 **/\r\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form,pre{margin: 0; padding: 0; -webkit-tap-highlight-color:rgba(0,0,0,0);}\r\na:active,a:hover{outline:0}\r\nimg{display: inline-block; border: none; vertical-align: middle;}\r\nli{list-style:none;}\r\ntable{border-collapse: collapse; border-spacing: 0;}\r\nh1,h2,h3,h4{font-weight: 700;}\r\nh5,h6{font-weight: 500; font-size: 100%;}\r\nbutton,input,select,textarea{font-size: 100%; }\r\ninput,button,textarea,select,optgroup,option{font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit; outline: 0;}\r\npre{white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;}\r\n\r\n/** 初始化全局标签 **/\r\nbody{line-height: 1.6; color: #333; color: rgba(0,0,0,.85); font: 14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif;}\r\nhr{height: 0; line-height: 0; margin: 10px 0; padding: 0; border: none; border-bottom: 1px solid #eee; clear: both; overflow: hidden; background: none;}\r\na{color: #333; text-decoration:none;}\r\na:hover{color: #777;}\r\na cite{font-style: normal; *cursor:pointer;}\r\n\r\n/** 基础通用 **/\r\n.layui-border-box, .layui-border-box *{box-sizing: border-box;}\r\n/* 消除第三方ui可能造成的冲突 */.layui-box, .layui-box *{box-sizing: content-box;}\r\n.layui-clear{clear: both; *zoom: 1;}\r\n.layui-clear:after{content:'\\20'; clear:both; *zoom:1; display:block; height:0;}\r\n.layui-clear-space{word-spacing: -5px;}\r\n.layui-inline{position: relative; display: inline-block; *display:inline; *zoom:1; vertical-align: middle;}\r\n/* 三角形 */.layui-edge{position: relative; display: inline-block; vertical-align: middle; width: 0; height: 0; border-width: 6px; border-style: dashed; border-color: transparent; overflow: hidden;}\r\n.layui-edge-top{top: -4px; border-bottom-color: #999; border-bottom-style: solid;}\r\n.layui-edge-right{border-left-color: #999; border-left-style: solid;}\r\n.layui-edge-bottom{top: 2px; border-top-color: #999; border-top-style: solid;}\r\n.layui-edge-left{border-right-color: #999; border-right-style: solid;}\r\n/* 单行溢出省略 */.layui-elip{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n/* 屏蔽选中 */.layui-unselect,.layui-icon, .layui-disabled{-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n/* 禁用 */.layui-disabled,.layui-disabled:hover{color: #d2d2d2 !important; cursor: not-allowed !important;}\r\n/* 纯圆角 */.layui-circle{border-radius: 100%;}\r\n.layui-show{display: block !important;}\r\n.layui-hide{display: none !important;}\r\n.layui-show-v{visibility: visible !important;}\r\n.layui-hide-v{visibility: hidden !important;}\r\n\r\n/** 图标字体 **/\r\n@font-face {\r\n font-family: 'layui-icon';\r\n src: url('../font/iconfont.eot?v=282');\r\n src: url('../font/iconfont.eot?v=282#iefix') format('embedded-opentype'),\r\n url('../font/iconfont.woff2?v=282') format('woff2'),\r\n url('../font/iconfont.woff?v=282') format('woff'),\r\n url('../font/iconfont.ttf?v=282') format('truetype'),\r\n url('../font/iconfont.svg?v=282#layui-icon') format('svg');\r\n}\r\n\r\n.layui-icon{\r\n font-family:\"layui-icon\" !important;\r\n font-size: 16px;\r\n font-style: normal;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n/* font-class */\r\n.layui-icon-leaf:before{content: \"\\e701\";}\r\n.layui-icon-folder:before{content: \"\\eabe\";}\r\n.layui-icon-folder-open:before{content: \"\\eac1\";}\r\n.layui-icon-gitee:before{content: \"\\e69b\";}\r\n.layui-icon-github:before{content:\"\\e6a7\"}\r\n.layui-icon-disabled:before{content:\"\\e6cc\"}\r\n.layui-icon-moon:before{content:\"\\e6c2\"}\r\n.layui-icon-error:before{content:\"\\e693\"}\r\n.layui-icon-success:before{content:\"\\e697\"}\r\n.layui-icon-question:before{content:\"\\e699\"}\r\n.layui-icon-lock:before{content:\"\\e69a\"}\r\n.layui-icon-eye:before{content:\"\\e695\"}\r\n.layui-icon-eye-invisible:before{content:\"\\e696\"}\r\n.layui-icon-backspace:before{content:\"\\e694\"}\r\n.layui-icon-tips-fill:before{content:\"\\eb2e\"}\r\n.layui-icon-test:before{content:\"\\e692\"}\r\n.layui-icon-clear:before{content:\"\\e788\"}\r\n.layui-icon-heart-fill:before{content:\"\\e68f\"}\r\n.layui-icon-light:before{content:\"\\e748\"}\r\n.layui-icon-music:before{content:\"\\e690\"}\r\n.layui-icon-time:before{content:\"\\e68d\"}\r\n.layui-icon-ie:before{content:\"\\e7bb\"}\r\n.layui-icon-firefox:before{content:\"\\e686\"}\r\n.layui-icon-at:before{content:\"\\e687\"}\r\n.layui-icon-bluetooth:before{content:\"\\e689\"}\r\n.layui-icon-chrome:before{content:\"\\e68a\"}\r\n.layui-icon-edge:before{content:\"\\e68b\"}\r\n.layui-icon-heart:before{content:\"\\e68c\"}\r\n.layui-icon-key:before{content:\"\\e683\"}\r\n.layui-icon-android:before{content:\"\\e684\"}\r\n.layui-icon-mike:before{content:\"\\e6dc\"}\r\n.layui-icon-mute:before{content:\"\\e685\"}\r\n.layui-icon-gift:before{content:\"\\e627\"}\r\n.layui-icon-windows:before{content:\"\\e67f\"}\r\n.layui-icon-ios:before{content:\"\\e680\"}\r\n.layui-icon-logout:before{content:\"\\e682\"}\r\n.layui-icon-wifi:before{content:\"\\e7e0\"}\r\n.layui-icon-rss:before{content:\"\\e808\"}\r\n.layui-icon-email:before{content:\"\\e618\"}\r\n.layui-icon-reduce-circle:before{content:\"\\e616\"}\r\n.layui-icon-transfer:before{content:\"\\e691\"}\r\n.layui-icon-service:before{content:\"\\e626\"}\r\n.layui-icon-addition:before{content:\"\\e624\"}\r\n.layui-icon-subtraction:before{content:\"\\e67e\"}\r\n.layui-icon-slider:before{content:\"\\e714\"}\r\n.layui-icon-print:before{content:\"\\e66d\"}\r\n.layui-icon-export:before{content:\"\\e67d\"}\r\n.layui-icon-cols:before{content:\"\\e610\"}\r\n.layui-icon-screen-full:before{content:\"\\e622\"}\r\n.layui-icon-screen-restore:before{content:\"\\e758\"}\r\n.layui-icon-rate-half:before{content:\"\\e6c9\"}\r\n.layui-icon-rate-solid:before{content:\"\\e67a\"}\r\n.layui-icon-rate:before{content:\"\\e67b\"}\r\n.layui-icon-cellphone:before{content:\"\\e678\"}\r\n.layui-icon-vercode:before{content:\"\\e679\"}\r\n.layui-icon-login-weibo:before{content:\"\\e675\"}\r\n.layui-icon-login-qq:before{content:\"\\e676\"}\r\n.layui-icon-login-wechat:before{content:\"\\e677\"}\r\n.layui-icon-username:before{content:\"\\e66f\"}\r\n.layui-icon-password:before{content:\"\\e673\"}\r\n.layui-icon-refresh-3:before{content:\"\\e9aa\"}\r\n.layui-icon-auz:before{content:\"\\e672\"}\r\n.layui-icon-shrink-right:before{content:\"\\e668\"}\r\n.layui-icon-spread-left:before{content:\"\\e66b\"}\r\n.layui-icon-snowflake:before{content:\"\\e6b1\"}\r\n.layui-icon-tips:before{content:\"\\e702\"}\r\n.layui-icon-note:before{content:\"\\e66e\"}\r\n.layui-icon-senior:before{content:\"\\e674\"}\r\n.layui-icon-refresh-1:before{content:\"\\e666\"}\r\n.layui-icon-refresh:before{content:\"\\e669\"}\r\n.layui-icon-flag:before{content:\"\\e66c\"}\r\n.layui-icon-theme:before{content:\"\\e66a\"}\r\n.layui-icon-notice:before{content:\"\\e667\"}\r\n.layui-icon-console:before{content:\"\\e665\"}\r\n.layui-icon-website:before{content:\"\\e7ae\"}\r\n.layui-icon-face-surprised:before{content:\"\\e664\"}\r\n.layui-icon-set:before{content:\"\\e716\"}\r\n.layui-icon-template:before{content:\"\\e663\"}\r\n.layui-icon-app:before{content:\"\\e653\"}\r\n.layui-icon-template-1:before{content:\"\\e656\"}\r\n.layui-icon-home:before{content:\"\\e68e\"}\r\n.layui-icon-female:before{content:\"\\e661\"}\r\n.layui-icon-male:before{content:\"\\e662\"}\r\n.layui-icon-tread:before{content:\"\\e6c5\"}\r\n.layui-icon-praise:before{content:\"\\e6c6\"}\r\n.layui-icon-rmb:before{content:\"\\e65e\"}\r\n.layui-icon-more:before{content:\"\\e65f\"}\r\n.layui-icon-camera:before{content:\"\\e660\"}\r\n.layui-icon-cart-simple:before{content:\"\\e698\"}\r\n.layui-icon-face-cry:before{content:\"\\e69c\"}\r\n.layui-icon-face-smile:before{content:\"\\e6af\"}\r\n.layui-icon-survey:before{content:\"\\e6b2\"}\r\n.layui-icon-read:before{content:\"\\e705\"}\r\n.layui-icon-location:before{content:\"\\e715\"}\r\n.layui-icon-dollar:before{content:\"\\e659\"}\r\n.layui-icon-diamond:before{content:\"\\e735\"}\r\n.layui-icon-return:before{content:\"\\e65c\"}\r\n.layui-icon-camera-fill:before{content:\"\\e65d\"}\r\n.layui-icon-fire:before{content:\"\\e756\"}\r\n.layui-icon-more-vertical:before{content:\"\\e671\"}\r\n.layui-icon-cart:before{content:\"\\e657\"}\r\n.layui-icon-star-fill:before{content:\"\\e658\"}\r\n.layui-icon-prev:before{content:\"\\e65a\"}\r\n.layui-icon-next:before{content:\"\\e65b\"}\r\n.layui-icon-upload:before{content:\"\\e67c\"}\r\n.layui-icon-upload-drag:before{content:\"\\e681\"}\r\n.layui-icon-user:before{content:\"\\e770\"}\r\n.layui-icon-file-b:before{content:\"\\e655\"}\r\n.layui-icon-component:before{content:\"\\e857\"}\r\n.layui-icon-find-fill:before{content:\"\\e670\"}\r\n.layui-icon-loading:before{content:\"\\e63d\"}\r\n.layui-icon-loading-1:before{content:\"\\e63e\"}\r\n.layui-icon-add-1:before{content:\"\\e654\"}\r\n.layui-icon-pause:before{content:\"\\e651\"}\r\n.layui-icon-play:before{content:\"\\e652\"}\r\n.layui-icon-video:before{content:\"\\e6ed\"}\r\n.layui-icon-headset:before{content:\"\\e6fc\"}\r\n.layui-icon-voice:before{content:\"\\e688\"}\r\n.layui-icon-speaker:before{content:\"\\e645\"}\r\n.layui-icon-fonts-del:before{content:\"\\e64f\"}\r\n.layui-icon-fonts-html:before{content:\"\\e64b\"}\r\n.layui-icon-fonts-code:before{content:\"\\e64e\"}\r\n.layui-icon-fonts-strong:before{content:\"\\e62b\"}\r\n.layui-icon-unlink:before{content:\"\\e64d\"}\r\n.layui-icon-picture:before{content:\"\\e64a\"}\r\n.layui-icon-link:before{content:\"\\e64c\"}\r\n.layui-icon-face-smile-b:before{content:\"\\e650\"}\r\n.layui-icon-align-center:before{content:\"\\e647\"}\r\n.layui-icon-align-right:before{content:\"\\e648\"}\r\n.layui-icon-align-left:before{content:\"\\e649\"}\r\n.layui-icon-fonts-u:before{content:\"\\e646\"}\r\n.layui-icon-fonts-i:before{content:\"\\e644\"}\r\n.layui-icon-tabs:before{content:\"\\e62a\"}\r\n.layui-icon-circle:before{content:\"\\e63f\"}\r\n.layui-icon-radio:before{content:\"\\e643\"}\r\n.layui-icon-share:before{content:\"\\e641\"}\r\n.layui-icon-edit:before{content:\"\\e642\"}\r\n.layui-icon-delete:before{content:\"\\e640\"}\r\n.layui-icon-engine:before{content:\"\\e628\"}\r\n.layui-icon-chart-screen:before{content:\"\\e629\"}\r\n.layui-icon-chart:before{content:\"\\e62c\"}\r\n.layui-icon-table:before{content:\"\\e62d\"}\r\n.layui-icon-tree:before{content:\"\\e62e\"}\r\n.layui-icon-upload-circle:before{content:\"\\e62f\"}\r\n.layui-icon-templeate-1:before{content:\"\\e630\"}\r\n.layui-icon-util:before{content:\"\\e631\"}\r\n.layui-icon-layouts:before{content:\"\\e632\"}\r\n.layui-icon-prev-circle:before{content:\"\\e633\"}\r\n.layui-icon-carousel:before{content:\"\\e634\"}\r\n.layui-icon-code-circle:before{content:\"\\e635\"}\r\n.layui-icon-water:before{content:\"\\e636\"}\r\n.layui-icon-date:before{content:\"\\e637\"}\r\n.layui-icon-layer:before{content:\"\\e638\"}\r\n.layui-icon-fonts-clear:before{content:\"\\e639\"}\r\n.layui-icon-dialogue:before{content:\"\\e63a\"}\r\n.layui-icon-cellphone-fine:before{content:\"\\e63b\"}\r\n.layui-icon-form:before{content:\"\\e63c\"}\r\n.layui-icon-file:before{content:\"\\e621\"}\r\n.layui-icon-triangle-r:before{content:\"\\e623\"}\r\n.layui-icon-triangle-d:before{content:\"\\e625\"}\r\n.layui-icon-set-sm:before{content:\"\\e620\"}\r\n.layui-icon-add-circle:before{content:\"\\e61f\"}\r\n.layui-icon-layim-download:before{content:\"\\e61e\"}\r\n.layui-icon-layim-uploadfile:before{content:\"\\e61d\"}\r\n.layui-icon-404:before{content:\"\\e61c\"}\r\n.layui-icon-about:before{content:\"\\e60b\"}\r\n.layui-icon-layim-theme:before{content:\"\\e61b\"}\r\n.layui-icon-down:before{content:\"\\e61a\"}\r\n.layui-icon-up:before{content:\"\\e619\"}\r\n.layui-icon-circle-dot:before{content:\"\\e617\"}\r\n.layui-icon-set-fill:before{content:\"\\e614\"}\r\n.layui-icon-search:before{content:\"\\e615\"}\r\n.layui-icon-friends:before{content:\"\\e612\"}\r\n.layui-icon-group:before{content:\"\\e613\"}\r\n.layui-icon-reply-fill:before{content:\"\\e611\"}\r\n.layui-icon-menu-fill:before{content:\"\\e60f\"}\r\n.layui-icon-face-smile-fine:before{content:\"\\e60c\"}\r\n.layui-icon-picture-fine:before{content:\"\\e60d\"}\r\n.layui-icon-log:before{content:\"\\e60e\"}\r\n.layui-icon-list:before{content:\"\\e60a\"}\r\n.layui-icon-release:before{content:\"\\e609\"}\r\n.layui-icon-add-circle-fine:before{content:\"\\e608\"}\r\n.layui-icon-ok:before{content:\"\\e605\"}\r\n.layui-icon-help:before{content:\"\\e607\"}\r\n.layui-icon-chat:before{content:\"\\e606\"}\r\n.layui-icon-top:before{content:\"\\e604\"}\r\n.layui-icon-right:before{content:\"\\e602\"}\r\n.layui-icon-left:before{content:\"\\e603\"}\r\n.layui-icon-star:before{content:\"\\e600\"}\r\n.layui-icon-download-circle:before{content:\"\\e601\"}\r\n.layui-icon-close:before{content:\"\\1006\"}\r\n.layui-icon-close-fill:before{content:\"\\1007\"}\r\n.layui-icon-ok-circle:before{content:\"\\1005\"}\r\n\r\n\r\n/* 基本布局 */\r\n.layui-main{position: relative; width: 1160px; margin: 0 auto;}\r\n.layui-header{position: relative; z-index: 1000; height: 60px;}\r\n.layui-header a:hover{transition: all .5s; -webkit-transition: all .5s;}\r\n.layui-side{position: fixed; left: 0; top: 0; bottom: 0; z-index: 999; width: 200px; overflow-x: hidden;}\r\n.layui-side-scroll{position: relative; width: 220px; height: 100%; overflow-x: hidden;}\r\n.layui-body{position: relative; left: 200px; right: 0; top: 0; bottom: 0; z-index: 900; width: auto; box-sizing: border-box;}\r\n\r\n/* 后台框架大布局 */\r\n.layui-layout-body{overflow-x: hidden;}\r\n.layui-layout-admin .layui-header{position: fixed; top: 0; left: 0; right: 0; background-color: #23292e;}\r\n.layui-layout-admin .layui-side{top: 60px; width: 200px; overflow-x: hidden;}\r\n.layui-layout-admin .layui-body{position: absolute; top: 60px; padding-bottom: 44px;}\r\n.layui-layout-admin .layui-main{width: auto; margin: 0 15px;}\r\n.layui-layout-admin .layui-footer{position: fixed; left: 200px; right: 0; bottom: 0; z-index: 990; height: 44px; line-height: 44px; padding: 0 15px; box-shadow: -1px 0 4px rgb(0 0 0 / 12%); background-color: #fafafa;}\r\n.layui-layout-admin .layui-logo{position: absolute; left: 0; top: 0; width: 200px; height: 100%; line-height: 60px; text-align: center; color: #16baaa; font-size: 16px; box-shadow: 0 1px 2px 0 rgb(0 0 0 / 15%);}\r\n.layui-layout-admin .layui-header .layui-nav{background: none;}\r\n.layui-layout-left{position: absolute !important; left: 200px; top: 0;}\r\n.layui-layout-right{position: absolute !important; right: 0; top: 0;}\r\n\r\n\r\n/* 栅格布局 */\r\n.layui-container{position: relative; margin: 0 auto; box-sizing: border-box;}\r\n.layui-fluid{position: relative; margin: 0 auto; padding: 0 15px;}\r\n\r\n.layui-row:before, .layui-row:after{content: \"\"; display: block; clear: both;}\r\n.layui-col-xs1, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12\r\n,.layui-col-sm1, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12\r\n,.layui-col-md1, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-md10, .layui-col-md11, .layui-col-md12\r\n,.layui-col-lg1, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12\r\n,.layui-col-xl1, .layui-col-xl2, .layui-col-xl3, .layui-col-xl4, .layui-col-xl5, .layui-col-xl6, .layui-col-xl7, .layui-col-xl8, .layui-col-xl9, .layui-col-xl10, .layui-col-xl11, .layui-col-xl12\r\n{position: relative; display: block; box-sizing: border-box;}\r\n\r\n.layui-col-xs1, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12{float: left;}\r\n.layui-col-xs1{width: 8.33333333%;}\r\n.layui-col-xs2{width: 16.66666667%;}\r\n.layui-col-xs3{width: 25%;}\r\n.layui-col-xs4{width: 33.33333333%;}\r\n.layui-col-xs5{width: 41.66666667%;}\r\n.layui-col-xs6{width: 50%;}\r\n.layui-col-xs7{width: 58.33333333%;}\r\n.layui-col-xs8{width: 66.66666667%;}\r\n.layui-col-xs9{width: 75%;}\r\n.layui-col-xs10{width: 83.33333333%;}\r\n.layui-col-xs11{width: 91.66666667%;}\r\n.layui-col-xs12{width: 100%;}\r\n\r\n.layui-col-xs-offset1{margin-left: 8.33333333%;}\r\n.layui-col-xs-offset2{margin-left: 16.66666667%;}\r\n.layui-col-xs-offset3{margin-left: 25%;}\r\n.layui-col-xs-offset4{margin-left: 33.33333333%;}\r\n.layui-col-xs-offset5{margin-left: 41.66666667%;}\r\n.layui-col-xs-offset6{margin-left: 50%;}\r\n.layui-col-xs-offset7{margin-left: 58.33333333%;}\r\n.layui-col-xs-offset8{margin-left: 66.66666667%;}\r\n.layui-col-xs-offset9{margin-left: 75%;}\r\n.layui-col-xs-offset10{margin-left: 83.33333333%;}\r\n.layui-col-xs-offset11{margin-left: 91.66666667%;}\r\n.layui-col-xs-offset12{margin-left: 100%;}\r\n\r\n/* 超小屏幕 */\r\n@media screen and (max-width: 767.98px) {\r\n .layui-container{padding: 0 15px;}\r\n .layui-hide-xs{display: none!important;}\r\n .layui-show-xs-block{display: block!important;}\r\n .layui-show-xs-inline{display: inline!important;}\r\n .layui-show-xs-inline-block{display: inline-block!important;}\r\n}\r\n\r\n/* 小型屏幕 */\r\n@media screen and (min-width: 768px) {\r\n .layui-container{width: 720px;}\r\n .layui-hide-sm{display: none!important;}\r\n .layui-show-sm-block{display: block!important;}\r\n .layui-show-sm-inline{display: inline!important;}\r\n .layui-show-sm-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-sm1, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12{float: left;}\r\n .layui-col-sm1{width: 8.33333333%;}\r\n .layui-col-sm2{width: 16.66666667%;}\r\n .layui-col-sm3{width: 25%;}\r\n .layui-col-sm4{width: 33.33333333%;}\r\n .layui-col-sm5{width: 41.66666667%;}\r\n .layui-col-sm6{width: 50%;}\r\n .layui-col-sm7{width: 58.33333333%;}\r\n .layui-col-sm8{width: 66.66666667%;}\r\n .layui-col-sm9{width: 75%;}\r\n .layui-col-sm10{width: 83.33333333%;}\r\n .layui-col-sm11{width: 91.66666667%;}\r\n .layui-col-sm12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-sm-offset1{margin-left: 8.33333333%;}\r\n .layui-col-sm-offset2{margin-left: 16.66666667%;}\r\n .layui-col-sm-offset3{margin-left: 25%;}\r\n .layui-col-sm-offset4{margin-left: 33.33333333%;}\r\n .layui-col-sm-offset5{margin-left: 41.66666667%;}\r\n .layui-col-sm-offset6{margin-left: 50%;}\r\n .layui-col-sm-offset7{margin-left: 58.33333333%;}\r\n .layui-col-sm-offset8{margin-left: 66.66666667%;}\r\n .layui-col-sm-offset9{margin-left: 75%;}\r\n .layui-col-sm-offset10{margin-left: 83.33333333%;}\r\n .layui-col-sm-offset11{margin-left: 91.66666667%;}\r\n .layui-col-sm-offset12{margin-left: 100%;}\r\n}\r\n/* 中型屏幕 */\r\n@media screen and (min-width: 992px) {\r\n .layui-container{width: 960px;}\r\n .layui-hide-md{display: none!important;}\r\n .layui-show-md-block{display: block!important;}\r\n .layui-show-md-inline{display: inline!important;}\r\n .layui-show-md-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-md1, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-md10, .layui-col-md11, .layui-col-md12{float: left;}\r\n .layui-col-md1{width: 8.33333333%;}\r\n .layui-col-md2{width: 16.66666667%;}\r\n .layui-col-md3{width: 25%;}\r\n .layui-col-md4{width: 33.33333333%;}\r\n .layui-col-md5{width: 41.66666667%;}\r\n .layui-col-md6{width: 50%;}\r\n .layui-col-md7{width: 58.33333333%;}\r\n .layui-col-md8{width: 66.66666667%;}\r\n .layui-col-md9{width: 75%;}\r\n .layui-col-md10{width: 83.33333333%;}\r\n .layui-col-md11{width: 91.66666667%;}\r\n .layui-col-md12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-md-offset1{margin-left: 8.33333333%;}\r\n .layui-col-md-offset2{margin-left: 16.66666667%;}\r\n .layui-col-md-offset3{margin-left: 25%;}\r\n .layui-col-md-offset4{margin-left: 33.33333333%;}\r\n .layui-col-md-offset5{margin-left: 41.66666667%;}\r\n .layui-col-md-offset6{margin-left: 50%;}\r\n .layui-col-md-offset7{margin-left: 58.33333333%;}\r\n .layui-col-md-offset8{margin-left: 66.66666667%;}\r\n .layui-col-md-offset9{margin-left: 75%;}\r\n .layui-col-md-offset10{margin-left: 83.33333333%;}\r\n .layui-col-md-offset11{margin-left: 91.66666667%;}\r\n .layui-col-md-offset12{margin-left: 100%;}\r\n}\r\n/* 大型屏幕 */\r\n@media screen and (min-width: 1200px) {\r\n .layui-container{width: 1150px;}\r\n .layui-hide-lg{display: none!important;}\r\n .layui-show-lg-block{display: block!important;}\r\n .layui-show-lg-inline{display: inline!important;}\r\n .layui-show-lg-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-lg1, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12{float: left;}\r\n .layui-col-lg1{width: 8.33333333%;}\r\n .layui-col-lg2{width: 16.66666667%;}\r\n .layui-col-lg3{width: 25%;}\r\n .layui-col-lg4{width: 33.33333333%;}\r\n .layui-col-lg5{width: 41.66666667%;}\r\n .layui-col-lg6{width: 50%;}\r\n .layui-col-lg7{width: 58.33333333%;}\r\n .layui-col-lg8{width: 66.66666667%;}\r\n .layui-col-lg9{width: 75%;}\r\n .layui-col-lg10{width: 83.33333333%;}\r\n .layui-col-lg11{width: 91.66666667%;}\r\n .layui-col-lg12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-lg-offset1{margin-left: 8.33333333%;}\r\n .layui-col-lg-offset2{margin-left: 16.66666667%;}\r\n .layui-col-lg-offset3{margin-left: 25%;}\r\n .layui-col-lg-offset4{margin-left: 33.33333333%;}\r\n .layui-col-lg-offset5{margin-left: 41.66666667%;}\r\n .layui-col-lg-offset6{margin-left: 50%;}\r\n .layui-col-lg-offset7{margin-left: 58.33333333%;}\r\n .layui-col-lg-offset8{margin-left: 66.66666667%;}\r\n .layui-col-lg-offset9{margin-left: 75%;}\r\n .layui-col-lg-offset10{margin-left: 83.33333333%;}\r\n .layui-col-lg-offset11{margin-left: 91.66666667%;}\r\n .layui-col-lg-offset12{margin-left: 100%;}\r\n}\r\n/* 超大屏幕 */\r\n@media screen and (min-width: 1400px) {\r\n .layui-container{width: 1330px;}\r\n .layui-hide-xl{display: none!important;}\r\n .layui-show-xl-block{display: block!important;}\r\n .layui-show-xl-inline{display: inline!important;}\r\n .layui-show-xl-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-xl1, .layui-col-xl2, .layui-col-xl3, .layui-col-xl4, .layui-col-xl5, .layui-col-xl6, .layui-col-xl7, .layui-col-xl8, .layui-col-xl9, .layui-col-xl10, .layui-col-xl11, .layui-col-xl12{float: left;}\r\n .layui-col-xl1{width: 8.33333333%;}\r\n .layui-col-xl2{width: 16.66666667%;}\r\n .layui-col-xl3{width: 25%;}\r\n .layui-col-xl4{width: 33.33333333%;}\r\n .layui-col-xl5{width: 41.66666667%;}\r\n .layui-col-xl6{width: 50%;}\r\n .layui-col-xl7{width: 58.33333333%;}\r\n .layui-col-xl8{width: 66.66666667%;}\r\n .layui-col-xl9{width: 75%;}\r\n .layui-col-xl10{width: 83.33333333%;}\r\n .layui-col-xl11{width: 91.66666667%;}\r\n .layui-col-xl12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-xl-offset1{margin-left: 8.33333333%;}\r\n .layui-col-xl-offset2{margin-left: 16.66666667%;}\r\n .layui-col-xl-offset3{margin-left: 25%;}\r\n .layui-col-xl-offset4{margin-left: 33.33333333%;}\r\n .layui-col-xl-offset5{margin-left: 41.66666667%;}\r\n .layui-col-xl-offset6{margin-left: 50%;}\r\n .layui-col-xl-offset7{margin-left: 58.33333333%;}\r\n .layui-col-xl-offset8{margin-left: 66.66666667%;}\r\n .layui-col-xl-offset9{margin-left: 75%;}\r\n .layui-col-xl-offset10{margin-left: 83.33333333%;}\r\n .layui-col-xl-offset11{margin-left: 91.66666667%;}\r\n .layui-col-xl-offset12{margin-left: 100%;}\r\n}\r\n\r\n/* 列间隔 */\r\n.layui-col-space1{margin: -0.5px;}\r\n.layui-col-space1>*{padding: 0.5px;}\r\n.layui-col-space2{margin: -1px;}\r\n.layui-col-space2>*{padding: 1px;}\r\n.layui-col-space4{margin: -2px;}\r\n.layui-col-space4>*{padding: 2px;}\r\n.layui-col-space5{margin: -2.5px;}\r\n.layui-col-space5>*{padding: 2.5px;}\r\n.layui-col-space6{margin: -3px;}\r\n.layui-col-space6>*{padding: 3px;}\r\n.layui-col-space8{margin: -4px;}\r\n.layui-col-space8>*{padding: 4px;}\r\n.layui-col-space10{margin: -5px;}\r\n.layui-col-space10>*{padding: 5px;}\r\n.layui-col-space12{margin: -6px;}\r\n.layui-col-space12>*{padding: 6px;}\r\n.layui-col-space14{margin: -7px;}\r\n.layui-col-space14>*{padding: 7px;}\r\n.layui-col-space15{margin: -7.5px;}\r\n.layui-col-space15>*{padding: 7.5px;}\r\n.layui-col-space16{margin: -8px;}\r\n.layui-col-space16>*{padding: 8px;}\r\n.layui-col-space18{margin: -9px;}\r\n.layui-col-space18>*{padding: 9px;}\r\n.layui-col-space20{margin: -10px;}\r\n.layui-col-space20>*{padding: 10px;}\r\n.layui-col-space22{margin: -11px;}\r\n.layui-col-space22>*{padding: 11px;}\r\n.layui-col-space24{margin: -12px;}\r\n.layui-col-space24>*{padding: 12px;}\r\n.layui-col-space25{margin: -12.5px;}\r\n.layui-col-space25>*{padding: 12.5px;}\r\n.layui-col-space26{margin: -13px;}\r\n.layui-col-space26>*{padding: 13px;}\r\n.layui-col-space28{margin: -14px;}\r\n.layui-col-space28>*{padding: 14px;}\r\n.layui-col-space30{margin: -15px;}\r\n.layui-col-space30>*{padding: 15px;}\r\n.layui-col-space32{margin: -16px;}\r\n.layui-col-space32>*{padding: 16px;}\r\n\r\n\r\n/* 内边距 */\r\n.layui-padding-1{padding: 4px !important;}\r\n.layui-padding-2{padding: 8px !important;}\r\n.layui-padding-3{padding: 16px !important;}\r\n.layui-padding-4{padding: 32px !important;}\r\n.layui-padding-5{padding: 48px !important;}\r\n\r\n/* 外边距 */\r\n.layui-margin-1{margin: 4px !important;}\r\n.layui-margin-2{margin: 8px !important;}\r\n.layui-margin-3{margin: 16px !important;}\r\n.layui-margin-4{margin: 32px !important;}\r\n.layui-margin-5{margin: 48px !important;}\r\n\r\n\r\n/*\r\n * 页面元素\r\n */\r\n\r\n.layui-btn,\r\n.layui-input,\r\n.layui-select,\r\n.layui-textarea,\r\n.layui-upload-button{outline: none; -webkit-appearance: none; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box;}\r\n\r\n/* 引用 */\r\n.layui-elem-quote{margin-bottom: 10px; padding: 15px; line-height: 1.8; border-left: 5px solid #16b777; border-radius: 0 2px 2px 0; background-color: #fafafa;}\r\n.layui-quote-nm{border-style: solid; border-width: 1px; border-left-width: 5px; background: none;}\r\n\r\n/* 字段集合 */\r\n.layui-elem-field{margin-bottom: 10px; padding: 0; border-width: 1px; border-style: solid;}\r\n.layui-elem-field legend{margin-left: 20px; padding: 0 10px; font-size: 20px;}\r\n.layui-field-title{margin: 16px 0; border-width: 0; border-top-width: 1px;}\r\n.layui-field-box{padding: 15px;}\r\n.layui-field-title .layui-field-box{padding: 10px 0;}\r\n\r\n/* 进度条 */\r\n.layui-progress{position: relative; height: 6px; border-radius: 20px; background-color: #eee;}\r\n.layui-progress-bar{position: absolute; left: 0; top: 0; width: 0; max-width: 100%; height: 6px; border-radius: 20px; text-align: right; background-color: #16b777; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-progress-big,\r\n.layui-progress-big .layui-progress-bar{height: 18px; line-height: 18px;}\r\n.layui-progress-text{position: relative; top: -20px; line-height: 18px; font-size: 12px; color: #5F5F5F}\r\n.layui-progress-big .layui-progress-text{position: static; padding: 0 10px; color: #fff;}\r\n\r\n\r\n/*\r\n * 面板\r\n */\r\n\r\n\r\n/* 折叠面板 */\r\n.layui-collapse{border-width: 1px; border-style: solid; border-radius: 2px;}\r\n.layui-colla-item,\r\n.layui-colla-content{border-top-width: 1px; border-top-style: solid;}\r\n.layui-colla-item:first-child{border-top: none;}\r\n.layui-colla-title{position: relative; height: 42px; line-height: 42px; padding: 0 15px 0 35px; color: #333; background-color: #fafafa; cursor: pointer; font-size: 14px; overflow: hidden;}\r\n.layui-colla-content{display: none; padding: 10px 15px; line-height: 1.6; color: #5F5F5F;}\r\n.layui-colla-icon{position: absolute; left: 15px; top: 0; font-size: 14px;}\r\n\r\n/* 卡片面板 */\r\n.layui-card{margin-bottom: 15px; border-radius: 2px; background-color: #fff; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);}\r\n.layui-card:last-child{margin-bottom: 0;}\r\n.layui-card-header{position: relative; height: 42px; line-height: 42px; padding: 0 15px; border-bottom: 1px solid #f8f8f8; color: #333; border-radius: 2px 2px 0 0; font-size: 14px;}\r\n.layui-card-body{position: relative; padding: 10px 15px; line-height: 24px;}\r\n.layui-card-body[pad15]{padding: 15px;}\r\n.layui-card-body[pad20]{padding: 20px;}\r\n.layui-card-body .layui-table{margin: 5px 0;}\r\n.layui-card .layui-tab{margin: 0;}\r\n\r\n/* 常规面板 */\r\n.layui-panel{position: relative; border-width: 1px; border-style: solid; border-radius: 2px; box-shadow: 1px 1px 4px rgb(0 0 0 / 8%); background-color: #fff; color: #5F5F5F;}\r\n\r\n/* 窗口面板 */\r\n.layui-panel-window{position: relative; padding: 15px; border-radius: 0; border-top: 5px solid #eee; background-color: #fff;}\r\n\r\n/* 其它辅助 */\r\n.layui-auxiliar-moving{position: fixed; left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%; background: none; z-index: 9999999999;}\r\n.layui-scrollbar-hide{overflow: hidden !important;}\r\n\r\n\r\n/*\r\n * 默认主题\r\n */\r\n\r\n\r\n/* 背景颜色 */\r\n.layui-bg-red{background-color: #ff5722 !important; color: #fff!important;} /*赤*/\r\n.layui-bg-orange{background-color: #ffb800!important; color: #fff!important;} /*橙*/\r\n.layui-bg-green{background-color: #16baaa!important; color: #fff!important;} /*绿*/\r\n.layui-bg-cyan{background-color: #2f4056!important; color: #fff!important;} /*藏青*/\r\n.layui-bg-blue{background-color: #1e9fff!important; color: #fff!important;} /*蓝*/\r\n.layui-bg-purple{background-color: #a233c6!important; color: #fff!important;} /*紫*/\r\n.layui-bg-black{background-color: #2f363c!important; color: #fff!important;} /*深*/\r\n.layui-bg-gray{background-color: #fafafa!important; color: #5F5F5F!important;} /*浅*/\r\n\r\n/* 边框 */\r\n.layui-border,\r\n.layui-quote-nm,\r\n.layui-elem-field,\r\n.layui-collapse,\r\n.layui-panel,\r\n.layui-colla-item,\r\n.layui-colla-content,\r\n.layui-badge-rim,\r\n.layui-tab-title,\r\n.layui-tab-title .layui-this:after,\r\n.layui-tab-bar,\r\n.layui-tab-card,\r\n\r\n.layui-input, .layui-textarea, .layui-select,\r\n.layui-input-split,\r\n.layui-form-pane .layui-form-label,\r\n.layui-form-pane .layui-form-item[pane]{border-color: #eee;}\r\n\r\n.layui-border{border-width: 1px; border-style: solid; color: #5F5F5F!important;}\r\n.layui-border-red{border-width: 1px; border-style: solid; border-color: #ff5722!important; color: #ff5722!important;}\r\n.layui-border-orange{border-width: 1px; border-style: solid; border-color: #ffb800!important; color: #ffb800!important;}\r\n.layui-border-green{border-width: 1px; border-style: solid; border-color: #16baaa!important; color: #16baaa!important;}\r\n.layui-border-cyan{border-width: 1px; border-style: solid; border-color: #2f4056!important; color: #2f4056!important;}\r\n.layui-border-blue{border-width: 1px; border-style: solid; border-color: #1e9fff!important; color: #1e9fff!important;}\r\n.layui-border-purple{border-width: 1px; border-style: solid; border-color: #a233c6!important; color: #a233c6!important;}\r\n.layui-border-black{border-width: 1px; border-style: solid; border-color: #2f363c!important; color: #2f363c!important;}\r\n\r\n/* 分割线边框 */\r\nhr.layui-border-red,\r\nhr.layui-border-orange,\r\nhr.layui-border-green,\r\nhr.layui-border-cyan,\r\nhr.layui-border-blue,\r\nhr.layui-border-purple,\r\nhr.layui-border-black{border-width: 0 0 1px;}\r\n\r\n/* 背景边框 */\r\n.layui-timeline-item:before{background-color: #eee;}\r\n\r\n/* 文本区域 */\r\n.layui-text{line-height: 1.8; font-size: 14px;}\r\n.layui-text h1,\r\n.layui-text h2,\r\n.layui-text h3,\r\n.layui-text h4,\r\n.layui-text h5,\r\n.layui-text h6{color: #3A3A3A;}\r\n.layui-text h1{font-size: 32px;}\r\n.layui-text h2{font-size: 24px;}\r\n.layui-text h3{font-size: 18px;}\r\n.layui-text h4{font-size: 16px;}\r\n.layui-text h5{font-size: 14px;}\r\n.layui-text h6{font-size: 13px;}\r\n.layui-text ul,\r\n.layui-text ol{padding-left: 15px;}\r\n.layui-text ul li{margin-top: 5px; list-style-type: disc;}\r\n.layui-text ol li{margin-top: 5px; list-style-type: decimal;}\r\n.layui-text-em,\r\n.layui-word-aux{color: #999 !important; padding-left: 5px !important; padding-right: 5px !important;}\r\n.layui-text p{margin: 15px 0;}\r\n.layui-text p:first-child{margin-top: 0;}\r\n.layui-text p:last-child{margin-bottom: 0;}\r\n.layui-text a:not(.layui-btn){color: #01AAED;}\r\n.layui-text a:not(.layui-btn):hover{text-decoration: underline;}\r\n.layui-text blockquote:not(.layui-elem-quote){padding: 5px 15px; border-left: 5px solid #eee;}\r\n.layui-text pre > code:not(.layui-code){padding: 15px; font-family: \"Courier New\",Consolas,\"Lucida Console\";}\r\n\r\n/* 字体大小 */\r\n.layui-font-12{font-size: 12px !important;}\r\n.layui-font-13{font-size: 13px !important;}\r\n.layui-font-14{font-size: 14px !important;}\r\n.layui-font-16{font-size: 16px !important;}\r\n.layui-font-18{font-size: 18px !important;}\r\n.layui-font-20{font-size: 20px !important;}\r\n.layui-font-22{font-size: 22px !important;}\r\n.layui-font-24{font-size: 24px !important;}\r\n.layui-font-26{font-size: 26px !important;}\r\n.layui-font-28{font-size: 28px !important;}\r\n.layui-font-30{font-size: 30px !important;}\r\n.layui-font-32{font-size: 32px !important;}\r\n\r\n/* 字体颜色 */\r\n.layui-font-red{color: #ff5722 !important;} /*赤*/\r\n.layui-font-orange{color: #ffb800!important;} /*橙*/\r\n.layui-font-green{color: #16baaa!important;} /*绿*/\r\n.layui-font-cyan{color: #2f4056!important;} /*藏青*/\r\n.layui-font-blue{color: #01AAED!important;} /*蓝*/\r\n.layui-font-purple{color: #a233c6 !important;} /*紫*/\r\n.layui-font-black{color: #000!important;} /*深*/\r\n.layui-font-gray{color: #c2c2c2!important;} /*浅*/\r\n\r\n\r\n\r\n/*\r\n * 按钮\r\n */\r\n\r\n.layui-btn{display: inline-block; vertical-align: middle; height: 38px; line-height: 38px; border: 1px solid transparent; padding: 0 18px; background-color: #16baaa; color: #fff; white-space: nowrap; text-align: center; font-size: 14px; border-radius: 2px; cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n.layui-btn:hover{opacity: 0.8; filter:alpha(opacity=80); color: #fff;}\r\n.layui-btn:active{opacity: 1; filter:alpha(opacity=100);}\r\n.layui-btn+.layui-btn{margin-left: 10px;}\r\n\r\n/* 按钮容器 */\r\n.layui-btn-container{word-spacing: -5px;}\r\n.layui-btn-container .layui-btn{margin-right: 10px; margin-bottom: 10px; word-spacing: normal;}\r\n.layui-btn-container .layui-btn+.layui-btn{margin-left: 0;}\r\n.layui-table .layui-btn-container .layui-btn{margin-bottom: 9px;}\r\n\r\n\r\n/* 圆角 */.layui-btn-radius{border-radius: 100px;}\r\n.layui-btn .layui-icon{padding: 0 2px; vertical-align: middle\\0; vertical-align: bottom;}\r\n\r\n/* 原始 */.layui-btn-primary{border-color: #d2d2d2; background: none; color: #5F5F5F;}\r\n.layui-btn-primary:hover{border-color: #16baaa; color: #333;}\r\n/* 百搭 */.layui-btn-normal{background-color: #1e9fff;}\r\n/* 暖色 */.layui-btn-warm{background-color: #ffb800;}\r\n/* 警告 */.layui-btn-danger{background-color: #ff5722;}\r\n/* 选中 */.layui-btn-checked{background-color: #16b777;}\r\n/* 禁用 */.layui-btn-disabled, .layui-btn-disabled:hover, .layui-btn-disabled:active{border-color: #eee !important; background-color: #FBFBFB !important; color: #d2d2d2 !important; cursor: not-allowed !important; opacity: 1;}\r\n\r\n/* 大型 */.layui-btn-lg{height: 44px; line-height: 44px; padding: 0 25px; font-size: 16px;}\r\n/* 小型 */.layui-btn-sm{height: 30px; line-height: 30px; padding: 0 10px; font-size: 12px;}\r\n/* 超小 */.layui-btn-xs{height: 22px; line-height: 22px; padding: 0 5px; font-size: 12px;}\r\n.layui-btn-xs i{font-size: 12px !important;}\r\n/* 按钮组 */.layui-btn-group{display: inline-block; vertical-align: middle; font-size: 0;}\r\n.layui-btn-group .layui-btn{margin-left: 0!important; margin-right: 0!important; border-left: 1px solid rgba(255,255,255,.5); border-radius: 0;}\r\n.layui-btn-group .layui-btn-primary{border-left: none;}\r\n.layui-btn-group .layui-btn-primary:hover{border-color: #d2d2d2; color: #16baaa;}\r\n.layui-btn-group .layui-btn:first-child{border-left: none; border-radius: 2px 0 0 2px;}\r\n.layui-btn-group .layui-btn-primary:first-child{border-left: 1px solid #d2d2d2;}\r\n.layui-btn-group .layui-btn:last-child{border-radius: 0 2px 2px 0;}\r\n.layui-btn-group .layui-btn+.layui-btn{margin-left: 0;}\r\n.layui-btn-group+.layui-btn-group{margin-left: 10px;}\r\n/* 流体 */.layui-btn-fluid{width: 100%;}\r\n\r\n/** 表单 **/\r\n.layui-input, .layui-textarea, .layui-select{height: 38px; line-height: 1.3; line-height: 38px\\9; border-width: 1px; border-style: solid; background-color: #fff; color: rgba(0,0,0,.85); border-radius: 2px;}\r\n.layui-input::-webkit-input-placeholder,\r\n.layui-textarea::-webkit-input-placeholder,\r\n.layui-select::-webkit-input-placeholder{line-height: 1.3;}\r\n.layui-input, .layui-textarea{display: block; width: 100%; padding-left: 10px;}\r\n.layui-input:hover, .layui-textarea:hover{border-color: #d2d2d2 !important;}\r\n.layui-input:focus, .layui-textarea:focus{border-color: #16b777 !important; box-shadow: 0 0 0 3px rgba(22,183,119,0.08);}\r\n.layui-textarea{position: relative; min-height: 100px; height: auto; line-height: 20px; padding: 6px 10px; resize: vertical;}\r\n.layui-input[disabled], .layui-textarea[disabled]{background-color: #fafafa;}\r\n.layui-select{padding: 0 10px;}\r\n.layui-form select,\r\n.layui-form input[type=checkbox],\r\n.layui-form input[type=radio]{display: none;}\r\n.layui-form *[lay-ignore]{display: initial;}\r\n\r\n.layui-form-item{position: relative; margin-bottom: 15px; clear: both; *zoom: 1;}\r\n.layui-form-item:after{content:'\\20'; clear: both; *zoom: 1; display: block; height:0;}\r\n.layui-form-label{position: relative; float: left; display: block; padding: 9px 15px; width: 80px; font-weight: 400; line-height: 20px; text-align: right;}\r\n.layui-form-label-col{display: block; float: none; padding: 9px 0; line-height: 20px; text-align: left;}\r\n.layui-form-item .layui-inline{margin-bottom: 5px; margin-right: 10px;}\r\n.layui-input-block, .layui-input-inline{position: relative;}\r\n.layui-input-block{margin-left: 110px; min-height: 36px;}\r\n.layui-input-inline{display: inline-block; vertical-align: middle;}\r\n.layui-form-item .layui-input-inline{float: left; width: 190px; margin-right: 10px;}\r\n.layui-form-text .layui-input-inline{width: auto;}\r\n\r\n/* 分割块 */\r\n.layui-form-mid{position: relative; float: left; display: block; padding: 9px 0 !important; line-height: 20px; margin-right: 10px;}\r\n\r\n/* 警告条 */\r\n.layui-form-danger:focus,\r\n.layui-form-danger+.layui-form-select .layui-input{border-color: #ff5722 !important; box-shadow: 0 0 0 3px rgba(255,87,34,0.08);}\r\n\r\n\r\n/* 输入框点缀 */\r\n.layui-input-prefix,\r\n.layui-input-suffix,\r\n.layui-input-split,\r\n.layui-input-suffix .layui-input-affix{position: absolute; right: 0; top: 0; padding: 0 10px; width: 35px; height: 100%; text-align: center; transition: all .3s; box-sizing: border-box;}\r\n.layui-input-prefix{left: 0; border-radius: 2px 0 0 2px;}\r\n.layui-input-suffix{right: 0; border-radius: 0 2px 2px 0;}\r\n.layui-input-split{border-width: 1px; border-style: solid;}\r\n.layui-input-prefix .layui-icon,\r\n.layui-input-suffix .layui-icon,\r\n.layui-input-split .layui-icon{position: relative; font-size: 16px; color: #5F5F5F; transition: all .3s;}\r\n\r\n/* 输入框前后置容器 */\r\n.layui-input-group{position: relative; display: table; box-sizing: border-box;}\r\n.layui-input-group>*{display: table-cell; vertical-align: middle; position: relative;}\r\n.layui-input-group .layui-input{padding-right: 15px;}\r\n.layui-input-group > .layui-input-prefix{width: auto; border-right: 0;}\r\n.layui-input-group > .layui-input-suffix{width: auto; border-left: 0;}\r\n.layui-input-group .layui-input-split{white-space: nowrap;}\r\n\r\n/* 输入框前后缀容器 */\r\n.layui-input-wrap{position: relative; line-height: 38px;}\r\n.layui-input-wrap .layui-input{padding-right: 35px;;}\r\n.layui-input-wrap .layui-input::-ms-clear,\r\n.layui-input-wrap .layui-input::-ms-reveal{display: none;}\r\n.layui-input-wrap .layui-input-prefix + .layui-input,\r\n.layui-input-wrap .layui-input-prefix ~ * .layui-input{padding-left: 35px;}\r\n.layui-input-wrap .layui-input-split + .layui-input,\r\n.layui-input-wrap .layui-input-split ~ * .layui-input{padding-left: 45px;}\r\n.layui-input-wrap .layui-input-prefix ~ .layui-form-select{position: static;}\r\n.layui-input-wrap .layui-input-prefix,\r\n.layui-input-wrap .layui-input-suffix,\r\n.layui-input-wrap .layui-input-split{pointer-events: none;}\r\n.layui-input-wrap .layui-input:hover + .layui-input-split{border-color: #d2d2d2;}\r\n.layui-input-wrap .layui-input:focus + .layui-input-split{border-color: #16b777;}\r\n.layui-input-wrap .layui-input.layui-form-danger:focus + .layui-input-split{border-color: #ff5722;}\r\n.layui-input-wrap .layui-input-prefix.layui-input-split{border-width: 0; border-right-width: 1px;}\r\n.layui-input-wrap .layui-input-suffix.layui-input-split{border-width: 0; border-left-width: 1px;}\r\n\r\n/* 输入框动态点缀 */\r\n.layui-input-affix{line-height: 38px;}\r\n.layui-input-suffix .layui-input-affix{right: auto; left: -35px;}\r\n.layui-input-affix .layui-icon{color: rgba(0,0,0,.8); pointer-events: auto!important; cursor: pointer;}\r\n.layui-input-affix .layui-icon-clear{color: rgba(0,0,0,.3);}\r\n.layui-input-affix .layui-icon:hover{color: rgba(0,0,0,.6);}\r\n\r\n/* 数字输入框动态点缀 */\r\n.layui-input-wrap .layui-input-number{width: 24px; padding: 0;}\r\n.layui-input-wrap .layui-input-number .layui-icon{position: absolute; right: 0; width: 100%; height: 50%; line-height: normal; font-size: 12px;}\r\n.layui-input-wrap .layui-input-number .layui-icon:before{position: absolute; left: 50%; top: 50%; margin-top: -6px; margin-left: -6px;}\r\n.layui-input-wrap .layui-input-number .layui-icon-up{top: 0; border-bottom: 1px solid #eee;}\r\n.layui-input-wrap .layui-input-number .layui-icon-down{bottom: 0;}\r\n.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight: 700;}\r\n.layui-input-wrap .layui-input[type=\"number\"]::-webkit-outer-spin-button,\r\n.layui-input-wrap .layui-input[type=\"number\"]::-webkit-inner-spin-button{-webkit-appearance: none !important;}\r\n.layui-input-wrap .layui-input[type=\"number\"]{-moz-appearance: textfield;}\r\n.layui-input-wrap .layui-input[type=\"number\"].layui-input-number-out-of-range{color:#ff5722;}\r\n\r\n\r\n\r\n/* 下拉选择 */\r\n.layui-form-select{position: relative; color: #5F5F5F;}\r\n.layui-form-select .layui-input{padding-right: 30px; cursor: pointer;}\r\n.layui-form-select .layui-edge{position: absolute; right: 10px; top: 50%; margin-top: -3px; cursor: pointer; border-width: 6px; border-top-color: #c2c2c2; border-top-style: solid; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-form-select dl{display: none; position: absolute; left: 0; top: 42px; padding: 5px 0; z-index: 899; min-width: 100%; border: 1px solid #eee; max-height: 300px; overflow-y: auto; background-color: #fff; border-radius: 2px; box-shadow: 1px 1px 4px rgb(0 0 0 / 8%); box-sizing: border-box;}\r\n.layui-form-select dl dt,\r\n.layui-form-select dl dd{padding: 0 10px; line-height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}\r\n.layui-form-select dl dt{font-size: 12px; color: #999;}\r\n.layui-form-select dl dd{cursor: pointer;}\r\n.layui-form-select dl dd:hover{background-color: #f8f8f8; -webkit-transition: .5s all; transition: .5s all;}\r\n.layui-form-select .layui-select-group dd{padding-left: 20px;}\r\n.layui-form-select dl dd.layui-select-tips{padding-left: 10px !important; color: #999;}\r\n.layui-form-select dl dd.layui-this{background-color: #f8f8f8; color: #16b777; font-weight: 700;}\r\n/*.layui-form-select dl dd.layui-this{background-color: #f8f8f8; color: #16b777; font-weight: 700;}*/\r\n.layui-form-select dl dd.layui-disabled{background-color: #fff;}\r\n.layui-form-selected dl{display: block;}\r\n.layui-form-selected .layui-edge{margin-top: -9px; -webkit-transform:rotate(180deg); transform: rotate(180deg);}\r\n.layui-form-selected .layui-edge{margin-top: -3px\\0; }\r\n:root .layui-form-selected .layui-edge{margin-top: -9px\\0/IE9;}\r\n.layui-form-selectup dl{top: auto; bottom: 42px;}\r\n.layui-select-none{margin: 5px 0; text-align: center; color: #999;}\r\n\r\n.layui-select-disabled .layui-disabled{border-color: #eee !important;}\r\n.layui-select-disabled .layui-edge{border-top-color: #d2d2d2}\r\n\r\n/* 复选框 */\r\n.layui-form-checkbox{position: relative; display: inline-block; vertical-align: middle; height: 30px; line-height: 30px; margin-right: 10px; padding-right: 30px; background-color: #fff; cursor: pointer; font-size: 0; -webkit-transition: .1s linear; transition: .1s linear; box-sizing: border-box;}\r\n.layui-form-checkbox:hover{}\r\n.layui-form-checkbox > *{display: inline-block; vertical-align: middle;}\r\n.layui-form-checkbox > div{padding: 0 11px; font-size: 14px; border-radius: 2px 0 0 2px; background-color: #d2d2d2; color: #fff; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}\r\n.layui-form-checkbox > div > .layui-icon{line-height: normal}\r\n.layui-form-checkbox:hover > div{background-color: #c2c2c2;}\r\n.layui-form-checkbox > i{position: absolute; right: 0; top: 0; width: 30px; height: 100%; border: 1px solid #d2d2d2; border-left: none; border-radius: 0 2px 2px 0; color: #fff; color: rgba(255,255,255,0); font-size: 20px; text-align: center; box-sizing: border-box;}\r\n.layui-form-checkbox:hover > i{border-color: #c2c2c2; color: #c2c2c2;}\r\n.layui-form-checked,\r\n.layui-form-checked:hover{border-color: #16b777;}\r\n.layui-form-checked > div,\r\n.layui-form-checked:hover > div{background-color: #16b777;}\r\n.layui-form-checked > i,\r\n.layui-form-checked:hover > i{color: #16b777;}\r\n.layui-form-item .layui-form-checkbox{margin-top: 4px;}\r\n.layui-form-checkbox.layui-checkbox-disabled > div{background-color: #eee !important;}\r\n.layui-form *[lay-checkbox]{display: none;}\r\n\r\n/* 复选框-默认风格 */\r\n.layui-form-checkbox[lay-skin=\"primary\"]{height: auto!important; line-height: normal!important; min-width: 18px; min-height: 18px; border: none!important; margin-right: 0; padding-left: 24px; padding-right: 0; background: none;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > div{margin-top: -1px; padding-left: 0; padding-right: 15px; line-height: 18px; background: none; color: #5F5F5F;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > i{right: auto; left: 0; width: 16px; height: 16px; line-height: 14px; border: 1px solid #d2d2d2; font-size: 12px; border-radius: 2px; background-color: #fff; -webkit-transition: .1s linear; transition: .1s linear;}\r\n.layui-form-checkbox[lay-skin=\"primary\"]:hover > i{border-color: #16b777; color: #fff;}\r\n.layui-form-checked[lay-skin=\"primary\"] > i{border-color: #16b777 !important; background-color: #16b777; color: #fff;}\r\n.layui-checkbox-disabled[lay-skin=\"primary\"] > div{background: none!important;}\r\n.layui-form-checked.layui-checkbox-disabled[lay-skin=\"primary\"] > i{background: #eee!important; border-color: #eee!important;}\r\n.layui-checkbox-disabled[lay-skin=\"primary\"]:hover > i{border-color: #d2d2d2;}\r\n.layui-form-item .layui-form-checkbox[lay-skin=\"primary\"]{margin-top: 10px;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > .layui-icon-indeterminate{border-color: #16b777;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > .layui-icon-indeterminate:before{content: ''; display: inline-block; vertical-align: middle; position: relative; width: 50%; height: 1px; margin: -1px auto 0; background-color: #16b777;}\r\n\r\n/* 复选框-开关风格 */\r\n.layui-form-switch{position: relative; display: inline-block; vertical-align: middle; height: 24px; line-height: 22px; min-width: 44px; padding: 0 5px; margin-top: 8px; border: 1px solid #d2d2d2; border-radius: 20px; cursor: pointer; box-sizing: border-box; background-color: #fff; -webkit-transition: .1s linear; transition: .1s linear;}\r\n.layui-form-switch > i{position: absolute; left: 5px; top: 3px; width: 16px; height: 16px; border-radius: 20px; background-color: #d2d2d2; -webkit-transition: .1s linear; transition: .1s linear;}\r\n.layui-form-switch > div{position: relative; top: 0; margin-left: 21px; padding: 0!important; text-align: center!important; color: #999!important; font-style: normal!important; font-size: 12px;}\r\n.layui-form-onswitch{border-color: #16b777; background-color: #16b777;}\r\n.layui-form-onswitch > i{left: 100%; margin-left: -21px; background-color: #fff;}\r\n.layui-form-onswitch > div{margin-left: 0; margin-right: 21px; color: #fff!important;}\r\n\r\n.layui-checkbox-disabled{border-color: #eee !important;}\r\n.layui-checkbox-disabled > div{color: #c2c2c2!important;}\r\n.layui-checkbox-disabled > i{border-color: #eee !important;}\r\n.layui-checkbox-disabled:hover > i{color: #fff !important;}\r\n\r\n/* 单选框 */\r\n.layui-form-radio{display: inline-block; vertical-align: middle; line-height: 28px; margin: 6px 10px 0 0; padding-right: 10px; cursor: pointer; font-size: 0;}\r\n.layui-form-radio > *{display: inline-block; vertical-align: middle; font-size: 14px;}\r\n.layui-form-radio > i{margin-right: 8px; font-size: 22px; color: #c2c2c2;}\r\n.layui-form-radioed,\r\n.layui-form-radioed > i,\r\n.layui-form-radio:hover > *{color: #16b777;}\r\n.layui-radio-disabled > i{color: #eee !important;}\r\n.layui-radio-disabled > *{color: #c2c2c2!important;}\r\n.layui-form *[lay-radio]{display: none;}\r\n\r\n/* 表单方框风格 */\r\n.layui-form-pane .layui-form-label{width: 110px; padding: 8px 15px; height: 38px; line-height: 20px; border-width: 1px; border-style: solid; border-radius: 2px 0 0 2px; text-align: center; background-color: #fafafa; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; box-sizing: border-box;}\r\n.layui-form-pane .layui-input-inline{margin-left: -1px;}\r\n.layui-form-pane .layui-input-block{margin-left: 110px; left: -1px;}\r\n.layui-form-pane .layui-input{border-radius: 0 2px 2px 0;}\r\n.layui-form-pane .layui-form-text .layui-form-label{float: none; width: 100%; border-radius: 2px; box-sizing: border-box; text-align: left;}\r\n.layui-form-pane .layui-form-text .layui-input-inline{display: block; margin: 0; top: -1px; clear: both;}\r\n.layui-form-pane .layui-form-text .layui-input-block{margin: 0; left: 0; top: -1px;}\r\n.layui-form-pane .layui-form-text .layui-textarea{min-height: 100px; border-radius: 0 0 2px 2px;}\r\n.layui-form-pane .layui-form-checkbox{margin: 4px 0 4px 10px;}\r\n.layui-form-pane .layui-form-switch,\r\n.layui-form-pane .layui-form-radio{margin-top: 6px; margin-left: 10px; }\r\n.layui-form-pane .layui-form-item[pane]{position: relative; border-width: 1px; border-style: solid;}\r\n.layui-form-pane .layui-form-item[pane] .layui-form-label{position: absolute; left: 0; top: 0; height: 100%; border-width: 0px; border-right-width: 1px;}\r\n.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left: 110px;}\r\n\r\n/** 表单响应式 **/\r\n@media screen and (max-width: 450px) {\r\n .layui-form-item .layui-form-label{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n .layui-form-item .layui-inline{display: block; margin-right: 0; margin-bottom: 20px; clear: both;}\r\n .layui-form-item .layui-inline:after{content:'\\20'; clear:both; display:block; height:0;}\r\n .layui-form-item .layui-input-inline{display: block; float: none; left: -3px; width: auto !important; margin: 0 0 10px 112px; }\r\n .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 110px; top: -5px; padding: 0;}\r\n .layui-form-item .layui-form-checkbox{margin-right: 5px; margin-bottom: 5px;}\r\n}\r\n\r\n/** 分页 **/\r\n.layui-laypage{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; margin: 10px 0; font-size: 0;}\r\n.layui-laypage>a:first-child,\r\n.layui-laypage>a:first-child em{border-radius: 2px 0 0 2px;}\r\n.layui-laypage>a:last-child,\r\n.layui-laypage>a:last-child em{border-radius: 0 2px 2px 0;}\r\n.layui-laypage>*:first-child{margin-left: 0!important;}\r\n.layui-laypage>*:last-child{margin-right: 0!important;}\r\n.layui-laypage a,\r\n.layui-laypage span,\r\n.layui-laypage input,\r\n.layui-laypage button,\r\n.layui-laypage select{border: 1px solid #eee;}\r\n.layui-laypage a,\r\n.layui-laypage span{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; padding: 0 15px; height: 28px; line-height: 28px; margin: 0 -1px 5px 0; background-color: #fff; color: #333; font-size: 12px;}\r\n.layui-laypage a[data-page]{color: #333;}\r\n.layui-laypage a{text-decoration: none !important; cursor: pointer;}\r\n.layui-laypage a:hover{color: #16baaa;}\r\n.layui-laypage em{font-style: normal;}\r\n.layui-laypage .layui-laypage-spr{color:#999; font-weight: 700;}\r\n.layui-laypage .layui-laypage-curr{position: relative;}\r\n.layui-laypage .layui-laypage-curr em{position: relative; color: #fff;}\r\n.layui-laypage .layui-laypage-curr .layui-laypage-em{position: absolute; left: -1px; top: -1px; padding: 1px; width: 100%; height: 100%; background-color: #16baaa; }\r\n.layui-laypage-em{border-radius: 2px;}\r\n.layui-laypage-prev em,\r\n.layui-laypage-next em{font-family: Sim sun; font-size: 16px;}\r\n\r\n.layui-laypage .layui-laypage-count,\r\n.layui-laypage .layui-laypage-limits,\r\n.layui-laypage .layui-laypage-refresh,\r\n.layui-laypage .layui-laypage-skip{margin-left: 10px; margin-right: 10px; padding: 0; border: none;}\r\n.layui-laypage .layui-laypage-limits,\r\n.layui-laypage .layui-laypage-refresh{vertical-align: top;}\r\n.layui-laypage .layui-laypage-refresh i{font-size: 18px; cursor: pointer;}\r\n.layui-laypage select{height: 22px; padding: 3px; border-radius: 2px; cursor: pointer;}\r\n.layui-laypage .layui-laypage-skip{height: 30px; line-height: 30px; color: #999;}\r\n.layui-laypage input, .layui-laypage button{height: 30px; line-height: 30px; border-radius: 2px; vertical-align: top; background-color: #fff; box-sizing: border-box;}\r\n.layui-laypage input{display: inline-block; width: 40px; margin: 0 10px; padding: 0 3px; text-align: center;}\r\n.layui-laypage input:focus,\r\n.layui-laypage select:focus{border-color: #16baaa!important;}\r\n.layui-laypage button{margin-left: 10px; padding: 0 10px; cursor: pointer;}\r\n\r\n/** 流加载 **/\r\n.layui-flow-more{margin: 10px 0; text-align: center; color: #999; font-size: 14px; clear: both;}\r\n.layui-flow-more a{ height: 32px; line-height: 32px; }\r\n.layui-flow-more a *{display: inline-block; vertical-align: top;}\r\n.layui-flow-more a cite{padding: 0 20px; border-radius: 3px; background-color: #eee; color: #333; font-style: normal;}\r\n.layui-flow-more a cite:hover{opacity: 0.8;}\r\n.layui-flow-more a i{font-size: 30px; color: #737383;}\r\n\r\n/** 表格 **/\r\n.layui-table{width: 100%; margin: 10px 0; background-color: #fff; color: #5F5F5F;}\r\n.layui-table tr{transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-table th{text-align: left; font-weight: 600;}\r\n\r\n.layui-table thead tr,\r\n.layui-table-header,\r\n.layui-table-tool,\r\n.layui-table-total,\r\n.layui-table-total tr,\r\n.layui-table-patch{}\r\n.layui-table-mend{background-color: #fff;}\r\n.layui-table-hover,\r\n.layui-table-click,\r\n.layui-table[lay-even] tbody tr:nth-child(even){background-color: #f8f8f8;}\r\n.layui-table-checked{background-color: #dbfbf0;}\r\n.layui-table-checked.layui-table-hover,\r\n.layui-table-checked.layui-table-click{background-color: #abf8dd;}\r\n\r\n\r\n.layui-table th,\r\n.layui-table td,\r\n.layui-table[lay-skin=\"line\"],\r\n.layui-table[lay-skin=\"row\"],\r\n.layui-table-view,\r\n.layui-table-tool,\r\n.layui-table-header,\r\n.layui-table-col-set,\r\n.layui-table-total,\r\n.layui-table-page,\r\n.layui-table-fixed-r,\r\n.layui-table-mend,\r\n.layui-table-tips-main,\r\n.layui-table-grid-down{border-width: 1px; border-style: solid; border-color: #eee;}\r\n\r\n.layui-table th, .layui-table td{position: relative; padding: 9px 15px; min-height: 20px; line-height: 20px; font-size: 14px;}\r\n\r\n.layui-table[lay-skin=\"line\"] th, .layui-table[lay-skin=\"line\"] td{border-width: 0; border-bottom-width: 1px;}\r\n.layui-table[lay-skin=\"row\"] th, .layui-table[lay-skin=\"row\"] td{border-width: 0;border-right-width: 1px;}\r\n.layui-table[lay-skin=\"nob\"] th, .layui-table[lay-skin=\"nob\"] td{border: none;}\r\n\r\n.layui-table img{max-width:100px;}\r\n\r\n/* 大表格 */\r\n.layui-table[lay-size=\"lg\"] th,\r\n.layui-table[lay-size=\"lg\"] td{padding-top: 15px; padding-right: 30px; padding-bottom: 15px; padding-left: 30px;}\r\n.layui-table-view .layui-table[lay-size=\"lg\"] .layui-table-cell{height: 50px; line-height: 40px;}\r\n\r\n/* 小表格 */\r\n.layui-table[lay-size=\"sm\"] th,\r\n.layui-table[lay-size=\"sm\"] td{padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; font-size: 12px;}\r\n.layui-table-view .layui-table[lay-size=\"sm\"] .layui-table-cell{height: 30px; line-height: 20px; padding-top: 5px; padding-left: 11px; padding-right: 11px;}\r\n\r\n/* 数据表格 */\r\n.layui-table[lay-data],\r\n.layui-table[lay-options]{display: none;}\r\n.layui-table-box{position: relative; overflow: hidden;}\r\n.layui-table-view{clear: both;}\r\n.layui-table-view .layui-table{position: relative; width: auto; margin: 0; border: 0; border-collapse: separate;}\r\n.layui-table-view .layui-table[lay-skin=\"line\"]{border-width: 0; border-right-width: 1px;}\r\n.layui-table-view .layui-table[lay-skin=\"row\"]{border-width: 0; border-bottom-width: 1px;}\r\n.layui-table-view .layui-table th,\r\n.layui-table-view .layui-table td{padding: 0; border-top: none; border-left: none;}\r\n.layui-table-view .layui-table th [lay-event],\r\n.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor: pointer;}\r\n.layui-table-view .layui-table th span,\r\n.layui-table-view .layui-table td{cursor: default;}\r\n.layui-table-view .layui-table td[data-edit]{cursor: text;}\r\n.layui-table-view .layui-table td[data-edit]:hover:after{position: absolute; left: 0; top: 0; width: 100%; height: 100%; box-sizing: border-box; border: 1px solid #16B777; pointer-events: none; content: \"\";}\r\n\r\n.layui-table-view .layui-form-checkbox[lay-skin=\"primary\"] i{width: 18px; height: 18px; line-height: 16px;}\r\n.layui-table-view .layui-form-radio{line-height: 0; padding: 0;}\r\n.layui-table-view .layui-form-radio>i{margin: 0; font-size: 20px;}\r\n.layui-table-init{position: absolute; left: 0; top: 0; width: 100%; height: 100%; text-align: center; z-index: 199;}\r\n.layui-table-init .layui-icon{position: absolute; left: 50%; top: 50%; margin: -15px 0 0 -15px; font-size: 30px; color: #c2c2c2;}\r\n.layui-table-header{border-width: 0; border-bottom-width: 1px; overflow: hidden;}\r\n.layui-table-header .layui-table{margin-bottom: -1px;}\r\n\r\n.layui-table-column{position: relative; width: 100%; min-height: 41px; padding: 8px 16px; border-width: 0; border-bottom-width: 1px;}\r\n.layui-table-column .layui-btn-container{margin-bottom: -8px;}\r\n.layui-table-column .layui-btn-container .layui-btn{margin-right: 8px; margin-bottom: 8px;}\r\n\r\n.layui-table-tool .layui-inline[lay-event]{position: relative; width: 26px; height: 26px; padding: 5px; line-height: 16px; margin-right: 10px; text-align: center; color: #333; border: 1px solid #ccc; cursor: pointer; -webkit-transition: .5s all; transition: .5s all;}\r\n.layui-table-tool .layui-inline[lay-event]:hover{border: 1px solid #999;}\r\n.layui-table-tool-temp{padding-right: 120px;}\r\n.layui-table-tool-self{position: absolute; right: 17px; top: 10px;}\r\n.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin: 0 0 0 10px;}\r\n.layui-table-tool-panel{position: absolute; top: 29px; left: -1px; z-index: 399; padding: 5px 0 !important; min-width: 150px; min-height: 40px; border: 1px solid #d2d2d2; text-align: left; overflow-y: auto; background-color: #fff; box-shadow: 0 2px 4px rgba(0,0,0,.12);}\r\n.layui-table-tool-panel li{padding: 0 10px; margin: 0 !important; line-height: 30px; list-style-type: none !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-transition: .5s all; transition: .5s all;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"]{width: 100%;}\r\n.layui-table-tool-panel li:hover{background-color: #f8f8f8;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"]{padding-left: 28px;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"] i{position: absolute; left: 0; top: 0;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"] span{padding: 0;}\r\n.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left: auto; right: -1px;}\r\n\r\n.layui-table-col-set{position: absolute; right: 0; top: 0; width: 20px; height: 100%; border-width: 0; border-left-width: 1px; background-color: #fff;}\r\n\r\n.layui-table-sort{width: 10px; height: 20px; margin-left: 5px; cursor: pointer!important;}\r\n.layui-table-sort .layui-edge{position: absolute; left: 5px; border-width: 5px;}\r\n.layui-table-sort .layui-table-sort-asc{top: 3px; border-top: none; border-bottom-style: solid; border-bottom-color: #b2b2b2;}\r\n.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color: #5F5F5F;}\r\n.layui-table-sort .layui-table-sort-desc{bottom: 5px; border-bottom: none; border-top-style: solid; border-top-color: #b2b2b2;}\r\n.layui-table-sort .layui-table-sort-desc:hover{border-top-color: #5F5F5F;}\r\n.layui-table-sort[lay-sort=\"asc\"] .layui-table-sort-asc{border-bottom-color: #000;}\r\n.layui-table-sort[lay-sort=\"desc\"] .layui-table-sort-desc{border-top-color: #000;}\r\n\r\n.layui-table-cell{height: 38px; line-height: 28px; padding: 6px 15px; position: relative; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box;}\r\n.layui-table-cell .layui-form-checkbox[lay-skin=\"primary\"]{top: -1px; padding: 0;}\r\n.layui-table-cell .layui-form-checkbox[lay-skin=\"primary\"] > div{padding-left: 24px;}\r\n.layui-table-cell .layui-table-link{color: #01AAED;}\r\n.layui-table-cell .layui-btn{vertical-align: inherit;}\r\n.layui-table-cell[align=\"center\"]{-webkit-box-pack: center;}\r\n.layui-table-cell[align=\"right\"]{-webkit-box-pack: end;}\r\n\r\n.laytable-cell-checkbox,\r\n.laytable-cell-radio,\r\n.laytable-cell-space,\r\n.laytable-cell-numbers{text-align: center; -webkit-box-pack: center;}\r\n\r\n.layui-table-body{position: relative; overflow: auto; margin-right: -1px; margin-bottom: -1px;}\r\n.layui-table-body .layui-none{line-height: 26px; padding: 30px 15px; text-align: center; color: #999;}\r\n.layui-table-fixed{position: absolute; left: 0; top: 0; z-index: 101;}\r\n.layui-table-fixed .layui-table-body{overflow: hidden;}\r\n.layui-table-fixed-l{box-shadow: 1px 0 8px rgba(0,0,0,.08);}\r\n.layui-table-fixed-r{left: auto; right: -1px; border-width: 0; border-left-width: 1px; box-shadow: -1px 0 8px rgba(0,0,0,.08);}\r\n.layui-table-fixed-r .layui-table-header{position: relative; overflow: visible;}\r\n.layui-table-mend{position: absolute; right: -49px; top: 0; height: 100%; width: 50px; border-width: 0; border-left-width: 1px;}\r\n\r\n.layui-table-tool{position: relative; width: 100%; min-height: 50px; line-height: 30px; padding: 10px 15px; border-width: 0; border-bottom-width: 1px; /*box-shadow: 0 1px 8px 0 rgb(0 0 0 / 8%);*/}\r\n.layui-table-tool .layui-btn-container{margin-bottom: -10px;}\r\n\r\n.layui-table-total{margin-bottom: -1px; border-width: 0; border-top-width: 1px; overflow: hidden;}\r\n\r\n\r\n.layui-table-page{border-width: 0; border-top-width: 1px; margin-bottom: -1px; white-space: nowrap; overflow: hidden;}\r\n.layui-table-page>div{height: 26px;}\r\n.layui-table-page .layui-laypage{margin: 0;}\r\n.layui-table-page .layui-laypage a,\r\n.layui-table-page .layui-laypage span{height: 26px; line-height: 26px; margin-bottom: 10px; border: none; background: none;}\r\n.layui-table-page .layui-laypage a,\r\n.layui-table-page .layui-laypage span.layui-laypage-curr{padding: 0 12px;}\r\n.layui-table-page .layui-laypage span{margin-left: 0; padding: 0;}\r\n.layui-table-page .layui-laypage .layui-laypage-prev{margin-left: -11px!important;}\r\n.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left: 0; top: 0; padding: 0;}\r\n.layui-table-page .layui-laypage input,\r\n.layui-table-page .layui-laypage button{height: 26px; line-height: 26px; }\r\n.layui-table-page .layui-laypage input{width: 40px;}\r\n.layui-table-page .layui-laypage button{padding: 0 10px;}\r\n.layui-table-page select{height: 18px;}\r\n.layui-table-pagebar{float: right; line-height: 23px;}\r\n.layui-table-pagebar .layui-btn-sm{margin-top: -1px;}\r\n.layui-table-pagebar .layui-btn-xs{margin-top: 2px;}\r\n\r\n.layui-table-view select[lay-ignore]{display: inline-block;}\r\n.layui-table-patch .layui-table-cell{padding: 0; width: 30px;}\r\n\r\n.layui-table-edit{position: absolute; left: 0; top: 0; z-index: 189; min-width: 100%; min-height: 100%; padding: 5px 14px; border-radius: 0; box-shadow: 1px 1px 20px rgba(0,0,0,.15); background-color: #fff;}\r\n.layui-table-edit:focus{border-color: #16b777!important;}\r\ninput.layui-input.layui-table-edit{height: 100%;}\r\nselect.layui-table-edit{padding: 0 0 0 10px; border-color: #d2d2d2;}\r\n.layui-table-view .layui-form-switch,\r\n.layui-table-view .layui-form-checkbox,\r\n.layui-table-view .layui-form-radio{top: 0; margin: 0;}\r\n.layui-table-view .layui-form-checkbox{top: -1px; height: 26px; line-height: 26px;}\r\n.layui-table-view .layui-form-checkbox i{height: 26px;}\r\n\r\n/* 展开溢出的单元格 */\r\n.layui-table-grid .layui-table-cell{overflow: visible;}\r\n.layui-table-grid-down{position: absolute; top: 0; right: 0; width: 24px; height: 100%; padding: 5px 0; border-width: 0; border-left-width: 1px; text-align: center; background-color: #fff; color: #999; cursor: pointer;}\r\n.layui-table-grid-down .layui-icon{position: absolute; top: 50%; left: 50%; margin: -8px 0 0 -8px; font-size: 14px;}\r\n.layui-table-grid-down:hover{background-color: #fbfbfb;}\r\n\r\n/* 单元格多行展开风格 */\r\n.layui-table-expanded{height: 95px;}\r\n.layui-table-expanded .layui-table-cell,\r\n.layui-table-view .layui-table[lay-size=\"sm\"] .layui-table-expanded .layui-table-cell,\r\n.layui-table-view .layui-table[lay-size=\"lg\"] .layui-table-expanded .layui-table-cell{height: auto; max-height: 94px; white-space: normal; text-overflow: clip;}\r\n.layui-table-cell-c{position: absolute; bottom: -10px; right: 50%; margin-right: -9px; width: 20px; height: 20px; line-height: 18px; cursor: pointer; text-align: center; background-color: #fff; border: 1px solid #eee; border-radius: 50%; z-index: 1000; transition: 0.3s all; font-size: 14px;}\r\n.layui-table-cell-c:hover{border-color: #16b777;}\r\n.layui-table-expanded td:hover .layui-table-cell{overflow: auto;}\r\n.layui-table-main > .layui-table > tbody > tr:last-child > td > .layui-table-cell-c{bottom: 0;}\r\n\r\n/* 单元格 TIPS 展开风格 */\r\nbody .layui-table-tips .layui-layer-content{background: none; padding: 0; box-shadow: 0 1px 6px rgba(0,0,0,.12);}\r\n.layui-table-tips-main{margin: -49px 0 0 -1px; max-height: 150px; padding: 8px 15px; font-size: 14px; overflow-y: scroll; background-color: #fff; color: #5F5F5F;}\r\n.layui-table-tips-c{position: absolute; right: -3px; top: -13px; width: 20px; height: 20px; padding: 3px; cursor: pointer; background-color: #5F5F5F; border-radius: 50%; color: #fff;}\r\n.layui-table-tips-c:hover{background-color: #777;}\r\n.layui-table-tips-c:before{position: relative; right: -2px;}\r\n\r\n\r\n/** 树表 **/\r\n.layui-table-tree-nodeIcon {max-width: 20px;}\r\n.layui-table-tree-nodeIcon > * {width: 100%;}\r\n.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon {margin-right: 2px;}\r\n.layui-table-tree-flexIcon {cursor: pointer;}\r\n\r\n /** 文件上传 **/\r\n.layui-upload-file{display: none!important; opacity: .01; filter: Alpha(opacity=1);}\r\n.layui-upload-list{margin: 11px 0;}\r\n.layui-upload-choose{max-width: 200px; padding: 0 10px; color: #999; font-size: 14px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.layui-upload-drag{position: relative; display: inline-block; padding: 30px; border: 1px dashed #e2e2e2; background-color: #fff; text-align: center; cursor: pointer; color: #999;}\r\n.layui-upload-drag .layui-icon{font-size: 50px; color: #16baaa;}\r\n.layui-upload-drag[lay-over]{border-color: #16baaa}\r\n.layui-upload-form{display: inline-block;}\r\n.layui-upload-iframe{position: absolute; width: 0; height: 0; border: 0; visibility: hidden}\r\n.layui-upload-wrap{position: relative; display: inline-block; vertical-align: middle;}\r\n.layui-upload-wrap .layui-upload-file{display: block!important; position: absolute; left: 0; top: 0; z-index: 10; font-size: 100px; width: 100%; height: 100%; opacity: .01; filter: Alpha(opacity=1); cursor: pointer;}\r\n.layui-btn-container .layui-upload-choose{padding-left: 0;}\r\n\r\n\r\n/* 基础菜单元素 */\r\n.layui-menu{position: relative; margin: 5px 0; background-color: #fff; box-sizing: border-box;}\r\n.layui-menu *{box-sizing: border-box;}\r\n.layui-menu li,\r\n.layui-menu-body-title,\r\n.layui-menu-body-title a{padding: 5px 15px; color: initial}\r\n.layui-menu li{position: relative; margin: 0 0 1px; line-height: 26px; color: rgba(0,0,0,.8); font-size: 14px; white-space: nowrap; cursor: pointer; transition: all .3s;}\r\n.layui-menu li:hover{background-color: #f8f8f8; }\r\n.layui-menu li.layui-disabled,\r\n.layui-menu li.layui-disabled *{background: none !important; color: #d2d2d2 !important; cursor: not-allowed !important;}\r\n\r\n.layui-menu-item-parent:hover>.layui-menu-body-panel{display: block; animation-name: layui-fadein; animation-duration: 0.3s; animation-fill-mode: both; animation-delay:.2s;}\r\n.layui-menu-item-parent>.layui-menu-body-title,\r\n.layui-menu-item-group>.layui-menu-body-title{padding-right: 38px;}\r\n\r\n.layui-menu .layui-menu-item-group:hover,\r\n.layui-menu .layui-menu-item-none:hover,\r\n.layui-menu .layui-menu-item-divider:hover{background: none; cursor: default;}\r\n.layui-menu .layui-menu-item-group>ul{margin: 5px 0 -5px;}\r\n.layui-menu .layui-menu-item-group>.layui-menu-body-title{color: rgba(0,0,0,.35); user-select: none;}\r\n.layui-menu .layui-menu-item-none{color: rgba(0,0,0,.35); cursor: default;}\r\n\r\n.layui-menu .layui-menu-item-none{text-align: center;}\r\n.layui-menu .layui-menu-item-divider{margin: 5px 0; padding: 0; height: 0; line-height: 0; border-bottom: 1px solid #eee; overflow: hidden;}\r\n\r\n.layui-menu .layui-menu-item-up:hover,\r\n.layui-menu .layui-menu-item-down:hover{cursor: pointer;}\r\n.layui-menu .layui-menu-item-up>.layui-menu-body-title{ color: rgba(0,0,0,.8);}\r\n.layui-menu .layui-menu-item-up>ul{visibility: hidden; height: 0; overflow: hidden;}\r\n.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform: rotate(180deg);}\r\n.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform: rotate(-180deg);}\r\n.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon,\r\n.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon{color: rgba(0,0,0,1);}\r\n.layui-menu .layui-menu-item-down>ul{visibility: visible; height: auto;}\r\n\r\n.layui-menu .layui-menu-item-checked,\r\n.layui-menu .layui-menu-item-checked2{background-color: #f8f8f8!important; color: #16b777;}\r\n.layui-menu .layui-menu-item-checked a,\r\n.layui-menu .layui-menu-item-checked2 a{color: #16b777;}\r\n.layui-menu .layui-menu-item-checked:after{position: absolute; right: -1px; top: 0; bottom: 0; border-right: 3px solid #16b777; content: \"\";}\r\n\r\n.layui-menu-body-title{position: relative; margin: -5px -15px; overflow: hidden; text-overflow: ellipsis;}\r\n.layui-menu-body-title a{display: block; margin: -5px -15px; color: rgba(0,0,0,.8);}\r\n.layui-menu-body-title a:hover{transition: all .3s;}\r\n.layui-menu-body-title>.layui-icon{position: absolute; right: 15px; top: 50%; margin-top: -6px; line-height: normal; font-size: 14px; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-menu-body-title>.layui-icon:hover{transition: all .3s;}\r\n.layui-menu-body-title>.layui-icon-right{right: 14px;}\r\n.layui-menu-body-panel{display: none; position: absolute; top: -7px; left: 100%; z-index: 1000; margin-left: 13px; padding: 5px 0;}\r\n.layui-menu-body-panel:before{content: \"\"; position: absolute; width: 20px; left: -16px; top: 0; bottom: 0;}\r\n.layui-menu-body-panel-left{left: auto; right: 100%; margin: 0 13px 0;}\r\n.layui-menu-body-panel-left:before{left: auto; right: -16px;}\r\n\r\n.layui-menu-lg li{line-height: 32px;}\r\n.layui-menu-lg li:hover,\r\n.layui-menu-lg .layui-menu-body-title a:hover{background: none; color: #16b777;}\r\n.layui-menu-lg li .layui-menu-body-panel{margin-left: 14px}\r\n.layui-menu-lg li .layui-menu-body-panel-left{margin: 0 15px 0;}\r\n\r\n\r\n/* 下拉菜单 */\r\n.layui-dropdown{position: absolute; left: -999999px; top: -999999px; z-index: 77777777; margin: 5px 0; min-width: 100px;}\r\n.layui-dropdown:before{content:\"\"; position: absolute; width: 100%; height: 6px; left: 0; top: -6px;}\r\n.layui-dropdown-shade{top: 0; left: 0; width: 100%; height: 100%; _height: expression(document.body.offsetHeight+\"px\"); position: fixed; _position: absolute; pointer-events: auto;}\r\n\r\n/** 导航菜单 **/\r\n.layui-nav{position: relative; padding: 0 15px; background-color: #2f363c; color: #fff; border-radius: 2px; font-size: 0; box-sizing: border-box;}\r\n.layui-nav *{font-size: 14px;}\r\n.layui-nav .layui-nav-item{position: relative; display: inline-block; *display: inline; *zoom: 1; margin-top: 0; list-style: none; vertical-align: middle; line-height: 60px;}\r\n.layui-nav .layui-nav-item a{display: block; padding: 0 20px; color: #fff; color: rgba(255,255,255,.7); transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-nav-bar,\r\n.layui-nav .layui-this:after{content: \"\"; position: absolute; left: 0; top: 0; width: 0; height: 3px; background-color: #16b777; transition: all .2s; -webkit-transition: all .2s; pointer-events: none;}\r\n.layui-nav-bar{z-index: 1000;}\r\n.layui-nav[lay-bar=\"disabled\"] .layui-nav-bar{display: none;}\r\n.layui-nav[lay-bar=\"disabled\"].layui-this:after{}\r\n.layui-nav .layui-this a,\r\n.layui-nav .layui-nav-item a:hover{color: #fff; text-decoration: none;}\r\n.layui-nav .layui-this:after{top: auto; bottom: 0; width: 100%;}\r\n.layui-nav-img{width: 30px; height: 30px; margin-right: 10px; border-radius: 50%;}\r\n\r\n.layui-nav .layui-nav-more{position: absolute; top: 0; right: 3px; left: auto !important; margin-top: 0; font-size: 12px; cursor: pointer; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-nav .layui-nav-mored,\r\n.layui-nav-itemed > a .layui-nav-more{transform: rotate(180deg);}\r\n\r\n\r\n.layui-nav-child{display: none; position: absolute; left: 0; top: 65px; min-width: 100%; line-height: 36px; padding: 5px 0; box-shadow: 0 2px 4px rgba(0,0,0,.12); border: 1px solid #eee; background-color: #fff; z-index: 100; border-radius: 2px; white-space: nowrap; box-sizing: border-box;}\r\n.layui-nav .layui-nav-child a{color: #5F5F5F; color: rgba(0,0,0,.8);}\r\n.layui-nav .layui-nav-child a:hover{background-color: #f8f8f8; color: rgba(0,0,0,.8);}\r\n.layui-nav-child dd{margin: 1px 0; position: relative;}\r\n.layui-nav-child dd.layui-this{background-color: #f8f8f8; color: #000;}\r\n.layui-nav-child dd.layui-this:after{display: none;}\r\n.layui-nav-child-r{left: auto; right: 0;}\r\n.layui-nav-child-c{text-align: center;}\r\n\r\n/* 垂直导航菜单 */\r\n.layui-nav.layui-nav-tree{width: 200px; padding: 0;}\r\n.layui-nav-tree .layui-nav-item{display: block; width: 100%; line-height: 40px;}\r\n.layui-nav-tree .layui-nav-item a{position: relative; height: 40px; line-height: 40px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.layui-nav-tree .layui-nav-item>a{padding-top: 5px; padding-bottom: 5px;}\r\n.layui-nav-tree .layui-nav-more{right: 15px;}\r\n.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding: 5px 0;}\r\n.layui-nav-tree .layui-nav-bar{width: 5px; height: 0;}\r\n.layui-side .layui-nav-tree .layui-nav-bar{width: 2px;}\r\n.layui-nav-tree .layui-this,\r\n.layui-nav-tree .layui-this>a,\r\n.layui-nav-tree .layui-this>a:hover,\r\n.layui-nav-tree .layui-nav-child dd.layui-this,\r\n.layui-nav-tree .layui-nav-child dd.layui-this a{background-color: #16baaa; color: #fff;}\r\n.layui-nav-tree .layui-this:after{display: none;}\r\n.layui-nav-tree .layui-nav-title a,\r\n.layui-nav-tree .layui-nav-title a:hover,\r\n.layui-nav-itemed>a{color: #fff !important;}\r\n.layui-nav-tree .layui-nav-bar{background-color: #16baaa;}\r\n\r\n.layui-nav-tree .layui-nav-child{position: relative; z-index: 0; top: 0; border: none; background: none; background-color: rgba(0,0,0,.3); box-shadow: none;}\r\n.layui-nav-tree .layui-nav-child dd{margin: 0;}\r\n.layui-nav-tree .layui-nav-child a{color: #fff; color: rgba(255,255,255,.7);}\r\n.layui-nav-tree .layui-nav-child a:hover{background: none; color: #fff;}\r\n\r\n/* 垂直导航 - 展开状态 */\r\n.layui-nav-itemed>.layui-nav-child,\r\n.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display: block;}\r\n\r\n/* 垂直导航 - 侧边 */\r\n.layui-nav-side{position: fixed; top: 0; bottom: 0; left: 0; overflow-x: hidden; z-index: 999;}\r\n\r\n/* 导航浅色背景 */\r\n.layui-nav.layui-bg-gray .layui-nav-item a,\r\n.layui-nav-tree.layui-bg-gray a{color: #373737; color: rgba(0,0,0,.8);}\r\n.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color: #000 !important;}\r\n.layui-nav.layui-bg-gray .layui-this a{color: #16b777;}\r\n.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left: 11px; background: none;}\r\n.layui-nav-tree.layui-bg-gray .layui-this,\r\n.layui-nav-tree.layui-bg-gray .layui-this>a,\r\n.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,\r\n.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a{background: none!important; color: #16b777!important; font-weight: 700;}\r\n.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color: #16b777;}\r\n\r\n\r\n/** 面包屑 **/\r\n.layui-breadcrumb{visibility: hidden; font-size: 0;}\r\n.layui-breadcrumb>*{font-size: 14px;}\r\n.layui-breadcrumb a{color: #999 !important;}\r\n.layui-breadcrumb a:hover{color: #16b777 !important;}\r\n.layui-breadcrumb a cite{color: #5F5F5F; font-style: normal;}\r\n.layui-breadcrumb span[lay-separator]{margin: 0 10px; color: #999;}\r\n\r\n/** Tab 选项卡 **/\r\n.layui-tab{margin: 10px 0; text-align: left !important;}\r\n.layui-tab[overflow]>.layui-tab-title{overflow: hidden;}\r\n.layui-tab .layui-tab-title{position: relative; left: 0; height: 40px; white-space: nowrap; font-size: 0; border-bottom-width: 1px; border-bottom-style: solid; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab .layui-tab-title li{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; font-size: 14px; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab .layui-tab-title li{position: relative; line-height: 40px; min-width: 65px; margin: 0; padding: 0 15px; text-align: center; cursor: pointer;}\r\n.layui-tab .layui-tab-title li a{display: block; padding: 0 15px; margin: 0 -15px;}\r\n.layui-tab-title .layui-this{color: #000;}\r\n\r\n.layui-tab-title .layui-this:after{position: absolute; left:0; top: 0; content: \"\"; width:100%; height: 41px; border-width: 1px; border-style: solid; border-bottom-color: #fff; border-radius: 2px 2px 0 0; box-sizing: border-box; pointer-events: none;}\r\n.layui-tab-bar{position: absolute; right: 0; top: 0; z-index: 10; width: 30px; height: 39px; line-height: 39px; border-width: 1px; border-style: solid; border-radius: 2px; text-align: center; background-color: #fff; cursor: pointer;}\r\n.layui-tab-bar .layui-icon{position: relative; display: inline-block; top: 3px; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-tab-item{display: none;}\r\n.layui-tab-more{padding-right: 30px; height: auto !important; white-space: normal !important;}\r\n.layui-tab-more li.layui-this:after{border-bottom-color: #eee; border-radius: 2px;}\r\n.layui-tab-more .layui-tab-bar .layui-icon{top: -2px; top: 3px\\0; -webkit-transform: rotate(180deg); transform: rotate(180deg);}\r\n:root .layui-tab-more .layui-tab-bar .layui-icon{top: -2px\\0/IE9;}\r\n\r\n.layui-tab-content{padding: 15px 0;}\r\n\r\n/* Tab 关闭 */.layui-tab-title li .layui-tab-close{position: relative; display: inline-block; width: 18px; height: 18px; line-height: 20px; margin-left: 8px; top: 1px; text-align: center; font-size: 14px; color: #c2c2c2; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab-title li .layui-tab-close:hover{border-radius: 2px; background-color: #ff5722; color: #fff;}\r\n\r\n/* Tab 简洁风格 */.layui-tab-brief > .layui-tab-title .layui-this{color: #16baaa;}\r\n.layui-tab-brief > .layui-tab-title .layui-this:after\r\n,.layui-tab-brief > .layui-tab-more li.layui-this:after{border: none; border-radius: 0; border-bottom: 2px solid #16b777;}\r\n.layui-tab-brief[overflow] > .layui-tab-title .layui-this:after{top: -1px;}\r\n\r\n/* Tab 卡片风格 */.layui-tab-card{border-width: 1px; border-style: solid; border-radius: 2px; box-shadow: 0 2px 5px 0 rgba(0,0,0,.1);}\r\n.layui-tab-card > .layui-tab-title{background-color: #fafafa;}\r\n.layui-tab-card > .layui-tab-title li{margin-right: -1px; margin-left: -1px;}\r\n.layui-tab-card > .layui-tab-title .layui-this{background-color: #fff; }\r\n.layui-tab-card > .layui-tab-title .layui-this:after{border-top: none; border-width: 1px; border-bottom-color: #fff;}\r\n.layui-tab-card > .layui-tab-title .layui-tab-bar{height: 40px; line-height: 40px; border-radius: 0; border-top: none; border-right: none;}\r\n.layui-tab-card > .layui-tab-more .layui-this{background: none; color: #16b777;}\r\n.layui-tab-card > .layui-tab-more .layui-this:after{border: none;}\r\n\r\n/* 时间线 */\r\n.layui-timeline{padding-left: 5px;}\r\n.layui-timeline-item{position: relative; padding-bottom: 20px;}\r\n.layui-timeline-axis{position: absolute; left: -5px; top: 0; z-index: 10; width: 20px; height: 20px; line-height: 20px; background-color: #fff; color: #16b777; border-radius: 50%; text-align: center; cursor: pointer;}\r\n.layui-timeline-axis:hover{color: #ff5722;}\r\n.layui-timeline-item:before{content: \"\"; position: absolute; left: 5px; top: 0; z-index: 0; width: 1px; height: 100%;}\r\n\r\n.layui-timeline-item:first-child:before{display: block;}\r\n.layui-timeline-item:last-child:before{display: none;}\r\n.layui-timeline-content{padding-left: 25px;;}\r\n.layui-timeline-title{position: relative; margin-bottom: 10px; line-height: 22px;}\r\n\r\n/* 小徽章 */\r\n.layui-badge,\r\n.layui-badge-dot,\r\n.layui-badge-rim{position:relative; display: inline-block; padding: 0 6px; font-size: 12px; text-align: center; background-color: #ff5722; color: #fff; border-radius: 2px;}\r\n.layui-badge{height: 18px; line-height: 18px;}\r\n.layui-badge-dot{width: 8px; height: 8px; padding: 0; border-radius: 50%;}\r\n.layui-badge-rim{height: 18px; line-height: 18px; border-width: 1px; border-style: solid; background-color: #fff; color: #5F5F5F;}\r\n\r\n.layui-btn .layui-badge,\r\n.layui-btn .layui-badge-dot{margin-left: 5px;}\r\n.layui-nav .layui-badge,\r\n.layui-nav .layui-badge-dot{position: absolute; top: 50%; margin: -5px 6px 0;}\r\n.layui-nav .layui-badge{margin-top: -10px;}\r\n.layui-tab-title .layui-badge,\r\n.layui-tab-title .layui-badge-dot{left: 5px; top: -2px;}\r\n\r\n/* carousel 轮播 */\r\n.layui-carousel{position: relative; left: 0; top: 0; background-color: #f8f8f8;}\r\n.layui-carousel>*[carousel-item]{position: relative; width: 100%; height: 100%; overflow: hidden;}\r\n.layui-carousel>*[carousel-item]:before{position: absolute; content: '\\e63d'; left: 50%; top: 50%; width: 100px; line-height: 20px; margin: -10px 0 0 -50px; text-align: center; color: #c2c2c2; font-family:\"layui-icon\" !important; font-size: 30px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}\r\n.layui-carousel>*[carousel-item] > *{display: none; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: #f8f8f8; transition-duration: .3s; -webkit-transition-duration: .3s;}\r\n.layui-carousel-updown > *{-webkit-transition: .3s ease-in-out up; transition: .3s ease-in-out up;}\r\n.layui-carousel-arrow{display: none\\0; opacity: 0; position: absolute; left: 10px; top: 50%; margin-top: -18px; width: 36px; height: 36px; line-height: 36px; text-align: center; font-size: 20px; border: none 0; border-radius: 50%; background-color: rgba(0,0,0,.2); color: #fff; -webkit-transition-duration: .3s; transition-duration: .3s; cursor: pointer;}\r\n.layui-carousel-arrow[lay-type=\"add\"]{left: auto!important; right: 10px;}\r\n.layui-carousel[lay-arrow=\"always\"] .layui-carousel-arrow{opacity: 1; left: 20px;}\r\n.layui-carousel[lay-arrow=\"always\"] .layui-carousel-arrow[lay-type=\"add\"]{right: 20px;}\r\n.layui-carousel[lay-arrow=\"none\"] .layui-carousel-arrow{display: none;}\r\n.layui-carousel-arrow:hover,\r\n.layui-carousel-ind ul:hover{background-color: rgba(0,0,0,.35);}\r\n.layui-carousel:hover .layui-carousel-arrow{display: block\\0; opacity: 1; left: 20px;}\r\n.layui-carousel:hover .layui-carousel-arrow[lay-type=\"add\"]{right: 20px;}\r\n.layui-carousel-ind{position: relative; top: -35px; width: 100%; line-height: 0!important; text-align: center; font-size: 0;}\r\n.layui-carousel[lay-indicator=\"outside\"]{margin-bottom: 30px;}\r\n.layui-carousel[lay-indicator=\"outside\"] .layui-carousel-ind{top: 10px;}\r\n.layui-carousel[lay-indicator=\"outside\"] .layui-carousel-ind ul{background-color: rgba(0,0,0,.5);}\r\n.layui-carousel[lay-indicator=\"none\"] .layui-carousel-ind{display: none;}\r\n.layui-carousel-ind ul{display: inline-block; padding: 5px; background-color: rgba(0,0,0,.2); border-radius: 10px; -webkit-transition-duration: .3s; transition-duration: .3s;}\r\n.layui-carousel-ind ul li{display: inline-block; width: 10px; height: 10px; margin: 0 3px; font-size: 14px; background-color: #eee; background-color: rgba(255,255,255,.5); border-radius: 50%; cursor: pointer; -webkit-transition-duration: .3s; transition-duration: .3s;}\r\n.layui-carousel-ind ul li:hover{background-color: rgba(255,255,255,.7);}\r\n.layui-carousel-ind ul li.layui-this{background-color: #fff;}\r\n.layui-carousel>*[carousel-item]>.layui-this,\r\n.layui-carousel>*[carousel-item]>.layui-carousel-prev,\r\n.layui-carousel>*[carousel-item]>.layui-carousel-next{display: block}\r\n.layui-carousel>*[carousel-item]>.layui-this{left: 0;}\r\n.layui-carousel>*[carousel-item]>.layui-carousel-prev{left: -100%;}\r\n.layui-carousel>*[carousel-item]>.layui-carousel-next{left: 100%;}\r\n.layui-carousel>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,\r\n.layui-carousel>*[carousel-item]>.layui-carousel-next.layui-carousel-left{left: 0;}\r\n.layui-carousel>*[carousel-item]>.layui-this.layui-carousel-left{left: -100%;}\r\n.layui-carousel>*[carousel-item]>.layui-this.layui-carousel-right{left: 100%;}\r\n\r\n/* 上下切换 */.layui-carousel[lay-anim=\"updown\"] .layui-carousel-arrow{left: 50%!important; top: 20px; margin: 0 0 0 -18px;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-arrow[lay-type=\"add\"]{top: auto!important; bottom: 20px;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-ind{position: absolute; top: 50%; right: 20px; width: auto; height: auto;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-ind ul{padding: 3px 5px;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-ind li{display: block; margin: 6px 0;}\r\n\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>*{left: 0!important;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-this{top: 0;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-prev{top: -100%;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-next{top: 100%;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-next.layui-carousel-left{top: 0;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-this.layui-carousel-left{top: -100%;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-this.layui-carousel-right{top: 100%;}\r\n\r\n/* 渐显切换 */.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>*{left: 0!important;}\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-prev,\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-next{opacity: 0;}\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-next.layui-carousel-left{opacity: 1;}\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-this.layui-carousel-left,\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-this.layui-carousel-right{opacity: 0}\r\n\r\n/** fixbar **/\r\n.layui-fixbar{position: fixed; right: 16px; bottom: 16px; z-index: 999999;}\r\n.layui-fixbar li{width: 50px; height: 50px; line-height: 50px; margin-bottom: 1px; text-align:center; cursor: pointer; font-size:30px; background-color: #9F9F9F; color:#fff; border-radius: 2px; opacity: 0.95;}\r\n.layui-fixbar li:hover{opacity: 0.85;}\r\n.layui-fixbar li:active{opacity: 1;}\r\n.layui-fixbar .layui-fixbar-top{display: none; font-size: 40px;}\r\n\r\n/** 表情面板 **/\r\nbody .layui-util-face{border: none; background: none;}\r\nbody .layui-util-face .layui-layer-content{padding:0; background-color:#fff; color:#5F5F5F; box-shadow:none}\r\n.layui-util-face .layui-layer-TipsG{display:none;}\r\n.layui-util-face ul{position:relative; width:372px; padding:10px; border:1px solid #D9D9D9; background-color:#fff; box-shadow: 0 0 20px rgba(0,0,0,.2);}\r\n.layui-util-face ul li{cursor: pointer; float: left; border: 1px solid #e8e8e8; height: 22px; width: 26px; overflow: hidden; margin: -1px 0 0 -1px; padding: 4px 2px; text-align: center;}\r\n.layui-util-face ul li:hover{position: relative; z-index: 2; border: 1px solid #eb7350; background: #fff9ec;}\r\n\r\n/** 代码文本修饰 **/\r\n.layui-code{display: block; position: relative; padding: 15px; line-height: 20px; border: 1px solid #eee; border-left-width: 6px; background-color: #fff; color: #333; font-family: \"Courier New\",Consolas,\"Lucida Console\"; font-size: 12px;}\r\n\r\n/** 穿梭框 **/\r\n.layui-transfer-box,\r\n.layui-transfer-header,\r\n.layui-transfer-search{border-width: 0; border-style: solid; border-color: #eee}\r\n.layui-transfer-box{position: relative; display: inline-block; vertical-align: middle; border-width: 1px; width: 200px; height: 360px; border-radius: 2px; background-color:#fff;}\r\n.layui-transfer-box .layui-form-checkbox{width: 100%; margin: 0 !important;}\r\n.layui-transfer-header{height: 38px; line-height: 38px; padding: 0 11px; border-bottom-width: 1px;}\r\n.layui-transfer-search{position:relative; padding: 11px; border-bottom-width: 1px;}\r\n.layui-transfer-search .layui-input{height: 32px; padding-left: 30px; font-size: 12px;}\r\n.layui-transfer-search .layui-icon-search{position: absolute; left: 20px; top: 50%; line-height: normal; margin-top: -8px; color: #5F5F5F;}\r\n.layui-transfer-active{margin: 0 15px; display: inline-block; vertical-align: middle;}\r\n.layui-transfer-active .layui-btn{display: block; margin: 0; padding: 0 15px; background-color: #16b777; border-color: #16b777; color: #fff;}\r\n.layui-transfer-active .layui-btn-disabled{background-color: #FBFBFB; border-color: #eee; color: #d2d2d2;}\r\n.layui-transfer-active .layui-btn:first-child{margin-bottom: 15px;}\r\n.layui-transfer-active .layui-btn .layui-icon{margin: 0; font-size: 14px !important;}\r\n.layui-transfer-data{padding: 5px 0; overflow: auto;}\r\n.layui-transfer-data li{height: 32px; line-height: 32px; margin-top: 0 !important; padding: 0 11px;list-style-type: none !important;}\r\n.layui-transfer-data li:hover{background-color: #f8f8f8; transition: .5s all;}\r\n.layui-transfer-data .layui-none{padding: 15px 11px; text-align: center; color: #999;}\r\n\r\n/** 评分组件 **/\r\n.layui-rate,\r\n.layui-rate *{display: inline-block; vertical-align: middle;}\r\n.layui-rate{padding: 11px 6px 11px 0; font-size: 0;}\r\n.layui-rate li{margin-top: 0 !important;}\r\n.layui-rate li i.layui-icon{ font-size: 20px; color: #ffb800;}\r\n.layui-rate li i.layui-icon{margin-right: 5px; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-rate li i:hover,\r\n.layui-rate-hover{cursor: pointer; transform: scale(1.12); -webkit-transform: scale(1.12);}\r\n.layui-rate[readonly] li i:hover{cursor: default; transform: scale(1);}\r\n\r\n/** 颜色选择器 **/\r\n.layui-colorpicker{width: 38px; height: 38px; border: 1px solid #eee; padding: 5px; border-radius: 2px; line-height: 24px; display: inline-block; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box;}\r\n.layui-colorpicker:hover{border-color: #d2d2d2;}\r\n.layui-colorpicker.layui-colorpicker-lg{width: 44px; height: 44px; line-height: 30px;}\r\n.layui-colorpicker.layui-colorpicker-sm{width: 30px; height: 30px; line-height: 20px; padding: 3px;}\r\n.layui-colorpicker.layui-colorpicker-xs{width: 22px; height: 22px; line-height: 16px; padding: 1px;}\r\n\r\n.layui-colorpicker-trigger-bgcolor{display: block; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); border-radius: 2px;}\r\n.layui-colorpicker-trigger-span{display: block; height: 100%; box-sizing: border-box; border: 1px solid rgba(0,0,0,.15); border-radius: 2px; text-align: center;}\r\n.layui-colorpicker-trigger-i{display: inline-block; color: #FFF; font-size: 12px;}\r\n.layui-colorpicker-trigger-i.layui-icon-close{color: #999;}\r\n\r\n.layui-colorpicker-main{position: absolute; left: -999999px; top: -999999px; z-index: 77777777; width: 280px; margin: 5px 0; padding: 7px; background: #FFF; border: 1px solid #d2d2d2; border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.12);}\r\n.layui-colorpicker-main-wrapper{height: 180px; position: relative;}\r\n.layui-colorpicker-basis{width: 260px; height: 100%; position: relative;}\r\n.layui-colorpicker-basis-white{width: 100%; height: 100%; position: absolute; top: 0; left: 0; background: linear-gradient(90deg, #FFF, hsla(0,0%,100%,0));}\r\n.layui-colorpicker-basis-black{width: 100%; height: 100%; position: absolute; top: 0; left: 0; background: linear-gradient(0deg, #000, transparent);}\r\n.layui-colorpicker-basis-cursor{width: 10px; height: 10px; border: 1px solid #FFF; border-radius: 50%; position: absolute; top: -3px; right: -3px; cursor: pointer;}\r\n.layui-colorpicker-side{position: absolute; top: 0; right: 0; width: 12px; height: 100%; background: linear-gradient(#F00, #FF0, #0F0, #0FF, #00F, #F0F, #F00);}\r\n.layui-colorpicker-side-slider{width: 100%; height: 5px; box-shadow: 0 0 1px #888888; box-sizing: border-box; background: #FFF; border-radius: 1px; border: 1px solid #f0f0f0; cursor: pointer; position: absolute; left: 0;}\r\n.layui-colorpicker-main-alpha{display: none; height: 12px; margin-top: 7px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}\r\n.layui-colorpicker-alpha-bgcolor{height: 100%; position: relative;}\r\n.layui-colorpicker-alpha-slider{width: 5px; height: 100%; box-shadow: 0 0 1px #888888; box-sizing: border-box; background: #FFF; border-radius: 1px; border: 1px solid #f0f0f0; cursor: pointer; position: absolute; top: 0;}\r\n.layui-colorpicker-main-pre{padding-top: 7px; font-size: 0;}\r\n.layui-colorpicker-pre{width: 20px; height: 20px; border-radius: 2px; display: inline-block; margin-left: 6px; margin-bottom: 7px; cursor: pointer;}\r\n.layui-colorpicker-pre:nth-child(11n+1){margin-left: 0;}\r\n.layui-colorpicker-pre-isalpha{background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}\r\n.layui-colorpicker-pre.layui-this{box-shadow: 0 0 3px 2px rgba(0,0,0,.15);}\r\n.layui-colorpicker-pre > div{height: 100%; border-radius: 2px;}\r\n.layui-colorpicker-main-input{text-align: right; padding-top: 7px;}\r\n.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin: 0 0 0 10px;}\r\n.layui-colorpicker-main-input div.layui-inline{float: left; margin-right: 10px; font-size: 14px;}\r\n.layui-colorpicker-main-input input.layui-input{width: 150px; height: 30px; color: #5F5F5F;}\r\n\r\n/** 滑块 **/\r\n.layui-slider{height: 4px; background: #eee; border-radius: 3px; position: relative; cursor: pointer;}\r\n.layui-slider-bar{border-radius: 3px; position: absolute; height: 100%;}\r\n.layui-slider-step{position: absolute; top: 0; width: 4px; height: 4px; border-radius: 50%; background: #FFF; -webkit-transform: translateX(-50%); transform: translateX(-50%);}\r\n.layui-slider-wrap{width: 36px; height: 36px; position: absolute; top: -16px; -webkit-transform: translateX(-50%); transform: translateX(-50%); z-index: 10; text-align: center;}\r\n.layui-slider-wrap-btn{width: 12px; height: 12px; border-radius: 50%; background: #FFF; display: inline-block; vertical-align: middle; cursor: pointer; transition: 0.3s;}\r\n.layui-slider-wrap:after{content: \"\"; height: 100%; display: inline-block; vertical-align: middle;}\r\n.layui-slider-wrap-btn:hover,\r\n.layui-slider-wrap-btn.layui-slider-hover{transform: scale(1.2);}\r\n.layui-slider-wrap-btn.layui-disabled:hover{transform: scale(1) !important;}\r\n.layui-slider-tips{position: absolute; top: -42px; z-index: 77777777; white-space:nowrap; display: none; -webkit-transform: translateX(-50%); transform: translateX(-50%); color: #FFF; background: #000; border-radius: 3px; height: 25px; line-height: 25px; padding: 0 10px;}\r\n.layui-slider-tips:after{content: \"\"; position: absolute; bottom: -12px; left: 50%; margin-left: -6px; width: 0; height: 0; border-width: 6px; border-style: solid; border-color: #000 transparent transparent transparent;}\r\n.layui-slider-input{width: 70px; height: 32px; border: 1px solid #eee; border-radius: 3px; font-size: 16px; line-height: 32px; position: absolute; right: 0; top: -14px; box-sizing: border-box;}\r\n.layui-slider-input-btn{position: absolute; top: 0; right: 0; width: 20px; height: 100%; border-left: 1px solid #eee;}\r\n.layui-slider-input-btn i{cursor: pointer; position: absolute; right: 0; bottom: 0; width: 20px; height: 50%; font-size: 12px; line-height: 16px; text-align: center; color: #999;}\r\n.layui-slider-input-btn i:first-child{top: 0; border-bottom: 1px solid #eee;}\r\n.layui-slider-input-txt{height: 100%; font-size: 14px;}\r\n.layui-slider-input-txt input{height: 100%; border: none; padding-right: 21px;}\r\n.layui-slider-input-btn i:hover{color: #16baaa;}\r\n/*垂直滑块*/\r\n.layui-slider-vertical{width: 4px; margin-left: 33px;}\r\n.layui-slider-vertical .layui-slider-bar{width: 4px;}\r\n.layui-slider-vertical .layui-slider-step{top: auto; left: 0px; -webkit-transform: translateY(50%); transform: translateY(50%);}\r\n.layui-slider-vertical .layui-slider-wrap{top: auto; left: -16px; -webkit-transform: translateY(50%); transform: translateY(50%);}\r\n.layui-slider-vertical .layui-slider-tips{top: auto; left: 2px;}\r\n@media \\0screen{\r\n .layui-slider-wrap-btn{margin-left: -20px;}\r\n .layui-slider-vertical .layui-slider-wrap-btn{margin-left: 0; margin-bottom: -20px;}\r\n .layui-slider-vertical .layui-slider-tips{margin-left: -8px;}\r\n .layui-slider > span{margin-left: 8px;}\r\n}\r\n\r\n/** 树组件 **/\r\n.layui-tree{line-height: 22px;}\r\n.layui-tree .layui-form-checkbox{margin: 0 !important;}\r\n.layui-tree-set{width: 100%; position: relative;}\r\n.layui-tree-pack{display: none; padding-left: 20px; position: relative;}\r\n.layui-tree-line .layui-tree-pack{padding-left: 27px;}\r\n.layui-tree-line .layui-tree-set .layui-tree-set:after{content: \"\"; position: absolute; top: 14px; left: -9px; width: 17px; height: 0; border-top: 1px dotted #c0c4cc;}\r\n.layui-tree-entry{position: relative; padding: 3px 0; height: 26px; white-space: nowrap;}\r\n.layui-tree-entry:hover{background-color: #eee;}\r\n.layui-tree-line .layui-tree-entry:hover{background-color: rgba(0,0,0,0);}\r\n.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color: #999; text-decoration: underline; transition: 0.3s;}\r\n.layui-tree-main{display: inline-block; vertical-align: middle; cursor: pointer; padding-right: 10px;}\r\n.layui-tree-line .layui-tree-set:before{content: \"\"; position: absolute; top: 0; left: -9px; width: 0; height: 100%; border-left: 1px dotted #c0c4cc;}\r\n.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height: 13px;}\r\n.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height: 0;}\r\n.layui-tree-iconClick{display: inline-block; vertical-align: middle; position: relative; height: 20px; line-height: 20px; margin: 0 10px; color: #c0c4cc;}\r\n.layui-tree-icon{height: 14px; line-height: 12px; width: 14px; text-align: center; border: 1px solid #c0c4cc;}\r\n.layui-tree-iconClick .layui-icon{font-size: 18px;}\r\n.layui-tree-icon .layui-icon{font-size: 12px; color: #5F5F5F;}\r\n.layui-tree-iconArrow{padding: 0 5px;}\r\n.layui-tree-iconArrow:after{content: \"\"; position: absolute; left: 4px; top: 3px; z-index: 100; width: 0; height: 0; border-width: 5px; border-style: solid; border-color: transparent transparent transparent #c0c4cc; transition: 0.5s;}\r\n.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform: rotate(90deg) translate(3px, 4px);}\r\n.layui-tree-txt{display: inline-block; vertical-align: middle; color: #555;}\r\n.layui-tree-search{margin-bottom: 15px; color: #5F5F5F;}\r\n.layui-tree-btnGroup{visibility: hidden; display: inline-block; vertical-align: middle; position: relative;}\r\n.layui-tree-btnGroup .layui-icon{display: inline-block; vertical-align: middle; padding: 0 2px; cursor: pointer;}\r\n.layui-tree-btnGroup .layui-icon:hover{color: #999; transition: 0.3s;}\r\n.layui-tree-entry:hover .layui-tree-btnGroup{visibility: visible;}\r\n.layui-tree-editInput{position: relative; display: inline-block; vertical-align: middle; height: 20px; line-height: 20px; padding: 0; border: none; background-color: rgba(0,0,0,0.05);}\r\n.layui-tree-emptyText{text-align: center; color: #999;}\r\n\r\n\r\n\r\n\r\n/** 动画 **/\r\n.layui-anim{-webkit-animation-duration: 0.3s; -webkit-animation-fill-mode: both; animation-duration: 0.3s; animation-fill-mode: both;}\r\n.layui-anim.layui-icon{display: inline-block;}\r\n.layui-anim-loop{-webkit-animation-iteration-count: infinite; animation-iteration-count: infinite;}\r\n.layui-trans,\r\n.layui-trans a{transition: all .2s; -webkit-transition: all .2s;} /* 过度变换 */\r\n\r\n/* 循环旋转 */\r\n@-webkit-keyframes layui-rotate{\r\n from {-webkit-transform: rotate(0deg);}\r\n to {-webkit-transform: rotate(360deg);}\r\n}\r\n@keyframes layui-rotate{\r\n from {transform: rotate(0deg);}\r\n to {transform: rotate(360deg);}\r\n}\r\n.layui-anim-rotate{-webkit-animation-name: layui-rotate; animation-name: layui-rotate; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-timing-function: linear; animation-timing-function: linear;}\r\n\r\n/* 从最底部往上滑入 */\r\n@-webkit-keyframes layui-up{\r\n from {-webkit-transform: translate3d(0, 100%, 0); opacity: 0.3;}\r\n to {-webkit-transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n@keyframes layui-up{\r\n from {transform: translate3d(0, 100%, 0); opacity: 0.3;}\r\n to {transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n.layui-anim-up{-webkit-animation-name: layui-up; animation-name: layui-up;}\r\n\r\n/* 微微往上滑入 */\r\n@-webkit-keyframes layui-upbit{\r\n from {-webkit-transform: translate3d(0, 15px, 0); opacity: 0.3;}\r\n to {-webkit-transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n@keyframes layui-upbit{\r\n from {transform: translate3d(0, 15px, 0); opacity: 0.3;}\r\n to {transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n.layui-anim-upbit{-webkit-animation-name: layui-upbit; animation-name: layui-upbit;}\r\n\r\n/* 从最顶部往下滑入 */\r\n@keyframes layui-down {\r\n 0% {opacity: 0.3; transform: translate3d(0, -100%, 0);}\r\n 100% {opacity: 1; transform: translate3d(0, 0, 0);}\r\n}\r\n.layui-anim-down{animation-name: layui-down;}\r\n\r\n/* 微微往下滑入 */\r\n@keyframes layui-downbit {\r\n 0% {opacity: 0.3; transform: translate3d(0, -5px, 0);}\r\n 100% {opacity: 1; transform: translate3d(0, 0, 0);}\r\n}\r\n.layui-anim-downbit{animation-name: layui-downbit;}\r\n\r\n/* 放大 */\r\n@-webkit-keyframes layui-scale {\r\n 0% {opacity: 0.3; -webkit-transform: scale(.5);}\r\n 100% {opacity: 1; -webkit-transform: scale(1);}\r\n}\r\n@keyframes layui-scale {\r\n 0% {opacity: 0.3; -ms-transform: scale(.5); transform: scale(.5);}\r\n 100% {opacity: 1; -ms-transform: scale(1); transform: scale(1);}\r\n}\r\n.layui-anim-scale{-webkit-animation-name: layui-scale; animation-name: layui-scale}\r\n\r\n/* 弹簧式放大 */\r\n@-webkit-keyframes layui-scale-spring {\r\n 0% {opacity: 0.5; -webkit-transform: scale(.5);}\r\n 80% {opacity: 0.8; -webkit-transform: scale(1.1);}\r\n 100% {opacity: 1; -webkit-transform: scale(1);}\r\n}\r\n@keyframes layui-scale-spring {\r\n 0% {opacity: 0.5; transform: scale(.5);}\r\n 80% {opacity: 0.8; transform: scale(1.1);}\r\n 100% {opacity: 1; transform: scale(1);}\r\n}\r\n.layui-anim-scaleSpring{-webkit-animation-name: layui-scale-spring; animation-name: layui-scale-spring}\r\n\r\n/* 放小 */\r\n@keyframes layui-scalesmall {\r\n 0% {opacity: 0.3; transform: scale(1.5);}\r\n 100% {opacity: 1; transform: scale(1);}\r\n}\r\n.layui-anim-scalesmall{animation-name: layui-scalesmall}\r\n\r\n/* 弹簧式放小 */\r\n@keyframes layui-scalesmall-spring {\r\n 0% {opacity: 0.3; transform: scale(1.5);}\r\n 80% {opacity: 0.8; transform: scale(0.9);}\r\n 100% {opacity: 1; transform: scale(1);}\r\n}\r\n.layui-anim-scalesmall-spring{animation-name: layui-scalesmall-spring}\r\n\r\n\r\n/* 渐显 */\r\n@-webkit-keyframes layui-fadein {\r\n 0% {opacity: 0;}\r\n 100% {opacity: 1;}\r\n}\r\n@keyframes layui-fadein {\r\n 0% {opacity: 0;}\r\n 100% {opacity: 1;}\r\n}\r\n.layui-anim-fadein{-webkit-animation-name: layui-fadein; animation-name: layui-fadein;}\r\n\r\n/* 渐隐 */\r\n@-webkit-keyframes layui-fadeout {\r\n 0% {opacity: 1;}\r\n 100% {opacity: 0;}\r\n}\r\n@keyframes layui-fadeout {\r\n 0% {opacity: 1;}\r\n 100% {opacity: 0;}\r\n}\r\n.layui-anim-fadeout{-webkit-animation-name: layui-fadeout; animation-name: layui-fadeout}\r\n\r\n\r\n\r\n\r\n","/**\r\n * code\r\n */\r\n\r\nhtml #layuicss-skincodecss{display: none; position: absolute; width: 1989px;}\r\n\r\n/* 字体 */\r\n.layui-code-wrap{font-size: 13px; font-family: \"Courier New\",Consolas,\"Lucida Console\";}\r\n\r\n/* 基础结构 */\r\n.layui-code-view{display: block; position: relative; padding: 0 !important; border: 1px solid #eee; border-left-width: 6px; background-color: #fff; color: #333;}\r\n.layui-code-view pre{margin: 0 !important;}\r\n\r\n.layui-code-header{position: relative; z-index: 3; padding: 0 11px; height: 40px; line-height: 40px; border-bottom: 1px solid #eee; background-color: #fafafa; font-size: 12px;}\r\n.layui-code-header > .layui-code-header-about{position: absolute; right: 11px; top: 0; color: #B7B7B7;}\r\n.layui-code-header-about > a{padding-left: 10px;}\r\n\r\n.layui-code-wrap{position: relative; display: block; z-index: 1; margin: 0 !important; padding: 11px 0 !important; overflow-x: hidden; overflow-y: auto;}\r\n.layui-code-line{position: relative; line-height: 19px; margin: 0 !important;}\r\n.layui-code-line-number{position: absolute; left: 0; top: 0; padding: 0 8px; min-width: 45px; height: 100%; text-align: right; user-select: none; white-space: nowrap; overflow: hidden;}\r\n.layui-code-line-content{padding: 0 11px; word-wrap: break-word; white-space: pre-wrap;}\r\n\r\n.layui-code-ln-mode > .layui-code-wrap > .layui-code-line{padding-left: 45px;}\r\n.layui-code-ln-side{position: absolute; left: 0; top: 0; bottom: 0; z-index: 0; width: 45px; border-right: 1px solid #eee; border-color: rgb(126 122 122 / 15%); background-color: #fafafa; pointer-events: none;}\r\n\r\n/* 不自动换行 */\r\n.layui-code-nowrap > .layui-code-wrap{overflow: auto;}\r\n.layui-code-nowrap > .layui-code-wrap > .layui-code-line > .layui-code-line-content{white-space: pre; word-wrap: normal;}\r\n.layui-code-nowrap > .layui-code-ln-side{border-right-width: 0 !important; background: none !important;}\r\n\r\n.layui-code-fixbar{position: absolute; top: 8px; right: 11px; padding-right: 45px; z-index: 5;}\r\n.layui-code-fixbar > span{position: absolute; right: 0; top: 0; padding: 0 8px; color: #777; transition: all .3s;}\r\n.layui-code-fixbar > span:hover{color: #16b777;}\r\n.layui-code-copy{display: none; cursor: pointer;}\r\n.layui-code-preview > .layui-code-view > .layui-code-fixbar .layui-code-copy{display: none !important;}\r\n.layui-code-view:hover > .layui-code-fixbar .layui-code-copy{display: block;}\r\n.layui-code-view:hover > .layui-code-fixbar .layui-code-lang-marker{display: none;}\r\n\r\n/* 深色主题 */\r\n.layui-code-theme-dark,\r\n.layui-code-theme-dark > .layui-code-header{border-color: rgb(126 122 122 / 15%); background-color: #1f1f1f;}\r\n.layui-code-theme-dark{border-width: 1px; color: #ccc;}\r\n.layui-code-theme-dark > .layui-code-ln-side{border-right-color: #2a2a2a; background: none; color: #6e7681;}\r\n\r\n\r\n/* 代码预览 */\r\n.layui-code textarea{display: none;}\r\n.layui-code-preview > .layui-code,\r\n.layui-code-preview > .layui-code-view{margin: 0;}\r\n.layui-code-preview > .layui-tab{position: relative; z-index: 1; margin-bottom: 0;}\r\n.layui-code-preview > .layui-tab > .layui-tab-title{border-width: 0;}\r\n.layui-code-preview .layui-code-item{display: none;}\r\n.layui-code-preview .layui-code-view > .layui-code-lines > .layui-code-line{}\r\n.layui-code-item-preview{position: relative; padding: 16px;}\r\n.layui-code-item-preview > iframe{position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;}\r\n\r\n/* 工具栏 */\r\n.layui-code-tools{position: absolute; right: 11px; top: 8px; line-height: normal;}\r\n.layui-code-tools > i{display: inline-block; margin-left: 6px; padding: 3px; cursor: pointer;}\r\n.layui-code-tools > i.layui-icon-file-b{color: #999;}\r\n.layui-code-tools > i:hover{color: #16b777;}\r\n\r\n/* 全屏风格 */\r\n.layui-code-full{position: fixed; left: 0; top: 0; z-index: 1111111; width: 100%; height: 100%; background-color: #fff;}\r\n.layui-code-full .layui-code-item{width: 100% !important; border-width: 0 !important; border-top-width: 1px !important;}\r\n.layui-code-full .layui-code-item,\r\n.layui-code-full .layui-code-view,\r\n.layui-code-full .layui-code-wrap{height: calc(100vh - 51px) !important; box-sizing: border-box;}\r\n.layui-code-full .layui-code-item-preview{overflow: auto;}\r\n\r\n/* 代码高亮重置 */\r\n.layui-code-view.layui-code-hl{line-height: 20px !important; border-left-width: 1px;}\r\n.layui-code-view.layui-code-hl > .layui-code-ln-side{background-color: transparent;}\r\n.layui-code-theme-dark.layui-code-hl,\r\n.layui-code-theme-dark.layui-code-hl > .layui-code-ln-side{border-color: rgb(126 122 122 / 15%);}\r\n","/**\r\n * laydate style\r\n */\r\n \r\n\r\nhtml #layuicss-laydate{display: none; position: absolute; width: 1989px;}\r\n\r\n/* 初始化 */\r\n.layui-laydate *{margin: 0; padding: 0;}\r\n\r\n/* 主体结构 */\r\n.layui-laydate, .layui-laydate *{box-sizing: border-box;}\r\n.layui-laydate{position: absolute; z-index: 99999999; margin: 5px 0; border-radius: 2px; font-size: 14px; line-height: normal; -webkit-animation-duration: 0.2s; animation-duration: 0.2s; -webkit-animation-fill-mode: both; animation-fill-mode: both;}\r\n.layui-laydate-main{width: 272px;}\r\n.layui-laydate-header *,\r\n.layui-laydate-content td,\r\n.layui-laydate-list li{transition-duration: .3s; -webkit-transition-duration: .3s;}\r\n.layui-laydate-shade{top: 0; left: 0; width: 100%; height: 100%; _height: expression(document.body.offsetHeight+\"px\"); position: fixed; _position: absolute; pointer-events: auto;}\r\n\r\n/* 微微往下滑入 */\r\n@keyframes laydate-downbit {\r\n 0% {opacity: 0.3; transform: translate3d(0, -5px, 0);}\r\n 100% {opacity: 1; transform: translate3d(0, 0, 0);}\r\n}\r\n\r\n.layui-laydate{animation-name: laydate-downbit;}\r\n.layui-laydate-static{ position: relative; z-index: 0; display: inline-block; margin: 0; -webkit-animation: none; animation: none;}\r\n\r\n/* 展开年月列表时 */\r\n.laydate-ym-show .laydate-prev-m,\r\n.laydate-ym-show .laydate-next-m{display: none !important;}\r\n.laydate-ym-show .laydate-prev-y,\r\n.laydate-ym-show .laydate-next-y{display: inline-block !important;}\r\n.laydate-ym-show .laydate-set-ym span[lay-type=\"month\"]{display: none !important;}\r\n\r\n/* 展开时间列表时 */\r\n.laydate-time-show .layui-laydate-header .layui-icon,\r\n.laydate-time-show .laydate-set-ym span[lay-type=\"year\"],\r\n.laydate-time-show .laydate-set-ym span[lay-type=\"month\"]{display: none !important;}\r\n\r\n/* 头部结构 */\r\n.layui-laydate-header{position: relative; line-height:30px; padding: 10px 70px 5px;}\r\n.layui-laydate-header *{display: inline-block; vertical-align: bottom;}\r\n.layui-laydate-header i{position: absolute; top: 10px; padding: 0 5px; color: #999; font-size: 18px; cursor: pointer;}\r\n.layui-laydate-header i.laydate-prev-y{left: 15px;}\r\n.layui-laydate-header i.laydate-prev-m{left: 45px;}\r\n.layui-laydate-header i.laydate-next-y{right: 15px;}\r\n.layui-laydate-header i.laydate-next-m{right: 45px;}\r\n.laydate-set-ym{width: 100%; text-align: center; box-sizing: border-box; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.laydate-set-ym span{padding: 0 10px; cursor: pointer;}\r\n.laydate-time-text{cursor: default !important;}\r\n\r\n/* 主体结构 */\r\n.layui-laydate-content{position: relative; padding: 10px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n.layui-laydate-content table{border-collapse: collapse; border-spacing: 0;}\r\n.layui-laydate-content th,\r\n.layui-laydate-content td{width: 36px; height: 30px; padding: 0; text-align: center;}\r\n.layui-laydate-content th{font-weight: 400;}\r\n.layui-laydate-content td{position: relative; cursor: pointer;}\r\n.laydate-day-mark{position: absolute; left: 0; top: 0; width: 100%; line-height: 30px; font-size: 12px; overflow: hidden;}\r\n.laydate-day-mark::after{position: absolute; content:''; right: 2px; top: 2px; width: 5px; height: 5px; border-radius: 50%;}\r\n.laydate-day-holidays:before{position: absolute; left: 0; top: 0; font-size: 12px; transform: scale(.7);}\r\n.laydate-day-holidays:before{content:'\\4F11'; color: #FF5722;}\r\n.laydate-day-holidays[type=\"work\"]:before{content:'\\73ED'; color: inherit;}\r\n.layui-laydate .layui-this .laydate-day-holidays:before{color: #fff;}\r\n\r\n/* 底部结构 */\r\n.layui-laydate-footer{position: relative; height: 46px; line-height: 26px; padding: 10px;}\r\n.layui-laydate-footer span{display: inline-block; vertical-align: top; height: 26px; line-height: 24px; padding: 0 10px; border: 1px solid #C9C9C9; border-radius: 2px; background-color: #fff; font-size: 12px; cursor: pointer; white-space: nowrap; transition: all .3s;}\r\n.layui-laydate-footer span:hover{color: #16b777;}\r\n.layui-laydate-footer span.layui-laydate-preview{cursor: default; border-color: transparent !important;}\r\n.layui-laydate-footer span.layui-laydate-preview:hover{color: #777;}\r\n.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left: 0;}\r\n.laydate-footer-btns {position: absolute; right: 10px; top: 10px; }\r\n.laydate-footer-btns span{margin: 0 0 0 -1px; border-radius: 0px; }\r\n.laydate-footer-btns span:first-child { border-radius: 2px 0px 0px 2px;}\r\n.laydate-footer-btns span:last-child { border-radius: 0px 2px 2px 0px;}\r\n\r\n/* 快捷栏 */\r\n.layui-laydate-shortcut{width: 80px; padding: 6px 0; display: inline-block;vertical-align: top; overflow: auto; max-height: 276px; text-align: center;}\r\n.layui-laydate-shortcut+.layui-laydate-main{display: inline-block;border-left: 1px solid #e2e2e2;}\r\n.layui-laydate-shortcut>li{padding: 5px 8px; cursor: pointer; line-height: 18px;}\r\n\r\n/* 年月列表 */\r\n.layui-laydate .layui-laydate-list{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 10px; box-sizing: border-box; background-color: #fff;}\r\n.layui-laydate .layui-laydate-list>li{position: relative; display: inline-block; width: 33.3%; height: 36px; line-height: 36px; margin: 3px 0; vertical-align: middle; text-align: center; cursor: pointer; list-style: none;}\r\n.layui-laydate .laydate-month-list>li{width: 25%; margin: 17px 0;}\r\n.laydate-time-list{}\r\n.layui-laydate .laydate-time-list>li{height: 100%; margin: 0; line-height: normal; cursor: default;}\r\n.layui-laydate .laydate-time-list p{position: relative; top: -4px; margin: 0; line-height: 29px;}\r\n.layui-laydate .laydate-time-list ol{height: 181px; overflow: hidden;}\r\n.layui-laydate .laydate-time-list>li:hover ol{overflow-y: auto;}\r\n.layui-laydate .laydate-time-list ol li{width: 130%; padding-left: 33px; height: 30px; line-height: 30px; text-align: left; cursor: pointer;}\r\n\r\n/* 提示 */\r\n.layui-laydate-hint{position: absolute; top: 115px; left: 50%; width: 250px; margin-left: -125px; line-height: 20px; padding: 15px; text-align: center; font-size: 12px; color: #FF5722;}\r\n\r\n\r\n/* 双日历 */\r\n.layui-laydate-range{width: 546px;}\r\n.layui-laydate-range .layui-laydate-main{display: inline-block; vertical-align: middle;max-width: 50%;}\r\n.layui-laydate-range .laydate-main-list-1 .layui-laydate-header,\r\n.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left: 1px solid #e2e2e2;}\r\n.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m, .layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,\r\n.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m, .layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display: none;}\r\n\r\n\r\n/* 默认简约主题 */\r\n.layui-laydate, .layui-laydate-hint{border: 1px solid #d2d2d2; box-shadow: 0 2px 4px rgba(0,0,0,.12); background-color: #fff; color: #777;}\r\n.layui-laydate-header{border-bottom: 1px solid #e2e2e2;}\r\n.layui-laydate-header i:hover,\r\n.layui-laydate-header span:hover{color: #16b777;}\r\n.layui-laydate-content{border-top: none 0; border-bottom: none 0;}\r\n.layui-laydate-content th{color: #333;}\r\n.layui-laydate-content td{color: #777;}\r\n.layui-laydate-content td.laydate-day-now{color: #16b777;}\r\n.layui-laydate-content td.laydate-day-now:after{content: ''; position: absolute; width: 100%; height: 30px; left: 0; top: 0; border: 1px solid #16b777; box-sizing: border-box;}\r\n.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color: #00F7DE;}\r\n.layui-laydate-linkage .laydate-selected:hover>div{background-color: #00F7DE !important;}\r\n.layui-laydate-content td:hover:after,\r\n.layui-laydate-content td.laydate-selected:after{content: none;}\r\n.layui-laydate-content td>div:hover,\r\n.layui-laydate-list li:hover,\r\n.layui-laydate-shortcut>li:hover{background-color: #eee; color: #333;}\r\n.laydate-time-list li ol{margin: 0; padding: 0; border: 1px solid #e2e2e2; border-left-width: 0;}\r\n.laydate-time-list li:first-child ol{border-left-width: 1px;}\r\n.laydate-time-list>li:hover{background: none;}\r\n.layui-laydate-content .laydate-day-prev,\r\n.layui-laydate-content .laydate-day-next{color: #d2d2d2;}\r\n.layui-laydate-linkage .laydate-selected.laydate-day-prev>div,\r\n.layui-laydate-linkage .laydate-selected.laydate-day-next>div{background-color: #f8f8f8 !important;}\r\n.layui-laydate-footer{border-top: 1px solid #e2e2e2;}\r\n.layui-laydate-hint{color: #FF5722;}\r\n.laydate-day-mark::after{background-color: #16b777;}\r\n.layui-laydate-content td.layui-this .laydate-day-mark::after{display: none;}\r\n.layui-laydate-footer span[lay-type=\"date\"]{color: #16b777;}\r\n.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color: #16baaa !important; color: #fff !important;}\r\n.layui-laydate .laydate-disabled,\r\n.layui-laydate .laydate-disabled:hover{background:none !important; color: #d2d2d2 !important; cursor: not-allowed !important; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n.layui-laydate-content td>div{padding: 7px 0;height: 100%;}\r\n\r\n/* 墨绿/自定义背景色主题 */\r\n.laydate-theme-molv{border: none;}\r\n.laydate-theme-molv.layui-laydate-range{width: 548px}\r\n.laydate-theme-molv .layui-laydate-main{width: 274px;}\r\n.laydate-theme-molv .layui-laydate-header{border: none; background-color: #16baaa;}\r\n.laydate-theme-molv .layui-laydate-header i,\r\n.laydate-theme-molv .layui-laydate-header span{color: #f6f6f6;}\r\n.laydate-theme-molv .layui-laydate-header i:hover,\r\n.laydate-theme-molv .layui-laydate-header span:hover{color: #fff;}\r\n.laydate-theme-molv .layui-laydate-content{border: 1px solid #e2e2e2; border-top: none; border-bottom: none;}\r\n.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left: none;}\r\n.laydate-theme-molv .layui-laydate-footer{border: 1px solid #e2e2e2;}\r\n\r\n/* 格子主题 */\r\n.laydate-theme-grid .layui-laydate-content td,\r\n.laydate-theme-grid .layui-laydate-content thead,\r\n.laydate-theme-grid .laydate-year-list>li,\r\n.laydate-theme-grid .laydate-month-list>li{border: 1px solid #e2e2e2;}\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected,\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color: #f2f2f2 !important; color: #16baaa !important;}\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev,\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next{color: #d2d2d2 !important;}\r\n.laydate-theme-grid .laydate-year-list,\r\n.laydate-theme-grid .laydate-month-list{margin: 1px 0 0 1px;}\r\n.laydate-theme-grid .laydate-year-list>li,\r\n.laydate-theme-grid .laydate-month-list>li{margin: 0 -1px -1px 0;}\r\n.laydate-theme-grid .laydate-year-list>li{height: 43px; line-height: 43px;}\r\n.laydate-theme-grid .laydate-month-list>li{height: 71px; line-height: 71px;}\r\n.laydate-theme-grid .layui-laydate-content td>div{height: 29px;margin-top: -1px;}\r\n\r\n/* 圆圈高亮主题 */\r\n.laydate-theme-circle .layui-laydate-content td>div,\r\n.laydate-theme-circle .layui-laydate-content td.layui-this>div{width: 28px;height: 28px;line-height: 28px;border-radius: 14px;margin: 0 4px;padding: 0;}\r\n.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color: transparent !important;}\r\n.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin: 0 3.5px;}\r\n\r\n/* 全面板 */\r\n.laydate-theme-fullpanel .layui-laydate-main {width: 526px;}\r\n.laydate-theme-fullpanel .layui-laydate-list {width: 252px;left: 272px;}\r\n.laydate-theme-fullpanel .laydate-set-ym span {display: none;}\r\n.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon,\r\n.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=\"year\"],\r\n.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=\"month\"] {display: inline-block !important;}\r\n.laydate-theme-fullpanel .laydate-btns-time{display: none;}\r\n","/**\r\n * layer style\r\n */\r\n\r\nhtml #layuicss-layer{display: none; position: absolute; width: 1989px;}\r\n\r\n/* common */\r\n.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}\r\n.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+\"px\");}\r\n.layui-layer{-webkit-overflow-scrolling: touch;}\r\n.layui-layer{top:150px; left: 0; margin:0; padding:0; background-color:#fff; -webkit-background-clip: content; border-radius: 2px; box-shadow: 1px 1px 50px rgba(0,0,0,.3);}\r\n.layui-layer-close{position:absolute;}\r\n.layui-layer-content{position:relative;}\r\n.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}\r\n.layui-layer-setwin span,\r\n.layui-layer-btn a{display: inline-block; vertical-align: middle; *display: inline; *zoom:1; }\r\n\r\n.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}\r\n.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}\r\n\r\n/* 动画 */\r\n.layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}\r\n\r\n@-webkit-keyframes layer-bounceIn { /* 默认 */\r\n\t0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}\r\n\t100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}\r\n}\r\n@keyframes layer-bounceIn {\r\n\t0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}\r\n\t100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}\r\n}\r\n.layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}\r\n\r\n@-webkit-keyframes layer-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 layer-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}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}\r\n\r\n@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-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)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}\r\n\r\n@-webkit-keyframes layer-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 layer-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}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}\r\n\r\n@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-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(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}\r\n\r\n@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}\r\n\r\n@-webkit-keyframes layer-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 layer-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)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}\r\n\r\n/* 从上往下 */\r\n@keyframes layer-slide-down {\r\n from {\r\n transform: translate3d(0,-100%,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-down-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(0,-100%,0);\r\n }\r\n}\r\n.layer-anim-slide-down{animation-name: layer-slide-down}\r\n.layer-anim-slide-down-out{animation-name: layer-slide-down-out}\r\n\r\n/* 从右往左 */\r\n@keyframes layer-slide-left {\r\n from {\r\n transform: translate3d(100%,0,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-left-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(100%,0,0);\r\n }\r\n}\r\n.layer-anim-slide-left{animation-name: layer-slide-left}\r\n.layer-anim-slide-left-out{animation-name: layer-slide-left-out}\r\n\r\n/* 从下往上 */\r\n@keyframes layer-slide-up {\r\n from {\r\n transform: translate3d(0,100%,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-up-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(0,100%,0);\r\n }\r\n}\r\n.layer-anim-slide-up{animation-name: layer-slide-up}\r\n.layer-anim-slide-up-out{animation-name: layer-slide-up-out}\r\n\r\n/* 从左往右 */\r\n@keyframes layer-slide-right {\r\n from {\r\n transform: translate3d(-100%,0,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-right-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(-100%,0,0);\r\n }\r\n}\r\n.layer-anim-slide-right{animation-name: layer-slide-right;}\r\n.layer-anim-slide-right-out{animation-name: layer-slide-right-out;}\r\n\r\n\r\n\r\n/* 标题栏 */\r\n.layui-layer-title{padding: 0 81px 0 16px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 2px 2px 0 0;}\r\n.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 16px; font-size:0; line-height: initial;}\r\n.layui-layer-setwin span{position:relative; width: 16px; height: 16px; line-height: 18px; margin-left: 10px; text-align: center; font-size: 16px; cursor: pointer; color: #000; _overflow: hidden; box-sizing: border-box;}\r\n.layui-layer-setwin .layui-layer-min:before{content: ''; position: absolute; width: 12px; border-bottom: 1px solid #2E2D3C; left: 50%; top: 50%; margin: -0.5px 0 0 -6px; cursor: pointer; _overflow:hidden;}\r\n.layui-layer-setwin .layui-layer-min:hover:before{background-color: #2D93CA}\r\n.layui-layer-setwin .layui-layer-max:before,\r\n.layui-layer-setwin .layui-layer-max:after{content: ''; position: absolute; left: 50%; top: 50%; z-index: 1; width: 9px; height: 9px; margin: -5px 0 0 -5px; border: 1px solid #2E2D3C;}\r\n.layui-layer-setwin .layui-layer-max:hover:before,\r\n.layui-layer-setwin .layui-layer-max:hover:after{border-color: #2D93CA;}\r\n.layui-layer-setwin .layui-layer-min:hover:before{background-color: #2D93CA}\r\n.layui-layer-setwin .layui-layer-maxmin:before,\r\n.layui-layer-setwin .layui-layer-maxmin:after{width: 7px; height: 7px; margin: -3px 0 0 -3px; background-color: #fff;}\r\n.layui-layer-setwin .layui-layer-maxmin:after{z-index: 0; margin: -5px 0 0 -1px;}\r\n.layui-layer-setwin .layui-layer-close{cursor: pointer;}\r\n.layui-layer-setwin .layui-layer-close:hover{opacity:0.7;}\r\n.layui-layer-setwin .layui-layer-close2{position:absolute; right: -28px; top: -28px; color: #fff; background-color: #787878; padding: 3px; border: 3px solid; width: 28px; height: 28px; font-size: 16px; font-weight: bolder; border-radius: 50%; margin-left: 0; *right:-18px; _display:none;}\r\n.layui-layer-setwin .layui-layer-close2:hover{opacity: unset; background-color: #3888f6;}\r\n\r\n/* 按钮栏 */\r\n.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}\r\n.layui-layer-btn a{height: 30px; line-height: 30px; margin: 5px 5px 0; padding: 0 16px; border: 1px solid #dedede; background-color: #fff; color: #333; border-radius: 2px; font-weight: 400; cursor: pointer; text-decoration: none; box-sizing: border-box;}\r\n.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}\r\n.layui-layer-btn a:active{opacity: 0.8;}\r\n.layui-layer-btn .layui-layer-btn0{border-color: transparent; background-color: #1E9FFF; color:#fff;}\r\n.layui-layer-btn-l{text-align: left;}\r\n.layui-layer-btn-c{text-align: center;}\r\n\r\n/* 定制化 */\r\n.layui-layer-dialog{min-width: 240px;}\r\n.layui-layer-dialog .layui-layer-content{position: relative; padding: 16px; line-height: 24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}\r\n.layui-layer-dialog .layui-layer-content .layui-layer-face{position: absolute; top: 18px; left: 16px; color: #959595; font-size: 32px; _left: -40px;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-tips{color: #F39B12;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-success{color: #16b777;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-error{top: 19px; color: #FF5722;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-question{color: #FFB800;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-lock{color: #787878;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color: #FF5722;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color: #16b777;}\r\n\r\n.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}\r\n.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}\r\n.layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}\r\n.layui-layer-hui .layui-layer-close{color: #fff;}\r\n.layui-layer-hui .layui-layer-content{padding: 11px 24px; text-align: center;}\r\n.layui-layer-dialog .layui-layer-padding{padding: 18px 24px 18px 58px; text-align: left;}\r\n.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}\r\n.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}\r\n.layui-layer-nobg{background:none;}\r\n.layui-layer-iframe iframe{display: block; width: 100%;}\r\n\r\n.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;}\r\n.layui-layer-loading .layui-layer-content{width: 76px; height: 38px; line-height: 38px; text-align: center;}\r\n.layui-layer-loading-icon{font-size: 38px; color: #959595;}\r\n.layui-layer-loading2{text-align: center;}\r\n.layui-layer-loading-2{position: relative; height: 38px;}\r\n.layui-layer-loading-2:before,\r\n.layui-layer-loading-2:after{content: ''; position: absolute; left: 50%; top: 50%; width: 38px; height: 38px; margin: -19px 0 0 -19px; border-radius: 50%; border: 3px solid #d2d2d2; box-sizing: border-box;}\r\n.layui-layer-loading-2:after{border-color: transparent; border-left-color: #1E9FFF;}\r\n\r\n\r\n.layui-layer-tips{background: none; box-shadow:none; border:none;}\r\n.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 2px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}\r\n.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}\r\n.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}\r\n.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}\r\n.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}\r\n.layui-layer-tips i.layui-layer-TipsB{top:-8px;}\r\n.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;}\r\n.layui-layer-tips i.layui-layer-TipsR{left:-8px;}\r\n.layui-layer-tips i.layui-layer-TipsL{right:-8px;}\r\n\r\n/* 内置 skin */\r\n.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}\r\n.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; border-top:1px solid #E9E7E7}\r\n.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}\r\n.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}\r\n.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}\r\n.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}\r\n.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}\r\n.layui-layer-lan .layui-layer-setwin .layui-icon,\r\n.layui-layer-molv .layui-layer-setwin .layui-icon{color: #fff;}\r\n\r\n/* Windows 10 风格主题 */\r\n.layui-layer-win10{border: 1px solid #aaa; box-shadow: 1px 1px 6px rgba(0,0,0,.3); border-radius: none;}\r\n.layui-layer-win10 .layui-layer-title{height: 32px; line-height: 32px; padding-left: 8px; border-bottom: none; font-size: 12px;}\r\n.layui-layer-win10 .layui-layer-setwin{right: 0; top: 0;}\r\n.layui-layer-win10 .layui-layer-setwin span{margin-left: 0; width: 32px; height: 32px; padding: 8px;}\r\n.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width: 38px;}\r\n.layui-layer-win10 .layui-layer-setwin span:hover{background-color: #E5E5E5;}\r\n.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color: #E81123; color: #fff;}\r\n.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding: 8px 16px 32px; color: #0033BC;}\r\n.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top: 18px; padding-left: 58px;}\r\n.layui-layer-win10 .layui-layer-btn{padding: 5px 5px 10px; border-top:1px solid #DFDFDF; background-color: #F0F0F0;}\r\n.layui-layer-win10 .layui-layer-btn a{height: 20px; line-height: 18px; background-color: #E1E1E1; border-color: #ADADAD; color: #000; font-size: 12px; transition: all .3s;}\r\n.layui-layer-win10 .layui-layer-btn a:hover{border-color: #2A8EDD; background-color: #E5F1FB;}\r\n.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color: #0078D7;}\r\n\r\n\r\n/**\r\n \r\n @Name: layer拓展样式\r\n \r\n */\r\n\r\n/* prompt模式 */\r\n.layui-layer-prompt .layui-layer-input{display: block; width: 260px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}\r\n.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}\r\n.layui-layer-prompt .layui-layer-content{padding: 16px;}\r\n.layui-layer-prompt .layui-layer-btn{padding-top: 0;}\r\n\r\n/* tab模式 */\r\n.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}\r\n.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}\r\n.layui-layer-tab .layui-layer-title span{position:relative; display: inline-block; vertical-align: top; border-left: 1px solid transparent; border-right: 1px solid transparent; min-width:80px; max-width: 300px; padding:0 16px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}\r\n.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left-color: #eee; border-right-color: #eee; background-color: #fff; z-index: 10;}\r\n.layui-layer-tab .layui-layer-title span:first-child{border-left-color: transparent;}\r\n.layui-layer-tabmain{line-height:24px; clear: both;}\r\n.layui-layer-tabmain .layui-layer-tabli{display:none;}\r\n.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}\r\n\r\n/* photos */\r\n.layui-layer-photos{background: none; box-shadow: none;}\r\n.layui-layer-photos .layui-layer-content{overflow: visible; text-align: center;}\r\n.layui-layer-photos .layer-layer-photos-main img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}\r\n.layui-layer-photos-prev,\r\n.layui-layer-photos-next{position: fixed; top: 50%; width: 52px; height: 52px; line-height: 52px; margin-top: -26px; cursor: pointer; font-size: 52px; color: #717171;}\r\n.layui-layer-photos-prev{left: 32px;}\r\n.layui-layer-photos-next{right: 32px;}\r\n.layui-layer-photos-prev:hover,\r\n.layui-layer-photos-next:hover{color: #959595;}\r\n\r\n.layui-layer-photos-toolbar{position: fixed; left: 0; right: 0; bottom: 0; width: 100%; height: 52px; line-height: 52px; background-color: #000\\9; filter: Alpha(opacity=60); background-color: rgba(0,0,0,.32); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}\r\n.layui-layer-photos-toolbar > *{display:inline-block; vertical-align: top; padding: 0 16px; font-size: 12px; color: #fff; *display:inline; *zoom: 1;}\r\n.layui-layer-photos-toolbar *{font-size: 12px;}\r\n.layui-layer-photos-header{top: 0; bottom: auto;}\r\n.layui-layer-photos-header > span{cursor: pointer;}\r\n.layui-layer-photos-header > span:hover{background-color: rgba(51,51,51,.32);}\r\n.layui-layer-photos-header .layui-icon{font-size: 18px;}\r\n.layui-layer-photos-footer > h3{max-width: 65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.layui-layer-photos-footer a:hover{text-decoration: underline;}\r\n.layui-layer-photos-footer em{font-style: normal;}\r\n\r\n/* 关闭动画 */\r\n@-webkit-keyframes layer-bounceOut {\r\n 100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}\r\n 30% {-webkit-transform: scale(1.05); transform: scale(1.05)}\r\n 0% {-webkit-transform: scale(1); transform: scale(1);}\r\n}\r\n@keyframes layer-bounceOut {\r\n 100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}\r\n 30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}\r\n 0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}\r\n}\r\n.layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;}\r\n"]} \ No newline at end of file +{"version":3,"sources":["layui.css","modules/code.css","modules/laydate.css","modules/layer.css"],"names":[],"mappings":"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","file":"layui.css","sourcesContent":["/**\r\n * Layui\r\n * Classic modular Front-End UI library\r\n * MIT Licensed\r\n */\r\n\r\n\r\n/** 初始化 **/\r\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form,pre{margin: 0; padding: 0; -webkit-tap-highlight-color:rgba(0,0,0,0);}\r\na:active,a:hover{outline:0}\r\nimg{display: inline-block; border: none; vertical-align: middle;}\r\nli{list-style:none;}\r\ntable{border-collapse: collapse; border-spacing: 0;}\r\nh1,h2,h3,h4{font-weight: 700;}\r\nh5,h6{font-weight: 500; font-size: 100%;}\r\nbutton,input,select,textarea{font-size: 100%; }\r\ninput,button,textarea,select,optgroup,option{font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit; outline: 0;}\r\npre{white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;}\r\n\r\n/** 初始化全局标签 **/\r\nbody{line-height: 1.6; color: #333; color: rgba(0,0,0,.85); font: 14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif;}\r\nhr{height: 0; line-height: 0; margin: 10px 0; padding: 0; border: none; border-bottom: 1px solid #eee; clear: both; overflow: hidden; background: none;}\r\na{color: #333; text-decoration:none;}\r\na:hover{color: #777;}\r\na cite{font-style: normal; *cursor:pointer;}\r\n\r\n/** 基础通用 **/\r\n.layui-border-box, .layui-border-box *{box-sizing: border-box;}\r\n/* 消除第三方ui可能造成的冲突 */.layui-box, .layui-box *{box-sizing: content-box;}\r\n.layui-clear{clear: both; *zoom: 1;}\r\n.layui-clear:after{content:'\\20'; clear:both; *zoom:1; display:block; height:0;}\r\n.layui-clear-space{word-spacing: -5px;}\r\n.layui-inline{position: relative; display: inline-block; *display:inline; *zoom:1; vertical-align: middle;}\r\n/* 三角形 */.layui-edge{position: relative; display: inline-block; vertical-align: middle; width: 0; height: 0; border-width: 6px; border-style: dashed; border-color: transparent; overflow: hidden;}\r\n.layui-edge-top{top: -4px; border-bottom-color: #999; border-bottom-style: solid;}\r\n.layui-edge-right{border-left-color: #999; border-left-style: solid;}\r\n.layui-edge-bottom{top: 2px; border-top-color: #999; border-top-style: solid;}\r\n.layui-edge-left{border-right-color: #999; border-right-style: solid;}\r\n/* 单行溢出省略 */.layui-elip{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n/* 屏蔽选中 */.layui-unselect,.layui-icon, .layui-disabled{-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n/* 禁用 */.layui-disabled,.layui-disabled:hover{color: #d2d2d2 !important; cursor: not-allowed !important;}\r\n/* 纯圆角 */.layui-circle{border-radius: 100%;}\r\n.layui-show{display: block !important;}\r\n.layui-hide{display: none !important;}\r\n.layui-show-v{visibility: visible !important;}\r\n.layui-hide-v{visibility: hidden !important;}\r\n\r\n/** 图标字体 **/\r\n@font-face {\r\n font-family: 'layui-icon';\r\n src: url('../font/iconfont.eot?v=282');\r\n src: url('../font/iconfont.eot?v=282#iefix') format('embedded-opentype'),\r\n url('../font/iconfont.woff2?v=282') format('woff2'),\r\n url('../font/iconfont.woff?v=282') format('woff'),\r\n url('../font/iconfont.ttf?v=282') format('truetype'),\r\n url('../font/iconfont.svg?v=282#layui-icon') format('svg');\r\n}\r\n\r\n.layui-icon{\r\n font-family:\"layui-icon\" !important;\r\n font-size: 16px;\r\n font-style: normal;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n/* font-class */\r\n.layui-icon-leaf:before{content: \"\\e701\";}\r\n.layui-icon-folder:before{content: \"\\eabe\";}\r\n.layui-icon-folder-open:before{content: \"\\eac1\";}\r\n.layui-icon-gitee:before{content: \"\\e69b\";}\r\n.layui-icon-github:before{content:\"\\e6a7\"}\r\n.layui-icon-disabled:before{content:\"\\e6cc\"}\r\n.layui-icon-moon:before{content:\"\\e6c2\"}\r\n.layui-icon-error:before{content:\"\\e693\"}\r\n.layui-icon-success:before{content:\"\\e697\"}\r\n.layui-icon-question:before{content:\"\\e699\"}\r\n.layui-icon-lock:before{content:\"\\e69a\"}\r\n.layui-icon-eye:before{content:\"\\e695\"}\r\n.layui-icon-eye-invisible:before{content:\"\\e696\"}\r\n.layui-icon-backspace:before{content:\"\\e694\"}\r\n.layui-icon-tips-fill:before{content:\"\\eb2e\"}\r\n.layui-icon-test:before{content:\"\\e692\"}\r\n.layui-icon-clear:before{content:\"\\e788\"}\r\n.layui-icon-heart-fill:before{content:\"\\e68f\"}\r\n.layui-icon-light:before{content:\"\\e748\"}\r\n.layui-icon-music:before{content:\"\\e690\"}\r\n.layui-icon-time:before{content:\"\\e68d\"}\r\n.layui-icon-ie:before{content:\"\\e7bb\"}\r\n.layui-icon-firefox:before{content:\"\\e686\"}\r\n.layui-icon-at:before{content:\"\\e687\"}\r\n.layui-icon-bluetooth:before{content:\"\\e689\"}\r\n.layui-icon-chrome:before{content:\"\\e68a\"}\r\n.layui-icon-edge:before{content:\"\\e68b\"}\r\n.layui-icon-heart:before{content:\"\\e68c\"}\r\n.layui-icon-key:before{content:\"\\e683\"}\r\n.layui-icon-android:before{content:\"\\e684\"}\r\n.layui-icon-mike:before{content:\"\\e6dc\"}\r\n.layui-icon-mute:before{content:\"\\e685\"}\r\n.layui-icon-gift:before{content:\"\\e627\"}\r\n.layui-icon-windows:before{content:\"\\e67f\"}\r\n.layui-icon-ios:before{content:\"\\e680\"}\r\n.layui-icon-logout:before{content:\"\\e682\"}\r\n.layui-icon-wifi:before{content:\"\\e7e0\"}\r\n.layui-icon-rss:before{content:\"\\e808\"}\r\n.layui-icon-email:before{content:\"\\e618\"}\r\n.layui-icon-reduce-circle:before{content:\"\\e616\"}\r\n.layui-icon-transfer:before{content:\"\\e691\"}\r\n.layui-icon-service:before{content:\"\\e626\"}\r\n.layui-icon-addition:before{content:\"\\e624\"}\r\n.layui-icon-subtraction:before{content:\"\\e67e\"}\r\n.layui-icon-slider:before{content:\"\\e714\"}\r\n.layui-icon-print:before{content:\"\\e66d\"}\r\n.layui-icon-export:before{content:\"\\e67d\"}\r\n.layui-icon-cols:before{content:\"\\e610\"}\r\n.layui-icon-screen-full:before{content:\"\\e622\"}\r\n.layui-icon-screen-restore:before{content:\"\\e758\"}\r\n.layui-icon-rate-half:before{content:\"\\e6c9\"}\r\n.layui-icon-rate-solid:before{content:\"\\e67a\"}\r\n.layui-icon-rate:before{content:\"\\e67b\"}\r\n.layui-icon-cellphone:before{content:\"\\e678\"}\r\n.layui-icon-vercode:before{content:\"\\e679\"}\r\n.layui-icon-login-weibo:before{content:\"\\e675\"}\r\n.layui-icon-login-qq:before{content:\"\\e676\"}\r\n.layui-icon-login-wechat:before{content:\"\\e677\"}\r\n.layui-icon-username:before{content:\"\\e66f\"}\r\n.layui-icon-password:before{content:\"\\e673\"}\r\n.layui-icon-refresh-3:before{content:\"\\e9aa\"}\r\n.layui-icon-auz:before{content:\"\\e672\"}\r\n.layui-icon-shrink-right:before{content:\"\\e668\"}\r\n.layui-icon-spread-left:before{content:\"\\e66b\"}\r\n.layui-icon-snowflake:before{content:\"\\e6b1\"}\r\n.layui-icon-tips:before{content:\"\\e702\"}\r\n.layui-icon-note:before{content:\"\\e66e\"}\r\n.layui-icon-senior:before{content:\"\\e674\"}\r\n.layui-icon-refresh-1:before{content:\"\\e666\"}\r\n.layui-icon-refresh:before{content:\"\\e669\"}\r\n.layui-icon-flag:before{content:\"\\e66c\"}\r\n.layui-icon-theme:before{content:\"\\e66a\"}\r\n.layui-icon-notice:before{content:\"\\e667\"}\r\n.layui-icon-console:before{content:\"\\e665\"}\r\n.layui-icon-website:before{content:\"\\e7ae\"}\r\n.layui-icon-face-surprised:before{content:\"\\e664\"}\r\n.layui-icon-set:before{content:\"\\e716\"}\r\n.layui-icon-template:before{content:\"\\e663\"}\r\n.layui-icon-app:before{content:\"\\e653\"}\r\n.layui-icon-template-1:before{content:\"\\e656\"}\r\n.layui-icon-home:before{content:\"\\e68e\"}\r\n.layui-icon-female:before{content:\"\\e661\"}\r\n.layui-icon-male:before{content:\"\\e662\"}\r\n.layui-icon-tread:before{content:\"\\e6c5\"}\r\n.layui-icon-praise:before{content:\"\\e6c6\"}\r\n.layui-icon-rmb:before{content:\"\\e65e\"}\r\n.layui-icon-more:before{content:\"\\e65f\"}\r\n.layui-icon-camera:before{content:\"\\e660\"}\r\n.layui-icon-cart-simple:before{content:\"\\e698\"}\r\n.layui-icon-face-cry:before{content:\"\\e69c\"}\r\n.layui-icon-face-smile:before{content:\"\\e6af\"}\r\n.layui-icon-survey:before{content:\"\\e6b2\"}\r\n.layui-icon-read:before{content:\"\\e705\"}\r\n.layui-icon-location:before{content:\"\\e715\"}\r\n.layui-icon-dollar:before{content:\"\\e659\"}\r\n.layui-icon-diamond:before{content:\"\\e735\"}\r\n.layui-icon-return:before{content:\"\\e65c\"}\r\n.layui-icon-camera-fill:before{content:\"\\e65d\"}\r\n.layui-icon-fire:before{content:\"\\e756\"}\r\n.layui-icon-more-vertical:before{content:\"\\e671\"}\r\n.layui-icon-cart:before{content:\"\\e657\"}\r\n.layui-icon-star-fill:before{content:\"\\e658\"}\r\n.layui-icon-prev:before{content:\"\\e65a\"}\r\n.layui-icon-next:before{content:\"\\e65b\"}\r\n.layui-icon-upload:before{content:\"\\e67c\"}\r\n.layui-icon-upload-drag:before{content:\"\\e681\"}\r\n.layui-icon-user:before{content:\"\\e770\"}\r\n.layui-icon-file-b:before{content:\"\\e655\"}\r\n.layui-icon-component:before{content:\"\\e857\"}\r\n.layui-icon-find-fill:before{content:\"\\e670\"}\r\n.layui-icon-loading:before{content:\"\\e63d\"}\r\n.layui-icon-loading-1:before{content:\"\\e63e\"}\r\n.layui-icon-add-1:before{content:\"\\e654\"}\r\n.layui-icon-pause:before{content:\"\\e651\"}\r\n.layui-icon-play:before{content:\"\\e652\"}\r\n.layui-icon-video:before{content:\"\\e6ed\"}\r\n.layui-icon-headset:before{content:\"\\e6fc\"}\r\n.layui-icon-voice:before{content:\"\\e688\"}\r\n.layui-icon-speaker:before{content:\"\\e645\"}\r\n.layui-icon-fonts-del:before{content:\"\\e64f\"}\r\n.layui-icon-fonts-html:before{content:\"\\e64b\"}\r\n.layui-icon-fonts-code:before{content:\"\\e64e\"}\r\n.layui-icon-fonts-strong:before{content:\"\\e62b\"}\r\n.layui-icon-unlink:before{content:\"\\e64d\"}\r\n.layui-icon-picture:before{content:\"\\e64a\"}\r\n.layui-icon-link:before{content:\"\\e64c\"}\r\n.layui-icon-face-smile-b:before{content:\"\\e650\"}\r\n.layui-icon-align-center:before{content:\"\\e647\"}\r\n.layui-icon-align-right:before{content:\"\\e648\"}\r\n.layui-icon-align-left:before{content:\"\\e649\"}\r\n.layui-icon-fonts-u:before{content:\"\\e646\"}\r\n.layui-icon-fonts-i:before{content:\"\\e644\"}\r\n.layui-icon-tabs:before{content:\"\\e62a\"}\r\n.layui-icon-circle:before{content:\"\\e63f\"}\r\n.layui-icon-radio:before{content:\"\\e643\"}\r\n.layui-icon-share:before{content:\"\\e641\"}\r\n.layui-icon-edit:before{content:\"\\e642\"}\r\n.layui-icon-delete:before{content:\"\\e640\"}\r\n.layui-icon-engine:before{content:\"\\e628\"}\r\n.layui-icon-chart-screen:before{content:\"\\e629\"}\r\n.layui-icon-chart:before{content:\"\\e62c\"}\r\n.layui-icon-table:before{content:\"\\e62d\"}\r\n.layui-icon-tree:before{content:\"\\e62e\"}\r\n.layui-icon-upload-circle:before{content:\"\\e62f\"}\r\n.layui-icon-templeate-1:before{content:\"\\e630\"}\r\n.layui-icon-util:before{content:\"\\e631\"}\r\n.layui-icon-layouts:before{content:\"\\e632\"}\r\n.layui-icon-prev-circle:before{content:\"\\e633\"}\r\n.layui-icon-carousel:before{content:\"\\e634\"}\r\n.layui-icon-code-circle:before{content:\"\\e635\"}\r\n.layui-icon-water:before{content:\"\\e636\"}\r\n.layui-icon-date:before{content:\"\\e637\"}\r\n.layui-icon-layer:before{content:\"\\e638\"}\r\n.layui-icon-fonts-clear:before{content:\"\\e639\"}\r\n.layui-icon-dialogue:before{content:\"\\e63a\"}\r\n.layui-icon-cellphone-fine:before{content:\"\\e63b\"}\r\n.layui-icon-form:before{content:\"\\e63c\"}\r\n.layui-icon-file:before{content:\"\\e621\"}\r\n.layui-icon-triangle-r:before{content:\"\\e623\"}\r\n.layui-icon-triangle-d:before{content:\"\\e625\"}\r\n.layui-icon-set-sm:before{content:\"\\e620\"}\r\n.layui-icon-add-circle:before{content:\"\\e61f\"}\r\n.layui-icon-layim-download:before{content:\"\\e61e\"}\r\n.layui-icon-layim-uploadfile:before{content:\"\\e61d\"}\r\n.layui-icon-404:before{content:\"\\e61c\"}\r\n.layui-icon-about:before{content:\"\\e60b\"}\r\n.layui-icon-layim-theme:before{content:\"\\e61b\"}\r\n.layui-icon-down:before{content:\"\\e61a\"}\r\n.layui-icon-up:before{content:\"\\e619\"}\r\n.layui-icon-circle-dot:before{content:\"\\e617\"}\r\n.layui-icon-set-fill:before{content:\"\\e614\"}\r\n.layui-icon-search:before{content:\"\\e615\"}\r\n.layui-icon-friends:before{content:\"\\e612\"}\r\n.layui-icon-group:before{content:\"\\e613\"}\r\n.layui-icon-reply-fill:before{content:\"\\e611\"}\r\n.layui-icon-menu-fill:before{content:\"\\e60f\"}\r\n.layui-icon-face-smile-fine:before{content:\"\\e60c\"}\r\n.layui-icon-picture-fine:before{content:\"\\e60d\"}\r\n.layui-icon-log:before{content:\"\\e60e\"}\r\n.layui-icon-list:before{content:\"\\e60a\"}\r\n.layui-icon-release:before{content:\"\\e609\"}\r\n.layui-icon-add-circle-fine:before{content:\"\\e608\"}\r\n.layui-icon-ok:before{content:\"\\e605\"}\r\n.layui-icon-help:before{content:\"\\e607\"}\r\n.layui-icon-chat:before{content:\"\\e606\"}\r\n.layui-icon-top:before{content:\"\\e604\"}\r\n.layui-icon-right:before{content:\"\\e602\"}\r\n.layui-icon-left:before{content:\"\\e603\"}\r\n.layui-icon-star:before{content:\"\\e600\"}\r\n.layui-icon-download-circle:before{content:\"\\e601\"}\r\n.layui-icon-close:before{content:\"\\1006\"}\r\n.layui-icon-close-fill:before{content:\"\\1007\"}\r\n.layui-icon-ok-circle:before{content:\"\\1005\"}\r\n\r\n\r\n/* 基本布局 */\r\n.layui-main{position: relative; width: 1160px; margin: 0 auto;}\r\n.layui-header{position: relative; z-index: 1000; height: 60px;}\r\n.layui-header a:hover{transition: all .5s; -webkit-transition: all .5s;}\r\n.layui-side{position: fixed; left: 0; top: 0; bottom: 0; z-index: 999; width: 200px; overflow-x: hidden;}\r\n.layui-side-scroll{position: relative; width: 220px; height: 100%; overflow-x: hidden;}\r\n.layui-body{position: relative; left: 200px; right: 0; top: 0; bottom: 0; z-index: 900; width: auto; box-sizing: border-box;}\r\n\r\n/* 后台框架大布局 */\r\n.layui-layout-body{overflow-x: hidden;}\r\n.layui-layout-admin .layui-header{position: fixed; top: 0; left: 0; right: 0; background-color: #23292e;}\r\n.layui-layout-admin .layui-side{top: 60px; width: 200px; overflow-x: hidden;}\r\n.layui-layout-admin .layui-body{position: absolute; top: 60px; padding-bottom: 44px;}\r\n.layui-layout-admin .layui-main{width: auto; margin: 0 15px;}\r\n.layui-layout-admin .layui-footer{position: fixed; left: 200px; right: 0; bottom: 0; z-index: 990; height: 44px; line-height: 44px; padding: 0 15px; box-shadow: -1px 0 4px rgb(0 0 0 / 12%); background-color: #fafafa;}\r\n.layui-layout-admin .layui-logo{position: absolute; left: 0; top: 0; width: 200px; height: 100%; line-height: 60px; text-align: center; color: #16baaa; font-size: 16px; box-shadow: 0 1px 2px 0 rgb(0 0 0 / 15%);}\r\n.layui-layout-admin .layui-header .layui-nav{background: none;}\r\n.layui-layout-left{position: absolute !important; left: 200px; top: 0;}\r\n.layui-layout-right{position: absolute !important; right: 0; top: 0;}\r\n\r\n\r\n/* 栅格布局 */\r\n.layui-container{position: relative; margin: 0 auto; box-sizing: border-box;}\r\n.layui-fluid{position: relative; margin: 0 auto; padding: 0 15px;}\r\n\r\n.layui-row:before, .layui-row:after{content: \"\"; display: block; clear: both;}\r\n.layui-col-xs1, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12\r\n,.layui-col-sm1, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12\r\n,.layui-col-md1, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-md10, .layui-col-md11, .layui-col-md12\r\n,.layui-col-lg1, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12\r\n,.layui-col-xl1, .layui-col-xl2, .layui-col-xl3, .layui-col-xl4, .layui-col-xl5, .layui-col-xl6, .layui-col-xl7, .layui-col-xl8, .layui-col-xl9, .layui-col-xl10, .layui-col-xl11, .layui-col-xl12\r\n{position: relative; display: block; box-sizing: border-box;}\r\n\r\n.layui-col-xs1, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12{float: left;}\r\n.layui-col-xs1{width: 8.33333333%;}\r\n.layui-col-xs2{width: 16.66666667%;}\r\n.layui-col-xs3{width: 25%;}\r\n.layui-col-xs4{width: 33.33333333%;}\r\n.layui-col-xs5{width: 41.66666667%;}\r\n.layui-col-xs6{width: 50%;}\r\n.layui-col-xs7{width: 58.33333333%;}\r\n.layui-col-xs8{width: 66.66666667%;}\r\n.layui-col-xs9{width: 75%;}\r\n.layui-col-xs10{width: 83.33333333%;}\r\n.layui-col-xs11{width: 91.66666667%;}\r\n.layui-col-xs12{width: 100%;}\r\n\r\n.layui-col-xs-offset1{margin-left: 8.33333333%;}\r\n.layui-col-xs-offset2{margin-left: 16.66666667%;}\r\n.layui-col-xs-offset3{margin-left: 25%;}\r\n.layui-col-xs-offset4{margin-left: 33.33333333%;}\r\n.layui-col-xs-offset5{margin-left: 41.66666667%;}\r\n.layui-col-xs-offset6{margin-left: 50%;}\r\n.layui-col-xs-offset7{margin-left: 58.33333333%;}\r\n.layui-col-xs-offset8{margin-left: 66.66666667%;}\r\n.layui-col-xs-offset9{margin-left: 75%;}\r\n.layui-col-xs-offset10{margin-left: 83.33333333%;}\r\n.layui-col-xs-offset11{margin-left: 91.66666667%;}\r\n.layui-col-xs-offset12{margin-left: 100%;}\r\n\r\n/* 超小屏幕 */\r\n@media screen and (max-width: 767.98px) {\r\n .layui-container{padding: 0 15px;}\r\n .layui-hide-xs{display: none!important;}\r\n .layui-show-xs-block{display: block!important;}\r\n .layui-show-xs-inline{display: inline!important;}\r\n .layui-show-xs-inline-block{display: inline-block!important;}\r\n}\r\n\r\n/* 小型屏幕 */\r\n@media screen and (min-width: 768px) {\r\n .layui-container{width: 720px;}\r\n .layui-hide-sm{display: none!important;}\r\n .layui-show-sm-block{display: block!important;}\r\n .layui-show-sm-inline{display: inline!important;}\r\n .layui-show-sm-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-sm1, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12{float: left;}\r\n .layui-col-sm1{width: 8.33333333%;}\r\n .layui-col-sm2{width: 16.66666667%;}\r\n .layui-col-sm3{width: 25%;}\r\n .layui-col-sm4{width: 33.33333333%;}\r\n .layui-col-sm5{width: 41.66666667%;}\r\n .layui-col-sm6{width: 50%;}\r\n .layui-col-sm7{width: 58.33333333%;}\r\n .layui-col-sm8{width: 66.66666667%;}\r\n .layui-col-sm9{width: 75%;}\r\n .layui-col-sm10{width: 83.33333333%;}\r\n .layui-col-sm11{width: 91.66666667%;}\r\n .layui-col-sm12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-sm-offset1{margin-left: 8.33333333%;}\r\n .layui-col-sm-offset2{margin-left: 16.66666667%;}\r\n .layui-col-sm-offset3{margin-left: 25%;}\r\n .layui-col-sm-offset4{margin-left: 33.33333333%;}\r\n .layui-col-sm-offset5{margin-left: 41.66666667%;}\r\n .layui-col-sm-offset6{margin-left: 50%;}\r\n .layui-col-sm-offset7{margin-left: 58.33333333%;}\r\n .layui-col-sm-offset8{margin-left: 66.66666667%;}\r\n .layui-col-sm-offset9{margin-left: 75%;}\r\n .layui-col-sm-offset10{margin-left: 83.33333333%;}\r\n .layui-col-sm-offset11{margin-left: 91.66666667%;}\r\n .layui-col-sm-offset12{margin-left: 100%;}\r\n}\r\n/* 中型屏幕 */\r\n@media screen and (min-width: 992px) {\r\n .layui-container{width: 960px;}\r\n .layui-hide-md{display: none!important;}\r\n .layui-show-md-block{display: block!important;}\r\n .layui-show-md-inline{display: inline!important;}\r\n .layui-show-md-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-md1, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-md10, .layui-col-md11, .layui-col-md12{float: left;}\r\n .layui-col-md1{width: 8.33333333%;}\r\n .layui-col-md2{width: 16.66666667%;}\r\n .layui-col-md3{width: 25%;}\r\n .layui-col-md4{width: 33.33333333%;}\r\n .layui-col-md5{width: 41.66666667%;}\r\n .layui-col-md6{width: 50%;}\r\n .layui-col-md7{width: 58.33333333%;}\r\n .layui-col-md8{width: 66.66666667%;}\r\n .layui-col-md9{width: 75%;}\r\n .layui-col-md10{width: 83.33333333%;}\r\n .layui-col-md11{width: 91.66666667%;}\r\n .layui-col-md12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-md-offset1{margin-left: 8.33333333%;}\r\n .layui-col-md-offset2{margin-left: 16.66666667%;}\r\n .layui-col-md-offset3{margin-left: 25%;}\r\n .layui-col-md-offset4{margin-left: 33.33333333%;}\r\n .layui-col-md-offset5{margin-left: 41.66666667%;}\r\n .layui-col-md-offset6{margin-left: 50%;}\r\n .layui-col-md-offset7{margin-left: 58.33333333%;}\r\n .layui-col-md-offset8{margin-left: 66.66666667%;}\r\n .layui-col-md-offset9{margin-left: 75%;}\r\n .layui-col-md-offset10{margin-left: 83.33333333%;}\r\n .layui-col-md-offset11{margin-left: 91.66666667%;}\r\n .layui-col-md-offset12{margin-left: 100%;}\r\n}\r\n/* 大型屏幕 */\r\n@media screen and (min-width: 1200px) {\r\n .layui-container{width: 1150px;}\r\n .layui-hide-lg{display: none!important;}\r\n .layui-show-lg-block{display: block!important;}\r\n .layui-show-lg-inline{display: inline!important;}\r\n .layui-show-lg-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-lg1, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12{float: left;}\r\n .layui-col-lg1{width: 8.33333333%;}\r\n .layui-col-lg2{width: 16.66666667%;}\r\n .layui-col-lg3{width: 25%;}\r\n .layui-col-lg4{width: 33.33333333%;}\r\n .layui-col-lg5{width: 41.66666667%;}\r\n .layui-col-lg6{width: 50%;}\r\n .layui-col-lg7{width: 58.33333333%;}\r\n .layui-col-lg8{width: 66.66666667%;}\r\n .layui-col-lg9{width: 75%;}\r\n .layui-col-lg10{width: 83.33333333%;}\r\n .layui-col-lg11{width: 91.66666667%;}\r\n .layui-col-lg12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-lg-offset1{margin-left: 8.33333333%;}\r\n .layui-col-lg-offset2{margin-left: 16.66666667%;}\r\n .layui-col-lg-offset3{margin-left: 25%;}\r\n .layui-col-lg-offset4{margin-left: 33.33333333%;}\r\n .layui-col-lg-offset5{margin-left: 41.66666667%;}\r\n .layui-col-lg-offset6{margin-left: 50%;}\r\n .layui-col-lg-offset7{margin-left: 58.33333333%;}\r\n .layui-col-lg-offset8{margin-left: 66.66666667%;}\r\n .layui-col-lg-offset9{margin-left: 75%;}\r\n .layui-col-lg-offset10{margin-left: 83.33333333%;}\r\n .layui-col-lg-offset11{margin-left: 91.66666667%;}\r\n .layui-col-lg-offset12{margin-left: 100%;}\r\n}\r\n/* 超大屏幕 */\r\n@media screen and (min-width: 1400px) {\r\n .layui-container{width: 1330px;}\r\n .layui-hide-xl{display: none!important;}\r\n .layui-show-xl-block{display: block!important;}\r\n .layui-show-xl-inline{display: inline!important;}\r\n .layui-show-xl-inline-block{display: inline-block!important;}\r\n\r\n .layui-col-xl1, .layui-col-xl2, .layui-col-xl3, .layui-col-xl4, .layui-col-xl5, .layui-col-xl6, .layui-col-xl7, .layui-col-xl8, .layui-col-xl9, .layui-col-xl10, .layui-col-xl11, .layui-col-xl12{float: left;}\r\n .layui-col-xl1{width: 8.33333333%;}\r\n .layui-col-xl2{width: 16.66666667%;}\r\n .layui-col-xl3{width: 25%;}\r\n .layui-col-xl4{width: 33.33333333%;}\r\n .layui-col-xl5{width: 41.66666667%;}\r\n .layui-col-xl6{width: 50%;}\r\n .layui-col-xl7{width: 58.33333333%;}\r\n .layui-col-xl8{width: 66.66666667%;}\r\n .layui-col-xl9{width: 75%;}\r\n .layui-col-xl10{width: 83.33333333%;}\r\n .layui-col-xl11{width: 91.66666667%;}\r\n .layui-col-xl12{width: 100%;}\r\n /* 列偏移 */\r\n .layui-col-xl-offset1{margin-left: 8.33333333%;}\r\n .layui-col-xl-offset2{margin-left: 16.66666667%;}\r\n .layui-col-xl-offset3{margin-left: 25%;}\r\n .layui-col-xl-offset4{margin-left: 33.33333333%;}\r\n .layui-col-xl-offset5{margin-left: 41.66666667%;}\r\n .layui-col-xl-offset6{margin-left: 50%;}\r\n .layui-col-xl-offset7{margin-left: 58.33333333%;}\r\n .layui-col-xl-offset8{margin-left: 66.66666667%;}\r\n .layui-col-xl-offset9{margin-left: 75%;}\r\n .layui-col-xl-offset10{margin-left: 83.33333333%;}\r\n .layui-col-xl-offset11{margin-left: 91.66666667%;}\r\n .layui-col-xl-offset12{margin-left: 100%;}\r\n}\r\n\r\n/* 列间隔 */\r\n.layui-col-space1{margin: -0.5px;}\r\n.layui-col-space1>*{padding: 0.5px;}\r\n.layui-col-space2{margin: -1px;}\r\n.layui-col-space2>*{padding: 1px;}\r\n.layui-col-space4{margin: -2px;}\r\n.layui-col-space4>*{padding: 2px;}\r\n.layui-col-space5{margin: -2.5px;}\r\n.layui-col-space5>*{padding: 2.5px;}\r\n.layui-col-space6{margin: -3px;}\r\n.layui-col-space6>*{padding: 3px;}\r\n.layui-col-space8{margin: -4px;}\r\n.layui-col-space8>*{padding: 4px;}\r\n.layui-col-space10{margin: -5px;}\r\n.layui-col-space10>*{padding: 5px;}\r\n.layui-col-space12{margin: -6px;}\r\n.layui-col-space12>*{padding: 6px;}\r\n.layui-col-space14{margin: -7px;}\r\n.layui-col-space14>*{padding: 7px;}\r\n.layui-col-space15{margin: -7.5px;}\r\n.layui-col-space15>*{padding: 7.5px;}\r\n.layui-col-space16{margin: -8px;}\r\n.layui-col-space16>*{padding: 8px;}\r\n.layui-col-space18{margin: -9px;}\r\n.layui-col-space18>*{padding: 9px;}\r\n.layui-col-space20{margin: -10px;}\r\n.layui-col-space20>*{padding: 10px;}\r\n.layui-col-space22{margin: -11px;}\r\n.layui-col-space22>*{padding: 11px;}\r\n.layui-col-space24{margin: -12px;}\r\n.layui-col-space24>*{padding: 12px;}\r\n.layui-col-space25{margin: -12.5px;}\r\n.layui-col-space25>*{padding: 12.5px;}\r\n.layui-col-space26{margin: -13px;}\r\n.layui-col-space26>*{padding: 13px;}\r\n.layui-col-space28{margin: -14px;}\r\n.layui-col-space28>*{padding: 14px;}\r\n.layui-col-space30{margin: -15px;}\r\n.layui-col-space30>*{padding: 15px;}\r\n.layui-col-space32{margin: -16px;}\r\n.layui-col-space32>*{padding: 16px;}\r\n\r\n\r\n/* 内边距 */\r\n.layui-padding-1{padding: 4px !important;}\r\n.layui-padding-2{padding: 8px !important;}\r\n.layui-padding-3{padding: 16px !important;}\r\n.layui-padding-4{padding: 32px !important;}\r\n.layui-padding-5{padding: 48px !important;}\r\n\r\n/* 外边距 */\r\n.layui-margin-1{margin: 4px !important;}\r\n.layui-margin-2{margin: 8px !important;}\r\n.layui-margin-3{margin: 16px !important;}\r\n.layui-margin-4{margin: 32px !important;}\r\n.layui-margin-5{margin: 48px !important;}\r\n\r\n\r\n/*\r\n * 页面元素\r\n */\r\n\r\n.layui-btn,\r\n.layui-input,\r\n.layui-select,\r\n.layui-textarea,\r\n.layui-upload-button{outline: none; -webkit-appearance: none; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box;}\r\n\r\n/* 引用 */\r\n.layui-elem-quote{margin-bottom: 10px; padding: 15px; line-height: 1.8; border-left: 5px solid #16b777; border-radius: 0 2px 2px 0; background-color: #fafafa;}\r\n.layui-quote-nm{border-style: solid; border-width: 1px; border-left-width: 5px; background: none;}\r\n\r\n/* 字段集合 */\r\n.layui-elem-field{margin-bottom: 10px; padding: 0; border-width: 1px; border-style: solid;}\r\n.layui-elem-field legend{margin-left: 20px; padding: 0 10px; font-size: 20px;}\r\n.layui-field-title{margin: 16px 0; border-width: 0; border-top-width: 1px;}\r\n.layui-field-box{padding: 15px;}\r\n.layui-field-title .layui-field-box{padding: 10px 0;}\r\n\r\n/* 进度条 */\r\n.layui-progress{position: relative; height: 6px; border-radius: 20px; background-color: #eee;}\r\n.layui-progress-bar{position: absolute; left: 0; top: 0; width: 0; max-width: 100%; height: 6px; border-radius: 20px; text-align: right; background-color: #16b777; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-progress-big,\r\n.layui-progress-big .layui-progress-bar{height: 18px; line-height: 18px;}\r\n.layui-progress-text{position: relative; top: -20px; line-height: 18px; font-size: 12px; color: #5F5F5F}\r\n.layui-progress-big .layui-progress-text{position: static; padding: 0 10px; color: #fff;}\r\n\r\n\r\n/*\r\n * 面板\r\n */\r\n\r\n\r\n/* 折叠面板 */\r\n.layui-collapse{border-width: 1px; border-style: solid; border-radius: 2px;}\r\n.layui-colla-item,\r\n.layui-colla-content{border-top-width: 1px; border-top-style: solid;}\r\n.layui-colla-item:first-child{border-top: none;}\r\n.layui-colla-title{position: relative; height: 42px; line-height: 42px; padding: 0 15px 0 35px; color: #333; background-color: #fafafa; cursor: pointer; font-size: 14px; overflow: hidden;}\r\n.layui-colla-content{display: none; padding: 10px 15px; line-height: 1.6; color: #5F5F5F;}\r\n.layui-colla-icon{position: absolute; left: 15px; top: 0; font-size: 14px;}\r\n\r\n/* 卡片面板 */\r\n.layui-card{margin-bottom: 15px; border-radius: 2px; background-color: #fff; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);}\r\n.layui-card:last-child{margin-bottom: 0;}\r\n.layui-card-header{position: relative; height: 42px; line-height: 42px; padding: 0 15px; border-bottom: 1px solid #f8f8f8; color: #333; border-radius: 2px 2px 0 0; font-size: 14px;}\r\n.layui-card-body{position: relative; padding: 10px 15px; line-height: 24px;}\r\n.layui-card-body[pad15]{padding: 15px;}\r\n.layui-card-body[pad20]{padding: 20px;}\r\n.layui-card-body .layui-table{margin: 5px 0;}\r\n.layui-card .layui-tab{margin: 0;}\r\n\r\n/* 常规面板 */\r\n.layui-panel{position: relative; border-width: 1px; border-style: solid; border-radius: 2px; box-shadow: 1px 1px 4px rgb(0 0 0 / 8%); background-color: #fff; color: #5F5F5F;}\r\n\r\n/* 窗口面板 */\r\n.layui-panel-window{position: relative; padding: 15px; border-radius: 0; border-top: 5px solid #eee; background-color: #fff;}\r\n\r\n/* 其它辅助 */\r\n.layui-auxiliar-moving{position: fixed; left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%; background: none; z-index: 9999999999;}\r\n.layui-scrollbar-hide{overflow: hidden !important;}\r\n\r\n\r\n/*\r\n * 默认主题\r\n */\r\n\r\n\r\n/* 背景颜色 */\r\n.layui-bg-red{background-color: #ff5722 !important; color: #fff!important;} /*赤*/\r\n.layui-bg-orange{background-color: #ffb800!important; color: #fff!important;} /*橙*/\r\n.layui-bg-green{background-color: #16baaa!important; color: #fff!important;} /*绿*/\r\n.layui-bg-cyan{background-color: #2f4056!important; color: #fff!important;} /*藏青*/\r\n.layui-bg-blue{background-color: #1e9fff!important; color: #fff!important;} /*蓝*/\r\n.layui-bg-purple{background-color: #a233c6!important; color: #fff!important;} /*紫*/\r\n.layui-bg-black{background-color: #2f363c!important; color: #fff!important;} /*深*/\r\n.layui-bg-gray{background-color: #fafafa!important; color: #5F5F5F!important;} /*浅*/\r\n\r\n/* 边框 */\r\n.layui-border,\r\n.layui-quote-nm,\r\n.layui-elem-field,\r\n.layui-collapse,\r\n.layui-panel,\r\n.layui-colla-item,\r\n.layui-colla-content,\r\n.layui-badge-rim,\r\n.layui-tab-title,\r\n.layui-tab-title .layui-this:after,\r\n.layui-tab-bar,\r\n.layui-tab-card,\r\n\r\n.layui-input, .layui-textarea, .layui-select,\r\n.layui-input-split,\r\n.layui-form-pane .layui-form-label,\r\n.layui-form-pane .layui-form-item[pane]{border-color: #eee;}\r\n\r\n.layui-border{border-width: 1px; border-style: solid; color: #5F5F5F!important;}\r\n.layui-border-red{border-width: 1px; border-style: solid; border-color: #ff5722!important; color: #ff5722!important;}\r\n.layui-border-orange{border-width: 1px; border-style: solid; border-color: #ffb800!important; color: #ffb800!important;}\r\n.layui-border-green{border-width: 1px; border-style: solid; border-color: #16baaa!important; color: #16baaa!important;}\r\n.layui-border-cyan{border-width: 1px; border-style: solid; border-color: #2f4056!important; color: #2f4056!important;}\r\n.layui-border-blue{border-width: 1px; border-style: solid; border-color: #1e9fff!important; color: #1e9fff!important;}\r\n.layui-border-purple{border-width: 1px; border-style: solid; border-color: #a233c6!important; color: #a233c6!important;}\r\n.layui-border-black{border-width: 1px; border-style: solid; border-color: #2f363c!important; color: #2f363c!important;}\r\n\r\n/* 分割线边框 */\r\nhr.layui-border-red,\r\nhr.layui-border-orange,\r\nhr.layui-border-green,\r\nhr.layui-border-cyan,\r\nhr.layui-border-blue,\r\nhr.layui-border-purple,\r\nhr.layui-border-black{border-width: 0 0 1px;}\r\n\r\n/* 背景边框 */\r\n.layui-timeline-item:before{background-color: #eee;}\r\n\r\n/* 文本区域 */\r\n.layui-text{line-height: 1.8; font-size: 14px;}\r\n.layui-text h1,\r\n.layui-text h2,\r\n.layui-text h3,\r\n.layui-text h4,\r\n.layui-text h5,\r\n.layui-text h6{color: #3A3A3A;}\r\n.layui-text h1{font-size: 32px;}\r\n.layui-text h2{font-size: 24px;}\r\n.layui-text h3{font-size: 18px;}\r\n.layui-text h4{font-size: 16px;}\r\n.layui-text h5{font-size: 14px;}\r\n.layui-text h6{font-size: 13px;}\r\n.layui-text ul,\r\n.layui-text ol{padding-left: 15px;}\r\n.layui-text ul li{margin-top: 5px; list-style-type: disc;}\r\n.layui-text ol li{margin-top: 5px; list-style-type: decimal;}\r\n.layui-text-em,\r\n.layui-word-aux{color: #999 !important; padding-left: 5px !important; padding-right: 5px !important;}\r\n.layui-text p{margin: 15px 0;}\r\n.layui-text p:first-child{margin-top: 0;}\r\n.layui-text p:last-child{margin-bottom: 0;}\r\n.layui-text a:not(.layui-btn){color: #01AAED;}\r\n.layui-text a:not(.layui-btn):hover{text-decoration: underline;}\r\n.layui-text blockquote:not(.layui-elem-quote){padding: 5px 15px; border-left: 5px solid #eee;}\r\n.layui-text pre > code:not(.layui-code){padding: 15px; font-family: \"Courier New\",Consolas,\"Lucida Console\";}\r\n\r\n/* 字体大小 */\r\n.layui-font-12{font-size: 12px !important;}\r\n.layui-font-13{font-size: 13px !important;}\r\n.layui-font-14{font-size: 14px !important;}\r\n.layui-font-16{font-size: 16px !important;}\r\n.layui-font-18{font-size: 18px !important;}\r\n.layui-font-20{font-size: 20px !important;}\r\n.layui-font-22{font-size: 22px !important;}\r\n.layui-font-24{font-size: 24px !important;}\r\n.layui-font-26{font-size: 26px !important;}\r\n.layui-font-28{font-size: 28px !important;}\r\n.layui-font-30{font-size: 30px !important;}\r\n.layui-font-32{font-size: 32px !important;}\r\n\r\n/* 字体颜色 */\r\n.layui-font-red{color: #ff5722 !important;} /*赤*/\r\n.layui-font-orange{color: #ffb800!important;} /*橙*/\r\n.layui-font-green{color: #16baaa!important;} /*绿*/\r\n.layui-font-cyan{color: #2f4056!important;} /*藏青*/\r\n.layui-font-blue{color: #01AAED!important;} /*蓝*/\r\n.layui-font-purple{color: #a233c6 !important;} /*紫*/\r\n.layui-font-black{color: #000!important;} /*深*/\r\n.layui-font-gray{color: #c2c2c2!important;} /*浅*/\r\n\r\n\r\n\r\n/*\r\n * 按钮\r\n */\r\n\r\n.layui-btn{display: inline-block; vertical-align: middle; height: 38px; line-height: 38px; border: 1px solid transparent; padding: 0 18px; background-color: #16baaa; color: #fff; white-space: nowrap; text-align: center; font-size: 14px; border-radius: 2px; cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n.layui-btn:hover{opacity: 0.8; filter:alpha(opacity=80); color: #fff;}\r\n.layui-btn:active{opacity: 1; filter:alpha(opacity=100);}\r\n.layui-btn+.layui-btn{margin-left: 10px;}\r\n\r\n/* 按钮容器 */\r\n.layui-btn-container{word-spacing: -5px;}\r\n.layui-btn-container .layui-btn{margin-right: 10px; margin-bottom: 10px; word-spacing: normal;}\r\n.layui-btn-container .layui-btn+.layui-btn{margin-left: 0;}\r\n.layui-table .layui-btn-container .layui-btn{margin-bottom: 9px;}\r\n\r\n\r\n/* 圆角 */.layui-btn-radius{border-radius: 100px;}\r\n.layui-btn .layui-icon{padding: 0 2px; vertical-align: middle\\0; vertical-align: bottom;}\r\n\r\n/* 原始 */.layui-btn-primary{border-color: #d2d2d2; background: none; color: #5F5F5F;}\r\n.layui-btn-primary:hover{border-color: #16baaa; color: #333;}\r\n/* 百搭 */.layui-btn-normal{background-color: #1e9fff;}\r\n/* 暖色 */.layui-btn-warm{background-color: #ffb800;}\r\n/* 警告 */.layui-btn-danger{background-color: #ff5722;}\r\n/* 选中 */.layui-btn-checked{background-color: #16b777;}\r\n/* 禁用 */.layui-btn-disabled, .layui-btn-disabled:hover, .layui-btn-disabled:active{border-color: #eee !important; background-color: #FBFBFB !important; color: #d2d2d2 !important; cursor: not-allowed !important; opacity: 1;}\r\n\r\n/* 大型 */.layui-btn-lg{height: 44px; line-height: 44px; padding: 0 25px; font-size: 16px;}\r\n/* 小型 */.layui-btn-sm{height: 30px; line-height: 30px; padding: 0 10px; font-size: 12px;}\r\n/* 超小 */.layui-btn-xs{height: 22px; line-height: 22px; padding: 0 5px; font-size: 12px;}\r\n.layui-btn-xs i{font-size: 12px !important;}\r\n/* 按钮组 */.layui-btn-group{display: inline-block; vertical-align: middle; font-size: 0;}\r\n.layui-btn-group .layui-btn{margin-left: 0!important; margin-right: 0!important; border-left: 1px solid rgba(255,255,255,.5); border-radius: 0;}\r\n.layui-btn-group .layui-btn-primary{border-left: none;}\r\n.layui-btn-group .layui-btn-primary:hover{border-color: #d2d2d2; color: #16baaa;}\r\n.layui-btn-group .layui-btn:first-child{border-left: none; border-radius: 2px 0 0 2px;}\r\n.layui-btn-group .layui-btn-primary:first-child{border-left: 1px solid #d2d2d2;}\r\n.layui-btn-group .layui-btn:last-child{border-radius: 0 2px 2px 0;}\r\n.layui-btn-group .layui-btn+.layui-btn{margin-left: 0;}\r\n.layui-btn-group+.layui-btn-group{margin-left: 10px;}\r\n/* 流体 */.layui-btn-fluid{width: 100%;}\r\n\r\n/** 表单 **/\r\n.layui-input, .layui-textarea, .layui-select{height: 38px; line-height: 1.3; line-height: 38px\\9; border-width: 1px; border-style: solid; background-color: #fff; color: rgba(0,0,0,.85); border-radius: 2px;}\r\n.layui-input::-webkit-input-placeholder,\r\n.layui-textarea::-webkit-input-placeholder,\r\n.layui-select::-webkit-input-placeholder{line-height: 1.3;}\r\n.layui-input, .layui-textarea{display: block; width: 100%; padding-left: 10px;}\r\n.layui-input:hover, .layui-textarea:hover{border-color: #d2d2d2 !important;}\r\n.layui-input:focus, .layui-textarea:focus{border-color: #16b777 !important; box-shadow: 0 0 0 3px rgba(22,183,119,0.08);}\r\n.layui-textarea{position: relative; min-height: 100px; height: auto; line-height: 20px; padding: 6px 10px; resize: vertical;}\r\n.layui-input[disabled], .layui-textarea[disabled]{background-color: #fafafa;}\r\n.layui-select{padding: 0 10px;}\r\n.layui-form select,\r\n.layui-form input[type=checkbox],\r\n.layui-form input[type=radio]{display: none;}\r\n.layui-form *[lay-ignore]{display: initial;}\r\n\r\n.layui-form-item{position: relative; margin-bottom: 15px; clear: both; *zoom: 1;}\r\n.layui-form-item:after{content:'\\20'; clear: both; *zoom: 1; display: block; height:0;}\r\n.layui-form-label{position: relative; float: left; display: block; padding: 9px 15px; width: 80px; font-weight: 400; line-height: 20px; text-align: right;}\r\n.layui-form-label-col{display: block; float: none; padding: 9px 0; line-height: 20px; text-align: left;}\r\n.layui-form-item .layui-inline{margin-bottom: 5px; margin-right: 10px;}\r\n.layui-input-block, .layui-input-inline{position: relative;}\r\n.layui-input-block{margin-left: 110px; min-height: 36px;}\r\n.layui-input-inline{display: inline-block; vertical-align: middle;}\r\n.layui-form-item .layui-input-inline{float: left; width: 190px; margin-right: 10px;}\r\n.layui-form-text .layui-input-inline{width: auto;}\r\n\r\n/* 分割块 */\r\n.layui-form-mid{position: relative; float: left; display: block; padding: 9px 0 !important; line-height: 20px; margin-right: 10px;}\r\n\r\n/* 警告条 */\r\n.layui-form-danger:focus,\r\n.layui-form-danger+.layui-form-select .layui-input{border-color: #ff5722 !important; box-shadow: 0 0 0 3px rgba(255,87,34,0.08);}\r\n\r\n\r\n/* 输入框点缀 */\r\n.layui-input-prefix,\r\n.layui-input-suffix,\r\n.layui-input-split,\r\n.layui-input-suffix .layui-input-affix{position: absolute; right: 0; top: 0; padding: 0 10px; width: 35px; height: 100%; text-align: center; transition: all .3s; box-sizing: border-box;}\r\n.layui-input-prefix{left: 0; border-radius: 2px 0 0 2px;}\r\n.layui-input-suffix{right: 0; border-radius: 0 2px 2px 0;}\r\n.layui-input-split{border-width: 1px; border-style: solid;}\r\n.layui-input-prefix .layui-icon,\r\n.layui-input-suffix .layui-icon,\r\n.layui-input-split .layui-icon{position: relative; font-size: 16px; color: #5F5F5F; transition: all .3s;}\r\n\r\n/* 输入框前后置容器 */\r\n.layui-input-group{position: relative; display: table; box-sizing: border-box;}\r\n.layui-input-group>*{display: table-cell; vertical-align: middle; position: relative;}\r\n.layui-input-group .layui-input{padding-right: 15px;}\r\n.layui-input-group > .layui-input-prefix{width: auto; border-right: 0;}\r\n.layui-input-group > .layui-input-suffix{width: auto; border-left: 0;}\r\n.layui-input-group .layui-input-split{white-space: nowrap;}\r\n\r\n/* 输入框前后缀容器 */\r\n.layui-input-wrap{position: relative; line-height: 38px;}\r\n.layui-input-wrap .layui-input{padding-right: 35px;;}\r\n.layui-input-wrap .layui-input::-ms-clear,\r\n.layui-input-wrap .layui-input::-ms-reveal{display: none;}\r\n.layui-input-wrap .layui-input-prefix + .layui-input,\r\n.layui-input-wrap .layui-input-prefix ~ * .layui-input{padding-left: 35px;}\r\n.layui-input-wrap .layui-input-split + .layui-input,\r\n.layui-input-wrap .layui-input-split ~ * .layui-input{padding-left: 45px;}\r\n.layui-input-wrap .layui-input-prefix ~ .layui-form-select{position: static;}\r\n.layui-input-wrap .layui-input-prefix,\r\n.layui-input-wrap .layui-input-suffix,\r\n.layui-input-wrap .layui-input-split{pointer-events: none;}\r\n.layui-input-wrap .layui-input:hover + .layui-input-split{border-color: #d2d2d2;}\r\n.layui-input-wrap .layui-input:focus + .layui-input-split{border-color: #16b777;}\r\n.layui-input-wrap .layui-input.layui-form-danger:focus + .layui-input-split{border-color: #ff5722;}\r\n.layui-input-wrap .layui-input-prefix.layui-input-split{border-width: 0; border-right-width: 1px;}\r\n.layui-input-wrap .layui-input-suffix.layui-input-split{border-width: 0; border-left-width: 1px;}\r\n\r\n/* 输入框动态点缀 */\r\n.layui-input-affix{line-height: 38px;}\r\n.layui-input-suffix .layui-input-affix{right: auto; left: -35px;}\r\n.layui-input-affix .layui-icon{color: rgba(0,0,0,.8); pointer-events: auto!important; cursor: pointer;}\r\n.layui-input-affix .layui-icon-clear{color: rgba(0,0,0,.3);}\r\n.layui-input-affix .layui-icon:hover{color: rgba(0,0,0,.6);}\r\n\r\n/* 数字输入框动态点缀 */\r\n.layui-input-wrap .layui-input-number{width: 24px; padding: 0;}\r\n.layui-input-wrap .layui-input-number .layui-icon{position: absolute; right: 0; width: 100%; height: 50%; line-height: normal; font-size: 12px;}\r\n.layui-input-wrap .layui-input-number .layui-icon:before{position: absolute; left: 50%; top: 50%; margin-top: -6px; margin-left: -6px;}\r\n.layui-input-wrap .layui-input-number .layui-icon-up{top: 0; border-bottom: 1px solid #eee;}\r\n.layui-input-wrap .layui-input-number .layui-icon-down{bottom: 0;}\r\n.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight: 700;}\r\n.layui-input-wrap .layui-input[type=\"number\"]::-webkit-outer-spin-button,\r\n.layui-input-wrap .layui-input[type=\"number\"]::-webkit-inner-spin-button{-webkit-appearance: none !important;}\r\n.layui-input-wrap .layui-input[type=\"number\"]{-moz-appearance: textfield;}\r\n.layui-input-wrap .layui-input[type=\"number\"].layui-input-number-out-of-range{color:#ff5722;}\r\n\r\n\r\n\r\n/* 下拉选择 */\r\n.layui-form-select{position: relative; color: #5F5F5F;}\r\n.layui-form-select .layui-input{padding-right: 30px; cursor: pointer;}\r\n.layui-form-select .layui-edge{position: absolute; right: 10px; top: 50%; margin-top: -3px; cursor: pointer; border-width: 6px; border-top-color: #c2c2c2; border-top-style: solid; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-form-select dl{display: none; position: absolute; left: 0; top: 42px; padding: 5px 0; z-index: 899; min-width: 100%; border: 1px solid #eee; max-height: 300px; overflow-y: auto; background-color: #fff; border-radius: 2px; box-shadow: 1px 1px 4px rgb(0 0 0 / 8%); box-sizing: border-box;}\r\n.layui-form-select dl dt,\r\n.layui-form-select dl dd{padding: 0 10px; line-height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}\r\n.layui-form-select dl dt{font-size: 12px; color: #999;}\r\n.layui-form-select dl dd{cursor: pointer;}\r\n.layui-form-select dl dd:hover{background-color: #f8f8f8; -webkit-transition: .5s all; transition: .5s all;}\r\n.layui-form-select .layui-select-group dd{padding-left: 20px;}\r\n.layui-form-select dl dd.layui-select-tips{padding-left: 10px !important; color: #999;}\r\n.layui-form-select dl dd.layui-this{background-color: #f8f8f8; color: #16b777; font-weight: 700;}\r\n/*.layui-form-select dl dd.layui-this{background-color: #f8f8f8; color: #16b777; font-weight: 700;}*/\r\n.layui-form-select dl dd.layui-disabled{background-color: #fff;}\r\n.layui-form-selected dl{display: block;}\r\n.layui-form-selected .layui-edge{margin-top: -9px; -webkit-transform:rotate(180deg); transform: rotate(180deg);}\r\n.layui-form-selected .layui-edge{margin-top: -3px\\0; }\r\n:root .layui-form-selected .layui-edge{margin-top: -9px\\0/IE9;}\r\n.layui-form-selectup dl{top: auto; bottom: 42px;}\r\n.layui-select-none{margin: 5px 0; text-align: center; color: #999;}\r\n\r\n.layui-select-disabled .layui-disabled{border-color: #eee !important;}\r\n.layui-select-disabled .layui-edge{border-top-color: #d2d2d2}\r\n\r\n/* 复选框 */\r\n.layui-form-checkbox{position: relative; display: inline-block; vertical-align: middle; height: 30px; line-height: 30px; margin-right: 10px; padding-right: 30px; background-color: #fff; cursor: pointer; font-size: 0; -webkit-transition: .1s linear; transition: .1s linear; box-sizing: border-box;}\r\n.layui-form-checkbox:hover{}\r\n.layui-form-checkbox > *{display: inline-block; vertical-align: middle;}\r\n.layui-form-checkbox > div{padding: 0 11px; font-size: 14px; border-radius: 2px 0 0 2px; background-color: #d2d2d2; color: #fff; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}\r\n.layui-form-checkbox > div > .layui-icon{line-height: normal}\r\n.layui-form-checkbox:hover > div{background-color: #c2c2c2;}\r\n.layui-form-checkbox > i{position: absolute; right: 0; top: 0; width: 30px; height: 100%; border: 1px solid #d2d2d2; border-left: none; border-radius: 0 2px 2px 0; color: #fff; color: rgba(255,255,255,0); font-size: 20px; text-align: center; box-sizing: border-box;}\r\n.layui-form-checkbox:hover > i{border-color: #c2c2c2; color: #c2c2c2;}\r\n.layui-form-checked,\r\n.layui-form-checked:hover{border-color: #16b777;}\r\n.layui-form-checked > div,\r\n.layui-form-checked:hover > div{background-color: #16b777;}\r\n.layui-form-checked > i,\r\n.layui-form-checked:hover > i{color: #16b777;}\r\n.layui-form-item .layui-form-checkbox{margin-top: 4px;}\r\n.layui-form-checkbox.layui-checkbox-disabled > div{background-color: #eee !important;}\r\n.layui-form *[lay-checkbox]{display: none;}\r\n\r\n/* 复选框-默认风格 */\r\n.layui-form-checkbox[lay-skin=\"primary\"]{height: auto!important; line-height: normal!important; min-width: 18px; min-height: 18px; border: none!important; margin-right: 0; padding-left: 24px; padding-right: 0; background: none;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > div{margin-top: -1px; padding-left: 0; padding-right: 15px; line-height: 18px; background: none; color: #5F5F5F;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > i{right: auto; left: 0; width: 16px; height: 16px; line-height: 14px; border: 1px solid #d2d2d2; font-size: 12px; border-radius: 2px; background-color: #fff; -webkit-transition: .1s linear; transition: .1s linear;}\r\n.layui-form-checkbox[lay-skin=\"primary\"]:hover > i{border-color: #16b777; color: #fff;}\r\n.layui-form-checked[lay-skin=\"primary\"] > i{border-color: #16b777 !important; background-color: #16b777; color: #fff;}\r\n.layui-checkbox-disabled[lay-skin=\"primary\"] > div{background: none!important;}\r\n.layui-form-checked.layui-checkbox-disabled[lay-skin=\"primary\"] > i{background: #eee!important; border-color: #eee!important;}\r\n.layui-checkbox-disabled[lay-skin=\"primary\"]:hover > i{border-color: #d2d2d2;}\r\n.layui-form-item .layui-form-checkbox[lay-skin=\"primary\"]{margin-top: 10px;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > .layui-icon-indeterminate{border-color: #16b777;}\r\n.layui-form-checkbox[lay-skin=\"primary\"] > .layui-icon-indeterminate:before{content: ''; display: inline-block; vertical-align: middle; position: relative; width: 50%; height: 1px; margin: -1px auto 0; background-color: #16b777;}\r\n\r\n/* 复选框-开关风格 */\r\n.layui-form-switch{position: relative; display: inline-block; vertical-align: middle; height: 24px; line-height: 22px; min-width: 44px; padding: 0 5px; margin-top: 8px; border: 1px solid #d2d2d2; border-radius: 20px; cursor: pointer; box-sizing: border-box; background-color: #fff; -webkit-transition: .1s linear; transition: .1s linear;}\r\n.layui-form-switch > i{position: absolute; left: 5px; top: 3px; width: 16px; height: 16px; border-radius: 20px; background-color: #d2d2d2; -webkit-transition: .1s linear; transition: .1s linear;}\r\n.layui-form-switch > div{position: relative; top: 0; margin-left: 21px; padding: 0!important; text-align: center!important; color: #999!important; font-style: normal!important; font-size: 12px;}\r\n.layui-form-onswitch{border-color: #16b777; background-color: #16b777;}\r\n.layui-form-onswitch > i{left: 100%; margin-left: -21px; background-color: #fff;}\r\n.layui-form-onswitch > div{margin-left: 0; margin-right: 21px; color: #fff!important;}\r\n\r\n.layui-checkbox-disabled{border-color: #eee !important;}\r\n.layui-checkbox-disabled > div{color: #c2c2c2!important;}\r\n.layui-checkbox-disabled > i{border-color: #eee !important;}\r\n.layui-checkbox-disabled:hover > i{color: #fff !important;}\r\n\r\n/* 单选框 */\r\n.layui-form-radio{display: inline-block; vertical-align: middle; line-height: 28px; margin: 6px 10px 0 0; padding-right: 10px; cursor: pointer; font-size: 0;}\r\n.layui-form-radio > *{display: inline-block; vertical-align: middle; font-size: 14px;}\r\n.layui-form-radio > i{margin-right: 8px; font-size: 22px; color: #c2c2c2;}\r\n.layui-form-radioed,\r\n.layui-form-radioed > i,\r\n.layui-form-radio:hover > *{color: #16b777;}\r\n.layui-radio-disabled > i{color: #eee !important;}\r\n.layui-radio-disabled > *{color: #c2c2c2!important;}\r\n.layui-form *[lay-radio]{display: none;}\r\n\r\n/* 表单方框风格 */\r\n.layui-form-pane .layui-form-label{width: 110px; padding: 8px 15px; height: 38px; line-height: 20px; border-width: 1px; border-style: solid; border-radius: 2px 0 0 2px; text-align: center; background-color: #fafafa; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; box-sizing: border-box;}\r\n.layui-form-pane .layui-input-inline{margin-left: -1px;}\r\n.layui-form-pane .layui-input-block{margin-left: 110px; left: -1px;}\r\n.layui-form-pane .layui-input{border-radius: 0 2px 2px 0;}\r\n.layui-form-pane .layui-form-text .layui-form-label{float: none; width: 100%; border-radius: 2px; box-sizing: border-box; text-align: left;}\r\n.layui-form-pane .layui-form-text .layui-input-inline{display: block; margin: 0; top: -1px; clear: both;}\r\n.layui-form-pane .layui-form-text .layui-input-block{margin: 0; left: 0; top: -1px;}\r\n.layui-form-pane .layui-form-text .layui-textarea{min-height: 100px; border-radius: 0 0 2px 2px;}\r\n.layui-form-pane .layui-form-checkbox{margin: 4px 0 4px 10px;}\r\n.layui-form-pane .layui-form-switch,\r\n.layui-form-pane .layui-form-radio{margin-top: 6px; margin-left: 10px; }\r\n.layui-form-pane .layui-form-item[pane]{position: relative; border-width: 1px; border-style: solid;}\r\n.layui-form-pane .layui-form-item[pane] .layui-form-label{position: absolute; left: 0; top: 0; height: 100%; border-width: 0px; border-right-width: 1px;}\r\n.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left: 110px;}\r\n\r\n/** 表单响应式 **/\r\n@media screen and (max-width: 450px) {\r\n .layui-form-item .layui-form-label{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n .layui-form-item .layui-inline{display: block; margin-right: 0; margin-bottom: 20px; clear: both;}\r\n .layui-form-item .layui-inline:after{content:'\\20'; clear:both; display:block; height:0;}\r\n .layui-form-item .layui-input-inline{display: block; float: none; left: -3px; width: auto !important; margin: 0 0 10px 112px; }\r\n .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 110px; top: -5px; padding: 0;}\r\n .layui-form-item .layui-form-checkbox{margin-right: 5px; margin-bottom: 5px;}\r\n}\r\n\r\n/** 分页 **/\r\n.layui-laypage{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; margin: 10px 0; font-size: 0;}\r\n.layui-laypage>a:first-child,\r\n.layui-laypage>a:first-child em{border-radius: 2px 0 0 2px;}\r\n.layui-laypage>a:last-child,\r\n.layui-laypage>a:last-child em{border-radius: 0 2px 2px 0;}\r\n.layui-laypage>*:first-child{margin-left: 0!important;}\r\n.layui-laypage>*:last-child{margin-right: 0!important;}\r\n.layui-laypage a,\r\n.layui-laypage span,\r\n.layui-laypage input,\r\n.layui-laypage button,\r\n.layui-laypage select{border: 1px solid #eee;}\r\n.layui-laypage a,\r\n.layui-laypage span{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; padding: 0 15px; height: 28px; line-height: 28px; margin: 0 -1px 5px 0; background-color: #fff; color: #333; font-size: 12px;}\r\n.layui-laypage a[data-page]{color: #333;}\r\n.layui-laypage a{text-decoration: none !important; cursor: pointer;}\r\n.layui-laypage a:hover{color: #16baaa;}\r\n.layui-laypage em{font-style: normal;}\r\n.layui-laypage .layui-laypage-spr{color:#999; font-weight: 700;}\r\n.layui-laypage .layui-laypage-curr{position: relative;}\r\n.layui-laypage .layui-laypage-curr em{position: relative; color: #fff;}\r\n.layui-laypage .layui-laypage-curr .layui-laypage-em{position: absolute; left: -1px; top: -1px; padding: 1px; width: 100%; height: 100%; background-color: #16baaa; }\r\n.layui-laypage-em{border-radius: 2px;}\r\n.layui-laypage-prev em,\r\n.layui-laypage-next em{font-family: Sim sun; font-size: 16px;}\r\n\r\n.layui-laypage .layui-laypage-count,\r\n.layui-laypage .layui-laypage-limits,\r\n.layui-laypage .layui-laypage-refresh,\r\n.layui-laypage .layui-laypage-skip{margin-left: 10px; margin-right: 10px; padding: 0; border: none;}\r\n.layui-laypage .layui-laypage-limits,\r\n.layui-laypage .layui-laypage-refresh{vertical-align: top;}\r\n.layui-laypage .layui-laypage-refresh i{font-size: 18px; cursor: pointer;}\r\n.layui-laypage select{height: 22px; padding: 3px; border-radius: 2px; cursor: pointer;}\r\n.layui-laypage .layui-laypage-skip{height: 30px; line-height: 30px; color: #999;}\r\n.layui-laypage input, .layui-laypage button{height: 30px; line-height: 30px; border-radius: 2px; vertical-align: top; background-color: #fff; box-sizing: border-box;}\r\n.layui-laypage input{display: inline-block; width: 40px; margin: 0 10px; padding: 0 3px; text-align: center;}\r\n.layui-laypage input:focus,\r\n.layui-laypage select:focus{border-color: #16baaa!important;}\r\n.layui-laypage button{margin-left: 10px; padding: 0 10px; cursor: pointer;}\r\n\r\n/** 流加载 **/\r\n.layui-flow-more{margin: 10px 0; text-align: center; color: #999; font-size: 14px; clear: both;}\r\n.layui-flow-more a{ height: 32px; line-height: 32px; }\r\n.layui-flow-more a *{display: inline-block; vertical-align: top;}\r\n.layui-flow-more a cite{padding: 0 20px; border-radius: 3px; background-color: #eee; color: #333; font-style: normal;}\r\n.layui-flow-more a cite:hover{opacity: 0.8;}\r\n.layui-flow-more a i{font-size: 30px; color: #737383;}\r\n\r\n/** 表格 **/\r\n.layui-table{width: 100%; margin: 10px 0; background-color: #fff; color: #5F5F5F;}\r\n.layui-table tr{transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-table th{text-align: left; font-weight: 600;}\r\n\r\n.layui-table thead tr,\r\n.layui-table-header,\r\n.layui-table-tool,\r\n.layui-table-total,\r\n.layui-table-total tr,\r\n.layui-table-patch{}\r\n.layui-table-mend{background-color: #fff;}\r\n.layui-table-hover,\r\n.layui-table-click,\r\n.layui-table[lay-even] tbody tr:nth-child(even){background-color: #f8f8f8;}\r\n.layui-table-checked{background-color: #dbfbf0;}\r\n.layui-table-checked.layui-table-hover,\r\n.layui-table-checked.layui-table-click{background-color: #abf8dd;}\r\n\r\n\r\n.layui-table th,\r\n.layui-table td,\r\n.layui-table[lay-skin=\"line\"],\r\n.layui-table[lay-skin=\"row\"],\r\n.layui-table-view,\r\n.layui-table-tool,\r\n.layui-table-header,\r\n.layui-table-col-set,\r\n.layui-table-total,\r\n.layui-table-page,\r\n.layui-table-fixed-r,\r\n.layui-table-mend,\r\n.layui-table-tips-main,\r\n.layui-table-grid-down{border-width: 1px; border-style: solid; border-color: #eee;}\r\n\r\n.layui-table th, .layui-table td{position: relative; padding: 9px 15px; min-height: 20px; line-height: 20px; font-size: 14px;}\r\n\r\n.layui-table[lay-skin=\"line\"] th, .layui-table[lay-skin=\"line\"] td{border-width: 0; border-bottom-width: 1px;}\r\n.layui-table[lay-skin=\"row\"] th, .layui-table[lay-skin=\"row\"] td{border-width: 0;border-right-width: 1px;}\r\n.layui-table[lay-skin=\"nob\"] th, .layui-table[lay-skin=\"nob\"] td{border: none;}\r\n\r\n.layui-table img{max-width:100px;}\r\n\r\n/* 大表格 */\r\n.layui-table[lay-size=\"lg\"] th,\r\n.layui-table[lay-size=\"lg\"] td{padding-top: 15px; padding-right: 30px; padding-bottom: 15px; padding-left: 30px;}\r\n.layui-table-view .layui-table[lay-size=\"lg\"] .layui-table-cell{height: 50px; line-height: 40px;}\r\n\r\n/* 小表格 */\r\n.layui-table[lay-size=\"sm\"] th,\r\n.layui-table[lay-size=\"sm\"] td{padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; font-size: 12px;}\r\n.layui-table-view .layui-table[lay-size=\"sm\"] .layui-table-cell{height: 30px; line-height: 20px; padding-top: 5px; padding-left: 11px; padding-right: 11px;}\r\n\r\n/* 数据表格 */\r\n.layui-table[lay-data],\r\n.layui-table[lay-options]{display: none;}\r\n.layui-table-box{position: relative; overflow: hidden;}\r\n.layui-table-view{clear: both;}\r\n.layui-table-view .layui-table{position: relative; width: auto; margin: 0; border: 0; border-collapse: separate;}\r\n.layui-table-view .layui-table[lay-skin=\"line\"]{border-width: 0; border-right-width: 1px;}\r\n.layui-table-view .layui-table[lay-skin=\"row\"]{border-width: 0; border-bottom-width: 1px;}\r\n.layui-table-view .layui-table th,\r\n.layui-table-view .layui-table td{padding: 0; border-top: none; border-left: none;}\r\n.layui-table-view .layui-table th [lay-event],\r\n.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor: pointer;}\r\n.layui-table-view .layui-table th span,\r\n.layui-table-view .layui-table td{cursor: default;}\r\n.layui-table-view .layui-table td[data-edit]{cursor: text;}\r\n.layui-table-view .layui-table td[data-edit]:hover:after{position: absolute; left: 0; top: 0; width: 100%; height: 100%; box-sizing: border-box; border: 1px solid #16B777; pointer-events: none; content: \"\";}\r\n\r\n.layui-table-view .layui-form-checkbox[lay-skin=\"primary\"] i{width: 18px; height: 18px; line-height: 16px;}\r\n.layui-table-view .layui-form-radio{line-height: 0; padding: 0;}\r\n.layui-table-view .layui-form-radio>i{margin: 0; font-size: 20px;}\r\n.layui-table-init{position: absolute; left: 0; top: 0; width: 100%; height: 100%; text-align: center; z-index: 199;}\r\n.layui-table-init .layui-icon{position: absolute; left: 50%; top: 50%; margin: -15px 0 0 -15px; font-size: 30px; color: #c2c2c2;}\r\n.layui-table-header{border-width: 0; border-bottom-width: 1px; overflow: hidden;}\r\n.layui-table-header .layui-table{margin-bottom: -1px;}\r\n\r\n.layui-table-column{position: relative; width: 100%; min-height: 41px; padding: 8px 16px; border-width: 0; border-bottom-width: 1px;}\r\n.layui-table-column .layui-btn-container{margin-bottom: -8px;}\r\n.layui-table-column .layui-btn-container .layui-btn{margin-right: 8px; margin-bottom: 8px;}\r\n\r\n.layui-table-tool .layui-inline[lay-event]{position: relative; width: 26px; height: 26px; padding: 5px; line-height: 16px; margin-right: 10px; text-align: center; color: #333; border: 1px solid #ccc; cursor: pointer; -webkit-transition: .5s all; transition: .5s all;}\r\n.layui-table-tool .layui-inline[lay-event]:hover{border: 1px solid #999;}\r\n.layui-table-tool-temp{padding-right: 120px;}\r\n.layui-table-tool-self{position: absolute; right: 17px; top: 10px;}\r\n.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin: 0 0 0 10px;}\r\n.layui-table-tool-panel{position: absolute; top: 29px; left: -1px; z-index: 399; padding: 5px 0 !important; min-width: 150px; min-height: 40px; border: 1px solid #d2d2d2; text-align: left; overflow-y: auto; background-color: #fff; box-shadow: 0 2px 4px rgba(0,0,0,.12);}\r\n.layui-table-tool-panel li{padding: 0 10px; margin: 0 !important; line-height: 30px; list-style-type: none !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-transition: .5s all; transition: .5s all;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"]{width: 100%;}\r\n.layui-table-tool-panel li:hover{background-color: #f8f8f8;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"]{padding-left: 28px;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"] i{position: absolute; left: 0; top: 0;}\r\n.layui-table-tool-panel li .layui-form-checkbox[lay-skin=\"primary\"] span{padding: 0;}\r\n.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left: auto; right: -1px;}\r\n\r\n.layui-table-col-set{position: absolute; right: 0; top: 0; width: 20px; height: 100%; border-width: 0; border-left-width: 1px; background-color: #fff;}\r\n\r\n.layui-table-sort{width: 10px; height: 20px; margin-left: 5px; cursor: pointer!important;}\r\n.layui-table-sort .layui-edge{position: absolute; left: 5px; border-width: 5px;}\r\n.layui-table-sort .layui-table-sort-asc{top: 3px; border-top: none; border-bottom-style: solid; border-bottom-color: #b2b2b2;}\r\n.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color: #5F5F5F;}\r\n.layui-table-sort .layui-table-sort-desc{bottom: 5px; border-bottom: none; border-top-style: solid; border-top-color: #b2b2b2;}\r\n.layui-table-sort .layui-table-sort-desc:hover{border-top-color: #5F5F5F;}\r\n.layui-table-sort[lay-sort=\"asc\"] .layui-table-sort-asc{border-bottom-color: #000;}\r\n.layui-table-sort[lay-sort=\"desc\"] .layui-table-sort-desc{border-top-color: #000;}\r\n\r\n.layui-table-cell{height: 38px; line-height: 28px; padding: 6px 15px; position: relative; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box;}\r\n.layui-table-cell .layui-form-checkbox[lay-skin=\"primary\"]{top: -1px; padding: 0;}\r\n.layui-table-cell .layui-form-checkbox[lay-skin=\"primary\"] > div{padding-left: 24px;}\r\n.layui-table-cell .layui-table-link{color: #01AAED;}\r\n.layui-table-cell .layui-btn{vertical-align: inherit;}\r\n.layui-table-cell[align=\"center\"]{-webkit-box-pack: center;}\r\n.layui-table-cell[align=\"right\"]{-webkit-box-pack: end;}\r\n\r\n.laytable-cell-checkbox,\r\n.laytable-cell-radio,\r\n.laytable-cell-space,\r\n.laytable-cell-numbers{text-align: center; -webkit-box-pack: center;}\r\n\r\n.layui-table-body{position: relative; overflow: auto; margin-right: -1px; margin-bottom: -1px;}\r\n.layui-table-body .layui-none{line-height: 26px; padding: 30px 15px; text-align: center; color: #999;}\r\n.layui-table-fixed{position: absolute; left: 0; top: 0; z-index: 101;}\r\n.layui-table-fixed .layui-table-body{overflow: hidden;}\r\n.layui-table-fixed-l{box-shadow: 1px 0 8px rgba(0,0,0,.08);}\r\n.layui-table-fixed-r{left: auto; right: -1px; border-width: 0; border-left-width: 1px; box-shadow: -1px 0 8px rgba(0,0,0,.08);}\r\n.layui-table-fixed-r .layui-table-header{position: relative; overflow: visible;}\r\n.layui-table-mend{position: absolute; right: -49px; top: 0; height: 100%; width: 50px; border-width: 0; border-left-width: 1px;}\r\n\r\n.layui-table-tool{position: relative; width: 100%; min-height: 50px; line-height: 30px; padding: 10px 15px; border-width: 0; border-bottom-width: 1px; /*box-shadow: 0 1px 8px 0 rgb(0 0 0 / 8%);*/}\r\n.layui-table-tool .layui-btn-container{margin-bottom: -10px;}\r\n\r\n.layui-table-total{margin-bottom: -1px; border-width: 0; border-top-width: 1px; overflow: hidden;}\r\n\r\n\r\n.layui-table-page{border-width: 0; border-top-width: 1px; margin-bottom: -1px; white-space: nowrap; overflow: hidden;}\r\n.layui-table-page>div{height: 26px;}\r\n.layui-table-page .layui-laypage{margin: 0;}\r\n.layui-table-page .layui-laypage a,\r\n.layui-table-page .layui-laypage span{height: 26px; line-height: 26px; margin-bottom: 10px; border: none; background: none;}\r\n.layui-table-page .layui-laypage a,\r\n.layui-table-page .layui-laypage span.layui-laypage-curr{padding: 0 12px;}\r\n.layui-table-page .layui-laypage span{margin-left: 0; padding: 0;}\r\n.layui-table-page .layui-laypage .layui-laypage-prev{margin-left: -11px!important;}\r\n.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left: 0; top: 0; padding: 0;}\r\n.layui-table-page .layui-laypage input,\r\n.layui-table-page .layui-laypage button{height: 26px; line-height: 26px; }\r\n.layui-table-page .layui-laypage input{width: 40px;}\r\n.layui-table-page .layui-laypage button{padding: 0 10px;}\r\n.layui-table-page select{height: 18px;}\r\n.layui-table-pagebar{float: right; line-height: 23px;}\r\n.layui-table-pagebar .layui-btn-sm{margin-top: -1px;}\r\n.layui-table-pagebar .layui-btn-xs{margin-top: 2px;}\r\n\r\n.layui-table-view select[lay-ignore]{display: inline-block;}\r\n.layui-table-patch .layui-table-cell{padding: 0; width: 30px;}\r\n\r\n.layui-table-edit{position: absolute; left: 0; top: 0; z-index: 189; min-width: 100%; min-height: 100%; padding: 5px 14px; border-radius: 0; box-shadow: 1px 1px 20px rgba(0,0,0,.15); background-color: #fff;}\r\n.layui-table-edit:focus{border-color: #16b777!important;}\r\ninput.layui-input.layui-table-edit{height: 100%;}\r\nselect.layui-table-edit{padding: 0 0 0 10px; border-color: #d2d2d2;}\r\n.layui-table-view .layui-form-switch,\r\n.layui-table-view .layui-form-checkbox,\r\n.layui-table-view .layui-form-radio{top: 0; margin: 0;}\r\n.layui-table-view .layui-form-checkbox{top: -1px; height: 26px; line-height: 26px;}\r\n.layui-table-view .layui-form-checkbox i{height: 26px;}\r\n\r\n/* 展开溢出的单元格 */\r\n.layui-table-grid .layui-table-cell{overflow: visible;}\r\n.layui-table-grid-down{position: absolute; top: 0; right: 0; width: 24px; height: 100%; padding: 5px 0; border-width: 0; border-left-width: 1px; text-align: center; background-color: #fff; color: #999; cursor: pointer;}\r\n.layui-table-grid-down .layui-icon{position: absolute; top: 50%; left: 50%; margin: -8px 0 0 -8px; font-size: 14px;}\r\n.layui-table-grid-down:hover{background-color: #fbfbfb;}\r\n\r\n/* 单元格多行展开风格 */\r\n.layui-table-expanded{height: 95px;}\r\n.layui-table-expanded .layui-table-cell,\r\n.layui-table-view .layui-table[lay-size=\"sm\"] .layui-table-expanded .layui-table-cell,\r\n.layui-table-view .layui-table[lay-size=\"lg\"] .layui-table-expanded .layui-table-cell{height: auto; max-height: 94px; white-space: normal; text-overflow: clip;}\r\n.layui-table-cell-c{position: absolute; bottom: -10px; right: 50%; margin-right: -9px; width: 20px; height: 20px; line-height: 18px; cursor: pointer; text-align: center; background-color: #fff; border: 1px solid #eee; border-radius: 50%; z-index: 1000; transition: 0.3s all; font-size: 14px;}\r\n.layui-table-cell-c:hover{border-color: #16b777;}\r\n.layui-table-expanded td:hover .layui-table-cell{overflow: auto;}\r\n.layui-table-main > .layui-table > tbody > tr:last-child > td > .layui-table-cell-c{bottom: 0;}\r\n\r\n/* 单元格 TIPS 展开风格 */\r\nbody .layui-table-tips .layui-layer-content{background: none; padding: 0; box-shadow: 0 1px 6px rgba(0,0,0,.12);}\r\n.layui-table-tips-main{margin: -49px 0 0 -1px; max-height: 150px; padding: 8px 15px; font-size: 14px; overflow-y: scroll; background-color: #fff; color: #5F5F5F;}\r\n.layui-table-tips-c{position: absolute; right: -3px; top: -13px; width: 20px; height: 20px; padding: 3px; cursor: pointer; background-color: #5F5F5F; border-radius: 50%; color: #fff;}\r\n.layui-table-tips-c:hover{background-color: #777;}\r\n.layui-table-tips-c:before{position: relative; right: -2px;}\r\n\r\n\r\n/** 树表 **/\r\n.layui-table-tree-nodeIcon {max-width: 20px;}\r\n.layui-table-tree-nodeIcon > * {width: 100%;}\r\n.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon {margin-right: 2px;}\r\n.layui-table-tree-flexIcon {cursor: pointer;}\r\n\r\n /** 文件上传 **/\r\n.layui-upload-file{display: none!important; opacity: .01; filter: Alpha(opacity=1);}\r\n.layui-upload-list{margin: 11px 0;}\r\n.layui-upload-choose{max-width: 200px; padding: 0 10px; color: #999; font-size: 14px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.layui-upload-drag{position: relative; display: inline-block; padding: 30px; border: 1px dashed #e2e2e2; background-color: #fff; text-align: center; cursor: pointer; color: #999;}\r\n.layui-upload-drag .layui-icon{font-size: 50px; color: #16baaa;}\r\n.layui-upload-drag[lay-over]{border-color: #16baaa}\r\n.layui-upload-form{display: inline-block;}\r\n.layui-upload-iframe{position: absolute; width: 0; height: 0; border: 0; visibility: hidden}\r\n.layui-upload-wrap{position: relative; display: inline-block; vertical-align: middle;}\r\n.layui-upload-wrap .layui-upload-file{display: block!important; position: absolute; left: 0; top: 0; z-index: 10; font-size: 100px; width: 100%; height: 100%; opacity: .01; filter: Alpha(opacity=1); cursor: pointer;}\r\n.layui-btn-container .layui-upload-choose{padding-left: 0;}\r\n\r\n\r\n/* 基础菜单元素 */\r\n.layui-menu{position: relative; margin: 5px 0; background-color: #fff; box-sizing: border-box;}\r\n.layui-menu *{box-sizing: border-box;}\r\n.layui-menu li,\r\n.layui-menu-body-title,\r\n.layui-menu-body-title a{padding: 5px 15px; color: initial}\r\n.layui-menu li{position: relative; margin: 0 0 1px; line-height: 26px; color: rgba(0,0,0,.8); font-size: 14px; white-space: nowrap; cursor: pointer; transition: all .3s;}\r\n.layui-menu li:hover{background-color: #f8f8f8; }\r\n.layui-menu li.layui-disabled,\r\n.layui-menu li.layui-disabled *{background: none !important; color: #d2d2d2 !important; cursor: not-allowed !important;}\r\n\r\n.layui-menu-item-parent:hover>.layui-menu-body-panel{display: block; animation-name: layui-fadein; animation-duration: 0.3s; animation-fill-mode: both; animation-delay:.2s;}\r\n.layui-menu-item-parent>.layui-menu-body-title,\r\n.layui-menu-item-group>.layui-menu-body-title{padding-right: 38px;}\r\n\r\n.layui-menu .layui-menu-item-group:hover,\r\n.layui-menu .layui-menu-item-none:hover,\r\n.layui-menu .layui-menu-item-divider:hover{background: none; cursor: default;}\r\n.layui-menu .layui-menu-item-group>ul{margin: 5px 0 -5px;}\r\n.layui-menu .layui-menu-item-group>.layui-menu-body-title{color: rgba(0,0,0,.35); user-select: none;}\r\n.layui-menu .layui-menu-item-none{color: rgba(0,0,0,.35); cursor: default;}\r\n\r\n.layui-menu .layui-menu-item-none{text-align: center;}\r\n.layui-menu .layui-menu-item-divider{margin: 5px 0; padding: 0; height: 0; line-height: 0; border-bottom: 1px solid #eee; overflow: hidden;}\r\n\r\n.layui-menu .layui-menu-item-up:hover,\r\n.layui-menu .layui-menu-item-down:hover{cursor: pointer;}\r\n.layui-menu .layui-menu-item-up>.layui-menu-body-title{ color: rgba(0,0,0,.8);}\r\n.layui-menu .layui-menu-item-up>ul{visibility: hidden; height: 0; overflow: hidden;}\r\n.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform: rotate(180deg);}\r\n.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform: rotate(-180deg);}\r\n.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon,\r\n.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon{color: rgba(0,0,0,1);}\r\n.layui-menu .layui-menu-item-down>ul{visibility: visible; height: auto;}\r\n\r\n.layui-menu .layui-menu-item-checked,\r\n.layui-menu .layui-menu-item-checked2{background-color: #f8f8f8!important; color: #16b777;}\r\n.layui-menu .layui-menu-item-checked a,\r\n.layui-menu .layui-menu-item-checked2 a{color: #16b777;}\r\n.layui-menu .layui-menu-item-checked:after{position: absolute; right: -1px; top: 0; bottom: 0; border-right: 3px solid #16b777; content: \"\";}\r\n\r\n.layui-menu-body-title{position: relative; margin: -5px -15px; overflow: hidden; text-overflow: ellipsis;}\r\n.layui-menu-body-title a{display: block; margin: -5px -15px; color: rgba(0,0,0,.8);}\r\n.layui-menu-body-title a:hover{transition: all .3s;}\r\n.layui-menu-body-title>.layui-icon{position: absolute; right: 15px; top: 50%; margin-top: -6px; line-height: normal; font-size: 14px; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-menu-body-title>.layui-icon:hover{transition: all .3s;}\r\n.layui-menu-body-title>.layui-icon-right{right: 14px;}\r\n.layui-menu-body-panel{display: none; position: absolute; top: -7px; left: 100%; z-index: 1000; margin-left: 13px; padding: 5px 0;}\r\n.layui-menu-body-panel:before{content: \"\"; position: absolute; width: 20px; left: -16px; top: 0; bottom: 0;}\r\n.layui-menu-body-panel-left{left: auto; right: 100%; margin: 0 13px 0;}\r\n.layui-menu-body-panel-left:before{left: auto; right: -16px;}\r\n\r\n.layui-menu-lg li{line-height: 32px;}\r\n.layui-menu-lg li:hover,\r\n.layui-menu-lg .layui-menu-body-title a:hover{background: none; color: #16b777;}\r\n.layui-menu-lg li .layui-menu-body-panel{margin-left: 14px}\r\n.layui-menu-lg li .layui-menu-body-panel-left{margin: 0 15px 0;}\r\n\r\n\r\n/* 下拉菜单 */\r\n.layui-dropdown{position: absolute; left: -999999px; top: -999999px; z-index: 77777777; margin: 5px 0; min-width: 100px;}\r\n.layui-dropdown:before{content:\"\"; position: absolute; width: 100%; height: 6px; left: 0; top: -6px;}\r\n.layui-dropdown-shade{top: 0; left: 0; width: 100%; height: 100%; _height: expression(document.body.offsetHeight+\"px\"); position: fixed; _position: absolute; pointer-events: auto;}\r\n\r\n/** 导航菜单 **/\r\n.layui-nav{position: relative; padding: 0 15px; background-color: #2f363c; color: #fff; border-radius: 2px; font-size: 0; box-sizing: border-box;}\r\n.layui-nav *{font-size: 14px;}\r\n.layui-nav .layui-nav-item{position: relative; display: inline-block; *display: inline; *zoom: 1; margin-top: 0; list-style: none; vertical-align: middle; line-height: 60px;}\r\n.layui-nav .layui-nav-item a{display: block; padding: 0 20px; color: #fff; color: rgba(255,255,255,.7); transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-nav-bar,\r\n.layui-nav .layui-this:after{content: \"\"; position: absolute; left: 0; top: 0; width: 0; height: 3px; background-color: #16b777; transition: all .2s; -webkit-transition: all .2s; pointer-events: none;}\r\n.layui-nav-bar{z-index: 1000;}\r\n.layui-nav[lay-bar=\"disabled\"] .layui-nav-bar{display: none;}\r\n.layui-nav[lay-bar=\"disabled\"].layui-this:after{}\r\n.layui-nav .layui-this a,\r\n.layui-nav .layui-nav-item a:hover{color: #fff; text-decoration: none;}\r\n.layui-nav .layui-this:after{top: auto; bottom: 0; width: 100%;}\r\n.layui-nav-img{width: 30px; height: 30px; margin-right: 10px; border-radius: 50%;}\r\n\r\n.layui-nav .layui-nav-more{position: absolute; top: 0; right: 3px; left: auto !important; margin-top: 0; font-size: 12px; cursor: pointer; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-nav .layui-nav-mored,\r\n.layui-nav-itemed > a .layui-nav-more{transform: rotate(180deg);}\r\n\r\n\r\n.layui-nav-child{display: none; position: absolute; left: 0; top: 65px; min-width: 100%; line-height: 36px; padding: 5px 0; box-shadow: 0 2px 4px rgba(0,0,0,.12); border: 1px solid #eee; background-color: #fff; z-index: 100; border-radius: 2px; white-space: nowrap; box-sizing: border-box;}\r\n.layui-nav .layui-nav-child a{color: #5F5F5F; color: rgba(0,0,0,.8);}\r\n.layui-nav .layui-nav-child a:hover{background-color: #f8f8f8; color: rgba(0,0,0,.8);}\r\n.layui-nav-child dd{margin: 1px 0; position: relative;}\r\n.layui-nav-child dd.layui-this{background-color: #f8f8f8; color: #000;}\r\n.layui-nav-child dd.layui-this:after{display: none;}\r\n.layui-nav-child-r{left: auto; right: 0;}\r\n.layui-nav-child-c{text-align: center;}\r\n\r\n/* 垂直导航菜单 */\r\n.layui-nav.layui-nav-tree{width: 200px; padding: 0;}\r\n.layui-nav-tree .layui-nav-item{display: block; width: 100%; line-height: 40px;}\r\n.layui-nav-tree .layui-nav-item a{position: relative; height: 40px; line-height: 40px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.layui-nav-tree .layui-nav-item>a{padding-top: 5px; padding-bottom: 5px;}\r\n.layui-nav-tree .layui-nav-more{right: 15px;}\r\n.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding: 5px 0;}\r\n.layui-nav-tree .layui-nav-bar{width: 5px; height: 0;}\r\n.layui-side .layui-nav-tree .layui-nav-bar{width: 2px;}\r\n.layui-nav-tree .layui-this,\r\n.layui-nav-tree .layui-this>a,\r\n.layui-nav-tree .layui-this>a:hover,\r\n.layui-nav-tree .layui-nav-child dd.layui-this,\r\n.layui-nav-tree .layui-nav-child dd.layui-this a{background-color: #16baaa; color: #fff;}\r\n.layui-nav-tree .layui-this:after{display: none;}\r\n.layui-nav-tree .layui-nav-title a,\r\n.layui-nav-tree .layui-nav-title a:hover,\r\n.layui-nav-itemed>a{color: #fff !important;}\r\n.layui-nav-tree .layui-nav-bar{background-color: #16baaa;}\r\n\r\n.layui-nav-tree .layui-nav-child{position: relative; z-index: 0; top: 0; border: none; background: none; background-color: rgba(0,0,0,.3); box-shadow: none;}\r\n.layui-nav-tree .layui-nav-child dd{margin: 0;}\r\n.layui-nav-tree .layui-nav-child a{color: #fff; color: rgba(255,255,255,.7);}\r\n.layui-nav-tree .layui-nav-child a:hover{background: none; color: #fff;}\r\n\r\n/* 垂直导航 - 展开状态 */\r\n.layui-nav-itemed>.layui-nav-child,\r\n.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display: block;}\r\n\r\n/* 垂直导航 - 侧边 */\r\n.layui-nav-side{position: fixed; top: 0; bottom: 0; left: 0; overflow-x: hidden; z-index: 999;}\r\n\r\n/* 导航浅色背景 */\r\n.layui-nav.layui-bg-gray .layui-nav-item a,\r\n.layui-nav-tree.layui-bg-gray a{color: #373737; color: rgba(0,0,0,.8);}\r\n.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color: #000 !important;}\r\n.layui-nav.layui-bg-gray .layui-this a{color: #16b777;}\r\n.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left: 11px; background: none;}\r\n.layui-nav-tree.layui-bg-gray .layui-this,\r\n.layui-nav-tree.layui-bg-gray .layui-this>a,\r\n.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,\r\n.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a{background: none!important; color: #16b777!important; font-weight: 700;}\r\n.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color: #16b777;}\r\n\r\n\r\n/** 面包屑 **/\r\n.layui-breadcrumb{visibility: hidden; font-size: 0;}\r\n.layui-breadcrumb>*{font-size: 14px;}\r\n.layui-breadcrumb a{color: #999 !important;}\r\n.layui-breadcrumb a:hover{color: #16b777 !important;}\r\n.layui-breadcrumb a cite{color: #5F5F5F; font-style: normal;}\r\n.layui-breadcrumb span[lay-separator]{margin: 0 10px; color: #999;}\r\n\r\n/** Tab 选项卡 **/\r\n.layui-tab{margin: 10px 0; text-align: left !important;}\r\n.layui-tab[overflow]>.layui-tab-title{overflow: hidden;}\r\n.layui-tab .layui-tab-title{position: relative; left: 0; height: 40px; white-space: nowrap; font-size: 0; border-bottom-width: 1px; border-bottom-style: solid; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab .layui-tab-title li{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; font-size: 14px; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab .layui-tab-title li{position: relative; line-height: 40px; min-width: 65px; margin: 0; padding: 0 15px; text-align: center; cursor: pointer;}\r\n.layui-tab .layui-tab-title li a{display: block; padding: 0 15px; margin: 0 -15px;}\r\n.layui-tab-title .layui-this{color: #000;}\r\n\r\n.layui-tab-title .layui-this:after{position: absolute; left:0; top: 0; content: \"\"; width:100%; height: 41px; border-width: 1px; border-style: solid; border-bottom-color: #fff; border-radius: 2px 2px 0 0; box-sizing: border-box; pointer-events: none;}\r\n.layui-tab-bar{position: absolute; right: 0; top: 0; z-index: 10; width: 30px; height: 39px; line-height: 39px; border-width: 1px; border-style: solid; border-radius: 2px; text-align: center; background-color: #fff; cursor: pointer;}\r\n.layui-tab-bar .layui-icon{position: relative; display: inline-block; top: 3px; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-tab-item{display: none;}\r\n.layui-tab-more{padding-right: 30px; height: auto !important; white-space: normal !important;}\r\n.layui-tab-more li.layui-this:after{border-bottom-color: #eee; border-radius: 2px;}\r\n.layui-tab-more .layui-tab-bar .layui-icon{top: -2px; top: 3px\\0; -webkit-transform: rotate(180deg); transform: rotate(180deg);}\r\n:root .layui-tab-more .layui-tab-bar .layui-icon{top: -2px\\0/IE9;}\r\n\r\n.layui-tab-content{padding: 15px 0;}\r\n\r\n/* Tab 关闭 */.layui-tab-title li .layui-tab-close{position: relative; display: inline-block; width: 18px; height: 18px; line-height: 20px; margin-left: 8px; top: 1px; text-align: center; font-size: 14px; color: #c2c2c2; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab-title li .layui-tab-close:hover{border-radius: 2px; background-color: #ff5722; color: #fff;}\r\n\r\n/* Tab 简洁风格 */.layui-tab-brief > .layui-tab-title .layui-this{color: #16baaa;}\r\n.layui-tab-brief > .layui-tab-title .layui-this:after\r\n,.layui-tab-brief > .layui-tab-more li.layui-this:after{border: none; border-radius: 0; border-bottom: 2px solid #16b777;}\r\n.layui-tab-brief[overflow] > .layui-tab-title .layui-this:after{top: -1px;}\r\n\r\n/* Tab 卡片风格 */.layui-tab-card{border-width: 1px; border-style: solid; border-radius: 2px; box-shadow: 0 2px 5px 0 rgba(0,0,0,.1);}\r\n.layui-tab-card > .layui-tab-title{background-color: #fafafa;}\r\n.layui-tab-card > .layui-tab-title li{margin-right: -1px; margin-left: -1px;}\r\n.layui-tab-card > .layui-tab-title .layui-this{background-color: #fff; }\r\n.layui-tab-card > .layui-tab-title .layui-this:after{border-top: none; border-width: 1px; border-bottom-color: #fff;}\r\n.layui-tab-card > .layui-tab-title .layui-tab-bar{height: 40px; line-height: 40px; border-radius: 0; border-top: none; border-right: none;}\r\n.layui-tab-card > .layui-tab-more .layui-this{background: none; color: #16b777;}\r\n.layui-tab-card > .layui-tab-more .layui-this:after{border: none;}\r\n\r\n/* 时间线 */\r\n.layui-timeline{padding-left: 5px;}\r\n.layui-timeline-item{position: relative; padding-bottom: 20px;}\r\n.layui-timeline-axis{position: absolute; left: -5px; top: 0; z-index: 10; width: 20px; height: 20px; line-height: 20px; background-color: #fff; color: #16b777; border-radius: 50%; text-align: center; cursor: pointer;}\r\n.layui-timeline-axis:hover{color: #ff5722;}\r\n.layui-timeline-item:before{content: \"\"; position: absolute; left: 5px; top: 0; z-index: 0; width: 1px; height: 100%;}\r\n\r\n.layui-timeline-item:first-child:before{display: block;}\r\n.layui-timeline-item:last-child:before{display: none;}\r\n.layui-timeline-content{padding-left: 25px;;}\r\n.layui-timeline-title{position: relative; margin-bottom: 10px; line-height: 22px;}\r\n\r\n/* 小徽章 */\r\n.layui-badge,\r\n.layui-badge-dot,\r\n.layui-badge-rim{position:relative; display: inline-block; padding: 0 6px; font-size: 12px; text-align: center; background-color: #ff5722; color: #fff; border-radius: 2px;}\r\n.layui-badge{height: 18px; line-height: 18px;}\r\n.layui-badge-dot{width: 8px; height: 8px; padding: 0; border-radius: 50%;}\r\n.layui-badge-rim{height: 18px; line-height: 18px; border-width: 1px; border-style: solid; background-color: #fff; color: #5F5F5F;}\r\n\r\n.layui-btn .layui-badge,\r\n.layui-btn .layui-badge-dot{margin-left: 5px;}\r\n.layui-nav .layui-badge,\r\n.layui-nav .layui-badge-dot{position: absolute; top: 50%; margin: -5px 6px 0;}\r\n.layui-nav .layui-badge{margin-top: -10px;}\r\n.layui-tab-title .layui-badge,\r\n.layui-tab-title .layui-badge-dot{left: 5px; top: -2px;}\r\n\r\n/* carousel 轮播 */\r\n.layui-carousel{position: relative; left: 0; top: 0; background-color: #f8f8f8;}\r\n.layui-carousel>*[carousel-item]{position: relative; width: 100%; height: 100%; overflow: hidden;}\r\n.layui-carousel>*[carousel-item]:before{position: absolute; content: '\\e63d'; left: 50%; top: 50%; width: 100px; line-height: 20px; margin: -10px 0 0 -50px; text-align: center; color: #c2c2c2; font-family:\"layui-icon\" !important; font-size: 30px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}\r\n.layui-carousel>*[carousel-item] > *{display: none; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: #f8f8f8; transition-duration: .3s; -webkit-transition-duration: .3s;}\r\n.layui-carousel-updown > *{-webkit-transition: .3s ease-in-out up; transition: .3s ease-in-out up;}\r\n.layui-carousel-arrow{display: none\\0; opacity: 0; position: absolute; left: 10px; top: 50%; margin-top: -18px; width: 36px; height: 36px; line-height: 36px; text-align: center; font-size: 20px; border: none 0; border-radius: 50%; background-color: rgba(0,0,0,.2); color: #fff; -webkit-transition-duration: .3s; transition-duration: .3s; cursor: pointer;}\r\n.layui-carousel-arrow[lay-type=\"add\"]{left: auto!important; right: 10px;}\r\n.layui-carousel[lay-arrow=\"always\"] .layui-carousel-arrow{opacity: 1; left: 20px;}\r\n.layui-carousel[lay-arrow=\"always\"] .layui-carousel-arrow[lay-type=\"add\"]{right: 20px;}\r\n.layui-carousel[lay-arrow=\"none\"] .layui-carousel-arrow{display: none;}\r\n.layui-carousel-arrow:hover,\r\n.layui-carousel-ind ul:hover{background-color: rgba(0,0,0,.35);}\r\n.layui-carousel:hover .layui-carousel-arrow{display: block\\0; opacity: 1; left: 20px;}\r\n.layui-carousel:hover .layui-carousel-arrow[lay-type=\"add\"]{right: 20px;}\r\n.layui-carousel-ind{position: relative; top: -35px; width: 100%; line-height: 0!important; text-align: center; font-size: 0;}\r\n.layui-carousel[lay-indicator=\"outside\"]{margin-bottom: 30px;}\r\n.layui-carousel[lay-indicator=\"outside\"] .layui-carousel-ind{top: 10px;}\r\n.layui-carousel[lay-indicator=\"outside\"] .layui-carousel-ind ul{background-color: rgba(0,0,0,.5);}\r\n.layui-carousel[lay-indicator=\"none\"] .layui-carousel-ind{display: none;}\r\n.layui-carousel-ind ul{display: inline-block; padding: 5px; background-color: rgba(0,0,0,.2); border-radius: 10px; -webkit-transition-duration: .3s; transition-duration: .3s;}\r\n.layui-carousel-ind ul li{display: inline-block; width: 10px; height: 10px; margin: 0 3px; font-size: 14px; background-color: #eee; background-color: rgba(255,255,255,.5); border-radius: 50%; cursor: pointer; -webkit-transition-duration: .3s; transition-duration: .3s;}\r\n.layui-carousel-ind ul li:hover{background-color: rgba(255,255,255,.7);}\r\n.layui-carousel-ind ul li.layui-this{background-color: #fff;}\r\n.layui-carousel>*[carousel-item]>.layui-this,\r\n.layui-carousel>*[carousel-item]>.layui-carousel-prev,\r\n.layui-carousel>*[carousel-item]>.layui-carousel-next{display: block}\r\n.layui-carousel>*[carousel-item]>.layui-this{left: 0;}\r\n.layui-carousel>*[carousel-item]>.layui-carousel-prev{left: -100%;}\r\n.layui-carousel>*[carousel-item]>.layui-carousel-next{left: 100%;}\r\n.layui-carousel>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,\r\n.layui-carousel>*[carousel-item]>.layui-carousel-next.layui-carousel-left{left: 0;}\r\n.layui-carousel>*[carousel-item]>.layui-this.layui-carousel-left{left: -100%;}\r\n.layui-carousel>*[carousel-item]>.layui-this.layui-carousel-right{left: 100%;}\r\n\r\n/* 上下切换 */.layui-carousel[lay-anim=\"updown\"] .layui-carousel-arrow{left: 50%!important; top: 20px; margin: 0 0 0 -18px;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-arrow[lay-type=\"add\"]{top: auto!important; bottom: 20px;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-ind{position: absolute; top: 50%; right: 20px; width: auto; height: auto;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-ind ul{padding: 3px 5px;}\r\n.layui-carousel[lay-anim=\"updown\"] .layui-carousel-ind li{display: block; margin: 6px 0;}\r\n\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>*{left: 0!important;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-this{top: 0;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-prev{top: -100%;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-next{top: 100%;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-carousel-next.layui-carousel-left{top: 0;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-this.layui-carousel-left{top: -100%;}\r\n.layui-carousel[lay-anim=\"updown\"]>*[carousel-item]>.layui-this.layui-carousel-right{top: 100%;}\r\n\r\n/* 渐显切换 */.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>*{left: 0!important;}\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-prev,\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-next{opacity: 0;}\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-carousel-next.layui-carousel-left{opacity: 1;}\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-this.layui-carousel-left,\r\n.layui-carousel[lay-anim=\"fade\"]>*[carousel-item]>.layui-this.layui-carousel-right{opacity: 0}\r\n\r\n/** fixbar **/\r\n.layui-fixbar{position: fixed; right: 16px; bottom: 16px; z-index: 999999;}\r\n.layui-fixbar li{width: 50px; height: 50px; line-height: 50px; margin-bottom: 1px; text-align:center; cursor: pointer; font-size:30px; background-color: #9F9F9F; color:#fff; border-radius: 2px; opacity: 0.95;}\r\n.layui-fixbar li:hover{opacity: 0.85;}\r\n.layui-fixbar li:active{opacity: 1;}\r\n.layui-fixbar .layui-fixbar-top{display: none; font-size: 40px;}\r\n\r\n/** 表情面板 **/\r\nbody .layui-util-face{border: none; background: none;}\r\nbody .layui-util-face .layui-layer-content{padding:0; background-color:#fff; color:#5F5F5F; box-shadow:none}\r\n.layui-util-face .layui-layer-TipsG{display:none;}\r\n.layui-util-face ul{position:relative; width:372px; padding:10px; border:1px solid #D9D9D9; background-color:#fff; box-shadow: 0 0 20px rgba(0,0,0,.2);}\r\n.layui-util-face ul li{cursor: pointer; float: left; border: 1px solid #e8e8e8; height: 22px; width: 26px; overflow: hidden; margin: -1px 0 0 -1px; padding: 4px 2px; text-align: center;}\r\n.layui-util-face ul li:hover{position: relative; z-index: 2; border: 1px solid #eb7350; background: #fff9ec;}\r\n\r\n/** 代码文本修饰 **/\r\n.layui-code{display: block; position: relative; padding: 15px; line-height: 20px; border: 1px solid #eee; border-left-width: 6px; background-color: #fff; color: #333; font-family: \"Courier New\",Consolas,\"Lucida Console\"; font-size: 12px;}\r\n\r\n/** 穿梭框 **/\r\n.layui-transfer-box,\r\n.layui-transfer-header,\r\n.layui-transfer-search{border-width: 0; border-style: solid; border-color: #eee}\r\n.layui-transfer-box{position: relative; display: inline-block; vertical-align: middle; border-width: 1px; width: 200px; height: 360px; border-radius: 2px; background-color:#fff;}\r\n.layui-transfer-box .layui-form-checkbox{width: 100%; margin: 0 !important;}\r\n.layui-transfer-header{height: 38px; line-height: 38px; padding: 0 11px; border-bottom-width: 1px;}\r\n.layui-transfer-search{position:relative; padding: 11px; border-bottom-width: 1px;}\r\n.layui-transfer-search .layui-input{height: 32px; padding-left: 30px; font-size: 12px;}\r\n.layui-transfer-search .layui-icon-search{position: absolute; left: 20px; top: 50%; line-height: normal; margin-top: -8px; color: #5F5F5F;}\r\n.layui-transfer-active{margin: 0 15px; display: inline-block; vertical-align: middle;}\r\n.layui-transfer-active .layui-btn{display: block; margin: 0; padding: 0 15px; background-color: #16b777; border-color: #16b777; color: #fff;}\r\n.layui-transfer-active .layui-btn-disabled{background-color: #FBFBFB; border-color: #eee; color: #d2d2d2;}\r\n.layui-transfer-active .layui-btn:first-child{margin-bottom: 15px;}\r\n.layui-transfer-active .layui-btn .layui-icon{margin: 0; font-size: 14px !important;}\r\n.layui-transfer-data{padding: 5px 0; overflow: auto;}\r\n.layui-transfer-data li{height: 32px; line-height: 32px; margin-top: 0 !important; padding: 0 11px;list-style-type: none !important;}\r\n.layui-transfer-data li:hover{background-color: #f8f8f8; transition: .5s all;}\r\n.layui-transfer-data .layui-none{padding: 15px 11px; text-align: center; color: #999;}\r\n\r\n/** 评分组件 **/\r\n.layui-rate,\r\n.layui-rate *{display: inline-block; vertical-align: middle;}\r\n.layui-rate{padding: 11px 6px 11px 0; font-size: 0;}\r\n.layui-rate li{margin-top: 0 !important;}\r\n.layui-rate li i.layui-icon{ font-size: 20px; color: #ffb800;}\r\n.layui-rate li i.layui-icon{margin-right: 5px; transition: all .3s; -webkit-transition: all .3s;}\r\n.layui-rate li i:hover,\r\n.layui-rate-hover{cursor: pointer; transform: scale(1.12); -webkit-transform: scale(1.12);}\r\n.layui-rate[readonly] li i:hover{cursor: default; transform: scale(1);}\r\n\r\n/** 颜色选择器 **/\r\n.layui-colorpicker{width: 38px; height: 38px; border: 1px solid #eee; padding: 5px; border-radius: 2px; line-height: 24px; display: inline-block; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box;}\r\n.layui-colorpicker:hover{border-color: #d2d2d2;}\r\n.layui-colorpicker.layui-colorpicker-lg{width: 44px; height: 44px; line-height: 30px;}\r\n.layui-colorpicker.layui-colorpicker-sm{width: 30px; height: 30px; line-height: 20px; padding: 3px;}\r\n.layui-colorpicker.layui-colorpicker-xs{width: 22px; height: 22px; line-height: 16px; padding: 1px;}\r\n\r\n.layui-colorpicker-trigger-bgcolor{display: block; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); border-radius: 2px;}\r\n.layui-colorpicker-trigger-span{display: block; height: 100%; box-sizing: border-box; border: 1px solid rgba(0,0,0,.15); border-radius: 2px; text-align: center;}\r\n.layui-colorpicker-trigger-i{display: inline-block; color: #FFF; font-size: 12px;}\r\n.layui-colorpicker-trigger-i.layui-icon-close{color: #999;}\r\n\r\n.layui-colorpicker-main{position: absolute; left: -999999px; top: -999999px; z-index: 77777777; width: 280px; margin: 5px 0; padding: 7px; background: #FFF; border: 1px solid #d2d2d2; border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.12);}\r\n.layui-colorpicker-main-wrapper{height: 180px; position: relative;}\r\n.layui-colorpicker-basis{width: 260px; height: 100%; position: relative;}\r\n.layui-colorpicker-basis-white{width: 100%; height: 100%; position: absolute; top: 0; left: 0; background: linear-gradient(90deg, #FFF, hsla(0,0%,100%,0));}\r\n.layui-colorpicker-basis-black{width: 100%; height: 100%; position: absolute; top: 0; left: 0; background: linear-gradient(0deg, #000, transparent);}\r\n.layui-colorpicker-basis-cursor{width: 10px; height: 10px; border: 1px solid #FFF; border-radius: 50%; position: absolute; top: -3px; right: -3px; cursor: pointer;}\r\n.layui-colorpicker-side{position: absolute; top: 0; right: 0; width: 12px; height: 100%; background: linear-gradient(#F00, #FF0, #0F0, #0FF, #00F, #F0F, #F00);}\r\n.layui-colorpicker-side-slider{width: 100%; height: 5px; box-shadow: 0 0 1px #888888; box-sizing: border-box; background: #FFF; border-radius: 1px; border: 1px solid #f0f0f0; cursor: pointer; position: absolute; left: 0;}\r\n.layui-colorpicker-main-alpha{display: none; height: 12px; margin-top: 7px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}\r\n.layui-colorpicker-alpha-bgcolor{height: 100%; position: relative;}\r\n.layui-colorpicker-alpha-slider{width: 5px; height: 100%; box-shadow: 0 0 1px #888888; box-sizing: border-box; background: #FFF; border-radius: 1px; border: 1px solid #f0f0f0; cursor: pointer; position: absolute; top: 0;}\r\n.layui-colorpicker-main-pre{padding-top: 7px; font-size: 0;}\r\n.layui-colorpicker-pre{width: 20px; height: 20px; border-radius: 2px; display: inline-block; margin-left: 6px; margin-bottom: 7px; cursor: pointer;}\r\n.layui-colorpicker-pre:nth-child(11n+1){margin-left: 0;}\r\n.layui-colorpicker-pre-isalpha{background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}\r\n.layui-colorpicker-pre.layui-this{box-shadow: 0 0 3px 2px rgba(0,0,0,.15);}\r\n.layui-colorpicker-pre > div{height: 100%; border-radius: 2px;}\r\n.layui-colorpicker-main-input{text-align: right; padding-top: 7px;}\r\n.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin: 0 0 0 10px;}\r\n.layui-colorpicker-main-input div.layui-inline{float: left; margin-right: 10px; font-size: 14px;}\r\n.layui-colorpicker-main-input input.layui-input{width: 150px; height: 30px; color: #5F5F5F;}\r\n\r\n/** 滑块 **/\r\n.layui-slider{height: 4px; background: #eee; border-radius: 3px; position: relative; cursor: pointer;}\r\n.layui-slider-bar{border-radius: 3px; position: absolute; height: 100%;}\r\n.layui-slider-step{position: absolute; top: 0; width: 4px; height: 4px; border-radius: 50%; background: #FFF; -webkit-transform: translateX(-50%); transform: translateX(-50%);}\r\n.layui-slider-wrap{width: 36px; height: 36px; position: absolute; top: -16px; -webkit-transform: translateX(-50%); transform: translateX(-50%); z-index: 10; text-align: center;}\r\n.layui-slider-wrap-btn{width: 12px; height: 12px; border-radius: 50%; background: #FFF; display: inline-block; vertical-align: middle; cursor: pointer; transition: 0.3s;}\r\n.layui-slider-wrap:after{content: \"\"; height: 100%; display: inline-block; vertical-align: middle;}\r\n.layui-slider-wrap-btn:hover,\r\n.layui-slider-wrap-btn.layui-slider-hover{transform: scale(1.2);}\r\n.layui-slider-wrap-btn.layui-disabled:hover{transform: scale(1) !important;}\r\n.layui-slider-tips{position: absolute; top: -42px; z-index: 77777777; white-space:nowrap; -webkit-transform: translateX(-50%); transform: translateX(-50%); color: #FFF; background: #000; border-radius: 3px; height: 25px; line-height: 25px; padding: 0 10px;}\r\n.layui-slider-tips:after{content: \"\"; position: absolute; bottom: -12px; left: 50%; margin-left: -6px; width: 0; height: 0; border-width: 6px; border-style: solid; border-color: #000 transparent transparent transparent;}\r\n.layui-slider-input{width: 70px; height: 32px; border: 1px solid #eee; border-radius: 3px; font-size: 16px; line-height: 32px; position: absolute; right: 0; top: -14px; box-sizing: border-box;}\r\n.layui-slider-input-btn{position: absolute; top: 0; right: 0; width: 20px; height: 100%; border-left: 1px solid #eee;}\r\n.layui-slider-input-btn i{cursor: pointer; position: absolute; right: 0; bottom: 0; width: 20px; height: 50%; font-size: 12px; line-height: 16px; text-align: center; color: #999;}\r\n.layui-slider-input-btn i:first-child{top: 0; border-bottom: 1px solid #eee;}\r\n.layui-slider-input-txt{height: 100%; font-size: 14px;}\r\n.layui-slider-input-txt input{height: 100%; border: none; padding-right: 21px;}\r\n.layui-slider-input-btn i:hover{color: #16baaa;}\r\n/*垂直滑块*/\r\n.layui-slider-vertical{width: 4px; margin-left: 33px;}\r\n.layui-slider-vertical .layui-slider-bar{width: 4px;}\r\n.layui-slider-vertical .layui-slider-step{top: auto; left: 0px; -webkit-transform: translateY(50%); transform: translateY(50%);}\r\n.layui-slider-vertical .layui-slider-wrap{top: auto; left: -16px; -webkit-transform: translateY(50%); transform: translateY(50%);}\r\n.layui-slider-vertical .layui-slider-tips{top: auto; left: 2px;}\r\n@media \\0screen{\r\n .layui-slider-wrap-btn{margin-left: -20px;}\r\n .layui-slider-vertical .layui-slider-wrap-btn{margin-left: 0; margin-bottom: -20px;}\r\n .layui-slider-vertical .layui-slider-tips{margin-left: -8px;}\r\n .layui-slider > span{margin-left: 8px;}\r\n}\r\n\r\n/** 树组件 **/\r\n.layui-tree{line-height: 22px;}\r\n.layui-tree .layui-form-checkbox{margin: 0 !important;}\r\n.layui-tree-set{width: 100%; position: relative;}\r\n.layui-tree-pack{display: none; padding-left: 20px; position: relative;}\r\n.layui-tree-line .layui-tree-pack{padding-left: 27px;}\r\n.layui-tree-line .layui-tree-set .layui-tree-set:after{content: \"\"; position: absolute; top: 14px; left: -9px; width: 17px; height: 0; border-top: 1px dotted #c0c4cc;}\r\n.layui-tree-entry{position: relative; padding: 3px 0; height: 26px; white-space: nowrap;}\r\n.layui-tree-entry:hover{background-color: #eee;}\r\n.layui-tree-line .layui-tree-entry:hover{background-color: rgba(0,0,0,0);}\r\n.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color: #999; text-decoration: underline; transition: 0.3s;}\r\n.layui-tree-main{display: inline-block; vertical-align: middle; cursor: pointer; padding-right: 10px;}\r\n.layui-tree-line .layui-tree-set:before{content: \"\"; position: absolute; top: 0; left: -9px; width: 0; height: 100%; border-left: 1px dotted #c0c4cc;}\r\n.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height: 13px;}\r\n.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height: 0;}\r\n.layui-tree-iconClick{display: inline-block; vertical-align: middle; position: relative; height: 20px; line-height: 20px; margin: 0 10px; color: #c0c4cc;}\r\n.layui-tree-icon{height: 14px; line-height: 12px; width: 14px; text-align: center; border: 1px solid #c0c4cc;}\r\n.layui-tree-iconClick .layui-icon{font-size: 18px;}\r\n.layui-tree-icon .layui-icon{font-size: 12px; color: #5F5F5F;}\r\n.layui-tree-iconArrow{padding: 0 5px;}\r\n.layui-tree-iconArrow:after{content: \"\"; position: absolute; left: 4px; top: 3px; z-index: 100; width: 0; height: 0; border-width: 5px; border-style: solid; border-color: transparent transparent transparent #c0c4cc; transition: 0.5s;}\r\n.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform: rotate(90deg) translate(3px, 4px);}\r\n.layui-tree-txt{display: inline-block; vertical-align: middle; color: #555;}\r\n.layui-tree-search{margin-bottom: 15px; color: #5F5F5F;}\r\n.layui-tree-btnGroup{visibility: hidden; display: inline-block; vertical-align: middle; position: relative;}\r\n.layui-tree-btnGroup .layui-icon{display: inline-block; vertical-align: middle; padding: 0 2px; cursor: pointer;}\r\n.layui-tree-btnGroup .layui-icon:hover{color: #999; transition: 0.3s;}\r\n.layui-tree-entry:hover .layui-tree-btnGroup{visibility: visible;}\r\n.layui-tree-editInput{position: relative; display: inline-block; vertical-align: middle; height: 20px; line-height: 20px; padding: 0; border: none; background-color: rgba(0,0,0,0.05);}\r\n.layui-tree-emptyText{text-align: center; color: #999;}\r\n\r\n\r\n\r\n\r\n/** 动画 **/\r\n.layui-anim{-webkit-animation-duration: 0.3s; -webkit-animation-fill-mode: both; animation-duration: 0.3s; animation-fill-mode: both;}\r\n.layui-anim.layui-icon{display: inline-block;}\r\n.layui-anim-loop{-webkit-animation-iteration-count: infinite; animation-iteration-count: infinite;}\r\n.layui-trans,\r\n.layui-trans a{transition: all .2s; -webkit-transition: all .2s;} /* 过度变换 */\r\n\r\n/* 循环旋转 */\r\n@-webkit-keyframes layui-rotate{\r\n from {-webkit-transform: rotate(0deg);}\r\n to {-webkit-transform: rotate(360deg);}\r\n}\r\n@keyframes layui-rotate{\r\n from {transform: rotate(0deg);}\r\n to {transform: rotate(360deg);}\r\n}\r\n.layui-anim-rotate{-webkit-animation-name: layui-rotate; animation-name: layui-rotate; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-timing-function: linear; animation-timing-function: linear;}\r\n\r\n/* 从最底部往上滑入 */\r\n@-webkit-keyframes layui-up{\r\n from {-webkit-transform: translate3d(0, 100%, 0); opacity: 0.3;}\r\n to {-webkit-transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n@keyframes layui-up{\r\n from {transform: translate3d(0, 100%, 0); opacity: 0.3;}\r\n to {transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n.layui-anim-up{-webkit-animation-name: layui-up; animation-name: layui-up;}\r\n\r\n/* 微微往上滑入 */\r\n@-webkit-keyframes layui-upbit{\r\n from {-webkit-transform: translate3d(0, 15px, 0); opacity: 0.3;}\r\n to {-webkit-transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n@keyframes layui-upbit{\r\n from {transform: translate3d(0, 15px, 0); opacity: 0.3;}\r\n to {transform: translate3d(0, 0, 0); opacity: 1;}\r\n}\r\n.layui-anim-upbit{-webkit-animation-name: layui-upbit; animation-name: layui-upbit;}\r\n\r\n/* 从最顶部往下滑入 */\r\n@keyframes layui-down {\r\n 0% {opacity: 0.3; transform: translate3d(0, -100%, 0);}\r\n 100% {opacity: 1; transform: translate3d(0, 0, 0);}\r\n}\r\n.layui-anim-down{animation-name: layui-down;}\r\n\r\n/* 微微往下滑入 */\r\n@keyframes layui-downbit {\r\n 0% {opacity: 0.3; transform: translate3d(0, -5px, 0);}\r\n 100% {opacity: 1; transform: translate3d(0, 0, 0);}\r\n}\r\n.layui-anim-downbit{animation-name: layui-downbit;}\r\n\r\n/* 放大 */\r\n@-webkit-keyframes layui-scale {\r\n 0% {opacity: 0.3; -webkit-transform: scale(.5);}\r\n 100% {opacity: 1; -webkit-transform: scale(1);}\r\n}\r\n@keyframes layui-scale {\r\n 0% {opacity: 0.3; -ms-transform: scale(.5); transform: scale(.5);}\r\n 100% {opacity: 1; -ms-transform: scale(1); transform: scale(1);}\r\n}\r\n.layui-anim-scale{-webkit-animation-name: layui-scale; animation-name: layui-scale}\r\n\r\n/* 弹簧式放大 */\r\n@-webkit-keyframes layui-scale-spring {\r\n 0% {opacity: 0.5; -webkit-transform: scale(.5);}\r\n 80% {opacity: 0.8; -webkit-transform: scale(1.1);}\r\n 100% {opacity: 1; -webkit-transform: scale(1);}\r\n}\r\n@keyframes layui-scale-spring {\r\n 0% {opacity: 0.5; transform: scale(.5);}\r\n 80% {opacity: 0.8; transform: scale(1.1);}\r\n 100% {opacity: 1; transform: scale(1);}\r\n}\r\n.layui-anim-scaleSpring{-webkit-animation-name: layui-scale-spring; animation-name: layui-scale-spring}\r\n\r\n/* 放小 */\r\n@keyframes layui-scalesmall {\r\n 0% {opacity: 0.3; transform: scale(1.5);}\r\n 100% {opacity: 1; transform: scale(1);}\r\n}\r\n.layui-anim-scalesmall{animation-name: layui-scalesmall}\r\n\r\n/* 弹簧式放小 */\r\n@keyframes layui-scalesmall-spring {\r\n 0% {opacity: 0.3; transform: scale(1.5);}\r\n 80% {opacity: 0.8; transform: scale(0.9);}\r\n 100% {opacity: 1; transform: scale(1);}\r\n}\r\n.layui-anim-scalesmall-spring{animation-name: layui-scalesmall-spring}\r\n\r\n\r\n/* 渐显 */\r\n@-webkit-keyframes layui-fadein {\r\n 0% {opacity: 0;}\r\n 100% {opacity: 1;}\r\n}\r\n@keyframes layui-fadein {\r\n 0% {opacity: 0;}\r\n 100% {opacity: 1;}\r\n}\r\n.layui-anim-fadein{-webkit-animation-name: layui-fadein; animation-name: layui-fadein;}\r\n\r\n/* 渐隐 */\r\n@-webkit-keyframes layui-fadeout {\r\n 0% {opacity: 1;}\r\n 100% {opacity: 0;}\r\n}\r\n@keyframes layui-fadeout {\r\n 0% {opacity: 1;}\r\n 100% {opacity: 0;}\r\n}\r\n.layui-anim-fadeout{-webkit-animation-name: layui-fadeout; animation-name: layui-fadeout}\r\n\r\n\r\n\r\n\r\n","/**\r\n * code\r\n */\r\n\r\nhtml #layuicss-skincodecss{display: none; position: absolute; width: 1989px;}\r\n\r\n/* 字体 */\r\n.layui-code-wrap{font-size: 13px; font-family: \"Courier New\",Consolas,\"Lucida Console\";}\r\n\r\n/* 基础结构 */\r\n.layui-code-view{display: block; position: relative; padding: 0 !important; border: 1px solid #eee; border-left-width: 6px; background-color: #fff; color: #333;}\r\n.layui-code-view pre{margin: 0 !important;}\r\n\r\n.layui-code-header{position: relative; z-index: 3; padding: 0 11px; height: 40px; line-height: 40px; border-bottom: 1px solid #eee; background-color: #fafafa; font-size: 12px;}\r\n.layui-code-header > .layui-code-header-about{position: absolute; right: 11px; top: 0; color: #B7B7B7;}\r\n.layui-code-header-about > a{padding-left: 10px;}\r\n\r\n.layui-code-wrap{position: relative; display: block; z-index: 1; margin: 0 !important; padding: 11px 0 !important; overflow-x: hidden; overflow-y: auto;}\r\n.layui-code-line{position: relative; line-height: 19px; margin: 0 !important;}\r\n.layui-code-line-number{position: absolute; left: 0; top: 0; padding: 0 8px; min-width: 45px; height: 100%; text-align: right; user-select: none; white-space: nowrap; overflow: hidden;}\r\n.layui-code-line-content{padding: 0 11px; word-wrap: break-word; white-space: pre-wrap;}\r\n\r\n.layui-code-ln-mode > .layui-code-wrap > .layui-code-line{padding-left: 45px;}\r\n.layui-code-ln-side{position: absolute; left: 0; top: 0; bottom: 0; z-index: 0; width: 45px; border-right: 1px solid #eee; border-color: rgb(126 122 122 / 15%); background-color: #fafafa; pointer-events: none;}\r\n\r\n/* 不自动换行 */\r\n.layui-code-nowrap > .layui-code-wrap{overflow: auto;}\r\n.layui-code-nowrap > .layui-code-wrap > .layui-code-line > .layui-code-line-content{white-space: pre; word-wrap: normal;}\r\n.layui-code-nowrap > .layui-code-ln-side{border-right-width: 0 !important; background: none !important;}\r\n\r\n.layui-code-fixbar{position: absolute; top: 8px; right: 11px; padding-right: 45px; z-index: 5;}\r\n.layui-code-fixbar > span{position: absolute; right: 0; top: 0; padding: 0 8px; color: #777; transition: all .3s;}\r\n.layui-code-fixbar > span:hover{color: #16b777;}\r\n.layui-code-copy{display: none; cursor: pointer;}\r\n.layui-code-preview > .layui-code-view > .layui-code-fixbar .layui-code-copy{display: none !important;}\r\n.layui-code-view:hover > .layui-code-fixbar .layui-code-copy{display: block;}\r\n.layui-code-view:hover > .layui-code-fixbar .layui-code-lang-marker{display: none;}\r\n\r\n/* 深色主题 */\r\n.layui-code-theme-dark,\r\n.layui-code-theme-dark > .layui-code-header{border-color: rgb(126 122 122 / 15%); background-color: #1f1f1f;}\r\n.layui-code-theme-dark{border-width: 1px; color: #ccc;}\r\n.layui-code-theme-dark > .layui-code-ln-side{border-right-color: #2a2a2a; background: none; color: #6e7681;}\r\n\r\n\r\n/* 代码预览 */\r\n.layui-code textarea{display: none;}\r\n.layui-code-preview > .layui-code,\r\n.layui-code-preview > .layui-code-view{margin: 0;}\r\n.layui-code-preview > .layui-tab{position: relative; z-index: 1; margin-bottom: 0;}\r\n.layui-code-preview > .layui-tab > .layui-tab-title{border-width: 0;}\r\n.layui-code-preview .layui-code-item{display: none;}\r\n.layui-code-preview .layui-code-view > .layui-code-lines > .layui-code-line{}\r\n.layui-code-item-preview{position: relative; padding: 16px;}\r\n.layui-code-item-preview > iframe{position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;}\r\n\r\n/* 工具栏 */\r\n.layui-code-tools{position: absolute; right: 11px; top: 8px; line-height: normal;}\r\n.layui-code-tools > i{display: inline-block; margin-left: 6px; padding: 3px; cursor: pointer;}\r\n.layui-code-tools > i.layui-icon-file-b{color: #999;}\r\n.layui-code-tools > i:hover{color: #16b777;}\r\n\r\n/* 全屏风格 */\r\n.layui-code-full{position: fixed; left: 0; top: 0; z-index: 1111111; width: 100%; height: 100%; background-color: #fff;}\r\n.layui-code-full .layui-code-item{width: 100% !important; border-width: 0 !important; border-top-width: 1px !important;}\r\n.layui-code-full .layui-code-item,\r\n.layui-code-full .layui-code-view,\r\n.layui-code-full .layui-code-wrap{height: calc(100vh - 51px) !important; box-sizing: border-box;}\r\n.layui-code-full .layui-code-item-preview{overflow: auto;}\r\n\r\n/* 代码高亮重置 */\r\n.layui-code-view.layui-code-hl{line-height: 20px !important; border-left-width: 1px;}\r\n.layui-code-view.layui-code-hl > .layui-code-ln-side{background-color: transparent;}\r\n.layui-code-theme-dark.layui-code-hl,\r\n.layui-code-theme-dark.layui-code-hl > .layui-code-ln-side{border-color: rgb(126 122 122 / 15%);}\r\n","/**\r\n * laydate style\r\n */\r\n \r\n\r\nhtml #layuicss-laydate{display: none; position: absolute; width: 1989px;}\r\n\r\n/* 初始化 */\r\n.layui-laydate *{margin: 0; padding: 0;}\r\n\r\n/* 主体结构 */\r\n.layui-laydate, .layui-laydate *{box-sizing: border-box;}\r\n.layui-laydate{position: absolute; z-index: 99999999; margin: 5px 0; border-radius: 2px; font-size: 14px; line-height: normal; -webkit-animation-duration: 0.2s; animation-duration: 0.2s; -webkit-animation-fill-mode: both; animation-fill-mode: both;}\r\n.layui-laydate-main{width: 272px;}\r\n.layui-laydate-header *,\r\n.layui-laydate-content td,\r\n.layui-laydate-list li{transition-duration: .3s; -webkit-transition-duration: .3s;}\r\n.layui-laydate-shade{top: 0; left: 0; width: 100%; height: 100%; _height: expression(document.body.offsetHeight+\"px\"); position: fixed; _position: absolute; pointer-events: auto;}\r\n\r\n/* 微微往下滑入 */\r\n@keyframes laydate-downbit {\r\n 0% {opacity: 0.3; transform: translate3d(0, -5px, 0);}\r\n 100% {opacity: 1; transform: translate3d(0, 0, 0);}\r\n}\r\n\r\n.layui-laydate{animation-name: laydate-downbit;}\r\n.layui-laydate-static{ position: relative; z-index: 0; display: inline-block; margin: 0; -webkit-animation: none; animation: none;}\r\n\r\n/* 展开年月列表时 */\r\n.laydate-ym-show .laydate-prev-m,\r\n.laydate-ym-show .laydate-next-m{display: none !important;}\r\n.laydate-ym-show .laydate-prev-y,\r\n.laydate-ym-show .laydate-next-y{display: inline-block !important;}\r\n.laydate-ym-show .laydate-set-ym span[lay-type=\"month\"]{display: none !important;}\r\n\r\n/* 展开时间列表时 */\r\n.laydate-time-show .layui-laydate-header .layui-icon,\r\n.laydate-time-show .laydate-set-ym span[lay-type=\"year\"],\r\n.laydate-time-show .laydate-set-ym span[lay-type=\"month\"]{display: none !important;}\r\n\r\n/* 头部结构 */\r\n.layui-laydate-header{position: relative; line-height:30px; padding: 10px 70px 5px;}\r\n.layui-laydate-header *{display: inline-block; vertical-align: bottom;}\r\n.layui-laydate-header i{position: absolute; top: 10px; padding: 0 5px; color: #999; font-size: 18px; cursor: pointer;}\r\n.layui-laydate-header i.laydate-prev-y{left: 15px;}\r\n.layui-laydate-header i.laydate-prev-m{left: 45px;}\r\n.layui-laydate-header i.laydate-next-y{right: 15px;}\r\n.layui-laydate-header i.laydate-next-m{right: 45px;}\r\n.laydate-set-ym{width: 100%; text-align: center; box-sizing: border-box; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.laydate-set-ym span{padding: 0 10px; cursor: pointer;}\r\n.laydate-time-text{cursor: default !important;}\r\n\r\n/* 主体结构 */\r\n.layui-laydate-content{position: relative; padding: 10px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n.layui-laydate-content table{border-collapse: collapse; border-spacing: 0;}\r\n.layui-laydate-content th,\r\n.layui-laydate-content td{width: 36px; height: 30px; padding: 0; text-align: center;}\r\n.layui-laydate-content th{font-weight: 400;}\r\n.layui-laydate-content td{position: relative; cursor: pointer;}\r\n.laydate-day-mark{position: absolute; left: 0; top: 0; width: 100%; line-height: 30px; font-size: 12px; overflow: hidden;}\r\n.laydate-day-mark::after{position: absolute; content:''; right: 2px; top: 2px; width: 5px; height: 5px; border-radius: 50%;}\r\n.laydate-day-holidays:before{position: absolute; left: 0; top: 0; font-size: 12px; transform: scale(.7);}\r\n.laydate-day-holidays:before{content:'\\4F11'; color: #FF5722;}\r\n.laydate-day-holidays[type=\"work\"]:before{content:'\\73ED'; color: inherit;}\r\n.layui-laydate .layui-this .laydate-day-holidays:before{color: #fff;}\r\n\r\n/* 底部结构 */\r\n.layui-laydate-footer{position: relative; height: 46px; line-height: 26px; padding: 10px;}\r\n.layui-laydate-footer span{display: inline-block; vertical-align: top; height: 26px; line-height: 24px; padding: 0 10px; border: 1px solid #C9C9C9; border-radius: 2px; background-color: #fff; font-size: 12px; cursor: pointer; white-space: nowrap; transition: all .3s;}\r\n.layui-laydate-footer span:hover{color: #16b777;}\r\n.layui-laydate-footer span.layui-laydate-preview{cursor: default; border-color: transparent !important;}\r\n.layui-laydate-footer span.layui-laydate-preview:hover{color: #777;}\r\n.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left: 0;}\r\n.laydate-footer-btns {position: absolute; right: 10px; top: 10px; }\r\n.laydate-footer-btns span{margin: 0 0 0 -1px; border-radius: 0px; }\r\n.laydate-footer-btns span:first-child { border-radius: 2px 0px 0px 2px;}\r\n.laydate-footer-btns span:last-child { border-radius: 0px 2px 2px 0px;}\r\n\r\n/* 快捷栏 */\r\n.layui-laydate-shortcut{width: 80px; padding: 6px 0; display: inline-block;vertical-align: top; overflow: auto; max-height: 276px; text-align: center;}\r\n.layui-laydate-shortcut+.layui-laydate-main{display: inline-block;border-left: 1px solid #e2e2e2;}\r\n.layui-laydate-shortcut>li{padding: 5px 8px; cursor: pointer; line-height: 18px;}\r\n\r\n/* 年月列表 */\r\n.layui-laydate .layui-laydate-list{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 10px; box-sizing: border-box; background-color: #fff;}\r\n.layui-laydate .layui-laydate-list>li{position: relative; display: inline-block; width: 33.3%; height: 36px; line-height: 36px; margin: 3px 0; vertical-align: middle; text-align: center; cursor: pointer; list-style: none;}\r\n.layui-laydate .laydate-month-list>li{width: 25%; margin: 17px 0;}\r\n.laydate-time-list{}\r\n.layui-laydate .laydate-time-list>li{height: 100%; margin: 0; line-height: normal; cursor: default;}\r\n.layui-laydate .laydate-time-list p{position: relative; top: -4px; margin: 0; line-height: 29px;}\r\n.layui-laydate .laydate-time-list ol{height: 181px; overflow: hidden;}\r\n.layui-laydate .laydate-time-list>li:hover ol{overflow-y: auto;}\r\n.layui-laydate .laydate-time-list ol li{width: 130%; padding-left: 33px; height: 30px; line-height: 30px; text-align: left; cursor: pointer;}\r\n\r\n/* 提示 */\r\n.layui-laydate-hint{position: absolute; top: 115px; left: 50%; width: 250px; margin-left: -125px; line-height: 20px; padding: 15px; text-align: center; font-size: 12px; color: #FF5722;}\r\n\r\n\r\n/* 双日历 */\r\n.layui-laydate-range{width: 546px;}\r\n.layui-laydate-range .layui-laydate-main{display: inline-block; vertical-align: middle;max-width: 50%;}\r\n.layui-laydate-range .laydate-main-list-1 .layui-laydate-header,\r\n.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left: 1px solid #e2e2e2;}\r\n.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m, .layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,\r\n.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m, .layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display: none;}\r\n\r\n\r\n/* 默认简约主题 */\r\n.layui-laydate, .layui-laydate-hint{border: 1px solid #d2d2d2; box-shadow: 0 2px 4px rgba(0,0,0,.12); background-color: #fff; color: #777;}\r\n.layui-laydate-header{border-bottom: 1px solid #e2e2e2;}\r\n.layui-laydate-header i:hover,\r\n.layui-laydate-header span:hover{color: #16b777;}\r\n.layui-laydate-content{border-top: none 0; border-bottom: none 0;}\r\n.layui-laydate-content th{color: #333;}\r\n.layui-laydate-content td{color: #777;}\r\n.layui-laydate-content td.laydate-day-now{color: #16b777;}\r\n.layui-laydate-content td.laydate-day-now:after{content: ''; position: absolute; width: 100%; height: 30px; left: 0; top: 0; border: 1px solid #16b777; box-sizing: border-box;}\r\n.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color: #00F7DE;}\r\n.layui-laydate-linkage .laydate-selected:hover>div{background-color: #00F7DE !important;}\r\n.layui-laydate-content td:hover:after,\r\n.layui-laydate-content td.laydate-selected:after{content: none;}\r\n.layui-laydate-content td>div:hover,\r\n.layui-laydate-list li:hover,\r\n.layui-laydate-shortcut>li:hover{background-color: #eee; color: #333;}\r\n.laydate-time-list li ol{margin: 0; padding: 0; border: 1px solid #e2e2e2; border-left-width: 0;}\r\n.laydate-time-list li:first-child ol{border-left-width: 1px;}\r\n.laydate-time-list>li:hover{background: none;}\r\n.layui-laydate-content .laydate-day-prev,\r\n.layui-laydate-content .laydate-day-next{color: #d2d2d2;}\r\n.layui-laydate-linkage .laydate-selected.laydate-day-prev>div,\r\n.layui-laydate-linkage .laydate-selected.laydate-day-next>div{background-color: #f8f8f8 !important;}\r\n.layui-laydate-footer{border-top: 1px solid #e2e2e2;}\r\n.layui-laydate-hint{color: #FF5722;}\r\n.laydate-day-mark::after{background-color: #16b777;}\r\n.layui-laydate-content td.layui-this .laydate-day-mark::after{display: none;}\r\n.layui-laydate-footer span[lay-type=\"date\"]{color: #16b777;}\r\n.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color: #16baaa !important; color: #fff !important;}\r\n.layui-laydate .laydate-disabled,\r\n.layui-laydate .laydate-disabled:hover{background:none !important; color: #d2d2d2 !important; cursor: not-allowed !important; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}\r\n.layui-laydate-content td>div{padding: 7px 0;height: 100%;}\r\n\r\n/* 墨绿/自定义背景色主题 */\r\n.laydate-theme-molv{border: none;}\r\n.laydate-theme-molv.layui-laydate-range{width: 548px}\r\n.laydate-theme-molv .layui-laydate-main{width: 274px;}\r\n.laydate-theme-molv .layui-laydate-header{border: none; background-color: #16baaa;}\r\n.laydate-theme-molv .layui-laydate-header i,\r\n.laydate-theme-molv .layui-laydate-header span{color: #f6f6f6;}\r\n.laydate-theme-molv .layui-laydate-header i:hover,\r\n.laydate-theme-molv .layui-laydate-header span:hover{color: #fff;}\r\n.laydate-theme-molv .layui-laydate-content{border: 1px solid #e2e2e2; border-top: none; border-bottom: none;}\r\n.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left: none;}\r\n.laydate-theme-molv .layui-laydate-footer{border: 1px solid #e2e2e2;}\r\n\r\n/* 格子主题 */\r\n.laydate-theme-grid .layui-laydate-content td,\r\n.laydate-theme-grid .layui-laydate-content thead,\r\n.laydate-theme-grid .laydate-year-list>li,\r\n.laydate-theme-grid .laydate-month-list>li{border: 1px solid #e2e2e2;}\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected,\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color: #f2f2f2 !important; color: #16baaa !important;}\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev,\r\n.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next{color: #d2d2d2 !important;}\r\n.laydate-theme-grid .laydate-year-list,\r\n.laydate-theme-grid .laydate-month-list{margin: 1px 0 0 1px;}\r\n.laydate-theme-grid .laydate-year-list>li,\r\n.laydate-theme-grid .laydate-month-list>li{margin: 0 -1px -1px 0;}\r\n.laydate-theme-grid .laydate-year-list>li{height: 43px; line-height: 43px;}\r\n.laydate-theme-grid .laydate-month-list>li{height: 71px; line-height: 71px;}\r\n.laydate-theme-grid .layui-laydate-content td>div{height: 29px;margin-top: -1px;}\r\n\r\n/* 圆圈高亮主题 */\r\n.laydate-theme-circle .layui-laydate-content td>div,\r\n.laydate-theme-circle .layui-laydate-content td.layui-this>div{width: 28px;height: 28px;line-height: 28px;border-radius: 14px;margin: 0 4px;padding: 0;}\r\n.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color: transparent !important;}\r\n.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin: 0 3.5px;}\r\n\r\n/* 全面板 */\r\n.laydate-theme-fullpanel .layui-laydate-main {width: 526px;}\r\n.laydate-theme-fullpanel .layui-laydate-list {width: 252px;left: 272px;}\r\n.laydate-theme-fullpanel .laydate-set-ym span {display: none;}\r\n.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon,\r\n.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=\"year\"],\r\n.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=\"month\"] {display: inline-block !important;}\r\n.laydate-theme-fullpanel .laydate-btns-time{display: none;}\r\n","/**\r\n * layer style\r\n */\r\n\r\nhtml #layuicss-layer{display: none; position: absolute; width: 1989px;}\r\n\r\n/* common */\r\n.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}\r\n.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+\"px\");}\r\n.layui-layer{-webkit-overflow-scrolling: touch;}\r\n.layui-layer{top:150px; left: 0; margin:0; padding:0; background-color:#fff; -webkit-background-clip: content; border-radius: 2px; box-shadow: 1px 1px 50px rgba(0,0,0,.3);}\r\n.layui-layer-close{position:absolute;}\r\n.layui-layer-content{position:relative;}\r\n.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}\r\n.layui-layer-setwin span,\r\n.layui-layer-btn a{display: inline-block; vertical-align: middle; *display: inline; *zoom:1; }\r\n\r\n.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}\r\n.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}\r\n\r\n/* 动画 */\r\n.layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}\r\n\r\n@-webkit-keyframes layer-bounceIn { /* 默认 */\r\n\t0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}\r\n\t100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}\r\n}\r\n@keyframes layer-bounceIn {\r\n\t0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}\r\n\t100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}\r\n}\r\n.layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}\r\n\r\n@-webkit-keyframes layer-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 layer-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}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}\r\n\r\n@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-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)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}\r\n\r\n@-webkit-keyframes layer-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 layer-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}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}\r\n\r\n@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-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(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}\r\n\r\n@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}\r\n\r\n@-webkit-keyframes layer-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 layer-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)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}\r\n\r\n/* 从上往下 */\r\n@keyframes layer-slide-down {\r\n from {\r\n transform: translate3d(0,-100%,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-down-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(0,-100%,0);\r\n }\r\n}\r\n.layer-anim-slide-down{animation-name: layer-slide-down}\r\n.layer-anim-slide-down-out{animation-name: layer-slide-down-out}\r\n\r\n/* 从右往左 */\r\n@keyframes layer-slide-left {\r\n from {\r\n transform: translate3d(100%,0,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-left-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(100%,0,0);\r\n }\r\n}\r\n.layer-anim-slide-left{animation-name: layer-slide-left}\r\n.layer-anim-slide-left-out{animation-name: layer-slide-left-out}\r\n\r\n/* 从下往上 */\r\n@keyframes layer-slide-up {\r\n from {\r\n transform: translate3d(0,100%,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-up-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(0,100%,0);\r\n }\r\n}\r\n.layer-anim-slide-up{animation-name: layer-slide-up}\r\n.layer-anim-slide-up-out{animation-name: layer-slide-up-out}\r\n\r\n/* 从左往右 */\r\n@keyframes layer-slide-right {\r\n from {\r\n transform: translate3d(-100%,0,0);\r\n } to {\r\n transform: translate3d(0,0,0);\r\n }\r\n}\r\n@keyframes layer-slide-right-out {\r\n from {\r\n transform: translate3d(0,0,0);\r\n } to {\r\n transform: translate3d(-100%,0,0);\r\n }\r\n}\r\n.layer-anim-slide-right{animation-name: layer-slide-right;}\r\n.layer-anim-slide-right-out{animation-name: layer-slide-right-out;}\r\n\r\n\r\n\r\n/* 标题栏 */\r\n.layui-layer-title{padding: 0 81px 0 16px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 2px 2px 0 0;}\r\n.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 16px; font-size:0; line-height: initial;}\r\n.layui-layer-setwin span{position:relative; width: 16px; height: 16px; line-height: 18px; margin-left: 10px; text-align: center; font-size: 16px; cursor: pointer; color: #000; _overflow: hidden; box-sizing: border-box;}\r\n.layui-layer-setwin .layui-layer-min:before{content: ''; position: absolute; width: 12px; border-bottom: 1px solid #2E2D3C; left: 50%; top: 50%; margin: -0.5px 0 0 -6px; cursor: pointer; _overflow:hidden;}\r\n.layui-layer-setwin .layui-layer-min:hover:before{background-color: #2D93CA}\r\n.layui-layer-setwin .layui-layer-max:before,\r\n.layui-layer-setwin .layui-layer-max:after{content: ''; position: absolute; left: 50%; top: 50%; z-index: 1; width: 9px; height: 9px; margin: -5px 0 0 -5px; border: 1px solid #2E2D3C;}\r\n.layui-layer-setwin .layui-layer-max:hover:before,\r\n.layui-layer-setwin .layui-layer-max:hover:after{border-color: #2D93CA;}\r\n.layui-layer-setwin .layui-layer-min:hover:before{background-color: #2D93CA}\r\n.layui-layer-setwin .layui-layer-maxmin:before,\r\n.layui-layer-setwin .layui-layer-maxmin:after{width: 7px; height: 7px; margin: -3px 0 0 -3px; background-color: #fff;}\r\n.layui-layer-setwin .layui-layer-maxmin:after{z-index: 0; margin: -5px 0 0 -1px;}\r\n.layui-layer-setwin .layui-layer-close{cursor: pointer;}\r\n.layui-layer-setwin .layui-layer-close:hover{opacity:0.7;}\r\n.layui-layer-setwin .layui-layer-close2{position:absolute; right: -28px; top: -28px; color: #fff; background-color: #787878; padding: 3px; border: 3px solid; width: 28px; height: 28px; font-size: 16px; font-weight: bolder; border-radius: 50%; margin-left: 0; *right:-18px; _display:none;}\r\n.layui-layer-setwin .layui-layer-close2:hover{opacity: unset; background-color: #3888f6;}\r\n\r\n/* 按钮栏 */\r\n.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}\r\n.layui-layer-btn a{height: 30px; line-height: 30px; margin: 5px 5px 0; padding: 0 16px; border: 1px solid #dedede; background-color: #fff; color: #333; border-radius: 2px; font-weight: 400; cursor: pointer; text-decoration: none; box-sizing: border-box;}\r\n.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}\r\n.layui-layer-btn a:active{opacity: 0.8;}\r\n.layui-layer-btn .layui-layer-btn0{border-color: transparent; background-color: #1E9FFF; color:#fff;}\r\n.layui-layer-btn-l{text-align: left;}\r\n.layui-layer-btn-c{text-align: center;}\r\n\r\n/* 定制化 */\r\n.layui-layer-dialog{min-width: 240px;}\r\n.layui-layer-dialog .layui-layer-content{position: relative; padding: 16px; line-height: 24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}\r\n.layui-layer-dialog .layui-layer-content .layui-layer-face{position: absolute; top: 18px; left: 16px; color: #959595; font-size: 32px; _left: -40px;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-tips{color: #F39B12;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-success{color: #16b777;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-error{top: 19px; color: #FF5722;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-question{color: #FFB800;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-lock{color: #787878;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color: #FF5722;}\r\n.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color: #16b777;}\r\n\r\n.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}\r\n.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}\r\n.layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}\r\n.layui-layer-hui .layui-layer-close{color: #fff;}\r\n.layui-layer-hui .layui-layer-content{padding: 11px 24px; text-align: center;}\r\n.layui-layer-dialog .layui-layer-padding{padding: 18px 24px 18px 58px; text-align: left;}\r\n.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}\r\n.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}\r\n.layui-layer-nobg{background:none;}\r\n.layui-layer-iframe iframe{display: block; width: 100%;}\r\n\r\n.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;}\r\n.layui-layer-loading .layui-layer-content{width: 76px; height: 38px; line-height: 38px; text-align: center;}\r\n.layui-layer-loading-icon{font-size: 38px; color: #959595;}\r\n.layui-layer-loading2{text-align: center;}\r\n.layui-layer-loading-2{position: relative; height: 38px;}\r\n.layui-layer-loading-2:before,\r\n.layui-layer-loading-2:after{content: ''; position: absolute; left: 50%; top: 50%; width: 38px; height: 38px; margin: -19px 0 0 -19px; border-radius: 50%; border: 3px solid #d2d2d2; box-sizing: border-box;}\r\n.layui-layer-loading-2:after{border-color: transparent; border-left-color: #1E9FFF;}\r\n\r\n\r\n.layui-layer-tips{background: none; box-shadow:none; border:none;}\r\n.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 2px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}\r\n.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}\r\n.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}\r\n.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}\r\n.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}\r\n.layui-layer-tips i.layui-layer-TipsB{top:-8px;}\r\n.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;}\r\n.layui-layer-tips i.layui-layer-TipsR{left:-8px;}\r\n.layui-layer-tips i.layui-layer-TipsL{right:-8px;}\r\n\r\n/* 内置 skin */\r\n.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}\r\n.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; border-top:1px solid #E9E7E7}\r\n.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}\r\n.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}\r\n.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}\r\n.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}\r\n.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}\r\n.layui-layer-lan .layui-layer-setwin .layui-icon,\r\n.layui-layer-molv .layui-layer-setwin .layui-icon{color: #fff;}\r\n\r\n/* Windows 10 风格主题 */\r\n.layui-layer-win10{border: 1px solid #aaa; box-shadow: 1px 1px 6px rgba(0,0,0,.3); border-radius: none;}\r\n.layui-layer-win10 .layui-layer-title{height: 32px; line-height: 32px; padding-left: 8px; border-bottom: none; font-size: 12px;}\r\n.layui-layer-win10 .layui-layer-setwin{right: 0; top: 0;}\r\n.layui-layer-win10 .layui-layer-setwin span{margin-left: 0; width: 32px; height: 32px; padding: 8px;}\r\n.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width: 38px;}\r\n.layui-layer-win10 .layui-layer-setwin span:hover{background-color: #E5E5E5;}\r\n.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color: #E81123; color: #fff;}\r\n.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding: 8px 16px 32px; color: #0033BC;}\r\n.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top: 18px; padding-left: 58px;}\r\n.layui-layer-win10 .layui-layer-btn{padding: 5px 5px 10px; border-top:1px solid #DFDFDF; background-color: #F0F0F0;}\r\n.layui-layer-win10 .layui-layer-btn a{height: 20px; line-height: 18px; background-color: #E1E1E1; border-color: #ADADAD; color: #000; font-size: 12px; transition: all .3s;}\r\n.layui-layer-win10 .layui-layer-btn a:hover{border-color: #2A8EDD; background-color: #E5F1FB;}\r\n.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color: #0078D7;}\r\n\r\n\r\n/**\r\n \r\n @Name: layer拓展样式\r\n \r\n */\r\n\r\n/* prompt模式 */\r\n.layui-layer-prompt .layui-layer-input{display: block; width: 260px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}\r\n.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}\r\n.layui-layer-prompt .layui-layer-content{padding: 16px;}\r\n.layui-layer-prompt .layui-layer-btn{padding-top: 0;}\r\n\r\n/* tab模式 */\r\n.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}\r\n.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}\r\n.layui-layer-tab .layui-layer-title span{position:relative; display: inline-block; vertical-align: top; border-left: 1px solid transparent; border-right: 1px solid transparent; min-width:80px; max-width: 300px; padding:0 16px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}\r\n.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left-color: #eee; border-right-color: #eee; background-color: #fff; z-index: 10;}\r\n.layui-layer-tab .layui-layer-title span:first-child{border-left-color: transparent;}\r\n.layui-layer-tabmain{line-height:24px; clear: both;}\r\n.layui-layer-tabmain .layui-layer-tabli{display:none;}\r\n.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}\r\n\r\n/* photos */\r\n.layui-layer-photos{background: none; box-shadow: none;}\r\n.layui-layer-photos .layui-layer-content{overflow: visible; text-align: center;}\r\n.layui-layer-photos .layer-layer-photos-main img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}\r\n.layui-layer-photos-prev,\r\n.layui-layer-photos-next{position: fixed; top: 50%; width: 52px; height: 52px; line-height: 52px; margin-top: -26px; cursor: pointer; font-size: 52px; color: #717171;}\r\n.layui-layer-photos-prev{left: 32px;}\r\n.layui-layer-photos-next{right: 32px;}\r\n.layui-layer-photos-prev:hover,\r\n.layui-layer-photos-next:hover{color: #959595;}\r\n\r\n.layui-layer-photos-toolbar{position: fixed; left: 0; right: 0; bottom: 0; width: 100%; height: 52px; line-height: 52px; background-color: #000\\9; filter: Alpha(opacity=60); background-color: rgba(0,0,0,.32); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}\r\n.layui-layer-photos-toolbar > *{display:inline-block; vertical-align: top; padding: 0 16px; font-size: 12px; color: #fff; *display:inline; *zoom: 1;}\r\n.layui-layer-photos-toolbar *{font-size: 12px;}\r\n.layui-layer-photos-header{top: 0; bottom: auto;}\r\n.layui-layer-photos-header > span{cursor: pointer;}\r\n.layui-layer-photos-header > span:hover{background-color: rgba(51,51,51,.32);}\r\n.layui-layer-photos-header .layui-icon{font-size: 18px;}\r\n.layui-layer-photos-footer > h3{max-width: 65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}\r\n.layui-layer-photos-footer a:hover{text-decoration: underline;}\r\n.layui-layer-photos-footer em{font-style: normal;}\r\n\r\n/* 关闭动画 */\r\n@-webkit-keyframes layer-bounceOut {\r\n 100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}\r\n 30% {-webkit-transform: scale(1.05); transform: scale(1.05)}\r\n 0% {-webkit-transform: scale(1); transform: scale(1);}\r\n}\r\n@keyframes layer-bounceOut {\r\n 100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}\r\n 30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}\r\n 0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}\r\n}\r\n.layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;}\r\n"]} \ No newline at end of file diff --git a/dist/layui.js b/dist/layui.js index 8ea98cb3..f74bc896 100644 --- a/dist/layui.js +++ b/dist/layui.js @@ -1,2 +1,2 @@ -/** v2.9.3 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.3"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,o,r,c,u,a,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,o=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},r=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(s-t.offsetWidth)/2:"right"===n.align&&(u=u-s+t.offsetWidth),(u=u+s+c>r("width")?r("width")-s-c:u)r()&&(i.top>f+c&&i.top<=r()?a=i.top-f-2*c:n.allowBottomOut||(a=r()-f-2*c)<0&&(a=0)),(s=n.position)&&(e.style.position=s),e.style.left=u+("fixed"===s?0:o(1))+"px",e.style.top=a+("fixed"===s?0:o())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,o,r=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.distanceY=0,n.direction="none",r.onTouchStart)&&r.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["到第","页","确定"])[0],'',e[1]+'",""].join("")};return['
',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
"].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="layui-"+a+"-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
\u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
","
\u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uff1a
","
It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
  • '+t.text+"
  • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+""),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(n.type)?new Date:null),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],index:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

    "+m.time[t]+"

      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
    ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),(f=lay(c).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})}),lay.touchEventsSupported()&&f.on("touchstart",function(){this.style["overflow-y"]="auto"})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),o=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,n.endTime)),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
    a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:y.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
    t
    ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
    a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"":"";return a.zIndex=o,t([a.shade?'
    ':"",'
    '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
    ':''):"")+((1!=a.type||!e)&&a.content||"")+'
    '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
    "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
    '+e+"
    "}():"")+(a.resize?'':"")+""],s,m('
    ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+u[0]).find("#"+s.id)[0])e=m("#"+s.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?g.restore(t):i.hideOnClose&&(n.show(),e.show());else{switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==g.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:d.btn[0],g.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,g.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||g.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+l).find("."+u[5]).before(t)):c.append(e[1]),m("#"+u.MOVE)[0]||c.append(d.moveElem=i),o.layero=m("#"+u[0]+l),o.shadeo=m("#"+u.SHADE+l),s.scrollbar||d.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==g.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),g.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),!s.fixed||d.events.resize[o.index]||(d.events.resize[o.index]=function(){o.resize()},h.on("resize",d.events.resize[o.index])),s.time<=0||setTimeout(function(){g.close(o.index)},s.time),o.move().callback(),u.anim[s.anim]&&(a="layer-anim "+u.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=h.height()&&(n[1]=h.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(h.height()-n[1])/2,e.offsetLeft=(h.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=h.width()-n[0]:"b"===t.offset?e.offsetTop=h.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=h.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=h.width()-n[0]):"rb"===t.offset?(e.offsetTop=h.height()-n[1],e.offsetLeft=h.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?h.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?h.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=h.scrollTop(),e.offsetLeft+=h.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=h.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0h.width()&&(o=h.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=h.height()-n,a||d.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),g.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(u[4]).hide(),d.restScrollbar(e),c.hide())},g.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),g.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(u[4]).show(),o.scrollbar?d.restScrollbar(e):d.setScrollbar(e),i.show()},g.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&g.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");g.style(t,{top:e?0:h.scrollTop(),left:e?0:h.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},g.title=function(e,t){m("#"+u[0]+(t||g.index)).find(u[1]).html(e)},g.close=function(o,s){var l,e,r=(t=m("."+u[0]).children("#"+o).closest("."+u[0]))[0]?(o=t.attr("times"),t):m("#"+u[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===d.type[1]&&"object"===r.attr("conType")){r.children(":not(."+u[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+u[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof d.end[o]&&d.end[o](),delete d.end[o],"function"==typeof s&&s(),d.events.resize[o]&&(h.off("resize",d.events.resize[o]),delete d.events.resize[o])},m("#"+u.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==g.ie&&d.reselect(),d.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(r.attr("minLeft"))),g.ie&&g.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},g.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&g.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},g.closeLast=function(e,t){g.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"),t)},g.cache||{}),v=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};g.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,g.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+v("prompt"),maxWidth:h.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?g.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},g.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,g.open(m.extend({type:1,skin:"layui-layer-tab"+v("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
      '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
    ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},g.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],l=i.start||0,r=n.success;if(s.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===o.length)return g.msg("没有图片")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");g.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&g.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,g.close(s.index),g.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":g.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=g.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=o[l].src,d=function(e){g.close(s.loadi);var t,i=o[l].alt||"";a&&(n.anim=-1),s.index=g.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
    '],1','','',"
    "].join("")),n.toolbar&&t.push(['
    ','','','','','','',"
    "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[l],e),"function"==typeof r&&r(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){g.close(s.loadi),g.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
  • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
  • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+l+"":l,n?'
    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
    ":'
    '+t+"
    "),""].join(""))).data("item",i),n&&(a=c('
    '),t=c("
      "),"parent"===o?(a.append(u(t,i[s.children])),l.append(a)):l.append(u(t,i[s.children]))),r.append(l))}),r},a=['
      ',"
      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),h.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
      ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(f.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(f.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),h.close=function(e){e=f.getThis(e);return e?(e.remove(),f.call(e)):this},h.reload=function(e,i,t){e=f.getThis(e);return e?(e.reload(i,t),f.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return f.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,x=layui.lay,c={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=g.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",v="layui-disabled",b="layui-slider-bar",T="layui-slider-wrap",w="layui-slider-wrap-btn",M="layui-slider-tips",L="layui-slider-input-txt",E="layui-slider-hover",t=function(e){var t=this;t.index=++c.index,t.config=g.extend({},t.config,c.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.render=function(){var n=this,a=n.config,e=g(a.elem);if(1a.max&&(a.value=a.max),i=Math.floor((a.value-a.min)/(a.max-a.min)*100)+"%");var l,e=a.disabled?"#c2c2c2":a.theme,t='
      '+(a.tips?'
      ':"")+'
      '+(a.range?'
      ':"")+"
      ",i=g(a.elem),s=i.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=g(t),a.range?(n.elemTemp.find("."+T).eq(0).data("value",a.value[0]),n.elemTemp.find("."+T).eq(1).data("value",a.value[1])):n.elemTemp.find("."+T).data("value",a.value),i.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
      ')}n.elemTemp.append(r)}a.input&&!a.range&&(e=g('
      '),i.css("position","relative"),i.append(e),i.find("."+L).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(v),n.elemTemp.find("."+w).addClass(v)):n.slide(),n.elemTemp.find("."+w).on("mouseover",function(){var e="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,t=n.elemTemp.find("."+T),i=("vertical"===a.type?e-g(this).parent()[0].offsetTop-t.height():g(this).parent()[0].offsetLeft)/e*100,t=g(this).parent().data("value"),e=a.setTips?a.setTips(t):t;n.elemTemp.find("."+M).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===a.type?n.elemTemp.find("."+M).css({bottom:i+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+M).css({left:i+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),n.elemTemp.find("."+M).css("display","none")})},t.prototype.slide=function(e,t,i){var u=this,d=u.config,c=u.elemTemp,v=function(){return"vertical"===d.type?d.height:c[0].offsetWidth},m=c.find("."+T),o=c.next(".layui-slider-input"),r=o.children("."+L).children("input").val(),p=100/((d.max-d.min)/Math.ceil(d.step)),f=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=d.range?n:l,d.change&&d.change(u.value),"done"===i&&d.done&&d.done(u.value)},h=function(e){var t=e/v()*100/p,i=Math.round(t)*p;return i=e==v()?Math.ceil(t)*p:i},y=g(['
      v()?v():t)/v()*100/p;f(t,o),r.addClass(E),c.find("."+M).show(),e.preventDefault()},n=function(e){r.removeClass(E),setTimeout(function(){c.find("."+M).hide()},e)},a=function(){n&&n(x.touchEventsSupported()?1e3:0),y.remove(),d.done&&d.done(u.value),x.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",i),y.on("mouseup",a).on("mouseleave",a),x.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),c.on("click",function(e){var t=g("."+w),i=g(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===d.type?v()-e.clientY+i.offset().top-g(window).scrollTop():e.clientX-i.offset().left-g(window).scrollLeft())<0?0:t)>v()?v():t)/v()*100/p,t=d.range?"vertical"===d.type?Math.abs(t-parseInt(g(m[0]).css("bottom")))>Math.abs(t-parseInt(g(m[1]).css("bottom")))?1:0:Math.abs(t-m[0].offsetLeft)>Math.abs(t-m[1].offsetLeft)?1:0:0,f(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){g(this).on("click",function(){r=o.children("."+L).children("input").val();var e=((r=1==t?r-d.stepd.max?d.max:Number(r)+d.step)-d.min)/(d.max-d.min)*100/p;f(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)d.max?d.max:e,((this.value=e)-d.min)/(d.max-d.min)*100/p);f(e,0,"done")};o.children("."+L).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},c.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
      "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],r=e.elemPicker=k(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",i.predefine?(o=['
      '],layui.each(i.colors,function(e,i){o.push(['
      ','
      ',"
      "].join(""))}),o.push("
      "),o.join("")):"",'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(r)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+M),r=o[0].style.backgroundColor;r?(e=Y(F(r)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(r):"rgba"===o?(o=F(r),3===(r.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(r),r=280*r.slice(r.lastIndexOf(",")+1,r.length-1),i.elemPicker.find("."+D).css("left",r)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),t=n.elemPicker.find("."+E),u=n.elemPicker.find("."+T),f=n.elemPicker.find("."+D),p=e[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,y=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),m=function(e,i,o,t){n.select(e,i,o);var r=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");y.addClass(x).removeClass(P),c[0].style.background="rgb("+r.r+", "+r.g+", "+r.b+")","torgb"===a?i.val("rgb("+r.r+", "+r.g+", "+r.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+r.r+", "+r.g+", "+r.b+", "+t+")"),c[0].style.background="rgba("+r.r+", "+r.g+", "+r.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+r.r+", "+r.g+", "+r.b+", 0), rgb("+r.r+", "+r.g+", "+r.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
      '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var t=this.offsetTop,r=e.clientY;b(function(e){var i=t+(e.clientY-r),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;m(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+L.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;m(p=i,g,h,v),e.preventDefault()}),t.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),b(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight-3,r=d[0].offsetWidth-3,r=((o=r<(o=o<-3?-3:o)?r:o)+3)/260*100,o=100-((i=t<(i=i<-3?-3:i)?t:i)+3)/180*100;m(p,g=r,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top-3+L.scrollTop(),o=e.clientX-k(this).offset().left-3+L.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;m(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger(e,"mousedown")}),f.on("mousedown",function(e){var t=this.offsetLeft,r=e.clientX;b(function(e){var i=t+(e.clientX-r),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);m(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);m(p,g,h,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,m(i.h,i.s,i.b,o)})}),r.touchEventsSupported()&&layui.each([{elem:s,eventType:"click"},{elem:u,eventType:"click"},{elem:d,eventType:"mousedown"}],function(e,t){r.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var r=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+r,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,r,n,l=k.trim(d.val());-1>16,g:(65280&r)>>8,b:255&r},t=Y(n),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),L.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(t,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
      '+(i.content||"")+"
      "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
      '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
      ',"
      "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
      ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
      '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(g)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

      '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)})),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
      ','
      ','','
      ','
      ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
      "+t.label+"
      ":'
      '+C.trim(t.innerHTML)+"
      "):s.push('
      '+C.trim(t.innerHTML||c)+"
      ")}),0===s.length&&s.push('
      \u6ca1\u6709\u9009\u9879
      '),s.join("")+"
      "),"
      "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
      ",(s={checkbox:[n[0]?"
      "+n[0]+"
      ":"primary"===a?"":"
      ",''].join(""),"switch":"
      "+((t.checked?n[0]:n[1])||"")+"
      "})[a]||s.checkbox,"
      "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
      ','',"
      "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
      ","
      "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var p=layui.$,r=layui.lay,m=layui.laytpl,O=layui.laypage,f=layui.layer,v=layui.form,g=layui.util,x=layui.hint(),b=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=p.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return r(e).html()}catch(t){return e}}(t)||String(i)).render(p.extend({LAY_COL:a},e.tplData))),e.text?p("
      "+i+"
      ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",u=".layui-table-fixed-r",I=".layui-table-pageview",A=".layui-table-sort",E="layui-table-checked",_="layui-table-edit",M="layui-table-hover",P="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
      ','
      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
      ","
      "].join("")},a=['',"","
      "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
      ','
      ','
      ',"
      ","{{# } }}",'
      ',"{{# if(d.data.loading){ }}",'
      ','',"
      ","{{# } }}","{{# var left, right; }}",'
      ',e(),"
      ",'
      ',a,"
      ","{{# if(left){ }}",'
      ','
      ',e({fixed:!0}),"
      ",'
      ',a,"
      ","
      ","{{# }; }}","{{# if(right){ }}",'
      ','
      ',e({fixed:"right"}),'
      ',"
      ",'
      ',a,"
      ","
      ","{{# }; }}","
      ","{{# if(d.data.totalRow){ }}",'
      ','','',"
      ","
      ","{{# } }}",'
      ','
      ',"
      "].join(""),d=p(window),F=p(document),i=function(e){this.index=++k.index,this.config=p.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=p(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=p.extend({pageName:"page",limitName:"limit"},a.request),a.response=p.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=p(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+D),n=t.elem=p("
      ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(b.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
      ','
      ','
      '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=p(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
      ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=p('
      ');t.pagebar&&((e=p(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+P)).css("width",0),layui.each(e.get().reverse(),function(){var e=p(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){p(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
      ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(I).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=p.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),p.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return x.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],f=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
      "+function(){var e,t=p.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(p(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
      "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),f.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:f}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,f.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(I)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=p.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:p("
      "+l+"
      ").text()}),['','
      "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(p.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
      "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),d=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=p(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=p.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,r=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=r(t[l.checkName]),(e=d.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](E),"radio"===i.type&&e.siblings().removeClass(E)):"radio"===i.type&&delete t[l.checkName])}),d.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(R)?t.first():t).prop("checked",r(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=p(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){x.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",p.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=p(['
      ','',"
      "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=p(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
      ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),f.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
    • "+(t.fieldTitle||t.title||t.field)+"
    • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=p(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return f.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});b.ie?f.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
    • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
    • ','
    • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
    • '].join(""),done:function(e,t){t.on("click",function(){var e=p(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return f.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=p(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!p(t).children("."+P).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",p.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=p(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",p.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=p(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",p.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=p(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){p(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=p(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),f.close(s.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=p(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=p(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=p(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:p.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:p.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(p.extend({index:t},e))}};return p.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");p(e.target).is(t)||p(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=p(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=p(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=s.col(i),a=e.closest("tr").data("index"),a=k.cache[s.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=p("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+_)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(s.layBody.on("change","."+_,function(){var e=p(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+_,function(){p(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=p(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e,t){var a=p(this),i=a.parent(),l=i.data("key"),n=s.col(l),o=i.parent().data("index"),i=i.children(y),d="layui-table-cell-c",r=p('');"tips"===(t=t||n.expandedMode||u.cellExpandedMode)?s.tipsIndex=f.tips(['
      ',i.html(),"
      ",''].join(""),i[0],{tips:[3,""],time:-1,anim:-1,maxWidth:b.ios||b.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){f.close(t)})}}):(s.elem.find("."+d).trigger("click"),s.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],p(this).children().each(function(e){var t=p(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=p.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=p(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(r[t.field]=!0)}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),p("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=p.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=p.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},p(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
      '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
      ',a[H]?o.flexIconOpen:o.flexIconClose,"
      ",o.showIcon?'
      '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
      ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}),V("renderTreeTable2-"+d,function(){x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
      '+i.text.none+"
      "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
      ','
      ','
      ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
      ",s.edit?(a={add:'',update:'',del:''},n=['
      '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
      "):void 0):"","
      "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
      '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},p=['
        ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
      • ",'',"
      • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

        '+(t||"")+"

        ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
          ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
          "),n=1;n<=a.length;n++){var o='
        • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
        • ":i+=o}i+="
        "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
        ',D.digit(t+1)+".","
        "].join(""):"",'
        ',e||" ","
        ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
        '),C=x('
        '),r=x('
        '),_=x('
        '),u=x('
        '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
      • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
        '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
      • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
        '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); +/** v2.9.4 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.4"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,o,r,c,u,a,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,o=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},r=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(s-t.offsetWidth)/2:"right"===n.align&&(u=u-s+t.offsetWidth),(u=u+s+c>r("width")?r("width")-s-c:u)r()&&(i.top>f+c&&i.top<=r()?a=i.top-f-2*c:n.allowBottomOut||(a=r()-f-2*c)<0&&(a=0)),(s=n.position)&&(e.style.position=s),e.style.left=u+("fixed"===s?0:o(1))+"px",e.style.top=a+("fixed"===s?0:o())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,o,r=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.distanceY=0,n.direction="none",r.onTouchStart)&&r.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["到第","页","确定"])[0],'',e[1]+'",""].join("")};return['
        ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
        "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="layui-"+a+"-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
        \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
        ","
        \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
        Please re-select",invalidDate:"Invalid date",formatError:["The date format error
        Must be followed\uff1a
        ","
        It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
      • '+t.text+"
      • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
        ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
        "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(n.type)?new Date:null),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],index:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

        "+m.time[t]+"

          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
        ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),(f=lay(c).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})}),layui.device().mobile&&f.css({overflowY:"auto",touchAction:"pan-y"})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),o=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,n.endTime)),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
        a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
        ","
        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
        "],tr:[2,"","
        "],col:[2,"","
        "],td:[3,"","
        "],_default:y.htmlSerialize?[0,"",""]:[1,"X
        ","
        "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
        t
        ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
        a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
        ":"";return a.zIndex=o,t([a.shade?'
        ':"",'
        '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
        ':''):"")+((1!=a.type||!e)&&a.content||"")+'
        '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
        "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
        '+e+"
        "}():"")+(a.resize?'':"")+"
        "],s,m('
        ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+u[0]).find("#"+s.id)[0])e=m("#"+s.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?g.restore(t):i.hideOnClose&&(n.show(),e.show());else{switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==g.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:d.btn[0],g.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,g.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||g.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+l).find("."+u[5]).before(t)):c.append(e[1]),m("#"+u.MOVE)[0]||c.append(d.moveElem=i),o.layero=m("#"+u[0]+l),o.shadeo=m("#"+u.SHADE+l),s.scrollbar||d.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==g.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),g.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),!s.fixed||d.events.resize[o.index]||(d.events.resize[o.index]=function(){o.resize()},h.on("resize",d.events.resize[o.index])),s.time<=0||setTimeout(function(){g.close(o.index)},s.time),o.move().callback(),u.anim[s.anim]&&(a="layer-anim "+u.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=h.height()&&(n[1]=h.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(h.height()-n[1])/2,e.offsetLeft=(h.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=h.width()-n[0]:"b"===t.offset?e.offsetTop=h.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=h.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=h.width()-n[0]):"rb"===t.offset?(e.offsetTop=h.height()-n[1],e.offsetLeft=h.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?h.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?h.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=h.scrollTop(),e.offsetLeft+=h.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=h.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0h.width()&&(o=h.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=h.height()-n,a||d.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),g.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(u[4]).hide(),d.restScrollbar(e),c.hide())},g.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),g.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(u[4]).show(),o.scrollbar?d.restScrollbar(e):d.setScrollbar(e),i.show()},g.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&g.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");g.style(t,{top:e?0:h.scrollTop(),left:e?0:h.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},g.title=function(e,t){m("#"+u[0]+(t||g.index)).find(u[1]).html(e)},g.close=function(o,s){var l,e,r=(t=m("."+u[0]).children("#"+o).closest("."+u[0]))[0]?(o=t.attr("times"),t):m("#"+u[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===d.type[1]&&"object"===r.attr("conType")){r.children(":not(."+u[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+u[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof d.end[o]&&d.end[o](),delete d.end[o],"function"==typeof s&&s(),d.events.resize[o]&&(h.off("resize",d.events.resize[o]),delete d.events.resize[o])},m("#"+u.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==g.ie&&d.reselect(),d.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(r.attr("minLeft"))),g.ie&&g.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},g.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&g.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},g.closeLast=function(e,t){g.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"),t)},g.cache||{}),v=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};g.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,g.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+v("prompt"),maxWidth:h.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?g.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},g.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,g.open(m.extend({type:1,skin:"layui-layer-tab"+v("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
          '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
        ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},g.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],l=i.start||0,r=n.success;if(s.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===o.length)return g.msg("没有图片")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");g.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&g.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,g.close(s.index),g.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":g.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=g.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=o[l].src,d=function(e){g.close(s.loadi);var t,i=o[l].alt||"";a&&(n.anim=-1),s.index=g.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
        '],1','','',"
        "].join("")),n.toolbar&&t.push(['
        ','','','','','','',"
        "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[l],e),"function"==typeof r&&r(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){g.close(s.loadi),g.msg("当前图片地址异常
        是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
      • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
      • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+l+"":l,n?'
        '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
        ":'
        '+t+"
        "),""].join(""))).data("item",i),n&&(a=c('
        '),t=c("
          "),"parent"===o?(a.append(u(t,i[s.children])),l.append(a)):l.append(u(t,i[s.children]))),r.append(l))}),r},a=['
          ',"
          "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),h.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
          ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(f.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(f.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),h.close=function(e){e=f.getThis(e);return e?(e.remove(),f.call(e)):this},h.reload=function(e,i,t){e=f.getThis(e);return e?(e.reload(i,t),f.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return f.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,x=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=g.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",b="layui-slider-bar",T="layui-slider-wrap",w="layui-slider-wrap-btn",M="layui-slider-tips",L="layui-slider-input-txt",E="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=g.extend({},t.config,m.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.render=function(){var n=this,a=n.config,e=g(a.elem);if(1a.max&&(a.value=a.max),l=Math.floor((a.value-a.min)/(a.max-a.min)*100)+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
          '+(a.tips?'
          ":"")+'
          '+(a.range?'
          ':"")+"
          ",l=g(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=g(i),a.range?(n.elemTemp.find("."+T).eq(0).data("value",a.value[0]),n.elemTemp.find("."+T).eq(1).data("value",a.value[1])):n.elemTemp.find("."+T).data("value",a.value),l.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
          ')}n.elemTemp.append(r)}function c(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+M).html(e)}function v(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+T);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function p(e){"vertical"===a.type?n.elemTemp.find("."+M).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+M).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=g('
          '),l.css("position","relative"),l.append(e),l.find("."+L).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(f),n.elemTemp.find("."+w).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(c(s=n.elemTemp.find("."+w)),p(v(s))):n.elemTemp.find("."+w).on("mouseover",function(){c(g(this));var e=v(g(this));clearTimeout(t),t=setTimeout(function(){p(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+M).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,d=u.config,c=u.elemTemp,v=function(){return"vertical"===d.type?d.height:c[0].offsetWidth},p=c.find("."+T),o=c.next(".layui-slider-input"),r=o.children("."+L).children("input").val(),m=100/((d.max-d.min)/Math.ceil(d.step)),f=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=d.range?n:l,d.change&&d.change(u.value),"done"===i&&d.done&&d.done(u.value)},h=function(e){var t=e/v()*100/m,i=Math.round(t)*m;return i=e==v()?Math.ceil(t)*m:i},y=g(['
          v()?v():t)/v()*100/m;f(t,o),r.addClass(E),c.find("."+M).show(),e.preventDefault()},n=function(e){r.removeClass(E),d.tipsAlways||setTimeout(function(){c.find("."+M).hide()},e)},a=function(){n&&n(x.touchEventsSupported()?1e3:0),y.remove(),d.done&&d.done(u.value),x.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",i),y.on("mouseup",a).on("mouseleave",a),x.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),c.on("click",function(e){var t=g("."+w),i=g(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===d.type?v()-e.clientY+i.offset().top-g(window).scrollTop():e.clientX-i.offset().left-g(window).scrollLeft())<0?0:t)>v()?v():t)/v()*100/m,t=d.range?"vertical"===d.type?Math.abs(t-parseInt(g(p[0]).css("bottom")))>Math.abs(t-parseInt(g(p[1]).css("bottom")))?1:0:Math.abs(t-p[0].offsetLeft)>Math.abs(t-p[1].offsetLeft)?1:0:0,f(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){g(this).on("click",function(){r=o.children("."+L).children("input").val();var e=((r=1==t?r-d.stepd.max?d.max:Number(r)+d.step)-d.min)/(d.max-d.min)*100/m;f(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)d.max?d.max:e,((this.value=e)-d.min)/(d.max-d.min)*100/m);f(e,0,"done")};o.children("."+L).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},m.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
          "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],r=e.elemPicker=k(['
          ','
          ','
          ','
          ','
          ','
          ',"
          ",'
          ','
          ',"
          ","
          ",'
          ','
          ','
          ',"
          ","
          ",i.predefine?(o=['
          '],layui.each(i.colors,function(e,i){o.push(['
          ','
          ',"
          "].join(""))}),o.push("
          "),o.join("")):"",'
          ','
          ','',"
          ",'
          ','','',"","
          "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(r)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+M),r=o[0].style.backgroundColor;r?(e=Y(F(r)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(r):"rgba"===o?(o=F(r),3===(r.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(r),r=280*r.slice(r.lastIndexOf(",")+1,r.length-1),i.elemPicker.find("."+D).css("left",r)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),t=n.elemPicker.find("."+E),u=n.elemPicker.find("."+T),f=n.elemPicker.find("."+D),p=e[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,y=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),m=function(e,i,o,t){n.select(e,i,o);var r=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");y.addClass(x).removeClass(P),c[0].style.background="rgb("+r.r+", "+r.g+", "+r.b+")","torgb"===a?i.val("rgb("+r.r+", "+r.g+", "+r.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+r.r+", "+r.g+", "+r.b+", "+t+")"),c[0].style.background="rgba("+r.r+", "+r.g+", "+r.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+r.r+", "+r.g+", "+r.b+", 0), rgb("+r.r+", "+r.g+", "+r.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
          '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var t=this.offsetTop,r=e.clientY;b(function(e){var i=t+(e.clientY-r),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;m(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+L.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;m(p=i,g,h,v),e.preventDefault()}),t.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),b(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight-3,r=d[0].offsetWidth-3,r=((o=r<(o=o<-3?-3:o)?r:o)+3)/260*100,o=100-((i=t<(i=i<-3?-3:i)?t:i)+3)/180*100;m(p,g=r,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top-3+L.scrollTop(),o=e.clientX-k(this).offset().left-3+L.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;m(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger(e,"mousedown")}),f.on("mousedown",function(e){var t=this.offsetLeft,r=e.clientX;b(function(e){var i=t+(e.clientX-r),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);m(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);m(p,g,h,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,m(i.h,i.s,i.b,o)})}),r.touchEventsSupported()&&layui.each([{elem:s,eventType:"click"},{elem:u,eventType:"click"},{elem:d,eventType:"mousedown"}],function(e,t){r.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var r=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+r,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,r,n,l=k.trim(d.val());-1>16,g:(65280&r)>>8,b:255&r},t=Y(n),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),L.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(t,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
          '+(i.content||"")+"
          "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
          '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
          ',"
          "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
          ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
          \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
          '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(g)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

          '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)})),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
          ','
          ','','
          ','
          ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
          "+t.label+"
          ":'
          '+C.trim(t.innerHTML)+"
          "):s.push('
          '+C.trim(t.innerHTML||c)+"
          ")}),0===s.length&&s.push('
          \u6ca1\u6709\u9009\u9879
          '),s.join("")+"
          "),"
          "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
          ",(s={checkbox:[n[0]?"
          "+n[0]+"
          ":"primary"===a?"":"
          ",''].join(""),"switch":"
          "+((t.checked?n[0]:n[1])||"")+"
          "})[a]||s.checkbox,"
          "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
          ','',"
          "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
          ","
          "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,O=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=f.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return r(e).html()}catch(t){return e}}(t)||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
          "+i+"
          ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",u=".layui-table-fixed-r",I=".layui-table-pageview",E=".layui-table-sort",A="layui-table-checked",_="layui-table-edit",M="layui-table-hover",P="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
          ','
          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
          ","
          "].join("")},a=['',"","
          "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
          ','
          ','
          ',"
          ","{{# } }}",'
          ',"{{# if(d.data.loading){ }}",'
          ','',"
          ","{{# } }}","{{# var left, right; }}",'
          ',e(),"
          ",'
          ',a,"
          ","{{# if(left){ }}",'
          ','
          ',e({fixed:!0}),"
          ",'
          ',a,"
          ","
          ","{{# }; }}","{{# if(right){ }}",'
          ','
          ',e({fixed:"right"}),'
          ',"
          ",'
          ',a,"
          ","
          ","{{# }; }}","
          ","{{# if(d.data.totalRow){ }}",'
          ','','',"
          ","
          ","{{# } }}",'
          ','
          ',"
          "].join(""),d=f(window),F=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+D),n=t.elem=f("
          ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
          ','
          ','
          '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
          ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
          ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+P)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
          ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(I).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
          "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
          "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+A+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(I)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
          "+l+"
          ").text()}),['','
          "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
          "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){v.render(a.find(t))})},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),d=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=f(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=f.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,r=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=r(t[l.checkName]),(e=d.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](A),"radio"===i.type&&e.siblings().removeClass(A)):"radio"===i.type&&delete t[l.checkName])}),d.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(R)?t.first():t).prop("checked",r(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(E);t.layHeader.find("th").find(E).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
          ','',"
          "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),self!==parent&&(e=r.elem("input",{style:"position: absolute; left: 0; top: 0; opacity: 0.01;"}),document.body.appendChild(e),e.focus(),document.body.removeChild(e)),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
          ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),p.close(c.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],c.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
        • "+(t.fieldTitle||t.title||t.field)+"
        • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=c.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,c.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&c.setParentCol(!t,e),c.resize(),layui.event.call(this,N,"colToggled("+u+")",{col:i,config:s}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
        • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
        • ','
        • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
        • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(c,s.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(c.layHeader.html());r.append(c.layMain.find("table").html()),r.append(c.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!f(t).children("."+P).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+u+")",f.extend({event:t,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,N,"colTool("+u+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+u+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||s.cellMinWidth,d.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(E),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(E+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),a=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):(c.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+u+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+u+")",r.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+u+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+_)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+_,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+u+")",l)}).on("blur","."+_,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),d=i.children(y),i="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=p.tips(['
          ',d.html(),"
          ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(r[t.field]=!0)}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
          '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
          ',a[H]?o.flexIconOpen:o.flexIconClose,"
          ",o.showIcon?'
          '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
          ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}),V("renderTreeTable2-"+d,function(){x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
          '+i.text.none+"
          "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
          ','
          ','
          ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
          ",s.edit?(a={add:'',update:'',del:''},n=['
          '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
          "):void 0):"","
          "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
          '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
          ','
          ','","
          ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
            ',"
            "].join("")},p=['
            ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
            ','",'","
            ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
            "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
          • ",'',"
          • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

            '+(t||"")+"

            ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
              ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
              "),n=1;n<=a.length;n++){var o='
            • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
            • ":i+=o}i+="
            "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
            ',D.digit(t+1)+".","
            "].join(""):"",'
            ',e||" ","
            ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
            '),C=x('
            '),r=x('
            '),_=x('
            '),u=x('
            '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
          • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
            '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
          • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
            '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); //# sourceMappingURL=layui.js.map diff --git a/dist/layui.js.map b/dist/layui.js.map index 5e18b36c..f465befd 100644 --- a/dist/layui.js.map +++ b/dist/layui.js.map @@ -1 +1 @@ -{"version":3,"sources":["layui.js","modules/layui.all.js","modules/lay.js","modules/laytpl.js","modules/laypage.js","modules/laydate.js","modules/jquery.js","modules/layer.js","modules/util.js","modules/dropdown.js","modules/slider.js","modules/colorpicker.js","modules/element.js","modules/upload.js","modules/form.js","modules/table.js","modules/treeTable.js","modules/tree.js","modules/transfer.js","modules/carousel.js","modules/rate.js","modules/flow.js","modules/code.js"],"names":["win","jsPath","doc","document","config","modules","status","timeout","event","Layui","this","v","GLOBAL","LAYUI_GLOBAL","getPath","currentScript","src","js","scripts","last","length","i","readyState","dir","substring","lastIndexOf","error","msg","type","console","isOpera","opera","toString","builtin","lay","layer","laydate","laypage","laytpl","form","upload","dropdown","transfer","tree","table","treeTable","element","rate","colorpicker","slider","carousel","flow","util","code","jquery","all","layui.all","EV_REMOVE","prototype","cache","define","deps","factory","use","setApp","app","exports","layui","callback","apps","from","node","url","that","head","getElementsByTagName","item","jQuery","fn","on","each","index","splice","$","onScriptLoad","e","readyRegExp","navigator","platform","test","currentTarget","srcElement","removeChild","poll","onCallback","setTimeout","push","slice","apply","host","match","location","base","replace","createElement","async","charset","version","Date","getTime","appendChild","attachEvent","indexOf","addEventListener","disuse","isArray","getStyle","name","style","currentStyle","getComputedStyle","getPropertyValue","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","getAttribute","setAttribute","addcss","firename","modName","img","Image","complete","onload","onerror","options","key","o","clone","extend","router","hash","data","path","search","split","obj","pathname","_index","substr","settings","storage","localStorage","JSON","parse","value","remove","stringify","sessionData","sessionStorage","device","agent","userAgent","toLowerCase","getVersion","label","exp","RegExp","result","os","ie","ActiveXObject","weixin","android","ios","mobile","hint","_typeof","operand","String","Object","call","_isArray","len","callFn","sort","arr","desc","notClone","o1","o2","v1","v2","isNaN","isNum","reverse","stope","thisEvent","stopPropagation","cancelBubble","onevent","events","params","filter","eventName","filterName","_","off","debounce","func","wait","context","args","arguments","clearTimeout","throttle","cooldown","window","selector","Class","elem","querySelectorAll","Array","searchElement","fromIndex","rst","val","constructor","ai","target","digit","num","str","Math","pow","elemName","attr","hasScrollbar","body","scrollHeight","innerHeight","documentElement","clientHeight","getStyleRules","rules","sheet","styleSheet","cssRules","styleText","text","cssText","innerHTML","styleElem","find","append","position","opts","scrollArea","winArea","margin","left","top","rect1","clickType","rect","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","SYSTEM_RELOAD","othis","attrName","attrValue","Function","ev","errorText","join","isTopElem","topElems","matched","clipboard","writeText","legacyCopy","opacity","select","execCommand","done","err","then","passiveSupported","defineProperty","get","removeEventListener","touchEventsSupported","touchSwipe","state","onMove","onEnd","targetElem","pointerStart","x","y","pointerEnd","distanceX","distanceY","direction","timeStart","onStart","touches","passive","now","onTouchStart","preventDefault","abs","onTouchMove","onTouchEnd","__lay_touchswipe_cb_","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","undefined","thisKey","thisValue","width","height","removeAttr","html","parentNode","detachEvent","open","close","tool","escape","inner","source","template","tagExp","__","jss","jsse","tag","start","render","DISABLED","view","elemArr","countText","plate","groups","Number","layout","count","curr","limits","limit","pages","ceil","prev","next","views","page","pager","first","halve","floor","end","max","theme","def","limitTemplet","refresh","skip","skipText","jump","isskip","childs","btn","input","nodeName","keyCode","load","even","isLayui","ready","MOD_NAME","MOD_ID","weekStart","laydate_dir","set","thisModule","inst","content","reload","THIS","LIMIT_YEAR","ELEM_STATIC","ELEM_LIST","ELEM_SELECTED","ELEM_HINT","ELEM_PREV","ELEM_NEXT","ELEM_CONFIRM","ELEM_TIME_TEXT","ELEM_TIME_BTN","ELEM_PREVIEW","ELEM_SHADE","newThat","getThis","init","dateType","formatArr","format","isLeapYear","year","range","isInitValue","min","trigger","show","showBottom","isPreview","btns","lang","calendar","mark","holidays","zIndex","change","autoConfirm","shade","cn","weeks","time","timeTips","startTime","endTime","dateTips","month","tools","confirm","clear","invalidDate","formatError","preview","en","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","0-1-1","0-2-14","0-3-8","0-3-12","0-4-1","0-5-1","0-5-4","0-6-1","0-9-10","0-10-1","0-12-25","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","spanY","spanM","divContent","thead","theadTr","tr","insertRow","j","th","insertCell","insertBefore","ELEM_MAIN","title","shortcuts","btnSetting","dataset","timeBtn","dateTime","endState","listYM","checkDate","click","main","isPrimaryColor","thisElemDate","thisId","insertAdjacentHTML","changeEvent","renderAdditional","div","hinTimer","ms","getAsYM","Y","M","thisMaxDate","vals","arrDate","minMaxError","checkValid","getEndDate","initDate","startEnd","thisv","parseFloat","EYM","_i","_v","getDateTime","td","YMD","keys","idx","dayStr","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","setFullYear","getDay","index_","st","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","span","scroll","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","ym","closeList","choose","scrollTop","haveSpan","olElem","tips","elemBtn","elemPreview","color","thisTime","param","panelIndex","isChange","YM","dateTimeTemp","active","addSubYear","isYear","isMonth","prevYear","prevMonth","nextMonth","nextYear","header","layYM","layType","tagName","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","getInst","one","concat","amd","global","module","w","Error","noGlobal","deletedIds","class2type","hasOwn","hasOwnProperty","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","isArrayLike","isWindow","toArray","pushStack","elems","ret","merge","prevObject","map","eq","copyIsArray","copy","deep","isFunction","isPlainObject","expando","random","isReady","noop","isNumeric","realStringObj","isEmptyObject","nodeType","ownFirst","globalEval","trim","execScript","camelCase","string","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","unloadHandler","childNodes","els","seed","m","nid","nidselect","newSelector","newContext","ownerDocument","exec","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createPositionalPseudo","argument","matchIndexes","parent","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","innerText","elemLang","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","button","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","rparentsprev","charAt","parseHTML","guaranteedUnique","contents","sibling","targets","closest","l","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","contentWindow","readyList","rnotwhite","detach","completed","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","promise","always","deferred","fail","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","triggerHandler","doScroll","frameElement","doScrollCheck","inlineBlockNeedsLayout","container","zoom","deleteExpando","shrinkWrapBlocksVal","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","internalKey","isNode","toJSON","thisCache","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","shrinkWrapBlocks","pnum","rcssNum","cssExpand","isHidden","el","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","access","chainable","emptyGet","raw","bulk","rcheckableType","rtagName","rscriptType","rleadingWhitespace","nodeNames","createSafeFragment","safeFrag","createDocumentFragment","fragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","wrapMap","option","legend","area","col","_default","getAll","found","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","rhtml","rtbody","fixDefaultChecked","defaultChecked","buildFragment","selection","ignored","wrap","safe","nodes","htmlPrefilter","createTextNode","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","t","handleObjIn","special","eventHandle","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","handleObj","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","metaKey","original","which","charCode","eventDoc","fromElement","pageX","scrollLeft","clientLeft","pageY","clientTop","relatedTarget","toElement","blur","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","fragmentDiv","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","oldData","curData","domManip","collection","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","fixCloneNodeIssues","defaultSelected","forceAcceptData","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","pixelPositionVal","pixelMarginRightVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","reliableMarginLeftVal","rmargin","rnumnonpx","swap","old","computeStyleTests","divStyle","marginLeft","marginRight","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","getStyles","curCSS","rposition","addGetHookIf","conditionFn","hookFn","opener","computed","maxWidth","minWidth","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","rnumsplit","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","showHide","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","cssProps","float","origName","isFinite","$1","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","propHooks","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","tick","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","timer","anim","*","tweener","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","nodeHook","boolHook","ruseDefault","getSetInput","rfocusable","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rclickable","rclass","removeProp","tabindex","for","getClass","classes","clazz","finalValue","curValue","toggleClass","stateVal","classNames","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","rhash","requireNonComma","depth","comma","parseXML","DOMParser","parseFromString","loadXML","rts","rheaders","rnoContent","rprotocol","rurl","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxConvert","s","response","isSuccess","conv2","current","conv","converters","responseFields","dataFilter","filterHidden","lastModified","etag","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","firstDataType","ct","finalDataType","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","buildParams","serialize","serializeArray","xhr","createActiveXHR","documentMode","createStandardXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","scriptCharset","oldCallbacks","rjsonp","_load","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","getWindow","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","delegate","undelegate","size","andSelf","layer_dir","removeFocus","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","innerWidth","outerWidth","titHeight","outerHeight","btnHeight","setHeight","maxHeight","offsetTop","offsetLeft","layArea","goal","tipsG","guide","autoLeft","tipLeft","where","tipTop","padding-right","_DOC","DATA_NAME","resizeElem","dict","eventMoveElem","eventResizeElem","docEvent","setRig","setBot","X","stX","stY","moveOut","resizing","moveEnd","openLayer","IE6","shadeClose","full","reselect","sthis","setTop","record","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","contElem","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","isfix","closeAnim","WRAP","domsElem","closeLast","prompt","placeholder","formType","maxlength","tab","photos","loop","toolbar","imgIndex","pushData","alt","pid","thumb","imgprev","tabimg","imgnext","errorMsg","keyup","isNumber","getTransform","transforms","rotate","scaleX","touchEndCallback","imgElem","transform","ratio","delta","wheelDelta","detail","zoomElem","threshold","loadi","loadImage","winarea","imgarea","wh","_$","isMobile","_win","propSuffix","deliver","fixbar","elemTopBar","setTopBar","ELEM","$doc","$target","bars","default","$scroll","bar1","bar2","elemBar","lay-type","bgcolor","countdown","clock","countTime","d","h","setTime","timeAgo","onlyDate","stamp","toDateString","years","days","milliseconds","meridiem","getMilliseconds","customMeridiem","hm","yy","yyyy","MM","dd","H","HH","hh","A","mm","ss","SSS","unescape","openWin","specs","toVisibleArea","scrollElem","SCROLL_NAME","OFFSET_NAME","scrollValue","scrollOffset","thisOffset","thisElem","vertical","callbacks","attrSelector","DATANAME","dataCache","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX","customName","reloadData","STR_ELEM","STR_ITEM_UP","STR_ITEM_DOWN","STR_MENU_TITLE","STR_ITEM_GROUP","STR_ITEM_PARENT","STR_ITEM_CHECKED","STR_ITEM_CHECKED2","STR_MENU_PANEL","STR_MENU_PANEL_L","STR_ELEM_SHADE","STR_GROUP_TITLE","isAllowSpread","isSpreadItem","accordion","rerender","elemView","elemBody","getDefaultView","elemUl","eachItemView","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","delayRemove","prevElem","isClickAllScope","clickScope","elemGroup","spread","elemPrev","normalizedDelay","isMouseEnter","prevElemCallback","isAccordion","contentElem","needSpread","groupSibs","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","minValue","maxValue","scaleFir","scaleSec","hasRender","elemTemp","number","elemInput","slide","sliderWidth","sliderWrap","tipsTxt","setTips","margin-bottom","sliderAct","sliderTxt","inputValue","offsetValue","round","arrValue","firLeft","valueTo","secLeft","wrapWidth","selfValue","oldLeft","elemMove","sliderBtnElem","up","upCall","oldleft","oldx","reaLeft","inputScale","getInputValue","realValue","ICON_PICKER_DOWN","ICON_PICKER_CLOSE","PICKER_TRIG_SPAN","PICKER_TRIG_I","PICKER_SIDE_SLIDER","PICKER_BASIS","PICKER_ALPHA_BG","PICKER_ALPHA_SLIDER","PICKER_BASIS_CUR","PICKER_INPUT","RGBToHSB","rgb","hsb","r","g","HSBToRGB","t1","t3","t2","HSBToHEX","hex","nr","RGBSTo","rgbs","re","$win","alpha","predefine","colors","elemColorBox","bgstr","background","renderPicker","elemPicker","removePicker","thisElemInd","thisColor","pickerEvents","bindElem","elemPickerInput","backgroundColor","side","basis","alphacolor","alphaslider","_h","_b","_s","_a","pre","z","createMoveElem","oldtop","oldy","maxh","maxw","eventType","simulatedEvent","pointer","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","sidetop","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","tabChange","tabAuto","tabDelete","layid","liElem","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","MORE","BAR","CLOSE","STOPE","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","force","field","acceptMime","drag","multiple","cross-domain","data-format-error","check-error","limit-number","limit-size","elemFile","isFile","initIE","elemForm","FileReader","chooseFiles","reader","readAsDataURL","limitSize","getFiles","ajaxSend","successful","failed","allDone","fileLength","total","request","sets","formData","FormData","resetFileState","unified","res","lengthComputable","loaded","iframeSend","iframeBody","thisFile","pushFile","resetFile","filename","newFile","File","typeName","images","video","audio","toFixed","setChooseFile","setChooseText","dataTransfer","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","precision","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","isShow","thatInput","TIPS","NONE","initValue","selects","reElem","isSearch","nearElem","laySearch","showDown","hideDown","followScroll","notOption","dl","dds","dts","dlHeight","none","posTop","thisDd","ddHeight","setThisDd","prevNext","thisElem1","showDd","firstIndex","cacheNearElem","nearDd","origin","thisDds","eventsType","optionsFirst","switch","SUBTRA","checks","RE_CLASS","indeterminate","ICON","radios","ANIM","forms","sameRadio","renderItem","itemType","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","$dom","checkName","indexName","numbersName","disabledName","thisTable","setColsWidth","getThisTable","getThisTableConfig","parseTempData","item3","tplData","exportTemplet","LAY_COL","HIDE_V","ELEM_VIEW","ELEM_HEADER","ELEM_BODY","ELEM_FIXR","ELEM_PAGE_VIEW","ELEM_SORT","ELEM_CHECKED","ELEM_EDIT","ELEM_GROUP","ELEM_COL_SPECIAL","ELEM_TOOL_PANEL","ELEM_EXPAND","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","loading","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","customHeightFunc","lay-filter","lay-id","renderStyle","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","leftDefaultTemp","elemToolTemp","toolbarHtml","layEvent","print","iconElem","thisItem","pagebarHtml","layPagebar","pagebar","setParentCol","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","getEndTh","colNums","autoColNums","autoWidth","countWidth","cntrWidth","getAutoWidth","eachCols","getScrollWidth","back","patchNums","i3","headerWidth","scrollPatch","haveInit","HAS_SET_COLS_PATCH","errorView","elemNone","layNone","syncCheckAll","renderForm","startLimit","initSort","reloadType","renderData","totalRow","parseData","newData","getTrHtml","trsObj","trs","trs_fixed","trs_fixed_r","tds_fixed","tds_fixed_r","LAY_KEY","edit","trAttr","totalRowData","sortKey","pull","scrollPos","tipsIndex","renderTotal","totalNums","dataTotal","TOTAL_NUMS","totalRowDecimals","thisTotalNum","totalRowText","getContent","TOTAL_ROW","patchElem","getColElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","isCheckAll","isCheckMult","dataIndex","thisData","existChecked","getChecked","checkedElem","currTr","checkedSameElem","fixRElem","_field","elemSort","fromEvent","layInit","selectorText","headerMain","thIndex","thElem","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","ELEM_CELL","_BODY","commonMember","lis","openPanel","panel","fieldTitle","exportFile","printWin","edg","onafterprint","oLeft","pLeft","allowResize","ruleWidth","thatTable","setWidth","nowType","clearCacheKey","del","update","fields","cell","thisTd","setRowEvent","getCol","UNROW","renderGridEdit","editType","ELEM_GRID_DOWN","oldValue","reedit","showGridExpandIcon","elemCell","gridExpand","expandedMode","ELEM_CELL_C","elemCellClose","cellExpandedMode","expandedWidth","cellExpandedWidth","$this","toolFn","errorTips","tdIndex","attrData","tableData","trElem","itemData","row","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","nums","invalidNum","getData","dataTitle","dataMain","fieldsIsHide","textType","csv","xls","alink","reduce","acc","ignoreExport","download","getOptions","hideCol","thisTreeTable","ELEM_FIXL","TABLE_TREE","LAY_DATA_INDEX","LAY_DATA_INDEX_HISTORY","LAY_PARENT_INDEX","LAY_CHECKBOX_HALF","LAY_EXPAND","LAY_HAS_EXPANDED","LAY_ASYNC_STATUS","LAY_CASCADE","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","pIdKey","idTemp","pidTemp","tableId","flatArr","k","treeToFlat","parentId","parentIndex","flat","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","newValue","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","array","asyncSuccessFn","asyncContentType","asyncDataType","asyncJsonpCallback","asyncHeaders","asyncParseData","asyncResponse","str2","str2Obj","dataLevelNew","asyncSetting","asyncUrl","asyncAutoParam","itemArr","asyncType","childItem","data-index","lay-data-index","data-level","childNodesFlat","formatNumber","inherit","expandAll","isAllAsyncDone","isAllExpanded","trAll","trAllObj","dataItem","dataLevel","level","treeOptionsView","dataExpand","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","delNodesFlat","delNode","nodeP","updateCheckStatus","i4","item4","addNodes","newNodes","childKey","childrenNodes","dataAfter","childrenNodesFlat","pageOptions","newNodesHtml","newNodesHtmlObj","trIndexPrev","newNodeIndex","newNodeItem","tableViewElemMAIN","tableViewElemFIXL","tableViewElemFIXR","trIndexNext","scrollIntoViewIfNeeded","includeHalfCheck","checkedData","updateData","setRowCheckedClass","dataP","trsP","isIndeterminate","updateParentCheckStatus","indexP","itemP","checkboxElem","checkedNum","inputElem","isRadio","triggerEvent","trDataP","radioElem","collectNeedExpandNodeIndex","needExpandIndex","nodeData","checkAllNodes","reloadAsyncNode","dataId","getNodesByFilter","isSingle","nodesResult","ELEM_SET","ICON_CLICK","ICON_ADD","ICON_SUB","ELEM_ENTRY","ELEM_TEXT","ELEM_PACK","ELEM_SPREAD","ELEM_LINE_SHORT","ELEM_SHOW","ELEM_EXTEND","showCheckbox","showLine","onlyIconControl","defaultNodeName","checkids","editIcon","hasChild","packDiv","entryDiv","checkClick","operate","entry","elemCheckbox","elemText","touchOpen","packCont","iconClick","updateFieldValue","sibls","setCheckbox","setParentsChecked","thisNodeElem","parentNodeElem","parentCheckbox","parentPack","oncheck","getVal","returnObj","textNew","elemDel","pare","siblingTree","checkState","parentTree","prevDiv","pack","onsearch","checkId","checkData","eachNodes","index2","cloneItem","checkedId","reInput","ELEM_BOX","ELEM_SEARCH","ELEM_DATA","TPL_BOX","checkAllName","showSearch","searchNone","layData","layBtn","listElem","renderCheckBtn","thisDataElem","allElemCheckbox","listElemCheckbox","haveChecked","isHide","stopNone","noneView","createNoneElem","selectedData","thisElemCheckbox","thisBoxElem","siblingInput","thisList","onchange","elemThis","dblclick","thisListElem","isMatch","ELEM_LEFT","ELEM_RIGHT","ELEM_ARROW","ELEM_IND","arrow","indicator","autoplay","elemItem","prevIndex","nextIndex","addIndex","subIndex","tplArrow","goto","tplInd","elemInd","thisIndex","haveSlide","touchEl","isVertical","distance","ICON_RATE","ICON_RATE_SOLID","ICON_RATE_HALF","ICON_SOLID_HALF","ICON_HALF_RATE","readonly","half","setText","action","setvalue","_ul","wide","liElems","ind","score","itemElemWidth","remainder","isActiveIcon","needSelect","shouldHalfIcon","Flow","isOver","lazyimg","mb","isAuto","notDocument","more","over","isLazyimg","elemTop","CONST","ELEM_TAB","ELEM_FULL","ELEM_ITEM","ELEM_LINE","ELEM_LINE_NUM","ELEM_LN_MODE","CDDE_DATA_CLASS","LINE_RAW_WIDTH","about","ln","encode","wordWrap","highlighter","langMarker","codeIndex","mode","rawCode","finalCode","isIframePreview","elemHeaderView","elemToolbar","runPreview","codeElem","createCodeRst","lines","setCodeLayout","elemFixbar","copyElem","reloadCode","obverse","codeRender","createCode","line","codeParse","hasDataClass","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemTabView","elemPreviewView","classNameFull","classNameRestore","htmlElem","ELEM_SCROLLBAR_HIDE","oi","parameters","toolsEvent","addTools","viso","thisItemBody","srcdoc","previewStyle","elemItemBody","codeStyle","multiLine"],"mappings":"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","file":"layui.js","sourcesContent":["/**\r\n * Layui\r\n * Classic modular front-end UI library\r\n * MIT Licensed\r\n */\r\n\r\n;!function(win){\r\n \"use strict\";\r\n\r\n var doc = win.document;\r\n var config = {\r\n modules: {}, // 模块物理路径\r\n status: {}, // 模块加载状态\r\n timeout: 10, // 符合规范的模块请求最长等待秒数\r\n event: {} // 模块自定义事件\r\n };\r\n\r\n var Layui = function(){\r\n this.v = '2.9.3'; // Layui 版本号\r\n };\r\n\r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = win.LAYUI_GLOBAL || {};\r\n\r\n // 获取 layui 所在目录\r\n var getPath = function(){\r\n var jsPath = doc.currentScript ? doc.currentScript.src : function(){\r\n var js = doc.scripts;\r\n var last = js.length - 1;\r\n var src;\r\n for(var i = last; i > 0; i--){\r\n if(js[i].readyState === 'interactive'){\r\n src = js[i].src;\r\n break;\r\n }\r\n }\r\n return src || js[last].src;\r\n }();\r\n\r\n return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);\r\n }();\r\n\r\n // 异常提示\r\n var error = function(msg, type){\r\n type = type || 'log';\r\n win.console && console[type] && console[type]('layui error hint: ' + msg);\r\n };\r\n\r\n var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';\r\n\r\n // 内置模块\r\n var modules = config.builtin = {\r\n lay: 'lay', // 基础 DOM 操作\r\n layer: 'layer', // 弹层\r\n laydate: 'laydate', // 日期\r\n laypage: 'laypage', // 分页\r\n laytpl: 'laytpl', // 模板引擎\r\n form: 'form', // 表单集\r\n upload: 'upload', // 上传\r\n dropdown: 'dropdown', // 下拉菜单\r\n transfer: 'transfer', // 穿梭框\r\n tree: 'tree', // 树结构\r\n table: 'table', // 表格\r\n treeTable: 'treeTable', // 树表\r\n element: 'element', // 常用元素操作\r\n rate: 'rate', // 评分组件\r\n colorpicker: 'colorpicker', // 颜色选择器\r\n slider: 'slider', // 滑块\r\n carousel: 'carousel', // 轮播\r\n flow: 'flow', // 流加载\r\n util: 'util', // 工具块\r\n code: 'code', // 代码修饰器\r\n jquery: 'jquery', // DOM 库(第三方)\r\n\r\n all: 'all',\r\n 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)\r\n };\r\n\r\n // 记录基础数据\r\n Layui.prototype.cache = config;\r\n\r\n // 定义模块\r\n Layui.prototype.define = function(deps, factory){\r\n var that = this;\r\n var type = typeof deps === 'function';\r\n var callback = function(){\r\n var setApp = function(app, exports){\r\n layui[app] = exports;\r\n config.status[app] = true;\r\n };\r\n typeof factory === 'function' && factory(function(app, exports){\r\n setApp(app, exports);\r\n config.callback[app] = function(){\r\n factory(setApp);\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n type && (\r\n factory = deps,\r\n deps = []\r\n );\r\n\r\n that.use(deps, callback, null, 'define');\r\n return that;\r\n };\r\n\r\n // 使用特定模块\r\n Layui.prototype.use = function(apps, callback, exports, from){\r\n var that = this;\r\n var dir = config.dir = config.dir ? config.dir : getPath;\r\n var head = doc.getElementsByTagName('head')[0];\r\n\r\n apps = function(){\r\n if(typeof apps === 'string'){\r\n return [apps];\r\n }\r\n // 当第一个参数为 function 时,则自动加载所有内置模块,且执行的回调即为该 function 参数;\r\n else if(typeof apps === 'function'){\r\n callback = apps;\r\n return ['all'];\r\n }\r\n return apps;\r\n }();\r\n\r\n // 如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery,则不加载内部 jquery 模块\r\n if(win.jQuery && jQuery.fn.on){\r\n that.each(apps, function(index, item){\r\n if(item === 'jquery'){\r\n apps.splice(index, 1);\r\n }\r\n });\r\n layui.jquery = layui.$ = jQuery;\r\n }\r\n\r\n var item = apps[0];\r\n var timeout = 0;\r\n\r\n exports = exports || [];\r\n\r\n // 静态资源host\r\n config.host = config.host || (dir.match(/\\/\\/([\\s\\S]+?)\\//)||['//'+ location.host +'/'])[0];\r\n\r\n // 加载完毕\r\n function onScriptLoad(e, url){\r\n var readyRegExp = navigator.platform === 'PLaySTATION 3' ? /^complete$/ : /^(complete|loaded)$/\r\n if (e.type === 'load' || (readyRegExp.test((e.currentTarget || e.srcElement).readyState))) {\r\n config.modules[item] = url;\r\n head.removeChild(node);\r\n (function poll() {\r\n if(++timeout > config.timeout * 1000 / 4){\r\n return error(item + ' is not a valid module', 'error');\r\n }\r\n config.status[item] ? onCallback() : setTimeout(poll, 4);\r\n }());\r\n }\r\n }\r\n\r\n // 回调\r\n function onCallback(){\r\n exports.push(layui[item]);\r\n apps.length > 1 ?\r\n that.use(apps.slice(1), callback, exports, from)\r\n : ( typeof callback === 'function' && function(){\r\n // 保证文档加载完毕再执行回调\r\n if(layui.jquery && typeof layui.jquery === 'function' && from !== 'define'){\r\n return layui.jquery(function(){\r\n callback.apply(layui, exports);\r\n });\r\n }\r\n callback.apply(layui, exports);\r\n }() );\r\n }\r\n\r\n // 如果引入了聚合板,内置的模块则不必重复加载\r\n if( apps.length === 0 || (layui['layui.all'] && modules[item]) ){\r\n return onCallback(), that;\r\n }\r\n\r\n /*\r\n * 获取加载的模块 URL\r\n * 如果是内置模块,则按照 dir 参数拼接模块路径\r\n * 如果是扩展模块,则判断模块路径值是否为 {/} 开头,\r\n * 如果路径值是 {/} 开头,则模块路径即为后面紧跟的字符。\r\n * 否则,则按照 base 参数拼接模块路径\r\n */\r\n\r\n var url = ( modules[item] ? (dir + 'modules/')\r\n : (/^\\{\\/\\}/.test(that.modules[item]) ? '' : (config.base || ''))\r\n ) + (that.modules[item] || item) + '.js';\r\n url = url.replace(/^\\{\\/\\}/, '');\r\n\r\n // 如果扩展模块(即:非内置模块)对象已经存在,则不必再加载\r\n if(!config.modules[item] && layui[item]){\r\n config.modules[item] = url; // 并记录起该扩展模块的 url\r\n }\r\n\r\n // 首次加载模块\r\n if(!config.modules[item]){\r\n var node = doc.createElement('script');\r\n\r\n node.async = true;\r\n node.charset = 'utf-8';\r\n node.src = url + function(){\r\n var version = config.version === true\r\n ? (config.v || (new Date()).getTime())\r\n : (config.version||'');\r\n return version ? ('?v=' + version) : '';\r\n }();\r\n\r\n head.appendChild(node);\r\n\r\n if(node.attachEvent && !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && !isOpera){\r\n node.attachEvent('onreadystatechange', function(e){\r\n onScriptLoad(e, url);\r\n });\r\n } else {\r\n node.addEventListener('load', function(e){\r\n onScriptLoad(e, url);\r\n }, false);\r\n }\r\n\r\n config.modules[item] = url;\r\n } else { // 缓存\r\n (function poll() {\r\n if(++timeout > config.timeout * 1000 / 4){\r\n return error(item + ' is not a valid module', 'error');\r\n }\r\n (typeof config.modules[item] === 'string' && config.status[item])\r\n ? onCallback()\r\n : setTimeout(poll, 4);\r\n }());\r\n }\r\n\r\n return that;\r\n };\r\n\r\n // 弃用原有的指定模块,以便重新扩展新的同名模块\r\n Layui.prototype.disuse = function(apps){\r\n var that = this;\r\n apps = that.isArray(apps) ? apps : [apps];\r\n that.each(apps, function (index, item) {\r\n if (!config.status[item]) {\r\n // return error('module ' + item + ' is not exist');\r\n }\r\n delete that[item];\r\n delete modules[item];\r\n delete that.modules[item];\r\n delete config.status[item];\r\n delete config.modules[item];\r\n });\r\n return that;\r\n };\r\n\r\n // 获取节点的 style 属性值\r\n Layui.prototype.getStyle = function(node, name){\r\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\r\n return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);\r\n };\r\n\r\n // css 外部加载器\r\n Layui.prototype.link = function(href, fn, cssname){\r\n var that = this;\r\n var head = doc.getElementsByTagName('head')[0];\r\n var link = doc.createElement('link');\r\n\r\n if(typeof fn === 'string') cssname = fn;\r\n\r\n var app = (cssname || href).replace(/\\.|\\//g, '');\r\n var id = 'layuicss-'+ app;\r\n var STAUTS_NAME = 'creating';\r\n var timeout = 0;\r\n\r\n link.href = href + (config.debug ? '?v='+new Date().getTime() : '');\r\n link.rel = 'stylesheet';\r\n link.id = id;\r\n link.media = 'all';\r\n\r\n if(!doc.getElementById(id)){\r\n head.appendChild(link);\r\n }\r\n\r\n if(typeof fn !== 'function') return that;\r\n\r\n // 轮询 css 是否加载完毕\r\n (function poll(status) {\r\n var delay = 100;\r\n var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素\r\n\r\n // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范\r\n if(++timeout > config.timeout * 1000 / delay){\r\n return error(href + ' timeout');\r\n }\r\n\r\n // css 加载就绪\r\n if(parseInt(that.getStyle(getLinkElem, 'width')) === 1989){\r\n // 如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态\r\n if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');\r\n // 如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调\r\n getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();\r\n } else {\r\n getLinkElem.setAttribute('lay-status', STAUTS_NAME);\r\n setTimeout(function(){\r\n poll(STAUTS_NAME);\r\n }, delay);\r\n }\r\n }());\r\n\r\n // 轮询css是否加载完毕\r\n /*\r\n (function poll() {\r\n if(++timeout > config.timeout * 1000 / 100){\r\n return error(href + ' timeout');\r\n };\r\n parseInt(that.getStyle(doc.getElementById(id), 'width')) === 1989 ? function(){\r\n fn();\r\n }() : setTimeout(poll, 100);\r\n }());\r\n */\r\n\r\n return that;\r\n };\r\n\r\n // css 内部加载器\r\n Layui.prototype.addcss = function(firename, fn, cssname){\r\n return layui.link(config.dir + 'css/' + firename, fn, cssname);\r\n };\r\n\r\n // 存储模块的回调\r\n config.callback = {};\r\n\r\n // 重新执行模块的工厂函数\r\n Layui.prototype.factory = function(modName){\r\n if(layui[modName]){\r\n return typeof config.callback[modName] === 'function'\r\n ? config.callback[modName]\r\n : null;\r\n }\r\n };\r\n\r\n // 图片预加载\r\n Layui.prototype.img = function(url, callback, error) {\r\n var img = new Image();\r\n img.src = url;\r\n if(img.complete){\r\n return callback(img);\r\n }\r\n img.onload = function(){\r\n img.onload = null;\r\n typeof callback === 'function' && callback(img);\r\n };\r\n img.onerror = function(e){\r\n img.onerror = null;\r\n typeof error === 'function' && error(e);\r\n };\r\n };\r\n\r\n // 全局配置\r\n Layui.prototype.config = function(options){\r\n options = options || {};\r\n for(var key in options){\r\n config[key] = options[key];\r\n }\r\n return this;\r\n };\r\n\r\n // 记录全部模块\r\n Layui.prototype.modules = function(){\r\n var clone = {};\r\n for(var o in modules){\r\n clone[o] = modules[o];\r\n }\r\n return clone;\r\n }();\r\n\r\n // 拓展模块\r\n Layui.prototype.extend = function(options){\r\n var that = this;\r\n\r\n // 验证模块是否被占用\r\n options = options || {};\r\n for(var o in options){\r\n if(that[o] || that.modules[o]){\r\n error(o+ ' Module already exists', 'error');\r\n } else {\r\n that.modules[o] = options[o];\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n // location.hash 路由解析\r\n Layui.prototype.router = Layui.prototype.hash = function(hash){\r\n var that = this;\r\n var hash = hash || location.hash;\r\n var data = {\r\n path: [],\r\n search: {},\r\n hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''\r\n };\r\n\r\n if(!/^#\\//.test(hash)) return data; // 禁止非路由规范\r\n\r\n hash = hash.replace(/^#\\//, '');\r\n data.href = '/' + hash;\r\n hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];\r\n\r\n // 提取 Hash 结构\r\n that.each(hash, function(index, item){\r\n /^\\w+=/.test(item) ? function(){\r\n item = item.split('=');\r\n data.search[item[0]] = item[1];\r\n }() : data.path.push(item);\r\n });\r\n\r\n return data;\r\n };\r\n\r\n // URL 解析\r\n Layui.prototype.url = function(href){\r\n var that = this;\r\n var data = {\r\n // 提取 url 路径\r\n pathname: function(){\r\n var pathname = href\r\n ? function(){\r\n var str = (href.match(/\\.[^.]+?\\/.+/) || [])[0] || '';\r\n return str.replace(/^[^\\/]+/, '').replace(/\\?.+/, '');\r\n }()\r\n : location.pathname;\r\n return pathname.replace(/^\\//, '').split('/');\r\n }(),\r\n\r\n // 提取 url 参数\r\n search: function(){\r\n var obj = {};\r\n var search = (href\r\n ? function(){\r\n var str = (href.match(/\\?.+/) || [])[0] || '';\r\n return str.replace(/\\#.+/, '');\r\n }()\r\n : location.search\r\n ).replace(/^\\?+/, '').split('&'); // 去除 ?,按 & 分割参数\r\n\r\n // 遍历分割后的参数\r\n that.each(search, function(index, item){\r\n var _index = item.indexOf('=')\r\n ,key = function(){ // 提取 key\r\n if(_index < 0){\r\n return item.substr(0, item.length);\r\n } else if(_index === 0){\r\n return false;\r\n } else {\r\n return item.substr(0, _index);\r\n }\r\n }();\r\n // 提取 value\r\n if(key){\r\n obj[key] = _index > 0 ? item.substr(_index + 1) : null;\r\n }\r\n });\r\n\r\n return obj;\r\n }(),\r\n\r\n // 提取 Hash\r\n hash: that.router(function(){\r\n return href\r\n ? ((href.match(/#.+/) || [])[0] || '/')\r\n : location.hash;\r\n }())\r\n };\r\n\r\n return data;\r\n };\r\n\r\n // 本地持久存储\r\n Layui.prototype.data = function(table, settings, storage){\r\n table = table || 'layui';\r\n storage = storage || localStorage;\r\n\r\n if(!win.JSON || !win.JSON.parse) return;\r\n\r\n // 如果 settings 为 null,则删除表\r\n if(settings === null){\r\n return delete storage[table];\r\n }\r\n\r\n settings = typeof settings === 'object'\r\n ? settings\r\n : {key: settings};\r\n\r\n try {\r\n var data = JSON.parse(storage[table]);\r\n } catch(e) {\r\n var data = {};\r\n }\r\n\r\n if('value' in settings) data[settings.key] = settings.value;\r\n if(settings.remove) delete data[settings.key];\r\n storage[table] = JSON.stringify(data);\r\n\r\n return settings.key ? data[settings.key] : data;\r\n };\r\n\r\n // 本地临时存储\r\n Layui.prototype.sessionData = function(table, settings){\r\n return this.data(table, settings, sessionStorage);\r\n }\r\n\r\n // 设备信息\r\n Layui.prototype.device = function(key){\r\n var agent = navigator.userAgent.toLowerCase();\r\n\r\n // 获取版本号\r\n var getVersion = function(label){\r\n var exp = new RegExp(label + '/([^\\\\s\\\\_\\\\-]+)');\r\n label = (agent.match(exp)||[])[1];\r\n return label || false;\r\n };\r\n\r\n // 返回结果集\r\n var result = {\r\n os: function(){ // 底层操作系统\r\n if(/windows/.test(agent)){\r\n return 'windows';\r\n } else if(/linux/.test(agent)){\r\n return 'linux';\r\n } else if(/iphone|ipod|ipad|ios/.test(agent)){\r\n return 'ios';\r\n } else if(/mac/.test(agent)){\r\n return 'mac';\r\n }\r\n }(),\r\n ie: function(){ // ie 版本\r\n return (!!win.ActiveXObject || \"ActiveXObject\" in win) ? (\r\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\r\n ) : false;\r\n }(),\r\n weixin: getVersion('micromessenger') // 是否微信\r\n };\r\n\r\n // 任意的 key\r\n if(key && !result[key]){\r\n result[key] = getVersion(key);\r\n }\r\n\r\n // 移动设备\r\n result.android = /android/.test(agent);\r\n result.ios = result.os === 'ios';\r\n result.mobile = (result.android || result.ios);\r\n\r\n return result;\r\n };\r\n\r\n // 提示\r\n Layui.prototype.hint = function(){\r\n return {\r\n error: error\r\n };\r\n };\r\n\r\n // typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…\r\n Layui.prototype._typeof = Layui.prototype.type = function(operand){\r\n if(operand === null) return String(operand);\r\n\r\n // 细分引用类型\r\n return (typeof operand === 'object' || typeof operand === 'function') ? function(){\r\n var type = Object.prototype.toString.call(operand).match(/\\s(.+)\\]$/) || []; // 匹配类型字符\r\n var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符\r\n\r\n type = type[1] || 'Object';\r\n\r\n // 除匹配到的类型外,其他对象均返回 object\r\n return new RegExp('\\\\b('+ classType + ')\\\\b').test(type)\r\n ? type.toLowerCase()\r\n : 'object';\r\n }() : typeof operand;\r\n };\r\n\r\n // 对象是否具备数组结构(此处为兼容 jQuery 对象)\r\n Layui.prototype._isArray = Layui.prototype.isArray = function(obj){\r\n var that = this;\r\n var len;\r\n var type = that.type(obj);\r\n\r\n if(!obj || (typeof obj !== 'object') || obj === win) return false;\r\n\r\n len = 'length' in obj && obj.length; // 兼容 ie\r\n return type === 'array' || len === 0 || (\r\n typeof len === 'number' && len > 0 && (len - 1) in obj // 兼容 jQuery 对象\r\n );\r\n };\r\n\r\n // 遍历\r\n Layui.prototype.each = function(obj, fn){\r\n var key;\r\n var that = this;\r\n var callFn = function(key, obj){ // 回调\r\n return fn.call(obj[key], key, obj[key])\r\n };\r\n\r\n if(typeof fn !== 'function') return that;\r\n obj = obj || [];\r\n\r\n // 优先处理数组结构\r\n if(that.isArray(obj)){\r\n for(key = 0; key < obj.length; key++){\r\n if(callFn(key, obj)) break;\r\n }\r\n } else {\r\n for(key in obj){\r\n if(callFn(key, obj)) break;\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n // 将数组中的成员对象按照某个 key 的 value 值进行排序\r\n Layui.prototype.sort = function(arr, key, desc, notClone){\r\n var that = this;\r\n var clone = notClone ? (arr || []) : JSON.parse(\r\n JSON.stringify(arr || [])\r\n );\r\n\r\n // 若未传入 key,则直接返回原对象\r\n if(that.type(arr) === 'object' && !key){\r\n return clone;\r\n } else if(typeof arr !== 'object'){ // 若 arr 非对象\r\n return [clone];\r\n }\r\n\r\n // 开始排序\r\n clone.sort(function(o1, o2){\r\n var v1 = o1[key];\r\n var v2 = o2[key];\r\n\r\n /*\r\n * 特殊数据\r\n * 若比较的成员均非对象\r\n */\r\n\r\n // 若比较的成员均为数字\r\n if(!isNaN(o1) && !isNaN(o2)) return o1 - o2;\r\n // 若比较的成员只存在某一个非对象\r\n if(!isNaN(o1) && isNaN(o2)){\r\n if(key && typeof o2 === 'object'){\r\n v1 = o1;\r\n } else {\r\n return -1;\r\n }\r\n } else if (isNaN(o1) && !isNaN(o2)){\r\n if(key && typeof o1 === 'object'){\r\n v2 = o2;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n\r\n /*\r\n * 正常数据\r\n * 即成员均为对象,也传入了对比依据: key\r\n * 若 value 为数字,按「大小」排序;若 value 非数字,则按「字典序」排序\r\n */\r\n\r\n // value 是否为数字\r\n var isNum = [!isNaN(v1), !isNaN(v2)];\r\n\r\n // 若为数字比较\r\n if(isNum[0] && isNum[1]){\r\n if(v1 && (!v2 && v2 !== 0)){ // 数字 vs 空\r\n return 1;\r\n } else if((!v1 && v1 !== 0) && v2){ // 空 vs 数字\r\n return -1;\r\n } else { // 数字 vs 数字\r\n return v1 - v2;\r\n }\r\n }\r\n\r\n /**\r\n * 字典序排序\r\n */\r\n\r\n // 若为非数字比较\r\n if(!isNum[0] && !isNum[1]){\r\n // 字典序比较\r\n if(v1 > v2){\r\n return 1;\r\n } else if (v1 < v2) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n // 若为混合比较\r\n if(isNum[0] || !isNum[1]){ // 数字 vs 非数字\r\n return -1;\r\n } else if(!isNum[0] || isNum[1]) { // 非数字 vs 数字\r\n return 1;\r\n }\r\n\r\n });\r\n\r\n desc && clone.reverse(); // 倒序\r\n return clone;\r\n };\r\n\r\n // 阻止事件冒泡\r\n Layui.prototype.stope = function(thisEvent){\r\n thisEvent = thisEvent || win.event;\r\n try { thisEvent.stopPropagation() } catch(e){\r\n thisEvent.cancelBubble = true;\r\n }\r\n };\r\n\r\n // 字符常理\r\n var EV_REMOVE = 'LAYUI-EVENT-REMOVE';\r\n\r\n // 自定义模块事件\r\n Layui.prototype.onevent = function(modName, events, callback){\r\n if(typeof modName !== 'string'\r\n || typeof callback !== 'function') return this;\r\n\r\n return Layui.event(modName, events, null, callback);\r\n };\r\n\r\n // 执行自定义模块事件\r\n Layui.prototype.event = Layui.event = function(modName, events, params, fn){\r\n var that = this;\r\n var result = null;\r\n var filter = (events || '').match(/\\((.*)\\)$/)||[]; // 提取事件过滤器字符结构,如:select(xxx)\r\n var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称,如:form.select\r\n var filterName = filter[1] || ''; // 获取过滤器名称,,如:xxx\r\n var callback = function(_, item){\r\n var res = item && item.call(that, params);\r\n res === false && result === null && (result = false);\r\n };\r\n\r\n // 如果参数传入特定字符,则执行移除事件\r\n if(params === EV_REMOVE){\r\n delete (that.cache.event[eventName] || {})[filterName];\r\n return that;\r\n }\r\n\r\n // 添加事件\r\n if(fn){\r\n config.event[eventName] = config.event[eventName] || {};\r\n\r\n if (filterName) {\r\n // 带filter不支持重复事件\r\n config.event[eventName][filterName] = [fn];\r\n } else {\r\n // 不带filter处理的是所有的同类事件,应该支持重复事件\r\n config.event[eventName][filterName] = config.event[eventName][filterName] || [];\r\n config.event[eventName][filterName].push(fn);\r\n }\r\n return this;\r\n }\r\n\r\n // 执行事件回调\r\n layui.each(config.event[eventName], function(key, item){\r\n // 执行当前模块的全部事件\r\n if(filterName === '{*}'){\r\n layui.each(item, callback);\r\n return;\r\n }\r\n\r\n // 执行指定事件\r\n key === '' && layui.each(item, callback);\r\n (filterName && key === filterName) && layui.each(item, callback);\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // 新增模块事件\r\n Layui.prototype.on = function(events, modName, callback){\r\n var that = this;\r\n return that.onevent.call(that, modName, events, callback);\r\n }\r\n\r\n // 移除模块事件\r\n Layui.prototype.off = function(events, modName){\r\n var that = this;\r\n return that.event.call(that, modName, events, EV_REMOVE);\r\n };\r\n\r\n // 防抖\r\n Layui.prototype.debounce = function (func, wait) {\r\n var timeout;\r\n return function () {\r\n var context = this;\r\n var args = arguments;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function () {\r\n func.apply(context, args);\r\n }, wait);\r\n }\r\n };\r\n\r\n // 节流\r\n Layui.prototype.throttle = function (func, wait) {\r\n var cooldown = false;\r\n return function () {\r\n var context = this;\r\n var args = arguments;\r\n if (!cooldown) {\r\n func.apply(context, args);\r\n cooldown = true;\r\n setTimeout(function () {\r\n cooldown = false;\r\n }, wait);\r\n }\r\n }\r\n };\r\n\r\n // exports layui\r\n win.layui = new Layui();\r\n\r\n}(window); // gulp build: layui-footer\r\n\r\n","/**\r\n * 用于打包聚合版,该文件不会存在于构建后的目录 \r\n */\r\n \r\nlayui.define(function(exports){\r\n var cache = layui.cache;\r\n layui.config({\r\n dir: cache.dir.replace(/lay\\/dest\\/$/, '')\r\n });\r\n exports('layui.all', layui.v);\r\n});","\r\n/** lay 基础模块 | MIT Licensed */\r\n\r\n;!function(window){ // gulp build: lay-header\r\n \"use strict\";\r\n\r\n var MOD_NAME = 'lay'; // 模块名\r\n var document = window.document;\r\n\r\n /**\r\n * 元素查找\r\n * @param {string | HTMLElement | JQuery} selector\r\n */\r\n var lay = function(selector){\r\n return new Class(selector);\r\n };\r\n\r\n // 构造器\r\n var Class = function(selector){\r\n var that = this;\r\n var elem = typeof selector === 'object' ? function(){\r\n // 仅适配简单元素对象\r\n return layui.isArray(selector) ? selector : [selector];\r\n }() : (\r\n this.selector = selector,\r\n document.querySelectorAll(selector || null)\r\n );\r\n\r\n lay.each(elem, function(index, item){\r\n that.push(elem[index]);\r\n });\r\n };\r\n\r\n /*\r\n * API 兼容\r\n */\r\n Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex) {\r\n var rst = -1;\r\n fromIndex = fromIndex || 0;\r\n layui.each(this, function(index, val){\r\n if (searchElement === val && index >= fromIndex) {\r\n rst = index;\r\n return !0;\r\n }\r\n });\r\n return rst;\r\n };\r\n\r\n /*\r\n lay 对象操作\r\n */\r\n\r\n Class.fn = Class.prototype = [];\r\n Class.fn.constructor = Class;\r\n\r\n /**\r\n * 将两个或多个对象的内容深度合并到第一个对象中\r\n * @callback ExtendFunc\r\n * @param {*} target - 一个对象\r\n * @param {...*} objectN - 包含额外的属性合并到第一个参数\r\n * @returns {*} 返回合并后的对象\r\n */\r\n /** @type ExtendFunc*/\r\n lay.extend = function(){\r\n var ai = 1;\r\n var length;\r\n var args = arguments;\r\n var clone = function(target, obj){\r\n target = target || (layui.type(obj) === 'array' ? [] : {}); // 目标对象\r\n for(var i in obj){\r\n // 若值为普通对象,则进入递归,继续深度合并\r\n target[i] = (obj[i] && obj[i].constructor === Object)\r\n ? clone(target[i], obj[i])\r\n : obj[i];\r\n }\r\n return target;\r\n };\r\n\r\n args[0] = typeof args[0] === 'object' ? args[0] : {};\r\n length = args.length\r\n\r\n for(; ai < length; ai++){\r\n if(typeof args[ai] === 'object'){\r\n clone(args[0], args[ai]);\r\n }\r\n }\r\n return args[0];\r\n };\r\n\r\n /**\r\n * IE 版本\r\n * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false\r\n */\r\n lay.ie = function(){\r\n var agent = navigator.userAgent.toLowerCase();\r\n return (!!window.ActiveXObject || \"ActiveXObject\" in window) ? (\r\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\r\n ) : false;\r\n }();\r\n\r\n\r\n /**\r\n * 获取 layui 常见方法,以便用于组件单独版\r\n */\r\n\r\n lay.layui = layui || {};\r\n lay.getPath = layui.cache.dir; // 获取当前 JS 所在目录\r\n lay.stope = layui.stope; // 中止冒泡\r\n lay.each = function(){ // 遍历\r\n layui.each.apply(layui, arguments);\r\n return this;\r\n };\r\n\r\n\r\n /**\r\n * 数字前置补零\r\n * @param {number | string} num - 原始数字\r\n * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零\r\n * @returns {string} 返回补 0 后的数字\r\n * @example\r\n * ```js\r\n * lay.digit(6, 2); // \"06\"\r\n * lay.digit('7', 3); // \"007\"\r\n * ```\r\n */\r\n lay.digit = function(num, length){\r\n if(!(typeof num === 'string' || typeof num === 'number')) return '';\r\n\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + num : num;\r\n };\r\n\r\n /**\r\n * 创建元素\r\n * @param {string} elemName - 元素的标签名\r\n * @param {Object.} [attr] - 添加到元素上的属性\r\n * @returns {HTMLElement} 返回创建的 HTML 元素\r\n * @example\r\n * ```js\r\n * lay.elem('div', {id: 'test'}) //
            \r\n * ```\r\n */\r\n lay.elem = function(elemName, attr){\r\n var elem = document.createElement(elemName);\r\n lay.each(attr || {}, function(key, value){\r\n elem.setAttribute(key, value);\r\n });\r\n return elem;\r\n };\r\n\r\n /**\r\n * 当前页面是否存在滚动条\r\n * @returns {boolean} 是否存在滚动条\r\n * @example\r\n * ```\r\n * lay.hasScrollbar() // true 或 false\r\n * ```\r\n */\r\n lay.hasScrollbar = function(){\r\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\r\n };\r\n\r\n /**\r\n * 获取 style rules\r\n * @param {HTMLStyleElement} style - HTMLStyle 元素\r\n * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历\r\n * @returns {CSSRuleList } 返回 `style rules`\r\n * @example\r\n * ```\r\n * \r\n *\r\n * lay.getStyleRules($('#test')[0], function(rule, index){\r\n * if(rule.selectorText === '.lay-card'){\r\n * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}'\r\n * rule.style.color = '#EEE';\r\n * return true; // 终止遍历\r\n * }\r\n * }) // RuleList\r\n * ```\r\n */\r\n lay.getStyleRules = function(style, callback) {\r\n if (!style) return;\r\n\r\n var sheet = style.sheet || style.styleSheet || {};\r\n var rules = sheet.cssRules || sheet.rules;\r\n\r\n if (typeof callback === 'function') {\r\n layui.each(rules, function(i, item){\r\n if (callback(item, i)) return true;\r\n });\r\n }\r\n\r\n return rules;\r\n };\r\n\r\n /**\r\n * 创建 style 样式\r\n * @param {Object} options - 可配置的选项\r\n * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器\r\n * @param {string} [options.id] - 样式元素的 id,默认自增\r\n * @param {string} options.text - 样式内容\r\n * @returns {HTMLStyleElement} 返回创建的样式元素\r\n * @example\r\n * ```html\r\n *
            \r\n * \r\n * \r\n *
            \r\n *\r\n * lay.style({\r\n * target: '#targetEl',\r\n * text: '.card{color: #000}'\r\n * }) // \r\n * ```\r\n */\r\n lay.style = function(options){\r\n options = options || {};\r\n\r\n var style = lay.elem('style');\r\n var styleText = options.text || '';\r\n var target = options.target;\r\n\r\n if (!styleText) return;\r\n\r\n // 添加样式\r\n if ('styleSheet' in style) {\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n // ID\r\n style.id = 'LAY-STYLE-'+ (options.id || function(index) {\r\n lay.style.index++;\r\n return 'DF-'+ index;\r\n }(lay.style.index || 0));\r\n\r\n // 是否向目标容器中追加 style 元素\r\n if (target) {\r\n var styleElem = lay(target).find('#'+ style.id);\r\n styleElem[0] && styleElem.remove();\r\n lay(target).append(style);\r\n }\r\n\r\n return style;\r\n };\r\n\r\n /**\r\n * 将元素定位到指定目标元素附近\r\n * @param {HTMLElement} target - 目标元素\r\n * @param {HTMLElement} elem - 定位元素\r\n * @param {Object} [opts] - 可配置的选项\r\n * @param {'absolute' | 'fixed'} [opts.position] - 元素的定位类型\r\n * @param {'left' | 'right'} [opts.clickType=\"left\"] - 点击类型,默认为 'left',如果 {@link target} 是 document 或 body 元素,则为 'right'\r\n * @param {'left' | 'right' | 'center'} [opts.align=\"left\"] - 对齐方式\r\n * @param {boolean} [opts.allowBottomOut=false] - 顶部没有足够区域显示时,是否允许底部溢出\r\n * @param {string | number} [opts.margin=5] - 边距\r\n * @param {Event} [opts.e] - 事件对象,仅右键生效\r\n * @param {boolean} [opts.SYSTEM_RELOAD] - 是否重载,用于出现滚动条时重新计算位置\r\n * @example\r\n * ```js\r\n * \r\n *
              \r\n *
            • 菜单1
            • \r\n *
            • 菜单2
            • \r\n *
            \r\n *\r\n * // 下拉菜单将被定位到按钮附近\r\n * lay.position(\r\n * $('#targetEl')[0],\r\n * $('#contentEl')[0],\r\n * {\r\n * position: 'fixed',\r\n * align: 'center'\r\n * }\r\n * )\r\n * ```\r\n */\r\n lay.position = function(target, elem, opts){\r\n if(!elem) return;\r\n opts = opts || {};\r\n\r\n // 如果绑定的是 document 或 body 元素,则直接获取鼠标坐标\r\n if(target === document || target === lay('body')[0]){\r\n opts.clickType = 'right';\r\n }\r\n\r\n // 绑定绑定元素的坐标\r\n var rect = opts.clickType === 'right' ? function(){\r\n var e = opts.e || window.event || {};\r\n return {\r\n left: e.clientX,\r\n top: e.clientY,\r\n right: e.clientX,\r\n bottom: e.clientY\r\n }\r\n }() : target.getBoundingClientRect();\r\n var elemWidth = elem.offsetWidth; // 控件的宽度\r\n var elemHeight = elem.offsetHeight; // 控件的高度\r\n\r\n // 滚动条高度\r\n var scrollArea = function(type){\r\n type = type ? 'scrollLeft' : 'scrollTop';\r\n return document.body[type] | document.documentElement[type];\r\n };\r\n\r\n // 窗口宽高\r\n var winArea = function(type){\r\n return document.documentElement[type ? 'clientWidth' : 'clientHeight']\r\n };\r\n var margin = 'margin' in opts ? opts.margin : 5;\r\n var left = rect.left;\r\n var top = rect.bottom;\r\n\r\n // 相对元素居中\r\n if(opts.align === 'center'){\r\n left = left - (elemWidth - target.offsetWidth) / 2;\r\n } else if(opts.align === 'right'){\r\n left = left - elemWidth + target.offsetWidth;\r\n }\r\n\r\n // 判断右侧是否超出边界\r\n if(left + elemWidth + margin > winArea('width')){\r\n left = winArea('width') - elemWidth - margin; // 如果超出右侧,则将面板向右靠齐\r\n }\r\n // 左侧是否超出边界\r\n if(left < margin) left = margin;\r\n\r\n\r\n // 判断底部和顶部是否超出边界\r\n if(rect.bottom + elemHeight + margin > winArea()){ // 底部超出边界\r\n // 优先判断顶部是否有足够区域显示完全,且底部不能超出边界\r\n if(rect.top > elemHeight + margin && rect.top <= winArea() ){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else if(!opts.allowBottomOut){ // 顶部没有足够区域显示时,是否允许底部溢出\r\n top = winArea() - elemHeight - margin*2; // 面板向底部靠齐\r\n if(top < 0) top = 0; // 如果面板底部靠齐时,又溢出窗口顶部,则只能将顶部靠齐\r\n }\r\n }\r\n /*\r\n if(top + elemHeight + margin > winArea()){\r\n // 优先顶部是否有足够区域显示完全\r\n if(rect.top > elemHeight + margin){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else {\r\n // 如果面板是鼠标右键弹出,且顶部没有足够区域显示,则将面板向底部靠齐\r\n if(obj.clickType === 'right'){\r\n top = winArea() - elemHeight - margin*2;\r\n if(top < 0) top = 0; // 不能溢出窗口顶部\r\n } else {\r\n top = margin; // 位置计算逻辑完备性处理\r\n }\r\n }\r\n }\r\n */\r\n\r\n // 定位类型\r\n var position = opts.position;\r\n if(position) elem.style.position = position;\r\n\r\n // 设置坐标\r\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + 'px';\r\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + 'px';\r\n\r\n // 防止页面无滚动条时,又因为弹出面板而出现滚动条导致的坐标计算偏差\r\n if(!lay.hasScrollbar()){\r\n var rect1 = elem.getBoundingClientRect();\r\n // 如果弹出面板的溢出窗口底部,则表示将出现滚动条,此时需要重新计算坐标\r\n if(!opts.SYSTEM_RELOAD && (rect1.bottom + margin) > winArea()){\r\n opts.SYSTEM_RELOAD = true;\r\n setTimeout(function(){\r\n lay.position(target, elem, opts);\r\n }, 50);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 获取元素上的属性配置项\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{attr: string} | string} [opts=\"lay-options\"] - 可配置的选项,string 类型指定属性名\r\n * @returns {Object.} 返回元素上的属性配置项\r\n * @example\r\n * ```js\r\n *
            \r\n *\r\n * var elem = $('#testEl')\r\n * lay.options(elem) // {color:red}\r\n * lay.options(elem[0]) // {color:red}\r\n * lay.options('#testEl') // {color:red}\r\n * lay.options('#testEl', {attr: 'lay-toc'}) // {hot: true}\r\n * lay.options('#testEl', 'lay-toc') // {hot: true}\r\n *\r\n * $('#testEl').attr('lay-toc') // '{hot: true}'\r\n * ```\r\n */\r\n lay.options = function(elem, opts){\r\n opts = typeof opts === 'object' ? opts : {attr: opts};\r\n\r\n if(elem === document) return {};\r\n\r\n var othis = lay(elem);\r\n var attrName = opts.attr || 'lay-options';\r\n var attrValue = othis.attr(attrName);\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用 lay-options=\"{}\" 配置组件选项时,需确保属性值不来自于网页用户,\r\n * 即属性值必须在网页开发者自身的可控范围内,否则请勿在 HTML 标签属性中获取组件选项。\r\n */\r\n return new Function('return '+ (attrValue || '{}'))();\r\n } catch(ev) {\r\n layui.hint().error(opts.errorText || [\r\n attrName + '=\"'+ attrValue + '\"',\r\n '\\n parseerror: '+ ev\r\n ].join('\\n'), 'error');\r\n return {};\r\n }\r\n };\r\n\r\n\r\n /**\r\n * 元素是否属于顶级元素(document 或 body)\r\n * @param {HTMLElement} elem - HTML 元素\r\n * @returns {boolean} 是否属于顶级元素\r\n * @example\r\n * ```js\r\n * lay.isTopElem(document) // true\r\n * ```\r\n */\r\n lay.isTopElem = function(elem){\r\n var topElems = [document, lay('body')[0]]\r\n ,matched = false;\r\n lay.each(topElems, function(index, item){\r\n if(item === elem){\r\n return matched = true\r\n }\r\n });\r\n return matched;\r\n };\r\n\r\n // 剪切板\r\n lay.clipboard = {\r\n /**\r\n * 写入文本\r\n * @param {Object} options - 可配置的选项\r\n * @param {string} options.text - 写入剪贴板的文本\r\n * @param {() => void} [options.done] - 写入成功/完成回调\r\n * @param {(err?: any) => void} [options.error] - 写入失败回调\r\n * @example\r\n * ```js\r\n * lay.clipboard.writeText({\r\n * text: '测试文本',\r\n * done: function(){ layer.msg('copied')},\r\n * error: function(){ layer.msg('error')}\r\n * })\r\n * ```\r\n */\r\n writeText: function(options) {\r\n var text = String(options.text);\r\n\r\n if(navigator && 'clipboard' in navigator){\r\n navigator.clipboard.writeText(text)\r\n .then(options.done, function(){\r\n legacyCopy();\r\n });\r\n }else{\r\n legacyCopy();\r\n }\r\n\r\n function legacyCopy(){\r\n var elem = document.createElement('textarea');\r\n\r\n elem.value = text;\r\n elem.style.position = 'fixed';\r\n elem.style.opacity = '0';\r\n elem.style.top = '0px';\r\n elem.style.left = '0px';\r\n\r\n document.body.appendChild(elem);\r\n elem.select();\r\n\r\n try {\r\n document.execCommand('copy');\r\n typeof options.done === 'function' && options.done();\r\n } catch(err) {\r\n typeof options.error === 'function' && options.error(err);\r\n } finally {\r\n elem.remove ? elem.remove() : document.body.removeChild(elem);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 检测是否支持 Passive Event Listeners\r\n * 引用自 https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n * @type {boolean}\r\n */\r\n lay.passiveSupported = function(){\r\n var passiveSupported = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n passiveSupported = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n window.removeEventListener('test', null, opts);\r\n } catch (err) {}\r\n return passiveSupported;\r\n }();\r\n\r\n /**\r\n * 是否支持 touch 事件\r\n */\r\n lay.touchEventsSupported = function(){\r\n return 'ontouchstart' in window;\r\n };\r\n\r\n /**\r\n * @typedef touchSwipeState\r\n * @prop {{x: number,y: number}} pointerStart - 初始坐标\r\n * @prop {{x: number,y: number}} pointerEnd - 结束坐标\r\n * @prop {number} distanceX - X 轴移动距离\r\n * @prop {number} distanceY - Y 轴移动距离\r\n * @prop {'none'|'right'|'left'|'up'|'down'} direction - 滑动方向\r\n * @prop {Date} timeStart 开始时间\r\n */\r\n /**\r\n * @callback touchSwipeCallback\r\n * @param {TouchEvent} e 滑动事件\r\n * @param {touchSwipeState} state 滑动相关的状态\r\n */\r\n /**\r\n * 基于 touch 事件的触摸滑动\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{onTouchStart?: touchSwipeCallback, onTouchMove?: touchSwipeCallback, onTouchEnd?: touchSwipeCallback}} opts - 配置项\r\n */\r\n lay.touchSwipe = function(elem, opts){\r\n var options = opts\r\n var targetElem = lay(elem)[0];\r\n\r\n if(!targetElem || !lay.touchEventsSupported()) return;\r\n\r\n var state = {\r\n pointerStart: {x:0, y:0},\r\n pointerEnd: {x:0, y:0},\r\n distanceX: 0,\r\n distanceY: 0,\r\n direction:'none', // 'up','down','left','right','none\r\n timeStart: null\r\n }\r\n\r\n var onStart = function(e){\r\n if(e.touches.length !== 1) return;\r\n bindEvents();\r\n // 重置状态\r\n state.timeStart = Date.now();\r\n state.pointerStart.x = state.pointerEnd.x = e.touches[0].clientX;\r\n state.pointerStart.y = state.pointerEnd.y = e.touches[0].clientY;\r\n state.distanceX = state.distanceY = 0;\r\n state.direction = 'none'\r\n\r\n options.onTouchStart && options.onTouchStart(e, state);\r\n }\r\n\r\n var onMove = function(e){\r\n e.preventDefault();\r\n state.pointerEnd.x = e.touches[0].clientX;\r\n state.pointerEnd.y = e.touches[0].clientY;\r\n state.distanceX = state.pointerStart.x - state.pointerEnd.x;\r\n state.distanceY = state.pointerStart.y - state.pointerEnd.y;\r\n if(Math.abs(state.distanceX) > Math.abs(state.distanceY)){\r\n state.direction = state.distanceX > 0 ? 'left' : 'right';\r\n }else{\r\n state.direction = state.distanceY > 0 ? 'up' : 'down';\r\n }\r\n options.onTouchMove && options.onTouchMove(e, state);\r\n }\r\n\r\n var onEnd = function(e){\r\n options.onTouchEnd && options.onTouchEnd(e, state);\r\n unbindEvents();\r\n }\r\n \r\n var bindEvents = function(){\r\n targetElem.addEventListener('touchmove', onMove, lay.passiveSupported ? { passive: false} : false);\r\n targetElem.addEventListener('touchend', onEnd);\r\n targetElem.addEventListener('touchcancel', onEnd);\r\n }\r\n\r\n var unbindEvents = function(){\r\n targetElem.removeEventListener('touchmove', onMove);\r\n targetElem.removeEventListener('touchend', onEnd, lay.passiveSupported ? { passive: false} : false);\r\n targetElem.removeEventListener('touchcancel', onEnd);\r\n }\r\n\r\n // 防止事件重复绑定\r\n if(targetElem.__lay_touchswipe_cb_){\r\n targetElem.removeEventListener('touchstart', targetElem.__lay_touchswipe_cb_);\r\n }\r\n targetElem.__lay_touchswipe_cb_ = onStart;\r\n targetElem.addEventListener('touchstart', onStart);\r\n }\r\n\r\n\r\n /*\r\n * lay 元素操作\r\n */\r\n\r\n\r\n // 追加字符\r\n Class.addStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n if(!new RegExp('\\\\b'+ item + '\\\\b').test(str)){\r\n str = str + ' ' + item;\r\n }\r\n });\r\n return str.replace(/^\\s|\\s$/, '');\r\n };\r\n\r\n // 移除值\r\n Class.removeStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n var exp = new RegExp('\\\\b'+ item + '\\\\b')\r\n if(exp.test(str)){\r\n str = str.replace(exp, '');\r\n }\r\n });\r\n return str.replace(/\\s+/, ' ').replace(/^\\s|\\s$/, '');\r\n };\r\n\r\n // 查找子元素\r\n Class.fn.find = function(selector){\r\n var that = this;\r\n var elem = [];\r\n var isObject = typeof selector === 'object';\r\n\r\n this.each(function(i, item){\r\n var children = isObject && item.contains(selector)\r\n ? selector\r\n : item.querySelectorAll(selector || null);\r\n\r\n lay.each(children, function(index, child){\r\n elem.push(child);\r\n });\r\n });\r\n\r\n return lay(elem);\r\n };\r\n\r\n // 元素遍历\r\n Class.fn.each = function(fn){\r\n return lay.each.call(this, this, fn);\r\n };\r\n\r\n // 添加 className\r\n Class.fn.addClass = function(className, type){\r\n return this.each(function(index, item){\r\n item.className = Class[type ? 'removeStr' : 'addStr'](item.className, className)\r\n });\r\n };\r\n\r\n // 移除 className\r\n Class.fn.removeClass = function(className){\r\n return this.addClass(className, true);\r\n };\r\n\r\n // 是否包含 css 类\r\n Class.fn.hasClass = function(className){\r\n var has = false;\r\n this.each(function(index, item){\r\n if(new RegExp('\\\\b'+ className +'\\\\b').test(item.className)){\r\n has = true;\r\n }\r\n });\r\n return has;\r\n };\r\n\r\n // 添加或获取 css style\r\n Class.fn.css = function(key, value){\r\n var that = this;\r\n var parseValue = function(v){\r\n return isNaN(v) ? v : (v +'px');\r\n };\r\n return (typeof key === 'string' && value === undefined) ? function(){\r\n if(that.length > 0) return that[0].style[key];\r\n }() : that.each(function(index, item){\r\n typeof key === 'object' ? lay.each(key, function(thisKey, thisValue){\r\n item.style[thisKey] = parseValue(thisValue);\r\n }) : item.style[key] = parseValue(value);\r\n });\r\n };\r\n\r\n // 添加或获取宽度\r\n Class.fn.width = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetWidth; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('width', value);\r\n });\r\n };\r\n\r\n // 添加或获取高度\r\n Class.fn.height = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetHeight; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('height', value);\r\n });\r\n };\r\n\r\n // 添加或获取属性\r\n Class.fn.attr = function(key, value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].getAttribute(key);\r\n }() : that.each(function(index, item){\r\n item.setAttribute(key, value);\r\n });\r\n };\r\n\r\n // 移除属性\r\n Class.fn.removeAttr = function(key){\r\n return this.each(function(index, item){\r\n item.removeAttribute(key);\r\n });\r\n };\r\n\r\n // 设置或获取 HTML 内容\r\n Class.fn.html = function(html){\r\n var that = this;\r\n return html === undefined ? function(){\r\n if(that.length > 0) return that[0].innerHTML;\r\n }() : this.each(function(index, item){\r\n item.innerHTML = html;\r\n });\r\n };\r\n\r\n // 设置或获取值\r\n Class.fn.val = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].value;\r\n }() : this.each(function(index, item){\r\n item.value = value;\r\n });\r\n };\r\n\r\n // 追加内容\r\n Class.fn.append = function(elem){\r\n return this.each(function(index, item){\r\n typeof elem === 'object'\r\n ? item.appendChild(elem)\r\n : item.innerHTML = item.innerHTML + elem;\r\n });\r\n };\r\n\r\n // 移除内容\r\n Class.fn.remove = function(elem){\r\n return this.each(function(index, item){\r\n elem ? item.removeChild(elem) : item.parentNode.removeChild(item);\r\n });\r\n };\r\n\r\n // 事件绑定\r\n Class.fn.on = function(eventName, fn){\r\n return this.each(function(index, item){\r\n item.attachEvent ? item.attachEvent('on' + eventName, function(e){\r\n e.target = e.srcElement;\r\n fn.call(item, e);\r\n }) : item.addEventListener(eventName, fn, false);\r\n });\r\n };\r\n\r\n // 解除事件\r\n Class.fn.off = function(eventName, fn){\r\n return this.each(function(index, item){\r\n item.detachEvent\r\n ? item.detachEvent('on'+ eventName, fn)\r\n : item.removeEventListener(eventName, fn, false);\r\n });\r\n };\r\n\r\n // export\r\n window.lay = lay;\r\n\r\n // 输出为 layui 模块\r\n if(window.layui && layui.define){\r\n layui.define(function(exports){\r\n exports(MOD_NAME, lay);\r\n });\r\n }\r\n\r\n}(window, window.document); // gulp build: lay-footer\r\n","/**\r\n * laytpl 轻量模板引擎\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n\r\n // 默认属性\r\n var config = {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n };\r\n\r\n // 模板工具\r\n var tool = {\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n }\r\n };\r\n\r\n // 内部方法\r\n var inner = {\r\n exp: function(str){\r\n return new RegExp(str, 'g');\r\n },\r\n // 错误提示\r\n error: function(e, source){\r\n var error = 'Laytpl Error: ';\r\n typeof console === 'object' && console.error(error + e + '\\n'+ (source || ''));\r\n return error + e;\r\n }\r\n };\r\n\r\n // constructor\r\n var Class = function(template, options){\r\n var that = this;\r\n that.config = that.config || {};\r\n that.template = template;\r\n\r\n // 简单属性合并\r\n var extend = function(obj){\r\n for(var i in obj){\r\n that.config[i] = obj[i];\r\n }\r\n };\r\n\r\n extend(config);\r\n extend(options);\r\n };\r\n\r\n // 标签正则\r\n Class.prototype.tagExp = function(type, _, __){\r\n var options = this.config;\r\n var types = [\r\n '#([\\\\s\\\\S])+?', // js 语句\r\n '([^{#}])*?' // 普通字段\r\n ][type || 0];\r\n\r\n return inner.exp((_||'') + options.open + types + options.close + (__||''));\r\n };\r\n\r\n // 模版解析\r\n Class.prototype.parse = function(template, data){\r\n var that = this;\r\n var options = that.config;\r\n var source = template;\r\n var jss = inner.exp('^'+ options.open +'#', '');\r\n var jsse = inner.exp(options.close +'$', '');\r\n\r\n // 模板必须为 string 类型\r\n if(typeof template !== 'string') return template;\r\n\r\n // 正则解析\r\n template = template.replace(/\\s+|\\r|\\t|\\n/g, ' ')\r\n .replace(inner.exp(options.open +'#'), options.open +'# ')\r\n .replace(inner.exp(options.close +'}'), '} '+ options.close).replace(/\\\\/g, '\\\\\\\\')\r\n\r\n // 不匹配指定区域的内容\r\n .replace(inner.exp(options.open + '!(.+?)!' + options.close), function(str){\r\n str = str.replace(inner.exp('^'+ options.open + '!'), '')\r\n .replace(inner.exp('!'+ options.close), '')\r\n .replace(inner.exp(options.open + '|' + options.close), function(tag){\r\n return tag.replace(/(.)/g, '\\\\$1')\r\n });\r\n return str\r\n })\r\n\r\n // 匹配 JS 语法\r\n .replace(/(?=\"|')/g, '\\\\').replace(that.tagExp(), function(str){\r\n str = str.replace(jss, '').replace(jsse, '');\r\n return '\";' + str.replace(/\\\\(.)/g, '$1') + ';view+=\"';\r\n })\r\n\r\n // 匹配普通输出语句\r\n .replace(that.tagExp(1), function(str){\r\n var start = '\"+laytpl.escape(';\r\n if(str.replace(/\\s/g, '') === options.open + options.close){\r\n return '';\r\n }\r\n str = str.replace(inner.exp(options.open + '|' + options.close), '');\r\n if(/^=/.test(str)){\r\n str = str.replace(/^=/, '');\r\n } else if(/^-/.test(str)){\r\n str = str.replace(/^-/, '');\r\n start = '\"+(';\r\n }\r\n return start + str.replace(/\\\\(.)/g, '$1') + ')+\"';\r\n });\r\n\r\n template = '\"use strict\";var view = \"' + template + '\";return view;';\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用模板语法时,需确保模板中的 JS 语句不来自于页面用户输入。\r\n * 即模板中的 JS 语句必须在页面开发者自身的可控范围内,否则请避免使用该模板解析。\r\n */\r\n that.cache = template = new Function('d, laytpl', template);\r\n return template(data, tool);\r\n } catch(e) {\r\n delete that.cache;\r\n return inner.error(e, source);\r\n }\r\n };\r\n\r\n // 数据渲染\r\n Class.prototype.render = function(data, callback){\r\n data = data || {};\r\n\r\n var that = this;\r\n var result = that.cache ? that.cache(data, tool) : that.parse(that.template, data);\r\n\r\n // 返回渲染结果\r\n typeof callback === 'function' && callback(result);\r\n return result;\r\n };\r\n\r\n // 创建实例\r\n var laytpl = function(template, options){\r\n return new Class(template, options);\r\n };\r\n\r\n // 配置全局属性\r\n laytpl.config = function(options){\r\n options = options || {};\r\n for(var i in options){\r\n config[i] = options[i];\r\n }\r\n };\r\n\r\n laytpl.v = '2.0.0';\r\n\r\n // export\r\n exports('laytpl', laytpl);\r\n});\r\n","/**\r\n * laypage 分页组件\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n \r\n var doc = document;\r\n var id = 'getElementById';\r\n var tag = 'getElementsByTagName';\r\n \r\n // 字符常量\r\n var MOD_NAME = 'laypage';\r\n var DISABLED = 'layui-disabled';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = options || {};\r\n that.config.index = ++laypage.index;\r\n that.render(true);\r\n };\r\n\r\n // 判断传入的容器类型\r\n Class.prototype.type = function(){\r\n var config = this.config;\r\n if(typeof config.elem === 'object'){\r\n return config.elem.length === undefined ? 2 : 3;\r\n }\r\n };\r\n\r\n // 分页视图\r\n Class.prototype.view = function(){\r\n var that = this;\r\n var config = that.config;\r\n\r\n // 连续页码个数\r\n var groups = config.groups = 'groups' in config \r\n ? (Number(config.groups) || 0)\r\n : 5; \r\n \r\n // 排版\r\n config.layout = typeof config.layout === 'object' \r\n ? config.layout \r\n : ['prev', 'page', 'next'];\r\n \r\n config.count = Number(config.count) || 0; // 数据总数\r\n config.curr = Number(config.curr) || 1; // 当前页\r\n\r\n // 每页条数的选择项\r\n config.limits = typeof config.limits === 'object'\r\n ? config.limits\r\n : [10, 20, 30, 40, 50];\r\n\r\n // 默认条数\r\n config.limit = Number(config.limit) || 10;\r\n \r\n // 总页数\r\n config.pages = Math.ceil(config.count/config.limit) || 1;\r\n \r\n // 当前页不能超过总页数\r\n if(config.curr > config.pages){\r\n config.curr = config.pages;\r\n } else if(config.curr < 1) { // 当前分页不能小于 1\r\n config.curr = 1;\r\n }\r\n \r\n // 连续分页个数不能低于 0 且不能大于总页数\r\n if(groups < 0){\r\n groups = 1;\r\n } else if (groups > config.pages){\r\n groups = config.pages;\r\n }\r\n \r\n config.prev = 'prev' in config ? config.prev : '上一页'; // 上一页文本\r\n config.next = 'next' in config ? config.next : '下一页'; // 下一页文本\r\n \r\n // 计算当前组\r\n var index = config.pages > groups \r\n ? Math.ceil( (config.curr + (groups > 1 ? 1 : 0)) / (groups > 0 ? groups : 1) )\r\n : 1;\r\n \r\n // 视图片段\r\n var views = {\r\n // 上一页\r\n prev: function(){\r\n return config.prev \r\n ? ''+ config.prev +''\r\n : '';\r\n }(),\r\n \r\n // 页码\r\n page: function(){\r\n var pager = [];\r\n \r\n // 数据量为0时,不输出页码\r\n if(config.count < 1){\r\n return '';\r\n }\r\n \r\n // 首页\r\n if(index > 1 && config.first !== false && groups !== 0){\r\n pager.push(''+ (config.first || 1) +'');\r\n }\r\n\r\n // 计算当前页码组的起始页\r\n var halve = Math.floor((groups-1)/2) // 页码数等分\r\n var start = index > 1 ? config.curr - halve : 1;\r\n var end = index > 1 ? (function(){\r\n var max = config.curr + (groups - halve - 1);\r\n return max > config.pages ? config.pages : max;\r\n }()) : groups;\r\n \r\n // 防止最后一组出现“不规定”的连续页码数\r\n if(end - start < groups - 1){\r\n start = end - groups + 1;\r\n }\r\n\r\n // 输出左分割符\r\n if(config.first !== false && start > 2){\r\n pager.push('')\r\n }\r\n \r\n // 输出连续页码\r\n for(; start <= end; start++){\r\n if(start === config.curr){\r\n // 当前页\r\n pager.push(''+ start +'');\r\n } else {\r\n pager.push(''+ start +'');\r\n }\r\n }\r\n \r\n // 输出输出右分隔符 & 末页\r\n if(config.pages > groups && config.pages > end && config.last !== false){\r\n if(end + 1 < config.pages){\r\n pager.push('');\r\n }\r\n if(groups !== 0){\r\n pager.push(''+ (config.last || config.pages) +'');\r\n }\r\n }\r\n\r\n return pager.join('');\r\n }(),\r\n \r\n // 下一页\r\n next: function(){\r\n return config.next \r\n ? ''+ config.next +''\r\n : '';\r\n }(),\r\n \r\n // 数据总数\r\n count: function(){\r\n var countText = typeof config.countText === 'object' ? config.countText : ['共 ', ' 条'];\r\n return ''+ countText[0] + config.count + countText[1] +''\r\n }(),\r\n \r\n // 每页条数\r\n limit: function(){\r\n var elemArr = ['';\r\n }(),\r\n \r\n // 刷新当前页\r\n refresh: [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n\r\n // 跳页区域\r\n skip: function(){\r\n var skipText = typeof config.skipText === 'object' ? config.skipText : [\r\n '到第',\r\n '页',\r\n '确定'\r\n ];\r\n return [\r\n ''+ skipText[0],\r\n '',\r\n skipText[1]+ '',\r\n ''\r\n ].join('');\r\n }()\r\n };\r\n\r\n return ['
            ',\r\n function(){\r\n var plate = [];\r\n layui.each(config.layout, function(index, item){\r\n if(views[item]){\r\n plate.push(views[item])\r\n }\r\n });\r\n return plate.join('');\r\n }(),\r\n '
            '].join('');\r\n };\r\n\r\n // 跳页的回调\r\n Class.prototype.jump = function(elem, isskip){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var config = that.config;\r\n var childs = elem.children;\r\n var btn = elem[tag]('button')[0];\r\n var input = elem[tag]('input')[0];\r\n var select = elem[tag]('select')[0];\r\n var skip = function(){\r\n var curr = Number(input.value.replace(/\\s|\\D/g, ''));\r\n if(curr){\r\n config.curr = curr;\r\n that.render();\r\n }\r\n };\r\n \r\n if(isskip) return skip();\r\n \r\n // 页码\r\n for(var i = 0, len = childs.length; i < len; i++){\r\n if(childs[i].nodeName.toLowerCase() === 'a'){\r\n laypage.on(childs[i], 'click', function(){\r\n var curr = Number(this.getAttribute('data-page'));\r\n if(curr < 1 || curr > config.pages) return;\r\n config.curr = curr;\r\n that.render();\r\n });\r\n }\r\n }\r\n \r\n // 条数\r\n if(select){\r\n laypage.on(select, 'change', function(){\r\n var value = this.value;\r\n if(config.curr*value > config.count){\r\n config.curr = Math.ceil(config.count/value);\r\n }\r\n config.limit = value;\r\n that.render();\r\n });\r\n }\r\n \r\n // 确定\r\n if(btn){\r\n laypage.on(btn, 'click', function(){\r\n skip();\r\n });\r\n }\r\n };\r\n \r\n // 输入页数字控制\r\n Class.prototype.skip = function(elem){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var input = elem[tag]('input')[0];\r\n\r\n if(!input) return;\r\n\r\n // 键盘事件\r\n laypage.on(input, 'keyup', function(e){\r\n var value = this.value;\r\n var keyCode = e.keyCode;\r\n\r\n if(/^(37|38|39|40)$/.test(keyCode)) return;\r\n\r\n if(/\\D/.test(value)){\r\n this.value = value.replace(/\\D/, '');\r\n }\r\n if(keyCode === 13){\r\n that.jump(elem, true)\r\n }\r\n });\r\n };\r\n\r\n // 渲染分页\r\n Class.prototype.render = function(load){\r\n var that = this;\r\n var config = that.config;\r\n var type = that.type();\r\n var view = that.view();\r\n \r\n if(type === 2){\r\n config.elem && (config.elem.innerHTML = view);\r\n } else if(type === 3){\r\n config.elem.html(view);\r\n } else {\r\n if(doc[id](config.elem)){\r\n doc[id](config.elem).innerHTML = view;\r\n }\r\n }\r\n\r\n config.jump && config.jump(config, load);\r\n \r\n var elem = doc[id]('layui-laypage-' + config.index);\r\n that.jump(elem);\r\n \r\n if(config.hash && !load){\r\n location.hash = '!'+ config.hash +'='+ config.curr;\r\n }\r\n \r\n that.skip(elem);\r\n };\r\n \r\n // 外部接口\r\n var laypage = {\r\n // 分页渲染\r\n render: function(options){\r\n var o = new Class(options);\r\n return o.index;\r\n },\r\n index: layui.laypage ? (layui.laypage.index + 10000) : 0,\r\n on: function(elem, even, fn){\r\n elem.attachEvent ? elem.attachEvent('on'+ even, function(e){ // for ie\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }) : elem.addEventListener(even, fn, false);\r\n return this;\r\n }\r\n }\r\n\r\n exports(MOD_NAME, laypage);\r\n});\r\n","/** laydate 日期与时间控件 | MIT Licensed */\r\n\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define, ready = {\r\n getPath: (window.lay && lay.getPath) ? lay.getPath : ''\r\n\r\n // 载入 CSS 依赖\r\n ,link: function(href, fn, cssname){\r\n\r\n // 未设置路径,则不主动加载 css\r\n if(!laydate.path) return;\r\n\r\n // 加载 css\r\n if(window.lay && lay.layui){\r\n lay.layui.link(laydate.path + href, fn, cssname);\r\n }\r\n }\r\n };\r\n\r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = window.LAYUI_GLOBAL || {};\r\n\r\n // 模块名\r\n var MOD_NAME = 'laydate';\r\n var MOD_ID = 'layui-'+ MOD_NAME +'-id' // 已渲染过的索引标记名\r\n\r\n // 外部调用\r\n var laydate = {\r\n v: '5.5.0' // layDate 版本号\r\n ,config: {\r\n weekStart: 0, // 默认周日一周的开始\r\n } // 全局配置项\r\n ,index: (window.laydate && window.laydate.v) ? 100000 : 0\r\n ,path: GLOBAL.laydate_dir || ready.getPath\r\n\r\n // 设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n return that;\r\n }\r\n\r\n // 主体 CSS 等待事件\r\n ,ready: function(callback){\r\n var cssname = 'laydate';\r\n var ver = ''\r\n var path = (isLayui ? 'modules/' : '') + 'laydate.css?v='+ laydate.v + ver;\r\n\r\n isLayui ? (\r\n layui['layui.all']\r\n ? (typeof callback === 'function' && callback())\r\n : layui.addcss(path, callback, cssname)\r\n ) : ready.link(path, callback, cssname);\r\n\r\n return this;\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return that.inst = {\r\n // 提示框\r\n hint: function(content){\r\n that.hint.call(that, content);\r\n },\r\n // 重载实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n };\r\n };\r\n\r\n // 字符常量\r\n var ELEM = '.layui-laydate';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'laydate-disabled';\r\n var LIMIT_YEAR = [100, 200000];\r\n\r\n var ELEM_STATIC = 'layui-laydate-static';\r\n var ELEM_LIST = 'layui-laydate-list';\r\n var ELEM_SELECTED = 'laydate-selected';\r\n var ELEM_HINT = 'layui-laydate-hint';\r\n var ELEM_DAY_NOW = 'laydate-day-now';\r\n var ELEM_PREV = 'laydate-day-prev';\r\n var ELEM_NEXT = 'laydate-day-next';\r\n var ELEM_FOOTER = 'layui-laydate-footer';\r\n var ELEM_SHORTCUT = 'layui-laydate-shortcut';\r\n var ELEM_NOW = '.laydate-btns-now'\r\n var ELEM_CONFIRM = '.laydate-btns-confirm';\r\n var ELEM_TIME_TEXT = 'laydate-time-text';\r\n var ELEM_TIME_BTN = 'laydate-btns-time';\r\n var ELEM_PREVIEW = 'layui-laydate-preview';\r\n var ELEM_MAIN = 'layui-laydate-main';\r\n var ELEM_SHADE = 'layui-laydate-shade';\r\n\r\n // 组件构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++laydate.index;\r\n that.config = lay.extend({}, that.config, laydate.config, options);\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = lay(options.elem || that.config.elem);\r\n if(elem.length > 1){\r\n lay.each(elem, function(){\r\n laydate.render(lay.extend({}, that.config, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 初始化属性\r\n options = lay.extend(that.config, lay.options(elem[0])); // 继承节点上的属性\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(elem[0] && elem.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options);\r\n }\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 自增索引\r\n options.index = that.index;\r\n\r\n // 初始化\r\n laydate.ready(function(){\r\n that.init();\r\n });\r\n };\r\n\r\n // 日期格式字符\r\n var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';\r\n\r\n // 将日期格式字符转换为数组\r\n thisModule.formatArr = function(format){\r\n return (format || '').match(new RegExp(dateType + '|.', 'g')) || []\r\n };\r\n\r\n /*\r\n 组件操作\r\n */\r\n\r\n // 是否闰年\r\n Class.isLeapYear = function(year){\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'date' //控件类型,支持:year/month/date/time/datetime\r\n ,range: false //是否开启范围选择,即双控件\r\n ,format: 'yyyy-MM-dd' //默认日期格式\r\n ,value: null //默认日期,支持传入new Date(),或者符合format参数设定的日期格式字符\r\n ,isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用)\r\n ,min: '1900-1-1' //有效最小日期,年月日必须用“-”分割,时分秒必须用“:”分割。注意:它并不是遵循 format 设定的格式。\r\n ,max: '2099-12-31' //有效最大日期,同上\r\n ,trigger: 'click' //呼出控件的事件\r\n ,show: false //是否直接显示,如果设置 true,则默认直接显示控件\r\n ,showBottom: true //是否显示底部栏\r\n ,isPreview: true //是否显示值预览\r\n ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列\r\n ,lang: 'cn' //语言,只支持cn/en,即中文和英文\r\n ,theme: 'default' //主题\r\n ,position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static\r\n ,calendar: false //是否开启公历重要节日,仅支持中文版\r\n ,mark: {} //日期备注,如重要事件或活动标记\r\n ,holidays: null // 标注法定节假日或补假上班\r\n ,zIndex: null //控件层叠顺序\r\n ,done: null //控件选择完毕后的回调,点击清空/现在/确定也均会触发\r\n ,change: null //日期时间改变后的回调\r\n ,autoConfirm: true //是否自动确认(日期|年份|月份选择器非range下是否自动确认)\r\n ,shade: 0\r\n };\r\n\r\n //多语言\r\n Class.prototype.lang = function(){\r\n var that = this\r\n ,options = that.config\r\n ,text = {\r\n cn: {\r\n weeks: ['日', '一', '二', '三', '四', '五', '六']\r\n ,time: ['时', '分', '秒']\r\n ,timeTips: '选择时间'\r\n ,startTime: '开始时间'\r\n ,endTime: '结束时间'\r\n ,dateTips: '返回日期'\r\n ,month: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']\r\n ,tools: {\r\n confirm: '确定'\r\n ,clear: '清空'\r\n ,now: '现在'\r\n }\r\n ,timeout: '结束时间不能早于开始时间
            请重新选择'\r\n ,invalidDate: '不在有效日期或时间范围内'\r\n ,formatError: ['日期格式不合法
            必须遵循下述格式:
            ', '
            已为你重置']\r\n ,preview: '当前选中的结果'\r\n }\r\n ,en: {\r\n weeks: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\r\n ,time: ['Hours', 'Minutes', 'Seconds']\r\n ,timeTips: 'Select Time'\r\n ,startTime: 'Start Time'\r\n ,endTime: 'End Time'\r\n ,dateTips: 'Select Date'\r\n ,month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n ,tools: {\r\n confirm: 'Confirm'\r\n ,clear: 'Clear'\r\n ,now: 'Now'\r\n }\r\n ,timeout: 'End time cannot be less than start Time
            Please re-select'\r\n ,invalidDate: 'Invalid date'\r\n ,formatError: ['The date format error
            Must be followed:
            ', '
            It has been reset']\r\n ,preview: 'The selected result'\r\n }\r\n };\r\n return text[options.lang] || text['cn'];\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n that.init();\r\n };\r\n\r\n //初始准备\r\n Class.prototype.init = function(){\r\n var that = this\r\n ,options = that.config\r\n ,isStatic = options.position === 'static'\r\n ,format = {\r\n year: 'yyyy'\r\n ,month: 'yyyy-MM'\r\n ,date: 'yyyy-MM-dd'\r\n ,time: 'HH:mm:ss'\r\n ,datetime: 'yyyy-MM-dd HH:mm:ss'\r\n };\r\n\r\n options.elem = lay(options.elem);\r\n options.eventElem = lay(options.eventElem);\r\n\r\n if(!options.elem[0]) return;\r\n\r\n layui.type(options.theme) !== 'array' && (options.theme = [options.theme]);\r\n // 设置了全面版模式\r\n if (options.fullPanel) {\r\n if (options.type !== 'datetime' || options.range) {\r\n // 目前只支持datetime的全面版\r\n delete options.fullPanel;\r\n }\r\n }\r\n\r\n //日期范围分隔符\r\n that.rangeStr = options.range ? (\r\n typeof options.range === 'string' ? options.range : '-'\r\n ) : '';\r\n\r\n //日期范围的日历面板是否联动\r\n that.rangeLinked = !!(options.range && options.rangeLinked && (options.type === 'date' || options.type === 'datetime'))\r\n\r\n //切换日历联动方式\r\n that.autoCalendarModel = function () {\r\n var state = that.rangeLinked;\r\n that.rangeLinked = (options.range && (options.type === 'date' || options.type === 'datetime'))\r\n && ((!that.startDate || !that.endDate) || (that.startDate && that.endDate && that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month));\r\n lay(that.elem)[that.rangeLinked ? 'addClass' : 'removeClass']('layui-laydate-linkage');\r\n return that.rangeLinked != state; // 返回发生了变化\r\n };\r\n\r\n //是否自动切换\r\n that.autoCalendarModel.auto = that.rangeLinked && options.rangeLinked === 'auto';\r\n\r\n //若 range 参数为数组,则表示为开始日期和结束日期的 input 对象\r\n if(layui.type(options.range) === 'array'){\r\n that.rangeElem = [\r\n lay(options.range[0]),\r\n lay(options.range[1])\r\n ];\r\n }\r\n\r\n //若 type 设置非法,则初始化为 date 类型\r\n if(!format[options.type]){\r\n window.console && console.error && console.error('laydate type error:\\''+ options.type + '\\' is not supported')\r\n options.type = 'date';\r\n }\r\n\r\n //根据不同 type,初始化默认 format\r\n if(options.format === format.date){\r\n options.format = format[options.type] || format.date;\r\n }\r\n\r\n //将日期格式转化成数组\r\n that.format = thisModule.formatArr(options.format);\r\n\r\n // 设置了一周的开始是周几,此处做一个控制\r\n if (options.weekStart) {\r\n if (!/^[0-6]$/.test(options.weekStart)) {\r\n var lang = that.lang();\r\n options.weekStart = lang.weeks.indexOf(options.weekStart);\r\n if (options.weekStart === -1) options.weekStart = 0;\r\n }\r\n }\r\n\r\n //生成正则表达式\r\n that.EXP_IF = '';\r\n that.EXP_SPLIT = '';\r\n lay.each(that.format, function(i, item){\r\n var EXP = new RegExp(dateType).test(item)\r\n ? '\\\\d{'+ function(){\r\n if(new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1]||'')){\r\n if(/^yyyy|y$/.test(item)) return 4;\r\n return item.length;\r\n }\r\n if(/^yyyy$/.test(item)) return '1,4';\r\n if(/^y$/.test(item)) return '1,308';\r\n return '1,2';\r\n }() +'}'\r\n : '\\\\' + item;\r\n that.EXP_IF = that.EXP_IF + EXP;\r\n that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';\r\n });\r\n //验证日期格式正则\r\n that.EXP_IF_ONE = new RegExp('^'+ that.EXP_IF +'$'); //验证单个日期格式\r\n that.EXP_IF = new RegExp('^'+ (\r\n options.range ?\r\n that.EXP_IF + '\\\\s\\\\'+ that.rangeStr + '\\\\s' + that.EXP_IF\r\n : that.EXP_IF\r\n ) +'$');\r\n that.EXP_SPLIT = new RegExp('^'+ that.EXP_SPLIT +'$', '');\r\n\r\n //如果不是 input|textarea 元素,则默认采用 click 事件\r\n if(!that.isInput(options.elem[0])){\r\n if(options.trigger === 'focus'){\r\n options.trigger = 'click';\r\n }\r\n }\r\n\r\n // 设置唯一 KEY\r\n options.elem.attr('lay-key', that.index);\r\n options.eventElem.attr('lay-key', that.index);\r\n options.elem.attr(MOD_ID, options.id); // 渲染过的标记\r\n\r\n //记录重要日期\r\n options.mark = lay.extend({}, (options.calendar && options.lang === 'cn') ? {\r\n '0-1-1': '元旦'\r\n ,'0-2-14': '情人'\r\n ,'0-3-8': '妇女'\r\n ,'0-3-12': '植树'\r\n ,'0-4-1': '愚人'\r\n ,'0-5-1': '劳动'\r\n ,'0-5-4': '青年'\r\n ,'0-6-1': '儿童'\r\n ,'0-9-10': '教师'\r\n ,'0-10-1': '国庆'\r\n ,'0-12-25': '圣诞'\r\n } : {}, options.mark);\r\n\r\n //获取限制内日期\r\n lay.each(['min', 'max'], function(i, item){\r\n var ymd = [];\r\n var hms = [];\r\n if(typeof options[item] === 'number'){ //如果为数字\r\n var day = options[item]\r\n ,tDate = new Date()\r\n ,time = that.newDate({ //今天的最大毫秒数\r\n year: tDate.getFullYear()\r\n ,month: tDate.getMonth()\r\n ,date: tDate.getDate()\r\n ,hours: i ? 23 : 0\r\n ,minutes: i ? 59 : 0\r\n ,seconds: i ? 59 : 0\r\n }).getTime()\r\n ,STAMP = 86400000 //代表一天的毫秒数\r\n ,thisDate = new Date(\r\n day ? (\r\n day < STAMP ? time + day*STAMP : day //如果数字小于一天的毫秒数,则数字为天数,否则为毫秒数\r\n ) : time\r\n );\r\n ymd = [thisDate.getFullYear(), thisDate.getMonth() + 1, thisDate.getDate()];\r\n hms = [thisDate.getHours(), thisDate.getMinutes(), thisDate.getSeconds()];\r\n } else if(typeof options[item] === 'string') {\r\n ymd = (options[item].match(/\\d+-\\d+-\\d+/) || [''])[0].split('-');\r\n hms = (options[item].match(/\\d+:\\d+:\\d+/) || [''])[0].split(':');\r\n } else if(typeof options[item] === 'object'){\r\n return options[item];\r\n }\r\n options[item] = {\r\n year: ymd[0] | 0 || new Date().getFullYear()\r\n ,month: ymd[1] ? (ymd[1] | 0) - 1 : new Date().getMonth()\r\n ,date: ymd[2] | 0 || new Date().getDate()\r\n ,hours: hms[0] | 0\r\n ,minutes: hms[1] | 0\r\n ,seconds: hms[2] | 0\r\n };\r\n });\r\n\r\n that.elemID = 'layui-laydate'+ options.elem.attr('lay-key');\r\n\r\n if(options.show || isStatic) that.render();\r\n isStatic || that.events();\r\n\r\n //默认赋值\r\n if(options.value && options.isInitValue){\r\n if(layui.type(options.value) === 'date'){\r\n that.setValue(that.parse(0, that.systemDate(options.value)));\r\n } else {\r\n that.setValue(options.value);\r\n }\r\n }\r\n };\r\n\r\n //控件主体渲染\r\n Class.prototype.render = function(){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isStatic = options.position === 'static'\r\n\r\n //主面板\r\n ,elem = that.elem = lay.elem('div', {\r\n id: that.elemID\r\n ,\"class\": [\r\n 'layui-laydate'\r\n ,options.range ? ' layui-laydate-range' : ''\r\n ,that.rangeLinked ? ' layui-laydate-linkage' : ''\r\n ,isStatic ? (' '+ ELEM_STATIC) : ''\r\n ,options.fullPanel ? ' laydate-theme-fullpanel' : '' // 全面版\r\n // ,options.theme && options.theme !== 'default' && !/^#/.test(options.theme) ? (' laydate-theme-' + options.theme) : ''\r\n ,(function () {\r\n var themeStr = '';\r\n lay.each(options.theme, function (index, theme) {\r\n if (theme !== 'default' && !/^#/.test(theme)) {\r\n themeStr += ' laydate-theme-' + theme;\r\n }\r\n })\r\n return themeStr;\r\n })()\r\n ].join('')\r\n })\r\n\r\n //主区域\r\n ,elemMain = that.elemMain = []\r\n ,elemHeader = that.elemHeader = []\r\n ,elemCont = that.elemCont = []\r\n ,elemTable = that.table = []\r\n\r\n //底部区域\r\n ,divFooter = that.footer = lay.elem('div', {\r\n \"class\": ELEM_FOOTER\r\n })\r\n\r\n //快捷栏\r\n ,divShortcut = that.shortcut = lay.elem('ul', {\r\n \"class\": ELEM_SHORTCUT\r\n });\r\n\r\n if(options.zIndex) elem.style.zIndex = options.zIndex;\r\n\r\n //单双日历区域\r\n lay.each(new Array(2), function(i){\r\n if(!options.range && i > 0){\r\n return true;\r\n }\r\n\r\n //头部区域\r\n var divHeader = lay.elem('div', {\r\n \"class\": 'layui-laydate-header'\r\n })\r\n\r\n //左右切换\r\n ,headerChild = [function(){ //上一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //上一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //年月选择\r\n var elem = lay.elem('div', {\r\n \"class\": 'laydate-set-ym'\r\n }), spanY = lay.elem('span'), spanM = lay.elem('span');\r\n elem.appendChild(spanY);\r\n elem.appendChild(spanM);\r\n return elem;\r\n }(), function(){ //下一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //下一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }()]\r\n\r\n //日历内容区域\r\n ,divContent = lay.elem('div', {\r\n \"class\": 'layui-laydate-content'\r\n })\r\n ,table = lay.elem('table')\r\n ,thead = lay.elem('thead'), theadTr = lay.elem('tr');\r\n\r\n //生成年月选择\r\n lay.each(headerChild, function(i, item){\r\n divHeader.appendChild(item);\r\n });\r\n\r\n //生成表格\r\n thead.appendChild(theadTr);\r\n lay.each(new Array(6), function(i){ //表体\r\n var tr = table.insertRow(0);\r\n lay.each(new Array(7), function(j){\r\n if(i === 0){\r\n var th = lay.elem('th');\r\n th.innerHTML = lang.weeks[(j + options.weekStart) % 7];\r\n theadTr.appendChild(th);\r\n }\r\n tr.insertCell(j);\r\n });\r\n });\r\n table.insertBefore(thead, table.children[0]); //表头\r\n divContent.appendChild(table);\r\n\r\n elemMain[i] = lay.elem('div', {\r\n \"class\": ELEM_MAIN + ' laydate-main-list-'+ i\r\n });\r\n\r\n elemMain[i].appendChild(divHeader);\r\n elemMain[i].appendChild(divContent);\r\n\r\n elemHeader.push(headerChild);\r\n elemCont.push(divContent);\r\n elemTable.push(table);\r\n });\r\n\r\n //生成底部栏\r\n lay(divFooter).html(function(){\r\n var html = [], btns = [];\r\n if(options.type === 'datetime'){\r\n html.push(''+ lang.timeTips +'');\r\n }\r\n if(!(!options.range && options.type === 'datetime') || options.fullPanel){\r\n html.push('')\r\n }\r\n\r\n lay.each(options.btns, function(i, item){\r\n var title = lang.tools[item] || 'btn';\r\n if(options.range && item === 'now') return;\r\n if(isStatic && item === 'clear') title = options.lang === 'cn' ? '重置' : 'Reset';\r\n btns.push(''+ title +'');\r\n });\r\n html.push('');\r\n return html.join('');\r\n }());\r\n\r\n // 生成快捷键栏\r\n if (options.shortcuts) {\r\n elem.appendChild(divShortcut);\r\n lay(divShortcut).html(function () {\r\n var shortcutBtns = [];\r\n lay.each(options.shortcuts, function (i, item) {\r\n shortcutBtns.push('
          • '+item.text+'
          • ')\r\n })\r\n return shortcutBtns.join('');\r\n }()).find('li').on('click', function (event) {\r\n var btnSetting = options.shortcuts[this.dataset['index']] || {};\r\n var value = (typeof btnSetting.value === 'function'\r\n ? btnSetting.value()\r\n : btnSetting.value) || [];\r\n if (!layui.isArray(value)) {\r\n value = [value];\r\n }\r\n var type = options.type;\r\n lay.each(value, function (i, item) {\r\n var dateTime = [options.dateTime, that.endDate][i];\r\n if (type === 'time' && layui.type(item) !== 'date') {\r\n if (that.EXP_IF.test(item)) {\r\n item = (item.match(that.EXP_SPLIT) || []).slice(1);\r\n lay.extend(dateTime, {hours: item[0] | 0, minutes: item[2] | 0, seconds: item[4] | 0})\r\n }\r\n } else {\r\n lay.extend(dateTime, that.systemDate(layui.type(item) === 'date' ? item : new Date(item)))\r\n }\r\n\r\n if (type === 'time' || type === 'datetime') {\r\n that[['startTime', 'endTime'][i]] = {\r\n hours: dateTime.hours,\r\n minutes: dateTime.minutes,\r\n seconds: dateTime.seconds,\r\n }\r\n }\r\n if (i === 0) { // 第一个值作为startDate\r\n that.startDate = lay.extend({}, dateTime);\r\n } else {\r\n that.endState = true;\r\n }\r\n if (type === 'year' || type === 'month' || type === 'time') {\r\n that.listYM[i] = [dateTime.year, dateTime.month + 1];\r\n } else if (i) {\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n }\r\n });\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n\r\n var timeBtn = lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n timeBtn && timeBtn.attr('lay-type') === 'date' && timeBtn[0].click();\r\n that.done(null, 'change');\r\n\r\n lay(this).addClass(THIS);\r\n\r\n // 自动确认\r\n if(options.position !== 'static'){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n /*\r\n if (options.position !== 'static' && !options.range && options.autoConfirm) {\r\n if (type === 'date') {\r\n that.choose(lay(elem).find('td.layui-this'))\r\n } else if (type === 'year' || type === 'month') {\r\n if(lay(elemMain[0]).find('.' + ELEM_MAIN + ' li.' + THIS + ':not(.laydate-disabled)')[0]) {\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n }\r\n */\r\n })\r\n }\r\n\r\n //插入到主区域\r\n lay.each(elemMain, function(i, main){\r\n elem.appendChild(main);\r\n });\r\n options.showBottom && elem.appendChild(divFooter);\r\n\r\n // 生成自定义主题\r\n var style = lay.elem('style');\r\n var styleText = [];\r\n var colorTheme;\r\n var isPrimaryColor = true;\r\n lay.each(options.theme, function (index, theme) {\r\n // 主色\r\n if(isPrimaryColor && /^#/.test(theme)){\r\n colorTheme = true;\r\n isPrimaryColor = false;\r\n styleText.push([\r\n '#{{id}} .layui-laydate-header{background-color:{{theme}};}',\r\n '#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}',\r\n options.theme.indexOf('circle') !== -1 ? '' : '#{{id}} .layui-this{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now{color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n return;\r\n }\r\n // 第二个自定义颜色作为辅色\r\n if(!isPrimaryColor && /^#/.test(theme)){\r\n styleText.push([\r\n '#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n }\r\n });\r\n //快捷栏样式\r\n if (options.shortcuts && options.range) {\r\n styleText.push('#{{id}}.layui-laydate-range{width: 628px;}'.replace(/{{id}}/g, that.elemID))\r\n }\r\n if (styleText.length) {\r\n styleText = styleText.join('');\r\n if('styleSheet' in style){\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n colorTheme && lay(elem).addClass('laydate-theme-molv');\r\n elem.appendChild(style);\r\n }\r\n\r\n //移除上一个控件\r\n that.remove(Class.thisElemDate);\r\n\r\n //记录当前执行的实例索引\r\n laydate.thisId = options.id;\r\n\r\n //如果是静态定位,则插入到指定的容器中,否则,插入到body\r\n isStatic ? options.elem.append(elem) : (\r\n document.body.appendChild(elem)\r\n ,that.position() //定位\r\n );\r\n\r\n var shade = options.shade ? ('
            ') : '';\r\n elem.insertAdjacentHTML('beforebegin', shade);\r\n\r\n that.checkDate().calendar(null, 0, 'init'); //初始校验\r\n that.changeEvent(); //日期切换\r\n\r\n Class.thisElemDate = that.elemID;\r\n\r\n that.renderAdditional()\r\n typeof options.ready === 'function' && options.ready(lay.extend({}, options.dateTime, {\r\n month: options.dateTime.month + 1\r\n }));\r\n\r\n that.preview();\r\n };\r\n\r\n //控件移除\r\n Class.prototype.remove = function(prev){\r\n var that = this\r\n ,options = that.config\r\n ,elem = lay('#'+ (prev || that.elemID));\r\n if(!elem[0]) return that;\r\n\r\n if(!elem.hasClass(ELEM_STATIC)){\r\n that.checkDate(function(){\r\n elem.remove();\r\n //delete options.dateTime;\r\n delete that.startDate;\r\n delete that.endDate;\r\n delete that.endState;\r\n delete that.startTime;\r\n delete that.endTime;\r\n delete laydate.thisId;\r\n typeof options.close === 'function' && options.close(that);\r\n });\r\n }\r\n lay('.' + ELEM_SHADE).remove();\r\n return that;\r\n };\r\n\r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(options.elem[0], that.elem, {\r\n position: options.position\r\n });\r\n return that;\r\n };\r\n\r\n // 提示\r\n Class.prototype.hint = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var div = lay.elem('div', {\r\n \"class\": ELEM_HINT\r\n });\r\n\r\n if(!that.elem) return;\r\n\r\n // 兼容旧版参数\r\n if(typeof opts === 'object'){\r\n opts = opts || {};\r\n } else {\r\n opts = {\r\n content: opts\r\n }\r\n }\r\n\r\n div.innerHTML = opts.content || '';\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n that.elem.appendChild(div);\r\n\r\n clearTimeout(that.hinTimer);\r\n that.hinTimer = setTimeout(function(){\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n }, 'ms' in opts ? opts.ms : 3000);\r\n };\r\n\r\n //获取递增/减后的年月\r\n Class.prototype.getAsYM = function(Y, M, type){\r\n type ? M-- : M++;\r\n if(M < 0){\r\n M = 11;\r\n Y--;\r\n }\r\n if(M > 11){\r\n M = 0;\r\n Y++;\r\n }\r\n return [Y, M];\r\n };\r\n\r\n //系统日期\r\n Class.prototype.systemDate = function(newDate){\r\n var thisDate = newDate || new Date();\r\n return {\r\n year: thisDate.getFullYear() //年\r\n ,month: thisDate.getMonth() //月\r\n ,date: thisDate.getDate() //日\r\n ,hours: newDate ? newDate.getHours() : 0 //时\r\n ,minutes: newDate ? newDate.getMinutes() : 0 //分\r\n ,seconds: newDate ? newDate.getSeconds() : 0 //秒\r\n }\r\n };\r\n\r\n //日期校验\r\n Class.prototype.checkDate = function(fn){\r\n var that = this\r\n ,thisDate = new Date()\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime = options.dateTime || that.systemDate()\r\n ,thisMaxDate, error\r\n\r\n ,elem = options.elem[0]\r\n ,valType = that.isInput(elem) ? 'val' : 'html'\r\n ,value = function(){\r\n //如果传入了开始和结束日期的 input 对象,则将其拼接为日期范围字符\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()];\r\n\r\n if(vals[0] && vals[1]){\r\n return vals.join(' ' + that.rangeStr + ' ');\r\n }\r\n }\r\n return that.isInput(elem)\r\n ? elem.value\r\n : (options.position === 'static' ? '' : lay(elem).attr('lay-date'));\r\n }()\r\n\r\n //校验日期有效数字\r\n ,checkValid = function(dateTime){\r\n if (!dateTime) {\r\n return;\r\n }\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], error = true; //不能超过20万年\r\n if(dateTime.month > 11) dateTime.month = 11, error = true;\r\n if(dateTime.seconds > 59) dateTime.seconds = 0, dateTime.minutes++, error = true;\r\n if(dateTime.minutes > 59) dateTime.minutes = 0, dateTime.hours++, error = true;\r\n if(dateTime.hours > 23) dateTime.hours = 0, error = true;\r\n\r\n //计算当前月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year);\r\n if(dateTime.date > thisMaxDate) dateTime.date = thisMaxDate, error = true;\r\n }\r\n\r\n //获得初始化日期值\r\n ,initDate = function(dateTime, value, index){\r\n var startEnd = ['startTime', 'endTime'];\r\n value = (value.match(that.EXP_SPLIT) || []).slice(1);\r\n index = index || 0;\r\n\r\n if(options.range){\r\n that[startEnd[index]] = that[startEnd[index]] || {};\r\n }\r\n lay.each(that.format, function(i, item){\r\n var thisv = parseFloat(value[i]);\r\n if(value[i].length < item.length) error = true;\r\n if(/yyyy|y/.test(item)){ //年\r\n if(thisv < LIMIT_YEAR[0]) thisv = LIMIT_YEAR[0], error = true; //年不能低于100年\r\n dateTime.year = thisv;\r\n } else if(/MM|M/.test(item)){ //月\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.month = thisv - 1;\r\n } else if(/dd|d/.test(item)){ //日\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.date = thisv;\r\n } else if(/HH|H/.test(item)){ //时\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 23) thisv = 23, error = true;\r\n dateTime.hours = thisv;\r\n options.range && (that[startEnd[index]].hours = thisv);\r\n } else if(/mm|m/.test(item)){ //分\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.minutes = thisv;\r\n options.range && (that[startEnd[index]].minutes = thisv);\r\n } else if(/ss|s/.test(item)){ //秒\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.seconds = thisv;\r\n options.range && (that[startEnd[index]].seconds = thisv);\r\n }\r\n });\r\n checkValid(dateTime);\r\n };\r\n\r\n if(fn === 'limit') {\r\n if (options.range) {\r\n checkValid(that.rangeLinked ? that.startDate : dateTime); // 校验开始时间\r\n that.endDate && checkValid(that.endDate); // 校验结束时间\r\n } else {\r\n checkValid(dateTime);\r\n }\r\n return that;\r\n }\r\n\r\n value = value || options.value;\r\n if(typeof value === 'string'){\r\n value = value.replace(/\\s+/g, ' ').replace(/^\\s|\\s$/g, '');\r\n }\r\n\r\n //如果开启范围,则计算结束日期\r\n var getEndDate = function(){\r\n if(options.range){\r\n that.endDate = that.endDate || lay.extend({}, options.dateTime, function(){\r\n var obj = {}\r\n ,dateTime = options.dateTime\r\n ,EYM = that.getAsYM(dateTime.year, dateTime.month);\r\n\r\n //初始右侧面板的年月\r\n if(options.type === 'year'){\r\n obj.year = dateTime.year + 1;\r\n } else if(options.type !== 'time'){\r\n obj.year = EYM[0];\r\n obj.month = EYM[1];\r\n }\r\n\r\n //初始右侧面板的时间\r\n if(options.type === 'datetime' || options.type === 'time'){\r\n obj.hours = 23;\r\n obj.minutes = obj.seconds = 59;\r\n }\r\n\r\n return obj;\r\n }());\r\n }\r\n };\r\n getEndDate();\r\n\r\n if(typeof value === 'string' && value){\r\n if(that.EXP_IF.test(value)){ //校验日期格式\r\n if(options.range){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n lay.each([options.dateTime, that.endDate], function(i, item){\r\n initDate(item, value[i], i);\r\n });\r\n } else {\r\n initDate(dateTime, value);\r\n }\r\n } else {\r\n //格式不合法\r\n that.hint(lang.formatError[0] + (\r\n options.range ? (options.format + ' '+ that.rangeStr +' ' + options.format) : options.format\r\n ) + lang.formatError[1]);\r\n error = true;\r\n }\r\n } else if(value && layui.type(value) === 'date'){ //若值为日期对象\r\n options.dateTime = that.systemDate(value);\r\n } else {\r\n //重置开始日期\r\n options.dateTime = that.systemDate();\r\n delete that.startTime;\r\n\r\n //重置结束日期\r\n delete that.endDate; //删除原有的结束日期\r\n getEndDate(); //并重新获得新的结束日期\r\n delete that.endTime;\r\n }\r\n\r\n //从日期范围表单中获取初始值\r\n (function(){\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()]\r\n ,arrDate = [options.dateTime, that.endDate];\r\n lay.each(vals, function(_i, _v){\r\n if(that.EXP_IF_ONE.test(_v)){ //校验日期格式\r\n initDate(arrDate[_i], _v, _i);\r\n }\r\n });\r\n }\r\n })();\r\n\r\n // 校验日期有效数字\r\n checkValid(dateTime);\r\n if(options.range) checkValid(that.endDate);\r\n\r\n // 如果初始值格式错误,则纠正初始值\r\n if(error && value){\r\n that.setValue(\r\n options.range ? (that.endDate ? that.parse() : '') : that.parse()\r\n );\r\n }\r\n\r\n //如果当前日期不在设定的最大小日期区间,则自动纠正在可选区域\r\n //校验主面板是否在可选日期区间\r\n var minMaxError;\r\n if(that.getDateTime(dateTime) > that.getDateTime(options.max)){ //若超出最大日期\r\n dateTime = options.dateTime = lay.extend({}, options.max);\r\n minMaxError = true;\r\n } else if(that.getDateTime(dateTime) < that.getDateTime(options.min)){ //若少于最小日期\r\n dateTime = options.dateTime = lay.extend({}, options.min);\r\n minMaxError = true;\r\n }\r\n\r\n //校验右侧面板是否在可选日期区间\r\n if(options.range){\r\n if(that.getDateTime(that.endDate) < that.getDateTime(options.min) || that.getDateTime(that.endDate) > that.getDateTime(options.max)){\r\n that.endDate = lay.extend({}, options.max);\r\n minMaxError = true;\r\n }\r\n // 有时间范围的情况下初始化startTime和endTime\r\n that.startTime = {\r\n hours: options.dateTime.hours,\r\n minutes: options.dateTime.minutes,\r\n seconds: options.dateTime.seconds,\r\n }\r\n that.endTime = {\r\n hours: that.endDate.hours,\r\n minutes: that.endDate.minutes,\r\n seconds: that.endDate.seconds,\r\n }\r\n // 如果是年月范围,将对应的日期统一成当月的1日进行比较,避免出现同一个月但是开始日期大于结束日期的情况\r\n if (options.type === 'month') {\r\n options.dateTime.date = 1;\r\n that.endDate.date = 1;\r\n }\r\n }\r\n\r\n // 初始值不在最大最小范围内\r\n if(minMaxError && value){\r\n that.setValue(that.parse());\r\n that.hint('value ' + lang.invalidDate + lang.formatError[1]);\r\n }\r\n\r\n // 初始赋值 startDate,endState\r\n that.startDate = that.startDate || value && lay.extend({}, options.dateTime); // 有默认值才初始化startDate\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n that.endState = !options.range || !that.rangeLinked || !!(that.startDate && that.endDate); // 初始化选中范围状态\r\n\r\n fn && fn();\r\n return that;\r\n };\r\n\r\n // 公历重要日期与自定义备注\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this\r\n ,mark, options = that.config;\r\n lay.each(options.mark, function(key, title){\r\n var keys = key.split('-');\r\n if((keys[0] == YMD[0] || keys[0] == 0) //每年的每月\r\n && (keys[1] == YMD[1] || keys[1] == 0) //每月的每日\r\n && keys[2] == YMD[2]){ //特定日\r\n mark = title || YMD[2];\r\n }\r\n });\r\n mark && td.find('div').html(''+ mark +'');\r\n\r\n return that;\r\n };\r\n\r\n // 标注法定节假日或补假上班\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n var type = ['', 'work'];\r\n\r\n if(layui.type(options.holidays) !== 'array') return that;\r\n\r\n lay.each(options.holidays, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(dayStr === td.attr('lay-ymd')){\r\n td.find('div').html('' + YMD[2] + '');\r\n }\r\n });\r\n });\r\n\r\n return that;\r\n };\r\n\r\n // 无效日期范围的标记\r\n Class.prototype.limit = function(opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var timestamp = {}\r\n var dateTime = opts.index > (opts.time ? 0 : 41) ? that.endDate : options.dateTime;\r\n var isOut;\r\n\r\n lay.each({\r\n now: lay.extend({}, dateTime, opts.date || {})\r\n ,min: options.min\r\n ,max: options.max\r\n }, function(key, item){\r\n timestamp[key] = that.newDate(lay.extend({\r\n year: item.year\r\n ,month: opts.type === 'year' ? 0 : item.month // 年份的时候只比较年\r\n ,date: (opts.type === 'year' || opts.type === 'month') ? 1 : item.date // 年月只比较年月不与最大最小比日期\r\n }, function(){\r\n var hms = {};\r\n lay.each(opts.time, function(i, keys){\r\n hms[keys] = item[keys];\r\n });\r\n return hms;\r\n }())).getTime(); //time:是否比较时分秒\r\n });\r\n\r\n isOut = timestamp.now < timestamp.min || timestamp.now > timestamp.max;\r\n opts.elem && opts.elem[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n return isOut;\r\n };\r\n\r\n //当前日期对象\r\n Class.prototype.thisDateTime = function(index){\r\n var that = this\r\n ,options = that.config;\r\n return index ? that.endDate: options.dateTime;\r\n };\r\n\r\n //日历表\r\n Class.prototype.calendar = function(value, index, type){\r\n index = index ? 1 : 0;\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = value || that.thisDateTime(index)\r\n ,thisDate = new Date(), startWeek, prevMaxDate, thisMaxDate\r\n ,lang = that.lang()\r\n\r\n ,isAlone = options.type !== 'date' && options.type !== 'datetime'\r\n ,tds = lay(that.table[index]).find('td')\r\n ,elemYM = lay(that.elemHeader[index][2]).find('span');\r\n\r\n if(dateTime.year < LIMIT_YEAR[0]) dateTime.year = LIMIT_YEAR[0], that.hint(lang.invalidDate);\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], that.hint(lang.invalidDate);\r\n\r\n //记录初始值\r\n if(!that.firstDate){\r\n that.firstDate = lay.extend({}, dateTime);\r\n }\r\n\r\n //计算当前月第一天的星期\r\n thisDate.setFullYear(dateTime.year, dateTime.month, 1);\r\n startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;\r\n\r\n prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天\r\n\r\n //赋值日\r\n lay.each(tds, function(index_, item){\r\n var YMD = [dateTime.year, dateTime.month], st;\r\n item = lay(item);\r\n item.removeAttr(\"class\");\r\n if(index_ < startWeek){\r\n st = prevMaxDate - startWeek + index_;\r\n item.addClass('laydate-day-prev');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n } else if(index_ >= startWeek && index_ < thisMaxDate + startWeek){\r\n st = index_ - startWeek;\r\n if (!that.rangeLinked) {\r\n st + 1 === dateTime.date && item.addClass(THIS);\r\n }\r\n } else {\r\n st = index_ - thisMaxDate - startWeek;\r\n item.addClass('laydate-day-next');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month);\r\n }\r\n YMD[1]++;\r\n YMD[2] = st + 1;\r\n item.attr('lay-ymd', YMD.join('-')).html('
            ' + YMD[2] + '
            ');\r\n that.mark(item, YMD).holidays(item, YMD).limit({\r\n elem: item,\r\n date: {\r\n year: YMD[0],\r\n month: YMD[1] - 1,\r\n date: YMD[2]\r\n },\r\n index: index_\r\n });\r\n });\r\n\r\n //同步头部年月\r\n lay(elemYM[0]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n lay(elemYM[1]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n\r\n if(options.lang === 'cn'){\r\n lay(elemYM[0]).attr('lay-type', 'year').html(dateTime.year + ' 年')\r\n lay(elemYM[1]).attr('lay-type', 'month').html((dateTime.month + 1) + ' 月');\r\n } else {\r\n lay(elemYM[0]).attr('lay-type', 'month').html(lang.month[dateTime.month]);\r\n lay(elemYM[1]).attr('lay-type', 'year').html(dateTime.year);\r\n }\r\n\r\n //初始默认选择器\r\n if(isAlone){ //年、月等独立选择器\r\n if(options.range){\r\n if(value || type !== 'init'){ // 判断是否需要显示年月时间列表\r\n that.listYM = [\r\n [(that.startDate || options.dateTime).year, (that.startDate || options.dateTime).month + 1]\r\n ,[that.endDate.year, that.endDate.month + 1]\r\n ];\r\n that.list(options.type, 0).list(options.type, 1);\r\n\r\n //同步按钮可点状态\r\n options.type === 'time' ? that.setBtnStatus('时间'\r\n ,lay.extend({}, that.systemDate(), that.startTime)\r\n ,lay.extend({}, that.systemDate(), that.endTime)\r\n ) : that.setBtnStatus(true);\r\n }\r\n } else {\r\n that.listYM = [[dateTime.year, dateTime.month + 1]];\r\n that.list(options.type, 0);\r\n }\r\n }\r\n\r\n //初始赋值双日历\r\n if(options.range && type === 'init'){\r\n //执行渲染第二个日历\r\n if (that.rangeLinked) {\r\n var EYM = that.getAsYM(dateTime.year, dateTime.month, index ? 'sub' : null)\r\n that.calendar(lay.extend({}, dateTime, {\r\n year: EYM[0]\r\n ,month: EYM[1]\r\n }), 1 - index); // 渲染另外一个\r\n } else {\r\n that.calendar(null, 1 - index);\r\n }\r\n }\r\n\r\n // 通过检测当前有效日期,来设定底部按钮状态\r\n if(!options.range){\r\n var timeParams = ['hours', 'minutes', 'seconds'];\r\n\r\n // 现在按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_NOW),\r\n date: that.systemDate(/^(datetime|time)$/.test(options.type) ? new Date() : null),\r\n index: 0,\r\n time: timeParams\r\n });\r\n // 确认按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n index: 0,\r\n time: timeParams\r\n });\r\n }\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n\r\n // 重置快捷栏选中状态\r\n lay(that.shortcut).find('li.' + THIS).removeClass(THIS);\r\n\r\n //标记选择范围\r\n if(options.range && !isAlone && type !== 'init') that.stampRange();\r\n\r\n return that;\r\n };\r\n\r\n //生成年月时分秒列表\r\n Class.prototype.list = function(type, index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.rangeLinked ? options.dateTime : [options.dateTime, that.endDate][index]\r\n ,lang = that.lang()\r\n ,isAlone = options.range && options.type !== 'date' && options.type !== 'datetime' //独立范围选择器\r\n\r\n ,ul = lay.elem('ul', {\r\n \"class\": ELEM_LIST + ' ' + ({\r\n year: 'laydate-year-list'\r\n ,month: 'laydate-month-list'\r\n ,time: 'laydate-time-list'\r\n })[type]\r\n })\r\n ,elemHeader = that.elemHeader[index]\r\n ,elemYM = lay(elemHeader[2]).find('span')\r\n ,elemCont = that.elemCont[index || 0]\r\n ,haveList = lay(elemCont).find('.'+ ELEM_LIST)[0]\r\n ,isCN = options.lang === 'cn'\r\n ,text = isCN ? '年' : ''\r\n\r\n ,listYM = that.listYM[index] || {}\r\n ,hms = ['hours', 'minutes', 'seconds']\r\n ,startEnd = ['startTime', 'endTime'][index];\r\n\r\n if(listYM[0] < 1) listYM[0] = 1;\r\n\r\n //生成年列表\r\n if(type === 'year'){\r\n var yearNum, startY = yearNum = listYM[0] - 7;\r\n if(startY < 1) startY = yearNum = 1;\r\n lay.each(new Array(15), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': yearNum\r\n })\r\n ,ymd = {\r\n year: yearNum\r\n ,month: 0\r\n ,date: 1\r\n };\r\n\r\n yearNum == listYM[0] && lay(li).addClass(THIS);\r\n li.innerHTML = yearNum + text;\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(yearNum < that.firstDate.year){\r\n ymd.month = options.min.month;\r\n ymd.date = options.min.date;\r\n } else if(yearNum >= that.firstDate.year){\r\n ymd.month = options.max.month;\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n yearNum++;\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', (yearNum - 8) + '-' + listYM[1])\r\n .html((startY + text) + ' - ' + (yearNum - 1 + text));\r\n }\r\n\r\n //生成月列表\r\n else if(type === 'month'){\r\n lay.each(new Array(12), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': i\r\n })\r\n ,ymd = {\r\n year: listYM[0]\r\n ,month: i\r\n ,date: 1\r\n };\r\n\r\n i + 1 == listYM[1] && lay(li).addClass(THIS);\r\n li.innerHTML = lang.month[i] + (isCN ? '月' : '');\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(listYM[0] < that.firstDate.year){\r\n ymd.date = options.min.date;\r\n } else if(listYM[0] >= that.firstDate.year){\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', listYM[0] + '-' + listYM[1])\r\n .html(listYM[0] + text);\r\n }\r\n\r\n //生成时间列表\r\n else if(type === 'time'){\r\n //检测时分秒状态是否在有效日期时间范围内\r\n var setTimeStatus = function(){\r\n lay(ul).find('ol').each(function(i, ol){\r\n lay(ol).find('li').each(function(ii, li){\r\n that.limit({\r\n elem: lay(li),\r\n date: [{\r\n hours: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: that[startEnd].minutes\r\n ,seconds: ii\r\n }][i],\r\n index: index,\r\n time: [\r\n ['hours'],\r\n ['hours', 'minutes'],\r\n ['hours', 'minutes', 'seconds']\r\n ][i]\r\n });\r\n });\r\n });\r\n if(!options.range){\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: that[startEnd],\r\n index: 0,\r\n time: ['hours', 'minutes', 'seconds']\r\n });\r\n }\r\n };\r\n\r\n //初始化时间对象\r\n if(options.range){\r\n if(!that[startEnd]){\r\n that[startEnd] = startEnd === 'startTime' ? dateTime : that.endDate;\r\n }\r\n } else {\r\n that[startEnd] = dateTime;\r\n }\r\n\r\n //生成时分秒\r\n lay.each([24, 60, 60], function(i, item){\r\n var li = lay.elem('li'), childUL = ['

            '+ lang.time[i] +'

              '];\r\n lay.each(new Array(item), function(ii){\r\n childUL.push(''+ lay.digit(ii, 2) +'');\r\n });\r\n li.innerHTML = childUL.join('') + '
            ';\r\n ul.appendChild(li);\r\n });\r\n setTimeStatus();\r\n }\r\n\r\n //插入容器\r\n if(haveList) elemCont.removeChild(haveList);\r\n elemCont.appendChild(ul);\r\n\r\n //年月面板 - 选择事件\r\n if(type === 'year' || type === 'month'){\r\n //显示切换箭头\r\n lay(that.elemMain[index]).addClass('laydate-ym-show');\r\n\r\n //选中\r\n lay(ul).find('li').on('click', function(){\r\n var ym = lay(this).attr('lay-ym') | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n if (that.rangeLinked) {\r\n lay.extend(dateTime, {\r\n year: type === 'year' ? ym : listYM[0]\r\n ,month: type === 'year' ? listYM[1] - 1 : ym\r\n });\r\n } else {\r\n dateTime[type] = ym;\r\n }\r\n\r\n //当为年选择器或者年月选择器\r\n var isYearOrMonth = options.type === 'year' || options.type === 'month';\r\n if(isYearOrMonth){\r\n lay(ul).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n //如果为年月选择器,点击了年列表,则切换到月选择器\r\n if(options.type === 'month' && type === 'year'){\r\n that.listYM[index][0] = ym;\r\n isAlone && ((index ? that.endDate : dateTime).year = ym);\r\n that.list('month', index);\r\n }\r\n } else {\r\n that.checkDate('limit').calendar(dateTime, index, 'init'); // 重新渲染一下两个面板\r\n that.closeList();\r\n }\r\n\r\n that.setBtnStatus(); //同步按钮可点状态\r\n\r\n //若为月选择器,只有当选择月份时才自动关闭;\r\n //若为年选择器,选择年份即自动关闭\r\n //且在范围未开启时\r\n if(!options.range && options.autoConfirm){\r\n if((options.type === 'month' && type === 'month') || (options.type === 'year' && type === 'year')){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n\r\n (that.autoCalendarModel.auto && !that.rangeLinked) ? that.choose(lay(elemCont).find('td.layui-this'), index) : (that.endState && that.done(null, 'change'));\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n });\r\n } else { //时间选择面板 - 选择事件\r\n var span = lay.elem('span', {\r\n \"class\": ELEM_TIME_TEXT\r\n })\r\n\r\n //滚动条定位\r\n ,scroll = function(){\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this\r\n ,li = lay(ol).find('li')\r\n ol.scrollTop = 30*(that[startEnd][hms[i]] - 2);\r\n if(ol.scrollTop <= 0){\r\n li.each(function(ii, item){\r\n if(!lay(this).hasClass(DISABLED)){\r\n ol.scrollTop = 30*(ii - 2);\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n ,haveSpan = lay(elemHeader[2]).find('.'+ ELEM_TIME_TEXT);\r\n\r\n scroll();\r\n span.innerHTML = options.range ? [lang.startTime,lang.endTime][index] : lang.timeTips;\r\n lay(that.elemMain[index]).addClass('laydate-time-show');\r\n\r\n if(haveSpan[0]) haveSpan.remove();\r\n elemHeader[2].appendChild(span);\r\n\r\n var olElem = lay(ul).find('ol');\r\n olElem.each(function(i){\r\n var ol = this;\r\n //选择时分秒\r\n lay(ol).find('li').on('click', function(){\r\n var value = this.innerHTML | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n\r\n if(options.range){\r\n that[startEnd][hms[i]] = value;\r\n } else {\r\n dateTime[hms[i]] = value;\r\n }\r\n lay(ol).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n setTimeStatus();\r\n scroll();\r\n (that.endDate || options.type === 'time' || (options.type === 'datetime' && options.fullPanel)) && that.done(null, 'change');\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n });\r\n });\r\n\r\n if(lay.touchEventsSupported()){\r\n olElem.on('touchstart', function(){\r\n this.style['overflow-y'] = 'auto';\r\n })\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //记录列表切换后的年月\r\n Class.prototype.listYM = [];\r\n\r\n //关闭列表\r\n Class.prototype.closeList = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n lay.each(that.elemCont, function(index, item){\r\n lay(this).find('.'+ ELEM_LIST).remove();\r\n lay(that.elemMain[index]).removeClass('laydate-ym-show laydate-time-show');\r\n });\r\n lay(that.elem).find('.'+ ELEM_TIME_TEXT).remove();\r\n };\r\n\r\n //检测结束日期是否超出开始日期\r\n Class.prototype.setBtnStatus = function(tips, start, end){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isOut, elemBtn = lay(that.footer).find(ELEM_CONFIRM);\r\n if(options.range && options.type !== 'time'){\r\n start = start || (that.rangeLinked ? that.startDate : options.dateTime);\r\n end = end || that.endDate;\r\n isOut = !that.endState || that.newDate(start).getTime() > that.newDate(end).getTime();\r\n\r\n //如果不在有效日期内,直接禁用按钮,否则比较开始和结束日期\r\n (that.limit({\r\n date: start\r\n }) || that.limit({\r\n date: end\r\n }))\r\n ? elemBtn.addClass(DISABLED)\r\n : elemBtn[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n //是否异常提示\r\n if(tips && isOut) that.hint(\r\n typeof tips === 'string' ? lang.timeout.replace(/日期/g, tips) : lang.timeout\r\n );\r\n }\r\n };\r\n\r\n // 转义为规定格式的日期字符\r\n Class.prototype.parse = function(state, date) {\r\n var that = this;\r\n var options = that.config;\r\n var startDate = (that.rangeLinked ? that.startDate : options.dateTime)\r\n var dateTime = date || (\r\n state == 'end' ? lay.extend({}, that.endDate, that.endTime) : (\r\n options.range\r\n ? lay.extend({}, startDate || options.dateTime, that.startTime)\r\n : options.dateTime\r\n )\r\n );\r\n var format = laydate.parse(dateTime, that.format, 1);\r\n\r\n // 返回日期范围字符\r\n if (options.range && state === undefined) {\r\n return format + ' '+ that.rangeStr +' ' + that.parse('end');\r\n }\r\n\r\n return format;\r\n };\r\n\r\n //创建指定日期时间对象\r\n Class.prototype.newDate = function(dateTime){\r\n dateTime = dateTime || {};\r\n return new Date(\r\n dateTime.year || 1\r\n ,dateTime.month || 0\r\n ,dateTime.date || 1\r\n ,dateTime.hours || 0\r\n ,dateTime.minutes || 0\r\n ,dateTime.seconds || 0\r\n );\r\n };\r\n\r\n // 获得指定日期时间对象的毫秒数\r\n Class.prototype.getDateTime = function(obj){\r\n return this.newDate(obj).getTime();\r\n }\r\n\r\n //赋值\r\n Class.prototype.setValue = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,elem = options.elem[0];\r\n\r\n //静态展现则不作默认赋值\r\n if(options.position === 'static') return that;\r\n\r\n value = value || '';\r\n\r\n //绑定的元素是否为 input\r\n if(that.isInput(elem)){\r\n lay(elem).val(value);\r\n } else {\r\n //如果 range 传入了开始和结束的 input 对象,则分别对其赋值\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n if(layui.type(value) !== 'array'){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n }\r\n rangeElem[0].val(value[0] || '');\r\n rangeElem[1].val(value[1] || '');\r\n } else {\r\n if(lay(elem).find('*').length === 0){\r\n lay(elem).html(value);\r\n }\r\n lay(elem).attr('lay-date', value);\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //预览\r\n Class.prototype.preview = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n if(!options.isPreview) return;\r\n\r\n var elemPreview = lay(that.elem).find('.'+ ELEM_PREVIEW)\r\n ,value = options.range ? ((that.rangeLinked ? that.endState : that.endDate) ? that.parse() : '') : that.parse();\r\n\r\n // 显示预览\r\n elemPreview.html(value);\r\n\r\n // 预览颜色渐变\r\n var oldValue = elemPreview.html();\r\n oldValue && (elemPreview.css({\r\n 'color': '#16b777'\r\n }),\r\n setTimeout(function(){\r\n elemPreview.css({\r\n 'color': '#777'\r\n });\r\n }, 300));\r\n };\r\n\r\n // 附加的渲染处理,在 ready 和 change 的时候调用\r\n Class.prototype.renderAdditional = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 处理全面板\r\n if (options.fullPanel) {\r\n that.list('time', 0);\r\n }\r\n };\r\n\r\n // 标记范围内的日期\r\n Class.prototype.stampRange = function(){\r\n var that = this\r\n ,options = that.config\r\n ,startTime = that.rangeLinked ? that.startDate : options.dateTime, endTime\r\n ,tds = lay(that.elem).find('td');\r\n\r\n if(options.range && !that.endState) lay(that.footer).find(ELEM_CONFIRM).addClass(DISABLED);\r\n // if(!that.endState) return;\r\n\r\n startTime = startTime && that.newDate({\r\n year: startTime.year\r\n ,month: startTime.month\r\n ,date: startTime.date\r\n }).getTime();\r\n\r\n endTime = that.endState && that.endDate && that.newDate({\r\n year: that.endDate.year\r\n ,month: that.endDate.month\r\n ,date: that.endDate.date\r\n }).getTime();\r\n\r\n // if(startTime > endTime) return that.hint(TIPS_OUT);\r\n\r\n lay.each(tds, function(i, item){\r\n var ymd = lay(item).attr('lay-ymd').split('-');\r\n var thisTime = that.newDate({\r\n year: ymd[0]\r\n ,month: ymd[1] - 1\r\n ,date: ymd[2]\r\n }).getTime();\r\n\r\n // 标记当天\r\n if(options.rangeLinked && !that.startDate){\r\n if(thisTime === that.newDate(that.systemDate()).getTime()){\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ''\r\n : ELEM_DAY_NOW\r\n );\r\n }\r\n }\r\n\r\n /*\r\n * 标注区间\r\n */\r\n\r\n lay(item).removeClass(ELEM_SELECTED + ' ' + THIS);\r\n\r\n if(thisTime === startTime || thisTime === endTime){\r\n (that.rangeLinked || (!that.rangeLinked && (i < 42 ? thisTime === startTime : thisTime === endTime))) &&\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ELEM_SELECTED\r\n : THIS\r\n );\r\n }\r\n if(thisTime > startTime && thisTime < endTime){\r\n lay(item).addClass(ELEM_SELECTED);\r\n }\r\n });\r\n };\r\n\r\n // 执行 done/change 回调\r\n Class.prototype.done = function(param, type){\r\n var that = this;\r\n var options = that.config;\r\n var start = lay.extend({},\r\n lay.extend(that.rangeLinked ? that.startDate : options.dateTime, that.startTime)\r\n );\r\n var end = lay.extend({}, lay.extend(that.endDate, that.endTime));\r\n\r\n lay.each([start, end], function(i, item){\r\n if(!('month' in item)) return;\r\n lay.extend(item, {\r\n month: item.month + 1\r\n });\r\n });\r\n\r\n that.preview();\r\n\r\n param = param || [that.parse(), start, end];\r\n type === 'change' && that.renderAdditional();\r\n typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param);\r\n\r\n return that;\r\n };\r\n\r\n //选择日期\r\n Class.prototype.choose = function(td, index){\r\n if(td.hasClass(DISABLED)) return;\r\n\r\n var that = this\r\n ,options = that.config\r\n ,panelIndex = index; // 记录点击的是哪一个面板的\r\n\r\n if (that.rangeLinked) {\r\n if (that.endState || !that.startDate) {\r\n // 重新选择或者第一次选择\r\n index = 0;\r\n that.endState = false;\r\n } else {\r\n index = 1;\r\n that.endState = true;\r\n }\r\n }\r\n\r\n var dateTime = that.thisDateTime(index)\r\n\r\n ,tds = lay(that.elem).find('td')\r\n ,YMD = td.attr('lay-ymd').split('-');\r\n\r\n YMD = {\r\n year: YMD[0] | 0\r\n ,month: (YMD[1] | 0) - 1\r\n ,date: YMD[2] | 0\r\n };\r\n\r\n lay.extend(dateTime, YMD); //同步 dateTime\r\n\r\n //范围选择\r\n if(options.range){\r\n //补充时分秒\r\n lay.each(['startTime', 'endTime'], function(i, item){\r\n that[item] = that[item] || {\r\n hours: i ? 23: 0\r\n ,minutes: i ? 59: 0\r\n ,seconds: i ? 59: 0\r\n };\r\n if (index === i) {\r\n // 判断选择之后的是否在范围内,超出则需要调整时分秒\r\n if (that.getDateTime(lay.extend({}, dateTime, that[item])) < that.getDateTime(options.min)) {\r\n that[item] = {\r\n hours: options.min.hours\r\n ,minutes: options.min.minutes\r\n ,seconds: options.min.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n } else if (that.getDateTime(lay.extend({}, dateTime, that[item])) > that.getDateTime(options.max)) {\r\n that[item] = {\r\n hours: options.max.hours\r\n ,minutes: options.max.minutes\r\n ,seconds: options.max.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n }\r\n }\r\n });\r\n if (!index) {\r\n that.startDate = lay.extend({}, dateTime); // 同步startDate\r\n }\r\n // 校验另外一个日期是否在有效的范围内\r\n if (that.endState && !that.limit({date: that.thisDateTime(1 - index)})) {\r\n // 根据选择之后判断是否需要切换模式\r\n var isChange;\r\n if (that.endState && that.autoCalendarModel.auto) {\r\n isChange = that.autoCalendarModel();\r\n }\r\n // 判断是否反选\r\n var needSwapDate = (isChange || that.rangeLinked && that.endState) && that.newDate(that.startDate) > that.newDate(that.endDate);\r\n if (needSwapDate){\r\n var isSameDate = that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month && that.startDate.date === that.endDate.date;\r\n var startDate;\r\n // 如果是同一天并且出现了反选证明是时分秒出现开始时间大于结束时间的现象\r\n if(isSameDate){\r\n startDate = that.startTime;\r\n that.startTime = that.endTime;\r\n that.endTime = startDate;\r\n }\r\n // 当出现反向选择时(即“后点击”的日期比“先点击”的日期小),重新提取区间\r\n startDate = that.startDate;\r\n that.startDate = lay.extend({}, that.endDate, that.startTime);\r\n options.dateTime = lay.extend({}, that.startDate);\r\n that.endDate = lay.extend({}, startDate, that.endTime);\r\n }\r\n isChange && (options.dateTime = lay.extend({}, that.startDate));\r\n }\r\n if (that.rangeLinked) {\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n if (panelIndex && !index && !isChange) { // 处理可能出现的联动面板中点击右面板但是判定为开始日期这个时候点击头部的切换上下月第一次没有反应的问题\r\n // 选择了右面板但是判断之后作为开始时间\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(options.dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n }\r\n that.calendar(dateTimeTemp, panelIndex, isChange ? 'init' : null);\r\n } else {\r\n that.calendar(null, index, isChange ? 'init' : null);\r\n }\r\n that.endState && that.done(null, 'change');\r\n } else if(options.position === 'static'){ //直接嵌套的选中\r\n that.calendar().done().done(null, 'change'); //同时执行 done 和 change 回调\r\n } else if(options.type === 'date'){\r\n options.autoConfirm ? that.setValue(that.parse()).done().remove() : that.calendar().done(null, 'change');\r\n } else if(options.type === 'datetime'){\r\n that.calendar().done(null, 'change');\r\n }\r\n };\r\n\r\n //底部按钮\r\n Class.prototype.tool = function(btn, type){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime\r\n ,isStatic = options.position === 'static'\r\n ,active = {\r\n //选择时间\r\n datetime: function(){\r\n if(lay(btn).hasClass(DISABLED)) return;\r\n that.list('time', 0);\r\n options.range && that.list('time', 1);\r\n lay(btn).attr('lay-type', 'date').html(that.lang().dateTips);\r\n }\r\n\r\n //选择日期\r\n ,date: function(){\r\n that.closeList();\r\n lay(btn).attr('lay-type', 'datetime').html(that.lang().timeTips);\r\n }\r\n\r\n //清空、重置\r\n ,clear: function(){\r\n isStatic && (\r\n lay.extend(dateTime, that.firstDate)\r\n ,that.calendar()\r\n )\r\n options.range && (\r\n delete options.dateTime\r\n ,delete that.endDate\r\n ,delete that.startTime\r\n ,delete that.endTime\r\n );\r\n that.setValue('');\r\n that.done(null, 'onClear').done(['', {}, {}]).remove();\r\n }\r\n\r\n // 现在\r\n ,now: function(){\r\n var thisDate = new Date();\r\n\r\n // 当前系统时间未在 min/max 范围内,则不可点击\r\n if(lay(btn).hasClass(DISABLED)){\r\n return that.hint(lang.tools.now +', '+ lang.invalidDate);\r\n }\r\n\r\n lay.extend(dateTime, that.systemDate(), {\r\n hours: thisDate.getHours()\r\n ,minutes: thisDate.getMinutes()\r\n ,seconds: thisDate.getSeconds()\r\n });\r\n\r\n that.setValue(that.parse());\r\n isStatic && that.calendar();\r\n that.done(null, 'onNow').done().remove();\r\n }\r\n\r\n //确定\r\n ,confirm: function(){\r\n if(options.range){\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(\r\n options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout\r\n );\r\n } else {\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(lang.invalidDate);\r\n }\r\n\r\n that.setValue(that.parse());\r\n that.done(null, 'onConfirm').done().remove();\r\n }\r\n };\r\n active[type] && active[type]();\r\n };\r\n\r\n //统一切换处理\r\n Class.prototype.change = function(index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.thisDateTime(index)\r\n ,isAlone = options.range && (options.type === 'year' || options.type === 'month')\r\n\r\n ,elemCont = that.elemCont[index || 0]\r\n ,listYM = that.listYM[index]\r\n ,addSubYear = function(type){\r\n var isYear = lay(elemCont).find('.laydate-year-list')[0]\r\n ,isMonth = lay(elemCont).find('.laydate-month-list')[0];\r\n\r\n //切换年列表\r\n if(isYear){\r\n listYM[0] = type ? listYM[0] - 15 : listYM[0] + 15;\r\n that.list('year', index);\r\n }\r\n\r\n if(isMonth){ //切换月面板中的年\r\n type ? listYM[0]-- : listYM[0]++;\r\n that.list('month', index);\r\n }\r\n\r\n if(isYear || isMonth){\r\n lay.extend(dateTime, {\r\n year: listYM[0]\r\n });\r\n if(isAlone) dateTime.year = listYM[0];\r\n options.range || that.done(null, 'change');\r\n options.range || that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: {\r\n year: listYM[0]\r\n }\r\n });\r\n }\r\n\r\n that.setBtnStatus();\r\n return isYear || isMonth;\r\n };\r\n\r\n return {\r\n prevYear: function(){\r\n if(addSubYear('sub')) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year--;\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n } else {\r\n dateTime.year--;\r\n that.checkDate('limit').calendar(null, index);\r\n // 面板自动切换的模式下重新判定是否发生模式转换等细节处理\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,prevMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month);\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextYear: function(){\r\n if(addSubYear()) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year++;\r\n that.checkDate('limit').calendar(null, 0, 'init');\r\n } else {\r\n dateTime.year++;\r\n that.checkDate('limit').calendar(null, index);\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n };\r\n };\r\n\r\n //日期切换事件\r\n Class.prototype.changeEvent = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n //日期选择事件\r\n lay(that.elem).on('click', function(e){\r\n lay.stope(e);\r\n }).on('mousedown', function(e){\r\n lay.stope(e);\r\n });\r\n\r\n //年月切换\r\n lay.each(that.elemHeader, function(i, header){\r\n //上一年\r\n lay(header[0]).on('click', function(e){\r\n that.change(i).prevYear();\r\n });\r\n\r\n //上一月\r\n lay(header[1]).on('click', function(e){\r\n that.change(i).prevMonth();\r\n });\r\n\r\n //选择年月\r\n lay(header[2]).find('span').on('click', function(e){\r\n var othis = lay(this)\r\n ,layYM = othis.attr('lay-ym')\r\n ,layType = othis.attr('lay-type');\r\n\r\n if(!layYM) return;\r\n\r\n layYM = layYM.split('-');\r\n\r\n that.listYM[i] = [layYM[0] | 0, layYM[1] | 0];\r\n that.list(layType, i);\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).addClass(DISABLED);\r\n });\r\n\r\n //下一月\r\n lay(header[3]).on('click', function(e){\r\n that.change(i).nextMonth();\r\n });\r\n\r\n //下一年\r\n lay(header[4]).on('click', function(e){\r\n that.change(i).nextYear();\r\n });\r\n });\r\n\r\n //点击日期\r\n lay.each(that.table, function(i, table){\r\n var tds = lay(table).find('td');\r\n tds.on('click', function(){\r\n that.choose(lay(this), i);\r\n });\r\n });\r\n\r\n //点击底部按钮\r\n lay(that.footer).find('span').on('click', function(){\r\n var type = lay(this).attr('lay-type');\r\n that.tool(this, type);\r\n });\r\n };\r\n\r\n //是否输入框\r\n Class.prototype.isInput = function(elem){\r\n return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);\r\n };\r\n\r\n //绑定的元素事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n if(!options.elem[0] || options.elem[0].eventHandler) return;\r\n\r\n var showEvent = function(){\r\n // 已经打开的面板避免重新渲染\r\n if(laydate.thisId === options.id) return;\r\n that.render();\r\n };\r\n\r\n //绑定呼出控件事件\r\n options.elem.on(options.trigger, showEvent);\r\n options.elem[0].eventHandler = true;\r\n options.eventElem.on(options.trigger, showEvent);\r\n\r\n // 元素解绑\r\n that.unbind = function () {\r\n that.remove();\r\n options.elem.off(options.trigger, showEvent);\r\n options.elem.removeAttr('lay-key');\r\n options.elem.removeAttr(MOD_ID);\r\n options.elem[0].eventHandler = false;\r\n options.eventElem.off(options.trigger, showEvent);\r\n options.eventElem.removeAttr('lay-key');\r\n delete thisModule.that[options.id];\r\n };\r\n };\r\n\r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n\r\n //获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that && isLayui) layui.hint().error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n\r\n // 初始执行\r\n ready.run = function(lay){\r\n // 绑定关闭控件事件\r\n lay(document).on('mousedown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n\r\n if(\r\n e.target === options.elem[0] ||\r\n e.target === options.eventElem[0] ||\r\n e.target === lay(options.closeStop)[0] ||\r\n (options.elem[0] && options.elem[0].contains(e.target))\r\n ) return;\r\n\r\n that.remove();\r\n\r\n }).on('keydown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n // 回车触发确认\r\n if(that.config.position === 'static') return;\r\n if(e.keyCode === 13){\r\n if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElemDate){\r\n e.preventDefault();\r\n lay(that.footer).find(ELEM_CONFIRM)[0].click();\r\n }\r\n }\r\n });\r\n\r\n //自适应定位\r\n lay(window).on('resize', function(){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elem || !lay(ELEM)[0]){\r\n return false;\r\n }\r\n\r\n that.position();\r\n });\r\n };\r\n\r\n // 渲染 - 核心接口\r\n laydate.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n // 重载\r\n laydate.reload = function (id, options) {\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.reload(options);\r\n };\r\n\r\n // 获取对应 ID 的实例\r\n laydate.getInst = function (id) {\r\n var that = thisModule.getThis(id);\r\n if(that){\r\n return that.inst;\r\n }\r\n };\r\n\r\n // 面板提示\r\n laydate.hint = function(id, opts){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.hint(opts);\r\n };\r\n\r\n // 解绑实例\r\n laydate.unbind = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.unbind();\r\n };\r\n\r\n // 关闭日期面板\r\n laydate.close = function(id){\r\n var that = thisModule.getThis(id || laydate.thisId);\r\n if(!that) return;\r\n return that.remove();\r\n };\r\n\r\n // 将指定对象转化为日期值\r\n laydate.parse = function(dateTime, format, one){\r\n dateTime = dateTime || {};\r\n\r\n //如果 format 是字符型,则转换为数组格式\r\n if(typeof format === 'string'){\r\n format = thisModule.formatArr(format);\r\n }\r\n\r\n format = (format || []).concat();\r\n\r\n //转义为规定格式\r\n lay.each(format, function(i, item){\r\n if(/yyyy|y/.test(item)){ //年\r\n format[i] = lay.digit(dateTime.year, item.length);\r\n } else if(/MM|M/.test(item)){ //月\r\n format[i] = lay.digit(dateTime.month + (one || 0), item.length);\r\n } else if(/dd|d/.test(item)){ //日\r\n format[i] = lay.digit(dateTime.date, item.length);\r\n } else if(/HH|H/.test(item)){ //时\r\n format[i] = lay.digit(dateTime.hours, item.length);\r\n } else if(/mm|m/.test(item)){ //分\r\n format[i] = lay.digit(dateTime.minutes, item.length);\r\n } else if(/ss|s/.test(item)){ //秒\r\n format[i] = lay.digit(dateTime.seconds, item.length);\r\n }\r\n });\r\n\r\n return format.join('');\r\n };\r\n\r\n // 得到某月的最后一天\r\n laydate.getEndDate = function(month, year){\r\n var thisDate = new Date();\r\n //设置日期为下个月的第一天\r\n thisDate.setFullYear(\r\n year || thisDate.getFullYear()\r\n ,month || (thisDate.getMonth() + 1)\r\n ,1);\r\n //减去一天,得到当前月最后一天\r\n return new Date(thisDate.getTime() - 1000*60*60*24).getDate();\r\n };\r\n\r\n //加载方式\r\n isLayui ? (\r\n laydate.ready()\r\n ,layui.define('lay', function(exports){ //layui 加载\r\n laydate.path = layui.cache.dir;\r\n ready.run(lay);\r\n exports(MOD_NAME, laydate);\r\n })\r\n ) : (\r\n (typeof define === 'function' && define.amd) ? define(function(){ //requirejs 加载\r\n ready.run(lay);\r\n return laydate;\r\n }) : function(){ //普通 script 标签加载\r\n laydate.ready();\r\n ready.run(window.lay);\r\n window.laydate = laydate;\r\n }()\r\n );\r\n\r\n}(window, window.document);\r\n\r\n","/*!\r\n * jQuery JavaScript Library v1.12.4\r\n * http://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2016-05-20T17:17Z\r\n */\r\n\r\n(function( global, factory ) {\r\n\r\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\r\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\r\n\t\t// is present, execute the factory and get jQuery.\r\n\t\t// For environments that do not have a `window` with a `document`\r\n\t\t// (such as Node.js), expose a factory as module.exports.\r\n\t\t// This accentuates the need for the creation of a real `window`.\r\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\r\n\t\t// See ticket #14549 for more info.\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory( global, true ) :\r\n\t\t\tfunction( w ) {\r\n\t\t\t\tif ( !w.document ) {\r\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\r\n\t\t\t\t}\r\n\t\t\t\treturn factory( w );\r\n\t\t\t};\r\n\t} else {\r\n\t\tfactory( global );\r\n\t}\r\n\r\n// Pass this if window is not defined yet\r\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\r\n\r\n// Support: Firefox 18+\r\n// Can't be in strict mode, several libs including ASP.NET trace\r\n// the stack via arguments.caller.callee and Firefox dies if\r\n// you try to trace through \"use strict\" call chains. (#13335)\r\n//\"use strict\";\r\nvar deletedIds = [];\r\n\r\nvar document = window.document;\r\n\r\nvar slice = deletedIds.slice;\r\n\r\nvar concat = deletedIds.concat;\r\n\r\nvar push = deletedIds.push;\r\n\r\nvar indexOf = deletedIds.indexOf;\r\n\r\nvar class2type = {};\r\n\r\nvar toString = class2type.toString;\r\n\r\nvar hasOwn = class2type.hasOwnProperty;\r\n\r\nvar support = {};\r\n\r\n\r\n\r\nvar\r\n\tversion = \"1.12.4\",\r\n\r\n\t// Define a local copy of jQuery\r\n\tjQuery = function( selector, context ) {\r\n\r\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\r\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\r\n\t\treturn new jQuery.fn.init( selector, context );\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\t// Make sure we trim BOM and NBSP\r\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\r\n\r\n\t// Matches dashed string for camelizing\r\n\trmsPrefix = /^-ms-/,\r\n\trdashAlpha = /-([\\da-z])/gi,\r\n\r\n\t// Used by jQuery.camelCase as callback to replace()\r\n\tfcamelCase = function( all, letter ) {\r\n\t\treturn letter.toUpperCase();\r\n\t};\r\n\r\njQuery.fn = jQuery.prototype = {\r\n\r\n\t// The current version of jQuery being used\r\n\tjquery: version,\r\n\r\n\tconstructor: jQuery,\r\n\r\n\t// Start with an empty selector\r\n\tselector: \"\",\r\n\r\n\t// The default length of a jQuery object is 0\r\n\tlength: 0,\r\n\r\n\ttoArray: function() {\r\n\t\treturn slice.call( this );\r\n\t},\r\n\r\n\t// Get the Nth element in the matched element set OR\r\n\t// Get the whole matched element set as a clean array\r\n\tget: function( num ) {\r\n\t\treturn num != null ?\r\n\r\n\t\t\t// Return just the one element from the set\r\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\r\n\r\n\t\t\t// Return all the elements in a clean array\r\n\t\t\tslice.call( this );\r\n\t},\r\n\r\n\t// Take an array of elements and push it onto the stack\r\n\t// (returning the new matched element set)\r\n\tpushStack: function( elems ) {\r\n\r\n\t\t// Build a new jQuery matched element set\r\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\r\n\r\n\t\t// Add the old object onto the stack (as a reference)\r\n\t\tret.prevObject = this;\r\n\t\tret.context = this.context;\r\n\r\n\t\t// Return the newly-formed element set\r\n\t\treturn ret;\r\n\t},\r\n\r\n\t// Execute a callback for every element in the matched set.\r\n\teach: function( callback ) {\r\n\t\treturn jQuery.each( this, callback );\r\n\t},\r\n\r\n\tmap: function( callback ) {\r\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\r\n\t\t\treturn callback.call( elem, i, elem );\r\n\t\t} ) );\r\n\t},\r\n\r\n\tslice: function() {\r\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\r\n\t},\r\n\r\n\tfirst: function() {\r\n\t\treturn this.eq( 0 );\r\n\t},\r\n\r\n\tlast: function() {\r\n\t\treturn this.eq( -1 );\r\n\t},\r\n\r\n\teq: function( i ) {\r\n\t\tvar len = this.length,\r\n\t\t\tj = +i + ( i < 0 ? len : 0 );\r\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\r\n\t},\r\n\r\n\tend: function() {\r\n\t\treturn this.prevObject || this.constructor();\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t// Behaves like an Array's method, not like a jQuery method.\r\n\tpush: push,\r\n\tsort: deletedIds.sort,\r\n\tsplice: deletedIds.splice\r\n};\r\n\r\njQuery.extend = jQuery.fn.extend = function() {\r\n\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\ttarget = arguments[ 0 ] || {},\r\n\t\ti = 1,\r\n\t\tlength = arguments.length,\r\n\t\tdeep = false;\r\n\r\n\t// Handle a deep copy situation\r\n\tif ( typeof target === \"boolean\" ) {\r\n\t\tdeep = target;\r\n\r\n\t\t// skip the boolean and the target\r\n\t\ttarget = arguments[ i ] || {};\r\n\t\ti++;\r\n\t}\r\n\r\n\t// Handle case when target is a string or something (possible in deep copy)\r\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\r\n\t\ttarget = {};\r\n\t}\r\n\r\n\t// extend jQuery itself if only one argument is passed\r\n\tif ( i === length ) {\r\n\t\ttarget = this;\r\n\t\ti--;\r\n\t}\r\n\r\n\tfor ( ; i < length; i++ ) {\r\n\r\n\t\t// Only deal with non-null/undefined values\r\n\t\tif ( ( options = arguments[ i ] ) != null ) {\r\n\r\n\t\t\t// Extend the base object\r\n\t\t\tfor ( name in options ) {\r\n\t\t\t\tsrc = target[ name ];\r\n\t\t\t\tcopy = options[ name ];\r\n\r\n\t\t\t\t// Prevent never-ending loop\r\n\t\t\t\tif ( target === copy ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Recurse if we're merging plain objects or arrays\r\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\r\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\r\n\r\n\t\t\t\t\tif ( copyIsArray ) {\r\n\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Never move original objects, clone them\r\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\r\n\r\n\t\t\t\t// Don't bring in undefined values\r\n\t\t\t\t} else if ( copy !== undefined ) {\r\n\t\t\t\t\ttarget[ name ] = copy;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the modified object\r\n\treturn target;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Unique for each copy of jQuery on the page\r\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\r\n\r\n\t// Assume jQuery is ready without the ready module\r\n\tisReady: true,\r\n\r\n\terror: function( msg ) {\r\n\t\tthrow new Error( msg );\r\n\t},\r\n\r\n\tnoop: function() {},\r\n\r\n\t// See test/unit/core.js for details concerning isFunction.\r\n\t// Since version 1.3, DOM methods and functions like alert\r\n\t// aren't supported. They return false on IE (#2968).\r\n\tisFunction: function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"function\";\r\n\t},\r\n\r\n\tisArray: Array.isArray || function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"array\";\r\n\t},\r\n\r\n\tisWindow: function( obj ) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj != null && obj == obj.window;\r\n\t},\r\n\r\n\tisNumeric: function( obj ) {\r\n\r\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\r\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\r\n\t\t// subtraction forces infinities to NaN\r\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\r\n\t\tvar realStringObj = obj && obj.toString();\r\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\r\n\t},\r\n\r\n\tisEmptyObject: function( obj ) {\r\n\t\tvar name;\r\n\t\tfor ( name in obj ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\tisPlainObject: function( obj ) {\r\n\t\tvar key;\r\n\r\n\t\t// Must be an Object.\r\n\t\t// Because of IE, we also have to check the presence of the constructor property.\r\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\r\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\t// Not own constructor property must be Object\r\n\t\t\tif ( obj.constructor &&\r\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\r\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch ( e ) {\r\n\r\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Handle iteration over inherited properties before own properties.\r\n\t\tif ( !support.ownFirst ) {\r\n\t\t\tfor ( key in obj ) {\r\n\t\t\t\treturn hasOwn.call( obj, key );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Own properties are enumerated firstly, so to speed up,\r\n\t\t// if last one is own, then all properties are own.\r\n\t\tfor ( key in obj ) {}\r\n\r\n\t\treturn key === undefined || hasOwn.call( obj, key );\r\n\t},\r\n\r\n\ttype: function( obj ) {\r\n\t\tif ( obj == null ) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\t\ttypeof obj;\r\n\t},\r\n\r\n\t// Workarounds based on findings by Jim Driscoll\r\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\r\n\tglobalEval: function( data ) {\r\n\t\tif ( data && jQuery.trim( data ) ) {\r\n\r\n\t\t\t// We use execScript on Internet Explorer\r\n\t\t\t// We use an anonymous function so that context is window\r\n\t\t\t// rather than jQuery in Firefox\r\n\t\t\t( window.execScript || function( data ) {\r\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\r\n\t\t\t} )( data );\r\n\t\t}\r\n\t},\r\n\r\n\t// Convert dashed to camelCase; used by the css and data modules\r\n\t// Microsoft forgot to hump their vendor prefix (#9572)\r\n\tcamelCase: function( string ) {\r\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\r\n\t},\r\n\r\n\tnodeName: function( elem, name ) {\r\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\r\n\t},\r\n\r\n\teach: function( obj, callback ) {\r\n\t\tvar length, i = 0;\r\n\r\n\t\tif ( isArrayLike( obj ) ) {\r\n\t\t\tlength = obj.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\ttrim: function( text ) {\r\n\t\treturn text == null ?\r\n\t\t\t\"\" :\r\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\r\n\t},\r\n\r\n\t// results is for internal usage only\r\n\tmakeArray: function( arr, results ) {\r\n\t\tvar ret = results || [];\r\n\r\n\t\tif ( arr != null ) {\r\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\r\n\t\t\t\tjQuery.merge( ret,\r\n\t\t\t\t\ttypeof arr === \"string\" ?\r\n\t\t\t\t\t[ arr ] : arr\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tpush.call( ret, arr );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\tinArray: function( elem, arr, i ) {\r\n\t\tvar len;\r\n\r\n\t\tif ( arr ) {\r\n\t\t\tif ( indexOf ) {\r\n\t\t\t\treturn indexOf.call( arr, elem, i );\r\n\t\t\t}\r\n\r\n\t\t\tlen = arr.length;\r\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\r\n\r\n\t\t\tfor ( ; i < len; i++ ) {\r\n\r\n\t\t\t\t// Skip accessing in sparse arrays\r\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tmerge: function( first, second ) {\r\n\t\tvar len = +second.length,\r\n\t\t\tj = 0,\r\n\t\t\ti = first.length;\r\n\r\n\t\twhile ( j < len ) {\r\n\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\r\n\t\tif ( len !== len ) {\r\n\t\t\twhile ( second[ j ] !== undefined ) {\r\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfirst.length = i;\r\n\r\n\t\treturn first;\r\n\t},\r\n\r\n\tgrep: function( elems, callback, invert ) {\r\n\t\tvar callbackInverse,\r\n\t\t\tmatches = [],\r\n\t\t\ti = 0,\r\n\t\t\tlength = elems.length,\r\n\t\t\tcallbackExpect = !invert;\r\n\r\n\t\t// Go through the array, only saving the items\r\n\t\t// that pass the validator function\r\n\t\tfor ( ; i < length; i++ ) {\r\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\r\n\t\t\tif ( callbackInverse !== callbackExpect ) {\r\n\t\t\t\tmatches.push( elems[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\t// arg is for internal usage only\r\n\tmap: function( elems, callback, arg ) {\r\n\t\tvar length, value,\r\n\t\t\ti = 0,\r\n\t\t\tret = [];\r\n\r\n\t\t// Go through the array, translating each of the items to their new values\r\n\t\tif ( isArrayLike( elems ) ) {\r\n\t\t\tlength = elems.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Go through every key on the object,\r\n\t\t} else {\r\n\t\t\tfor ( i in elems ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Flatten any nested arrays\r\n\t\treturn concat.apply( [], ret );\r\n\t},\r\n\r\n\t// A global GUID counter for objects\r\n\tguid: 1,\r\n\r\n\t// Bind a function to a context, optionally partially applying any\r\n\t// arguments.\r\n\tproxy: function( fn, context ) {\r\n\t\tvar args, proxy, tmp;\r\n\r\n\t\tif ( typeof context === \"string\" ) {\r\n\t\t\ttmp = fn[ context ];\r\n\t\t\tcontext = fn;\r\n\t\t\tfn = tmp;\r\n\t\t}\r\n\r\n\t\t// Quick check to determine if target is callable, in the spec\r\n\t\t// this throws a TypeError, but we will just return undefined.\r\n\t\tif ( !jQuery.isFunction( fn ) ) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\t// Simulated bind\r\n\t\targs = slice.call( arguments, 2 );\r\n\t\tproxy = function() {\r\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\r\n\t\t};\r\n\r\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\r\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\r\n\r\n\t\treturn proxy;\r\n\t},\r\n\r\n\tnow: function() {\r\n\t\treturn +( new Date() );\r\n\t},\r\n\r\n\t// jQuery.support is not used in Core but other projects attach their\r\n\t// properties to it so it needs to exist.\r\n\tsupport: support\r\n} );\r\n\r\n// JSHint would error on this code due to the Symbol not being defined in ES5.\r\n// Defining this global in .jshintrc would create a danger of using the global\r\n// unguarded in another place, it seems safer to just disable JSHint for these\r\n// three lines.\r\n/* jshint ignore: start */\r\nif ( typeof Symbol === \"function\" ) {\r\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\r\n}\r\n/* jshint ignore: end */\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\nfunction( i, name ) {\r\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n} );\r\n\r\nfunction isArrayLike( obj ) {\r\n\r\n\t// Support: iOS 8.2 (not reproducible in simulator)\r\n\t// `in` check used to prevent JIT error (gh-2145)\r\n\t// hasOwn isn't used here due to false negatives\r\n\t// regarding Nodelist length in IE\r\n\tvar length = !!obj && \"length\" in obj && obj.length,\r\n\t\ttype = jQuery.type( obj );\r\n\r\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn type === \"array\" || length === 0 ||\r\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\r\n}\r\nvar Sizzle =\r\n/*!\r\n * Sizzle CSS Selector Engine v2.2.1\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2015-10-17\r\n */\r\n(function( window ) {\r\n\r\nvar i,\r\n\tsupport,\r\n\tExpr,\r\n\tgetText,\r\n\tisXML,\r\n\ttokenize,\r\n\tcompile,\r\n\tselect,\r\n\toutermostContext,\r\n\tsortInput,\r\n\thasDuplicate,\r\n\r\n\t// Local document vars\r\n\tsetDocument,\r\n\tdocument,\r\n\tdocElem,\r\n\tdocumentIsHTML,\r\n\trbuggyQSA,\r\n\trbuggyMatches,\r\n\tmatches,\r\n\tcontains,\r\n\r\n\t// Instance-specific data\r\n\texpando = \"sizzle\" + 1 * new Date(),\r\n\tpreferredDoc = window.document,\r\n\tdirruns = 0,\r\n\tdone = 0,\r\n\tclassCache = createCache(),\r\n\ttokenCache = createCache(),\r\n\tcompilerCache = createCache(),\r\n\tsortOrder = function( a, b ) {\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// General-purpose constants\r\n\tMAX_NEGATIVE = 1 << 31,\r\n\r\n\t// Instance methods\r\n\thasOwn = ({}).hasOwnProperty,\r\n\tarr = [],\r\n\tpop = arr.pop,\r\n\tpush_native = arr.push,\r\n\tpush = arr.push,\r\n\tslice = arr.slice,\r\n\t// Use a stripped-down indexOf as it's faster than native\r\n\t// http://jsperf.com/thor-indexof-vs-for/5\r\n\tindexOf = function( list, elem ) {\r\n\t\tvar i = 0,\r\n\t\t\tlen = list.length;\r\n\t\tfor ( ; i < len; i++ ) {\r\n\t\t\tif ( list[i] === elem ) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\r\n\r\n\t// Regular expressions\r\n\r\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\r\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\r\n\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\r\n\r\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\r\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\r\n\t\t// Operator (capture 2)\r\n\t\t\"*([*^$|!~]?=)\" + whitespace +\r\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\r\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\r\n\t\t\"*\\\\]\",\r\n\r\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\r\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\r\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\r\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\r\n\t\t// 2. simple (capture 6)\r\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\r\n\t\t// 3. anything else (capture 2)\r\n\t\t\".*\" +\r\n\t\t\")\\\\)|)\",\r\n\r\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\r\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\r\n\r\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\r\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\r\n\r\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\r\n\r\n\trpseudo = new RegExp( pseudos ),\r\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\r\n\r\n\tmatchExpr = {\r\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\r\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\r\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\r\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\r\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\r\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\r\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\r\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\r\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\r\n\t\t// For use in libraries implementing .is()\r\n\t\t// We use this for POS matching in `select`\r\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\r\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\r\n\t},\r\n\r\n\trinputs = /^(?:input|select|textarea|button)$/i,\r\n\trheader = /^h\\d$/i,\r\n\r\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\r\n\r\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\r\n\r\n\trsibling = /[+~]/,\r\n\trescape = /'|\\\\/g,\r\n\r\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\r\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\r\n\tfunescape = function( _, escaped, escapedWhitespace ) {\r\n\t\tvar high = \"0x\" + escaped - 0x10000;\r\n\t\t// NaN means non-codepoint\r\n\t\t// Support: Firefox<24\r\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\r\n\t\treturn high !== high || escapedWhitespace ?\r\n\t\t\tescaped :\r\n\t\t\thigh < 0 ?\r\n\t\t\t\t// BMP codepoint\r\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\r\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\r\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\r\n\t},\r\n\r\n\t// Used for iframes\r\n\t// See setDocument()\r\n\t// Removing the function wrapper causes a \"Permission Denied\"\r\n\t// error in IE\r\n\tunloadHandler = function() {\r\n\t\tsetDocument();\r\n\t};\r\n\r\n// Optimize for push.apply( _, NodeList )\r\ntry {\r\n\tpush.apply(\r\n\t\t(arr = slice.call( preferredDoc.childNodes )),\r\n\t\tpreferredDoc.childNodes\r\n\t);\r\n\t// Support: Android<4.0\r\n\t// Detect silently failing push.apply\r\n\tarr[ preferredDoc.childNodes.length ].nodeType;\r\n} catch ( e ) {\r\n\tpush = { apply: arr.length ?\r\n\r\n\t\t// Leverage slice if possible\r\n\t\tfunction( target, els ) {\r\n\t\t\tpush_native.apply( target, slice.call(els) );\r\n\t\t} :\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Otherwise append directly\r\n\t\tfunction( target, els ) {\r\n\t\t\tvar j = target.length,\r\n\t\t\t\ti = 0;\r\n\t\t\t// Can't trust NodeList.length\r\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\r\n\t\t\ttarget.length = j - 1;\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction Sizzle( selector, context, results, seed ) {\r\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\r\n\t\tnewContext = context && context.ownerDocument,\r\n\r\n\t\t// nodeType defaults to 9, since context defaults to document\r\n\t\tnodeType = context ? context.nodeType : 9;\r\n\r\n\tresults = results || [];\r\n\r\n\t// Return early from calls with invalid selector or context\r\n\tif ( typeof selector !== \"string\" || !selector ||\r\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\r\n\tif ( !seed ) {\r\n\r\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\r\n\t\t\tsetDocument( context );\r\n\t\t}\r\n\t\tcontext = context || document;\r\n\r\n\t\tif ( documentIsHTML ) {\r\n\r\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\r\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\r\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\r\n\r\n\t\t\t\t// ID selector\r\n\t\t\t\tif ( (m = match[1]) ) {\r\n\r\n\t\t\t\t\t// Document context\r\n\t\t\t\t\tif ( nodeType === 9 ) {\r\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\r\n\r\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\t\tif ( elem.id === m ) {\r\n\t\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Element context\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\r\n\t\t\t\t\t\t\tcontains( context, elem ) &&\r\n\t\t\t\t\t\t\telem.id === m ) {\r\n\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Type selector\r\n\t\t\t\t} else if ( match[2] ) {\r\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\r\n\t\t\t\t\treturn results;\r\n\r\n\t\t\t\t// Class selector\r\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\r\n\t\t\t\t\tcontext.getElementsByClassName ) {\r\n\r\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Take advantage of querySelectorAll\r\n\t\t\tif ( support.qsa &&\r\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\r\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r\n\r\n\t\t\t\tif ( nodeType !== 1 ) {\r\n\t\t\t\t\tnewContext = context;\r\n\t\t\t\t\tnewSelector = selector;\r\n\r\n\t\t\t\t// qSA looks outside Element context, which is not what we want\r\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\r\n\t\t\t\t// Support: IE <=8\r\n\t\t\t\t// Exclude object elements\r\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\r\n\r\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\r\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\r\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prefix every selector in the list\r\n\t\t\t\t\tgroups = tokenize( selector );\r\n\t\t\t\t\ti = groups.length;\r\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewSelector = groups.join( \",\" );\r\n\r\n\t\t\t\t\t// Expand context for sibling selectors\r\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\r\n\t\t\t\t\t\tcontext;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( newSelector ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tpush.apply( results,\r\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t} catch ( qsaError ) {\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tif ( nid === expando ) {\r\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// All others\r\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\r\n}\r\n\r\n/**\r\n * Create key-value caches of limited size\r\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\r\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\r\n *\tdeleting the oldest entry\r\n */\r\nfunction createCache() {\r\n\tvar keys = [];\r\n\r\n\tfunction cache( key, value ) {\r\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\r\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\r\n\t\t\t// Only keep the most recent entries\r\n\t\t\tdelete cache[ keys.shift() ];\r\n\t\t}\r\n\t\treturn (cache[ key + \" \" ] = value);\r\n\t}\r\n\treturn cache;\r\n}\r\n\r\n/**\r\n * Mark a function for special use by Sizzle\r\n * @param {Function} fn The function to mark\r\n */\r\nfunction markFunction( fn ) {\r\n\tfn[ expando ] = true;\r\n\treturn fn;\r\n}\r\n\r\n/**\r\n * Support testing using an element\r\n * @param {Function} fn Passed the created div and expects a boolean result\r\n */\r\nfunction assert( fn ) {\r\n\tvar div = document.createElement(\"div\");\r\n\r\n\ttry {\r\n\t\treturn !!fn( div );\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t} finally {\r\n\t\t// Remove from its parent by default\r\n\t\tif ( div.parentNode ) {\r\n\t\t\tdiv.parentNode.removeChild( div );\r\n\t\t}\r\n\t\t// release memory in IE\r\n\t\tdiv = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the same handler for all of the specified attrs\r\n * @param {String} attrs Pipe-separated list of attributes\r\n * @param {Function} handler The method that will be applied\r\n */\r\nfunction addHandle( attrs, handler ) {\r\n\tvar arr = attrs.split(\"|\"),\r\n\t\ti = arr.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tExpr.attrHandle[ arr[i] ] = handler;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks document order of two siblings\r\n * @param {Element} a\r\n * @param {Element} b\r\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\r\n */\r\nfunction siblingCheck( a, b ) {\r\n\tvar cur = b && a,\r\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\r\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\r\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\r\n\r\n\t// Use IE sourceIndex if available on both nodes\r\n\tif ( diff ) {\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t// Check if b follows a\r\n\tif ( cur ) {\r\n\t\twhile ( (cur = cur.nextSibling) ) {\r\n\t\t\tif ( cur === b ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn a ? 1 : -1;\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for input types\r\n * @param {String} type\r\n */\r\nfunction createInputPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn name === \"input\" && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for buttons\r\n * @param {String} type\r\n */\r\nfunction createButtonPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for positionals\r\n * @param {Function} fn\r\n */\r\nfunction createPositionalPseudo( fn ) {\r\n\treturn markFunction(function( argument ) {\r\n\t\targument = +argument;\r\n\t\treturn markFunction(function( seed, matches ) {\r\n\t\t\tvar j,\r\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n\t\t\t\ti = matchIndexes.length;\r\n\r\n\t\t\t// Match elements found at the specified indexes\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks a node for validity as a Sizzle context\r\n * @param {Element|Object=} context\r\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\r\n */\r\nfunction testContext( context ) {\r\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\r\n}\r\n\r\n// Expose support vars for convenience\r\nsupport = Sizzle.support = {};\r\n\r\n/**\r\n * Detects XML nodes\r\n * @param {Element|Object} elem An element or a document\r\n * @returns {Boolean} True iff elem is a non-HTML XML node\r\n */\r\nisXML = Sizzle.isXML = function( elem ) {\r\n\t// documentElement is verified for cases where it doesn't yet exist\r\n\t// (such as loading iframes in IE - #4833)\r\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\r\n};\r\n\r\n/**\r\n * Sets document-related variables once based on the current document\r\n * @param {Element|Object} [doc] An element or document object to use to set the document\r\n * @returns {Object} Returns the current document\r\n */\r\nsetDocument = Sizzle.setDocument = function( node ) {\r\n\tvar hasCompare, parent,\r\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\r\n\r\n\t// Return early if doc is invalid or already selected\r\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\r\n\t\treturn document;\r\n\t}\r\n\r\n\t// Update global variables\r\n\tdocument = doc;\r\n\tdocElem = document.documentElement;\r\n\tdocumentIsHTML = !isXML( document );\r\n\r\n\t// Support: IE 9-11, Edge\r\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\r\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\r\n\t\t// Support: IE 11\r\n\t\tif ( parent.addEventListener ) {\r\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\r\n\r\n\t\t// Support: IE 9 - 10 only\r\n\t\t} else if ( parent.attachEvent ) {\r\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\r\n\t\t}\r\n\t}\r\n\r\n\t/* Attributes\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Support: IE<8\r\n\t// Verify that getAttribute really returns attributes and not properties\r\n\t// (excepting IE8 booleans)\r\n\tsupport.attributes = assert(function( div ) {\r\n\t\tdiv.className = \"i\";\r\n\t\treturn !div.getAttribute(\"className\");\r\n\t});\r\n\r\n\t/* getElement(s)By*\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Check if getElementsByTagName(\"*\") returns only elements\r\n\tsupport.getElementsByTagName = assert(function( div ) {\r\n\t\tdiv.appendChild( document.createComment(\"\") );\r\n\t\treturn !div.getElementsByTagName(\"*\").length;\r\n\t});\r\n\r\n\t// Support: IE<9\r\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\r\n\r\n\t// Support: IE<10\r\n\t// Check if getElementById returns elements by name\r\n\t// The broken getElementById methods don't pick up programatically-set names,\r\n\t// so use a roundabout getElementsByName test\r\n\tsupport.getById = assert(function( div ) {\r\n\t\tdocElem.appendChild( div ).id = expando;\r\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\r\n\t});\r\n\r\n\t// ID find and filter\r\n\tif ( support.getById ) {\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar m = context.getElementById( id );\r\n\t\t\t\treturn m ? [ m ] : [];\r\n\t\t\t}\r\n\t\t};\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t} else {\r\n\t\t// Support: IE6/7\r\n\t\t// getElementById is not reliable as a find shortcut\r\n\t\tdelete Expr.find[\"ID\"];\r\n\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\r\n\t\t\t\t\telem.getAttributeNode(\"id\");\r\n\t\t\t\treturn node && node.value === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t// Tag\r\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\r\n\t\tfunction( tag, context ) {\r\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\t\t\treturn context.getElementsByTagName( tag );\r\n\r\n\t\t\t// DocumentFragment nodes don't have gEBTN\r\n\t\t\t} else if ( support.qsa ) {\r\n\t\t\t\treturn context.querySelectorAll( tag );\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\tfunction( tag, context ) {\r\n\t\t\tvar elem,\r\n\t\t\t\ttmp = [],\r\n\t\t\t\ti = 0,\r\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\r\n\t\t\t\tresults = context.getElementsByTagName( tag );\r\n\r\n\t\t\t// Filter out possible comments\r\n\t\t\tif ( tag === \"*\" ) {\r\n\t\t\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\ttmp.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn tmp;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t// Class\r\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\r\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\r\n\t\t\treturn context.getElementsByClassName( className );\r\n\t\t}\r\n\t};\r\n\r\n\t/* QSA/matchesSelector\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// QSA and matchesSelector support\r\n\r\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n\trbuggyMatches = [];\r\n\r\n\t// qSa(:focus) reports false when true (Chrome 21)\r\n\t// We allow this because of a bug in IE8/9 that throws an error\r\n\t// whenever `document.activeElement` is accessed on an iframe\r\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\r\n\t// See http://bugs.jquery.com/ticket/13378\r\n\trbuggyQSA = [];\r\n\r\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\r\n\t\t// Build QSA regex\r\n\t\t// Regex strategy adopted from Diego Perini\r\n\t\tassert(function( div ) {\r\n\t\t\t// Select is set to empty string on purpose\r\n\t\t\t// This is to test IE's treatment of not explicitly\r\n\t\t\t// setting a boolean content attribute,\r\n\t\t\t// since its presence should be enough\r\n\t\t\t// http://bugs.jquery.com/ticket/12359\r\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: IE8, Opera 11-12.16\r\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\r\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\r\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\r\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\r\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\r\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\"~=\");\r\n\t\t\t}\r\n\r\n\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\r\n\t\t\t\trbuggyQSA.push(\":checked\");\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Safari 8+, iOS 8+\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\r\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\r\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Support: Windows 8 Native Apps\r\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\r\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Enforce case-sensitivity of name attribute\r\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\r\n\t\t\t}\r\n\r\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\r\n\t\t\tdiv.querySelectorAll(\"*,:x\");\r\n\t\t\trbuggyQSA.push(\",.*:\");\r\n\t\t});\r\n\t}\r\n\r\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\r\n\t\tdocElem.webkitMatchesSelector ||\r\n\t\tdocElem.mozMatchesSelector ||\r\n\t\tdocElem.oMatchesSelector ||\r\n\t\tdocElem.msMatchesSelector) )) ) {\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Check to see if it's possible to do matchesSelector\r\n\t\t\t// on a disconnected node (IE 9)\r\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\r\n\r\n\t\t\t// This should fail with an exception\r\n\t\t\t// Gecko does not error, returns false instead\r\n\t\t\tmatches.call( div, \"[s!='']:x\" );\r\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\r\n\t\t});\r\n\t}\r\n\r\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\r\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\r\n\r\n\t/* Contains\r\n\t---------------------------------------------------------------------- */\r\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\r\n\r\n\t// Element contains another\r\n\t// Purposefully self-exclusive\r\n\t// As in, an element does not contain itself\r\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\r\n\t\tfunction( a, b ) {\r\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n\t\t\t\tbup = b && b.parentNode;\r\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\r\n\t\t\t\tadown.contains ?\r\n\t\t\t\t\tadown.contains( bup ) :\r\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\r\n\t\t\t));\r\n\t\t} :\r\n\t\tfunction( a, b ) {\r\n\t\t\tif ( b ) {\r\n\t\t\t\twhile ( (b = b.parentNode) ) {\r\n\t\t\t\t\tif ( b === a ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t/* Sorting\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Document order sorting\r\n\tsortOrder = hasCompare ?\r\n\tfunction( a, b ) {\r\n\r\n\t\t// Flag for duplicate removal\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Sort on method existence if only one input has compareDocumentPosition\r\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n\t\tif ( compare ) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\r\n\t\t// Calculate position if both inputs belong to the same document\r\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\r\n\t\t\ta.compareDocumentPosition( b ) :\r\n\r\n\t\t\t// Otherwise we know they are disconnected\r\n\t\t\t1;\r\n\r\n\t\t// Disconnected nodes\r\n\t\tif ( compare & 1 ||\r\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\r\n\r\n\t\t\t// Choose the first element that is related to our preferred document\r\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Maintain original order\r\n\t\t\treturn sortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\t\t}\r\n\r\n\t\treturn compare & 4 ? -1 : 1;\r\n\t} :\r\n\tfunction( a, b ) {\r\n\t\t// Exit early if the nodes are identical\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\taup = a.parentNode,\r\n\t\t\tbup = b.parentNode,\r\n\t\t\tap = [ a ],\r\n\t\t\tbp = [ b ];\r\n\r\n\t\t// Parentless nodes are either documents or disconnected\r\n\t\tif ( !aup || !bup ) {\r\n\t\t\treturn a === document ? -1 :\r\n\t\t\t\tb === document ? 1 :\r\n\t\t\t\taup ? -1 :\r\n\t\t\t\tbup ? 1 :\r\n\t\t\t\tsortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\r\n\t\t// If the nodes are siblings, we can do a quick check\r\n\t\t} else if ( aup === bup ) {\r\n\t\t\treturn siblingCheck( a, b );\r\n\t\t}\r\n\r\n\t\t// Otherwise we need full lists of their ancestors for comparison\r\n\t\tcur = a;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tap.unshift( cur );\r\n\t\t}\r\n\t\tcur = b;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tbp.unshift( cur );\r\n\t\t}\r\n\r\n\t\t// Walk down the tree looking for a discrepancy\r\n\t\twhile ( ap[i] === bp[i] ) {\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn i ?\r\n\t\t\t// Do a sibling check if the nodes have a common ancestor\r\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\r\n\r\n\t\t\t// Otherwise nodes in our document sort first\r\n\t\t\tap[i] === preferredDoc ? -1 :\r\n\t\t\tbp[i] === preferredDoc ? 1 :\r\n\t\t\t0;\r\n\t};\r\n\r\n\treturn document;\r\n};\r\n\r\nSizzle.matches = function( expr, elements ) {\r\n\treturn Sizzle( expr, null, null, elements );\r\n};\r\n\r\nSizzle.matchesSelector = function( elem, expr ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\t// Make sure that attribute selectors are quoted\r\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\r\n\r\n\tif ( support.matchesSelector && documentIsHTML &&\r\n\t\t!compilerCache[ expr + \" \" ] &&\r\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\r\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\r\n\r\n\t\ttry {\r\n\t\t\tvar ret = matches.call( elem, expr );\r\n\r\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\r\n\t\t\tif ( ret || support.disconnectedMatch ||\r\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n\t\t\t\t\t// fragment in IE 9\r\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\t}\r\n\r\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\r\n};\r\n\r\nSizzle.contains = function( context, elem ) {\r\n\t// Set document vars if needed\r\n\tif ( ( context.ownerDocument || context ) !== document ) {\r\n\t\tsetDocument( context );\r\n\t}\r\n\treturn contains( context, elem );\r\n};\r\n\r\nSizzle.attr = function( elem, name ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\r\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\r\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\r\n\t\t\tfn( elem, name, !documentIsHTML ) :\r\n\t\t\tundefined;\r\n\r\n\treturn val !== undefined ?\r\n\t\tval :\r\n\t\tsupport.attributes || !documentIsHTML ?\r\n\t\t\telem.getAttribute( name ) :\r\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\r\n\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n};\r\n\r\nSizzle.error = function( msg ) {\r\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\r\n};\r\n\r\n/**\r\n * Document sorting and removing duplicates\r\n * @param {ArrayLike} results\r\n */\r\nSizzle.uniqueSort = function( results ) {\r\n\tvar elem,\r\n\t\tduplicates = [],\r\n\t\tj = 0,\r\n\t\ti = 0;\r\n\r\n\t// Unless we *know* we can detect duplicates, assume their presence\r\n\thasDuplicate = !support.detectDuplicates;\r\n\tsortInput = !support.sortStable && results.slice( 0 );\r\n\tresults.sort( sortOrder );\r\n\r\n\tif ( hasDuplicate ) {\r\n\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\tif ( elem === results[ i ] ) {\r\n\t\t\t\tj = duplicates.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile ( j-- ) {\r\n\t\t\tresults.splice( duplicates[ j ], 1 );\r\n\t\t}\r\n\t}\r\n\r\n\t// Clear input after sorting to release objects\r\n\t// See https://github.com/jquery/sizzle/pull/225\r\n\tsortInput = null;\r\n\r\n\treturn results;\r\n};\r\n\r\n/**\r\n * Utility function for retrieving the text value of an array of DOM nodes\r\n * @param {Array|Element} elem\r\n */\r\ngetText = Sizzle.getText = function( elem ) {\r\n\tvar node,\r\n\t\tret = \"\",\r\n\t\ti = 0,\r\n\t\tnodeType = elem.nodeType;\r\n\r\n\tif ( !nodeType ) {\r\n\t\t// If no nodeType, this is expected to be an array\r\n\t\twhile ( (node = elem[i++]) ) {\r\n\t\t\t// Do not traverse comment nodes\r\n\t\t\tret += getText( node );\r\n\t\t}\r\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n\t\t// Use textContent for elements\r\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\r\n\t\tif ( typeof elem.textContent === \"string\" ) {\r\n\t\t\treturn elem.textContent;\r\n\t\t} else {\r\n\t\t\t// Traverse its children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tret += getText( elem );\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n\t\treturn elem.nodeValue;\r\n\t}\r\n\t// Do not include comment or processing instruction nodes\r\n\r\n\treturn ret;\r\n};\r\n\r\nExpr = Sizzle.selectors = {\r\n\r\n\t// Can be adjusted by the user\r\n\tcacheLength: 50,\r\n\r\n\tcreatePseudo: markFunction,\r\n\r\n\tmatch: matchExpr,\r\n\r\n\tattrHandle: {},\r\n\r\n\tfind: {},\r\n\r\n\trelative: {\r\n\t\t\">\": { dir: \"parentNode\", first: true },\r\n\t\t\" \": { dir: \"parentNode\" },\r\n\t\t\"+\": { dir: \"previousSibling\", first: true },\r\n\t\t\"~\": { dir: \"previousSibling\" }\r\n\t},\r\n\r\n\tpreFilter: {\r\n\t\t\"ATTR\": function( match ) {\r\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\r\n\r\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\r\n\r\n\t\t\tif ( match[2] === \"~=\" ) {\r\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\r\n\t\t\t}\r\n\r\n\t\t\treturn match.slice( 0, 4 );\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( match ) {\r\n\t\t\t/* matches from matchExpr[\"CHILD\"]\r\n\t\t\t\t1 type (only|nth|...)\r\n\t\t\t\t2 what (child|of-type)\r\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\r\n\t\t\t\t5 sign of xn-component\r\n\t\t\t\t6 x of xn-component\r\n\t\t\t\t7 sign of y-component\r\n\t\t\t\t8 y of y-component\r\n\t\t\t*/\r\n\t\t\tmatch[1] = match[1].toLowerCase();\r\n\r\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\r\n\t\t\t\t// nth-* requires argument\r\n\t\t\t\tif ( !match[3] ) {\r\n\t\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n\t\t\t\t// remember that false/true cast respectively to 0/1\r\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\r\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\r\n\r\n\t\t\t// other types prohibit arguments\r\n\t\t\t} else if ( match[3] ) {\r\n\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( match ) {\r\n\t\t\tvar excess,\r\n\t\t\t\tunquoted = !match[6] && match[2];\r\n\r\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// Accept quoted arguments as-is\r\n\t\t\tif ( match[3] ) {\r\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\r\n\r\n\t\t\t// Strip excess characters from unquoted arguments\r\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\r\n\t\t\t\t// Get excess from tokenize (recursively)\r\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n\t\t\t\t// advance to the next closing parenthesis\r\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\r\n\r\n\t\t\t\t// excess is a negative index\r\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\r\n\t\t\t}\r\n\r\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n\t\t\treturn match.slice( 0, 3 );\r\n\t\t}\r\n\t},\r\n\r\n\tfilter: {\r\n\r\n\t\t\"TAG\": function( nodeNameSelector ) {\r\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn nodeNameSelector === \"*\" ?\r\n\t\t\t\tfunction() { return true; } :\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CLASS\": function( className ) {\r\n\t\t\tvar pattern = classCache[ className + \" \" ];\r\n\r\n\t\t\treturn pattern ||\r\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\r\n\t\t\t\tclassCache( className, function( elem ) {\r\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t\"ATTR\": function( name, operator, check ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n\r\n\t\t\t\tif ( result == null ) {\r\n\t\t\t\t\treturn operator === \"!=\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( !operator ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult += \"\";\r\n\r\n\t\t\t\treturn operator === \"=\" ? result === check :\r\n\t\t\t\t\toperator === \"!=\" ? result !== check :\r\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\r\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\r\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\r\n\t\t\t\t\tfalse;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\r\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\r\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\r\n\t\t\t\tofType = what === \"of-type\";\r\n\r\n\t\t\treturn first === 1 && last === 0 ?\r\n\r\n\t\t\t\t// Shortcut for :nth-*(n)\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn !!elem.parentNode;\r\n\t\t\t\t} :\r\n\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\r\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\r\n\t\t\t\t\t\tparent = elem.parentNode,\r\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\r\n\t\t\t\t\t\tuseCache = !xml && !ofType,\r\n\t\t\t\t\t\tdiff = false;\r\n\r\n\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\r\n\t\t\t\t\t\tif ( simple ) {\r\n\t\t\t\t\t\t\twhile ( dir ) {\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\r\n\t\t\t\t\t\t\t\t\tif ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\r\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\r\n\r\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\r\n\t\t\t\t\t\tif ( forward && useCache ) {\r\n\r\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\r\n\r\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\tnode = parent;\r\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\r\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\r\n\r\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\r\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\r\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\r\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\r\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Use previously-cached element index if available\r\n\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// xml :nth-child(...)\r\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\r\n\t\t\t\t\t\t\tif ( diff === false ) {\r\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\r\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\r\n\t\t\t\t\t\t\t\t\t\t++diff ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\r\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\r\n\t\t\t\t\t\tdiff -= last;\r\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( pseudo, argument ) {\r\n\t\t\t// pseudo-class names are case-insensitive\r\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n\t\t\t// Remember that setFilters inherits from pseudos\r\n\t\t\tvar args,\r\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\r\n\r\n\t\t\t// The user may use createPseudo to indicate that\r\n\t\t\t// arguments are needed to create the filter function\r\n\t\t\t// just as Sizzle does\r\n\t\t\tif ( fn[ expando ] ) {\r\n\t\t\t\treturn fn( argument );\r\n\t\t\t}\r\n\r\n\t\t\t// But maintain support for old signatures\r\n\t\t\tif ( fn.length > 1 ) {\r\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\r\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n\t\t\t\t\t\tvar idx,\r\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n\t\t\t\t\t\t\ti = matched.length;\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\r\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}) :\r\n\t\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\t\treturn fn( elem, 0, args );\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t},\r\n\r\n\tpseudos: {\r\n\t\t// Potentially complex pseudos\r\n\t\t\"not\": markFunction(function( selector ) {\r\n\t\t\t// Trim the selector passed to compile\r\n\t\t\t// to avoid treating leading and trailing\r\n\t\t\t// spaces as combinators\r\n\t\t\tvar input = [],\r\n\t\t\t\tresults = [],\r\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\r\n\r\n\t\t\treturn matcher[ expando ] ?\r\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n\t\t\t\t\tvar elem,\r\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n\t\t\t\t\t\ti = seed.length;\r\n\r\n\t\t\t\t\t// Match elements unmatched by `matcher`\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}) :\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tinput[0] = elem;\r\n\t\t\t\t\tmatcher( input, null, xml, results );\r\n\t\t\t\t\t// Don't keep the element (issue #299)\r\n\t\t\t\t\tinput[0] = null;\r\n\t\t\t\t\treturn !results.pop();\r\n\t\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"has\": markFunction(function( selector ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"contains\": markFunction(function( text ) {\r\n\t\t\ttext = text.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// \"Whether an element is represented by a :lang() selector\r\n\t\t// is based solely on the element's language value\r\n\t\t// being equal to the identifier C,\r\n\t\t// or beginning with the identifier C immediately followed by \"-\".\r\n\t\t// The matching of C against the element's language value is performed case-insensitively.\r\n\t\t// The identifier C does not have to be a valid language name.\"\r\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\r\n\t\t\"lang\": markFunction( function( lang ) {\r\n\t\t\t// lang value must be a valid identifier\r\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\r\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\r\n\t\t\t}\r\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar elemLang;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\r\n\t\t\t\t\t\telem.lang :\r\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\r\n\r\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\r\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// Miscellaneous\r\n\t\t\"target\": function( elem ) {\r\n\t\t\tvar hash = window.location && window.location.hash;\r\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\r\n\t\t},\r\n\r\n\t\t\"root\": function( elem ) {\r\n\t\t\treturn elem === docElem;\r\n\t\t},\r\n\r\n\t\t\"focus\": function( elem ) {\r\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n\t\t},\r\n\r\n\t\t// Boolean properties\r\n\t\t\"enabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === false;\r\n\t\t},\r\n\r\n\t\t\"disabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === true;\r\n\t\t},\r\n\r\n\t\t\"checked\": function( elem ) {\r\n\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\r\n\t\t},\r\n\r\n\t\t\"selected\": function( elem ) {\r\n\t\t\t// Accessing this property makes selected-by-default\r\n\t\t\t// options in Safari work properly\r\n\t\t\tif ( elem.parentNode ) {\r\n\t\t\t\telem.parentNode.selectedIndex;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.selected === true;\r\n\t\t},\r\n\r\n\t\t// Contents\r\n\t\t\"empty\": function( elem ) {\r\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\r\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\r\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tif ( elem.nodeType < 6 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t\"parent\": function( elem ) {\r\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\r\n\t\t},\r\n\r\n\t\t// Element/input types\r\n\t\t\"header\": function( elem ) {\r\n\t\t\treturn rheader.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"input\": function( elem ) {\r\n\t\t\treturn rinputs.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"button\": function( elem ) {\r\n\t\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\r\n\t\t},\r\n\r\n\t\t\"text\": function( elem ) {\r\n\t\t\tvar attr;\r\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\r\n\t\t\t\telem.type === \"text\" &&\r\n\r\n\t\t\t\t// Support: IE<8\r\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\r\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\r\n\t\t},\r\n\r\n\t\t// Position-in-collection\r\n\t\t\"first\": createPositionalPseudo(function() {\r\n\t\t\treturn [ 0 ];\r\n\t\t}),\r\n\r\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\treturn [ length - 1 ];\r\n\t\t}),\r\n\r\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n\t\t}),\r\n\r\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 1;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; --i >= 0; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; ++i < length; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t})\r\n\t}\r\n};\r\n\r\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\r\n\r\n// Add button/input type pseudos\r\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\r\n\tExpr.pseudos[ i ] = createInputPseudo( i );\r\n}\r\nfor ( i in { submit: true, reset: true } ) {\r\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\r\n}\r\n\r\n// Easy API for creating new setFilters\r\nfunction setFilters() {}\r\nsetFilters.prototype = Expr.filters = Expr.pseudos;\r\nExpr.setFilters = new setFilters();\r\n\r\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\r\n\tvar matched, match, tokens, type,\r\n\t\tsoFar, groups, preFilters,\r\n\t\tcached = tokenCache[ selector + \" \" ];\r\n\r\n\tif ( cached ) {\r\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n\t}\r\n\r\n\tsoFar = selector;\r\n\tgroups = [];\r\n\tpreFilters = Expr.preFilter;\r\n\r\n\twhile ( soFar ) {\r\n\r\n\t\t// Comma and first run\r\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n\t\t\tif ( match ) {\r\n\t\t\t\t// Don't consume trailing commas as valid\r\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n\t\t\t}\r\n\t\t\tgroups.push( (tokens = []) );\r\n\t\t}\r\n\r\n\t\tmatched = false;\r\n\r\n\t\t// Combinators\r\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n\t\t\tmatched = match.shift();\r\n\t\t\ttokens.push({\r\n\t\t\t\tvalue: matched,\r\n\t\t\t\t// Cast descendant combinators to space\r\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\r\n\t\t\t});\r\n\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t}\r\n\r\n\t\t// Filters\r\n\t\tfor ( type in Expr.filter ) {\r\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n\t\t\t\tmatched = match.shift();\r\n\t\t\t\ttokens.push({\r\n\t\t\t\t\tvalue: matched,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tmatches: match\r\n\t\t\t\t});\r\n\t\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !matched ) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the length of the invalid excess\r\n\t// if we're just parsing\r\n\t// Otherwise, throw an error or return tokens\r\n\treturn parseOnly ?\r\n\t\tsoFar.length :\r\n\t\tsoFar ?\r\n\t\t\tSizzle.error( selector ) :\r\n\t\t\t// Cache the tokens\r\n\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n};\r\n\r\nfunction toSelector( tokens ) {\r\n\tvar i = 0,\r\n\t\tlen = tokens.length,\r\n\t\tselector = \"\";\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tselector += tokens[i].value;\r\n\t}\r\n\treturn selector;\r\n}\r\n\r\nfunction addCombinator( matcher, combinator, base ) {\r\n\tvar dir = combinator.dir,\r\n\t\tcheckNonElements = base && dir === \"parentNode\",\r\n\t\tdoneName = done++;\r\n\r\n\treturn combinator.first ?\r\n\t\t// Check against closest ancestor/preceding element\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\treturn matcher( elem, context, xml );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\t// Check against all ancestor/preceding elements\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar oldCache, uniqueCache, outerCache,\r\n\t\t\t\tnewCache = [ dirruns, doneName ];\r\n\r\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\r\n\t\t\tif ( xml ) {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\r\n\r\n\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\r\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\r\n\r\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\r\n\r\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\r\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n}\r\n\r\nfunction elementMatcher( matchers ) {\r\n\treturn matchers.length > 1 ?\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar i = matchers.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} :\r\n\t\tmatchers[0];\r\n}\r\n\r\nfunction multipleContexts( selector, contexts, results ) {\r\n\tvar i = 0,\r\n\t\tlen = contexts.length;\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tSizzle( selector, contexts[i], results );\r\n\t}\r\n\treturn results;\r\n}\r\n\r\nfunction condense( unmatched, map, filter, context, xml ) {\r\n\tvar elem,\r\n\t\tnewUnmatched = [],\r\n\t\ti = 0,\r\n\t\tlen = unmatched.length,\r\n\t\tmapped = map != null;\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n\t\t\t\tnewUnmatched.push( elem );\r\n\t\t\t\tif ( mapped ) {\r\n\t\t\t\t\tmap.push( i );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn newUnmatched;\r\n}\r\n\r\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n\tif ( postFilter && !postFilter[ expando ] ) {\r\n\t\tpostFilter = setMatcher( postFilter );\r\n\t}\r\n\tif ( postFinder && !postFinder[ expando ] ) {\r\n\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n\t}\r\n\treturn markFunction(function( seed, results, context, xml ) {\r\n\t\tvar temp, i, elem,\r\n\t\t\tpreMap = [],\r\n\t\t\tpostMap = [],\r\n\t\t\tpreexisting = results.length,\r\n\r\n\t\t\t// Get initial elements from seed or context\r\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\r\n\r\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n\t\t\t\telems,\r\n\r\n\t\t\tmatcherOut = matcher ?\r\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n\r\n\t\t\t\t\t// ...intermediate processing is necessary\r\n\t\t\t\t\t[] :\r\n\r\n\t\t\t\t\t// ...otherwise use results directly\r\n\t\t\t\t\tresults :\r\n\t\t\t\tmatcherIn;\r\n\r\n\t\t// Find primary matches\r\n\t\tif ( matcher ) {\r\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n\t\t}\r\n\r\n\t\t// Apply postFilter\r\n\t\tif ( postFilter ) {\r\n\t\t\ttemp = condense( matcherOut, postMap );\r\n\t\t\tpostFilter( temp, [], context, xml );\r\n\r\n\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n\t\t\ti = temp.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( (elem = temp[i]) ) {\r\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( seed ) {\r\n\t\t\tif ( postFinder || preFilter ) {\r\n\t\t\t\tif ( postFinder ) {\r\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n\t\t\t\t\ttemp = [];\r\n\t\t\t\t\ti = matcherOut.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n\t\t\t\ti = matcherOut.length;\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\r\n\r\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Add elements to results, through postFinder if defined\r\n\t\t} else {\r\n\t\t\tmatcherOut = condense(\r\n\t\t\t\tmatcherOut === results ?\r\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n\t\t\t\t\tmatcherOut\r\n\t\t\t);\r\n\t\t\tif ( postFinder ) {\r\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n\t\t\t} else {\r\n\t\t\t\tpush.apply( results, matcherOut );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction matcherFromTokens( tokens ) {\r\n\tvar checkContext, matcher, j,\r\n\t\tlen = tokens.length,\r\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\r\n\t\ti = leadingRelative ? 1 : 0,\r\n\r\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n\t\tmatchContext = addCombinator( function( elem ) {\r\n\t\t\treturn elem === checkContext;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n\t\t\treturn indexOf( checkContext, elem ) > -1;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchers = [ function( elem, context, xml ) {\r\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n\t\t\t\t(checkContext = context).nodeType ?\r\n\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n\t\t\t// Avoid hanging onto element (issue #299)\r\n\t\t\tcheckContext = null;\r\n\t\t\treturn ret;\r\n\t\t} ];\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\r\n\t\t} else {\r\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n\r\n\t\t\t// Return special upon seeing a positional matcher\r\n\t\t\tif ( matcher[ expando ] ) {\r\n\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n\t\t\t\tj = ++i;\r\n\t\t\t\tfor ( ; j < len; j++ ) {\r\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn setMatcher(\r\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n\t\t\t\t\ti > 1 && toSelector(\r\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\r\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\r\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\r\n\t\t\t\t\tmatcher,\r\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n\t\t\t\t\tj < len && toSelector( tokens )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tmatchers.push( matcher );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementMatcher( matchers );\r\n}\r\n\r\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n\tvar bySet = setMatchers.length > 0,\r\n\t\tbyElement = elementMatchers.length > 0,\r\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\r\n\t\t\tvar elem, j, matcher,\r\n\t\t\t\tmatchedCount = 0,\r\n\t\t\t\ti = \"0\",\r\n\t\t\t\tunmatched = seed && [],\r\n\t\t\t\tsetMatched = [],\r\n\t\t\t\tcontextBackup = outermostContext,\r\n\t\t\t\t// We must always have either seed elements or outermost context\r\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\r\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\r\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\r\n\t\t\t\tlen = elems.length;\r\n\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\toutermostContext = context === document || context || outermost;\r\n\t\t\t}\r\n\r\n\t\t\t// Add elements passing elementMatchers directly to results\r\n\t\t\t// Support: IE<9, Safari\r\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\r\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\r\n\t\t\t\tif ( byElement && elem ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\r\n\t\t\t\t\t\tsetDocument( elem );\r\n\t\t\t\t\t\txml = !documentIsHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( outermost ) {\r\n\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Track unmatched elements for set filters\r\n\t\t\t\tif ( bySet ) {\r\n\t\t\t\t\t// They will have gone through all possible matchers\r\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n\t\t\t\t\t\tmatchedCount--;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n\t\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t\tunmatched.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\r\n\t\t\t// makes the latter nonnegative.\r\n\t\t\tmatchedCount += i;\r\n\r\n\t\t\t// Apply set filters to unmatched elements\r\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\r\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\r\n\t\t\t// no element matchers and no seed.\r\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\r\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\r\n\t\t\t// numerically zero.\r\n\t\t\tif ( bySet && i !== matchedCount ) {\r\n\t\t\t\tj = 0;\r\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\r\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n\t\t\t\t\tif ( matchedCount > 0 ) {\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n\t\t\t\t\tsetMatched = condense( setMatched );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add matches to results\r\n\t\t\t\tpush.apply( results, setMatched );\r\n\r\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n\r\n\t\t\t\t\tSizzle.uniqueSort( results );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override manipulation of globals by nested matchers\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\toutermostContext = contextBackup;\r\n\t\t\t}\r\n\r\n\t\t\treturn unmatched;\r\n\t\t};\r\n\r\n\treturn bySet ?\r\n\t\tmarkFunction( superMatcher ) :\r\n\t\tsuperMatcher;\r\n}\r\n\r\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\r\n\tvar i,\r\n\t\tsetMatchers = [],\r\n\t\telementMatchers = [],\r\n\t\tcached = compilerCache[ selector + \" \" ];\r\n\r\n\tif ( !cached ) {\r\n\t\t// Generate a function of recursive functions that can be used to check each element\r\n\t\tif ( !match ) {\r\n\t\t\tmatch = tokenize( selector );\r\n\t\t}\r\n\t\ti = match.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tcached = matcherFromTokens( match[i] );\r\n\t\t\tif ( cached[ expando ] ) {\r\n\t\t\t\tsetMatchers.push( cached );\r\n\t\t\t} else {\r\n\t\t\t\telementMatchers.push( cached );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cache the compiled function\r\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n\r\n\t\t// Save selector and tokenization\r\n\t\tcached.selector = selector;\r\n\t}\r\n\treturn cached;\r\n};\r\n\r\n/**\r\n * A low-level selection function that works with Sizzle's compiled\r\n * selector functions\r\n * @param {String|Function} selector A selector or a pre-compiled\r\n * selector function built with Sizzle.compile\r\n * @param {Element} context\r\n * @param {Array} [results]\r\n * @param {Array} [seed] A set of elements to match against\r\n */\r\nselect = Sizzle.select = function( selector, context, results, seed ) {\r\n\tvar i, tokens, token, type, find,\r\n\t\tcompiled = typeof selector === \"function\" && selector,\r\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\r\n\r\n\tresults = results || [];\r\n\r\n\t// Try to minimize operations if there is only one selector in the list and no seed\r\n\t// (the latter of which guarantees us context)\r\n\tif ( match.length === 1 ) {\r\n\r\n\t\t// Reduce context if the leading compound selector is an ID\r\n\t\ttokens = match[0] = match[0].slice( 0 );\r\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\r\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\r\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\r\n\r\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\r\n\t\t\tif ( !context ) {\r\n\t\t\t\treturn results;\r\n\r\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\r\n\t\t\t} else if ( compiled ) {\r\n\t\t\t\tcontext = context.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tselector = selector.slice( tokens.shift().value.length );\r\n\t\t}\r\n\r\n\t\t// Fetch a seed set for right-to-left matching\r\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\ttoken = tokens[i];\r\n\r\n\t\t\t// Abort if we hit a combinator\r\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n\t\t\t\t// Search, expanding context for leading sibling combinators\r\n\t\t\t\tif ( (seed = find(\r\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\r\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\r\n\t\t\t\t)) ) {\r\n\r\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n\t\t\t\t\ttokens.splice( i, 1 );\r\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\r\n\t\t\t\t\tif ( !selector ) {\r\n\t\t\t\t\t\tpush.apply( results, seed );\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Compile and execute a filtering function if one is not provided\r\n\t// Provide `match` to avoid retokenization if we modified the selector above\r\n\t( compiled || compile( selector, match ) )(\r\n\t\tseed,\r\n\t\tcontext,\r\n\t\t!documentIsHTML,\r\n\t\tresults,\r\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\r\n\t);\r\n\treturn results;\r\n};\r\n\r\n// One-time assignments\r\n\r\n// Sort stability\r\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\r\n\r\n// Support: Chrome 14-35+\r\n// Always assume duplicates if they aren't passed to the comparison function\r\nsupport.detectDuplicates = !!hasDuplicate;\r\n\r\n// Initialize against the default document\r\nsetDocument();\r\n\r\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\r\n// Detached nodes confoundingly follow *each other*\r\nsupport.sortDetached = assert(function( div1 ) {\r\n\t// Should return 1, but returns 4 (following)\r\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\r\n});\r\n\r\n// Support: IE<8\r\n// Prevent attribute/property \"interpolation\"\r\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\r\nif ( !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\r\n}) ) {\r\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use defaultValue in place of getAttribute(\"value\")\r\nif ( !support.attributes || !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\r\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\r\n}) ) {\r\n\taddHandle( \"value\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\r\n\t\t\treturn elem.defaultValue;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use getAttributeNode to fetch booleans when getAttribute lies\r\nif ( !assert(function( div ) {\r\n\treturn div.getAttribute(\"disabled\") == null;\r\n}) ) {\r\n\taddHandle( booleans, function( elem, name, isXML ) {\r\n\t\tvar val;\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\r\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\r\n\t\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nreturn Sizzle;\r\n\r\n})( window );\r\n\r\n\r\n\r\njQuery.find = Sizzle;\r\njQuery.expr = Sizzle.selectors;\r\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\r\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\r\njQuery.text = Sizzle.getText;\r\njQuery.isXMLDoc = Sizzle.isXML;\r\njQuery.contains = Sizzle.contains;\r\n\r\n\r\n\r\nvar dir = function( elem, dir, until ) {\r\n\tvar matched = [],\r\n\t\ttruncate = until !== undefined;\r\n\r\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\r\n\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmatched.push( elem );\r\n\t\t}\r\n\t}\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar siblings = function( n, elem ) {\r\n\tvar matched = [];\r\n\r\n\tfor ( ; n; n = n.nextSibling ) {\r\n\t\tif ( n.nodeType === 1 && n !== elem ) {\r\n\t\t\tmatched.push( n );\r\n\t\t}\r\n\t}\r\n\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar rneedsContext = jQuery.expr.match.needsContext;\r\n\r\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\r\n\r\n\r\n\r\nvar risSimple = /^.[^:#\\[\\.,]*$/;\r\n\r\n// Implement the identical functionality for filter and not\r\nfunction winnow( elements, qualifier, not ) {\r\n\tif ( jQuery.isFunction( qualifier ) ) {\r\n\t\treturn jQuery.grep( elements, function( elem, i ) {\r\n\t\t\t/* jshint -W018 */\r\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( qualifier.nodeType ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( elem === qualifier ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( typeof qualifier === \"string\" ) {\r\n\t\tif ( risSimple.test( qualifier ) ) {\r\n\t\t\treturn jQuery.filter( qualifier, elements, not );\r\n\t\t}\r\n\r\n\t\tqualifier = jQuery.filter( qualifier, elements );\r\n\t}\r\n\r\n\treturn jQuery.grep( elements, function( elem ) {\r\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\r\n\t} );\r\n}\r\n\r\njQuery.filter = function( expr, elems, not ) {\r\n\tvar elem = elems[ 0 ];\r\n\r\n\tif ( not ) {\r\n\t\texpr = \":not(\" + expr + \")\";\r\n\t}\r\n\r\n\treturn elems.length === 1 && elem.nodeType === 1 ?\r\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\r\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\r\n\t\t\treturn elem.nodeType === 1;\r\n\t\t} ) );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfind: function( selector ) {\r\n\t\tvar i,\r\n\t\t\tret = [],\r\n\t\t\tself = this,\r\n\t\t\tlen = self.length;\r\n\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\tjQuery.find( selector, self[ i ], ret );\r\n\t\t}\r\n\r\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\r\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\r\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\r\n\t\treturn ret;\r\n\t},\r\n\tfilter: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\r\n\t},\r\n\tnot: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\r\n\t},\r\n\tis: function( selector ) {\r\n\t\treturn !!winnow(\r\n\t\t\tthis,\r\n\r\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\r\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\r\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\r\n\t\t\t\tjQuery( selector ) :\r\n\t\t\t\tselector || [],\r\n\t\t\tfalse\r\n\t\t).length;\r\n\t}\r\n} );\r\n\r\n\r\n// Initialize a jQuery object\r\n\r\n\r\n// A central reference to the root jQuery(document)\r\nvar rootjQuery,\r\n\r\n\t// A simple way to check for HTML strings\r\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\r\n\t// Strict HTML recognition (#11290: must start with <)\r\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\r\n\r\n\tinit = jQuery.fn.init = function( selector, context, root ) {\r\n\t\tvar match, elem;\r\n\r\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\r\n\t\tif ( !selector ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// init accepts an alternate rootjQuery\r\n\t\t// so migrate can support jQuery.sub (gh-2101)\r\n\t\troot = root || rootjQuery;\r\n\r\n\t\t// Handle HTML strings\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\r\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\r\n\t\t\t\tselector.length >= 3 ) {\r\n\r\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\r\n\t\t\t\tmatch = [ null, selector, null ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\tmatch = rquickExpr.exec( selector );\r\n\t\t\t}\r\n\r\n\t\t\t// Match html or make sure no context is specified for #id\r\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\r\n\r\n\t\t\t\t// HANDLE: $(html) -> $(array)\r\n\t\t\t\tif ( match[ 1 ] ) {\r\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\r\n\r\n\t\t\t\t\t// scripts is true for back-compat\r\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\r\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\r\n\t\t\t\t\t\tmatch[ 1 ],\r\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t) );\r\n\r\n\t\t\t\t\t// HANDLE: $(html, props)\r\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\r\n\t\t\t\t\t\tfor ( match in context ) {\r\n\r\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\r\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\r\n\r\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t// HANDLE: $(#id)\r\n\t\t\t\t} else {\r\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\r\n\r\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\r\n\t\t\t\t\t// nodes that are no longer in the document #6963\r\n\t\t\t\t\tif ( elem && elem.parentNode ) {\r\n\r\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\r\n\t\t\t\t\t\t// by name instead of ID\r\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\r\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\r\n\t\t\t\t\t\tthis.length = 1;\r\n\t\t\t\t\t\tthis[ 0 ] = elem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.context = document;\r\n\t\t\t\t\tthis.selector = selector;\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\r\n\t\t\t// HANDLE: $(expr, $(...))\r\n\t\t\t} else if ( !context || context.jquery ) {\r\n\t\t\t\treturn ( context || root ).find( selector );\r\n\r\n\t\t\t// HANDLE: $(expr, context)\r\n\t\t\t// (which is just equivalent to: $(context).find(expr)\r\n\t\t\t} else {\r\n\t\t\t\treturn this.constructor( context ).find( selector );\r\n\t\t\t}\r\n\r\n\t\t// HANDLE: $(DOMElement)\r\n\t\t} else if ( selector.nodeType ) {\r\n\t\t\tthis.context = this[ 0 ] = selector;\r\n\t\t\tthis.length = 1;\r\n\t\t\treturn this;\r\n\r\n\t\t// HANDLE: $(function)\r\n\t\t// Shortcut for document ready\r\n\t\t} else if ( jQuery.isFunction( selector ) ) {\r\n\t\t\treturn typeof root.ready !== \"undefined\" ?\r\n\t\t\t\troot.ready( selector ) :\r\n\r\n\t\t\t\t// Execute immediately if ready is not present\r\n\t\t\t\tselector( jQuery );\r\n\t\t}\r\n\r\n\t\tif ( selector.selector !== undefined ) {\r\n\t\t\tthis.selector = selector.selector;\r\n\t\t\tthis.context = selector.context;\r\n\t\t}\r\n\r\n\t\treturn jQuery.makeArray( selector, this );\r\n\t};\r\n\r\n// Give the init function the jQuery prototype for later instantiation\r\ninit.prototype = jQuery.fn;\r\n\r\n// Initialize central reference\r\nrootjQuery = jQuery( document );\r\n\r\n\r\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\r\n\r\n\t// methods guaranteed to produce a unique set when starting from a unique set\r\n\tguaranteedUnique = {\r\n\t\tchildren: true,\r\n\t\tcontents: true,\r\n\t\tnext: true,\r\n\t\tprev: true\r\n\t};\r\n\r\njQuery.fn.extend( {\r\n\thas: function( target ) {\r\n\t\tvar i,\r\n\t\t\ttargets = jQuery( target, this ),\r\n\t\t\tlen = targets.length;\r\n\r\n\t\treturn this.filter( function() {\r\n\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tclosest: function( selectors, context ) {\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\tl = this.length,\r\n\t\t\tmatched = [],\r\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\r\n\t\t\t\tjQuery( selectors, context || this.context ) :\r\n\t\t\t\t0;\r\n\r\n\t\tfor ( ; i < l; i++ ) {\r\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\r\n\r\n\t\t\t\t// Always skip document fragments\r\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\r\n\t\t\t\t\tpos.index( cur ) > -1 :\r\n\r\n\t\t\t\t\t// Don't pass non-elements to Sizzle\r\n\t\t\t\t\tcur.nodeType === 1 &&\r\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\r\n\r\n\t\t\t\t\tmatched.push( cur );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\r\n\t},\r\n\r\n\t// Determine the position of an element within\r\n\t// the matched set of elements\r\n\tindex: function( elem ) {\r\n\r\n\t\t// No argument, return index in parent\r\n\t\tif ( !elem ) {\r\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\r\n\t\t}\r\n\r\n\t\t// index in selector\r\n\t\tif ( typeof elem === \"string\" ) {\r\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\r\n\t\t}\r\n\r\n\t\t// Locate the position of the desired element\r\n\t\treturn jQuery.inArray(\r\n\r\n\t\t\t// If it receives a jQuery object, the first element is used\r\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\r\n\t},\r\n\r\n\tadd: function( selector, context ) {\r\n\t\treturn this.pushStack(\r\n\t\t\tjQuery.uniqueSort(\r\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\r\n\t\t\t)\r\n\t\t);\r\n\t},\r\n\r\n\taddBack: function( selector ) {\r\n\t\treturn this.add( selector == null ?\r\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\r\n\t\t);\r\n\t}\r\n} );\r\n\r\nfunction sibling( cur, dir ) {\r\n\tdo {\r\n\t\tcur = cur[ dir ];\r\n\t} while ( cur && cur.nodeType !== 1 );\r\n\r\n\treturn cur;\r\n}\r\n\r\njQuery.each( {\r\n\tparent: function( elem ) {\r\n\t\tvar parent = elem.parentNode;\r\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\r\n\t},\r\n\tparents: function( elem ) {\r\n\t\treturn dir( elem, \"parentNode\" );\r\n\t},\r\n\tparentsUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"parentNode\", until );\r\n\t},\r\n\tnext: function( elem ) {\r\n\t\treturn sibling( elem, \"nextSibling\" );\r\n\t},\r\n\tprev: function( elem ) {\r\n\t\treturn sibling( elem, \"previousSibling\" );\r\n\t},\r\n\tnextAll: function( elem ) {\r\n\t\treturn dir( elem, \"nextSibling\" );\r\n\t},\r\n\tprevAll: function( elem ) {\r\n\t\treturn dir( elem, \"previousSibling\" );\r\n\t},\r\n\tnextUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"nextSibling\", until );\r\n\t},\r\n\tprevUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"previousSibling\", until );\r\n\t},\r\n\tsiblings: function( elem ) {\r\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\r\n\t},\r\n\tchildren: function( elem ) {\r\n\t\treturn siblings( elem.firstChild );\r\n\t},\r\n\tcontents: function( elem ) {\r\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\r\n\t\t\telem.contentDocument || elem.contentWindow.document :\r\n\t\t\tjQuery.merge( [], elem.childNodes );\r\n\t}\r\n}, function( name, fn ) {\r\n\tjQuery.fn[ name ] = function( until, selector ) {\r\n\t\tvar ret = jQuery.map( this, fn, until );\r\n\r\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\r\n\t\t\tselector = until;\r\n\t\t}\r\n\r\n\t\tif ( selector && typeof selector === \"string\" ) {\r\n\t\t\tret = jQuery.filter( selector, ret );\r\n\t\t}\r\n\r\n\t\tif ( this.length > 1 ) {\r\n\r\n\t\t\t// Remove duplicates\r\n\t\t\tif ( !guaranteedUnique[ name ] ) {\r\n\t\t\t\tret = jQuery.uniqueSort( ret );\r\n\t\t\t}\r\n\r\n\t\t\t// Reverse order for parents* and prev-derivatives\r\n\t\t\tif ( rparentsprev.test( name ) ) {\r\n\t\t\t\tret = ret.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\nvar rnotwhite = ( /\\S+/g );\r\n\r\n\r\n\r\n// Convert String-formatted options into Object-formatted ones\r\nfunction createOptions( options ) {\r\n\tvar object = {};\r\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\r\n\t\tobject[ flag ] = true;\r\n\t} );\r\n\treturn object;\r\n}\r\n\r\n/*\r\n * Create a callback list using the following parameters:\r\n *\r\n *\toptions: an optional list of space-separated options that will change how\r\n *\t\t\tthe callback list behaves or a more traditional option object\r\n *\r\n * By default a callback list will act like an event callback list and can be\r\n * \"fired\" multiple times.\r\n *\r\n * Possible options:\r\n *\r\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\r\n *\r\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\r\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\r\n *\t\t\t\t\tvalues (like a Deferred)\r\n *\r\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\r\n *\r\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\r\n *\r\n */\r\njQuery.Callbacks = function( options ) {\r\n\r\n\t// Convert options from String-formatted to Object-formatted if needed\r\n\t// (we check in cache first)\r\n\toptions = typeof options === \"string\" ?\r\n\t\tcreateOptions( options ) :\r\n\t\tjQuery.extend( {}, options );\r\n\r\n\tvar // Flag to know if list is currently firing\r\n\t\tfiring,\r\n\r\n\t\t// Last fire value for non-forgettable lists\r\n\t\tmemory,\r\n\r\n\t\t// Flag to know if list was already fired\r\n\t\tfired,\r\n\r\n\t\t// Flag to prevent firing\r\n\t\tlocked,\r\n\r\n\t\t// Actual callback list\r\n\t\tlist = [],\r\n\r\n\t\t// Queue of execution data for repeatable lists\r\n\t\tqueue = [],\r\n\r\n\t\t// Index of currently firing callback (modified by add/remove as needed)\r\n\t\tfiringIndex = -1,\r\n\r\n\t\t// Fire callbacks\r\n\t\tfire = function() {\r\n\r\n\t\t\t// Enforce single-firing\r\n\t\t\tlocked = options.once;\r\n\r\n\t\t\t// Execute callbacks for all pending executions,\r\n\t\t\t// respecting firingIndex overrides and runtime changes\r\n\t\t\tfired = firing = true;\r\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\r\n\t\t\t\tmemory = queue.shift();\r\n\t\t\t\twhile ( ++firingIndex < list.length ) {\r\n\r\n\t\t\t\t\t// Run callback and check for early termination\r\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\r\n\t\t\t\t\t\toptions.stopOnFalse ) {\r\n\r\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\r\n\t\t\t\t\t\tfiringIndex = list.length;\r\n\t\t\t\t\t\tmemory = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Forget the data if we're done with it\r\n\t\t\tif ( !options.memory ) {\r\n\t\t\t\tmemory = false;\r\n\t\t\t}\r\n\r\n\t\t\tfiring = false;\r\n\r\n\t\t\t// Clean up if we're done firing for good\r\n\t\t\tif ( locked ) {\r\n\r\n\t\t\t\t// Keep an empty list if we have data for future add calls\r\n\t\t\t\tif ( memory ) {\r\n\t\t\t\t\tlist = [];\r\n\r\n\t\t\t\t// Otherwise, this object is spent\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Actual Callbacks object\r\n\t\tself = {\r\n\r\n\t\t\t// Add a callback or a collection of callbacks to the list\r\n\t\t\tadd: function() {\r\n\t\t\t\tif ( list ) {\r\n\r\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfiringIndex = list.length - 1;\r\n\t\t\t\t\t\tqueue.push( memory );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t( function add( args ) {\r\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\r\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\r\n\t\t\t\t\t\t\t\t\tlist.push( arg );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Inspect recursively\r\n\t\t\t\t\t\t\t\tadd( arg );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} )( arguments );\r\n\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove a callback from the list\r\n\t\t\tremove: function() {\r\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\r\n\t\t\t\t\tvar index;\r\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\r\n\t\t\t\t\t\tlist.splice( index, 1 );\r\n\r\n\t\t\t\t\t\t// Handle firing indexes\r\n\t\t\t\t\t\tif ( index <= firingIndex ) {\r\n\t\t\t\t\t\t\tfiringIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Check if a given callback is in the list.\r\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\r\n\t\t\thas: function( fn ) {\r\n\t\t\t\treturn fn ?\r\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\r\n\t\t\t\t\tlist.length > 0;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove all callbacks from the list\r\n\t\t\tempty: function() {\r\n\t\t\t\tif ( list ) {\r\n\t\t\t\t\tlist = [];\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire and .add\r\n\t\t\t// Abort any current/pending executions\r\n\t\t\t// Clear all callbacks and values\r\n\t\t\tdisable: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tlist = memory = \"\";\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tdisabled: function() {\r\n\t\t\t\treturn !list;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire\r\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\r\n\t\t\t// Abort any pending executions\r\n\t\t\tlock: function() {\r\n\t\t\t\tlocked = true;\r\n\t\t\t\tif ( !memory ) {\r\n\t\t\t\t\tself.disable();\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tlocked: function() {\r\n\t\t\t\treturn !!locked;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all callbacks with the given context and arguments\r\n\t\t\tfireWith: function( context, args ) {\r\n\t\t\t\tif ( !locked ) {\r\n\t\t\t\t\targs = args || [];\r\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\r\n\t\t\t\t\tqueue.push( args );\r\n\t\t\t\t\tif ( !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all the callbacks with the given arguments\r\n\t\t\tfire: function() {\r\n\t\t\t\tself.fireWith( this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// To know if the callbacks have already been called at least once\r\n\t\t\tfired: function() {\r\n\t\t\t\treturn !!fired;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\treturn self;\r\n};\r\n\r\n\r\njQuery.extend( {\r\n\r\n\tDeferred: function( func ) {\r\n\t\tvar tuples = [\r\n\r\n\t\t\t\t// action, add listener, listener list, final state\r\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\r\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\r\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\r\n\t\t\t],\r\n\t\t\tstate = \"pending\",\r\n\t\t\tpromise = {\r\n\t\t\t\tstate: function() {\r\n\t\t\t\t\treturn state;\r\n\t\t\t\t},\r\n\t\t\t\talways: function() {\r\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\t\t\t\tvar fns = arguments;\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r\n\r\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\r\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\r\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\r\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t\tfns = null;\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Get a promise for this deferred\r\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\r\n\t\t\t\tpromise: function( obj ) {\r\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdeferred = {};\r\n\r\n\t\t// Keep pipe for back-compat\r\n\t\tpromise.pipe = promise.then;\r\n\r\n\t\t// Add list-specific methods\r\n\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\tvar list = tuple[ 2 ],\r\n\t\t\t\tstateString = tuple[ 3 ];\r\n\r\n\t\t\t// promise[ done | fail | progress ] = list.add\r\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\r\n\r\n\t\t\t// Handle state\r\n\t\t\tif ( stateString ) {\r\n\t\t\t\tlist.add( function() {\r\n\r\n\t\t\t\t\t// state = [ resolved | rejected ]\r\n\t\t\t\t\tstate = stateString;\r\n\r\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\r\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\r\n\t\t\t}\r\n\r\n\t\t\t// deferred[ resolve | reject | notify ]\r\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\r\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\r\n\t\t} );\r\n\r\n\t\t// Make the deferred a promise\r\n\t\tpromise.promise( deferred );\r\n\r\n\t\t// Call given func if any\r\n\t\tif ( func ) {\r\n\t\t\tfunc.call( deferred, deferred );\r\n\t\t}\r\n\r\n\t\t// All done!\r\n\t\treturn deferred;\r\n\t},\r\n\r\n\t// Deferred helper\r\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\r\n\t\tvar i = 0,\r\n\t\t\tresolveValues = slice.call( arguments ),\r\n\t\t\tlength = resolveValues.length,\r\n\r\n\t\t\t// the count of uncompleted subordinates\r\n\t\t\tremaining = length !== 1 ||\r\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\r\n\r\n\t\t\t// the master Deferred.\r\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\r\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\r\n\r\n\t\t\t// Update function for both resolve and progress values\r\n\t\t\tupdateFunc = function( i, contexts, values ) {\r\n\t\t\t\treturn function( value ) {\r\n\t\t\t\t\tcontexts[ i ] = this;\r\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\r\n\t\t\t\t\tif ( values === progressValues ) {\r\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\r\n\r\n\t\t\t\t\t} else if ( !( --remaining ) ) {\r\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tprogressValues, progressContexts, resolveContexts;\r\n\r\n\t\t// add listeners to Deferred subordinates; treat others as resolved\r\n\t\tif ( length > 1 ) {\r\n\t\t\tprogressValues = new Array( length );\r\n\t\t\tprogressContexts = new Array( length );\r\n\t\t\tresolveContexts = new Array( length );\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\r\n\t\t\t\t\tresolveValues[ i ].promise()\r\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\r\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\r\n\t\t\t\t\t\t.fail( deferred.reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t--remaining;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if we're not waiting on anything, resolve the master\r\n\t\tif ( !remaining ) {\r\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\r\n\t\t}\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n} );\r\n\r\n\r\n// The deferred used on DOM ready\r\nvar readyList;\r\n\r\njQuery.fn.ready = function( fn ) {\r\n\r\n\t// Add the callback\r\n\tjQuery.ready.promise().done( fn );\r\n\r\n\treturn this;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Is the DOM ready to be used? Set to true once it occurs.\r\n\tisReady: false,\r\n\r\n\t// A counter to track how many items to wait for before\r\n\t// the ready event fires. See #6781\r\n\treadyWait: 1,\r\n\r\n\t// Hold (or release) the ready event\r\n\tholdReady: function( hold ) {\r\n\t\tif ( hold ) {\r\n\t\t\tjQuery.readyWait++;\r\n\t\t} else {\r\n\t\t\tjQuery.ready( true );\r\n\t\t}\r\n\t},\r\n\r\n\t// Handle when the DOM is ready\r\n\tready: function( wait ) {\r\n\r\n\t\t// Abort if there are pending holds or we're already ready\r\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remember that the DOM is ready\r\n\t\tjQuery.isReady = true;\r\n\r\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\r\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there are functions bound, to execute\r\n\t\treadyList.resolveWith( document, [ jQuery ] );\r\n\r\n\t\t// Trigger any bound ready events\r\n\t\tif ( jQuery.fn.triggerHandler ) {\r\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\r\n\t\t\tjQuery( document ).off( \"ready\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n/**\r\n * Clean-up method for dom ready events\r\n */\r\nfunction detach() {\r\n\tif ( document.addEventListener ) {\r\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\r\n\t\twindow.removeEventListener( \"load\", completed );\r\n\r\n\t} else {\r\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\r\n\t\twindow.detachEvent( \"onload\", completed );\r\n\t}\r\n}\r\n\r\n/**\r\n * The ready event handler and self cleanup method\r\n */\r\nfunction completed() {\r\n\r\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\r\n\tif ( document.addEventListener ||\r\n\t\twindow.event.type === \"load\" ||\r\n\t\tdocument.readyState === \"complete\" ) {\r\n\r\n\t\tdetach();\r\n\t\tjQuery.ready();\r\n\t}\r\n}\r\n\r\njQuery.ready.promise = function( obj ) {\r\n\tif ( !readyList ) {\r\n\r\n\t\treadyList = jQuery.Deferred();\r\n\r\n\t\t// Catch cases where $(document).ready() is called\r\n\t\t// after the browser event has already occurred.\r\n\t\t// Support: IE6-10\r\n\t\t// Older IE sometimes signals \"interactive\" too soon\r\n\t\tif ( document.readyState === \"complete\" ||\r\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\r\n\r\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\r\n\t\t\twindow.setTimeout( jQuery.ready );\r\n\r\n\t\t// Standards-based browsers support DOMContentLoaded\r\n\t\t} else if ( document.addEventListener ) {\r\n\r\n\t\t\t// Use the handy event callback\r\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.addEventListener( \"load\", completed );\r\n\r\n\t\t// If IE event model is used\r\n\t\t} else {\r\n\r\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\r\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.attachEvent( \"onload\", completed );\r\n\r\n\t\t\t// If IE and not a frame\r\n\t\t\t// continually check to see if the document is ready\r\n\t\t\tvar top = false;\r\n\r\n\t\t\ttry {\r\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\tif ( top && top.doScroll ) {\r\n\t\t\t\t( function doScrollCheck() {\r\n\t\t\t\t\tif ( !jQuery.isReady ) {\r\n\r\n\t\t\t\t\t\ttry {\r\n\r\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\r\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\r\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\r\n\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// detach all dom ready events\r\n\t\t\t\t\t\tdetach();\r\n\r\n\t\t\t\t\t\t// and execute any waiting functions\r\n\t\t\t\t\t\tjQuery.ready();\r\n\t\t\t\t\t}\r\n\t\t\t\t} )();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn readyList.promise( obj );\r\n};\r\n\r\n// Kick off the DOM ready check even if the user does not\r\njQuery.ready.promise();\r\n\r\n\r\n\r\n\r\n// Support: IE<9\r\n// Iteration over object's inherited properties before its own\r\nvar i;\r\nfor ( i in jQuery( support ) ) {\r\n\tbreak;\r\n}\r\nsupport.ownFirst = i === \"0\";\r\n\r\n// Note: most support tests are defined in their respective modules.\r\n// false until the test is run\r\nsupport.inlineBlockNeedsLayout = false;\r\n\r\n// Execute ASAP in case we need to set body.style.zoom\r\njQuery( function() {\r\n\r\n\t// Minified: var a,b,c,d\r\n\tvar val, div, body, container;\r\n\r\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\tif ( !body || !body.style ) {\r\n\r\n\t\t// Return for frameset docs that don't have a body\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Setup\r\n\tdiv = document.createElement( \"div\" );\r\n\tcontainer = document.createElement( \"div\" );\r\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\tbody.appendChild( container ).appendChild( div );\r\n\r\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t// Support: IE<8\r\n\t\t// Check if natively block-level elements act like inline-block\r\n\t\t// elements when setting their display to 'inline' and giving\r\n\t\t// them layout\r\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\r\n\r\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\r\n\t\tif ( val ) {\r\n\r\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\r\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\r\n\t\t\t// Support: IE<8\r\n\t\t\tbody.style.zoom = 1;\r\n\t\t}\r\n\t}\r\n\r\n\tbody.removeChild( container );\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9\r\n\tsupport.deleteExpando = true;\r\n\ttry {\r\n\t\tdelete div.test;\r\n\t} catch ( e ) {\r\n\t\tsupport.deleteExpando = false;\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\nvar acceptData = function( elem ) {\r\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\r\n\t\tnodeType = +elem.nodeType || 1;\r\n\r\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\r\n\treturn nodeType !== 1 && nodeType !== 9 ?\r\n\t\tfalse :\r\n\r\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\r\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\r\n};\r\n\r\n\r\n\r\n\r\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\r\n\trmultiDash = /([A-Z])/g;\r\n\r\nfunction dataAttr( elem, key, data ) {\r\n\r\n\t// If nothing was found internally, try to fetch any\r\n\t// data from the HTML5 data-* attribute\r\n\tif ( data === undefined && elem.nodeType === 1 ) {\r\n\r\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\r\n\r\n\t\tdata = elem.getAttribute( name );\r\n\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\ttry {\r\n\t\t\t\tdata = data === \"true\" ? true :\r\n\t\t\t\t\tdata === \"false\" ? false :\r\n\t\t\t\t\tdata === \"null\" ? null :\r\n\r\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\r\n\t\t\t\t\t+data + \"\" === data ? +data :\r\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\r\n\t\t\t\t\tdata;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\t// Make sure we set the data so it isn't changed later\r\n\t\t\tjQuery.data( elem, key, data );\r\n\r\n\t\t} else {\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\n// checks a cache object for emptiness\r\nfunction isEmptyDataObject( obj ) {\r\n\tvar name;\r\n\tfor ( name in obj ) {\r\n\r\n\t\t// if the public data object is empty, the private is still empty\r\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif ( name !== \"toJSON\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar ret, thisCache,\r\n\t\tinternalKey = jQuery.expando,\r\n\r\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\r\n\t\t// can't GC object references properly across the DOM-JS boundary\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\r\n\t\t// attached directly to the object so GC can occur automatically\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\r\n\t\t// Only defining an ID for JS objects if its cache already exists allows\r\n\t\t// the code to shortcut on the same path as a DOM node with no cache\r\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\r\n\r\n\t// Avoid doing any more work than we need to when trying to get data on an\r\n\t// object that has no data at all\r\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\r\n\t\tdata === undefined && typeof name === \"string\" ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( !id ) {\r\n\r\n\t\t// Only DOM nodes need a new unique ID for each element since their data\r\n\t\t// ends up in the global cache\r\n\t\tif ( isNode ) {\r\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\r\n\t\t} else {\r\n\t\t\tid = internalKey;\r\n\t\t}\r\n\t}\r\n\r\n\tif ( !cache[ id ] ) {\r\n\r\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\r\n\t\t// is serialized using JSON.stringify\r\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\r\n\t}\r\n\r\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\r\n\t// shallow copied over onto the existing cache\r\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\r\n\t\tif ( pvt ) {\r\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\r\n\t\t} else {\r\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\r\n\t\t}\r\n\t}\r\n\r\n\tthisCache = cache[ id ];\r\n\r\n\t// jQuery data() is stored in a separate object inside the object's internal data\r\n\t// cache in order to avoid key collisions between internal data and user-defined\r\n\t// data.\r\n\tif ( !pvt ) {\r\n\t\tif ( !thisCache.data ) {\r\n\t\t\tthisCache.data = {};\r\n\t\t}\r\n\r\n\t\tthisCache = thisCache.data;\r\n\t}\r\n\r\n\tif ( data !== undefined ) {\r\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\r\n\t}\r\n\r\n\t// Check for both converted-to-camel and non-converted data property names\r\n\t// If a data property was specified\r\n\tif ( typeof name === \"string\" ) {\r\n\r\n\t\t// First Try to find as-is property data\r\n\t\tret = thisCache[ name ];\r\n\r\n\t\t// Test for null|undefined property data\r\n\t\tif ( ret == null ) {\r\n\r\n\t\t\t// Try to find the camelCased property\r\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\r\n\t\t}\r\n\t} else {\r\n\t\tret = thisCache;\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\nfunction internalRemoveData( elem, name, pvt ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar thisCache, i,\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// See jQuery.data for more information\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\r\n\r\n\t// If there is already no cache entry for this object, there is no\r\n\t// purpose in continuing\r\n\tif ( !cache[ id ] ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( name ) {\r\n\r\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\r\n\r\n\t\tif ( thisCache ) {\r\n\r\n\t\t\t// Support array or space separated string names for data keys\r\n\t\t\tif ( !jQuery.isArray( name ) ) {\r\n\r\n\t\t\t\t// try the string as a key before any manipulation\r\n\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\tname = [ name ];\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\r\n\t\t\t\t\tname = jQuery.camelCase( name );\r\n\t\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\t\tname = [ name ];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tname = name.split( \" \" );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If \"name\" is an array of keys...\r\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\r\n\t\t\t\t// keys will be converted to camelCase.\r\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\r\n\t\t\t\t// both plain key and camelCase key. #12786\r\n\t\t\t\t// This will only penalize the array argument path.\r\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\r\n\t\t\t}\r\n\r\n\t\t\ti = name.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tdelete thisCache[ name[ i ] ];\r\n\t\t\t}\r\n\r\n\t\t\t// If there is no data left in the cache, we want to continue\r\n\t\t\t// and let the cache object itself get destroyed\r\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// See jQuery.data for more information\r\n\tif ( !pvt ) {\r\n\t\tdelete cache[ id ].data;\r\n\r\n\t\t// Don't destroy the parent cache unless the internal data object\r\n\t\t// had been the only thing left in it\r\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// Destroy the cache\r\n\tif ( isNode ) {\r\n\t\tjQuery.cleanData( [ elem ], true );\r\n\r\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\r\n\t/* jshint eqeqeq: false */\r\n\t} else if ( support.deleteExpando || cache != cache.window ) {\r\n\t\t/* jshint eqeqeq: true */\r\n\t\tdelete cache[ id ];\r\n\r\n\t// When all else fails, undefined\r\n\t} else {\r\n\t\tcache[ id ] = undefined;\r\n\t}\r\n}\r\n\r\njQuery.extend( {\r\n\tcache: {},\r\n\r\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\r\n\t// throw uncatchable exceptions if you attempt to set expando properties\r\n\tnoData: {\r\n\t\t\"applet \": true,\r\n\t\t\"embed \": true,\r\n\r\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\r\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\r\n\t},\r\n\r\n\thasData: function( elem ) {\r\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\r\n\t\treturn !!elem && !isEmptyDataObject( elem );\r\n\t},\r\n\r\n\tdata: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data );\r\n\t},\r\n\r\n\tremoveData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name );\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t_data: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data, true );\r\n\t},\r\n\r\n\t_removeData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name, true );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdata: function( key, value ) {\r\n\t\tvar i, name, data,\r\n\t\t\telem = this[ 0 ],\r\n\t\t\tattrs = elem && elem.attributes;\r\n\r\n\t\t// Special expections of .data basically thwart jQuery.access,\r\n\t\t// so implement the relevant behavior ourselves\r\n\r\n\t\t// Gets all values\r\n\t\tif ( key === undefined ) {\r\n\t\t\tif ( this.length ) {\r\n\t\t\t\tdata = jQuery.data( elem );\r\n\r\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\r\n\t\t\t\t\ti = attrs.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\r\n\t\t\t\t\t\t// Support: IE11+\r\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\r\n\t\t\t\t\t\tif ( attrs[ i ] ) {\r\n\t\t\t\t\t\t\tname = attrs[ i ].name;\r\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\r\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\r\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Sets multiple values\r\n\t\tif ( typeof key === \"object\" ) {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tjQuery.data( this, key );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn arguments.length > 1 ?\r\n\r\n\t\t\t// Sets one value\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tjQuery.data( this, key, value );\r\n\t\t\t} ) :\r\n\r\n\t\t\t// Gets one value\r\n\t\t\t// Try to fetch any internally stored data first\r\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\r\n\t},\r\n\r\n\tremoveData: function( key ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.removeData( this, key );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\njQuery.extend( {\r\n\tqueue: function( elem, type, data ) {\r\n\t\tvar queue;\r\n\r\n\t\tif ( elem ) {\r\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\r\n\t\t\tqueue = jQuery._data( elem, type );\r\n\r\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\r\n\t\t\tif ( data ) {\r\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\r\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.push( data );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn queue || [];\r\n\t\t}\r\n\t},\r\n\r\n\tdequeue: function( elem, type ) {\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\tvar queue = jQuery.queue( elem, type ),\r\n\t\t\tstartLength = queue.length,\r\n\t\t\tfn = queue.shift(),\r\n\t\t\thooks = jQuery._queueHooks( elem, type ),\r\n\t\t\tnext = function() {\r\n\t\t\t\tjQuery.dequeue( elem, type );\r\n\t\t\t};\r\n\r\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\r\n\t\tif ( fn === \"inprogress\" ) {\r\n\t\t\tfn = queue.shift();\r\n\t\t\tstartLength--;\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\r\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\r\n\t\t\t// automatically dequeued\r\n\t\t\tif ( type === \"fx\" ) {\r\n\t\t\t\tqueue.unshift( \"inprogress\" );\r\n\t\t\t}\r\n\r\n\t\t\t// clear up the last queue stop function\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tfn.call( elem, next, hooks );\r\n\t\t}\r\n\r\n\t\tif ( !startLength && hooks ) {\r\n\t\t\thooks.empty.fire();\r\n\t\t}\r\n\t},\r\n\r\n\t// not intended for public consumption - generates a queueHooks object,\r\n\t// or returns the current one\r\n\t_queueHooks: function( elem, type ) {\r\n\t\tvar key = type + \"queueHooks\";\r\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\r\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\r\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\r\n\t\t\t\tjQuery._removeData( elem, key );\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tqueue: function( type, data ) {\r\n\t\tvar setter = 2;\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tdata = type;\r\n\t\t\ttype = \"fx\";\r\n\t\t\tsetter--;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length < setter ) {\r\n\t\t\treturn jQuery.queue( this[ 0 ], type );\r\n\t\t}\r\n\r\n\t\treturn data === undefined ?\r\n\t\t\tthis :\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\r\n\r\n\t\t\t\t// ensure a hooks for this queue\r\n\t\t\t\tjQuery._queueHooks( this, type );\r\n\r\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\r\n\t\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\tdequeue: function( type ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.dequeue( this, type );\r\n\t\t} );\r\n\t},\r\n\tclearQueue: function( type ) {\r\n\t\treturn this.queue( type || \"fx\", [] );\r\n\t},\r\n\r\n\t// Get a promise resolved when queues of a certain type\r\n\t// are emptied (fx is the type by default)\r\n\tpromise: function( type, obj ) {\r\n\t\tvar tmp,\r\n\t\t\tcount = 1,\r\n\t\t\tdefer = jQuery.Deferred(),\r\n\t\t\telements = this,\r\n\t\t\ti = this.length,\r\n\t\t\tresolve = function() {\r\n\t\t\t\tif ( !( --count ) ) {\r\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tobj = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\r\n\t\t\tif ( tmp && tmp.empty ) {\r\n\t\t\t\tcount++;\r\n\t\t\t\ttmp.empty.add( resolve );\r\n\t\t\t}\r\n\t\t}\r\n\t\tresolve();\r\n\t\treturn defer.promise( obj );\r\n\t}\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar shrinkWrapBlocksVal;\r\n\r\n\tsupport.shrinkWrapBlocks = function() {\r\n\t\tif ( shrinkWrapBlocksVal != null ) {\r\n\t\t\treturn shrinkWrapBlocksVal;\r\n\t\t}\r\n\r\n\t\t// Will be changed later if needed.\r\n\t\tshrinkWrapBlocksVal = false;\r\n\r\n\t\t// Minified: var b,c,d\r\n\t\tvar div, body, container;\r\n\r\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\t\tif ( !body || !body.style ) {\r\n\r\n\t\t\t// Test fired too early or in an unsupported environment, exit.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Setup\r\n\t\tdiv = document.createElement( \"div\" );\r\n\t\tcontainer = document.createElement( \"div\" );\r\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\t\tbody.appendChild( container ).appendChild( div );\r\n\r\n\t\t// Support: IE6\r\n\t\t// Check if elements with layout shrink-wrap their children\r\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t\t// Reset CSS: box-sizing; display; margin; border\r\n\t\t\tdiv.style.cssText =\r\n\r\n\t\t\t\t// Support: Firefox<29, Android 2.3\r\n\t\t\t\t// Vendor-prefix box-sizing\r\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\r\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\r\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\r\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\r\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\r\n\t\t}\r\n\r\n\t\tbody.removeChild( container );\r\n\r\n\t\treturn shrinkWrapBlocksVal;\r\n\t};\r\n\r\n} )();\r\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\r\n\r\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\r\n\r\n\r\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\r\n\r\nvar isHidden = function( elem, el ) {\r\n\r\n\t\t// isHidden might be called from jQuery#filter function;\r\n\t\t// in that case, element will be second argument\r\n\t\telem = el || elem;\r\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\r\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\r\n\t};\r\n\r\n\r\n\r\nfunction adjustCSS( elem, prop, valueParts, tween ) {\r\n\tvar adjusted,\r\n\t\tscale = 1,\r\n\t\tmaxIterations = 20,\r\n\t\tcurrentValue = tween ?\r\n\t\t\tfunction() { return tween.cur(); } :\r\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\r\n\t\tinitial = currentValue(),\r\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\r\n\r\n\t\t// Starting value computation is required for potential unit mismatches\r\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\r\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\r\n\r\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\r\n\r\n\t\t// Trust units reported by jQuery.css\r\n\t\tunit = unit || initialInUnit[ 3 ];\r\n\r\n\t\t// Make sure we update the tween properties later on\r\n\t\tvalueParts = valueParts || [];\r\n\r\n\t\t// Iteratively approximate from a nonzero starting point\r\n\t\tinitialInUnit = +initial || 1;\r\n\r\n\t\tdo {\r\n\r\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\r\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\r\n\t\t\tscale = scale || \".5\";\r\n\r\n\t\t\t// Adjust and apply\r\n\t\t\tinitialInUnit = initialInUnit / scale;\r\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\r\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\r\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\r\n\t\t} while (\r\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\r\n\t\t);\r\n\t}\r\n\r\n\tif ( valueParts ) {\r\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\r\n\r\n\t\t// Apply relative offset (+=/-=) if specified\r\n\t\tadjusted = valueParts[ 1 ] ?\r\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\r\n\t\t\t+valueParts[ 2 ];\r\n\t\tif ( tween ) {\r\n\t\t\ttween.unit = unit;\r\n\t\t\ttween.start = initialInUnit;\r\n\t\t\ttween.end = adjusted;\r\n\t\t}\r\n\t}\r\n\treturn adjusted;\r\n}\r\n\r\n\r\n// Multifunctional method to get and set values of a collection\r\n// The value/s can optionally be executed if it's a function\r\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\r\n\tvar i = 0,\r\n\t\tlength = elems.length,\r\n\t\tbulk = key == null;\r\n\r\n\t// Sets many values\r\n\tif ( jQuery.type( key ) === \"object\" ) {\r\n\t\tchainable = true;\r\n\t\tfor ( i in key ) {\r\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\r\n\t\t}\r\n\r\n\t// Sets one value\r\n\t} else if ( value !== undefined ) {\r\n\t\tchainable = true;\r\n\r\n\t\tif ( !jQuery.isFunction( value ) ) {\r\n\t\t\traw = true;\r\n\t\t}\r\n\r\n\t\tif ( bulk ) {\r\n\r\n\t\t\t// Bulk operations run against the entire set\r\n\t\t\tif ( raw ) {\r\n\t\t\t\tfn.call( elems, value );\r\n\t\t\t\tfn = null;\r\n\r\n\t\t\t// ...except when executing function values\r\n\t\t\t} else {\r\n\t\t\t\tbulk = fn;\r\n\t\t\t\tfn = function( elem, key, value ) {\r\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tfn(\r\n\t\t\t\t\telems[ i ],\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn chainable ?\r\n\t\telems :\r\n\r\n\t\t// Gets\r\n\t\tbulk ?\r\n\t\t\tfn.call( elems ) :\r\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\r\n};\r\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\r\n\r\nvar rtagName = ( /<([\\w:-]+)/ );\r\n\r\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\r\n\r\nvar rleadingWhitespace = ( /^\\s+/ );\r\n\r\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\r\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\r\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\r\n\r\n\r\n\r\nfunction createSafeFragment( document ) {\r\n\tvar list = nodeNames.split( \"|\" ),\r\n\t\tsafeFrag = document.createDocumentFragment();\r\n\r\n\tif ( safeFrag.createElement ) {\r\n\t\twhile ( list.length ) {\r\n\t\t\tsafeFrag.createElement(\r\n\t\t\t\tlist.pop()\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\treturn safeFrag;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" ),\r\n\t\tfragment = document.createDocumentFragment(),\r\n\t\tinput = document.createElement( \"input\" );\r\n\r\n\t// Setup\r\n\tdiv.innerHTML = \"
            a\";\r\n\r\n\t// IE strips leading whitespace when .innerHTML is used\r\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\r\n\r\n\t// Make sure that tbody elements aren't automatically inserted\r\n\t// IE will insert them into empty tables\r\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\r\n\r\n\t// Make sure that link elements get serialized correctly by innerHTML\r\n\t// This requires a wrapper element in IE\r\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\r\n\r\n\t// Makes sure cloning an html5 element does not cause problems\r\n\t// Where outerHTML is undefined, this still works\r\n\tsupport.html5Clone =\r\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\r\n\r\n\t// Check if a disconnected checkbox will retain its checked\r\n\t// value of true after appended to the DOM (IE6/7)\r\n\tinput.type = \"checkbox\";\r\n\tinput.checked = true;\r\n\tfragment.appendChild( input );\r\n\tsupport.appendChecked = input.checked;\r\n\r\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\r\n\t// Support: IE6-IE11+\r\n\tdiv.innerHTML = \"\";\r\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\r\n\r\n\t// #11217 - WebKit loses check when the name is after the checked attribute\r\n\tfragment.appendChild( div );\r\n\r\n\t// Support: Windows Web Apps (WWA)\r\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\r\n\tinput = document.createElement( \"input\" );\r\n\tinput.setAttribute( \"type\", \"radio\" );\r\n\tinput.setAttribute( \"checked\", \"checked\" );\r\n\tinput.setAttribute( \"name\", \"t\" );\r\n\r\n\tdiv.appendChild( input );\r\n\r\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\r\n\t// old WebKit doesn't clone checked state correctly in fragments\r\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\r\n\r\n\t// Support: IE<9\r\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\r\n\tsupport.noCloneEvent = !!div.addEventListener;\r\n\r\n\t// Support: IE<9\r\n\t// Since attributes and properties are the same in IE,\r\n\t// cleanData must set properties to undefined rather than use removeAttribute\r\n\tdiv[ jQuery.expando ] = 1;\r\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\r\n} )();\r\n\r\n\r\n// We have to close these tags to support XHTML (#13200)\r\nvar wrapMap = {\r\n\toption: [ 1, \"\" ],\r\n\tlegend: [ 1, \"
            \", \"
            \" ],\r\n\tarea: [ 1, \"\", \"\" ],\r\n\r\n\t// Support: IE8\r\n\tparam: [ 1, \"\", \"\" ],\r\n\tthead: [ 1, \"\", \"
            \" ],\r\n\ttr: [ 2, \"\", \"
            \" ],\r\n\tcol: [ 2, \"\", \"
            \" ],\r\n\ttd: [ 3, \"\", \"
            \" ],\r\n\r\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\r\n\t// unless wrapped in a div with non-breaking characters in front of it.\r\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
            \", \"
            \" ]\r\n};\r\n\r\n// Support: IE8-IE9\r\nwrapMap.optgroup = wrapMap.option;\r\n\r\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\r\nwrapMap.th = wrapMap.td;\r\n\r\n\r\nfunction getAll( context, tag ) {\r\n\tvar elems, elem,\r\n\t\ti = 0,\r\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\r\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\r\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\r\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\r\n\t\t\t\tundefined;\r\n\r\n\tif ( !found ) {\r\n\t\tfor ( found = [], elems = context.childNodes || context;\r\n\t\t\t( elem = elems[ i ] ) != null;\r\n\t\t\ti++\r\n\t\t) {\r\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\r\n\t\t\t\tfound.push( elem );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\r\n\t\tjQuery.merge( [ context ], found ) :\r\n\t\tfound;\r\n}\r\n\r\n\r\n// Mark scripts as having already been evaluated\r\nfunction setGlobalEval( elems, refElements ) {\r\n\tvar elem,\r\n\t\ti = 0;\r\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\tjQuery._data(\r\n\t\t\telem,\r\n\t\t\t\"globalEval\",\r\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\r\nvar rhtml = /<|&#?\\w+;/,\r\n\trtbody = / from table fragments\r\n\t\t\t\tif ( !support.tbody ) {\r\n\r\n\t\t\t\t\t// String was a , *may* have spurious \r\n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\ttmp.firstChild :\r\n\r\n\t\t\t\t\t\t// String was a bare or \r\n\t\t\t\t\t\twrap[ 1 ] === \"
            \" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\t\ttmp :\r\n\t\t\t\t\t\t\t0;\r\n\r\n\t\t\t\t\tj = elem && elem.childNodes.length;\r\n\t\t\t\t\twhile ( j-- ) {\r\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\r\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\r\n\r\n\t\t\t\t\t\t\telem.removeChild( tbody );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\r\n\r\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\r\n\t\t\t\ttmp.textContent = \"\";\r\n\r\n\t\t\t\t// Fix #12392 for oldIE\r\n\t\t\t\twhile ( tmp.firstChild ) {\r\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remember the top-level container for proper cleanup\r\n\t\t\t\ttmp = safe.lastChild;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fix #11356: Clear elements from fragment\r\n\tif ( tmp ) {\r\n\t\tsafe.removeChild( tmp );\r\n\t}\r\n\r\n\t// Reset defaultChecked for any radios and checkboxes\r\n\t// about to be appended to the DOM in IE 6/7 (#8060)\r\n\tif ( !support.appendChecked ) {\r\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\r\n\t}\r\n\r\n\ti = 0;\r\n\twhile ( ( elem = nodes[ i++ ] ) ) {\r\n\r\n\t\t// Skip elements already in the context collection (trac-4087)\r\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\r\n\t\t\tif ( ignored ) {\r\n\t\t\t\tignored.push( elem );\r\n\t\t\t}\r\n\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Append to fragment\r\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tif ( contains ) {\r\n\t\t\tsetGlobalEval( tmp );\r\n\t\t}\r\n\r\n\t\t// Capture executables\r\n\t\tif ( scripts ) {\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\r\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\r\n\t\t\t\t\tscripts.push( elem );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttmp = null;\r\n\r\n\treturn safe;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar i, eventName,\r\n\t\tdiv = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\r\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\r\n\t\teventName = \"on\" + i;\r\n\r\n\t\tif ( !( support[ i ] = eventName in window ) ) {\r\n\r\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\r\n\t\t\tdiv.setAttribute( eventName, \"t\" );\r\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\r\n\t\t}\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\n\r\n\r\nvar rformElems = /^(?:input|select|textarea)$/i,\r\n\trkeyEvent = /^key/,\r\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\r\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\r\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\r\n\r\nfunction returnTrue() {\r\n\treturn true;\r\n}\r\n\r\nfunction returnFalse() {\r\n\treturn false;\r\n}\r\n\r\n// Support: IE9\r\n// See #13393 for more info\r\nfunction safeActiveElement() {\r\n\ttry {\r\n\t\treturn document.activeElement;\r\n\t} catch ( err ) { }\r\n}\r\n\r\nfunction on( elem, types, selector, data, fn, one ) {\r\n\tvar origFn, type;\r\n\r\n\t// Types can be a map of types/handlers\r\n\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t// ( types-Object, selector, data )\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\r\n\t\t\t// ( types-Object, data )\r\n\t\t\tdata = data || selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tfor ( type in types ) {\r\n\t\t\ton( elem, type, selector, data, types[ type ], one );\r\n\t\t}\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( data == null && fn == null ) {\r\n\r\n\t\t// ( types, fn )\r\n\t\tfn = selector;\r\n\t\tdata = selector = undefined;\r\n\t} else if ( fn == null ) {\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\r\n\t\t\t// ( types, selector, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = undefined;\r\n\t\t} else {\r\n\r\n\t\t\t// ( types, data, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t}\r\n\tif ( fn === false ) {\r\n\t\tfn = returnFalse;\r\n\t} else if ( !fn ) {\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( one === 1 ) {\r\n\t\torigFn = fn;\r\n\t\tfn = function( event ) {\r\n\r\n\t\t\t// Can use an empty set, since event contains the info\r\n\t\t\tjQuery().off( event );\r\n\t\t\treturn origFn.apply( this, arguments );\r\n\t\t};\r\n\r\n\t\t// Use same guid so caller can remove using origFn\r\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\r\n\t}\r\n\treturn elem.each( function() {\r\n\t\tjQuery.event.add( this, types, fn, data, selector );\r\n\t} );\r\n}\r\n\r\n/*\r\n * Helper functions for managing events -- not part of the public interface.\r\n * Props to Dean Edwards' addEvent library for many of the ideas.\r\n */\r\njQuery.event = {\r\n\r\n\tglobal: {},\r\n\r\n\tadd: function( elem, types, handler, data, selector ) {\r\n\t\tvar tmp, events, t, handleObjIn,\r\n\t\t\tspecial, eventHandle, handleObj,\r\n\t\t\thandlers, type, namespaces, origType,\r\n\t\t\telemData = jQuery._data( elem );\r\n\r\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\r\n\t\tif ( !elemData ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Caller can pass in an object of custom data in lieu of the handler\r\n\t\tif ( handler.handler ) {\r\n\t\t\thandleObjIn = handler;\r\n\t\t\thandler = handleObjIn.handler;\r\n\t\t\tselector = handleObjIn.selector;\r\n\t\t}\r\n\r\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\r\n\t\tif ( !handler.guid ) {\r\n\t\t\thandler.guid = jQuery.guid++;\r\n\t\t}\r\n\r\n\t\t// Init the element's event structure and main handler, if this is the first\r\n\t\tif ( !( events = elemData.events ) ) {\r\n\t\t\tevents = elemData.events = {};\r\n\t\t}\r\n\t\tif ( !( eventHandle = elemData.handle ) ) {\r\n\t\t\teventHandle = elemData.handle = function( e ) {\r\n\r\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\r\n\t\t\t\t// when an event is called after a page has unloaded\r\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\r\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\r\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t};\r\n\r\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\r\n\t\t\t// with IE non-native events\r\n\t\t\teventHandle.elem = elem;\r\n\t\t}\r\n\r\n\t\t// Handle multiple events separated by a space\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If event changes its type, use the special event handlers for the changed type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// If selector defined, determine special event api type, otherwise given type\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\r\n\t\t\t// Update special based on newly reset type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// handleObj is passed to all event handlers\r\n\t\t\thandleObj = jQuery.extend( {\r\n\t\t\t\ttype: type,\r\n\t\t\t\torigType: origType,\r\n\t\t\t\tdata: data,\r\n\t\t\t\thandler: handler,\r\n\t\t\t\tguid: handler.guid,\r\n\t\t\t\tselector: selector,\r\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\r\n\t\t\t\tnamespace: namespaces.join( \".\" )\r\n\t\t\t}, handleObjIn );\r\n\r\n\t\t\t// Init the event handler queue if we're the first\r\n\t\t\tif ( !( handlers = events[ type ] ) ) {\r\n\t\t\t\thandlers = events[ type ] = [];\r\n\t\t\t\thandlers.delegateCount = 0;\r\n\r\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\r\n\t\t\t\tif ( !special.setup ||\r\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\r\n\r\n\t\t\t\t\t// Bind the global event handler to the element\r\n\t\t\t\t\tif ( elem.addEventListener ) {\r\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\r\n\r\n\t\t\t\t\t} else if ( elem.attachEvent ) {\r\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( special.add ) {\r\n\t\t\t\tspecial.add.call( elem, handleObj );\r\n\r\n\t\t\t\tif ( !handleObj.handler.guid ) {\r\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add to the element's handler list, delegates in front\r\n\t\t\tif ( selector ) {\r\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\r\n\t\t\t} else {\r\n\t\t\t\thandlers.push( handleObj );\r\n\t\t\t}\r\n\r\n\t\t\t// Keep track of which events have ever been used, for event optimization\r\n\t\t\tjQuery.event.global[ type ] = true;\r\n\t\t}\r\n\r\n\t\t// Nullify elem to prevent memory leaks in IE\r\n\t\telem = null;\r\n\t},\r\n\r\n\t// Detach an event or set of events from an element\r\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\r\n\t\tvar j, handleObj, tmp,\r\n\t\t\torigCount, t, events,\r\n\t\t\tspecial, handlers, type,\r\n\t\t\tnamespaces, origType,\r\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\r\n\r\n\t\tif ( !elemData || !( events = elemData.events ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Once for each type.namespace in types; type may be omitted\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tfor ( type in events ) {\r\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\t\t\thandlers = events[ type ] || [];\r\n\t\t\ttmp = tmp[ 2 ] &&\r\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\r\n\r\n\t\t\t// Remove matching events\r\n\t\t\torigCount = j = handlers.length;\r\n\t\t\twhile ( j-- ) {\r\n\t\t\t\thandleObj = handlers[ j ];\r\n\r\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\r\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\r\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\r\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\r\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\r\n\t\t\t\t\thandlers.splice( j, 1 );\r\n\r\n\t\t\t\t\tif ( handleObj.selector ) {\r\n\t\t\t\t\t\thandlers.delegateCount--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( special.remove ) {\r\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\r\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\r\n\t\t\tif ( origCount && !handlers.length ) {\r\n\t\t\t\tif ( !special.teardown ||\r\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\r\n\r\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete events[ type ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove the expando if it's no longer used\r\n\t\tif ( jQuery.isEmptyObject( events ) ) {\r\n\t\t\tdelete elemData.handle;\r\n\r\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\r\n\t\t\t// so use it instead of delete\r\n\t\t\tjQuery._removeData( elem, \"events\" );\r\n\t\t}\r\n\t},\r\n\r\n\ttrigger: function( event, data, elem, onlyHandlers ) {\r\n\t\tvar handle, ontype, cur,\r\n\t\t\tbubbleType, special, tmp, i,\r\n\t\t\teventPath = [ elem || document ],\r\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\r\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\r\n\r\n\t\tcur = tmp = elem = elem || document;\r\n\r\n\t\t// Don't do events on text and comment nodes\r\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\r\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\r\n\r\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\r\n\t\t\tnamespaces = type.split( \".\" );\r\n\t\t\ttype = namespaces.shift();\r\n\t\t\tnamespaces.sort();\r\n\t\t}\r\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\r\n\r\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\r\n\t\tevent = event[ jQuery.expando ] ?\r\n\t\t\tevent :\r\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\r\n\r\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\r\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\r\n\t\tevent.namespace = namespaces.join( \".\" );\r\n\t\tevent.rnamespace = event.namespace ?\r\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\r\n\t\t\tnull;\r\n\r\n\t\t// Clean up the event in case it is being reused\r\n\t\tevent.result = undefined;\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = elem;\r\n\t\t}\r\n\r\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\r\n\t\tdata = data == null ?\r\n\t\t\t[ event ] :\r\n\t\t\tjQuery.makeArray( data, [ event ] );\r\n\r\n\t\t// Allow special events to draw outside the lines\r\n\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\r\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\r\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\tbubbleType = special.delegateType || type;\r\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\r\n\t\t\t\tcur = cur.parentNode;\r\n\t\t\t}\r\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\r\n\t\t\t\teventPath.push( cur );\r\n\t\t\t\ttmp = cur;\r\n\t\t\t}\r\n\r\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\r\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\r\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fire handlers on the event path\r\n\t\ti = 0;\r\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\r\n\t\t\tevent.type = i > 1 ?\r\n\t\t\t\tbubbleType :\r\n\t\t\t\tspecial.bindType || type;\r\n\r\n\t\t\t// jQuery handler\r\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\r\n\t\t\t\tjQuery._data( cur, \"handle\" );\r\n\r\n\t\t\tif ( handle ) {\r\n\t\t\t\thandle.apply( cur, data );\r\n\t\t\t}\r\n\r\n\t\t\t// Native handler\r\n\t\t\thandle = ontype && cur[ ontype ];\r\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\r\n\t\t\t\tevent.result = handle.apply( cur, data );\r\n\t\t\t\tif ( event.result === false ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevent.type = type;\r\n\r\n\t\t// If nobody prevented the default action, do it now\r\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\r\n\r\n\t\t\tif (\r\n\t\t\t\t( !special._default ||\r\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\r\n\t\t\t\t) && acceptData( elem )\r\n\t\t\t) {\r\n\r\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\r\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\r\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\r\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\r\n\t\t\t\t\ttmp = elem[ ontype ];\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\r\n\t\t\t\t\tjQuery.event.triggered = type;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\telem[ type ]();\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\r\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery.event.triggered = undefined;\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = tmp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\tdispatch: function( event ) {\r\n\r\n\t\t// Make a writable jQuery.Event from the native event object\r\n\t\tevent = jQuery.event.fix( event );\r\n\r\n\t\tvar i, j, ret, matched, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\targs = slice.call( arguments ),\r\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\r\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\r\n\r\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\r\n\t\targs[ 0 ] = event;\r\n\t\tevent.delegateTarget = this;\r\n\r\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\r\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine handlers\r\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\r\n\r\n\t\t// Run delegates first; they may want to stop propagation beneath us\r\n\t\ti = 0;\r\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tevent.currentTarget = matched.elem;\r\n\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\r\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\r\n\r\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\r\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\r\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\r\n\r\n\t\t\t\t\tevent.handleObj = handleObj;\r\n\t\t\t\t\tevent.data = handleObj.data;\r\n\r\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\r\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\r\n\r\n\t\t\t\t\tif ( ret !== undefined ) {\r\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Call the postDispatch hook for the mapped type\r\n\t\tif ( special.postDispatch ) {\r\n\t\t\tspecial.postDispatch.call( this, event );\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\thandlers: function( event, handlers ) {\r\n\t\tvar i, matches, sel, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\tdelegateCount = handlers.delegateCount,\r\n\t\t\tcur = event.target;\r\n\r\n\t\t// Support (at least): Chrome, IE9\r\n\t\t// Find delegate handlers\r\n\t\t// Black-hole SVG instance trees (#13180)\r\n\t\t//\r\n\t\t// Support: Firefox<=42+\r\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\r\n\t\tif ( delegateCount && cur.nodeType &&\r\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\r\n\r\n\t\t\t/* jshint eqeqeq: false */\r\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\r\n\t\t\t\t/* jshint eqeqeq: true */\r\n\r\n\t\t\t\t// Don't check non-elements (#13208)\r\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\r\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\r\n\t\t\t\t\tmatches = [];\r\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\r\n\t\t\t\t\t\thandleObj = handlers[ i ];\r\n\r\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\r\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\r\n\r\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\r\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\r\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\r\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( matches[ sel ] ) {\r\n\t\t\t\t\t\t\tmatches.push( handleObj );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( matches.length ) {\r\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add the remaining (directly-bound) handlers\r\n\t\tif ( delegateCount < handlers.length ) {\r\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\r\n\t\t}\r\n\r\n\t\treturn handlerQueue;\r\n\t},\r\n\r\n\tfix: function( event ) {\r\n\t\tif ( event[ jQuery.expando ] ) {\r\n\t\t\treturn event;\r\n\t\t}\r\n\r\n\t\t// Create a writable copy of the event object and normalize some properties\r\n\t\tvar i, prop, copy,\r\n\t\t\ttype = event.type,\r\n\t\t\toriginalEvent = event,\r\n\t\t\tfixHook = this.fixHooks[ type ];\r\n\r\n\t\tif ( !fixHook ) {\r\n\t\t\tthis.fixHooks[ type ] = fixHook =\r\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\r\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\r\n\t\t\t\t{};\r\n\t\t}\r\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\r\n\r\n\t\tevent = new jQuery.Event( originalEvent );\r\n\r\n\t\ti = copy.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tprop = copy[ i ];\r\n\t\t\tevent[ prop ] = originalEvent[ prop ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Fix target property (#1925)\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = originalEvent.srcElement || document;\r\n\t\t}\r\n\r\n\t\t// Support: Safari 6-8+\r\n\t\t// Target should not be a text node (#504, #13143)\r\n\t\tif ( event.target.nodeType === 3 ) {\r\n\t\t\tevent.target = event.target.parentNode;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\r\n\t\tevent.metaKey = !!event.metaKey;\r\n\r\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\r\n\t},\r\n\r\n\t// Includes some event props shared by KeyEvent and MouseEvent\r\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\r\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\r\n\r\n\tfixHooks: {},\r\n\r\n\tkeyHooks: {\r\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\r\n\t\t\t// Add which for key events\r\n\t\t\tif ( event.which == null ) {\r\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tmouseHooks: {\r\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\r\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\t\t\tvar body, eventDoc, doc,\r\n\t\t\t\tbutton = original.button,\r\n\t\t\t\tfromElement = original.fromElement;\r\n\r\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\r\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\r\n\t\t\t\teventDoc = event.target.ownerDocument || document;\r\n\t\t\t\tdoc = eventDoc.documentElement;\r\n\t\t\t\tbody = eventDoc.body;\r\n\r\n\t\t\t\tevent.pageX = original.clientX +\r\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\r\n\t\t\t\tevent.pageY = original.clientY +\r\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\r\n\t\t\t}\r\n\r\n\t\t\t// Add relatedTarget, if necessary\r\n\t\t\tif ( !event.relatedTarget && fromElement ) {\r\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\r\n\t\t\t\t\toriginal.toElement :\r\n\t\t\t\t\tfromElement;\r\n\t\t\t}\r\n\r\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\r\n\t\t\t// Note: button is not normalized, so don't use it\r\n\t\t\tif ( !event.which && button !== undefined ) {\r\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tspecial: {\r\n\t\tload: {\r\n\r\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\r\n\t\t\tnoBubble: true\r\n\t\t},\r\n\t\tfocus: {\r\n\r\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tthis.focus();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\r\n\t\t\t\t\t\t// let .trigger() run the handlers\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusin\"\r\n\t\t},\r\n\t\tblur: {\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\r\n\t\t\t\t\tthis.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusout\"\r\n\t\t},\r\n\t\tclick: {\r\n\r\n\t\t\t// For checkbox, fire native event so checked state will be right\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\r\n\t\t\t\t\tthis.click();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\r\n\t\t\t_default: function( event ) {\r\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbeforeunload: {\r\n\t\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t\t// Support: Firefox 20+\r\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\r\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\r\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Piggyback on a donor event to simulate a different one\r\n\tsimulate: function( type, elem, event ) {\r\n\t\tvar e = jQuery.extend(\r\n\t\t\tnew jQuery.Event(),\r\n\t\t\tevent,\r\n\t\t\t{\r\n\t\t\t\ttype: type,\r\n\t\t\t\tisSimulated: true\r\n\r\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\r\n\t\t\t\t// would not be triggered on donor event, since in our own\r\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\r\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\r\n\t\t\t\t//\r\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\r\n\t\t\t\t// since `originalEvent` should point to the original event for the\r\n\t\t\t\t// constancy with other events and for more focused logic\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tjQuery.event.trigger( e, null, elem );\r\n\r\n\t\tif ( e.isDefaultPrevented() ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.removeEvent = document.removeEventListener ?\r\n\tfunction( elem, type, handle ) {\r\n\r\n\t\t// This \"if\" is needed for plain objects\r\n\t\tif ( elem.removeEventListener ) {\r\n\t\t\telem.removeEventListener( type, handle );\r\n\t\t}\r\n\t} :\r\n\tfunction( elem, type, handle ) {\r\n\t\tvar name = \"on\" + type;\r\n\r\n\t\tif ( elem.detachEvent ) {\r\n\r\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\r\n\t\t\t// detachEvent needed property on element, by name of that event,\r\n\t\t\t// to properly expose it to GC\r\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\r\n\t\t\t\telem[ name ] = null;\r\n\t\t\t}\r\n\r\n\t\t\telem.detachEvent( name, handle );\r\n\t\t}\r\n\t};\r\n\r\njQuery.Event = function( src, props ) {\r\n\r\n\t// Allow instantiation without the 'new' keyword\r\n\tif ( !( this instanceof jQuery.Event ) ) {\r\n\t\treturn new jQuery.Event( src, props );\r\n\t}\r\n\r\n\t// Event object\r\n\tif ( src && src.type ) {\r\n\t\tthis.originalEvent = src;\r\n\t\tthis.type = src.type;\r\n\r\n\t\t// Events bubbling up the document may have been marked as prevented\r\n\t\t// by a handler lower down the tree; reflect the correct value.\r\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\r\n\t\t\t\tsrc.defaultPrevented === undefined &&\r\n\r\n\t\t\t\t// Support: IE < 9, Android < 4.0\r\n\t\t\t\tsrc.returnValue === false ?\r\n\t\t\treturnTrue :\r\n\t\t\treturnFalse;\r\n\r\n\t// Event type\r\n\t} else {\r\n\t\tthis.type = src;\r\n\t}\r\n\r\n\t// Put explicitly provided properties onto the event object\r\n\tif ( props ) {\r\n\t\tjQuery.extend( this, props );\r\n\t}\r\n\r\n\t// Create a timestamp if incoming event doesn't have one\r\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\r\n\r\n\t// Mark it as fixed\r\n\tthis[ jQuery.expando ] = true;\r\n};\r\n\r\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\r\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\r\njQuery.Event.prototype = {\r\n\tconstructor: jQuery.Event,\r\n\tisDefaultPrevented: returnFalse,\r\n\tisPropagationStopped: returnFalse,\r\n\tisImmediatePropagationStopped: returnFalse,\r\n\r\n\tpreventDefault: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isDefaultPrevented = returnTrue;\r\n\t\tif ( !e ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If preventDefault exists, run it on the original event\r\n\t\tif ( e.preventDefault ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t// Support: IE\r\n\t\t// Otherwise set the returnValue property of the original event to false\r\n\t\t} else {\r\n\t\t\te.returnValue = false;\r\n\t\t}\r\n\t},\r\n\tstopPropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isPropagationStopped = returnTrue;\r\n\r\n\t\tif ( !e || this.isSimulated ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If stopPropagation exists, run it on the original event\r\n\t\tif ( e.stopPropagation ) {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\r\n\t\t// Support: IE\r\n\t\t// Set the cancelBubble property of the original event to true\r\n\t\te.cancelBubble = true;\r\n\t},\r\n\tstopImmediatePropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isImmediatePropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && e.stopImmediatePropagation ) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t}\r\n\r\n\t\tthis.stopPropagation();\r\n\t}\r\n};\r\n\r\n// Create mouseenter/leave events using mouseover/out and event-time checks\r\n// so that event delegation works in jQuery.\r\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\r\n//\r\n// Support: Safari 7 only\r\n// Safari sends mouseenter too often; see:\r\n// https://code.google.com/p/chromium/issues/detail?id=470258\r\n// for the description of the bug (it existed in older Chrome versions as well).\r\njQuery.each( {\r\n\tmouseenter: \"mouseover\",\r\n\tmouseleave: \"mouseout\",\r\n\tpointerenter: \"pointerover\",\r\n\tpointerleave: \"pointerout\"\r\n}, function( orig, fix ) {\r\n\tjQuery.event.special[ orig ] = {\r\n\t\tdelegateType: fix,\r\n\t\tbindType: fix,\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar ret,\r\n\t\t\t\ttarget = this,\r\n\t\t\t\trelated = event.relatedTarget,\r\n\t\t\t\thandleObj = event.handleObj;\r\n\r\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\r\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\r\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\r\n\t\t\t\tevent.type = handleObj.origType;\r\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\r\n\t\t\t\tevent.type = fix;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t};\r\n} );\r\n\r\n// IE submit delegation\r\nif ( !support.submit ) {\r\n\r\n\tjQuery.event.special.submit = {\r\n\t\tsetup: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\r\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\r\n\r\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\r\n\t\t\t\tvar elem = e.target,\r\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\r\n\r\n\t\t\t\t\t\t// Support: IE <=8\r\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\r\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\r\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\r\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\r\n\t\t\t\t\t\tundefined;\r\n\r\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\r\n\t\t\t\t\t\tevent._submitBubble = true;\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// return undefined since we don't need an event listener\r\n\t\t},\r\n\r\n\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t// If form was submitted by the user, bubble the event up the tree\r\n\t\t\tif ( event._submitBubble ) {\r\n\t\t\t\tdelete event._submitBubble;\r\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\r\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\r\n\t\t\tjQuery.event.remove( this, \"._submit\" );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// IE change delegation and checkbox/radio fix\r\nif ( !support.change ) {\r\n\r\n\tjQuery.event.special.change = {\r\n\r\n\t\tsetup: function() {\r\n\r\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\r\n\r\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\r\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\r\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\r\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\r\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\r\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\r\n\t\t\t\t\t\t\tthis._justChanged = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tthis._justChanged = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\r\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\r\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\r\n\t\t\t\tvar elem = e.target;\r\n\r\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar elem = event.target;\r\n\r\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\r\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\r\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\r\n\r\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\t\t\tjQuery.event.remove( this, \"._change\" );\r\n\r\n\t\t\treturn !rformElems.test( this.nodeName );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Support: Firefox\r\n// Firefox doesn't have focus(in | out) events\r\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\r\n//\r\n// Support: Chrome, Safari\r\n// focus(in | out) events fire after focus & blur events,\r\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\r\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\r\nif ( !support.focusin ) {\r\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\r\n\r\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\r\n\t\tvar handler = function( event ) {\r\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\r\n\t\t};\r\n\r\n\t\tjQuery.event.special[ fix ] = {\r\n\t\t\tsetup: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\r\n\t\t\t\t}\r\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\r\n\t\t\t},\r\n\t\t\tteardown: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\r\n\t\t\t\t\tjQuery._removeData( doc, fix );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t} );\r\n}\r\n\r\njQuery.fn.extend( {\r\n\r\n\ton: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn );\r\n\t},\r\n\tone: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn, 1 );\r\n\t},\r\n\toff: function( types, selector, fn ) {\r\n\t\tvar handleObj, type;\r\n\t\tif ( types && types.preventDefault && types.handleObj ) {\r\n\r\n\t\t\t// ( event ) dispatched jQuery.Event\r\n\t\t\thandleObj = types.handleObj;\r\n\t\t\tjQuery( types.delegateTarget ).off(\r\n\t\t\t\thandleObj.namespace ?\r\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\r\n\t\t\t\t\thandleObj.origType,\r\n\t\t\t\thandleObj.selector,\r\n\t\t\t\thandleObj.handler\r\n\t\t\t);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t\t// ( types-object [, selector] )\r\n\t\t\tfor ( type in types ) {\r\n\t\t\t\tthis.off( type, selector, types[ type ] );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( selector === false || typeof selector === \"function\" ) {\r\n\r\n\t\t\t// ( types [, fn] )\r\n\t\t\tfn = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tif ( fn === false ) {\r\n\t\t\tfn = returnFalse;\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.remove( this, types, fn, selector );\r\n\t\t} );\r\n\t},\r\n\r\n\ttrigger: function( type, data ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.trigger( type, data, this );\r\n\t\t} );\r\n\t},\r\n\ttriggerHandler: function( type, data ) {\r\n\t\tvar elem = this[ 0 ];\r\n\t\tif ( elem ) {\r\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\r\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\r\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\r\n\r\n\t// Support: IE 10-11, Edge 10240+\r\n\t// In IE/Edge using regex groups here causes severe slowdowns.\r\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\r\n\trnoInnerhtml = /\\s*$/g,\r\n\tsafeFragment = createSafeFragment( document ),\r\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\r\n\r\n// Support: IE<8\r\n// Manipulating tables requires a tbody\r\nfunction manipulationTarget( elem, content ) {\r\n\treturn jQuery.nodeName( elem, \"table\" ) &&\r\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\r\n\r\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\r\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\r\n\t\telem;\r\n}\r\n\r\n// Replace/restore the type attribute of script elements for safe DOM manipulation\r\nfunction disableScript( elem ) {\r\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\r\n\treturn elem;\r\n}\r\nfunction restoreScript( elem ) {\r\n\tvar match = rscriptTypeMasked.exec( elem.type );\r\n\tif ( match ) {\r\n\t\telem.type = match[ 1 ];\r\n\t} else {\r\n\t\telem.removeAttribute( \"type\" );\r\n\t}\r\n\treturn elem;\r\n}\r\n\r\nfunction cloneCopyEvent( src, dest ) {\r\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar type, i, l,\r\n\t\toldData = jQuery._data( src ),\r\n\t\tcurData = jQuery._data( dest, oldData ),\r\n\t\tevents = oldData.events;\r\n\r\n\tif ( events ) {\r\n\t\tdelete curData.handle;\r\n\t\tcurData.events = {};\r\n\r\n\t\tfor ( type in events ) {\r\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\r\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// make the cloned public data object a copy from the original\r\n\tif ( curData.data ) {\r\n\t\tcurData.data = jQuery.extend( {}, curData.data );\r\n\t}\r\n}\r\n\r\nfunction fixCloneNodeIssues( src, dest ) {\r\n\tvar nodeName, e, data;\r\n\r\n\t// We do not need to do anything for non-Elements\r\n\tif ( dest.nodeType !== 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tnodeName = dest.nodeName.toLowerCase();\r\n\r\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\r\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\r\n\t\tdata = jQuery._data( dest );\r\n\r\n\t\tfor ( e in data.events ) {\r\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\r\n\t\t}\r\n\r\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\r\n\t\tdest.removeAttribute( jQuery.expando );\r\n\t}\r\n\r\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\r\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\r\n\t\tdisableScript( dest ).text = src.text;\r\n\t\trestoreScript( dest );\r\n\r\n\t// IE6-10 improperly clones children of object elements using classid.\r\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\r\n\t} else if ( nodeName === \"object\" ) {\r\n\t\tif ( dest.parentNode ) {\r\n\t\t\tdest.outerHTML = src.outerHTML;\r\n\t\t}\r\n\r\n\t\t// This path appears unavoidable for IE9. When cloning an object\r\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\r\n\t\t// If the src has innerHTML and the destination does not,\r\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\r\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\r\n\t\t\tdest.innerHTML = src.innerHTML;\r\n\t\t}\r\n\r\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\r\n\r\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\r\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\r\n\t\t// a checked appearance if the defaultChecked value isn't also set\r\n\r\n\t\tdest.defaultChecked = dest.checked = src.checked;\r\n\r\n\t\t// IE6-7 get confused and end up setting the value of a cloned\r\n\t\t// checkbox/radio button to an empty string instead of \"on\"\r\n\t\tif ( dest.value !== src.value ) {\r\n\t\t\tdest.value = src.value;\r\n\t\t}\r\n\r\n\t// IE6-8 fails to return the selected option to the default selected\r\n\t// state when cloning options\r\n\t} else if ( nodeName === \"option\" ) {\r\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\r\n\r\n\t// IE6-8 fails to set the defaultValue to the correct value when\r\n\t// cloning other types of input fields\r\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\r\n\t\tdest.defaultValue = src.defaultValue;\r\n\t}\r\n}\r\n\r\nfunction domManip( collection, args, callback, ignored ) {\r\n\r\n\t// Flatten any nested arrays\r\n\targs = concat.apply( [], args );\r\n\r\n\tvar first, node, hasScripts,\r\n\t\tscripts, doc, fragment,\r\n\t\ti = 0,\r\n\t\tl = collection.length,\r\n\t\tiNoClone = l - 1,\r\n\t\tvalue = args[ 0 ],\r\n\t\tisFunction = jQuery.isFunction( value );\r\n\r\n\t// We can't cloneNode fragments that contain checked, in WebKit\r\n\tif ( isFunction ||\r\n\t\t\t( l > 1 && typeof value === \"string\" &&\r\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\r\n\t\treturn collection.each( function( index ) {\r\n\t\t\tvar self = collection.eq( index );\r\n\t\t\tif ( isFunction ) {\r\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\r\n\t\t\t}\r\n\t\t\tdomManip( self, args, callback, ignored );\r\n\t\t} );\r\n\t}\r\n\r\n\tif ( l ) {\r\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\r\n\t\tfirst = fragment.firstChild;\r\n\r\n\t\tif ( fragment.childNodes.length === 1 ) {\r\n\t\t\tfragment = first;\r\n\t\t}\r\n\r\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\r\n\t\tif ( first || ignored ) {\r\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\r\n\t\t\thasScripts = scripts.length;\r\n\r\n\t\t\t// Use the original fragment for the last item\r\n\t\t\t// instead of the first because it can end up\r\n\t\t\t// being emptied incorrectly in certain situations (#8070).\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tnode = fragment;\r\n\r\n\t\t\t\tif ( i !== iNoClone ) {\r\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\r\n\r\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\r\n\t\t\t\t\tif ( hasScripts ) {\r\n\r\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback.call( collection[ i ], node, i );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasScripts ) {\r\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\r\n\r\n\t\t\t\t// Reenable scripts\r\n\t\t\t\tjQuery.map( scripts, restoreScript );\r\n\r\n\t\t\t\t// Evaluate executable scripts on first document insertion\r\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\r\n\t\t\t\t\tnode = scripts[ i ];\r\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\r\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\r\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\r\n\r\n\t\t\t\t\t\tif ( node.src ) {\r\n\r\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\r\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\r\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjQuery.globalEval(\r\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\r\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Fix #11809: Avoid leaking memory\r\n\t\t\tfragment = first = null;\r\n\t\t}\r\n\t}\r\n\r\n\treturn collection;\r\n}\r\n\r\nfunction remove( elem, selector, keepData ) {\r\n\tvar node,\r\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\r\n\t\ti = 0;\r\n\r\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\r\n\r\n\t\tif ( !keepData && node.nodeType === 1 ) {\r\n\t\t\tjQuery.cleanData( getAll( node ) );\r\n\t\t}\r\n\r\n\t\tif ( node.parentNode ) {\r\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\r\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\r\n\t\t\t}\r\n\t\t\tnode.parentNode.removeChild( node );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\njQuery.extend( {\r\n\thtmlPrefilter: function( html ) {\r\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\r\n\t},\r\n\r\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\r\n\t\tvar destElements, node, clone, i, srcElements,\r\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\r\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\r\n\r\n\t\t\tclone = elem.cloneNode( true );\r\n\r\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\r\n\t\t} else {\r\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\r\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\r\n\t\t}\r\n\r\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\r\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\r\n\t\t\tdestElements = getAll( clone );\r\n\t\t\tsrcElements = getAll( elem );\r\n\r\n\t\t\t// Fix all IE cloning issues\r\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\r\n\r\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\r\n\t\t\t\tif ( destElements[ i ] ) {\r\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy the events from the original to the clone\r\n\t\tif ( dataAndEvents ) {\r\n\t\t\tif ( deepDataAndEvents ) {\r\n\t\t\t\tsrcElements = srcElements || getAll( elem );\r\n\t\t\t\tdestElements = destElements || getAll( clone );\r\n\r\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\r\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloneCopyEvent( elem, clone );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tdestElements = getAll( clone, \"script\" );\r\n\t\tif ( destElements.length > 0 ) {\r\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\r\n\t\t}\r\n\r\n\t\tdestElements = srcElements = node = null;\r\n\r\n\t\t// Return the cloned set\r\n\t\treturn clone;\r\n\t},\r\n\r\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\r\n\t\tvar elem, type, id, data,\r\n\t\t\ti = 0,\r\n\t\t\tinternalKey = jQuery.expando,\r\n\t\t\tcache = jQuery.cache,\r\n\t\t\tattributes = support.attributes,\r\n\t\t\tspecial = jQuery.event.special;\r\n\r\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\r\n\r\n\t\t\t\tid = elem[ internalKey ];\r\n\t\t\t\tdata = id && cache[ id ];\r\n\r\n\t\t\t\tif ( data ) {\r\n\t\t\t\t\tif ( data.events ) {\r\n\t\t\t\t\t\tfor ( type in data.events ) {\r\n\t\t\t\t\t\t\tif ( special[ type ] ) {\r\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\r\n\r\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\r\n\t\t\t\t\tif ( cache[ id ] ) {\r\n\r\n\t\t\t\t\t\tdelete cache[ id ];\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\r\n\t\t\t\t\t\t// IE creates expando attributes along with the property\r\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\r\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\r\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\r\n\r\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\r\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\r\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdeletedIds.push( id );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\t// Keep domManip exposed until 3.0 (gh-2225)\r\n\tdomManip: domManip,\r\n\r\n\tdetach: function( selector ) {\r\n\t\treturn remove( this, selector, true );\r\n\t},\r\n\r\n\tremove: function( selector ) {\r\n\t\treturn remove( this, selector );\r\n\t},\r\n\r\n\ttext: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\treturn value === undefined ?\r\n\t\t\t\tjQuery.text( this ) :\r\n\t\t\t\tthis.empty().append(\r\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\r\n\t\t\t\t);\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\tappend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.appendChild( elem );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tprepend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tbefore: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tafter: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tempty: function() {\r\n\t\tvar elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\r\n\r\n\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t}\r\n\r\n\t\t\t// Remove any remaining nodes\r\n\t\t\twhile ( elem.firstChild ) {\r\n\t\t\t\telem.removeChild( elem.firstChild );\r\n\t\t\t}\r\n\r\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\r\n\t\t\t// Support: IE<9\r\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\r\n\t\t\t\telem.options.length = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\r\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\r\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\r\n\r\n\t\treturn this.map( function() {\r\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\r\n\t\t} );\r\n\t},\r\n\r\n\thtml: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar elem = this[ 0 ] || {},\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = this.length;\r\n\r\n\t\t\tif ( value === undefined ) {\r\n\t\t\t\treturn elem.nodeType === 1 ?\r\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t}\r\n\r\n\t\t\t// See if we can take a shortcut and just use innerHTML\r\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\r\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\r\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\r\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\r\n\r\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfor ( ; i < l; i++ ) {\r\n\r\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\t\t\t\telem = this[ i ] || {};\r\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t\t\t\t\telem.innerHTML = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem = 0;\r\n\r\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\r\n\t\t\t\t} catch ( e ) {}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem ) {\r\n\t\t\t\tthis.empty().append( value );\r\n\t\t\t}\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\treplaceWith: function() {\r\n\t\tvar ignored = [];\r\n\r\n\t\t// Make the changes, replacing each non-ignored context element with the new content\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tvar parent = this.parentNode;\r\n\r\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( this ) );\r\n\t\t\t\tif ( parent ) {\r\n\t\t\t\t\tparent.replaceChild( elem, this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Force callback invocation\r\n\t\t}, ignored );\r\n\t}\r\n} );\r\n\r\njQuery.each( {\r\n\tappendTo: \"append\",\r\n\tprependTo: \"prepend\",\r\n\tinsertBefore: \"before\",\r\n\tinsertAfter: \"after\",\r\n\treplaceAll: \"replaceWith\"\r\n}, function( name, original ) {\r\n\tjQuery.fn[ name ] = function( selector ) {\r\n\t\tvar elems,\r\n\t\t\ti = 0,\r\n\t\t\tret = [],\r\n\t\t\tinsert = jQuery( selector ),\r\n\t\t\tlast = insert.length - 1;\r\n\r\n\t\tfor ( ; i <= last; i++ ) {\r\n\t\t\telems = i === last ? this : this.clone( true );\r\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\r\n\r\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\r\n\t\t\tpush.apply( ret, elems.get() );\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\n\r\n\r\nvar iframe,\r\n\telemdisplay = {\r\n\r\n\t\t// Support: Firefox\r\n\t\t// We have to pre-define these values for FF (#10227)\r\n\t\tHTML: \"block\",\r\n\t\tBODY: \"block\"\r\n\t};\r\n\r\n/**\r\n * Retrieve the actual display of a element\r\n * @param {String} name nodeName of the element\r\n * @param {Object} doc Document object\r\n */\r\n\r\n// Called only from within defaultDisplay\r\nfunction actualDisplay( name, doc ) {\r\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\r\n\r\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\r\n\r\n\t// We don't have any data stored on the element,\r\n\t// so use \"detach\" method as fast way to get rid of the element\r\n\telem.detach();\r\n\r\n\treturn display;\r\n}\r\n\r\n/**\r\n * Try to determine the default display value of an element\r\n * @param {String} nodeName\r\n */\r\nfunction defaultDisplay( nodeName ) {\r\n\tvar doc = document,\r\n\t\tdisplay = elemdisplay[ nodeName ];\r\n\r\n\tif ( !display ) {\r\n\t\tdisplay = actualDisplay( nodeName, doc );\r\n\r\n\t\t// If the simple way fails, read from inside an iframe\r\n\t\tif ( display === \"none\" || !display ) {\r\n\r\n\t\t\t// Use the already-created iframe if possible\r\n\t\t\tiframe = ( iframe || jQuery( \"';\r\n break;\r\n case 3:\r\n delete config.title;\r\n delete config.closeBtn;\r\n config.icon === -1 && (config.icon === 0);\r\n layer.closeAll('loading');\r\n break;\r\n case 4:\r\n conType || (config.content = [config.content, 'body']);\r\n config.follow = config.content[1];\r\n config.content = config.content[0] + '';\r\n delete config.title;\r\n config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];\r\n config.tipsMore || layer.closeAll('tips');\r\n break;\r\n }\r\n \r\n // 建立容器\r\n that.vessel(conType, function(html, titleHTML, moveElem){\r\n body.append(html[0]);\r\n conType ? function(){\r\n (config.type == 2 || config.type == 4) ? function(){\r\n $('body').append(html[1]);\r\n }() : function(){\r\n if(!content.parents('.'+doms[0])[0]){\r\n content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);\r\n $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);\r\n }\r\n }();\r\n }() : body.append(html[1]);\r\n $('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);\r\n \r\n that.layero = $('#'+ doms[0] + times);\r\n that.shadeo = $('#'+ doms.SHADE + times);\r\n \r\n config.scrollbar || ready.setScrollbar(times);\r\n }).auto(times);\r\n \r\n // 遮罩\r\n that.shadeo.css({\r\n 'background-color': config.shade[1] || '#000'\r\n ,'opacity': config.shade[0] || config.shade\r\n });\r\n\r\n config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);\r\n\r\n // 坐标自适应浏览器窗口尺寸\r\n config.type == 4 ? that.tips() : function(){\r\n that.offset()\r\n // 首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸\r\n parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){\r\n that.layero.css('visibility', 'hidden');\r\n layer.ready(function(){\r\n that.offset();\r\n that.layero.css('visibility', 'visible');\r\n });\r\n }();\r\n }();\r\n \r\n // 若是固定定位,则跟随 resize 事件来自适应坐标\r\n if(config.fixed){\r\n if(!ready.events.resize[that.index]){\r\n ready.events.resize[that.index] = function(){\r\n that.resize();\r\n };\r\n // 此处 resize 事件不会一直叠加,当关闭弹层时会移除该事件\r\n win.on('resize', ready.events.resize[that.index]);\r\n }\r\n }\r\n \r\n config.time <= 0 || setTimeout(function(){\r\n layer.close(that.index);\r\n }, config.time);\r\n that.move().callback();\r\n \r\n // 为兼容 jQuery3.0 的 css 动画影响元素尺寸计算\r\n if(doms.anim[config.anim]){\r\n var animClass = 'layer-anim '+ doms.anim[config.anim];\r\n that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){\r\n $(this).removeClass(animClass);\r\n });\r\n }\r\n \r\n // 记录配置信息\r\n that.layero.data('config', config);\r\n};\r\n\r\n// 当前实例的 resize 事件\r\nClass.pt.resize = function(){\r\n var that = this;\r\n var config = that.config;\r\n \r\n that.offset();\r\n (/^\\d+%$/.test(config.area[0]) || /^\\d+%$/.test(config.area[1])) && that.auto(that.index);\r\n config.type == 4 && that.tips();\r\n};\r\n\r\n// 自适应\r\nClass.pt.auto = function(index){\r\n var that = this, config = that.config, layero = $('#'+ doms[0] + index);\r\n \r\n if(config.area[0] === '' && config.maxWidth > 0){\r\n // 适配 ie7\r\n if(layer.ie && layer.ie < 8 && config.btn){\r\n layero.width(layero.innerWidth());\r\n }\r\n layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);\r\n }\r\n \r\n var area = [layero.innerWidth(), layero.innerHeight()];\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var setHeight = function(elem){\r\n elem = layero.find(elem);\r\n elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));\r\n };\r\n\r\n switch(config.type){\r\n case 2: \r\n setHeight('iframe');\r\n break;\r\n default:\r\n if(config.area[1] === ''){\r\n if(config.maxHeight > 0 && layero.outerHeight() > config.maxHeight){\r\n area[1] = config.maxHeight;\r\n setHeight('.'+doms[5]);\r\n } else if(config.fixed && area[1] >= win.height()){\r\n area[1] = win.height();\r\n setHeight('.'+doms[5]);\r\n }\r\n } else {\r\n setHeight('.'+doms[5]);\r\n }\r\n break;\r\n }\r\n \r\n return that;\r\n};\r\n\r\n// 计算坐标\r\nClass.pt.offset = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var area = [layero.outerWidth(), layero.outerHeight()];\r\n var type = typeof config.offset === 'object';\r\n that.offsetTop = (win.height() - area[1])/2;\r\n that.offsetLeft = (win.width() - area[0])/2;\r\n \r\n if(type){\r\n that.offsetTop = config.offset[0];\r\n that.offsetLeft = config.offset[1]||that.offsetLeft;\r\n } else if(config.offset !== 'auto'){\r\n \r\n if(config.offset === 't'){ // 上\r\n that.offsetTop = 0;\r\n } else if(config.offset === 'r'){ // 右\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'b'){ // 下\r\n that.offsetTop = win.height() - area[1];\r\n } else if(config.offset === 'l'){ // 左\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lt'){ // 左上\r\n that.offsetTop = 0;\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lb'){ // 左下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'rt'){ // 右上\r\n that.offsetTop = 0;\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'rb'){ // 右下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = win.width() - area[0];\r\n } else {\r\n that.offsetTop = config.offset;\r\n }\r\n \r\n }\r\n \r\n if(!config.fixed){\r\n that.offsetTop = /%$/.test(that.offsetTop) ? \r\n win.height()*parseFloat(that.offsetTop)/100\r\n : parseFloat(that.offsetTop);\r\n that.offsetLeft = /%$/.test(that.offsetLeft) ? \r\n win.width()*parseFloat(that.offsetLeft)/100\r\n : parseFloat(that.offsetLeft);\r\n that.offsetTop += win.scrollTop();\r\n that.offsetLeft += win.scrollLeft();\r\n }\r\n \r\n // 最小化窗口时的自适应\r\n if(layero.data('maxminStatus') === 'min'){\r\n that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);\r\n that.offsetLeft = layero.css('left');\r\n }\r\n\r\n // 设置坐标\r\n layero.css({\r\n top: that.offsetTop, \r\n left: that.offsetLeft\r\n });\r\n};\r\n\r\n// Tips\r\nClass.pt.tips = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);\r\n if(!follow[0]) follow = $('body');\r\n var goal = {\r\n width: follow.outerWidth(),\r\n height: follow.outerHeight(),\r\n top: follow.offset().top,\r\n left: follow.offset().left\r\n }, tipsG = layero.find('.layui-layer-TipsG');\r\n \r\n var guide = config.tips[0];\r\n config.tips[1] || tipsG.remove();\r\n \r\n goal.autoLeft = function(){\r\n if(goal.left + layArea[0] - win.width() > 0){\r\n goal.tipLeft = goal.left + goal.width - layArea[0];\r\n tipsG.css({right: 12, left: 'auto'});\r\n } else {\r\n goal.tipLeft = goal.left;\r\n }\r\n };\r\n \r\n // 辨别 tips 的方位\r\n // 21 为箭头大小 8*2 + 箭头相对父元素的top偏移 5\r\n goal.where = [function(){ // 上 \r\n goal.autoLeft();\r\n goal.tipTop = goal.top - layArea[1] - 10;\r\n tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);\r\n }, function(){ // 右\r\n goal.tipLeft = goal.left + goal.width + 10;\r\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\r\n goal.tipTop = Math.max(goal.tipTop, 0);\r\n tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]); \r\n }, function(){ // 下\r\n goal.autoLeft();\r\n goal.tipTop = goal.top + goal.height + 10;\r\n tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);\r\n }, function(){ // 左\r\n goal.tipLeft = goal.left - layArea[0] - 10;\r\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\r\n goal.tipTop = Math.max(goal.tipTop, 0);\r\n tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);\r\n }];\r\n goal.where[guide-1]();\r\n \r\n /* 8*2为小三角形占据的空间 */\r\n if(guide === 1){\r\n goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();\r\n } else if(guide === 2){\r\n win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()\r\n } else if(guide === 3){\r\n (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();\r\n } else if(guide === 4){\r\n layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()\r\n }\r\n\r\n layero.find('.'+doms[5]).css({\r\n 'background-color': config.tips[1], \r\n 'padding-right': (config.closeBtn ? '30px' : '')\r\n });\r\n layero.css({\r\n left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0), \r\n top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)\r\n });\r\n}\r\n\r\n// 拖拽层\r\nClass.pt.move = function(){\r\n var that = this;\r\n var config = that.config;\r\n var _DOC = $(document);\r\n var layero = that.layero;\r\n var DATA_NAME = ['LAY_MOVE_DICT', 'LAY_RESIZE_DICT'];\r\n var moveElem = layero.find(config.move);\r\n var resizeElem = layero.find('.layui-layer-resize');\r\n \r\n // 给指定元素添加拖动光标\r\n if(config.move) moveElem.css('cursor', 'move');\r\n \r\n // 按下拖动元素\r\n moveElem.on('mousedown', function(e){\r\n if (e.button) {return;} // 不是左键不处理\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.move){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [\r\n e.clientX - parseFloat(layero.css('left')),\r\n e.clientY - parseFloat(layero.css('top'))\r\n ];\r\n \r\n othis.data(DATA_NAME[0], dict);\r\n ready.eventMoveElem = othis;\r\n ready.moveElem.css('cursor', 'move').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 按下右下角拉伸\r\n resizeElem.on('mousedown', function(e){\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.resize){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [e.clientX, e.clientY];\r\n dict.index = that.index;\r\n dict.area = [\r\n layero.outerWidth()\r\n ,layero.outerHeight()\r\n ];\r\n \r\n othis.data(DATA_NAME[1], dict);\r\n ready.eventResizeElem = othis;\r\n ready.moveElem.css('cursor', 'se-resize').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 拖动元素,避免多次调用实例造成事件叠加\r\n if(ready.docEvent) return that;\r\n _DOC.on('mousemove', function(e){\r\n // 拖拽移动\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {}\r\n ,layero = dict.layero\r\n ,config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n var fixed = layero.css('position') === 'fixed';\r\n \r\n e.preventDefault();\r\n \r\n dict.stX = fixed ? 0 : win.scrollLeft();\r\n dict.stY = fixed ? 0 : win.scrollTop();\r\n\r\n // 控制元素不被拖出窗口外\r\n if(!config.moveOut){\r\n var setRig = win.width() - layero.outerWidth() + dict.stX;\r\n var setBot = win.height() - layero.outerHeight() + dict.stY; \r\n X < dict.stX && (X = dict.stX);\r\n X > setRig && (X = setRig); \r\n Y < dict.stY && (Y = dict.stY);\r\n Y > setBot && (Y = setBot);\r\n }\r\n \r\n // 拖动时跟随鼠标位置\r\n layero.css({\r\n left: X,\r\n top: Y\r\n });\r\n }\r\n \r\n // Resize\r\n if(ready.eventResizeElem){\r\n var dict = ready.eventResizeElem.data(DATA_NAME[1]) || {};\r\n var config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n \r\n e.preventDefault();\r\n \r\n // 拉伸宽高\r\n layer.style(dict.index, {\r\n width: dict.area[0] + X\r\n ,height: dict.area[1] + Y\r\n });\r\n \r\n config.resizing && config.resizing(dict.layero);\r\n }\r\n }).on('mouseup', function(e){\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {};\r\n var config = dict.config;\r\n \r\n ready.eventMoveElem.removeData(DATA_NAME[0]);\r\n delete ready.eventMoveElem;\r\n ready.moveElem.hide();\r\n config.moveEnd && config.moveEnd(dict.layero);\r\n }\r\n if(ready.eventResizeElem){\r\n ready.eventResizeElem.removeData(DATA_NAME[1]);\r\n delete ready.eventResizeElem;\r\n ready.moveElem.hide();\r\n }\r\n });\r\n \r\n ready.docEvent = true; // 已给 document 执行全局事件\r\n return that;\r\n};\r\n\r\nClass.pt.callback = function(){\r\n var that = this, layero = that.layero, config = that.config;\r\n that.openLayer();\r\n if(config.success){\r\n if(config.type == 2){\r\n layero.find('iframe').on('load', function(){\r\n config.success(layero, that.index, that);\r\n });\r\n } else {\r\n config.success(layero, that.index, that);\r\n }\r\n }\r\n layer.ie == 6 && that.IE6(layero);\r\n \r\n // 按钮\r\n layero.find('.'+ doms[6]).children('a').on('click', function(){\r\n var index = $(this).index();\r\n if(index === 0){\r\n if(config.yes){\r\n config.yes(that.index, layero, that);\r\n } else if(config['btn1']){\r\n config['btn1'](that.index, layero, that);\r\n } else {\r\n layer.close(that.index);\r\n }\r\n } else {\r\n var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n });\r\n \r\n // 取消\r\n function cancel(){\r\n var close = config.cancel && config.cancel(that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n \r\n // 右上角关闭回调\r\n layero.find('.'+ doms[7]).on('click', cancel);\r\n \r\n // 点遮罩关闭\r\n if(config.shadeClose){\r\n that.shadeo.on('click', function(){\r\n layer.close(that.index);\r\n });\r\n } \r\n \r\n // 最小化\r\n layero.find('.layui-layer-min').on('click', function(){\r\n var min = config.min && config.min(layero, that.index, that);\r\n min === false || layer.min(that.index, config);\r\n });\r\n \r\n // 全屏/还原\r\n layero.find('.layui-layer-max').on('click', function(){\r\n if($(this).hasClass('layui-layer-maxmin')){\r\n layer.restore(that.index);\r\n config.restore && config.restore(layero, that.index, that);\r\n } else {\r\n layer.full(that.index, config);\r\n setTimeout(function(){\r\n config.full && config.full(layero, that.index, that);\r\n }, 100);\r\n }\r\n });\r\n\r\n config.end && (ready.end[that.index] = config.end);\r\n};\r\n\r\n// for ie6 恢复 select\r\nready.reselect = function(){\r\n $.each($('select'), function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show(); \r\n }\r\n sthis = null;\r\n });\r\n}; \r\n\r\nClass.pt.IE6 = function(layero){\r\n // 隐藏select\r\n $('select').each(function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();\r\n }\r\n sthis = null;\r\n });\r\n};\r\n\r\n// 需依赖原型的对外方法\r\nClass.pt.openLayer = function(){\r\n var that = this;\r\n \r\n // 置顶当前窗口\r\n layer.zIndex = that.config.zIndex;\r\n layer.setTop = function(layero){\r\n var setZindex = function(){\r\n layer.zIndex++;\r\n layero.css('z-index', layer.zIndex + 1);\r\n };\r\n layer.zIndex = parseInt(layero[0].style.zIndex);\r\n layero.on('mousedown', setZindex);\r\n return layer.zIndex;\r\n };\r\n};\r\n\r\n// 记录宽高坐标,用于还原\r\nready.record = function(layero){\r\n if(!layero[0]) return window.console && console.error('index error');\r\n var area = [\r\n layero[0].style.width || layero.width(),\r\n layero[0].style.height || layero.height(),\r\n layero.position().top, \r\n layero.position().left + parseFloat(layero.css('margin-left'))\r\n ];\r\n layero.find('.layui-layer-max').addClass('layui-layer-maxmin');\r\n layero.attr({area: area});\r\n};\r\n\r\n// 设置页面滚动条\r\nready.setScrollbar = function(index){\r\n doms.html.css('overflow', 'hidden').attr('layer-full', index);\r\n};\r\n\r\n// 恢复页面滚动条\r\nready.restScrollbar = function(index){\r\n if(doms.html.attr('layer-full') == index){\r\n doms.html[0].style[doms.html[0].style.removeProperty \r\n ? 'removeProperty' \r\n : 'removeAttribute']('overflow');\r\n doms.html.removeAttr('layer-full');\r\n }\r\n};\r\n\r\n/** 内置成员 */\r\n\r\nwindow.layer = layer;\r\n\r\n// 获取子 iframe 的 DOM\r\nlayer.getChildFrame = function(selector, index){\r\n index = index || $('.'+doms[4]).attr('times');\r\n return $('#'+ doms[0] + index).find('iframe').contents().find(selector); \r\n};\r\n\r\n// 得到当前 iframe 层的索引,子 iframe 时使用\r\nlayer.getFrameIndex = function(name){\r\n return $('#'+ name).parents('.'+doms[4]).attr('times');\r\n};\r\n\r\n// iframe 层自适应宽高\r\nlayer.iframeAuto = function(index){\r\n if(!index) return;\r\n var heg = layer.getChildFrame('html', index).outerHeight();\r\n var layero = $('#'+ doms[0] + index);\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n layero.css({height: heg + titHeight + btnHeight});\r\n layero.find('iframe').css({height: heg});\r\n};\r\n\r\n// 重置 iframe url\r\nlayer.iframeSrc = function(index, url){\r\n $('#'+ doms[0] + index).find('iframe').attr('src', url);\r\n};\r\n\r\n// 设定层的样式\r\nlayer.style = function(index, options, limit){\r\n var layero = $('#'+ doms[0] + index);\r\n var contElem = layero.find('.layui-layer-content');\r\n var type = layero.attr('type');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft');\r\n \r\n // loading 和 tips 层不允许更改\r\n if(type === ready.type[3] || type === ready.type[4]){\r\n return;\r\n }\r\n \r\n if(!limit){\r\n if(parseFloat(options.width) <= 260){\r\n options.width = 260;\r\n }\r\n \r\n if(parseFloat(options.height) - titHeight - btnHeight <= 64){\r\n options.height = 64 + titHeight + btnHeight;\r\n }\r\n }\r\n layero.css(options);\r\n btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n \r\n if(type === ready.type[2]){\r\n layero.find('iframe').css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n });\r\n } else {\r\n contElem.css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n - parseFloat(contElem.css('padding-top'))\r\n - parseFloat(contElem.css('padding-bottom'))\r\n })\r\n }\r\n};\r\n\r\n// 最小化\r\nlayer.min = function(index, options){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'min') return; // 当前的状态是否已经是最小化\r\n if(maxminStatus === 'max') layer.restore(index); // 若当前为最大化,则先还原后再最小化\r\n\r\n layero.data('maxminStatus', 'min');\r\n options = options || layero.data('config') || {};\r\n\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var elemMin = layero.find('.layui-layer-min');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft'); // 最小化时的横坐标\r\n var hasMinLeft = typeof minLeft === 'string'; // 是否已经赋值过最小化坐标\r\n var left = hasMinLeft ? minLeft : (181*ready.minStackIndex)+'px';\r\n var position = layero.css('position');\r\n var minWidth = 180; // 最小化时的宽度\r\n var settings = {\r\n width: minWidth\r\n ,height: titHeight\r\n ,position: 'fixed'\r\n ,overflow: 'hidden'\r\n };\r\n\r\n ready.record(layero); // 记录当前尺寸、坐标,用于还原\r\n\r\n // 简易最小化补位\r\n if(ready.minStackArr.length > 0){\r\n left = ready.minStackArr[0];\r\n ready.minStackArr.shift();\r\n }\r\n\r\n // left 是否超出边界\r\n if(parseFloat(left) + minWidth > win.width()){\r\n left = win.width() - minWidth - function(){\r\n ready.minStackArr.edgeIndex = ready.minStackArr.edgeIndex || 0;\r\n return ready.minStackArr.edgeIndex += 3;\r\n }();\r\n if(left < 0) left = 0;\r\n }\r\n \r\n // 是否堆叠在左下角\r\n if(options.minStack){\r\n settings.left = left;\r\n settings.top = win.height() - titHeight;\r\n hasMinLeft || ready.minStackIndex++; // 若未赋值过最小化坐标,则最小化操作索引自增\r\n layero.attr('minLeft', left);\r\n }\r\n \r\n layero.attr('position', position);\r\n layer.style(index, settings, true);\r\n\r\n elemMin.hide();\r\n layero.attr('type') === 'page' && layero.find(doms[4]).hide();\r\n ready.restScrollbar(index);\r\n\r\n // 隐藏遮罩\r\n shadeo.hide();\r\n};\r\n\r\n// 还原\r\nlayer.restore = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var area = layero.attr('area').split(',');\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n\r\n layero.removeData('maxminStatus'); // 移除最大最小状态\r\n \r\n // 恢复原来尺寸\r\n layer.style(index, {\r\n width: area[0], // 数值或百分比\r\n height: area[1],\r\n top: parseFloat(area[2]),\r\n left: parseFloat(area[3]),\r\n position: layero.attr('position'),\r\n overflow: 'visible'\r\n }, true);\r\n \r\n layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');\r\n layero.find('.layui-layer-min').show();\r\n type === 'page' && layero.find(doms[4]).show();\r\n\r\n // 恢复页面滚动条弹层打开时的状态\r\n options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);\r\n \r\n // 恢复遮罩\r\n shadeo.show();\r\n // ready.events.resize[index](); // ?\r\n};\r\n\r\n// 全屏(最大化)\r\nlayer.full = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'max') return // 检查当前的状态是否已经是最大化\r\n if(maxminStatus === 'min') layer.restore(index); // 若当前为最小化,则先还原后再最大化\r\n\r\n layero.data('maxminStatus', 'max');\r\n ready.record(layero); // 记录当前尺寸、坐标\r\n\r\n if(!doms.html.attr('layer-full')){\r\n ready.setScrollbar(index);\r\n }\r\n\r\n setTimeout(function(){\r\n var isfix = layero.css('position') === 'fixed';\r\n layer.style(index, {\r\n top: isfix ? 0 : win.scrollTop(),\r\n left: isfix ? 0 : win.scrollLeft(),\r\n width: '100%',\r\n height: '100%'\r\n }, true);\r\n layero.find('.layui-layer-min').hide();\r\n }, 100);\r\n};\r\n\r\n// 改变 title\r\nlayer.title = function(name, index){\r\n var title = $('#'+ doms[0] + (index || layer.index)).find(doms[1]);\r\n title.html(name);\r\n};\r\n\r\n// 关闭 layer 总方法\r\nlayer.close = function(index, callback){\r\n var layero = function(){\r\n var closest = $('.'+ doms[0]).children('#'+ index).closest('.'+ doms[0]);\r\n return closest[0] ? (\r\n index = closest.attr('times'),\r\n closest\r\n ) : $('#'+ doms[0] + index)\r\n }();\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var hideOnClose = options.id && options.hideOnClose; // 是否关闭时移除弹层容器\r\n\r\n if(!layero[0]) return;\r\n\r\n // 关闭动画\r\n var closeAnim = ({\r\n slideDown: 'layer-anim-slide-down-out',\r\n slideLeft: 'layer-anim-slide-left-out',\r\n slideUp: 'layer-anim-slide-up-out',\r\n slideRight: 'layer-anim-slide-right-out'\r\n })[options.anim] || 'layer-anim-close';\r\n\r\n // 移除主容器\r\n var remove = function(){\r\n var WRAP = 'layui-layer-wrap';\r\n\r\n // 是否关闭时隐藏弹层容器\r\n if(hideOnClose){\r\n layero.removeClass('layer-anim '+ closeAnim);\r\n return layero.hide();\r\n }\r\n\r\n // 是否为页面捕获层\r\n if(type === ready.type[1] && layero.attr('conType') === 'object'){\r\n layero.children(':not(.'+ doms[5] +')').remove();\r\n var wrap = layero.find('.'+WRAP);\r\n for(var i = 0; i < 2; i++){\r\n wrap.unwrap();\r\n }\r\n wrap.css('display', wrap.data('display')).removeClass(WRAP);\r\n } else {\r\n // 低版本 IE 回收 iframe\r\n if(type === ready.type[2]){\r\n try {\r\n var iframe = $('#'+ doms[4] + index)[0];\r\n iframe.contentWindow.document.write('');\r\n iframe.contentWindow.close();\r\n layero.find('.'+doms[5])[0].removeChild(iframe);\r\n } catch(e){}\r\n }\r\n layero[0].innerHTML = '';\r\n layero.remove();\r\n }\r\n\r\n typeof ready.end[index] === 'function' && ready.end[index]();\r\n delete ready.end[index];\r\n typeof callback === 'function' && callback();\r\n\r\n // 移除 reisze 事件\r\n if(ready.events.resize[index]){\r\n win.off('resize', ready.events.resize[index]);\r\n delete ready.events.resize[index];\r\n }\r\n };\r\n // 移除遮罩\r\n var removeShade = (function fn(){\r\n $('#'+ doms.SHADE + index)[\r\n hideOnClose ? 'hide' : 'remove'\r\n ]();\r\n })();\r\n \r\n // 是否允许关闭动画\r\n if(options.isOutAnim){\r\n layero.addClass('layer-anim '+ closeAnim);\r\n }\r\n \r\n layer.ie == 6 && ready.reselect();\r\n ready.restScrollbar(index); \r\n \r\n // 记住被关闭层的最小化堆叠坐标\r\n if(typeof layero.attr('minLeft') === 'string'){\r\n ready.minStackIndex--;\r\n ready.minStackArr.push(layero.attr('minLeft'));\r\n }\r\n \r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n remove()\r\n } else {\r\n setTimeout(function(){\r\n remove();\r\n }, 200);\r\n }\r\n};\r\n\r\n// 关闭所有层\r\nlayer.closeAll = function(type, callback){\r\n if(typeof type === 'function'){\r\n callback = type;\r\n type = null;\r\n }\r\n var domsElem = $('.'+doms[0]);\r\n $.each(domsElem, function(_index){\r\n var othis = $(this);\r\n var is = type ? (othis.attr('type') === type) : 1;\r\n is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);\r\n is = null;\r\n });\r\n if(domsElem.length === 0) typeof callback === 'function' && callback();\r\n};\r\n\r\n// 根据弹层类型关闭最近打开的层\r\nlayer.closeLast = function(type, callback){\r\n type = type || 'page';\r\n layer.close($('.layui-layer-'+ type +':last').attr(\"times\"), callback);\r\n};\r\n\r\n\r\n/*\r\n * 拓展模块,layui 开始合并在一起\r\n */\r\n\r\n\r\nvar cache = layer.cache || {};\r\nvar skin = function(type){\r\n return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');\r\n}; \r\n \r\n// 仿系统 prompt\r\nlayer.prompt = function(options, yes){\r\n var style = '', placeholder = '';\r\n options = options || {};\r\n \r\n if(typeof options === 'function') yes = options;\r\n \r\n if(options.area){\r\n var area = options.area;\r\n style = 'style=\"width: '+ area[0] +'; height: '+ area[1] + ';\"';\r\n delete options.area;\r\n }\r\n if (options.placeholder) {\r\n placeholder = ' placeholder=\"' + options.placeholder + '\"';\r\n }\r\n var prompt, content = options.formType == 2 ? '' : function () {\r\n return '';\r\n }();\r\n \r\n var success = options.success;\r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n btn: ['确定','取消'],\r\n content: content,\r\n skin: 'layui-layer-prompt' + skin('prompt'),\r\n maxWidth: win.width(),\r\n success: function(layero){\r\n prompt = layero.find('.layui-layer-input');\r\n prompt.val(options.value || '').focus();\r\n typeof success === 'function' && success(layero);\r\n },\r\n resize: false,\r\n yes: function(index){\r\n var value = prompt.val();\r\n if(value.length > (options.maxlength||500)) {\r\n layer.tips('最多输入'+ (options.maxlength || 500) +'个字数', prompt, {tips: 1});\r\n } else {\r\n yes && yes(value, index, prompt);\r\n }\r\n }\r\n }, options));\r\n};\r\n\r\n// tab 层\r\nlayer.tab = function(options){\r\n options = options || {};\r\n \r\n var tab = options.tab || {};\r\n var THIS = 'layui-this';\r\n var success = options.success;\r\n \r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n skin: 'layui-layer-tab' + skin('tab'),\r\n resize: false,\r\n title: function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = ''+ tab[0].title +'';\r\n for(; ii < len; ii++){\r\n str += ''+ tab[ii].title +'';\r\n }\r\n }\r\n return str;\r\n }(),\r\n content: '
              '+ function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = '
            • '+ (tab[0].content || 'no content') +'
            • ';\r\n for(; ii < len; ii++){\r\n str += '
            • '+ (tab[ii].content || 'no content') +'
            • ';\r\n }\r\n }\r\n return str;\r\n }() +'
            ',\r\n success: function(layero){\r\n var btn = layero.find('.layui-layer-title').children();\r\n var main = layero.find('.layui-layer-tabmain').children();\r\n btn.on('mousedown', function(e){\r\n e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;\r\n var othis = $(this), index = othis.index();\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n main.eq(index).show().siblings().hide();\r\n typeof options.change === 'function' && options.change(index);\r\n });\r\n typeof success === 'function' && success(layero);\r\n }\r\n }, options));\r\n};\r\n\r\n// 图片层\r\nlayer.photos = function(options, loop, key){\r\n var dict = {};\r\n\r\n // 默认属性\r\n options = $.extend(true, {\r\n toolbar: true,\r\n footer: true\r\n }, options);\r\n\r\n if(!options.photos) return;\r\n \r\n // 若 photos 并非选择器或 jQuery 对象,则为普通 object\r\n var isObject = !(typeof options.photos === 'string' || options.photos instanceof $);\r\n var photos = isObject ? options.photos : {};\r\n var data = photos.data || [];\r\n var start = photos.start || 0;\r\n var success = options.success;\r\n \r\n dict.imgIndex = (start|0) + 1;\r\n options.img = options.img || 'img';\r\n delete options.success;\r\n \r\n // 若 options.photos 不是一个对象\r\n if(!isObject){ // 页面直接获取\r\n var parent = $(options.photos), pushData = function(){\r\n data = [];\r\n parent.find(options.img).each(function(index){\r\n var othis = $(this);\r\n othis.attr('layer-index', index);\r\n data.push({\r\n alt: othis.attr('alt'),\r\n pid: othis.attr('layer-pid'),\r\n src: othis.attr('lay-src') || othis.attr('layer-src') || othis.attr('src'),\r\n thumb: othis.attr('src')\r\n });\r\n });\r\n };\r\n \r\n pushData();\r\n \r\n if (data.length === 0) return;\r\n \r\n loop || parent.on('click', options.img, function(){\r\n pushData();\r\n var othis = $(this), index = othis.attr('layer-index'); \r\n layer.photos($.extend(options, {\r\n photos: {\r\n start: index,\r\n data: data,\r\n tab: options.tab\r\n },\r\n full: options.full\r\n }), true);\r\n });\r\n \r\n // 不直接弹出\r\n if (!loop) return;\r\n } else if (data.length === 0){\r\n return layer.msg('没有图片');\r\n }\r\n \r\n // 上一张\r\n dict.imgprev = function(key){\r\n dict.imgIndex--;\r\n if(dict.imgIndex < 1){\r\n dict.imgIndex = data.length;\r\n }\r\n dict.tabimg(key);\r\n };\r\n \r\n // 下一张\r\n dict.imgnext = function(key,errorMsg){\r\n dict.imgIndex++;\r\n if(dict.imgIndex > data.length){\r\n dict.imgIndex = 1;\r\n if (errorMsg) {return}\r\n }\r\n dict.tabimg(key)\r\n };\r\n \r\n // 方向键\r\n dict.keyup = function(event){\r\n if(!dict.end){\r\n var code = event.keyCode;\r\n event.preventDefault();\r\n if(code === 37){\r\n dict.imgprev(true);\r\n } else if(code === 39) {\r\n dict.imgnext(true);\r\n } else if(code === 27) {\r\n layer.close(dict.index);\r\n }\r\n }\r\n }\r\n \r\n // 切换\r\n dict.tabimg = function(key){\r\n if(data.length <= 1) return;\r\n photos.start = dict.imgIndex - 1;\r\n layer.close(dict.index);\r\n return layer.photos(options, true, key);\r\n }\r\n\r\n dict.isNumber = function (n) {\r\n return typeof n === 'number' && !isNaN(n);\r\n }\r\n\r\n dict.image = {};\r\n\r\n dict.getTransform = function(opts){\r\n var transforms = [];\r\n var rotate = opts.rotate;\r\n var scaleX = opts.scaleX;\r\n var scale = opts.scale;\r\n\r\n if (dict.isNumber(rotate) && rotate !== 0) {\r\n transforms.push('rotate(' + rotate + 'deg)');\r\n }\r\n\r\n if (dict.isNumber(scaleX) && scaleX !== 1) {\r\n transforms.push('scaleX(' + scaleX + ')');\r\n }\r\n\r\n if (dict.isNumber(scale)) {\r\n transforms.push('scale(' + scale + ')');\r\n }\r\n\r\n return transforms.length ? transforms.join(' ') : 'none';\r\n }\r\n \r\n // 一些动作\r\n dict.event = function(layero, index, that){\r\n // 上一张\r\n dict.main.find('.layui-layer-photos-prev').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgprev(true);\r\n }); \r\n \r\n // 下一张\r\n dict.main.find('.layui-layer-photos-next').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgnext(true);\r\n });\r\n \r\n $(document).on('keyup', dict.keyup);\r\n\r\n // 头部工具栏事件\r\n layero.off('click').on('click','*[toolbar-event]', function () {\r\n var othis = $(this);\r\n var event = othis.attr('toolbar-event');\r\n switch (event) {\r\n case 'rotate':\r\n dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'scalex':\r\n dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'zoom':\r\n var ratio = Number(othis.attr('data-option'));\r\n dict.image.scale = (dict.image.scale || 1) + ratio;\r\n // 缩小状态最小值\r\n if (ratio < 0 && dict.image.scale < 0 - ratio) {\r\n dict.image.scale = 0 - ratio;\r\n }\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'reset':\r\n dict.image.scaleX = 1;\r\n dict.image.scale = 1;\r\n dict.image.rotate = 0;\r\n dict.imgElem.css({\r\n transform: 'none'\r\n });\r\n break;\r\n case 'close':\r\n layer.close(index);\r\n break;\r\n }\r\n that.offset();\r\n that.auto(index);\r\n });\r\n \r\n // 鼠标滚轮缩放图片事件\r\n dict.main.on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var zoomElem = dict.main.find('[toolbar-event=\"zoom\"]');\r\n if (delta > 0) {\r\n zoomElem.eq(0).trigger('click');\r\n } else {\r\n zoomElem.eq(1).trigger('click');\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n // 滑动切换图片事件,仅限 layui 中 \r\n if(window.layui || window.lay){\r\n var lay = window.layui.lay || window.lay;\r\n var touchEndCallback = function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var speed = state.distanceX / duration;\r\n var threshold = win.width() / 3;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(state.distanceX) > threshold;\r\n if(!shouldSwipe) return;\r\n if(state.direction === 'left'){\r\n dict.imgnext(true);\r\n }else if(state.direction === 'right'){\r\n dict.imgprev(true);\r\n }\r\n }\r\n\r\n $.each([that.shadeo, dict.main], function(i, elem){\r\n lay.touchSwipe(elem, {\r\n onTouchEnd: touchEndCallback\r\n })\r\n })\r\n }\r\n };\r\n \r\n // 图片预加载\r\n function loadImage(url, callback, error) { \r\n var img = new Image();\r\n img.src = url; \r\n if(img.complete){\r\n return callback(img);\r\n }\r\n img.onload = function(){\r\n img.onload = null;\r\n callback(img);\r\n };\r\n img.onerror = function(e){\r\n img.onerror = null;\r\n error(e);\r\n }; \r\n }\r\n \r\n dict.loadi = layer.load(1, {\r\n shade: 'shade' in options ? false : 0.9,\r\n scrollbar: false\r\n });\r\n\r\n loadImage(data[start].src, function(img){\r\n layer.close(dict.loadi);\r\n \r\n var alt = data[start].alt || '';\r\n\r\n // 切换图片时不出现动画\r\n if(key) options.anim = -1;\r\n \r\n // 弹出图片层\r\n dict.index = layer.open($.extend({\r\n type: 1,\r\n id: 'layui-layer-photos',\r\n area: function(){\r\n var imgarea = [img.width, img.height];\r\n var winarea = [$(window).width() - 100, $(window).height() - 100];\r\n \r\n // 若实际图片的宽或者高比 屏幕大(那么进行缩放)\r\n if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){\r\n var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];// 取宽度缩放比例、高度缩放比例\r\n if(wh[0] > wh[1]){// 取缩放比例最大的进行缩放\r\n imgarea[0] = imgarea[0]/wh[0];\r\n imgarea[1] = imgarea[1]/wh[0];\r\n } else if(wh[0] < wh[1]){\r\n imgarea[0] = imgarea[0]/wh[1];\r\n imgarea[1] = imgarea[1]/wh[1];\r\n }\r\n }\r\n\r\n return [imgarea[0]+'px', imgarea[1]+'px']; \r\n }(),\r\n title: false,\r\n shade: 0.9,\r\n shadeClose: true,\r\n closeBtn: false,\r\n move: '.layer-layer-photos-main img',\r\n moveType: 1,\r\n scrollbar: false,\r\n moveOut: true,\r\n anim: 5,\r\n isOutAnim: false,\r\n skin: 'layui-layer-photos' + skin('photos'),\r\n content: '
            '\r\n + '\"'+'\r\n + function(){\r\n var arr = ['
            '];\r\n\r\n // 左右箭头翻页\r\n if (data.length > 1) {\r\n arr.push(['
            ',\r\n '',\r\n '',\r\n '
            '].join(''));\r\n }\r\n\r\n // 头部工具栏\r\n if (options.toolbar) {\r\n arr.push([\r\n '
            ',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '
            '\r\n ].join(''));\r\n }\r\n\r\n // 底部栏\r\n if (options.footer) {\r\n arr.push(['
            ',\r\n '

            '+ alt +'

            ',\r\n ''+ dict.imgIndex +' / '+ data.length +'',\r\n '查看原图',\r\n '
            '].join(''));\r\n }\r\n\r\n arr.push('
            ');\r\n return arr.join('');\r\n }()\r\n +'
            ',\r\n success: function(layero, index, that){\r\n dict.main = layero.find('.layer-layer-photos-main');\r\n dict.footer = layero.find('.layui-layer-photos-footer');\r\n dict.imgElem = dict.main.children('img');\r\n dict.event(layero, index, that);\r\n options.tab && options.tab(data[start], layero);\r\n typeof success === 'function' && success(layero);\r\n }, end: function(){\r\n dict.end = true;\r\n $(document).off('keyup', dict.keyup);\r\n }\r\n }, options));\r\n }, function(){\r\n layer.close(dict.loadi);\r\n layer.msg('当前图片地址异常
            是否继续查看下一张?', {\r\n time: 30000, \r\n btn: ['下一张', '不看了'], \r\n yes: function(){\r\n data.length > 1 && dict.imgnext(true,true);\r\n }\r\n });\r\n });\r\n};\r\n\r\n// 主入口\r\nready.run = function(_$){\r\n $ = _$;\r\n win = $(window);\r\n \r\n // 移动端兼容性处理\r\n // https://gitee.com/layui/layui/issues/I81WGC\r\n // https://github.com/jquery/jquery/issues/1729\r\n var agent = navigator.userAgent.toLowerCase();\r\n var isMobile = /android|iphone|ipod|ipad|ios/.test(agent)\r\n var _win = $(window);\r\n if(isMobile){\r\n $.each({Height: \"height\", Width: \"width\"}, function(propSuffix, funcName){\r\n var propName = 'inner' + propSuffix;\r\n win[funcName] = function(){\r\n return propName in window \r\n ? window[propName]\r\n : _win[funcName]()\r\n }\r\n })\r\n }\r\n doms.html = $('html');\r\n layer.open = function(deliver){\r\n var o = new Class(deliver);\r\n return o.index;\r\n };\r\n};\r\n\r\n// 加载方式\r\nwindow.layui && layui.define ? (\r\n layer.ready(),\r\n layui.define(['jquery','lay'], function(exports){ // layui\r\n layer.path = layui.cache.dir;\r\n ready.run(layui.$);\r\n\r\n // export api\r\n window.layer = layer;\r\n exports('layer', layer);\r\n })\r\n) : (\r\n (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ // requirejs\r\n ready.run(window.jQuery);\r\n return layer;\r\n }) : function(){ // 普通 script 标签引入\r\n layer.ready();\r\n ready.run(window.jQuery);\r\n }()\r\n);\r\n\r\n}(window);\r\n","/**\r\n * util 工具组件\r\n */\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n\r\n // 外部接口\r\n var util = {\r\n // 固定块\r\n fixbar: function(options){\r\n var ELEM = 'layui-fixbar';\r\n var $doc = $(document);\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n target: 'body', // fixbar 的插入目标选择器\r\n bars: [], // bar 信息\r\n \"default\": true, // 是否显示默认 bar\r\n margin: 160, // 出现 top bar 的滚动条高度临界值\r\n duration: 320 // top bar 等动画时长(毫秒)\r\n }, options);\r\n\r\n // 目标元素对象\r\n var $target = $(options.target);\r\n\r\n // 滚动条所在元素对象\r\n var $scroll = options.scroll\r\n ? $(options.scroll)\r\n : $(options.target === 'body' ? $doc : $target)\r\n\r\n // 是否提供默认图标\r\n if(options['default']){\r\n // 兼容旧版本的一些属性\r\n if(options.bar1){\r\n options.bars.push({\r\n type: 'bar1',\r\n icon: 'layui-icon-chat'\r\n });\r\n }\r\n if(options.bar2){\r\n options.bars.push({\r\n type: 'bar2',\r\n icon: 'layui-icon-help'\r\n });\r\n }\r\n // 默认 top bar\r\n options.bars.push({\r\n type: 'top',\r\n icon: 'layui-icon-top'\r\n });\r\n }\r\n\r\n var elem = $('
              ').addClass(ELEM);\r\n var elemTopBar;\r\n\r\n // 遍历生成 bars 节点\r\n layui.each(options.bars, function(i, item){\r\n var elemBar = $('
            • ');\r\n\r\n // 设置 bar 相关属性\r\n elemBar.addClass(item.icon).attr({\r\n 'lay-type': item.type,\r\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\r\n }).html(item.content);\r\n\r\n // bar 点击事件\r\n elemBar.on('click', function(){\r\n var type = $(this).attr('lay-type');\r\n if(type === 'top'){\r\n (\r\n options.target === 'body'\r\n ? $('html,body')\r\n : $scroll\r\n ).animate({\r\n scrollTop : 0\r\n }, options.duration);\r\n }\r\n typeof options.click === 'function' && options.click.call(this, type);\r\n });\r\n\r\n // 自定义任意事件\r\n if(layui.type(options.on) === 'object'){\r\n layui.each(options.on, function(eventName, callback){\r\n elemBar.on(eventName, function(){\r\n var type = $(this).attr('lay-type');\r\n typeof callback === 'function' && callback.call(this, type);\r\n });\r\n })\r\n }\r\n\r\n // 获得 top bar 节点\r\n if(item.type === 'top'){\r\n elemBar.addClass('layui-fixbar-top');\r\n elemTopBar = elemBar;\r\n }\r\n\r\n elem.append(elemBar); // 插入 bar 节点\r\n });\r\n\r\n // 若目标元素已存在 fixbar,则移除旧的节点\r\n $target.find('.'+ ELEM).remove();\r\n\r\n // 向目标元素插入 fixbar 节点\r\n typeof options.css === 'object' && elem.css(options.css);\r\n $target.append(elem);\r\n\r\n // top bar 的显示隐藏\r\n if(elemTopBar){\r\n var lock;\r\n var setTopBar = (function setTopBar(){\r\n var top = $scroll.scrollTop();\r\n if(top >= options.margin){\r\n lock || (elemTopBar.show(), lock = 1);\r\n } else {\r\n lock && (elemTopBar.hide(), lock = 0);\r\n }\r\n return setTopBar;\r\n })();\r\n }\r\n\r\n // 根据 scrollbar 设置 fixbar 相关状态\r\n var timer;\r\n $scroll.on('scroll', function(){\r\n if(!setTopBar) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setTopBar();\r\n }, 100);\r\n });\r\n },\r\n\r\n // 倒计时\r\n countdown: function(options){\r\n var that = this;\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n date: new Date(),\r\n now: new Date()\r\n }, options);\r\n\r\n // 兼容旧版参数\r\n var args = arguments;\r\n if(args.length > 1){\r\n options.date = new Date(args[0]);\r\n options.now = new Date(args[1]);\r\n options.clock = args[2];\r\n }\r\n\r\n // 实例对象\r\n var inst = {\r\n options: options,\r\n clear: function(){ // 清除计时器\r\n clearTimeout(inst.timer);\r\n },\r\n reload: function(opts){ // 重置倒计时\r\n this.clear();\r\n $.extend(true, this.options, {\r\n now: new Date()\r\n }, opts);\r\n count();\r\n }\r\n };\r\n\r\n typeof options.ready === 'function' && options.ready();\r\n\r\n // 计算倒计时\r\n var count = (function fn(){\r\n var date = new Date(options.date);\r\n var now = new Date(options.now);\r\n var countTime = function(time){\r\n return time > 0 ? time : 0;\r\n }(date.getTime() - now.getTime());\r\n var result = {\r\n d: Math.floor(countTime/(1000*60*60*24)), // 天\r\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\r\n m: Math.floor(countTime/(1000*60)) % 60, // 分\r\n s: Math.floor(countTime/1000) % 60 // 秒\r\n };\r\n var next = function(){\r\n now.setTime(now.getTime() + 1000);\r\n options.now = now;\r\n count();\r\n };\r\n\r\n // 兼容旧版返回值\r\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\r\n\r\n // 计时 - 以秒间隔\r\n inst.timer = setTimeout(next, 1000);\r\n typeof options.clock === 'function' && options.clock(result, inst);\r\n\r\n // 计时完成\r\n if(countTime <= 0){\r\n clearTimeout(inst.timer);\r\n typeof options.done === 'function' && options.done(result, inst);\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n return inst;\r\n },\r\n\r\n // 某个时间在当前时间的多久前\r\n timeAgo: function(time, onlyDate){\r\n var that = this;\r\n var arr = [[], []];\r\n var stamp = new Date().getTime() - new Date(time).getTime();\r\n\r\n // 返回具体日期\r\n if(stamp > 1000*60*60*24*31){\r\n stamp = new Date(time);\r\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\r\n arr[0][1] = that.digit(stamp.getMonth() + 1);\r\n arr[0][2] = that.digit(stamp.getDate());\r\n\r\n // 是否输出时间\r\n if(!onlyDate){\r\n arr[1][0] = that.digit(stamp.getHours());\r\n arr[1][1] = that.digit(stamp.getMinutes());\r\n arr[1][2] = that.digit(stamp.getSeconds());\r\n }\r\n return arr[0].join('-') + ' ' + arr[1].join(':');\r\n }\r\n\r\n // 30 天以内,返回「多久前」\r\n if(stamp >= 1000*60*60*24){\r\n return ((stamp/1000/60/60/24)|0) + ' 天前';\r\n } else if(stamp >= 1000*60*60){\r\n return ((stamp/1000/60/60)|0) + ' 小时前';\r\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\r\n return ((stamp/1000/60)|0) + ' 分钟前';\r\n } else if(stamp < 0){\r\n return '未来';\r\n } else {\r\n return '刚刚';\r\n }\r\n },\r\n\r\n // 数字前置补零\r\n digit: function(num, length){\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + (num|0) : num;\r\n },\r\n\r\n // 转化为日期格式字符\r\n toDateString: function(time, format, options){\r\n // 若 null 或空字符,则返回空字符\r\n if(time === null || time === '') return '';\r\n\r\n // 引用自 dayjs\r\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\r\n var REGEX_FORMAT = /\\[([^\\]]+)]|y{1,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|SSS/g;\r\n var that = this;\r\n var date = new Date(function(){\r\n if(!time) return;\r\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\r\n }() || new Date())\r\n\r\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\r\n\r\n var years = date.getFullYear();\r\n var month = date.getMonth();\r\n var days = date.getDate();\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var seconds = date.getSeconds();\r\n var milliseconds = date.getMilliseconds();\r\n\r\n var defaultMeridiem = function(hours, minutes){\r\n var hm = hours * 100 + minutes;\r\n if (hm < 600) {\r\n return '凌晨';\r\n } else if (hm < 900) {\r\n return '早上';\r\n } else if (hm < 1100) {\r\n return '上午';\r\n } else if (hm < 1300) {\r\n return '中午';\r\n } else if (hm < 1800) {\r\n return '下午';\r\n }\r\n return '晚上';\r\n };\r\n\r\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\r\n\r\n var matches = {\r\n yy: function(){return String(years).slice(-2);},\r\n yyyy: function(){return that.digit(years, 4);},\r\n M: function(){return String(month + 1);},\r\n MM: function(){return that.digit(month + 1);},\r\n d: function(){return String(days);},\r\n dd: function(){return that.digit(days);},\r\n H: function(){return String(hours);},\r\n HH: function(){return that.digit(hours);},\r\n h: function(){return String(hours % 12 || 12);},\r\n hh: function(){return that.digit(hours % 12 || 12);},\r\n A: function(){return meridiem(hours, minutes);},\r\n m: function(){return String(minutes);},\r\n mm: function(){return that.digit(minutes);},\r\n s: function(){return String(seconds);},\r\n ss: function(){return that.digit(seconds);},\r\n SSS: function(){return that.digit(milliseconds, 3);}\r\n }\r\n\r\n format = format || 'yyyy-MM-dd HH:mm:ss';\r\n\r\n return format.replace(REGEX_FORMAT, function(match, $1) {\r\n return $1 || (matches[match] && matches[match]()) || match;\r\n });\r\n },\r\n\r\n // 转义 html\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n },\r\n\r\n // 还原转义的 html\r\n unescape: function(html){\r\n if(html === undefined || html === null) html = '';\r\n html += '';\r\n\r\n return html.replace(/\\&/g, '&')\r\n .replace(/\\</g, '<').replace(/\\>/g, '>')\r\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\r\n },\r\n\r\n // 打开新窗口\r\n openWin: function(options){\r\n var win;\r\n options = options || {};\r\n win = options.window || window.open((options.url || ''), options.target, options.specs);\r\n if(options.url) return;\r\n win.document.open('text/html', 'replace');\r\n win.document.write(options.content || '');\r\n win.document.close();\r\n },\r\n\r\n // 让指定的元素保持在可视区域\r\n toVisibleArea: function(options){\r\n options = $.extend({\r\n margin: 160, // 触发动作的边界值\r\n duration: 200, // 动画持续毫秒数\r\n type: 'y' // 触发方向,x 水平、y 垂直\r\n }, options);\r\n\r\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\r\n\r\n var scrollElem = options.scrollElem // 滚动元素\r\n var thisElem = options.thisElem // 目标元素\r\n var vertical = options.type === 'y' // 是否垂直方向\r\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\r\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\r\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\r\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\r\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\r\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\r\n var obj = {};\r\n\r\n // 边界满足条件\r\n if(thisOffset > size - options.margin || thisOffset < options.margin){\r\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\r\n scrollElem.animate(obj, options.duration);\r\n }\r\n },\r\n\r\n /**\r\n * 批量事件\r\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\r\n * @param {Object.} events - 事件集合\r\n * @param {Object} [options] - 参数的更多选项\r\n * @param {(string|HTMLElement|JQuery)} [options.elem=\"body\"] - 触发事件的委托元素\r\n * @param {string} [options.trigger=\"click\"] - 事件触发的方式\r\n * @returns {Object} 返回当前 events 参数设置的事件集合\r\n */\r\n on: function(attr, events, options) {\r\n // 若参数一为 object 类型,则为事件集,且省略 attr\r\n if (typeof attr === 'object') {\r\n options = events || {};\r\n events = attr;\r\n attr = options.attr || 'lay-on'; // 默认属性名\r\n }\r\n\r\n // 更多选项\r\n options = $.extend({\r\n elem: 'body',\r\n trigger: 'click'\r\n }, typeof options === 'object' ? options : {\r\n trigger: options // 兼容旧版\r\n });\r\n\r\n var elem = options.elem = $(options.elem);\r\n var attrSelector = '['+ attr +']';\r\n var DATANAME = 'UTIL_ON_DATA'; // 缓存在委托元素上的 data-* 属性名\r\n\r\n if (!elem[0]) return; // 若委托元素不存在\r\n\r\n // 初始化 data 默认值,以委托元素为存储单元\r\n if (!elem.data(DATANAME)) {\r\n elem.data(DATANAME, {\r\n events: {},\r\n callbacks: {}\r\n });\r\n }\r\n\r\n // 读取 data 缓存\r\n var dataCache = elem.data(DATANAME);\r\n var callbacks = dataCache.callbacks;\r\n\r\n // 根据 attr 记录事件集合\r\n events = dataCache.events[attr] = $.extend(true, dataCache.events[attr], events);\r\n\r\n // 清除事件委托,避免重复绑定\r\n elem.off(options.trigger, attrSelector, callbacks[attr]);\r\n\r\n // 绑定事件委托\r\n elem.on(\r\n options.trigger,\r\n attrSelector,\r\n callbacks[attr] = function(e) {\r\n var othis = $(this);\r\n var key = othis.attr(attr);\r\n typeof events[key] === 'function' && events[key].call(this, othis, e);\r\n }\r\n );\r\n\r\n return events;\r\n }\r\n };\r\n\r\n // 兼容旧版\r\n util.event = util.on;\r\n\r\n // 输出接口\r\n exports('util', util);\r\n});\r\n","/**\r\n * dropdown \r\n * 下拉菜单组件\r\n */\r\n\r\nlayui.define(['jquery', 'laytpl', 'lay', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'touchstart' : 'mousedown');\r\n \r\n // 模块名\r\n var MOD_NAME = 'dropdown';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var dropdown = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'child'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n reloadData: function(options){\r\n dropdown.reloadData(id, options);\r\n },\r\n close: function () {\r\n that.remove()\r\n }\r\n }\r\n };\r\n\r\n // 字符常量\r\n var STR_ELEM = 'layui-dropdown';\r\n var STR_HIDE = 'layui-hide';\r\n var STR_DISABLED = 'layui-disabled';\r\n var STR_NONE = 'layui-none';\r\n var STR_ITEM_UP = 'layui-menu-item-up';\r\n var STR_ITEM_DOWN = 'layui-menu-item-down';\r\n var STR_MENU_TITLE = 'layui-menu-body-title';\r\n var STR_ITEM_GROUP = 'layui-menu-item-group';\r\n var STR_ITEM_PARENT = 'layui-menu-item-parent';\r\n var STR_ITEM_DIV = 'layui-menu-item-divider';\r\n var STR_ITEM_CHECKED = 'layui-menu-item-checked';\r\n var STR_ITEM_CHECKED2 = 'layui-menu-item-checked2';\r\n var STR_MENU_PANEL = 'layui-menu-body-panel';\r\n var STR_MENU_PANEL_L = 'layui-menu-body-panel-left';\r\n var STR_ELEM_SHADE = 'layui-dropdown-shade';\r\n \r\n var STR_GROUP_TITLE = '.'+ STR_ITEM_GROUP + '>.'+ STR_MENU_TITLE;\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++dropdown.index;\r\n that.config = $.extend({}, that.config, dropdown.config, options);\r\n that.init();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n trigger: 'click', // 事件类型\r\n content: '', // 自定义菜单内容\r\n className: '', // 自定义样式类名\r\n style: '', // 设置面板 style 属性\r\n show: false, // 是否初始即显示菜单面板\r\n isAllowSpread: true, // 是否允许菜单组展开收缩\r\n isSpreadItem: true, // 是否初始展开子菜单\r\n data: [], // 菜单数据结构\r\n delay: [200, 300], // 延时显示或隐藏的毫秒数,若为 number 类型,则表示显示和隐藏的延迟时间相同,trigger 为 hover 时才生效\r\n shade: 0, // 遮罩\r\n accordion: false // 手风琴效果,仅菜单组生效。基础菜单需要在容器上追加 'lay-accordion' 属性。\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options, type){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.init(true, type);\r\n };\r\n\r\n // 初始化准备\r\n Class.prototype.init = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n dropdown.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(!rerender && elem[0] && elem.data(MOD_INDEX)){\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n if(options.show || (type === 'reloadData' && that.elemView && $('body').find(that.elemView.get(0)).length)) that.render(rerender, type); //初始即显示或者面板弹出之后执行了刷新数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染\r\n Class.prototype.render = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var elemBody = $('body');\r\n \r\n // 默认菜单内容\r\n var getDefaultView = function(){\r\n var elemUl = $('
                ');\r\n if(options.data.length > 0 ){\r\n eachItemView(elemUl, options.data)\r\n } else {\r\n elemUl.html('
              • No data
              • ');\r\n }\r\n return elemUl;\r\n };\r\n \r\n // 遍历菜单项\r\n var eachItemView = function(views, data){\r\n // var views = [];\r\n\r\n layui.each(data, function(index, item){\r\n // 是否存在子级\r\n var isChild = item[customName.children] && item[customName.children].length > 0;\r\n var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem\r\n var title = function(title){\r\n var templet = item.templet || options.templet;\r\n if(templet){\r\n title = typeof templet === 'function' \r\n ? templet(item)\r\n : laytpl(templet).render(item);\r\n }\r\n return title;\r\n }(util.escape(item[customName.title]));\r\n \r\n // 初始类型\r\n var type = function(){\r\n if(isChild){\r\n item.type = item.type || 'parent';\r\n }\r\n if(item.type){\r\n return ({\r\n group: 'group'\r\n ,parent: 'parent'\r\n ,'-': '-'\r\n })[item.type] || 'parent';\r\n }\r\n return '';\r\n }();\r\n\r\n if(type !== '-' && (!item[customName.title] && !item[customName.id] && !isChild)) return;\r\n \r\n //列表元素\r\n var viewLi = $([''\r\n \r\n //标题区\r\n ,function(){\r\n //是否超文本\r\n var viewText = ('href' in item) ? (\r\n ''+ title +''\r\n ) : title;\r\n \r\n //是否存在子级\r\n if(isChild){\r\n return '
                '+ viewText + function(){\r\n if(type === 'parent'){\r\n return '';\r\n } else if(type === 'group' && options.isAllowSpread){\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }() +'
                '\r\n \r\n }\r\n return '
                '+ viewText +'
                ';\r\n }()\r\n ,''].join(''));\r\n \r\n viewLi.data('item', item);\r\n \r\n //子级区\r\n if(isChild){\r\n var elemPanel = $('
                ');\r\n var elemUl = $('
                  ');\r\n\r\n if(type === 'parent'){\r\n elemPanel.append(eachItemView(elemUl, item[customName.children]));\r\n viewLi.append(elemPanel);\r\n } else {\r\n viewLi.append(eachItemView(elemUl, item[customName.children]));\r\n }\r\n }\r\n\r\n views.append(viewLi);\r\n });\r\n return views;\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                  '\r\n ,'
                  '].join('');\r\n \r\n // 如果是右键事件,则每次触发事件时,将允许重新渲染\r\n if(options.trigger === 'contextmenu' || lay.isTopElem(options.elem[0])) rerender = true;\r\n \r\n // 判断是否已经打开了下拉菜单面板\r\n if(!rerender && options.elem.data(MOD_INDEX +'_opened')) return;\r\n\r\n // 记录模板对象\r\n that.elemView = $('.' + STR_ELEM + '[lay-id=\"' + options.id + '\"]');\r\n if (type === 'reloadData' && that.elemView.length) {\r\n that.elemView.html(options.content || getDefaultView());\r\n } else {\r\n that.elemView = $(TPL_MAIN);\r\n that.elemView.append(options.content || getDefaultView());\r\n\r\n // 初始化某些属性\r\n if(options.className) that.elemView.addClass(options.className);\r\n if(options.style) that.elemView.attr('style', options.style);\r\n\r\n // 记录当前执行的实例索引\r\n dropdown.thisId = options.id;\r\n\r\n // 插入视图\r\n that.remove(); // 移除非当前绑定元素的面板\r\n elemBody.append(that.elemView);\r\n options.elem.data(MOD_INDEX +'_opened', true);\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                  ') : '';\r\n that.elemView.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n that.elemView.on('mouseenter', function(){\r\n clearTimeout(thisModule.timer);\r\n }).on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n }\r\n\r\n // 坐标定位\r\n that.position();\r\n thisModule.prevElem = that.elemView; // 记录当前打开的元素,以便在下次关闭\r\n thisModule.prevElem.data('prevElem', options.elem); // 将当前绑定的元素,记录在打开元素的 data 对象中\r\n \r\n // 阻止全局事件\r\n that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n that.elemView.find('.layui-menu li').on('click', function(e){\r\n var othis = $(this);\r\n var data = othis.data('item') || {};\r\n var isChild = data[customName.children] && data[customName.children].length > 0;\r\n var isClickAllScope = options.clickScope === 'all'; // 是否所有父子菜单均触发点击事件\r\n\r\n if(data.disabled) return; // 菜单项禁用状态\r\n \r\n // 普通菜单项点击后的回调及关闭面板\r\n if((!isChild || isClickAllScope) && data.type !== '-'){\r\n var ret = typeof options.click === 'function' \r\n ? options.click(data, othis) \r\n : null;\r\n \r\n ret === false || (isChild || that.remove());\r\n layui.stope(e);\r\n }\r\n });\r\n \r\n // 触发菜单组展开收缩\r\n that.elemView.find(STR_GROUP_TITLE).on('click', function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parent();\r\n var data = elemGroup.data('item') || {};\r\n \r\n if(data.type === 'group' && options.isAllowSpread){\r\n thisModule.spread(elemGroup, options.accordion);\r\n }\r\n });\r\n\r\n // 组件打开完毕的事件\r\n typeof options.ready === 'function' && options.ready(\r\n that.elemView, \r\n options.elem\r\n );\r\n };\r\n \r\n // 位置定位\r\n Class.prototype.position = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n lay.position(options.elem[0], that.elemView[0], {\r\n position: options.position,\r\n e: that.e,\r\n clickType: options.trigger === 'contextmenu' ? 'right' : null,\r\n align: options.align || null\r\n });\r\n };\r\n \r\n // 删除视图\r\n Class.prototype.remove = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemPrev = thisModule.prevElem;\r\n \r\n // 若存在已打开的面板元素,则移除\r\n if(elemPrev){\r\n elemPrev.data('prevElem') && (\r\n elemPrev.data('prevElem').data(MOD_INDEX +'_opened', false)\r\n );\r\n elemPrev.remove();\r\n }\r\n lay('.' + STR_ELEM_SHADE).remove();\r\n };\r\n\r\n Class.prototype.normalizedDelay = function(){\r\n var that = this;\r\n var options = that.config;\r\n var delay = [].concat(options.delay);\r\n \r\n return {\r\n show: delay[0],\r\n hide: delay[1] !== undefined ? delay[1] : delay[0] \r\n }\r\n }\r\n \r\n // 延迟删除视图\r\n Class.prototype.delayRemove = function(){\r\n var that = this;\r\n var options = that.config;\r\n clearTimeout(thisModule.timer);\r\n\r\n thisModule.timer = setTimeout(function(){\r\n that.remove();\r\n }, that.normalizedDelay().hide);\r\n };\r\n \r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若传入 hover,则解析为 mouseenter\r\n if(options.trigger === 'hover') options.trigger = 'mouseenter';\r\n\r\n // 解除上一个事件\r\n if(that.prevElem) that.prevElem.off(options.trigger, that.prevElemCallback);\r\n\r\n // 是否鼠标移入时触发\r\n var isMouseEnter = options.trigger === 'mouseenter';\r\n \r\n // 记录被绑定的元素及回调\r\n that.prevElem = options.elem;\r\n that.prevElemCallback = function(e){\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n\r\n // 若为鼠标移入事件,则延迟触发\r\n isMouseEnter ? (\r\n thisModule.timer = setTimeout(function(){\r\n that.render();\r\n }, that.normalizedDelay().show)\r\n ) : that.render();\r\n \r\n e.preventDefault();\r\n };\r\n\r\n // 触发元素事件\r\n options.elem.on(options.trigger, that.prevElemCallback);\r\n \r\n // 如果是鼠标移入事件\r\n if (isMouseEnter) {\r\n // 执行鼠标移出事件\r\n options.elem.on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 设置菜单组展开和收缩状态\r\n thisModule.spread = function(othis, isAccordion){\r\n var contentElem = othis.children('ul');\r\n var needSpread = othis.hasClass(STR_ITEM_UP);\r\n var ANIM_MS = 200;\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({'display': ''}); // 剔除临时 style,以适配外部样式的状态重置;\r\n };\r\n\r\n // 动画是否正在执行\r\n if (contentElem.is(':animated')) return;\r\n\r\n // 展开\r\n if (needSpread) {\r\n othis.removeClass(STR_ITEM_UP).addClass(STR_ITEM_DOWN);\r\n contentElem.hide().stop().slideDown(ANIM_MS, complete);\r\n } else { // 收缩\r\n contentElem.stop().slideUp(ANIM_MS, complete);\r\n othis.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n\r\n // 手风琴\r\n if (needSpread && isAccordion) {\r\n var groupSibs = othis.siblings('.' + STR_ITEM_DOWN);\r\n groupSibs.children('ul').stop().slideUp(ANIM_MS, complete);\r\n groupSibs.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n };\r\n \r\n // 全局事件\r\n (function(){\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n \r\n // 自适应定位\r\n _WIN.on('resize', function(){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId);\r\n if(!that) return;\r\n \r\n if((that.elemView && !that.elemView[0]) || !$('.'+ STR_ELEM)[0]){\r\n return false;\r\n }\r\n \r\n var options = that.config;\r\n \r\n if(options.trigger === 'contextmenu'){\r\n that.remove();\r\n } else {\r\n that.position();\r\n }\r\n });\r\n \r\n \r\n \r\n // 点击任意处关闭\r\n _DOC.on(clickOrMousedown, function(e){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId)\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素不是 body document,或者不是鼠标右键事件\r\n if(!(lay.isTopElem(options.elem[0]) || options.trigger === 'contextmenu')){\r\n if(\r\n e.target === options.elem[0] || \r\n options.elem.find(e.target)[0] ||\r\n (that.elemView && e.target === that.elemView[0]) ||\r\n (that.elemView && that.elemView.find(e.target)[0])\r\n ) return;\r\n }\r\n \r\n that.remove();\r\n });\r\n \r\n // 基础菜单的静态元素事件\r\n var ELEM_LI = '.layui-menu:not(.layui-dropdown-menu) li';\r\n _DOC.on('click', ELEM_LI, function(e){\r\n var othis = $(this);\r\n var parent = othis.parents('.layui-menu').eq(0);\r\n var isChild = othis.hasClass(STR_ITEM_GROUP) || othis.hasClass(STR_ITEM_PARENT);\r\n var filter = parent.attr('lay-filter') || parent.attr('id');\r\n var options = lay.options(this);\r\n \r\n // 非触发元素\r\n if(othis.hasClass(STR_ITEM_DIV)) return;\r\n\r\n // 非菜单组\r\n if(!isChild){\r\n // 选中\r\n parent.find('.'+ STR_ITEM_CHECKED).removeClass(STR_ITEM_CHECKED); // 清除选中样式\r\n parent.find('.'+ STR_ITEM_CHECKED2).removeClass(STR_ITEM_CHECKED2); // 清除父级菜单选中样式\r\n othis.addClass(STR_ITEM_CHECKED); //添加选中样式\r\n othis.parents('.'+ STR_ITEM_PARENT).addClass(STR_ITEM_CHECKED2); // 添加父级菜单选中样式\r\n\r\n options.title = options.title || $.trim(othis.children('.'+ STR_MENU_TITLE).text());\r\n \r\n // 触发事件\r\n layui.event.call(this, MOD_NAME, 'click('+ filter +')', options);\r\n }\r\n });\r\n \r\n // 基础菜单的展开收缩事件\r\n _DOC.on('click', (ELEM_LI + STR_GROUP_TITLE), function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parents('.'+ STR_ITEM_GROUP +':eq(0)');\r\n var options = lay.options(elemGroup[0]);\r\n var isAccordion = typeof othis.parents('.layui-menu').eq(0).attr('lay-accordion') === 'string';\r\n\r\n if(('isAllowSpread' in options) ? options.isAllowSpread : true){\r\n thisModule.spread(elemGroup, isAccordion);\r\n }\r\n });\r\n \r\n // 判断子级菜单是否超出屏幕\r\n var ELEM_LI_PAR = '.layui-menu .'+ STR_ITEM_PARENT\r\n _DOC.on('mouseenter', ELEM_LI_PAR, function(e){\r\n var othis = $(this);\r\n var elemPanel = othis.find('.'+ STR_MENU_PANEL);\r\n\r\n if(!elemPanel[0]) return;\r\n var rect = elemPanel[0].getBoundingClientRect();\r\n \r\n // 是否超出右侧屏幕\r\n if(rect.right > _WIN.width()){\r\n elemPanel.addClass(STR_MENU_PANEL_L);\r\n // 不允许超出左侧屏幕\r\n rect = elemPanel[0].getBoundingClientRect();\r\n if(rect.left < 0){\r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n }\r\n }\r\n \r\n // 是否超出底部屏幕\r\n if(rect.bottom > _WIN.height()){\r\n elemPanel.eq(0).css('margin-top', -(rect.bottom - _WIN.height() + 5));\r\n }\r\n }).on('mouseleave', ELEM_LI_PAR, function(e){\r\n var othis = $(this)\r\n var elemPanel = othis.children('.'+ STR_MENU_PANEL);\r\n \r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n elemPanel.css('margin-top', 0);\r\n });\r\n \r\n })();\r\n\r\n // 关闭面板\r\n dropdown.close = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.remove();\r\n return thisModule.call(that);\r\n };\r\n \r\n // 重载实例\r\n dropdown.reload = function(id, options, type){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n\r\n that.reload(options, type);\r\n return thisModule.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n dropdown.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[2] = 'reloadData';\r\n\r\n // 重载时,与数据相关的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'data', 'templet', 'content'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(!dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return dropdown.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n dropdown.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, dropdown);\r\n});\r\n","/**\r\n * slider 滑块组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n 'use strict';\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var slider = {\r\n config: {},\r\n index: layui.slider ? (layui.slider.index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisSlider = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setValue: function(value, index){ // 设置值\r\n value = value > options.max ? options.max : value;\r\n value = value < options.min ? options.min : value;\r\n options.value = value;\r\n return that.slide('set', value, index || 0);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'slider';\r\n var DISABLED = 'layui-disabled';\r\n var ELEM_VIEW = 'layui-slider';\r\n var SLIDER_BAR = 'layui-slider-bar';\r\n var SLIDER_WRAP = 'layui-slider-wrap';\r\n var SLIDER_WRAP_BTN = 'layui-slider-wrap-btn';\r\n var SLIDER_TIPS = 'layui-slider-tips';\r\n var SLIDER_INPUT = 'layui-slider-input';\r\n var SLIDER_INPUT_TXT = 'layui-slider-input-txt';\r\n var SLIDER_INPUT_BTN = 'layui-slider-input-btn';\r\n var ELEM_HOVER = 'layui-slider-hover';\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++slider.index;\r\n that.config = $.extend({}, that.config, slider.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'default', //滑块类型,垂直:vertical\r\n min: 0, //最小值\r\n max: 100, //最大值,默认100\r\n value: 0, //初始值,默认为0\r\n step: 1, //间隔值\r\n showstep: false, //间隔点开启\r\n tips: true, //文字提示,开启\r\n input: false, //输入框,关闭\r\n range: false, //范围选择,与输入框不能同时开启,默认关闭\r\n height: 200, //配合 type:\"vertical\" 使用,默认200px\r\n disabled: false, //滑块禁用,默认关闭\r\n theme: '#16baaa' //主题颜色\r\n };\r\n\r\n //滑块渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n slider.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n //间隔值不能小于 1\r\n if(options.step < 1) options.step = 1;\r\n\r\n //最大值不能小于最小值\r\n if(options.max < options.min) options.max = options.min + options.step;\r\n\r\n\r\n\r\n //判断是否开启双滑块\r\n if(options.range){\r\n options.value = typeof(options.value) == 'object' ? options.value : [options.min, options.value];\r\n var minValue = Math.min(options.value[0], options.value[1])\r\n ,maxValue = Math.max(options.value[0], options.value[1]);\r\n options.value[0] = Math.max(minValue,options.min);\r\n options.value[1] = Math.max(maxValue,options.min);\r\n options.value[0] = Math.min(options.value[0],options.max);\r\n options.value[1] = Math.min(options.value[1],options.max);\r\n\r\n var scaleFir = Math.floor((options.value[0] - options.min) / (options.max - options.min) * 100);\r\n var scaleSec = Math.floor((options.value[1] - options.min) / (options.max - options.min) * 100);\r\n var scale = scaleSec - scaleFir + '%';\r\n scaleFir = scaleFir + '%';\r\n scaleSec = scaleSec + '%';\r\n } else {\r\n //如果初始值是一个数组,则获取数组的最小值\r\n if(typeof options.value == 'object'){\r\n options.value = Math.min.apply(null, options.value);\r\n }\r\n\r\n //初始值不能小于最小值且不能大于最大值\r\n if(options.value < options.min) options.value = options.min;\r\n if(options.value > options.max) options.value = options.max;\r\n\r\n var scale = Math.floor((options.value - options.min) / (options.max - options.min) * 100) + '%';\r\n }\r\n\r\n\r\n //如果禁用,颜色为统一的灰色\r\n var theme = options.disabled ? '#c2c2c2' : options.theme;\r\n\r\n //滑块\r\n var temp = '
                  '+ (options.tips ? '
                  ' : '') +\r\n '
                  ' +\r\n '
                  '+ (options.range ? '
                  ' : '') +'
                  ';\r\n\r\n var othis = $(options.elem);\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n that.elemTemp = $(temp);\r\n\r\n //把数据缓存到滑块上\r\n if(options.range){\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(0).data('value', options.value[0]);\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(1).data('value', options.value[1]);\r\n }else{\r\n that.elemTemp.find('.' + SLIDER_WRAP).data('value', options.value);\r\n }\r\n\r\n //插入替代元素\r\n othis.html(that.elemTemp);\r\n\r\n //垂直滑块\r\n if(options.type === 'vertical'){\r\n that.elemTemp.height(options.height + 'px');\r\n }\r\n\r\n //显示间断点\r\n if(options.showstep){\r\n var number = (options.max - options.min) / options.step, item = '';\r\n for(var i = 1; i < number + 1; i++) {\r\n var step = i * 100 / number;\r\n if(step < 100){\r\n item += '
                  '\r\n }\r\n }\r\n that.elemTemp.append(item);\r\n }\r\n\r\n //插入输入框\r\n if(options.input && !options.range){\r\n var elemInput = $('
                  ');\r\n othis.css(\"position\",\"relative\");\r\n othis.append(elemInput);\r\n othis.find('.' + SLIDER_INPUT_TXT).children('input').val(options.value);\r\n if(options.type === 'vertical'){\r\n elemInput.css({\r\n left: 0\r\n ,top: -48\r\n });\r\n } else {\r\n that.elemTemp.css(\"margin-right\", elemInput.outerWidth() + 15);\r\n }\r\n }\r\n\r\n //给未禁止的滑块滑动事件\r\n if(!options.disabled){\r\n that.slide();\r\n }else{\r\n that.elemTemp.addClass(DISABLED);\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).addClass(DISABLED);\r\n }\r\n\r\n //划过滑块显示数值\r\n var timer;\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).on('mouseover', function(){\r\n var sliderWidth = options.type === 'vertical' ? options.height : that.elemTemp[0].offsetWidth;\r\n var sliderWrap = that.elemTemp.find('.' + SLIDER_WRAP);\r\n var tipsLeft = options.type === 'vertical' ? (sliderWidth - $(this).parent()[0].offsetTop - sliderWrap.height()) : $(this).parent()[0].offsetLeft;\r\n var left = tipsLeft / sliderWidth * 100;\r\n var value = $(this).parent().data('value');\r\n var tipsTxt = options.setTips ? options.setTips(value) : value;\r\n that.elemTemp.find('.' + SLIDER_TIPS).html(tipsTxt);\r\n\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n if(options.type === 'vertical'){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"bottom\": left + '%',\r\n \"margin-bottom\": \"20px\",\r\n \"display\": \"inline-block\"\r\n });\r\n } else {\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"left\": left + '%',\r\n \"display\": \"inline-block\"\r\n });\r\n }\r\n }, 300);\r\n }).on('mouseout', function(){\r\n clearTimeout(timer);\r\n that.elemTemp.find('.' + SLIDER_TIPS).css(\"display\", \"none\");\r\n });\r\n };\r\n\r\n //滑块滑动\r\n Class.prototype.slide = function(setValue, value, i){\r\n var that = this;\r\n var options = that.config;\r\n var sliderAct = that.elemTemp;\r\n var sliderWidth = function(){\r\n return options.type === 'vertical' ? options.height : sliderAct[0].offsetWidth\r\n };\r\n var sliderWrap = sliderAct.find('.' + SLIDER_WRAP);\r\n var sliderTxt = sliderAct.next('.' + SLIDER_INPUT);\r\n var inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n var step = 100 / ((options.max - options.min) / Math.ceil(options.step));\r\n var change = function(offsetValue, index, from){\r\n if(Math.ceil(offsetValue) * step > 100){\r\n offsetValue = Math.ceil(offsetValue) * step\r\n }else{\r\n offsetValue = Math.round(offsetValue) * step\r\n }\r\n offsetValue = offsetValue > 100 ? 100: offsetValue;\r\n offsetValue = offsetValue < 0 ? 0: offsetValue;\r\n sliderWrap.eq(index).css((options.type === 'vertical' ?'bottom':'left'), offsetValue + '%');\r\n var firLeft = valueTo(sliderWrap[0].offsetLeft);\r\n var secLeft = options.range ? valueTo(sliderWrap[1].offsetLeft) : 0;\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_TIPS).css({\"bottom\":offsetValue + '%', \"margin-bottom\":\"20px\"});\r\n firLeft = valueTo(sliderWidth() - sliderWrap[0].offsetTop - sliderWrap.height());\r\n secLeft = options.range ? valueTo(sliderWidth() - sliderWrap[1].offsetTop - sliderWrap.height()) : 0;\r\n }else{\r\n sliderAct.find('.' + SLIDER_TIPS).css(\"left\",offsetValue + '%');\r\n }\r\n firLeft = firLeft > 100 ? 100: firLeft;\r\n secLeft = secLeft > 100 ? 100: secLeft;\r\n var minLeft = Math.min(firLeft, secLeft)\r\n ,wrapWidth = Math.abs(firLeft - secLeft);\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_BAR).css({\"height\":wrapWidth + '%', \"bottom\":minLeft + '%'});\r\n }else{\r\n sliderAct.find('.' + SLIDER_BAR).css({\"width\":wrapWidth + '%', \"left\":minLeft + '%'});\r\n }\r\n var selfValue = options.min + Math.round((options.max - options.min) * offsetValue / 100);\r\n inputValue = selfValue;\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val(inputValue);\r\n sliderWrap.eq(index).data('value', selfValue);\r\n sliderAct.find('.' + SLIDER_TIPS).html(options.setTips ? options.setTips(selfValue) : selfValue);\r\n\r\n //如果开启范围选择,则返回数组值\r\n if(options.range){\r\n var arrValue = [\r\n sliderWrap.eq(0).data('value'),\r\n sliderWrap.eq(1).data('value')\r\n ];\r\n if(arrValue[0] > arrValue[1]) arrValue.reverse(); //如果前面的圆点超过了后面的圆点值,则调换顺序\r\n }\r\n\r\n that.value = options.range ? arrValue : selfValue; // 最新值\r\n options.change && options.change(that.value); // change 回调\r\n\r\n // 值完成选中的事件\r\n if(from === 'done') options.done && options.done(that.value);\r\n };\r\n var valueTo = function(value){\r\n var oldLeft = value / sliderWidth() * 100 / step;\r\n var left = Math.round(oldLeft) * step;\r\n if(value == sliderWidth()){\r\n left = Math.ceil(oldLeft) * step;\r\n }\r\n return left;\r\n };\r\n\r\n //拖拽元素\r\n var elemMove = $(['
                  sliderWidth())left = sliderWidth();\r\n var reaLeft = left / sliderWidth() * 100 / step;\r\n change(reaLeft, index);\r\n othis.addClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).show();\r\n e.preventDefault();\r\n };\r\n\r\n var up = function(delay){\r\n othis.removeClass(ELEM_HOVER);\r\n setTimeout(function(){\r\n sliderAct.find('.' + SLIDER_TIPS).hide();\r\n }, delay);\r\n };\r\n\r\n createMoveElem(othis, move, up)\r\n });\r\n });\r\n\r\n // 点击滑块\r\n sliderAct.on('click', function(e){\r\n var main = $('.' + SLIDER_WRAP_BTN);\r\n var othis = $(this);\r\n if(!main.is(event.target) && main.has(event.target).length === 0 && main.length){\r\n var index;\r\n var offset = options.type === 'vertical'\r\n ? (sliderWidth() - e.clientY + othis.offset().top - $(window).scrollTop())\r\n :(e.clientX - othis.offset().left - $(window).scrollLeft());\r\n\r\n if(offset < 0)offset = 0;\r\n if(offset > sliderWidth()) offset = sliderWidth();\r\n var reaLeft = offset / sliderWidth() * 100 / step;\r\n if(options.range){\r\n if(options.type === 'vertical'){\r\n index = Math.abs(offset - parseInt($(sliderWrap[0]).css('bottom'))) > Math.abs(offset - parseInt($(sliderWrap[1]).css('bottom'))) ? 1 : 0;\r\n } else {\r\n index = Math.abs(offset - sliderWrap[0].offsetLeft) > Math.abs(offset - sliderWrap[1].offsetLeft) ? 1 : 0;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n change(reaLeft, index, 'done');\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //点击加减输入框\r\n sliderTxt.children('.' + SLIDER_INPUT_BTN).children('i').each(function(index){\r\n $(this).on('click', function(){\r\n inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n if(index == 1){ //减\r\n inputValue = inputValue - options.step < options.min\r\n ? options.min\r\n : Number(inputValue) - options.step;\r\n }else{\r\n inputValue = Number(inputValue) + options.step > options.max\r\n ? options.max\r\n : Number(inputValue) + options.step;\r\n }\r\n var inputScale = (inputValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n });\r\n });\r\n\r\n //获取输入框值\r\n var getInputValue = function(){\r\n var realValue = this.value;\r\n realValue = isNaN(realValue) ? 0 : realValue;\r\n realValue = realValue < options.min ? options.min : realValue;\r\n realValue = realValue > options.max ? options.max : realValue;\r\n this.value = realValue;\r\n var inputScale = (realValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n };\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getInputValue.call(this);\r\n }\r\n }).on('change', getInputValue);\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n };\r\n\r\n //核心入口\r\n slider.render = function(options){\r\n var inst = new Class(options);\r\n return thisSlider.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, slider);\r\n})\r\n","/**\r\n * colorpicker \r\n * 颜色选择组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'click' : 'mousedown');\r\n\r\n //外部接口\r\n var colorpicker = {\r\n config: {}\r\n ,index: layui.colorpicker ? (layui.colorpicker.index + 10000) : 0\r\n\r\n //设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n //事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, 'colorpicker', events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options\r\n };\r\n }\r\n\r\n //字符常量\r\n ,MOD_NAME = 'colorpicker', SHOW = 'layui-show', THIS = 'layui-this', ELEM = 'layui-colorpicker'\r\n \r\n ,ELEM_MAIN = '.layui-colorpicker-main', ICON_PICKER_DOWN = 'layui-icon-down', ICON_PICKER_CLOSE = 'layui-icon-close'\r\n ,PICKER_TRIG_SPAN = 'layui-colorpicker-trigger-span', PICKER_TRIG_I = 'layui-colorpicker-trigger-i', PICKER_SIDE = 'layui-colorpicker-side', PICKER_SIDE_SLIDER = 'layui-colorpicker-side-slider'\r\n ,PICKER_BASIS = 'layui-colorpicker-basis', PICKER_ALPHA_BG = 'layui-colorpicker-alpha-bgcolor', PICKER_ALPHA_SLIDER = 'layui-colorpicker-alpha-slider', PICKER_BASIS_CUR = 'layui-colorpicker-basis-cursor', PICKER_INPUT = 'layui-colorpicker-main-input'\r\n\r\n //RGB转HSB\r\n ,RGBToHSB = function(rgb){\r\n var hsb = {h:0, s:0, b:0};\r\n var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n var delta = max - min;\r\n hsb.b = max;\r\n hsb.s = max !== 0 ? 255*delta/max : 0;\r\n if(hsb.s !== 0){\r\n if(rgb.r == max){ // 因 rgb 中返回的数字为 string 类型\r\n hsb.h = (rgb.g - rgb.b) / delta;\r\n }else if(rgb.g == max){\r\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n }else{\r\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n }\r\n }else{\r\n hsb.h = -1;\r\n }\r\n if(max === min){\r\n hsb.h = 0;\r\n }\r\n hsb.h *= 60;\r\n if(hsb.h < 0) {\r\n hsb.h += 360;\r\n }\r\n hsb.s *= 100/255;\r\n hsb.b *= 100/255;\r\n return hsb; \r\n }\r\n\r\n //HEX转HSB\r\n ,HEXToHSB = function(hex){\r\n hex = hex.indexOf('#') > -1 ? hex.substring(1) : hex;\r\n if(hex.length === 3){\r\n var num = hex.split(\"\");\r\n hex = num[0]+num[0]+num[1]+num[1]+num[2]+num[2]\r\n }\r\n hex = parseInt(hex, 16);\r\n var rgb = {r:hex >> 16, g:(hex & 0x00FF00) >> 8, b:(hex & 0x0000FF)};\r\n return RGBToHSB(rgb);\r\n }\r\n\r\n //HSB转RGB\r\n ,HSBToRGB = function(hsb){\r\n var rgb = {};\r\n var h = hsb.h;\r\n var s = hsb.s*255/100;\r\n var b = hsb.b*255/100;\r\n if(s === 0){\r\n rgb.r = rgb.g = rgb.b = b;\r\n }else{\r\n var t1 = b;\r\n var t2 = (255 - s) * b /255;\r\n var t3 = (t1 - t2) * (h % 60) /60;\r\n if(h === 360) h = 0;\r\n if(h < 60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}\r\n else if(h < 120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}\r\n else if(h < 180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}\r\n else if(h < 240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}\r\n else if(h < 300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}\r\n else if(h < 360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}\r\n else {rgb.r=0; rgb.g=0; rgb.b=0}\r\n }\r\n return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\r\n }\r\n\r\n //HSB转HEX\r\n ,HSBToHEX = function(hsb){\r\n var rgb = HSBToRGB(hsb);\r\n var hex = [\r\n rgb.r.toString(16)\r\n ,rgb.g.toString(16)\r\n ,rgb.b.toString(16)\r\n ];\r\n $.each(hex, function(nr, val){\r\n if(val.length === 1){\r\n hex[nr] = '0' + val;\r\n }\r\n });\r\n return hex.join('');\r\n }\r\n\r\n //转化成所需rgb格式\r\n ,RGBSTo = function(rgbs){\r\n var regexp = /[0-9]{1,3}/g;\r\n var re = rgbs.match(regexp) || [];\r\n return {r:re[0], g:re[1], b:re[2]};\r\n }\r\n \r\n ,$win = $(window)\r\n ,$doc = $(document)\r\n \r\n //构造器\r\n ,Class = function(options){\r\n var that = this;\r\n that.index = ++colorpicker.index;\r\n that.config = $.extend({}, that.config, colorpicker.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n color: '' //默认颜色,默认没有\r\n ,size: null //选择器大小\r\n ,alpha: false //是否开启透明度\r\n ,format: 'hex' //颜色显示/输入格式,可选 rgb,hex\r\n ,predefine: false //预定义颜色是否开启\r\n ,colors: [ //默认预定义颜色列表\r\n '#16baaa', '#16b777', '#1E9FFF', '#FF5722', '#FFB800', '#01AAED', '#999', '#c00', '#ff8c00','#ffd700'\r\n ,'#90ee90', '#00ced1', '#1e90ff', '#c71585', 'rgb(0, 186, 189)', 'rgb(255, 120, 0)', 'rgb(250, 212, 0)', '#393D49', 'rgba(0,0,0,.5)', 'rgba(255, 69, 0, 0.68)', 'rgba(144, 240, 144, 0.5)', 'rgba(31, 147, 255, 0.73)'\r\n ]\r\n };\r\n\r\n //初始颜色选择框\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n colorpicker.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n \r\n //颜色选择框对象\r\n var elemColorBox = $(['
                  '\r\n ,''\r\n ,' 3){ //需要优化\r\n if(!(options.alpha && options.format == 'rgb')){\r\n bgstr = '#' + HSBToHEX(RGBToHSB(RGBSTo(options.color)))\r\n }\r\n }\r\n \r\n return 'background: '+ bgstr;\r\n }\r\n \r\n return bgstr;\r\n }() +'\">'\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                  '].join(''))\r\n\r\n //初始化颜色选择框\r\n elem = options.elem = $(options.elem);\r\n options.size && elemColorBox.addClass('layui-colorpicker-'+ options.size); //初始化颜色选择框尺寸\r\n \r\n // 插入颜色选择框\r\n elem.addClass('layui-inline').html(\r\n that.elemColorBox = elemColorBox\r\n );\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n \r\n // 获取背景色值\r\n that.color = that.elemColorBox.find('.'+ PICKER_TRIG_SPAN)[0].style.background;\r\n \r\n // 相关事件\r\n that.events();\r\n };\r\n\r\n //渲染颜色选择器\r\n Class.prototype.renderPicker = function(){\r\n var that = this\r\n ,options = that.config\r\n ,elemColorBox = that.elemColorBox[0]\r\n \r\n //颜色选择器对象\r\n ,elemPicker = that.elemPicker = $(['
                  '\r\n //颜色面板\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n \r\n //透明度条块\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n \r\n //预设颜色列表\r\n ,function(){\r\n if(options.predefine){\r\n var list = ['
                  '];\r\n layui.each(options.colors, function(i, v){\r\n list.push(['
                  3 \r\n ? ' layui-colorpicker-pre-isalpha' \r\n : '') +'\">'\r\n ,'
                  '\r\n ,'
                  '].join(''));\r\n });\r\n list.push('
                  ');\r\n return list.join('');\r\n } else {\r\n return '';\r\n }\r\n }()\r\n \r\n //底部表单元素区域\r\n ,'
                  '\r\n ,'
                  '\r\n ,''\r\n ,'
                  '\r\n ,'
                  '\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                  '].join(''))\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)[0];\r\n \r\n //如果当前点击的颜色盒子已经存在选择器,则关闭\r\n if($(ELEM_MAIN)[0] && $(ELEM_MAIN).data('index') == that.index){\r\n that.removePicker(Class.thisElemInd);\r\n } else { //插入颜色选择器\r\n that.removePicker(Class.thisElemInd); \r\n $('body').append(elemPicker);\r\n }\r\n\r\n // 记录当前执行的实例索引\r\n colorpicker.thisId = options.id;\r\n \r\n Class.thisElemInd = that.index; //记录最新打开的选择器索引\r\n Class.thisColor = elemColorBox.style.background //记录最新打开的选择器颜色选中值\r\n \r\n that.position();\r\n that.pickerEvents();\r\n };\r\n\r\n //颜色选择器移除\r\n Class.prototype.removePicker = function(index){\r\n var that = this;\r\n var options = that.config;\r\n var elem = $('#layui-colorpicker'+ (index || that.index));\r\n\r\n if(elem[0]){\r\n elem.remove();\r\n delete colorpicker.thisId;\r\n\r\n // 面板关闭后的回调\r\n typeof options.close === 'function' && options.close(that.color);\r\n }\r\n\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(that.bindElem || that.elemColorBox[0], that.elemPicker[0], {\r\n position: options.position\r\n ,align: 'center'\r\n });\r\n return that;\r\n };\r\n\r\n //颜色选择器赋值\r\n Class.prototype.val = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBox = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT)\r\n ,e = elemColorBox[0]\r\n ,bgcolor = e.style.backgroundColor;\r\n\r\n //判断是否有背景颜色\r\n if(bgcolor){\r\n \r\n //转化成hsb格式\r\n var hsb = RGBToHSB(RGBSTo(bgcolor))\r\n ,type = elemColorBox.attr('lay-type');\r\n \r\n //同步滑块的位置及颜色选择器的选择\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n \r\n // 若格式要求为rgb\r\n if(type === 'torgb'){\r\n elemPickerInput.find('input').val(bgcolor);\r\n } else if(type === 'rgba'){ // 若格式要求为 rgba\r\n var rgb = RGBSTo(bgcolor);\r\n \r\n // 若开启透明度而没有设置,则给默认值\r\n if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){\r\n elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)');\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n } else {\r\n elemPickerInput.find('input').val(bgcolor);\r\n var left = bgcolor.slice(bgcolor.lastIndexOf(\",\") + 1, bgcolor.length - 1) * 280;\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n }\r\n \r\n // 设置 span 背景色\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'; \r\n } else {\r\n elemPickerInput.find('input').val('#'+ HSBToHEX(hsb));\r\n }\r\n } else {\r\n // 若没有背景颜色则默认到最初始的状态\r\n that.select(0,100,100);\r\n elemPickerInput.find('input').val(\"\");\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = '';\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n }\r\n };\r\n\r\n //颜色选择器滑动 / 点击\r\n Class.prototype.side = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,span = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,type = span.attr('lay-type')\r\n\r\n ,side = that.elemPicker.find('.' + PICKER_SIDE)\r\n ,slider = that.elemPicker.find('.' + PICKER_SIDE_SLIDER)\r\n ,basis = that.elemPicker.find('.' + PICKER_BASIS)\r\n ,choose = that.elemPicker.find('.' + PICKER_BASIS_CUR)\r\n ,alphacolor = that.elemPicker.find('.' + PICKER_ALPHA_BG)\r\n ,alphaslider = that.elemPicker.find('.' + PICKER_ALPHA_SLIDER)\r\n \r\n ,_h = slider[0].offsetTop/180*360\r\n ,_b = 100 - (choose[0].offsetTop + 3)/180*100\r\n ,_s = (choose[0].offsetLeft + 3)/260*100\r\n ,_a = Math.round(alphaslider[0].offsetLeft/280*100)/100 \r\n \r\n ,i = that.elemColorBox.find('.' + PICKER_TRIG_I)\r\n ,pre = that.elemPicker.find('.layui-colorpicker-pre').children('div')\r\n\r\n ,change = function(x,y,z,a){\r\n that.select(x, y, z);\r\n var rgb = HSBToRGB({h:x, s:y, b:z});\r\n var color = HSBToHEX({h:x, s:y, b:z});\r\n var elemInput = that.elemPicker.find('.' + PICKER_INPUT).find('input');\r\n\r\n i.addClass(ICON_PICKER_DOWN).removeClass(ICON_PICKER_CLOSE);\r\n span[0].style.background = 'rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')';\r\n\r\n if(type === 'torgb'){\r\n elemInput.val('rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')');\r\n } else if(type === 'rgba'){\r\n var left = a * 280;\r\n alphaslider.css(\"left\", left);\r\n elemInput.val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')');\r\n span[0].style.background = 'rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')';\r\n alphacolor[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'\r\n } else {\r\n elemInput.val('#'+ color);\r\n }\r\n \r\n //回调更改的颜色\r\n options.change && options.change($.trim(that.elemPicker.find('.' + PICKER_INPUT).find('input').val()));\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                  '].join(''))\r\n ,createMoveElem = function(call){\r\n $('#LAY-colorpicker-moving')[0] || $('body').append(elemMove);\r\n elemMove.on('mousemove', call);\r\n elemMove.on('mouseup', function(){\r\n elemMove.remove();\r\n }).on('mouseleave', function(){\r\n elemMove.remove();\r\n });\r\n };\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldy = e.clientY;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,maxh = side[0].offsetHeight;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a);\r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n //layui.stope(e);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('click', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop();\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight) top = this.offsetHeight; \r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a); \r\n e.preventDefault();\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldleft = this.offsetLeft\r\n ,oldy = e.clientY\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,left = oldleft + (e.clientX - oldx)\r\n ,maxh = basis[0].offsetHeight - 3\r\n ,maxw = basis[0].offsetWidth - 3;\r\n if(top < -3)top = -3;\r\n if(top > maxh)top = maxh;\r\n if(left < -3)left = -3;\r\n if(left > maxw)left = maxw;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n e.preventDefault();\r\n };\r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n basis.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top - 3 + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left - 3 + $win.scrollLeft()\r\n if(top < -3)top = -3;\r\n if(top > this.offsetHeight - 3)top = this.offsetHeight - 3;\r\n if(left < -3)left = -3;\r\n if(left > this.offsetWidth - 3)left = this.offsetWidth - 3;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n layui.stope(e);\r\n e.preventDefault();\r\n choose.trigger(e, 'mousedown');\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e){\r\n var oldleft = this.offsetLeft\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var left = oldleft + (e.clientX - oldx)\r\n ,maxw = alphacolor[0].offsetWidth;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('click', function(e){\r\n var left = e.clientX - $(this).offset().left\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n });\r\n \r\n //预定义颜色选择\r\n pre.each(function(){\r\n $(this).on('click', function(){\r\n $(this).parent('.layui-colorpicker-pre').addClass('selected').siblings().removeClass('selected');\r\n var color = this.style.backgroundColor\r\n ,hsb = RGBToHSB(RGBSTo(color))\r\n ,a = color.slice(color.lastIndexOf(\",\") + 1, color.length - 1),left;\r\n _h = hsb.h;\r\n _s = hsb.s;\r\n _b = hsb.b;\r\n if((color.match(/[0-9]{1,3}/g) || []).length === 3) a = 1;\r\n _a = a;\r\n left = a * 280;\r\n change(hsb.h, hsb.s, hsb.b, a);\r\n })\r\n });\r\n\r\n if(!lay.touchEventsSupported()) return;\r\n // 触摸事件模拟\r\n layui.each([\r\n {elem: side, eventType: 'click'},\r\n {elem: alphacolor, eventType: 'click'},\r\n {elem: basis, eventType: 'mousedown'}\r\n ], function(i, obj){\r\n lay.touchSwipe(obj.elem, {\r\n onTouchMove: function(e){\r\n touchHandler(e, obj.eventType)\r\n }\r\n })\r\n })\r\n\r\n function touchHandler(event, eventType) {\r\n var pointer = event.touches[0];\r\n var simulatedEvent = document.createEvent(\"MouseEvent\");\r\n\r\n simulatedEvent.initMouseEvent(eventType, \r\n true, true, window, 1, \r\n pointer.screenX, pointer.screenY,pointer.clientX, pointer.clientY, \r\n false, false, false, false, 0, null\r\n );\r\n pointer.target.dispatchEvent(simulatedEvent);\r\n }\r\n };\r\n\r\n //颜色选择器hsb转换\r\n Class.prototype.select = function(h, s, b, type){\r\n var that = this;\r\n var options = that.config;\r\n var hex = HSBToHEX({h:h, s:100, b:100});\r\n var color = HSBToHEX({h:h, s:s, b:b});\r\n var sidetop = h/360*180;\r\n var top = 180 - b/100*180 - 3;\r\n var left = s/100*260 - 3;\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n that.elemPicker.find('.' + PICKER_BASIS)[0].style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top\r\n ,\"left\": left\r\n });\r\n \r\n // if(type === 'change') return;\r\n\r\n // 选中的颜色\r\n // that.elemPicker.find('.' + PICKER_INPUT).find('input').val('#'+ color);\r\n };\r\n \r\n Class.prototype.pickerEvents = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN) //颜色盒子\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT + ' input') //颜色选择器表单\r\n \r\n ,pickerEvents = {\r\n //清空\r\n clear: function(othis){\r\n elemColorBoxSpan[0].style.background ='';\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n that.color = '';\r\n \r\n options.done && options.done('');\r\n that.removePicker();\r\n }\r\n \r\n //确认\r\n ,confirm: function(othis, change){\r\n var value = $.trim(elemPickerInput.val())\r\n ,colorValue\r\n ,hsb;\r\n \r\n if(value.indexOf(',') > -1){\r\n hsb = RGBToHSB(RGBSTo(value));\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n \r\n if((value.match(/[0-9]{1,3}/g) || []).length > 3 && elemColorBoxSpan.attr('lay-type') === 'rgba'){\r\n var left = value.slice(value.lastIndexOf(\",\") + 1, value.length - 1) * 280;\r\n that.elemPicker.find('.' + PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n elemColorBoxSpan[0].style.background = value;\r\n colorValue = value;\r\n }\r\n } else {\r\n hsb = HEXToHSB(value);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_CLOSE).addClass(ICON_PICKER_DOWN);\r\n }\r\n \r\n if(change === 'change'){\r\n that.select(hsb.h, hsb.s, hsb.b, change);\r\n options.change && options.change(colorValue);\r\n return;\r\n }\r\n that.color = value;\r\n \r\n options.done && options.done(value);\r\n that.removePicker(); \r\n }\r\n };\r\n \r\n //选择器面板点击事件\r\n that.elemPicker.on('click', '*[colorpicker-events]', function(){\r\n var othis = $(this)\r\n ,attrEvent = othis.attr('colorpicker-events');\r\n pickerEvents[attrEvent] && pickerEvents[attrEvent].call(this, othis);\r\n });\r\n \r\n //输入框事件\r\n elemPickerInput.on('keyup', function(e){\r\n var othis = $(this);\r\n pickerEvents.confirm.call(this, othis, e.keyCode === 13 ? null : 'change');\r\n });\r\n }\r\n\r\n // 颜色选择器输入\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 弹出颜色选择器\r\n that.elemColorBox.on('click' , function(){\r\n that.renderPicker();\r\n if($(ELEM_MAIN)[0]){\r\n that.val();\r\n that.side();\r\n }\r\n });\r\n };\r\n\r\n //全局事件\r\n (function(){\r\n //绑定关闭控件事件\r\n $doc.on(clickOrMousedown, function(e){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n var elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN);\r\n\r\n //如果点击的元素是颜色框\r\n if($(e.target).hasClass(ELEM) \r\n || $(e.target).parents('.'+ELEM)[0]\r\n ) return; \r\n \r\n //如果点击的元素是选择器\r\n if($(e.target).hasClass(ELEM_MAIN.replace(/\\./g, '')) \r\n || $(e.target).parents(ELEM_MAIN)[0]\r\n ) return; \r\n \r\n if(!that.elemPicker) return;\r\n \r\n if(that.color){\r\n var hsb = RGBToHSB(RGBSTo(that.color));\r\n that.select(hsb.h, hsb.s, hsb.b); \r\n } else {\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n }\r\n elemColorBoxSpan[0].style.background = that.color || '';\r\n \r\n // 取消选择的回调\r\n typeof options.cancel === 'function' && options.cancel(that.color);\r\n\r\n // 移除面板\r\n that.removePicker();\r\n });\r\n\r\n //自适应定位\r\n $win.on('resize', function(){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elemPicker || !$(ELEM_MAIN)[0]){\r\n return false;\r\n }\r\n that.position();\r\n });\r\n })();\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n //核心入口\r\n colorpicker.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, colorpicker);\r\n});\r\n","/**\r\n * element\r\n * 常用元素操作组件\r\n */\r\n \r\nlayui.define('jquery', function(exports){\r\n 'use strict';\r\n \r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'element';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var TITLE = '.layui-tab-title';\r\n \r\n var Element = function(){\r\n this.config = {};\r\n };\r\n \r\n // 全局设置\r\n Element.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 表单事件\r\n Element.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 外部 Tab 新增\r\n Element.prototype.tabAdd = function(filter, options){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var barElem = titElem.children('.layui-tab-bar');\r\n var contElem = tabElem.children('.layui-tab-content');\r\n var li = ' 0) layAttr.unshift(''); //向前插,预留空格\r\n return layAttr.join(' ');\r\n }() +'>'+ (options.title || 'unnaming') +'';\r\n \r\n barElem[0] ? barElem.before(li) : titElem.append(li);\r\n contElem.append('
                  '+ (options.content || '') +'
                  ');\r\n // call.hideTabMore(true);\r\n // 是否添加即切换\r\n options.change && this.tabChange(filter, options.id);\r\n titElem.data('LAY_TAB_CHANGE', options.change);\r\n call.tabAuto(options.change ? 'change' : null);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 删除\r\n Element.prototype.tabDelete = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n call.tabDelete(null, liElem);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 切换\r\n Element.prototype.tabChange = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n\r\n call.tabClick.call(liElem[0], {\r\n liElem: liElem\r\n });\r\n return this;\r\n };\r\n \r\n // 自定义 Tab 选项卡\r\n Element.prototype.tab = function(options){\r\n options = options || {};\r\n dom.on('click', options.headerElem, function(e){\r\n var index = $(this).index();\r\n call.tabClick.call(this, {\r\n index: index,\r\n options: options\r\n });\r\n });\r\n };\r\n \r\n \r\n // 动态改变进度条\r\n Element.prototype.progress = function(filter, percent){\r\n var ELEM = 'layui-progress';\r\n var elem = $('.'+ ELEM +'[lay-filter='+ filter +']');\r\n var elemBar = elem.find('.'+ ELEM +'-bar');\r\n var text = elemBar.find('.'+ ELEM +'-text');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n }).attr('lay-percent', percent);\r\n text.text(percent);\r\n return this;\r\n };\r\n \r\n var NAV_ELEM = '.layui-nav';\r\n var NAV_ITEM = 'layui-nav-item';\r\n var NAV_BAR = 'layui-nav-bar';\r\n var NAV_TREE = 'layui-nav-tree';\r\n var NAV_CHILD = 'layui-nav-child';\r\n var NAV_CHILD_C = 'layui-nav-child-c';\r\n var NAV_MORE = 'layui-nav-more';\r\n var NAV_DOWN = 'layui-icon-down';\r\n var NAV_ANIM = 'layui-anim layui-anim-upbit';\r\n \r\n // 基础事件体\r\n var call = {\r\n // Tab 点击\r\n tabClick: function(obj){\r\n obj = obj || {};\r\n var options = obj.options || {};\r\n var othis = obj.liElem || $(this);\r\n var parents = options.headerElem \r\n ? othis.parent() \r\n : othis.parents('.layui-tab').eq(0);\r\n var item = options.bodyElem \r\n ? $(options.bodyElem) \r\n : parents.children('.layui-tab-content').children('.layui-tab-item');\r\n var elemA = othis.find('a');\r\n var isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank'; // 是否存在跳转\r\n var unselect = typeof othis.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n var filter = parents.attr('lay-filter');\r\n\r\n // 下标\r\n var index = 'index' in obj \r\n ? obj.index \r\n : othis.parent().children('li').index(othis);\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(e, othis){\r\n var li = othis || $(this).parent();\r\n var index = li.parent().children('li').index(li);\r\n var tabElem = li.closest('.layui-tab');\r\n var item = tabElem.children('.layui-tab-content').children('.layui-tab-item');\r\n var filter = tabElem.attr('lay-filter');\r\n \r\n if(li.hasClass(THIS)){\r\n if (li.next()[0] && li.next().is('li')){\r\n call.tabClick.call(li.next()[0], {\r\n index: index + 1\r\n });\r\n } else if (li.prev()[0] && li.prev().is('li')){\r\n call.tabClick.call(li.prev()[0], null, index - 1);\r\n }\r\n }\r\n \r\n li.remove();\r\n item.eq(index).remove();\r\n setTimeout(function(){\r\n call.tabAuto();\r\n }, 50);\r\n \r\n layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread){\r\n var SCROLL = 'layui-tab-scroll';\r\n var MORE = 'layui-tab-more';\r\n var BAR = 'layui-tab-bar';\r\n var CLOSE = 'layui-tab-close';\r\n var that = this;\r\n \r\n $('.layui-tab').each(function(){\r\n var othis = $(this);\r\n var title = othis.children('.layui-tab-title');\r\n var item = othis.children('.layui-tab-content').children('.layui-tab-item');\r\n var STOPE = 'lay-stope=\"tabmore\"';\r\n var span = $('');\r\n\r\n if(that === window && device.ie != 8){\r\n // call.hideTabMore(true)\r\n }\r\n \r\n // 开启关闭图标\r\n if(othis.attr('lay-allowclose')){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0]){\r\n var close = $('');\r\n close.on('click', call.tabDelete);\r\n li.append(close);\r\n }\r\n });\r\n }\r\n \r\n if(typeof othis.attr('lay-unauto') === 'string') return;\r\n \r\n // 响应式\r\n if(\r\n title.prop('scrollWidth') > title.outerWidth() + 1 || (\r\n title.find('li').length && title.height() > function(height){\r\n return height + height/2;\r\n }(title.find('li').eq(0).height())\r\n )\r\n ){\r\n // 若执行是来自于切换,则自动展开\r\n (\r\n spread === 'change' && title.data('LAY_TAB_CHANGE')\r\n ) && title.addClass(MORE);\r\n \r\n if(title.find('.'+BAR)[0]) return;\r\n title.append(span);\r\n othis.attr('overflow', '');\r\n\r\n // 展开图标事件\r\n span.on('click', function(e){\r\n var isSpread = title.hasClass(MORE);\r\n title[isSpread ? 'removeClass' : 'addClass'](MORE);\r\n });\r\n } else {\r\n title.find('.'+ BAR).remove();\r\n othis.removeAttr('overflow');\r\n }\r\n });\r\n }\r\n // 隐藏更多 Tab\r\n ,hideTabMore: function(e){\r\n var tsbTitle = $('.layui-tab-title');\r\n if(e === true || $(e.target).attr('lay-stope') !== 'tabmore'){\r\n tsbTitle.removeClass('layui-tab-more');\r\n tsbTitle.find('.layui-tab-bar').attr('title','');\r\n }\r\n }\r\n \r\n //点击一级菜单\r\n /*\r\n ,clickThis: function(){\r\n var othis = $(this), parents = othis.parents(NAV_ELEM)\r\n ,filter = parents.attr('lay-filter')\r\n ,elemA = othis.find('a')\r\n ,unselect = typeof othis.attr('lay-unselect') === 'string';\r\n\r\n if(othis.find('.'+NAV_CHILD)[0]) return;\r\n \r\n if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank') && !unselect){\r\n parents.find('.'+THIS).removeClass(THIS);\r\n othis.addClass(THIS);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n )\r\n */\r\n \r\n // 点击菜单 - a 标签触发\r\n ,clickThis: function() {\r\n var othis = $(this);\r\n var parents = othis.closest(NAV_ELEM);\r\n var filter = parents.attr('lay-filter');\r\n var parent = othis.parent() ;\r\n var child = othis.siblings('.'+ NAV_CHILD);\r\n var unselect = typeof parent.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n \r\n // 满足点击选中的条件\r\n if (!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect) {\r\n if (!child[0]) {\r\n parents.find('.'+ THIS).removeClass(THIS);\r\n parent.addClass(THIS);\r\n }\r\n }\r\n \r\n // 若为垂直菜单\r\n if (parents.hasClass(NAV_TREE)) {\r\n var NAV_ITEMED = NAV_ITEM + 'ed'; // 用于标注展开状态\r\n var needExpand = !parent.hasClass(NAV_ITEMED); // 是否执行展开\r\n var ANIM_MS = 200; // 动画过渡毫秒数\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({\r\n \"display\": \"\" // 剔除动画生成的 style display,以适配外部样式的状态重置\r\n });\r\n // 避免导航滑块错位\r\n parents.children('.'+ NAV_BAR).css({\r\n opacity: 0\r\n })\r\n };\r\n\r\n // 是否正处于动画中的状态\r\n if (child.is(':animated')) return;\r\n\r\n // 剔除可能存在的 CSS3 动画类\r\n child.removeClass(NAV_ANIM);\r\n\r\n // 若有子菜单,则对其执行展开或收缩\r\n if (child[0]) {\r\n if (needExpand) {\r\n // 先执行 slideDown 动画,再标注展开状态样式,避免元素 `block` 状态导致动画无效\r\n child.slideDown(ANIM_MS, complete);\r\n parent.addClass(NAV_ITEMED);\r\n } else {\r\n // 先取消展开状态样式,再将元素临时显示,避免 `none` 状态导致 slideUp 动画无效\r\n parent.removeClass(NAV_ITEMED);\r\n child.show().slideUp(ANIM_MS, complete);\r\n }\r\n\r\n // 手风琴 --- 收缩兄弟展开项\r\n if (typeof parents.attr('lay-accordion') === 'string' || parents.attr('lay-shrink') === 'all') {\r\n var parentSibs = parent.siblings('.'+ NAV_ITEMED);\r\n parentSibs.removeClass(NAV_ITEMED);\r\n parentSibs.children('.'+ NAV_CHILD).show().stop().slideUp(ANIM_MS, complete);\r\n }\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n \r\n // 折叠面板\r\n ,collapse: function(){\r\n var othis = $(this);\r\n var icon = othis.find('.layui-colla-icon');\r\n var elemCont = othis.siblings('.layui-colla-content');\r\n var parents = othis.parents('.layui-collapse').eq(0);\r\n var filter = parents.attr('lay-filter');\r\n var isNone = elemCont.css('display') === 'none';\r\n \r\n // 是否手风琴\r\n if(typeof parents.attr('lay-accordion') === 'string'){\r\n var show = parents.children('.layui-colla-item').children('.'+SHOW);\r\n show.siblings('.layui-colla-title').children('.layui-colla-icon').html('');\r\n show.removeClass(SHOW);\r\n }\r\n \r\n elemCont[isNone ? 'addClass' : 'removeClass'](SHOW);\r\n icon.html(isNone ? '' : '');\r\n \r\n layui.event.call(this, MOD_NAME, 'collapse('+ filter +')', {\r\n title: othis\r\n ,content: elemCont\r\n ,show: isNone\r\n });\r\n }\r\n };\r\n \r\n // 初始化元素操作\r\n Element.prototype.init = function(type, filter){\r\n var that = this, elemFilter = function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(){\r\n call.tabAuto.call({});\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(){\r\n var TIME = 200;\r\n var timer = {};\r\n var timerMore = {};\r\n var timeEnd = {};\r\n var NAV_TITLE = 'layui-nav-title';\r\n \r\n // 滑块跟随\r\n var follow = function(bar, nav, index) {\r\n var othis = $(this);\r\n var child = othis.find('.'+NAV_CHILD);\r\n\r\n // 是否垂直导航菜单\r\n if (nav.hasClass(NAV_TREE)) {\r\n // 无子菜单时跟随\r\n if (!child[0]) {\r\n var thisA = othis.children('.'+ NAV_TITLE);\r\n bar.css({\r\n top: othis.offset().top - nav.offset().top,\r\n height: (thisA[0] ? thisA : othis).outerHeight(),\r\n opacity: 1\r\n });\r\n }\r\n } else {\r\n child.addClass(NAV_ANIM);\r\n \r\n // 若居中对齐\r\n if (child.hasClass(NAV_CHILD_C)) {\r\n child.css({\r\n left: -(child.outerWidth() - othis.width()) / 2\r\n });\r\n }\r\n \r\n // 滑块定位\r\n if (child[0]) { // 若有子菜单,则滑块消失\r\n bar.css({\r\n left: bar.position().left + bar.width() / 2,\r\n width: 0,\r\n opacity: 0\r\n });\r\n } else { // bar 跟随\r\n bar.css({\r\n left: othis.position().left + parseFloat(othis.css('marginLeft')),\r\n top: othis.position().top + othis.height() - bar.height()\r\n });\r\n }\r\n \r\n // 渐显滑块并适配宽度\r\n timer[index] = setTimeout(function() {\r\n bar.css({\r\n width: child[0] ? 0 : othis.width(),\r\n opacity: child[0] ? 0 : 1\r\n });\r\n }, device.ie && device.ie < 10 ? 0 : TIME);\r\n \r\n // 显示子菜单\r\n clearTimeout(timeEnd[index]);\r\n if (child.css('display') === 'block') {\r\n clearTimeout(timerMore[index]);\r\n }\r\n timerMore[index] = setTimeout(function(){\r\n child.addClass(SHOW);\r\n othis.find('.'+NAV_MORE).addClass(NAV_MORE+'d');\r\n }, 300);\r\n }\r\n };\r\n \r\n // 遍历导航\r\n $(NAV_ELEM + elemFilter).each(function(index) {\r\n var othis = $(this);\r\n var bar = $('');\r\n var itemElem = othis.find('.'+NAV_ITEM);\r\n \r\n // hover 滑动效果\r\n if (!othis.find('.'+NAV_BAR)[0]) {\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).on('mouseenter', function() {\r\n follow.call(this, bar, othis, index);\r\n }).on('mouseleave', function() { // 鼠标移出\r\n // 是否为垂直导航\r\n if (othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n height: 0,\r\n opacity: 0\r\n });\r\n } else {\r\n // 隐藏子菜单\r\n clearTimeout(timerMore[index]);\r\n timerMore[index] = setTimeout(function(){\r\n othis.find('.'+ NAV_CHILD).removeClass(SHOW);\r\n othis.find('.'+ NAV_MORE).removeClass(NAV_MORE +'d');\r\n }, 300);\r\n }\r\n });\r\n\r\n // 鼠标离开当前菜单时\r\n othis.on('mouseleave', function() {\r\n clearTimeout(timer[index])\r\n timeEnd[index] = setTimeout(function() {\r\n if (!othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n width: 0,\r\n left: bar.position().left + bar.width() / 2,\r\n opacity: 0\r\n });\r\n }\r\n }, TIME);\r\n });\r\n }\r\n \r\n // 展开子菜单\r\n itemElem.find('a').each(function() {\r\n var thisA = $(this);\r\n var parent = thisA.parent();\r\n var child = thisA.siblings('.'+ NAV_CHILD);\r\n \r\n // 输出小箭头\r\n if (child[0] && !thisA.children('.'+ NAV_MORE)[0]) {\r\n thisA.append('');\r\n }\r\n \r\n thisA.off('click', call.clickThis).on('click', call.clickThis); // 点击菜单\r\n });\r\n });\r\n }\r\n \r\n //面包屑\r\n ,breadcrumb: function(){\r\n var ELEM = '.layui-breadcrumb';\r\n \r\n $(ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,ATTE_SPR = 'lay-separator'\r\n ,separator = othis.attr(ATTE_SPR) || '/'\r\n ,aNode = othis.find('a');\r\n if(aNode.next('span['+ ATTE_SPR +']')[0]) return;\r\n aNode.each(function(index){\r\n if(index === aNode.length - 1) return;\r\n $(this).after(''+ separator +'');\r\n });\r\n othis.css('visibility', 'visible');\r\n });\r\n }\r\n \r\n //进度条\r\n ,progress: function(){\r\n var ELEM = 'layui-progress';\r\n $('.' + ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,elemBar = othis.find('.layui-progress-bar')\r\n ,percent = elemBar.attr('lay-percent');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n });\r\n \r\n if(othis.attr('lay-showpercent')){\r\n setTimeout(function(){\r\n elemBar.html(''+ percent +'');\r\n },350);\r\n }\r\n });\r\n }\r\n \r\n //折叠面板\r\n ,collapse: function(){\r\n var ELEM = 'layui-collapse';\r\n \r\n $('.' + ELEM + elemFilter).each(function(){\r\n var elemItem = $(this).find('.layui-colla-item')\r\n elemItem.each(function(){\r\n var othis = $(this)\r\n ,elemTitle = othis.find('.layui-colla-title')\r\n ,elemCont = othis.find('.layui-colla-content')\r\n ,isNone = elemCont.css('display') === 'none';\r\n \r\n //初始状态\r\n elemTitle.find('.layui-colla-icon').remove();\r\n elemTitle.append(''+ (isNone ? '' : '') +'');\r\n\r\n //点击标题\r\n elemTitle.off('click', call.collapse).on('click', call.collapse);\r\n }); \r\n \r\n });\r\n }\r\n };\r\n\r\n return items[type] ? items[type]() : layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n \r\n Element.prototype.render = Element.prototype.init;\r\n\r\n var element = new Element();\r\n var dom = $(document);\r\n \r\n $(function(){\r\n element.render();\r\n });\r\n\r\n dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换\r\n // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab\r\n $(window).on('resize', call.tabAuto); // 自适应\r\n \r\n exports(MOD_NAME, element);\r\n});\r\n\r\n","/**\r\n * upload\r\n * 上传组件\r\n */\r\n \r\nlayui.define(['lay', 'layer'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var layer = layui.layer;\r\n var device = layui.device();\r\n\r\n // 模块名\r\n var MOD_NAME = 'upload';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var upload = {\r\n config: {}, // 全局配置项\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0, // 索引\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n upload: function(files){\r\n that.upload.call(that, files);\r\n },\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n }\r\n };\r\n \r\n // 字符常量\r\n var ELEM = 'layui-upload';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_FILE = 'layui-upload-file';\r\n var ELEM_FORM = 'layui-upload-form';\r\n var ELEM_IFRAME = 'layui-upload-iframe';\r\n var ELEM_CHOOSE = 'layui-upload-choose';\r\n var ELEM_DRAG = 'layui-upload-drag';\r\n var UPLOADING = 'UPLOADING';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++upload.index;\r\n that.config = $.extend({}, that.config, upload.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n accept: 'images', // 允许上传的文件类型:images/file/video/audio\r\n exts: '', // 允许上传的文件后缀名\r\n auto: true, // 是否选完文件后自动上传\r\n bindAction: '', // 手动上传触发的元素\r\n url: '', // 上传地址\r\n force: '', // 强制规定返回的数据格式,目前只支持是否强制 json\r\n field: 'file', // 文件字段名\r\n acceptMime: '', // 筛选出的文件类型,默认为所有文件\r\n method: 'post', // 请求上传的 http 类型\r\n data: {}, // 请求上传的额外参数\r\n drag: true, // 是否允许拖拽上传\r\n size: 0, // 文件限制大小,默认不限制\r\n number: 0, // 允许同时上传的文件数,默认不限制\r\n multiple: false, // 是否允许多文件上传,不支持 ie8-9\r\n text: { // 自定义提示文本\r\n \"cross-domain\": \"Cross-domain requests are not supported\", // 跨域\r\n \"data-format-error\": \"Please return JSON data format\", // 数据格式错误\r\n \"check-error\": \"\", // 文件格式校验失败\r\n \"error\": \"\", // 上传失败\r\n \"limit-number\": null, // 限制 number 属性的提示 --- function\r\n \"limit-size\": null // 限制 size 属性的提示 --- function\r\n }\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render(true);\r\n };\r\n \r\n // 初始渲染\r\n Class.prototype.render = function(rerender){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if (elem.length > 1) {\r\n layui.each(elem, function() {\r\n upload.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0], {\r\n attr: elem.attr('lay-data') ? 'lay-data' : null // 兼容旧版的 lay-data 属性\r\n }));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if (!rerender && elem[0] && elem.data(MOD_INDEX)) {\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.bindAction = $(options.bindAction);\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n that.file();\r\n that.events();\r\n };\r\n \r\n //追加文件域\r\n Class.prototype.file = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemFile = that.elemFile = $([\r\n ''\r\n ].join(''));\r\n var next = options.elem.next();\r\n \r\n if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){\r\n next.remove();\r\n }\r\n \r\n //包裹ie8/9容器\r\n if(device.ie && device.ie < 10){\r\n options.elem.wrap('
                  ');\r\n }\r\n \r\n that.isFile() ? (\r\n that.elemFile = options.elem,\r\n options.field = options.elem[0].name\r\n ) : options.elem.after(elemFile);\r\n \r\n //初始化ie8/9的Form域\r\n if(device.ie && device.ie < 10){\r\n that.initIE();\r\n }\r\n };\r\n \r\n //ie8-9初始化\r\n Class.prototype.initIE = function(){\r\n var that = this;\r\n var options = that.config;\r\n var iframe = $('');\r\n var elemForm = $(['
                  '\r\n ,''].join(''));\r\n \r\n //插入iframe \r\n $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);\r\n\r\n //包裹文件域\r\n if(!options.elem.next().hasClass(ELEM_FORM)){\r\n that.elemFile.wrap(elemForm); \r\n \r\n //追加额外的参数\r\n options.elem.next('.'+ ELEM_FORM).append(function(){\r\n var arr = [];\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n arr.push('')\r\n });\r\n return arr.join('');\r\n }());\r\n }\r\n };\r\n \r\n //异常提示\r\n Class.prototype.msg = function(content){\r\n return layer.msg(content, {\r\n icon: 2,\r\n shift: 6\r\n });\r\n };\r\n \r\n //判断绑定元素是否为文件域本身\r\n Class.prototype.isFile = function(){\r\n var elem = this.config.elem[0];\r\n if(!elem) return;\r\n return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'\r\n }\r\n \r\n //预读图片信息\r\n Class.prototype.preview = function(callback){\r\n var that = this;\r\n if(window.FileReader){\r\n layui.each(that.chooseFiles, function(index, file){\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file); \r\n reader.onload = function(){\r\n callback && callback(index, file, this.result);\r\n }\r\n });\r\n }\r\n };\r\n \r\n // 执行上传\r\n Class.prototype.upload = function(files, type){\r\n var that = this;\r\n var options = that.config;\r\n var text = options.text || {};\r\n var elemFile = that.elemFile[0];\r\n\r\n // 获取文件队列\r\n var getFiles = function(){\r\n return files || that.files || that.chooseFiles || elemFile.files;\r\n };\r\n \r\n // 高级浏览器处理方式,支持跨域\r\n var ajaxSend = function(){\r\n var successful = 0;\r\n var failed = 0;\r\n var items = getFiles();\r\n\r\n // 多文件全部上传完毕的回调\r\n var allDone = function(){\r\n if(options.multiple && successful + failed === that.fileLength){\r\n typeof options.allDone === 'function' && options.allDone({\r\n total: that.fileLength,\r\n successful: successful,\r\n failed: failed\r\n });\r\n }\r\n };\r\n\r\n // 发送请求\r\n var request = function(sets){\r\n var formData = new FormData();\r\n\r\n // 恢复文件状态\r\n var resetFileState = function(file) {\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n delete file[UPLOADING];\r\n });\r\n } else {\r\n delete file[UPLOADING];\r\n }\r\n };\r\n\r\n // 追加额外的参数\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' \r\n ? sets.unified ? value() : value(sets.index, sets.file)\r\n : value;\r\n formData.append(key, value);\r\n });\r\n\r\n /*\r\n * 添加 file 到表单域\r\n */\r\n\r\n // 是否统一上传\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n if (file[UPLOADING]) return;\r\n file[UPLOADING] = true; // 上传中的标记\r\n formData.append(options.field, file);\r\n });\r\n } else { // 逐一上传\r\n if (sets.file[UPLOADING]) return;\r\n formData.append(options.field, sets.file);\r\n sets.file[UPLOADING] = true; // 上传中的标记\r\n }\r\n\r\n // ajax 参数\r\n var opts = {\r\n url: options.url,\r\n type: 'post', // 统一采用 post 上传\r\n data: formData,\r\n dataType: options.dataType || 'json',\r\n contentType: false,\r\n processData: false,\r\n headers: options.headers || {},\r\n success: function(res){ // 成功回调\r\n options.unified ? (successful += that.fileLength) : successful++;\r\n done(sets.index, res);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n },\r\n error: function(e){ // 异常回调\r\n options.unified ? (failed += that.fileLength) : failed++;\r\n that.msg(text['error'] || [\r\n 'Upload failed, please try again.',\r\n 'status: '+ (e.status || '') +' - '+ (e.statusText || 'error')\r\n ].join('
                  '));\r\n error(sets.index);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n }\r\n };\r\n\r\n // 进度条\r\n if(typeof options.progress === 'function'){\r\n opts.xhr = function(){\r\n var xhr = $.ajaxSettings.xhr();\r\n // 上传进度\r\n xhr.upload.addEventListener(\"progress\", function (obj) {\r\n if(obj.lengthComputable){\r\n var percent = Math.floor((obj.loaded/obj.total)* 100); // 百分比\r\n options.progress(percent, (options.item ? options.item[0] : options.elem[0]) , obj, sets.index);\r\n }\r\n });\r\n return xhr;\r\n }\r\n }\r\n $.ajax(opts);\r\n };\r\n\r\n // 多文件是否一起上传\r\n if(options.unified){\r\n request({\r\n unified: true,\r\n index: 0\r\n });\r\n } else {\r\n layui.each(items, function(index, file){\r\n request({\r\n index: index,\r\n file: file\r\n });\r\n });\r\n }\r\n };\r\n \r\n // 低版本 IE 处理方式,不支持跨域\r\n var iframeSend = function(){\r\n var iframe = $('#'+ ELEM_IFRAME);\r\n \r\n that.elemFile.parent().submit();\r\n\r\n // 获取响应信息\r\n clearInterval(Class.timer);\r\n Class.timer = setInterval(function() {\r\n var res, iframeBody = iframe.contents().find('body');\r\n try {\r\n res = iframeBody.text();\r\n } catch(e) {\r\n that.msg(text['cross-domain']); \r\n clearInterval(Class.timer);\r\n error();\r\n }\r\n if(res){\r\n clearInterval(Class.timer);\r\n iframeBody.html('');\r\n done(0, res);\r\n }\r\n }, 30); \r\n };\r\n \r\n // 统一回调\r\n var done = function(index, res){\r\n that.elemFile.next('.'+ ELEM_CHOOSE).remove();\r\n elemFile.value = '';\r\n \r\n if(options.force === 'json'){\r\n if(typeof res !== 'object'){\r\n try {\r\n res = JSON.parse(res);\r\n } catch(e){\r\n res = {};\r\n return that.msg(text['data-format-error']);\r\n }\r\n }\r\n }\r\n \r\n typeof options.done === 'function' && options.done(res, index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n // 统一网络异常回调\r\n var error = function(index){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n var check;\r\n var exts = options.exts;\r\n var value = function(){\r\n var arr = [];\r\n layui.each(files || that.chooseFiles, function(i, item){\r\n arr.push(item.name);\r\n });\r\n return arr;\r\n }();\r\n \r\n // 回调函数返回的参数\r\n var args = {\r\n // 预览\r\n preview: function(callback){\r\n that.preview(callback);\r\n },\r\n // 上传\r\n upload: function(index, file){\r\n var thisFile = {};\r\n thisFile[index] = file;\r\n that.upload(thisFile);\r\n },\r\n // 追加文件到队列\r\n pushFile: function(){\r\n that.files = that.files || {};\r\n layui.each(that.chooseFiles, function(index, item){\r\n that.files[index] = item;\r\n });\r\n return that.files;\r\n },\r\n // 重置文件\r\n resetFile: function(index, file, filename){\r\n var newFile = new File([file], filename);\r\n that.files = that.files || {};\r\n that.files[index] = newFile;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n // 上传前的回调 - 如果回调函数明确返回 false,则停止上传\r\n if(options.before && (options.before(args) === false)) return;\r\n\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n \r\n ajaxSend();\r\n };\r\n \r\n // 文件类型名称\r\n var typeName = ({\r\n file: '文件',\r\n images: '图片',\r\n video: '视频',\r\n audio: '音频'\r\n })[options.accept] || '文件';\r\n\r\n // 校验文件格式\r\n value = value.length === 0 \r\n ? ((elemFile.value.match(/[^\\/\\\\]+\\..+/g)||[]) || '')\r\n : value;\r\n \r\n // 若文件域值为空\r\n if (value.length === 0) return;\r\n \r\n // 根据文件类型校验\r\n switch(options.accept){\r\n case 'file': // 一般文件\r\n layui.each(value, function(i, item){\r\n if(exts && !RegExp('.\\\\.('+ exts +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'video': // 视频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'audio': // 音频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n default: // 图片文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'jpg|png|gif|bmp|jpeg|svg') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n }\r\n \r\n // 校验失败提示\r\n if(check){\r\n that.msg(text['check-error'] || ('选择的'+ typeName +'中包含不支持的格式'));\r\n return elemFile.value = '';\r\n }\r\n\r\n // 选择文件的回调 \r\n if(type === 'choose' || options.auto){\r\n options.choose && options.choose(args);\r\n if(type === 'choose'){\r\n return;\r\n }\r\n }\r\n \r\n // 检验文件数量\r\n that.fileLength = function(){\r\n var length = 0;\r\n var items = getFiles();\r\n layui.each(items, function(){\r\n length++;\r\n });\r\n return length;\r\n }();\r\n \r\n if(options.number && that.fileLength > options.number){\r\n return that.msg(typeof text['limit-number'] === 'function' \r\n ? text['limit-number'](options, that.fileLength) \r\n : (\r\n '同时最多只能上传: '+ options.number + ' 个文件'\r\n +'
                  您当前已经选择了: '+ that.fileLength +' 个文件'\r\n ));\r\n }\r\n \r\n // 检验文件大小\r\n if(options.size > 0 && !(device.ie && device.ie < 10)){\r\n var limitSize;\r\n \r\n layui.each(getFiles(), function(index, file){\r\n if(file.size > 1024*options.size){\r\n var size = options.size/1024;\r\n size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'\r\n elemFile.value = '';\r\n limitSize = size;\r\n }\r\n });\r\n if(limitSize) return that.msg(typeof text['limit-size'] === 'function' \r\n ? text['limit-size'](options, limitSize) \r\n : '文件大小不能超过 '+ limitSize);\r\n }\r\n\r\n send();\r\n };\r\n \r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 设置当前选择的文件队列\r\n var setChooseFile = function(files){\r\n that.chooseFiles = {};\r\n layui.each(files, function(i, item){\r\n var time = new Date().getTime();\r\n that.chooseFiles[time + '-' + i] = item;\r\n });\r\n };\r\n \r\n // 设置选择的文本\r\n var setChooseText = function(files, filename){\r\n var elemFile = that.elemFile;\r\n var item = options.item ? options.item : options.elem;\r\n var value = files.length > 1 \r\n ? files.length + '个文件' \r\n : ((files[0] || {}).name || (elemFile[0].value.match(/[^\\/\\\\]+\\..+/g)||[]) || '');\r\n \r\n if(elemFile.next().hasClass(ELEM_CHOOSE)){\r\n elemFile.next().remove();\r\n }\r\n that.upload(null, 'choose');\r\n if(that.isFile() || options.choose) return;\r\n elemFile.after(''+ value +'');\r\n };\r\n\r\n // 点击上传容器\r\n options.elem.off('upload.start').on('upload.start', function(){\r\n var othis = $(this);\r\n\r\n that.config.item = othis;\r\n that.elemFile[0].click();\r\n });\r\n \r\n // 拖拽上传\r\n if(!(device.ie && device.ie < 10)){\r\n options.elem.off('upload.over').on('upload.over', function(){\r\n var othis = $(this)\r\n othis.attr('lay-over', '');\r\n })\r\n .off('upload.leave').on('upload.leave', function(){\r\n var othis = $(this)\r\n othis.removeAttr('lay-over');\r\n })\r\n .off('upload.drop').on('upload.drop', function(e, param){\r\n var othis = $(this);\r\n var files = param.originalEvent.dataTransfer.files || [];\r\n \r\n othis.removeAttr('lay-over');\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n }\r\n \r\n // 文件选择\r\n that.elemFile.on('change', function(){\r\n var files = this.files || [];\r\n\r\n if(files.length === 0) return;\r\n\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n \r\n // 手动触发上传\r\n options.bindAction.off('upload.action').on('upload.action', function(){\r\n that.upload();\r\n });\r\n\r\n\r\n // 防止事件重复绑定\r\n if(options.elem.data(MOD_INDEX)) return;\r\n\r\n\r\n // 目标元素 click 事件\r\n options.elem.on('click', function(){\r\n if(that.isFile()) return;\r\n $(this).trigger('upload.start');\r\n });\r\n \r\n // 目标元素 drop 事件\r\n if(options.drag){\r\n options.elem.on('dragover', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.over');\r\n }).on('dragleave', function(e){\r\n $(this).trigger('upload.leave');\r\n }).on('drop', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.drop', e);\r\n });\r\n }\r\n \r\n // 手动上传时触发上传的元素 click 事件\r\n options.bindAction.on('click', function(){\r\n $(this).trigger('upload.action');\r\n });\r\n \r\n // 绑定元素索引\r\n options.elem.data(MOD_INDEX, options.id);\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n\r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 核心入口 \r\n upload.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, upload);\r\n});\r\n\r\n","/**\r\n * form 表单组件\r\n */\r\n \r\nlayui.define(['lay', 'layer', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'form';\r\n var ELEM = '.layui-form';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n var OUT_OF_RANGE = 'layui-input-number-out-of-range';\r\n \r\n var Form = function(){\r\n this.config = {\r\n // 内置的验证规则\r\n verify: {\r\n required: function(value) {\r\n if (!/[\\S]+/.test(value)) {\r\n return '必填项不能为空';\r\n }\r\n },\r\n phone: function(value) {\r\n var EXP = /^1\\d{10}$/;\r\n if (value && !EXP.test(value)) {\r\n return '手机号格式不正确';\r\n }\r\n },\r\n email: function(value) {\r\n var EXP = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n if (value && !EXP.test(value)) {\r\n return '邮箱格式不正确';\r\n }\r\n },\r\n url: function(value) {\r\n var EXP = /^(#|(http(s?)):\\/\\/|\\/\\/)[^\\s]+\\.[^\\s]+$/;\r\n if (value && !EXP.test(value)) {\r\n return '链接格式不正确';\r\n }\r\n },\r\n number: function(value){\r\n if (value && isNaN(value)) {\r\n return '只能填写数字';\r\n }\r\n },\r\n date: function(value){\r\n var EXP = /^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/;\r\n if (value && !EXP.test(value)) {\r\n return '日期格式不正确';\r\n }\r\n },\r\n identity: function(value) {\r\n var EXP = /(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/;\r\n if (value && !EXP.test(value)) {\r\n return '身份证号格式不正确';\r\n }\r\n }\r\n },\r\n autocomplete: null // 全局 autocomplete 状态。 null 表示不干预\r\n };\r\n };\r\n \r\n // 全局设置\r\n Form.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 验证规则设定\r\n Form.prototype.verify = function(settings){\r\n var that = this;\r\n $.extend(true, that.config.verify, settings);\r\n return that;\r\n };\r\n\r\n // 获取指定表单对象\r\n Form.prototype.getFormElem = function(filter){\r\n return $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n };\r\n \r\n // 表单事件\r\n Form.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 赋值/取值\r\n Form.prototype.val = function(filter, object){\r\n var that = this\r\n ,formElem = that.getFormElem(filter);\r\n \r\n // 遍历\r\n formElem.each(function(index, item){\r\n var itemForm = $(this);\r\n \r\n // 赋值\r\n layui.each(object, function(key, value){\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]')\r\n ,type;\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) return;\r\n type = itemElem[0].type;\r\n \r\n // 如果为复选框\r\n if(type === 'checkbox'){\r\n itemElem[0].checked = value;\r\n } else if(type === 'radio') { // 如果为单选框\r\n itemElem.each(function(){\r\n this.checked = this.value == value;\r\n });\r\n } else { // 其它类型的表单\r\n itemElem.val(value);\r\n }\r\n });\r\n });\r\n \r\n form.render(null, filter);\r\n \r\n // 返回值\r\n return that.getValue(filter);\r\n };\r\n \r\n // 取值\r\n Form.prototype.getValue = function(filter, itemForm){\r\n itemForm = itemForm || this.getFormElem(filter);\r\n \r\n var nameIndex = {} // 数组 name 索引\r\n ,field = {}\r\n ,fieldElem = itemForm.find('input,select,textarea') // 获取所有表单域\r\n \r\n layui.each(fieldElem, function(_, item){ \r\n var othis = $(this)\r\n ,init_name; // 初始 name\r\n \r\n item.name = (item.name || '').replace(/^\\s*|\\s*&/, '');\r\n if(!item.name) return;\r\n \r\n // 用于支持数组 name\r\n if(/^.*\\[\\]$/.test(item.name)){\r\n var key = item.name.match(/^(.*)\\[\\]$/g)[0];\r\n nameIndex[key] = nameIndex[key] | 0;\r\n init_name = item.name.replace(/^(.*)\\[\\]$/, '$1['+ (nameIndex[key]++) +']');\r\n }\r\n \r\n if(/^(checkbox|radio)$/.test(item.type) && !item.checked) return; // 复选框和单选框未选中,不记录字段 \r\n field[init_name || item.name] = item.value;\r\n });\r\n \r\n return field;\r\n };\r\n \r\n // 表单控件渲染\r\n Form.prototype.render = function(type, filter){\r\n var that = this;\r\n var options = that.config;\r\n var elemForm = $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n var items = {\r\n // 输入框\r\n input: function(elem){\r\n var inputs = elem || elemForm.find('input,textarea');\r\n\r\n // 初始化全局的 autocomplete\r\n options.autocomplete && inputs.attr('autocomplete', options.autocomplete);\r\n\r\n var handleInputNumber = function(elem, eventType){\r\n var that = this;\r\n var rawValue = elem.val();\r\n var value = Number(rawValue);\r\n var step = Number(elem.attr('step')) || 1; // 加减的数字间隔\r\n var min = Number(elem.attr('min'));\r\n var max = Number(elem.attr('max'));\r\n var precision = Number(elem.attr('lay-precision'));\r\n var noAction = eventType !== 'click' && rawValue === ''; // 初始渲染和失焦时空值不作处理\r\n var isInit = eventType === 'init';\r\n\r\n if(isNaN(value)) return; // 若非数字,则不作处理\r\n\r\n if(eventType === 'click'){\r\n var isDecrement = !!$(that).index() // 0: icon-up, 1: icon-down\r\n value = isDecrement ? value - step : value + step;\r\n }\r\n\r\n // 获取小数点后位数\r\n var decimals = function(step){\r\n var decimals = (step.toString().match(/\\.(\\d+$)/) || [])[1] || '';\r\n return decimals.length;\r\n };\r\n\r\n precision = precision >= 0 ? precision : Math.max(decimals(step), decimals(rawValue));\r\n\r\n if(!noAction){\r\n // 初始渲染时只处理数字精度\r\n if(!isInit){\r\n if(value <= min) value = min;\r\n if(value >= max) value = max;\r\n }\r\n if(precision) value = value.toFixed(precision);\r\n elem.val(value);\r\n }\r\n\r\n // 超出范围的样式\r\n var outOfRange = value < min || value > max;\r\n elem[outOfRange && !noAction ? 'addClass' : 'removeClass'](OUT_OF_RANGE);\r\n\r\n if(isInit) return;\r\n\r\n // 更新按钮状态\r\n var controlBtn = {\r\n increment: elem.next().find('.layui-icon-up'),\r\n decrement: elem.next().find('.layui-icon-down')\r\n }\r\n controlBtn.increment[(value >= max && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n controlBtn.decrement[(value <= min && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n }\r\n\r\n // 初始化输入框动态点缀\r\n elemForm.find('input[lay-affix],textarea[lay-affix]').each(function(){\r\n var othis = $(this);\r\n var affix = othis.attr('lay-affix');\r\n var CLASS_WRAP = 'layui-input-wrap';\r\n var CLASS_SUFFIX = 'layui-input-suffix';\r\n var CLASS_AFFIX = 'layui-input-affix';\r\n var disabled = othis.is('[disabled]') || othis.is('[readonly]');\r\n\r\n // 根据是否空值来显示或隐藏元素\r\n var showAffix = function(elem, value){\r\n elem = $(elem);\r\n if(!elem[0]) return;\r\n elem[$.trim(value) ? 'removeClass' : 'addClass'](HIDE);\r\n };\r\n\r\n // 渲染动态点缀内容\r\n var renderAffix = function(opts){\r\n opts = $.extend({}, (affixOptions[affix] || {\r\n value: affix\r\n }), opts, lay.options(othis[0]));\r\n var elemAffix = $('
                  ');\r\n var value = layui.isArray(opts.value) ? opts.value : [opts.value];\r\n var elemIcon = $(function(){\r\n var arr = [];\r\n layui.each(value, function(i, item){\r\n arr.push('');\r\n });\r\n return arr.join('');\r\n }());\r\n \r\n elemAffix.append(elemIcon); // 插入图标元素\r\n\r\n // 追加 className\r\n if(opts.split) elemAffix.addClass('layui-input-split');\r\n if(opts.className) elemAffix.addClass(opts.className);\r\n\r\n // 移除旧的元素\r\n var hasElemAffix = othis.next('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n // 是否在规定的容器中\r\n if(!othis.parent().hasClass(CLASS_WRAP)){\r\n othis.wrap('
                  ');\r\n }\r\n\r\n // 是否已经存在后缀元素\r\n var hasElemSuffix = othis.next('.'+ CLASS_SUFFIX);\r\n if(hasElemSuffix[0]){\r\n hasElemAffix = hasElemSuffix.find('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n hasElemSuffix.prepend(elemAffix);\r\n\r\n othis.css('padding-right', function(){\r\n var paddingRight = othis.closest('.layui-input-group')[0] \r\n ? 0 \r\n : hasElemSuffix.outerWidth();\r\n return paddingRight + elemAffix.outerWidth()\r\n });\r\n } else {\r\n elemAffix.addClass(CLASS_SUFFIX);\r\n othis.after(elemAffix);\r\n }\r\n\r\n opts.show === 'auto' && showAffix(elemAffix, othis.val());\r\n \r\n typeof opts.init === 'function' && opts.init.call(this, othis, opts);\r\n \r\n // 输入事件\r\n othis.on('input propertychange', function(){\r\n var value = this.value;\r\n opts.show === 'auto' && showAffix(elemAffix, value);\r\n });\r\n\r\n // 失去焦点事件\r\n othis.on('blur', function(){\r\n typeof opts.blur === 'function' && opts.blur.call(this, othis, opts);\r\n });\r\n \r\n // 点击动态后缀事件\r\n elemIcon.on('click', function(){\r\n var inputFilter = othis.attr('lay-filter');\r\n if($(this).hasClass(DISABLED)) return;\r\n \r\n typeof opts.click === 'function' && opts.click.call(this, othis, opts);\r\n \r\n // 对外事件\r\n layui.event.call(this, MOD_NAME, 'input-affix('+ inputFilter +')', {\r\n elem: othis[0],\r\n affix: affix,\r\n options: opts\r\n });\r\n });\r\n };\r\n \r\n // 动态点缀配置项\r\n var affixOptions = {\r\n eye: { // 密码显隐\r\n value: 'eye-invisible',\r\n click: function(elem, opts){ // 事件\r\n var SHOW_NAME = 'LAY_FORM_INPUT_AFFIX_SHOW';\r\n var isShow = elem.data(SHOW_NAME);\r\n \r\n elem.attr('type', isShow ? 'password' : 'text').data(SHOW_NAME, !isShow);\r\n\r\n renderAffix({\r\n value: isShow ? 'eye-invisible' : 'eye'\r\n });\r\n }\r\n },\r\n clear: { // 内容清除\r\n value: 'clear',\r\n click: function(elem){\r\n elem.val('').focus();\r\n showAffix($(this).parent(), null);\r\n },\r\n show: 'auto', // 根据输入框值是否存在来显示或隐藏点缀图标\r\n disabled: disabled // 跟随输入框禁用状态\r\n },\r\n number: { // 数字输入框\r\n value: ['up', 'down'],\r\n split: true,\r\n className: 'layui-input-number',\r\n disabled: othis.is('[disabled]'), // 跟随输入框禁用状态\r\n init: function(elem){\r\n handleInputNumber.call(this, elem, 'init')\r\n },\r\n click: function(elem){\r\n handleInputNumber.call(this, elem, 'click')\r\n },\r\n blur: function(elem){\r\n handleInputNumber.call(this, elem, 'blur')\r\n },\r\n }\r\n };\r\n \r\n renderAffix();\r\n });\r\n }\r\n \r\n // 下拉选择框\r\n ,select: function(elem){\r\n var TIPS = '请选择';\r\n var CLASS = 'layui-form-select';\r\n var TITLE = 'layui-select-title';\r\n var NONE = 'layui-select-none';\r\n var initValue = '';\r\n var thatInput;\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 隐藏 select\r\n var hide = function(e, clear){\r\n if(!$(e.target).parent().hasClass(TITLE) || clear){\r\n $('.'+CLASS).removeClass(CLASS+'ed ' + CLASS+'up');\r\n thatInput && initValue && thatInput.val(initValue);\r\n }\r\n thatInput = null;\r\n };\r\n \r\n // 各种事件\r\n var events = function(reElem, disabled, isSearch){\r\n var select = $(this);\r\n var title = reElem.find('.' + TITLE);\r\n var input = title.find('input');\r\n var dl = reElem.find('dl');\r\n var dds = dl.children('dd');\r\n var dts = dl.children('dt'); // select 分组dt元素\r\n var index = this.selectedIndex; // 当前选中的索引\r\n var nearElem; // select 组件当前选中的附近元素,用于辅助快捷键功能\r\n \r\n if(disabled) return;\r\n\r\n // 搜索项\r\n var laySearch = select.attr('lay-search');\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n reElem.addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\r\n nearElem = null;\r\n\r\n // 初始选中样式\r\n dds.removeClass(THIS);\r\n index >= 0 && dds.eq(index).addClass(THIS);\r\n\r\n // 上下定位识别\r\n if(top + dlHeight > $win.height() && top >= dlHeight){\r\n reElem.addClass(CLASS + 'up');\r\n }\r\n\r\n followScroll();\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n reElem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n nearElem = null;\r\n \r\n if(choose) return;\r\n \r\n notOption(input.val(), function(none){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n // 未查询到相关值\r\n if(none){\r\n initValue = $(select[0].options[selectedIndex]).html(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n\r\n // 如果有选中值,则将输入框纠正为该值。否则清空输入框\r\n input.val(initValue || '');\r\n }\r\n });\r\n };\r\n \r\n // 定位下拉滚动条\r\n var followScroll = function(){ \r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n if(!thisDd[0]) return;\r\n \r\n var posTop = thisDd.position().top;\r\n var dlHeight = dl.height();\r\n var ddHeight = thisDd.height();\r\n \r\n // 若选中元素在滚动条不可见底部\r\n if(posTop > dlHeight){\r\n dl.scrollTop(posTop + dl.scrollTop() - dlHeight + ddHeight - 5);\r\n }\r\n \r\n // 若选择元素在滚动条不可见顶部\r\n if(posTop < 0){\r\n dl.scrollTop(posTop + dl.scrollTop() - 5);\r\n }\r\n };\r\n \r\n // 点击标题区域\r\n title.on('click', function(e){\r\n reElem.hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\r\n hide(e, true), \r\n showDown()\r\n );\r\n dl.find('.'+NONE).remove();\r\n }); \r\n \r\n // 点击箭头获取焦点\r\n title.find('.layui-edge').on('click', function(){\r\n input.focus();\r\n });\r\n \r\n // select 中 input 键盘事件\r\n input.on('keyup', function(e){ // 键盘松开\r\n var keyCode = e.keyCode;\r\n \r\n // Tab键展开\r\n if(keyCode === 9){\r\n showDown();\r\n }\r\n }).on('keydown', function(e){ // 键盘按下\r\n var keyCode = e.keyCode;\r\n\r\n // Tab键隐藏\r\n if(keyCode === 9){\r\n hideDown();\r\n }\r\n \r\n // 标注 dd 的选中状态\r\n var setThisDd = function(prevNext, thisElem1){\r\n var nearDd, cacheNearElem\r\n e.preventDefault();\r\n\r\n // 得到当前队列元素 \r\n var thisElem = function(){\r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n // 如果是搜索状态,且按 Down 键,且当前可视 dd 元素在选中元素之前,\r\n // 则将当前可视 dd 元素的上一个元素作为虚拟的当前选中元素,以保证递归不中断\r\n if(dl.children('dd.'+ HIDE)[0] && prevNext === 'next'){\r\n var showDd = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')')\r\n ,firstIndex = showDd.eq(0).index();\r\n if(firstIndex >=0 && firstIndex < thisDd.index() && !showDd.hasClass(THIS)){\r\n return showDd.eq(0).prev()[0] ? showDd.eq(0).prev() : dl.children(':last');\r\n }\r\n }\r\n\r\n if(thisElem1 && thisElem1[0]){\r\n return thisElem1;\r\n }\r\n if(nearElem && nearElem[0]){\r\n return nearElem;\r\n }\r\n \r\n return thisDd;\r\n // return dds.eq(index);\r\n }();\r\n \r\n cacheNearElem = thisElem[prevNext](); // 当前元素的附近元素\r\n nearDd = thisElem[prevNext]('dd:not(.'+ HIDE +')'); // 当前可视元素的 dd 元素\r\n\r\n // 如果附近的元素不存在,则停止执行,并清空 nearElem\r\n if(!cacheNearElem[0]) return nearElem = null;\r\n \r\n // 记录附近的元素,让其成为下一个当前元素\r\n nearElem = thisElem[prevNext]();\r\n\r\n // 如果附近不是 dd ,或者附近的 dd 元素是禁用状态,则进入递归查找\r\n if((!nearDd[0] || nearDd.hasClass(DISABLED)) && nearElem[0]){\r\n return setThisDd(prevNext, nearElem);\r\n }\r\n \r\n nearDd.addClass(THIS).siblings().removeClass(THIS); // 标注样式\r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(keyCode === 38) setThisDd('prev'); // Up 键\r\n if(keyCode === 40) setThisDd('next'); // Down 键\r\n \r\n // Enter 键\r\n if(keyCode === 13){ \r\n e.preventDefault();\r\n dl.children('dd.'+THIS).trigger('click');\r\n }\r\n }).on('paste', function(){\r\n showDown();\r\n });\r\n \r\n // 检测值是否不属于 select 项\r\n var notOption = function(value, callback, origin){\r\n var num = 0;\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n\r\n // 是否区分大小写\r\n if(laySearch !== 'cs'){\r\n text = text.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[not ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this)\r\n ,thisDds = othis.nextUntil('dt').filter('dd') // 当前分组下的dd元素\r\n ,allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了\r\n othis[allHide ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n var none = num === dds.length;\r\n return callback(none), none;\r\n };\r\n \r\n // 搜索匹配\r\n var search = function(e){\r\n var value = this.value, keyCode = e.keyCode;\r\n \r\n if(keyCode === 9 || keyCode === 13 \r\n || keyCode === 37 || keyCode === 38 \r\n || keyCode === 39 || keyCode === 40\r\n ){\r\n return false;\r\n }\r\n \r\n notOption(value, function(none){\r\n if(none){\r\n dl.find('.'+NONE)[0] || dl.append('

                  无匹配项

                  ');\r\n } else {\r\n dl.find('.'+NONE).remove();\r\n }\r\n }, 'keyup');\r\n \r\n // 当搜索值清空时\r\n if(value === ''){\r\n // 取消选中项\r\n select.val('');\r\n dl.find('.'+ THIS).removeClass(THIS);\r\n (select[0].options[0] || {}).value || dl.children('dd:eq(0)').addClass(THIS);\r\n dl.find('.'+ NONE).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n // #1449: IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件\r\n var eventsType = 'input propertychange';\r\n if(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder')){\r\n eventsType = 'keyup';\r\n }\r\n input.on(eventsType, search).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n thatInput = input; // 当前的 select 中的 input 元素\r\n initValue = $(select[0].options[selectedIndex]).text(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n \r\n setTimeout(function(){\r\n notOption(input.val(), function(none){\r\n initValue || input.val(''); // none && !initValue\r\n }, 'blur');\r\n }, 200);\r\n });\r\n }\r\n\r\n // 选择\r\n dds.on('click', function(){\r\n var othis = $(this), value = othis.attr('lay-value');\r\n var filter = select.attr('lay-filter'); // 获取过滤器\r\n \r\n if(othis.hasClass(DISABLED)) return false;\r\n \r\n if(othis.hasClass('layui-select-tips')){\r\n input.val('');\r\n } else {\r\n input.val(othis.text());\r\n othis.addClass(THIS);\r\n }\r\n\r\n othis.siblings().removeClass(THIS);\r\n select.val(value).removeClass('layui-form-danger');\r\n\r\n layui.event.call(this, MOD_NAME, 'select('+ filter +')', {\r\n elem: select[0]\r\n ,value: value\r\n ,othis: reElem\r\n });\r\n\r\n hideDown(true);\r\n return false;\r\n });\r\n \r\n reElem.find('dl>dt').on('click', function(e){\r\n return false;\r\n });\r\n \r\n $(document).off('click', hide).on('click', hide); // 点击其它元素关闭 select\r\n }\r\n \r\n // 初始渲染 select 组件选项\r\n selects.each(function(index, select){\r\n var othis = $(this)\r\n ,hasRender = othis.next('.'+CLASS)\r\n ,disabled = this.disabled\r\n ,value = select.value\r\n ,selected = $(select.options[select.selectedIndex]) // 获取当前选中项\r\n ,optionsFirst = select.options[0];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n var isSearch = typeof othis.attr('lay-search') === 'string'\r\n ,placeholder = optionsFirst ? (\r\n optionsFirst.value ? TIPS : (optionsFirst.innerHTML || TIPS)\r\n ) : TIPS;\r\n\r\n // 替代元素\r\n var reElem = $(['
                  '\r\n ,'
                  '\r\n ,('') // 禁用状态\r\n ,'
                  '\r\n ,'
                  '\r\n ,function(options){\r\n var arr = [];\r\n layui.each(options, function(index, item){\r\n var tagName = item.tagName.toLowerCase();\r\n\r\n if(index === 0 && !item.value && tagName !== 'optgroup'){\r\n arr.push('
                  '+ $.trim(item.innerHTML || TIPS) +'
                  ');\r\n } else if(tagName === 'optgroup'){\r\n arr.push('
                  '+ item.label +'
                  '); \r\n } else {\r\n arr.push('
                  '+ $.trim(item.innerHTML) +'
                  ');\r\n }\r\n });\r\n arr.length === 0 && arr.push('
                  没有选项
                  ');\r\n return arr.join('');\r\n }(othis.find('*')) +'
                  '\r\n ,'
                  '].join(''));\r\n \r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n othis.after(reElem); \r\n events.call(this, reElem, disabled, isSearch);\r\n });\r\n }\r\n \r\n // 复选框/开关\r\n ,checkbox: function(elem){\r\n var CLASS = {\r\n \"checkbox\": ['layui-form-checkbox', 'layui-form-checked', 'checkbox'],\r\n \"switch\": ['layui-form-switch', 'layui-form-onswitch', 'switch'],\r\n SUBTRA: 'layui-icon-indeterminate'\r\n };\r\n var checks = elem || elemForm.find('input[type=checkbox]');\r\n // 风格\r\n var skins = {\r\n \"primary\": true, // 默认风格\r\n \"tag\": true, // 标签风格\r\n \"switch\": true // 开关风格\r\n };\r\n // 事件\r\n var events = function(reElem, RE_CLASS){\r\n var check = $(this);\r\n \r\n // 勾选\r\n reElem.on('click', function(){\r\n var othis = $(this);\r\n var filter = check.attr('lay-filter') // 获取过滤器\r\n var title = (\r\n othis.next('*[lay-checkbox]')[0] \r\n ? othis.next().html()\r\n : check.attr('title') || ''\r\n );\r\n var skin = check.attr('lay-skin') || 'primary';\r\n\r\n // 开关\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n\r\n // 禁用\r\n if(check[0].disabled) return;\r\n \r\n // 半选\r\n if (check[0].indeterminate) {\r\n check[0].indeterminate = false;\r\n reElem.find('.'+ CLASS.SUBTRA).removeClass(CLASS.SUBTRA).addClass('layui-icon-ok');\r\n }\r\n\r\n // 开关\r\n check[0].checked ? (\r\n check[0].checked = false,\r\n reElem.removeClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[1])\r\n ) : (\r\n check[0].checked = true,\r\n reElem.addClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[0])\r\n );\r\n \r\n // 事件\r\n layui.event.call(check[0], MOD_NAME, RE_CLASS[2]+'('+ filter +')', {\r\n elem: check[0],\r\n value: check[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 遍历复选框\r\n checks.each(function(index, check){\r\n var othis = $(this);\r\n var skin = othis.attr('lay-skin') || 'primary';\r\n var title = util.escape($.trim(check.title || function(){ // 向下兼容 lay-text 属性\r\n return check.title = othis.attr('lay-text') || '';\r\n }()));\r\n var disabled = this.disabled;\r\n\r\n // if(!skins[skin]) skin = 'primary'; // 若非内置风格,则强制为默认风格\r\n var RE_CLASS = CLASS[skin] || CLASS.checkbox;\r\n\r\n // 替代元素\r\n var hasRender = othis.next('.' + RE_CLASS[0]);\r\n hasRender[0] && hasRender.remove(); // 若已经渲染,则 Rerender\r\n \r\n // 若存在标题模板,则优先读取标题模板\r\n if(othis.next('[lay-checkbox]')[0]){\r\n title = othis.next().html() || '';\r\n }\r\n\r\n // 若为开关,则对 title 进行分隔解析\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n // 替代元素\r\n var reElem = $(['
                  ',\r\n function(){ // 不同风格的内容\r\n var type = {\r\n // 复选框\r\n \"checkbox\": [\r\n (title[0] ? ('
                  '+ title[0] +'
                  ') : (skin === 'primary' ? '' : '
                  ')),\r\n ''\r\n ].join(''),\r\n // 开关\r\n \"switch\": '
                  '+ ((check.checked ? title[0] : title[1]) || '') +'
                  '\r\n };\r\n return type[skin] || type['checkbox'];\r\n }(),\r\n '
                  '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem, RE_CLASS);\r\n });\r\n }\r\n \r\n // 单选框\r\n ,radio: function(elem){\r\n var CLASS = 'layui-form-radio';\r\n var ICON = ['layui-icon-radio', 'layui-icon-circle'];\r\n var radios = elem || elemForm.find('input[type=radio]');\r\n\r\n // 事件\r\n var events = function(reElem){\r\n var radio = $(this);\r\n var ANIM = 'layui-anim-scaleSpring';\r\n \r\n reElem.on('click', function(){\r\n var name = radio[0].name, forms = radio.parents(ELEM);\r\n var filter = radio.attr('lay-filter'); // 获取过滤器\r\n var sameRadio = forms.find('input[name='+ name.replace(/(\\.|#|\\[|\\])/g, '\\\\$1') +']'); // 找到相同name的兄弟\r\n \r\n if(radio[0].disabled) return;\r\n \r\n layui.each(sameRadio, function(){\r\n var next = $(this).next('.' + CLASS);\r\n this.checked = false;\r\n next.removeClass(CLASS + 'ed');\r\n next.children('.layui-icon').removeClass(ANIM + ' ' + ICON[0]).addClass(ICON[1]);\r\n });\r\n \r\n radio[0].checked = true;\r\n reElem.addClass(CLASS + 'ed');\r\n reElem.children('.layui-icon').addClass(ANIM + ' ' + ICON[0]);\r\n \r\n layui.event.call(radio[0], MOD_NAME, 'radio('+ filter +')', {\r\n elem: radio[0],\r\n value: radio[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 初始渲染\r\n radios.each(function(index, radio){\r\n var othis = $(this), hasRender = othis.next('.' + CLASS);\r\n var disabled = this.disabled;\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n \r\n // 替代元素\r\n var reElem = $(['
                  ', // 禁用状态\r\n '',\r\n '
                  '+ function(){\r\n var title = util.escape(radio.title || '');\r\n if(othis.next('[lay-radio]')[0]){\r\n title = othis.next().html();\r\n }\r\n return title;\r\n }() +'
                  ',\r\n '
                  '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem);\r\n });\r\n }\r\n };\r\n\r\n // 执行所有渲染项\r\n var renderItem = function(){\r\n layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n\r\n // jquery 对象\r\n if (layui.type(type) === 'object') {\r\n // 若对象为表单域容器\r\n if($(type).is(ELEM)){\r\n elemForm = $(type);\r\n renderItem();\r\n } else { // 对象为表单项\r\n type.each(function (index, item) {\r\n var elem = $(item);\r\n if (!elem.closest(ELEM).length) {\r\n return; // 若不在 layui-form 容器中直接跳过\r\n }\r\n if (item.tagName === 'SELECT') {\r\n items['select'](elem);\r\n } else if (item.tagName === 'INPUT') {\r\n var itemType = item.type;\r\n if (itemType === 'checkbox' || itemType === 'radio') {\r\n items[itemType](elem);\r\n } else {\r\n items['input'](elem);\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n type ? (\r\n items[type] ? items[type]() : hint.error('不支持的 \"'+ type + '\" 表单渲染')\r\n ) : renderItem();\r\n }\r\n return that;\r\n };\r\n\r\n /**\r\n * 主动触发验证\r\n * @param {(string|HTMLElement|JQuery)} elem - 要验证的区域表单元素\r\n * @return {boolean} 返回结果。若验证通过,返回 `true`, 否则返回 `false`\r\n */\r\n Form.prototype.validate = function(elem) {\r\n var that = this;\r\n var intercept; // 拦截标识\r\n var options = that.config; // 获取全局配置项\r\n var verify = options.verify; // 验证规则\r\n var DANGER = 'layui-form-danger'; // 警示样式\r\n\r\n elem = $(elem);\r\n\r\n // 节点不存在可视为 true\r\n if (!elem[0]) return !0;\r\n\r\n // 若节点不存在特定属性,则查找容器内有待验证的子节点\r\n if (elem.attr('lay-verify') === undefined) {\r\n // 若校验的是一个不带验证规则的容器,校验内部的 lay-verify 节点\r\n if (that.validate(elem.find('*[lay-verify]')) === false) {\r\n return false;\r\n }\r\n }\r\n\r\n // 开始校验\r\n layui.each(elem, function(_, item) {\r\n var othis = $(this);\r\n var verifyStr = othis.attr('lay-verify') || '';\r\n var vers = verifyStr.split('|');\r\n var verType = othis.attr('lay-vertype'); // 提示方式\r\n var value = $.trim(othis.val());\r\n\r\n othis.removeClass(DANGER); // 移除警示样式\r\n \r\n // 遍历元素绑定的验证规则\r\n layui.each(vers, function(_, thisVer) {\r\n var verst; // 校验结果\r\n var errorText = ''; // 错误提示文本\r\n var rule = verify[thisVer]; // 获取校验规则\r\n \r\n // 匹配验证规则\r\n if (rule) {\r\n verst = typeof rule === 'function'\r\n ? errorText = rule(value, item) \r\n : !rule[0].test(value); // 兼容早期数组中的正则写法\r\n \r\n // 是否属于美化替换后的表单元素\r\n var isForm2Elem = item.tagName.toLowerCase() === 'select' || (\r\n /^(checkbox|radio)$/.test(item.type)\r\n );\r\n \r\n errorText = errorText || rule[1];\r\n \r\n // 获取自定义必填项提示文本\r\n if (thisVer === 'required') {\r\n errorText = othis.attr('lay-reqtext') || errorText;\r\n }\r\n \r\n // 若命中校验规则\r\n if (verst) {\r\n // 提示层风格\r\n if (verType === 'tips') {\r\n layer.tips(errorText, function(){\r\n if(typeof othis.attr('lay-ignore') !== 'string'){\r\n if(isForm2Elem){\r\n return othis.next();\r\n }\r\n }\r\n return othis;\r\n }(), {tips: 1});\r\n } else if(verType === 'alert') {\r\n layer.alert(errorText, {title: '提示', shadeClose: true});\r\n } \r\n // 若返回的为字符或数字,则自动弹出默认提示框;否则由 verify 方法中处理提示\r\n else if(/\\b(string|number)\\b/.test(typeof errorText)) {\r\n layer.msg(errorText, {icon: 5, shift: 6});\r\n }\r\n\r\n setTimeout(function() {\r\n (isForm2Elem ? othis.next().find('input') : item).focus();\r\n }, 7);\r\n \r\n othis.addClass(DANGER);\r\n return intercept = true;\r\n }\r\n }\r\n });\r\n\r\n if (intercept) return intercept;\r\n });\r\n\r\n return !intercept;\r\n };\r\n\r\n // 提交表单并校验\r\n var submit = Form.prototype.submit = function(filter, callback){\r\n var field = {}; // 字段集合\r\n var button = $(this); // 当前触发的按钮\r\n\r\n // 表单域 lay-filter 属性值\r\n var layFilter = typeof filter === 'string' \r\n ? filter \r\n : button.attr('lay-filter');\r\n\r\n // 当前所在表单域\r\n var elem = this.getFormElem \r\n ? this.getFormElem(layFilter) \r\n : button.parents(ELEM).eq(0);\r\n\r\n // 获取需要校验的元素\r\n var verifyElem = elem.find('*[lay-verify]');\r\n\r\n // 开始校验\r\n if(!form.validate(verifyElem)) return false;\r\n\r\n // 获取当前表单值\r\n field = form.getValue(null, elem);\r\n\r\n // 返回的参数\r\n var params = {\r\n elem: this.getFormElem ? (window.event && window.event.target) : this // 触发事件的对象\r\n ,form: this.getFormElem ? elem[0] : button.parents('form')[0] // 当前所在的 form 元素,如果存在的话\r\n ,field: field // 当前表单数据\r\n };\r\n \r\n // 回调\r\n typeof callback === 'function' && callback(params);\r\n \r\n // 事件\r\n return layui.event.call(this, MOD_NAME, 'submit('+ layFilter +')', params);\r\n };\r\n \r\n var form = new Form();\r\n var $dom = $(document);\r\n var $win = $(window);\r\n \r\n // 初始自动完成渲染\r\n $(function(){\r\n form.render();\r\n });\r\n \r\n // 表单 reset 重置渲染\r\n $dom.on('reset', ELEM, function(){\r\n var filter = $(this).attr('lay-filter');\r\n setTimeout(function(){\r\n form.render(null, filter);\r\n }, 50);\r\n });\r\n \r\n // 表单提交事件\r\n $dom.on('submit', ELEM, submit)\r\n .on('click', '*[lay-submit]', submit);\r\n \r\n exports(MOD_NAME, form);\r\n});\r\n\r\n \r\n","/**\r\n * layui.table\r\n * 表格组件\r\n */\r\n\r\nlayui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var laytpl = layui.laytpl;\r\n var laypage = layui.laypage;\r\n var layer = layui.layer;\r\n var form = layui.form;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // api\r\n var table = {\r\n config: { // 全局配置项\r\n checkName: 'LAY_CHECKED', // 是否选中状态的特定字段名\r\n indexName: 'LAY_INDEX', // 初始下标索引名,用于恢复当前页表格排序\r\n numbersName: 'LAY_NUM', // 序号\r\n disabledName: 'LAY_DISABLED' // 禁用状态的特定字段名\r\n },\r\n cache: {}, // 数据缓存\r\n index: layui.table ? (layui.table.index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisTable = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function(options, deep){\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function(options, deep){\r\n table.reloadData(id, options, deep);\r\n },\r\n setColsWidth: function(){\r\n that.setColsWidth.call(that);\r\n },\r\n resize: function(){ // 重置表格尺寸/结构\r\n that.resize.call(that);\r\n }\r\n }\r\n };\r\n\r\n // 获取当前实例\r\n var getThisTable = function(id){\r\n var that = thisTable.that[id];\r\n if(!that) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that || null;\r\n };\r\n\r\n // 获取当前实例配置项\r\n var getThisTableConfig = function(id){\r\n var config = thisTable.config[id];\r\n if(!config) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return config || null;\r\n };\r\n\r\n // lay 函数可以处理 Selector,HTMLElement,JQuery 类型\r\n // 无效的 CSS 选择器字符串,会抛出 SyntaxError 异常,此时直接返回 laytpl 模板字符串\r\n var resolveTplStr = function(templet){\r\n try{ \r\n return lay(templet).html();\r\n }catch(err){\r\n return templet;\r\n }\r\n }\r\n\r\n // 解析自定义模板数据\r\n var parseTempData = function(obj){\r\n obj = obj || {};\r\n\r\n var options = this.config || {};\r\n var item3 = obj.item3; // 表头数据\r\n var content = obj.content; // 原始内容\r\n if (item3.type === 'numbers') content = obj.tplData[table.config.numbersName];\r\n\r\n // 是否编码 HTML\r\n var escaped = 'escape' in item3 ? item3.escape : options.escape;\r\n if(escaped) content = util.escape(content);\r\n\r\n // 获取模板\r\n var templet = obj.text && item3.exportTemplet || (item3.templet || item3.toolbar);\r\n\r\n // 获取模板内容\r\n if(templet){\r\n content = typeof templet === 'function'\r\n ? templet.call(item3, obj.tplData, obj.obj)\r\n : laytpl(resolveTplStr(templet) || String(content)).render($.extend({\r\n LAY_COL: item3\r\n }, obj.tplData));\r\n }\r\n\r\n // 是否只返回文本\r\n return obj.text ? $('
                  '+ content +'
                  ').text() : content;\r\n };\r\n\r\n // 字符\r\n var MOD_NAME = 'table';\r\n var ELEM = '.layui-table';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var HIDE_V = 'layui-hide-v';\r\n var DISABLED = 'layui-disabled';\r\n var NONE = 'layui-none';\r\n\r\n var ELEM_VIEW = 'layui-table-view';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_INIT = '.layui-table-init';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_TOTAL = '.layui-table-total';\r\n var ELEM_PAGE = '.layui-table-page';\r\n var ELEM_PAGE_VIEW = '.layui-table-pageview';\r\n var ELEM_SORT = '.layui-table-sort';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n var ELEM_EDIT = 'layui-table-edit';\r\n var ELEM_HOVER = 'layui-table-hover';\r\n var ELEM_GROUP = 'laytable-cell-group';\r\n var ELEM_COL_SPECIAL = 'layui-table-col-special';\r\n var ELEM_TOOL_PANEL = 'layui-table-tool-panel';\r\n var ELEM_EXPAND = 'layui-table-expanded'\r\n\r\n var DATA_MOVE_NAME = 'LAY_TABLE_MOVE_DICT';\r\n\r\n // thead 区域模板\r\n var TPL_HEADER = function(options){\r\n var rowCols = '{{#var colspan = layui.type(item2.colspan2) === \\'number\\' ? item2.colspan2 : item2.colspan; if(colspan){}} colspan=\"{{=colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{=item2.rowspan}}\"{{#}}}';\r\n\r\n options = options || {};\r\n return ['
                '\r\n ,''\r\n ,'{{# layui.each(d.data.cols, function(i1, item1){ }}'\r\n ,''\r\n ,'{{# layui.each(item1, function(i2, item2){ }}'\r\n ,'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}'\r\n ,'{{# if(item2.fixed === \"right\"){ right = true; } }}'\r\n ,function(){\r\n if(options.fixed && options.fixed !== 'right'){\r\n return '{{# if(item2.fixed && item2.fixed !== \"right\"){ }}';\r\n }\r\n if(options.fixed === 'right'){\r\n return '{{# if(item2.fixed === \"right\"){ }}';\r\n }\r\n return '';\r\n }()\r\n ,'{{# var isSort = !(item2.colGroup) && item2.sort; }}'\r\n ,''\r\n ,(options.fixed ? '{{# }; }}' : '')\r\n ,'{{# }); }}'\r\n ,''\r\n ,'{{# }); }}'\r\n ,''\r\n ,'
                \\' + item2.title + \\'\\').text() }}\"{{# } }}>'\r\n ,'
                '\r\n ,'{{# if(item2.type === \"checkbox\"){ }}' //复选框\r\n ,''\r\n ,'{{# } else { }}'\r\n ,'{{-item2.title||\"\"}}'\r\n ,'{{# if(isSort){ }}'\r\n ,''\r\n ,'{{# } }}'\r\n ,'{{# } }}'\r\n ,'
                '\r\n ,'
                '].join('');\r\n };\r\n\r\n // tbody 区域模板\r\n var TPL_BODY = [''\r\n ,''\r\n ,'
                '].join('');\r\n\r\n // 主模板\r\n var TPL_MAIN = [\r\n ,'{{# if(d.data.toolbar){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# } }}'\r\n\r\n ,'
                '\r\n ,'{{# if(d.data.loading){ }}'\r\n ,'
                '\r\n ,''\r\n ,'
                '\r\n ,'{{# } }}'\r\n\r\n ,'{{# var left, right; }}'\r\n ,'
                '\r\n ,TPL_HEADER()\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_BODY\r\n ,'
                '\r\n\r\n ,'{{# if(left){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_HEADER({fixed: true})\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_BODY\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# }; }}'\r\n\r\n ,'{{# if(right){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_HEADER({fixed: 'right'})\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_BODY\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# }; }}'\r\n ,'
                '\r\n\r\n ,'{{# if(d.data.totalRow){ }}'\r\n ,'
                '\r\n ,''\r\n ,''\r\n , '
                Total
                '\r\n ,'
                '\r\n ,'{{# } }}'\r\n\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ].join('');\r\n\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n\r\n // constructor\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++table.index;\r\n that.config = $.extend({}, that.config, table.config, options);\r\n that.render();\r\n };\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n limit: 10, // 每页显示的数量\r\n loading: true, // 请求数据时,是否显示 loading\r\n escape: true, // 是否开启 HTML 编码功能,即转义 html 原文\r\n cellMinWidth: 60, // 所有单元格默认最小宽度\r\n cellMaxWidth: Number.MAX_VALUE, // 所有单元格默认最大宽度\r\n editTrigger: 'click', // 单元格编辑的事件触发方式\r\n defaultToolbar: ['filter', 'exports', 'print'], // 工具栏右侧图标\r\n defaultContextmenu: true, // 显示默认上下文菜单\r\n autoSort: true, // 是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n text: {\r\n none: '无数据'\r\n },\r\n cols: []\r\n };\r\n\r\n // 表格渲染\r\n Class.prototype.render = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.elem = $(options.elem);\r\n options.where = options.where || {};\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n var id = options.id = 'id' in options ? options.id : (\r\n options.elem.attr('id') || that.index\r\n );\r\n\r\n thisTable.that[id] = that; // 记录当前实例对象\r\n thisTable.config[id] = options; // 记录当前实例配置项\r\n\r\n //请求参数的自定义格式\r\n options.request = $.extend({\r\n pageName: 'page',\r\n limitName: 'limit'\r\n }, options.request)\r\n\r\n // 响应数据的自定义格式\r\n options.response = $.extend({\r\n statusName: 'code', //规定数据状态的字段名称\r\n statusCode: 0, //规定成功的状态码\r\n msgName: 'msg', //规定状态信息的字段名称\r\n dataName: 'data', //规定数据总数的字段名称\r\n totalRowName: 'totalRow', //规定数据统计的字段名称\r\n countName: 'count'\r\n }, options.response);\r\n\r\n //如果 page 传入 laypage 对象\r\n if(options.page !== null && typeof options.page === 'object'){\r\n options.limit = options.page.limit || options.limit;\r\n options.limits = options.page.limits || options.limits;\r\n that.page = options.page.curr = options.page.curr || 1;\r\n delete options.page.elem;\r\n delete options.page.jump;\r\n }\r\n\r\n if(!options.elem[0]) return that;\r\n\r\n // 若元素未设 lay-filter 属性,则取实例 id 值\r\n if(!options.elem.attr('lay-filter')){\r\n options.elem.attr('lay-filter', options.id);\r\n }\r\n\r\n // 仅重载数据\r\n if(type === 'reloadData'){\r\n // 请求数据\r\n return that.pullData(that.page, {\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 初始化索引\r\n options.index = that.index;\r\n that.key = options.id || options.index;\r\n\r\n // 初始化一些其他参数\r\n that.setInit();\r\n\r\n // 高度铺满:full-差距值\r\n if(options.height && /^full-.+$/.test(options.height)){\r\n that.fullHeightGap = options.height.split('-')[1];\r\n options.height = _WIN.height() - (parseFloat(that.fullHeightGap) || 0);\r\n } else if (options.height && /^#\\w+\\S*-.+$/.test(options.height)) {\r\n var parentDiv = options.height.split(\"-\");\r\n that.parentHeightGap = parentDiv.pop();\r\n that.parentDiv = parentDiv.join(\"-\");\r\n options.height = $(that.parentDiv).height() - (parseFloat(that.parentHeightGap) || 0);\r\n } else if (typeof options.height === \"function\"){\r\n that.customHeightFunc = options.height;\r\n options.height = that.customHeightFunc();\r\n }\r\n\r\n // 开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n // 主容器\r\n var reElem = that.elem = $('
                ');\r\n\r\n // 添加 className\r\n reElem.addClass(function(){\r\n var arr = [\r\n ELEM_VIEW,\r\n ELEM_VIEW +'-'+ that.index,\r\n 'layui-form',\r\n 'layui-border-box'\r\n ];\r\n if(options.className) arr.push(options.className);\r\n return arr.join(' ');\r\n }()).attr({\r\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\r\n 'lay-id': options.id,\r\n 'style': function(){\r\n var arr = [];\r\n if(options.width) arr.push('width:'+ options.width + 'px;');\r\n // if(options.height) arr.push('height:'+ options.height + 'px;');\r\n return arr.join('')\r\n }()\r\n }).html(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index //索引\r\n }));\r\n\r\n // 初始化样式\r\n that.renderStyle();\r\n\r\n // 生成替代元素\r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则 Rerender\r\n othis.after(reElem);\r\n\r\n // 各级容器\r\n that.layTool = reElem.find(ELEM_TOOL);\r\n that.layBox = reElem.find(ELEM_BOX);\r\n that.layHeader = reElem.find(ELEM_HEADER);\r\n that.layMain = reElem.find(ELEM_MAIN);\r\n that.layBody = reElem.find(ELEM_BODY);\r\n that.layFixed = reElem.find(ELEM_FIXED);\r\n that.layFixLeft = reElem.find(ELEM_FIXL);\r\n that.layFixRight = reElem.find(ELEM_FIXR);\r\n that.layTotal = reElem.find(ELEM_TOTAL);\r\n that.layPage = reElem.find(ELEM_PAGE);\r\n\r\n // 初始化头部工具栏\r\n that.renderToolbar();\r\n\r\n // 初始化底部分页栏\r\n that.renderPagebar();\r\n\r\n // 让表格平铺\r\n that.fullSize();\r\n\r\n that.pullData(that.page); // 请求数据\r\n that.events(); // 事件\r\n };\r\n\r\n // 根据列类型,定制化参数\r\n Class.prototype.initOpts = function(item){\r\n var that = this\r\n var options = that.config;\r\n var initWidth = {\r\n checkbox: 50,\r\n radio: 50,\r\n space: 30,\r\n numbers: 60\r\n };\r\n\r\n // 让 type 参数兼容旧版本\r\n if(item.checkbox) item.type = \"checkbox\";\r\n if(item.space) item.type = \"space\";\r\n if(!item.type) item.type = \"normal\";\r\n\r\n if(item.type !== \"normal\"){\r\n item.unresize = true;\r\n item.width = item.width || initWidth[item.type];\r\n }\r\n };\r\n\r\n //初始化一些参数\r\n Class.prototype.setInit = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.clientWidth = options.width || function(){ //获取容器宽度\r\n //如果父元素宽度为0(一般为隐藏元素),则继续查找上层元素,直到找到真实宽度为止\r\n var getWidth = function(parent){\r\n var width, isNone;\r\n parent = parent || options.elem.parent()\r\n width = parent.width();\r\n try {\r\n isNone = parent.css('display') === 'none';\r\n } catch(e){}\r\n if(parent[0] && (!width || isNone)) return getWidth(parent.parent());\r\n return width;\r\n };\r\n return getWidth();\r\n }();\r\n\r\n if(type === 'width') return options.clientWidth;\r\n // 初始化高度配置,如果设置了最高高度,以最高高度形式为准\r\n options.height = options.maxHeight || options.height;\r\n\r\n // 初始化 css 参数\r\n if(options.css && options.css.indexOf(ELEM_VIEW) === -1){\r\n var css = options.css.split('}');\r\n layui.each(css, function(index, value){\r\n if(value){\r\n css[index] = '.'+ ELEM_VIEW + '-'+ that.index + ' ' + value;\r\n }\r\n });\r\n options.css = css.join('}');\r\n }\r\n\r\n // 封装对 col 的配置处理\r\n var initChildCols = function (i1, item1, i2, item2) {\r\n //如果列参数为空,则移除\r\n if (!item2) {\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n item2.key = [options.index, i1, i2].join('-');\r\n item2.colspan = item2.colspan || 0;\r\n item2.rowspan = item2.rowspan || 0;\r\n\r\n //根据列类型,定制化参数\r\n that.initOpts(item2);\r\n\r\n //设置列的父列索引\r\n //如果是组合列,则捕获对应的子列\r\n var indexChild = i1 + (parseInt(item2.rowspan) || 1);\r\n if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列\r\n item2.colGroup = true;\r\n var childIndex = 0;\r\n layui.each(options.cols[indexChild], function (i22, item22) {\r\n //如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n\r\n item22.HAS_PARENT = true;\r\n item22.parentKey = [options.index, i1, i2].join('-') // i1 + '-' + i2;\r\n childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);\r\n initChildCols(indexChild, options.cols[indexChild], i22, item22);\r\n });\r\n } else {\r\n item2.colGroup = false;\r\n }\r\n item2.hide = item2.hide && !item2.colGroup || false; // 初始化中中间节点的hide信息不做处理,否则会出错,如果需要必须将其子节点也都同步成hide\r\n };\r\n\r\n // 初始化列参数\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if (i1) {\r\n delete item2.HAS_PARENT; // 去掉临时的计数排除标识,避免有新字段插入的时候重新计算被跳过导致下标出错的问题\r\n } else {\r\n initChildCols(i1, item1, i2, item2); // 只解析顶层节点由递归完成解析\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n // 初始化样式\r\n Class.prototype.renderStyle = function() {\r\n var that = this;\r\n var options = that.config;\r\n var index = that.index;\r\n var text = [];\r\n\r\n // 单元格宽度\r\n layui.each(options.cols, function(i1, item1) {\r\n layui.each(item1, function(i2, item2) {\r\n var key = [index, i1, i2].join('-');\r\n var val = ['width: ', (item2.width || options.cellMinWidth), 'px'].join('');\r\n text.push('.laytable-cell-'+ key +'{'+ val +'}');\r\n });\r\n });\r\n\r\n // 自定义行样式\r\n (function (lineStyle) {\r\n if (!lineStyle) return;\r\n var trClassName = '.layui-table-view-'+ index +' .layui-table-body .layui-table tr';\r\n var rules = lineStyle.split(';');\r\n var cellMaxHeight = 'none';\r\n\r\n // 计算单元格最大高度\r\n layui.each(rules, function(i, rule) {\r\n rule = rule.split(':');\r\n if (rule[0] === 'height') {\r\n var val = parseFloat(rule[1]);\r\n if (!isNaN(val)) cellMaxHeight = (val - 1) + 'px';\r\n return true;\r\n }\r\n });\r\n\r\n // 多行相关样式\r\n layui.each([\r\n '{'+ lineStyle +'}',\r\n '.layui-table-cell{height: auto; max-height: '+ cellMaxHeight +'; white-space: normal; text-overflow: clip;}',\r\n '> td:hover > .layui-table-cell{overflow: auto;}'\r\n ].concat(\r\n device.ie ? [\r\n '.layui-table-edit{height: '+ cellMaxHeight +';}',\r\n 'td[data-edit]:hover:after{height: '+ cellMaxHeight +';}'\r\n ] : []\r\n ), function(i, val) {\r\n val && text.push(trClassName + ' ' + val);\r\n });\r\n })(options.lineStyle);\r\n\r\n // 自定义 css 属性\r\n if (options.css) text.push(options.css);\r\n\r\n // 生成 style\r\n lay.style({\r\n target: that.elem[0],\r\n text: text.join(''),\r\n id: 'DF-table-'+ index\r\n });\r\n };\r\n\r\n // 初始工具栏\r\n Class.prototype.renderToolbar = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n // 添加工具栏左侧模板\r\n var leftDefaultTemp = [\r\n '
                ',\r\n '
                ',\r\n '
                '\r\n ].join('');\r\n var elemToolTemp = that.layTool.find('.layui-table-tool-temp');\r\n\r\n if(options.toolbar === 'default'){\r\n elemToolTemp.html(leftDefaultTemp);\r\n } else if(typeof options.toolbar === 'string'){\r\n var toolbarHtml = $(options.toolbar).html() || '';\r\n toolbarHtml && elemToolTemp.html(\r\n laytpl(toolbarHtml).render(options)\r\n );\r\n }\r\n\r\n // 添加工具栏右侧面板\r\n var layout = {\r\n filter: {\r\n title: '筛选列',\r\n layEvent: 'LAYTABLE_COLS',\r\n icon: 'layui-icon-cols'\r\n },\r\n exports: {\r\n title: '导出',\r\n layEvent: 'LAYTABLE_EXPORT',\r\n icon: 'layui-icon-export'\r\n },\r\n print: {\r\n title: '打印',\r\n layEvent: 'LAYTABLE_PRINT',\r\n icon: 'layui-icon-print'\r\n }\r\n }, iconElem = [];\r\n\r\n if(typeof options.defaultToolbar === 'object'){\r\n layui.each(options.defaultToolbar, function(i, item){\r\n var thisItem = typeof item === 'string' ? layout[item] : item;\r\n if(thisItem){\r\n iconElem.push('
                '\r\n +''\r\n +'
                ');\r\n }\r\n });\r\n }\r\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\r\n };\r\n\r\n // 分页栏\r\n Class.prototype.renderPagebar = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var layPagebar = that.layPagebar = $('
                ');\r\n\r\n // 开启分页栏自定义模板\r\n if(options.pagebar){\r\n var pagebarHtml = $(options.pagebar).html() || '';\r\n pagebarHtml && layPagebar.append(laytpl(pagebarHtml).render(options));\r\n that.layPage.append(layPagebar);\r\n }\r\n };\r\n\r\n // 同步表头父列的相关值\r\n Class.prototype.setParentCol = function(hide, parentKey){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var parentTh = that.layHeader.find('th[data-key=\"'+ parentKey +'\"]'); // 获取父列元素\r\n var parentColspan = parseInt(parentTh.attr('colspan')) || 0;\r\n\r\n if(parentTh[0]){\r\n var arrParentKey = parentKey.split('-');\r\n var getThisCol = options.cols[arrParentKey[1]][arrParentKey[2]];\r\n\r\n hide ? parentColspan-- : parentColspan++;\r\n\r\n parentTh.attr('colspan', parentColspan);\r\n parentTh[parentColspan ? 'removeClass' : 'addClass'](HIDE); // 如果子列显示,父列必然需要显示\r\n\r\n getThisCol.colspan2 = parentColspan; // 更新实际的 colspan 数\r\n getThisCol.hide = parentColspan < 1; // 同步 hide 参数\r\n\r\n // 递归,继续往上查询是否有父列\r\n var nextParentKey = parentTh.data('parentkey');\r\n nextParentKey && that.setParentCol(hide, nextParentKey);\r\n }\r\n };\r\n\r\n // 多级表头补丁\r\n Class.prototype.setColsPatch = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 同步表头父列的相关值\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if(item2.hide){\r\n that.setParentCol(item2.hide, item2.parentKey);\r\n }\r\n });\r\n });\r\n };\r\n\r\n // 设置组合表头的最大宽度\r\n Class.prototype.setGroupWidth = function(th){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.cols.length <= 1) return;\r\n\r\n // 获取表头组合\r\n var groups = that.layHeader.find((\r\n // 根据当前活动的表头 parentkey 属性查找其组合表头\r\n th ? ('th[data-key='+ th.data('parentkey') +']>') : ''\r\n ) + '.' + ELEM_GROUP); // 若无指向当前活动表头,则自下而上获取所有组合表头\r\n\r\n groups.css('width', 0);\r\n layui.each(groups.get().reverse(), function(){\r\n var othis = $(this);\r\n var key = othis.parent().data('key');\r\n var maxWidth = 0;\r\n\r\n that.layHeader.eq(0).find('th[data-parentkey='+ key +']').width(function(i, width){\r\n var oTh = $(this);\r\n if(oTh.hasClass(HIDE)) return;\r\n width > 0 && (maxWidth += width);\r\n });\r\n\r\n // 给组合表头赋值最大宽度\r\n if(maxWidth) othis.css('max-width', maxWidth - 1);\r\n\r\n // 若当前活动的组合表头仍存在上级,则继续向上设置\r\n if(th && othis.parent().data('parentkey')){\r\n that.setGroupWidth(othis.parent());\r\n }\r\n });\r\n groups.css('width', 'auto');\r\n };\r\n\r\n // 动态分配列宽\r\n Class.prototype.setColsWidth = function(){\r\n var that = this;\r\n var options = that.config;\r\n var colNums = 0; // 列个数\r\n var autoColNums = 0; // 自动列宽的列个数\r\n var autoWidth = 0; // 自动列分配的宽度\r\n var countWidth = 0; // 所有列总宽度和\r\n var cntrWidth = that.setInit('width');\r\n\r\n // 统计列个数\r\n that.eachCols(function(i, item){\r\n item.hide || colNums++;\r\n });\r\n\r\n // 减去边框差和滚动条宽\r\n cntrWidth = cntrWidth - function(){\r\n return (options.skin === 'line' || options.skin === 'nob') ? 2 : colNums + 1;\r\n }() - that.getScrollWidth(that.layMain[0]) - 1;\r\n\r\n // 计算自动分配的宽度\r\n var getAutoWidth = function(back){\r\n // 遍历所有列\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n var width = 0;\r\n var minWidth = item2.minWidth || options.cellMinWidth; // 最小宽度\r\n var maxWidth = item2.maxWidth || options.cellMaxWidth; // 最大宽度\r\n\r\n if(!item2){\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n if(item2.colGroup || item2.hide) return;\r\n\r\n if(!back){\r\n width = item2.width || 0;\r\n if(/\\d+%$/.test(width)){ // 列宽为百分比\r\n width = Math.floor((parseFloat(width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n } else if(!width){ // 列宽未填写\r\n item2.width = width = 0;\r\n autoColNums++;\r\n } else if(item2.type === 'normal'){\r\n // 若 width 小于 minWidth, 则将 width 值自动设为 minWidth 的值\r\n width < minWidth && (item2.width = width = minWidth);\r\n // 若 width 大于 maxWidth, 则将 width 值自动设为 maxWidth 的值\r\n width > maxWidth && (item2.width = width = maxWidth);\r\n }\r\n } else if(autoWidth && autoWidth < minWidth){\r\n autoColNums--;\r\n width = minWidth;\r\n } else if(autoWidth && autoWidth > maxWidth){\r\n autoColNums--;\r\n width = maxWidth;\r\n }\r\n\r\n if(item2.hide) width = 0;\r\n countWidth = countWidth + width;\r\n });\r\n });\r\n\r\n // 如果未填充满,则将剩余宽度平分\r\n (cntrWidth > countWidth && autoColNums > 0) && (\r\n autoWidth = (cntrWidth - countWidth) / autoColNums\r\n );\r\n }\r\n\r\n getAutoWidth();\r\n getAutoWidth(true); // 重新检测分配的宽度是否低于最小列宽\r\n\r\n // 记录自动列数\r\n that.autoColNums = autoColNums = autoColNums > 0 ? autoColNums : 0;\r\n\r\n // 设置列宽\r\n that.eachCols(function(i3, item3){\r\n var minWidth = item3.minWidth || options.cellMinWidth;\r\n var maxWidth = item3.maxWidth || options.cellMaxWidth;\r\n\r\n if(item3.colGroup || item3.hide) return;\r\n\r\n // 给未分配宽的列平均分配宽\r\n if(item3.width === 0){\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = Math.floor(function(){\r\n if(autoWidth < minWidth) return minWidth;\r\n if(autoWidth > maxWidth) return maxWidth;\r\n return autoWidth;\r\n }()) + 'px';\r\n });\r\n }\r\n\r\n // 给设定百分比的列分配列宽\r\n else if(/\\d+%$/.test(item3.width)){\r\n that.cssRules(item3.key, function(item){\r\n var width = Math.floor((parseFloat(item3.width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n item.style.width = width + 'px';\r\n });\r\n }\r\n\r\n // 给拥有普通 width 值的列分配最新列宽\r\n else {\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = item3.width + 'px';\r\n });\r\n }\r\n });\r\n\r\n // 填补 Math.floor 造成的数差\r\n var patchNums = that.layMain.width() - that.getScrollWidth(that.layMain[0])\r\n - that.layMain.children('table').outerWidth();\r\n\r\n if(that.autoColNums > 0 && patchNums >= -colNums && patchNums <= colNums){\r\n var getEndTh = function(th){\r\n var field;\r\n th = th || that.layHeader.eq(0).find('thead > tr:first-child > th:last-child')\r\n field = th.data('field');\r\n if(!field && th.prev()[0]){\r\n return getEndTh(th.prev())\r\n }\r\n return th;\r\n };\r\n var th = getEndTh();\r\n var key = th.data('key');\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || th.outerWidth();\r\n item.style.width = (parseFloat(width) + patchNums) + 'px';\r\n\r\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\r\n if(that.layMain.height() - that.layMain.prop('clientHeight') > 0){\r\n item.style.width = (parseFloat(item.style.width) - 1) + 'px';\r\n }\r\n });\r\n }\r\n\r\n that.setGroupWidth();\r\n\r\n // 如果表格内容为空(无数据 或 请求异常)\r\n if (that.layMain.find('tbody').is(\":empty\")) {\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n var headerWidth = that.layHeader.first().children('table').width()\r\n that.layMain.find('table').width(headerWidth);\r\n } else {\r\n that.layMain.find('table').width('auto');\r\n }\r\n\r\n that.loading(!0);\r\n };\r\n\r\n // 重置表格尺寸/结构\r\n Class.prototype.resize = function(){\r\n var that = this;\r\n\r\n if (!that.layMain) return;\r\n\r\n that.fullSize(); // 让表格铺满\r\n that.setColsWidth(); // 自适应列宽\r\n that.scrollPatch(); // 滚动条补丁\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function(options, deep, type){\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n if (type !== 'reloadData') {\r\n layui.each(that.config.cols, function (i1, item1) {\r\n layui.each(item1, function (i2, item2) {\r\n delete item2.colspan2;\r\n })\r\n })\r\n delete that.config.HAS_SET_COLS_PATCH;\r\n }\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 异常提示\r\n Class.prototype.errorView = function(html){\r\n var that = this\r\n ,elemNone = that.layMain.find('.'+ NONE)\r\n ,layNone = $('
                '+ (html || 'Error') +'
                ');\r\n\r\n if(elemNone[0]){\r\n that.layNone.remove();\r\n elemNone.remove();\r\n }\r\n\r\n that.layFixed.addClass(HIDE);\r\n that.layMain.find('tbody').html('');\r\n\r\n that.layMain.append(that.layNone = layNone);\r\n\r\n // 异常情况下对 page 和 total 的内容处理\r\n that.layTotal.addClass(HIDE_V);\r\n that.layPage.find(ELEM_PAGE_VIEW).addClass(HIDE_V);\r\n\r\n table.cache[that.key] = []; //格式化缓存数据\r\n\r\n that.syncCheckAll();\r\n that.renderForm();\r\n that.setColsWidth();\r\n };\r\n\r\n // 初始页码\r\n Class.prototype.page = 1;\r\n\r\n // 获得数据\r\n Class.prototype.pullData = function(curr, opts){\r\n var that = this;\r\n var options = that.config;\r\n // 同步表头父列的相关值\r\n options.HAS_SET_COLS_PATCH || that.setColsPatch();\r\n options.HAS_SET_COLS_PATCH = true;\r\n var request = options.request;\r\n var response = options.response;\r\n var res;\r\n var sort = function(){\r\n if(typeof options.initSort === 'object'){\r\n that.sort({\r\n field: options.initSort.field,\r\n type: options.initSort.type,\r\n reloadType: opts.type\r\n });\r\n }\r\n };\r\n var done = function(res, origin){\r\n that.setColsWidth();\r\n typeof options.done === 'function' && options.done(\r\n res, curr, res[response.countName], origin\r\n );\r\n };\r\n\r\n opts = opts || {};\r\n\r\n // 数据拉取前的回调\r\n typeof options.before === 'function' && options.before(\r\n options\r\n );\r\n that.startTime = new Date().getTime(); // 渲染开始时间\r\n\r\n if (opts.renderData) { // 将 cache 信息重新渲染\r\n res = {};\r\n res[response.dataName] = table.cache[that.key];\r\n res[response.countName] = options.url ? (layui.type(options.page) === 'object' ? options.page.count : res[response.dataName].length) : options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, that.totalRow);\r\n }\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type,\r\n sort: true\r\n }), done(res, 'renderData');\r\n } else if(options.url){ // Ajax请求\r\n var params = {};\r\n // 当 page 开启,默认自动传递 page、limit 参数\r\n if(options.page){\r\n params[request.pageName] = curr;\r\n params[request.limitName] = options.limit;\r\n }\r\n\r\n // 参数\r\n var data = $.extend(params, options.where);\r\n if(options.contentType && options.contentType.indexOf(\"application/json\") == 0){ // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n\r\n that.loading();\r\n\r\n $.ajax({\r\n type: options.method || 'get',\r\n url: options.url,\r\n contentType: options.contentType,\r\n data: data,\r\n dataType: options.dataType || 'json',\r\n jsonpCallback: options.jsonpCallback,\r\n headers: options.headers || {},\r\n complete: typeof options.complete === 'function' ? options.complete : undefined,\r\n success: function(res){\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if(typeof options.parseData === 'function'){\r\n res = options.parseData(res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if(res[response.statusName] != response.statusCode){\r\n that.errorView(\r\n res[response.msgName] ||\r\n ('返回的数据不符合规范,正确的成功状态码应为:\"'+ response.statusName +'\": '+ response.statusCode)\r\n );\r\n } else {\r\n that.totalRow = res[response.totalRowName];\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n // 耗时(接口请求+视图渲染)\r\n options.time = (new Date().getTime() - that.startTime) + ' ms';\r\n }\r\n done(res);\r\n },\r\n error: function(e, msg){\r\n that.errorView('请求异常,错误提示:'+ msg);\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n } else if(layui.type(options.data) === 'array'){ //已知数据\r\n res = {};\r\n var startLimit = curr*options.limit - options.limit;\r\n var newData = options.data.concat();\r\n\r\n res[response.dataName] = options.page\r\n ? newData.splice(startLimit, options.limit)\r\n : newData;\r\n res[response.countName] = options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, options.totalRow);\r\n }\r\n that.totalRow = res[response.totalRowName];\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n done(res);\r\n }\r\n };\r\n\r\n // 遍历表头\r\n Class.prototype.eachCols = function(callback){\r\n var that = this;\r\n table.eachCols(null, callback, that.config.cols);\r\n return that;\r\n };\r\n\r\n // 获取表头参数项\r\n Class.prototype.col = function(key){\r\n try {\r\n key = key.split('-');\r\n return this.config.cols[key[1]][key[2]] || {};\r\n } catch(e){\r\n hint.error(e);\r\n return {};\r\n }\r\n };\r\n\r\n Class.prototype.getTrHtml = function(data, sort, curr, trsObj) {\r\n var that = this;\r\n var options = that.config;\r\n var trs = trsObj && trsObj.trs || [];\r\n var trs_fixed = trsObj && trsObj.trs_fixed || [];\r\n var trs_fixed_r = trsObj && trsObj.trs_fixed_r || [];\r\n curr = curr || 1\r\n\r\n layui.each(data, function(i1, item1){\r\n var tds = [];\r\n var tds_fixed = [];\r\n var tds_fixed_r = [];\r\n var numbers = i1 + options.limit*(curr - 1) + 1; // 序号\r\n\r\n // 数组值是否为 object,如果不是,则自动转为 object\r\n if(typeof item1 !== 'object'){\r\n data[i1] = item1 = {LAY_KEY: item1};\r\n try {\r\n table.cache[that.key][i1] = item1;\r\n } catch(e) {}\r\n }\r\n\r\n //若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n // 加入序号保留字段\r\n item1[table.config.numbersName] = numbers;\r\n\r\n // 记录下标索引,用于恢复排序\r\n if(!sort) item1[table.config.indexName] = i1;\r\n\r\n // 遍历表头\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n var key = item3.key;\r\n var content = item1[field];\r\n\r\n if(content === undefined || content === null) content = '';\r\n if(item3.colGroup) return;\r\n\r\n // td 内容\r\n var td = [''\r\n ,'
                '\r\n + function(){\r\n var tplData = $.extend(true, {\r\n LAY_COL: item3\r\n }, item1);\r\n var checkName = table.config.checkName;\r\n var disabledName = table.config.disabledName;\r\n\r\n // 渲染不同风格的列\r\n switch(item3.type){\r\n case 'checkbox': // 复选\r\n return '';\r\n //break;\r\n case 'radio': // 单选\r\n return '';\r\n //break;\r\n case 'numbers':\r\n return numbers;\r\n //break;\r\n }\r\n\r\n //解析工具列模板\r\n if(item3.toolbar){\r\n return laytpl($(item3.toolbar).html()||'').render(tplData);\r\n }\r\n return parseTempData.call(that, {\r\n item3: item3\r\n ,content: content\r\n ,tplData: tplData\r\n });\r\n }()\r\n ,'
                '].join('');\r\n\r\n tds.push(td);\r\n if(item3.fixed && item3.fixed !== 'right') tds_fixed.push(td);\r\n if(item3.fixed === 'right') tds_fixed_r.push(td);\r\n });\r\n\r\n // 添加 tr 属性\r\n var trAttr = function(){\r\n var arr = ['data-index=\"'+ i1 +'\"'];\r\n if(item1[table.config.checkName]) arr.push('class=\"'+ ELEM_CHECKED +'\"');\r\n return arr.join(' ');\r\n }();\r\n\r\n trs.push(''+ tds.join('') + '');\r\n trs_fixed.push(''+ tds_fixed.join('') + '');\r\n trs_fixed_r.push(''+ tds_fixed_r.join('') + '');\r\n });\r\n\r\n return {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n }\r\n }\r\n\r\n // 返回行节点代码\r\n table.getTrHtml = function (id, data) {\r\n var that = getThisTable(id);\r\n return that.getTrHtml(data, null, that.page);\r\n }\r\n\r\n // 数据渲染\r\n Class.prototype.renderData = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var res = opts.res;\r\n var curr = opts.curr;\r\n var count = that.count = opts.count;\r\n var sort = opts.sort;\r\n\r\n var data = res[options.response.dataName] || []; //列表数据\r\n var totalRowData = res[options.response.totalRowName]; //合计行数据\r\n var trs = [];\r\n var trs_fixed = [];\r\n var trs_fixed_r = [];\r\n\r\n // 渲染视图\r\n var render = function(){ // 后续性能提升的重点\r\n if(!sort && that.sortKey){\r\n return that.sort({\r\n field: that.sortKey.field,\r\n type: that.sortKey.sort,\r\n pull: true,\r\n reloadType: opts.type\r\n });\r\n }\r\n that.getTrHtml(data, sort, curr, {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n });\r\n\r\n // 容器的滚动条位置\r\n if(!(options.scrollPos === 'fixed' && opts.type === 'reloadData')){\r\n that.layBody.scrollTop(0);\r\n }\r\n if(options.scrollPos === 'reset'){\r\n that.layBody.scrollLeft(0);\r\n }\r\n\r\n that.layMain.find('.'+ NONE).remove();\r\n that.layMain.find('tbody').html(trs.join(''));\r\n that.layFixLeft.find('tbody').html(trs_fixed.join(''));\r\n that.layFixRight.find('tbody').html(trs_fixed_r.join(''));\r\n\r\n // 渲染表单\r\n that.syncCheckAll();\r\n that.renderForm();\r\n\r\n // 因为 page 参数有可能发生变化 先重新铺满\r\n that.fullSize();\r\n\r\n // 滚动条补丁\r\n that.haveInit ? that.scrollPatch() : setTimeout(function(){\r\n that.scrollPatch();\r\n }, 50);\r\n that.haveInit = true;\r\n\r\n layer.close(that.tipsIndex);\r\n };\r\n\r\n table.cache[that.key] = data; //记录数据\r\n\r\n //显示隐藏合计栏\r\n that.layTotal[data.length == 0 ? 'addClass' : 'removeClass'](HIDE_V);\r\n\r\n //显示隐藏分页栏\r\n that.layPage[(options.page || options.pagebar) ? 'removeClass' : 'addClass'](HIDE);\r\n that.layPage.find(ELEM_PAGE_VIEW)[\r\n (!options.page || count == 0 || (data.length === 0 && curr == 1))\r\n ? 'addClass'\r\n : 'removeClass'\r\n ](HIDE_V);\r\n\r\n //如果无数据\r\n if(data.length === 0){\r\n return that.errorView(options.text.none);\r\n } else {\r\n that.layFixLeft.removeClass(HIDE);\r\n }\r\n\r\n //如果执行初始排序\r\n if(sort){\r\n return render();\r\n }\r\n\r\n //正常初始化数据渲染\r\n render(); //渲染数据\r\n that.renderTotal(data, totalRowData); //数据合计\r\n that.layTotal && that.layTotal.removeClass(HIDE);\r\n\r\n //同步分页状态\r\n if(options.page){\r\n options.page = $.extend({\r\n elem: 'layui-table-page' + options.index,\r\n count: count,\r\n limit: options.limit,\r\n limits: options.limits || [10,20,30,40,50,60,70,80,90],\r\n groups: 3,\r\n layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],\r\n prev: '',\r\n next: '',\r\n jump: function(obj, first){\r\n if(!first){\r\n //分页本身并非需要做以下更新,下面参数的同步,主要是因为其它处理统一用到了它们\r\n //而并非用的是 options.page 中的参数(以确保分页未开启的情况仍能正常使用)\r\n that.page = obj.curr; //更新页码\r\n options.limit = obj.limit; //更新每页条数\r\n\r\n that.pullData(obj.curr);\r\n }\r\n }\r\n }, options.page);\r\n options.page.count = count; //更新总条数\r\n laypage.render(options.page);\r\n }\r\n };\r\n\r\n // 重新渲染数据\r\n table.renderData = function (id) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n that.pullData(that.page, {\r\n renderData: true,\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 数据合计行\r\n Class.prototype.renderTotal = function(data, totalRowData){\r\n var that = this;\r\n var options = that.config;\r\n var totalNums = {};\r\n\r\n if(!options.totalRow) return;\r\n\r\n layui.each(data, function(i1, item1){\r\n // 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3\r\n ,content = item1[field];\r\n\r\n if(item3.totalRow){\r\n totalNums[field] = (totalNums[field] || 0) + (parseFloat(content) || 0);\r\n }\r\n });\r\n });\r\n\r\n that.dataTotal = []; // 记录合计行结果\r\n\r\n var tds = [];\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n\r\n // 合计数据的特定字段\r\n var TOTAL_NUMS = totalRowData && totalRowData[item3.field];\r\n\r\n // 合计数据的小数点位数处理\r\n var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;\r\n var thisTotalNum = totalNums[field]\r\n ? parseFloat(totalNums[field] || 0).toFixed(decimals)\r\n : '';\r\n\r\n // td 显示内容\r\n var content = function(){\r\n var text = item3.totalRowText || '';\r\n var tplData = {\r\n LAY_COL: item3\r\n };\r\n\r\n tplData[field] = thisTotalNum;\r\n\r\n // 获取自动计算的合并内容\r\n var getContent = item3.totalRow ? (parseTempData.call(that, {\r\n item3: item3,\r\n content: thisTotalNum,\r\n tplData: tplData\r\n }) || text) : text;\r\n\r\n // 如果直接传入了合计行数据,则不输出自动计算的结果\r\n return TOTAL_NUMS || getContent;\r\n }();\r\n\r\n // 合计原始结果\r\n var total = TOTAL_NUMS || thisTotalNum || '';\r\n item3.field && that.dataTotal.push({\r\n field: item3.field,\r\n total: $('
                '+ content +'
                ').text()\r\n });\r\n\r\n // td 容器\r\n var td = ['',\r\n '
                ' + function(){\r\n var totalRow = item3.totalRow || options.totalRow;\r\n\r\n // 如果 totalRow 参数为字符类型,则解析为自定义模版\r\n if(typeof totalRow === 'string'){\r\n return laytpl(totalRow).render($.extend({\r\n TOTAL_NUMS: TOTAL_NUMS || totalNums[field],\r\n TOTAL_ROW: totalRowData || {},\r\n LAY_COL: item3\r\n }, item3));\r\n }\r\n return content;\r\n }(),\r\n '
                '].join('');\r\n\r\n tds.push(td);\r\n });\r\n\r\n var patchElem = that.layTotal.find('.layui-table-patch'); // 可能存在滚动条补丁\r\n that.layTotal.find('tbody').html('' + tds.join('') + (patchElem.length ? patchElem.get(0).outerHTML : '') + '');\r\n };\r\n\r\n //找到对应的列元素\r\n Class.prototype.getColElem = function(parent, key){\r\n var that = this;\r\n //var options = that.config;\r\n return parent.eq(0).find('.laytable-cell-'+ key + ':eq(0)');\r\n };\r\n\r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n var that = this;\r\n var options = that.config;\r\n var filter = that.elem.attr('lay-filter');\r\n form.render(type, filter);\r\n };\r\n\r\n // 同步全选按钮状态\r\n Class.prototype.syncCheckAll = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkAllElem = that.layHeader.find('input[name=\"layTableCheckbox\"]');\r\n var syncColsCheck = function(checked){\r\n that.eachCols(function(i, item){\r\n if(item.type === 'checkbox'){\r\n item[options.checkName] = checked;\r\n }\r\n });\r\n return checked;\r\n };\r\n var checkStatus = table.checkStatus(that.key);\r\n\r\n if(!checkAllElem[0]) return;\r\n\r\n // 选中状态\r\n syncColsCheck(checkStatus.isAll);\r\n checkAllElem.prop({\r\n checked: checkStatus.isAll,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length // 半选\r\n });\r\n form.render(checkAllElem);\r\n };\r\n\r\n // 标记当前活动行背景色\r\n Class.prototype.setRowActive = function(index, className, removeClass){\r\n var that = this;\r\n var options = that.config;\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n className = className || 'layui-table-click';\r\n\r\n if(removeClass) return tr.removeClass(className);\r\n\r\n tr.addClass(className);\r\n tr.siblings('tr').removeClass(className);\r\n };\r\n\r\n // 设置行选中状态\r\n Class.prototype.setRowChecked = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var isCheckAll = opts.index === 'all'; // 是否操作全部\r\n var isCheckMult = layui.type(opts.index) === 'array'; // 是否操作多个\r\n\r\n // 匹配行元素\r\n var tr = function(tr) {\r\n return isCheckAll ? tr : tr.filter(isCheckMult ? function() {\r\n var dataIndex = $(this).data('index');\r\n return opts.index.indexOf(dataIndex) !== -1;\r\n } : '[data-index=\"'+ opts.index +'\"]');\r\n }(that.layBody.find('tr'));\r\n\r\n // 默认属性\r\n opts = $.extend({\r\n type: 'checkbox' // 选中方式\r\n }, opts);\r\n\r\n // 同步数据选中属性值\r\n var thisData = table.cache[that.key];\r\n var existChecked = 'checked' in opts;\r\n\r\n // 若为单选框,则单向选中;若为复选框,则切换选中。\r\n var getChecked = function(value){\r\n return opts.type === 'radio' ? true : (existChecked ? opts.checked : !value)\r\n };\r\n\r\n // 设置选中状态\r\n layui.each(thisData, function(i, item){\r\n // 绕过空项和禁用项\r\n if(layui.type(item) === 'array' || item[options.disabledName]) return;\r\n\r\n // 匹配条件\r\n var matched = isCheckAll || (\r\n isCheckMult ? opts.index.indexOf(i) !== -1 : Number(opts.index) === i\r\n );\r\n\r\n // 设置匹配项的选中值\r\n if(matched){\r\n // 标记数据选中状态\r\n var checked = item[options.checkName] = getChecked(item[options.checkName]);\r\n\r\n // 标记当前行背景色\r\n var currTr = tr.filter('[data-index=\"'+ i +'\"]');\r\n currTr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n\r\n // 若为 radio 类型,则取消其他行选中背景色\r\n if(opts.type === 'radio'){\r\n currTr.siblings().removeClass(ELEM_CHECKED);\r\n }\r\n } else if(opts.type === 'radio') {\r\n delete item[options.checkName];\r\n }\r\n });\r\n\r\n // 若存在复选框或单选框,则标注选中状态样式\r\n var checkedElem = tr.find('input[lay-type=\"'+ ({\r\n radio: 'layTableRadio',\r\n checkbox: 'layTableCheckbox'\r\n }[opts.type] || 'checkbox') +'\"]:not(:disabled)');\r\n var checkedSameElem = checkedElem.last();\r\n var fixRElem = checkedSameElem.closest(ELEM_FIXR);\r\n\r\n ( opts.type === 'radio' && fixRElem.hasClass(HIDE)\r\n ? checkedElem.first()\r\n : checkedElem ).prop('checked', getChecked(checkedSameElem.prop('checked')));\r\n\r\n that.syncCheckAll();\r\n that.renderForm(opts.type);\r\n };\r\n\r\n // 数据排序\r\n Class.prototype.sort = function(opts){ // field, type, pull, fromEvent\r\n var that = this;\r\n var field;\r\n var res = {};\r\n var options = that.config;\r\n var filter = options.elem.attr('lay-filter');\r\n var data = table.cache[that.key], thisData;\r\n\r\n opts = opts || {};\r\n\r\n // 字段匹配\r\n if(typeof opts.field === 'string'){\r\n field = opts.field;\r\n that.layHeader.find('th').each(function(i, item){\r\n var othis = $(this);\r\n var _field = othis.data('field');\r\n if(_field === opts.field){\r\n opts.field = othis;\r\n field = _field;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n try {\r\n field = field || opts.field.data('field');\r\n var key = opts.field.data('key');\r\n\r\n // 如果欲执行的排序已在状态中,则不执行渲染\r\n if(that.sortKey && !opts.pull){\r\n if(field === that.sortKey.field && opts.type === that.sortKey.sort){\r\n return;\r\n }\r\n }\r\n\r\n var elemSort = that.layHeader.find('th .laytable-cell-'+ key).find(ELEM_SORT);\r\n that.layHeader.find('th').find(ELEM_SORT).removeAttr('lay-sort'); // 清除其它标题排序状态\r\n elemSort.attr('lay-sort', opts.type || null);\r\n that.layFixed.find('th')\r\n } catch(e){\r\n hint.error('Table modules: sort field \\''+ field +'\\' not matched');\r\n }\r\n\r\n // 记录排序索引和类型\r\n that.sortKey = {\r\n field: field,\r\n sort: opts.type\r\n };\r\n\r\n // 默认为前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n if(options.autoSort){\r\n if(opts.type === 'asc'){ //升序\r\n thisData = layui.sort(data, field, null, true);\r\n } else if(opts.type === 'desc'){ //降序\r\n thisData = layui.sort(data, field, true, true);\r\n } else { // 清除排序\r\n thisData = layui.sort(data, table.config.indexName, null, true);\r\n delete that.sortKey;\r\n delete options.initSort;\r\n }\r\n }\r\n\r\n res[options.response.dataName] = thisData || data;\r\n\r\n // 重载数据\r\n that.renderData({\r\n res: res,\r\n curr: that.page,\r\n count: that.count,\r\n sort: true,\r\n type: opts.reloadType\r\n });\r\n\r\n // 排序是否来自于点击表头事件触发\r\n if(opts.fromEvent){\r\n options.initSort = {\r\n field: field,\r\n type: opts.type\r\n };\r\n layui.event.call(opts.field, MOD_NAME, 'sort('+ filter +')', $.extend({\r\n config: options\r\n }, options.initSort));\r\n }\r\n };\r\n\r\n // 请求 loading\r\n Class.prototype.loading = function(hide){\r\n var that = this;\r\n var options = that.config;\r\n if(options.loading){\r\n if(hide){\r\n that.layInit && that.layInit.remove();\r\n delete that.layInit;\r\n that.layBox.find(ELEM_INIT).remove();\r\n } else {\r\n that.layInit = $(['
                ',\r\n '',\r\n '
                '].join(''));\r\n that.layBox.append(that.layInit);\r\n }\r\n }\r\n };\r\n\r\n // 获取对应单元格的 cssRules\r\n Class.prototype.cssRules = function(key, callback){\r\n var that = this;\r\n var style = that.elem.children('style')[0];\r\n\r\n lay.getStyleRules(style, function(item){\r\n if (item.selectorText === ('.laytable-cell-'+ key)) {\r\n return callback(item), true;\r\n }\r\n });\r\n };\r\n\r\n // 让表格铺满\r\n Class.prototype.fullSize = function(){\r\n var that = this;\r\n var options = that.config;\r\n var height = options.height;\r\n var bodyHeight;\r\n var MIN_HEIGHT = 135;\r\n\r\n if(that.fullHeightGap){\r\n height = _WIN.height() - that.fullHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css('height', height);\r\n } else if (that.parentDiv && that.parentHeightGap) {\r\n height = $(that.parentDiv).height() - that.parentHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css(\"height\", height);\r\n } else if (that.customHeightFunc) {\r\n height = that.customHeightFunc();\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n }\r\n\r\n // 如果多级表头,则填补表头高度\r\n if(options.cols.length > 1){\r\n // 补全高度\r\n var th = that.layFixed.find(ELEM_HEADER).find('th');\r\n // 固定列表头同步跟本体 th 一致高度\r\n var headerMain = that.layHeader.first();\r\n layui.each(th, function (thIndex, thElem) {\r\n thElem = $(thElem);\r\n thElem.height(headerMain.find('th[data-key=\"' + thElem.attr('data-key') + '\"]').height() + 'px');\r\n })\r\n }\r\n\r\n if(!height) return;\r\n\r\n // 减去列头区域的高度 --- 此处的数字常量是为了防止容器处在隐藏区域无法获得高度的问题,只对默认尺寸表格做支持\r\n bodyHeight = parseFloat(height) - (that.layHeader.outerHeight() || 39)\r\n\r\n // 减去工具栏的高度\r\n if(options.toolbar){\r\n bodyHeight -= (that.layTool.outerHeight() || 51);\r\n }\r\n\r\n // 减去统计栏的高度\r\n if(options.totalRow){\r\n bodyHeight -= (that.layTotal.outerHeight() || 40);\r\n }\r\n\r\n // 减去分页栏的高度\r\n if(options.page || options.pagebar){\r\n bodyHeight -= (that.layPage.outerHeight() || 43);\r\n }\r\n\r\n if (options.maxHeight) {\r\n layui.each({elem: height, layMain: bodyHeight}, function (elemName, elemHeight) {\r\n that[elemName].css({\r\n height: 'auto',\r\n maxHeight: elemHeight + 'px'\r\n });\r\n });\r\n } else {\r\n that.layMain.outerHeight(bodyHeight);\r\n }\r\n };\r\n\r\n //获取滚动条宽度\r\n Class.prototype.getScrollWidth = function(elem){\r\n var width;\r\n if(elem){\r\n width = elem.offsetWidth - elem.clientWidth;\r\n } else {\r\n elem = document.createElement('div');\r\n elem.style.width = '100px';\r\n elem.style.height = '100px';\r\n elem.style.overflowY = 'scroll';\r\n\r\n document.body.appendChild(elem);\r\n width = elem.offsetWidth - elem.clientWidth;\r\n document.body.removeChild(elem);\r\n }\r\n return width;\r\n };\r\n\r\n // 滚动条补丁\r\n Class.prototype.scrollPatch = function(){\r\n var that = this;\r\n var layMainTable = that.layMain.children('table');\r\n var scrollWidth = that.layMain.width() - that.layMain.prop('clientWidth'); // 纵向滚动条宽度\r\n var scrollHeight = that.layMain.height() - that.layMain.prop('clientHeight'); // 横向滚动条高度\r\n var getScrollWidth = that.getScrollWidth(that.layMain[0]); // 获取主容器滚动条宽度,如果有的话\r\n var outWidth = layMainTable.outerWidth() - that.layMain.width(); // 表格内容器的超出宽度\r\n\r\n // 添加补丁\r\n var addPatch = function(elem){\r\n if(scrollWidth && scrollHeight){\r\n elem = elem.eq(0);\r\n if(!elem.find('.layui-table-patch')[0]){\r\n var patchElem = $('
                '); // 补丁元素\r\n patchElem.find('div').css({\r\n width: scrollWidth\r\n });\r\n elem.find('tr').append(patchElem);\r\n }\r\n } else {\r\n elem.find('.layui-table-patch').remove();\r\n }\r\n };\r\n\r\n addPatch(that.layHeader);\r\n addPatch(that.layTotal);\r\n\r\n // 固定列区域高度\r\n var mainHeight = that.layMain.height();\r\n var fixHeight = mainHeight - scrollHeight;\r\n\r\n that.layFixed.find(ELEM_BODY).css(\r\n 'height',\r\n layMainTable.height() >= fixHeight ? fixHeight : 'auto'\r\n ).scrollTop(that.layMain.scrollTop()); // 固定列滚动条高度\r\n\r\n // 表格宽度小于容器宽度时,隐藏固定列\r\n that.layFixRight[\r\n (table.cache[that.key] && table.cache[that.key].length) && outWidth > 0\r\n ? 'removeClass'\r\n : 'addClass'\r\n ](HIDE);\r\n\r\n // 操作栏\r\n that.layFixRight.css('right', scrollWidth - 1);\r\n };\r\n\r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var filter = options.elem.attr('lay-filter');\r\n var th = that.layHeader.find('th');\r\n var ELEM_CELL = '.layui-table-cell';\r\n\r\n var _BODY = $('body');\r\n var dict = {};\r\n\r\n // 头部工具栏操作事件\r\n that.layTool.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var data = table.cache[options.id];\r\n var openPanel = function(sets){\r\n var list = $(sets.list);\r\n var panel = $('
                  ');\r\n\r\n panel.html(list);\r\n\r\n // 限制最大高度\r\n if(options.height){\r\n panel.css('max-height', options.height - (that.layTool.outerHeight() || 50));\r\n }\r\n\r\n // 插入元素\r\n othis.find('.' + ELEM_TOOL_PANEL)[0] || othis.append(panel);\r\n that.renderForm();\r\n\r\n panel.on('click', function(e){\r\n layui.stope(e);\r\n });\r\n\r\n sets.done && sets.done(panel, list)\r\n };\r\n\r\n layui.stope(e);\r\n _DOC.trigger('table.tool.panel.remove');\r\n layer.close(that.tipsIndex);\r\n\r\n switch(events){\r\n case 'LAYTABLE_COLS': // 筛选列\r\n openPanel({\r\n list: function(){\r\n var lis = [];\r\n that.eachCols(function(i, item){\r\n if(item.field && item.type == 'normal'){\r\n lis.push('
                • ' + (item.fieldTitle || item.title || item.field) + '
                • ').text()) +'\" lay-filter=\"LAY_TABLE_TOOL_COLS\">');\r\n }\r\n });\r\n return lis.join('');\r\n }()\r\n ,done: function(){\r\n form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj){\r\n var othis = $(obj.elem);\r\n var checked = this.checked;\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var hide = col.hide;\r\n var parentKey = othis.data('parentkey');\r\n\r\n if(!col.key) return;\r\n\r\n // 同步勾选列的 hide 值和隐藏样式\r\n col.hide = !checked;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n checked ? 'removeClass' : 'addClass'\r\n ](HIDE);\r\n\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n if(hide != col.hide){\r\n that.setParentCol(!checked, parentKey);\r\n }\r\n\r\n // 重新适配尺寸\r\n that.resize();\r\n\r\n // 列筛选(显示或隐藏)后的事件\r\n layui.event.call(this, MOD_NAME, 'colToggled('+ filter +')', {\r\n col: col,\r\n config: options\r\n });\r\n });\r\n }\r\n });\r\n break;\r\n case 'LAYTABLE_EXPORT': // 导出\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n if(device.ie){\r\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {\r\n tips: 3\r\n });\r\n } else {\r\n openPanel({\r\n list: function(){\r\n return [\r\n '
                • 导出 csv 格式文件
                • ',\r\n '
                • 导出 xls 格式文件
                • '\r\n ].join('')\r\n }(),\r\n done: function(panel, list){\r\n list.on('click', function(){\r\n var type = $(this).data('type')\r\n table.exportFile.call(that, options.id, null, type);\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case 'LAYTABLE_PRINT': // 打印\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n var printWin = window.open('about:blank', '_blank');\r\n var style = [''].join('')\r\n var html = $(that.layHeader.html()); // 输出表头\r\n\r\n html.append(that.layMain.find('table').html()); // 输出表体\r\n html.append(that.layTotal.find('table').html()) // 输出合计行\r\n\r\n html.find('th.layui-table-patch').remove(); // 移除补丁\r\n // 移除表头特殊列\r\n html.find('thead>tr>th.'+ ELEM_COL_SPECIAL).filter(function(i, thElem){\r\n return !$(thElem).children('.'+ ELEM_GROUP).length; // 父级表头除外\r\n }).remove();\r\n html.find('tbody>tr>td.'+ ELEM_COL_SPECIAL).remove(); // 移除表体特殊列\r\n\r\n printWin.document.write(style + html.prop('outerHTML'));\r\n printWin.document.close();\r\n\r\n if(layui.device('edg').edg){\r\n printWin.onafterprint = printWin.close;\r\n printWin.print();\r\n }else{\r\n printWin.print();\r\n printWin.close();\r\n }\r\n break;\r\n }\r\n\r\n layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 表头自定义元素事件\r\n that.layHeader.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var th = othis.closest('th');\r\n var key = th.data('key');\r\n var col = that.col(key);\r\n\r\n layui.event.call(this, MOD_NAME, 'colTool('+ filter +')', $.extend({\r\n event: events,\r\n config: options,\r\n col: col\r\n },{}));\r\n });\r\n\r\n // 分页栏操作事件\r\n that.layPagebar.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n\r\n layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 拖拽调整宽度\r\n th.on('mousemove', function(e){\r\n var othis = $(this);\r\n var oLeft = othis.offset().left;\r\n var pLeft = e.clientX - oLeft;\r\n if(othis.data('unresize') || thisTable.eventMoveElem){\r\n return;\r\n }\r\n dict.allowResize = othis.width() - pLeft <= 10; //是否处于拖拽允许区域\r\n _BODY.css('cursor', (dict.allowResize ? 'col-resize' : ''));\r\n }).on('mouseleave', function(){\r\n var othis = $(this);\r\n if(thisTable.eventMoveElem) return;\r\n _BODY.css('cursor', '');\r\n }).on('mousedown', function(e){\r\n var othis = $(this);\r\n if(dict.allowResize){\r\n var key = othis.data('key');\r\n e.preventDefault();\r\n dict.offset = [e.clientX, e.clientY]; //记录初始坐标\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || othis.outerWidth();\r\n dict.rule = item;\r\n dict.ruleWidth = parseFloat(width);\r\n dict.minWidth = othis.data('minwidth') || options.cellMinWidth;\r\n dict.maxWidth = othis.data('maxwidth') || options.cellMaxWidth;\r\n });\r\n\r\n // 临时记录当前拖拽信息\r\n othis.data(DATA_MOVE_NAME, dict);\r\n thisTable.eventMoveElem = othis;\r\n }\r\n });\r\n\r\n // 拖拽中\r\n if(!thisTable.docEvent){\r\n _DOC.on('mousemove', function(e){\r\n if(thisTable.eventMoveElem){\r\n var dict = thisTable.eventMoveElem.data(DATA_MOVE_NAME) || {};\r\n\r\n thisTable.eventMoveElem.data('resizing', 1);\r\n e.preventDefault();\r\n\r\n if(dict.rule){\r\n var setWidth = dict.ruleWidth + e.clientX - dict.offset[0];\r\n var id = thisTable.eventMoveElem.closest('.' + ELEM_VIEW).attr('lay-id');\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n if(setWidth < dict.minWidth) setWidth = dict.minWidth;\r\n if(setWidth > dict.maxWidth) setWidth = dict.maxWidth;\r\n\r\n dict.rule.style.width = setWidth + 'px';\r\n thatTable.setGroupWidth(thisTable.eventMoveElem);\r\n layer.close(that.tipsIndex);\r\n }\r\n }\r\n }).on('mouseup', function(e){\r\n if(thisTable.eventMoveElem){\r\n var th = thisTable.eventMoveElem; // 当前触发拖拽的 th 元素\r\n var id = th.closest('.' + ELEM_VIEW).attr('lay-id');\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n var key = th.data('key');\r\n var col = thatTable.col(key);\r\n var filter = thatTable.config.elem.attr('lay-filter');\r\n\r\n // 重置过度信息\r\n dict = {};\r\n _BODY.css('cursor', '');\r\n thatTable.scrollPatch();\r\n\r\n // 清除当前拖拽信息\r\n th.removeData(DATA_MOVE_NAME);\r\n delete thisTable.eventMoveElem;\r\n\r\n // 列拖拽宽度后的事件\r\n thatTable.cssRules(key, function(item){\r\n col.width = parseFloat(item.style.width);\r\n layui.event.call(th[0], MOD_NAME, 'colResized('+ filter +')', {\r\n col: col,\r\n config: thatTable.config\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 已给 document 执行全局事件,避免重复绑定\r\n thisTable.docEvent = true;\r\n\r\n\r\n // 排序\r\n th.on('click', function(e){\r\n var othis = $(this);\r\n var elemSort = othis.find(ELEM_SORT);\r\n var nowType = elemSort.attr('lay-sort');\r\n var type;\r\n\r\n // 排序不触发的条件\r\n if(!elemSort[0] || othis.data('resizing') === 1){\r\n return othis.removeData('resizing');\r\n }\r\n\r\n if(nowType === 'asc'){\r\n type = 'desc';\r\n } else if(nowType === 'desc'){\r\n type = null;\r\n } else {\r\n type = 'asc';\r\n }\r\n that.sort({\r\n field: othis,\r\n type: type,\r\n fromEvent: true\r\n });\r\n }).find(ELEM_SORT+' .layui-edge ').on('click', function(e){\r\n var othis = $(this);\r\n var index = othis.index();\r\n var field = othis.parents('th').eq(0).data('field');\r\n layui.stope(e);\r\n if(index === 0){\r\n that.sort({\r\n field: field,\r\n type: 'asc',\r\n fromEvent: true\r\n });\r\n } else {\r\n that.sort({\r\n field: field,\r\n type: 'desc',\r\n fromEvent: true\r\n });\r\n }\r\n });\r\n\r\n //数据行中的事件返回的公共对象成员\r\n var commonMember = that.commonMember = function(sets){\r\n var othis = $(this);\r\n var index = othis.parents('tr').eq(0).data('index');\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n var data = table.cache[that.key] || [];\r\n\r\n data = data[index] || {};\r\n\r\n // 事件返回的公共成员\r\n var obj = {\r\n tr: tr, // 行元素\r\n config: options,\r\n data: table.clearCacheKey(data), // 当前行数据\r\n dataCache: data, // 当前行缓存中的数据\r\n index: index,\r\n del: function(){ // 删除行数据\r\n table.cache[that.key][index] = [];\r\n tr.remove();\r\n that.scrollPatch();\r\n },\r\n update: function(fields, related){ // 修改行数据\r\n fields = fields || {};\r\n layui.each(fields, function(key, value){\r\n var td = tr.children('td[data-field=\"'+ key +'\"]');\r\n var cell = td.children(ELEM_CELL); // 获取当前修改的列\r\n\r\n // 更新缓存中的数据\r\n data[key] = obj.data[key] = value;\r\n\r\n // 更新相应列视图\r\n that.eachCols(function(i, item3){\r\n if(item3.field == key){\r\n cell.html(parseTempData.call(that, {\r\n item3: item3\r\n ,content: value\r\n ,tplData: $.extend({\r\n LAY_COL: item3\r\n }, data)\r\n }));\r\n td.data('content', value);\r\n }\r\n // 更新其他包含自定义模板且可能有所关联的列视图\r\n else if(related && (item3.templet || item3.toolbar)){\r\n var thisTd = tr.children('td[data-field=\"'+ (item3.field || i) +'\"]');\r\n var content = data[item3.field];\r\n\r\n thisTd.children(ELEM_CELL).html(parseTempData.call(that, {\r\n item3: item3\r\n ,content: content\r\n ,tplData: $.extend({\r\n LAY_COL: item3\r\n }, data)\r\n }));\r\n thisTd.data('content', content);\r\n }\r\n });\r\n });\r\n\r\n that.renderForm();\r\n },\r\n // 设置行选中状态\r\n setRowChecked: function(opts){\r\n that.setRowChecked($.extend({\r\n index: index\r\n }, opts));\r\n }\r\n // 获取当前列\r\n };\r\n\r\n return $.extend(obj, sets);\r\n };\r\n\r\n // 复选框选择(替代元素的 click 事件)\r\n that.elem.on('click', 'input[name=\"layTableCheckbox\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var checkbox = othis.prev();\r\n var children = that.layBody.find('input[name=\"layTableCheckbox\"]');\r\n var index = checkbox.parents('tr').eq(0).data('index');\r\n var checked = checkbox[0].checked;\r\n var isAll = checkbox.attr('lay-filter') === 'layTableAllChoose';\r\n\r\n if(checkbox[0].disabled) return;\r\n\r\n // 全选\r\n if(isAll){\r\n that.setRowChecked({\r\n index: 'all',\r\n checked: checked\r\n });\r\n } else {\r\n that.setRowChecked({\r\n index: index,\r\n checked: checked\r\n });\r\n layui.stope(e);\r\n }\r\n\r\n // 事件\r\n layui.event.call(\r\n checkbox[0],\r\n MOD_NAME, 'checkbox('+ filter +')',\r\n commonMember.call(checkbox[0], {\r\n checked: checked,\r\n type: isAll ? 'all' : 'one',\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 单选框选择\r\n that.elem.on('click', 'input[lay-type=\"layTableRadio\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var radio = othis.prev();\r\n var checked = radio[0].checked;\r\n var index = radio.parents('tr').eq(0).data('index');\r\n\r\n layui.stope(e);\r\n if(radio[0].disabled) return false;\r\n\r\n // 标注选中样式\r\n that.setRowChecked({\r\n type: 'radio',\r\n index: index\r\n });\r\n\r\n // 事件\r\n layui.event.call(\r\n radio[0],\r\n MOD_NAME, 'radio('+ filter +')',\r\n commonMember.call(radio[0], {\r\n checked: checked,\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 行事件\r\n that.layBody.on('mouseenter', 'tr', function(){ // 鼠标移入行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').addClass(ELEM_HOVER)\r\n }).on('mouseleave', 'tr', function(){ // 鼠标移出行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)\r\n }).on('click', 'tr', function(e){ // 单击行\r\n // 不支持行单击事件的元素\r\n var UNROW = [\r\n '.layui-form-checkbox',\r\n '.layui-form-switch',\r\n '.layui-form-radio',\r\n '[lay-unrow]'\r\n ].join(',');\r\n if( $(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\r\n return;\r\n }\r\n setRowEvent.call(this, 'row');\r\n }).on('dblclick', 'tr', function(){ // 双击行\r\n setRowEvent.call(this, 'rowDouble');\r\n }).on('contextmenu', 'tr', function(e){ // 菜单\r\n if (!options.defaultContextmenu) e.preventDefault();\r\n setRowEvent.call(this, 'rowContextmenu');\r\n });\r\n\r\n // 创建行单击、双击、菜单事件\r\n var setRowEvent = function(eventType){\r\n var othis = $(this);\r\n if(othis.data('off')) return; //不触发事件\r\n layui.event.call(this,\r\n MOD_NAME, eventType + '('+ filter +')',\r\n commonMember.call(othis.children('td')[0])\r\n );\r\n };\r\n\r\n // 渲染单元格编辑状态\r\n var renderGridEdit = function(othis, e){\r\n othis = $(othis);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n\r\n var field = othis.data('field');\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n // 是否开启编辑\r\n // 若 edit 传入函数,则根据函数的返回结果判断是否开启编辑\r\n var editType = typeof col.edit === 'function'\r\n ? col.edit(data)\r\n : col.edit;\r\n\r\n // 显示编辑表单\r\n if(editType){\r\n var input = $(function(){\r\n var inputElem = '';\r\n if(editType === 'textarea') {\r\n inputElem = '';\r\n }\r\n return inputElem;\r\n }());\r\n input[0].value = function(val) {\r\n return (val === undefined || val === null) ? '' : val;\r\n }(othis.data('content') || data[field]);\r\n othis.find('.'+ELEM_EDIT)[0] || othis.append(input);\r\n input.focus();\r\n e && layui.stope(e);\r\n }\r\n };\r\n\r\n // 单元格编辑 - 输入框内容被改变的事件\r\n that.layBody.on('change', '.'+ ELEM_EDIT, function(){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var value = this.value;\r\n var field = othis.parent().data('field');\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n\r\n //事件回调的参数对象\r\n var params = commonMember.call(td[0], {\r\n value: value,\r\n field: field,\r\n oldValue: data[field], // 编辑前的值\r\n td: td,\r\n reedit: function(){ // 重新编辑\r\n setTimeout(function(){\r\n // 重新渲染为编辑状态\r\n renderGridEdit(params.td);\r\n\r\n // 将字段缓存的值恢复到编辑之前的值\r\n var obj = {};\r\n obj[field] = params.oldValue;\r\n params.update(obj);\r\n });\r\n },\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n });\r\n\r\n // 更新缓存中的值\r\n var obj = {}; //变更的键值\r\n obj[field] = value;\r\n params.update(obj);\r\n\r\n // 执行 API 编辑事件\r\n layui.event.call(td[0], MOD_NAME, 'edit('+ filter +')', params);\r\n }).on('blur', '.'+ ELEM_EDIT, function(){ // 单元格编辑 - 恢复非编辑状态事件\r\n $(this).remove(); // 移除编辑状态\r\n });\r\n\r\n // 表格主体单元格触发编辑的事件\r\n that.layBody.on(options.editTrigger, 'td', function(e){\r\n renderGridEdit(this, e)\r\n }).on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 表格合计栏单元格 hover 显示展开图标\r\n that.layTotal.on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 显示单元格展开图标\r\n var ELEM_GRID = 'layui-table-grid';\r\n var ELEM_GRID_DOWN = 'layui-table-grid-down';\r\n var ELEM_GRID_PANEL = 'layui-table-grid-panel';\r\n var showGridExpandIcon = function(hide){\r\n var othis = $(this);\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n if(othis.parent().hasClass(ELEM_EXPAND)) return; // 是否已为展开状态\r\n\r\n if(hide){\r\n othis.find('.layui-table-grid-down').remove();\r\n } else if((\r\n elemCell.prop('scrollWidth') > elemCell.outerWidth() ||\r\n elemCell.find(\"br\").length > 0\r\n ) && !options.lineStyle){\r\n if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;\r\n othis.append('
                  ');\r\n }\r\n };\r\n // 展开单元格内容\r\n var gridExpand = function(e, expandedMode){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var key = td.data('key');\r\n var col = that.col(key);\r\n var index = td.parent().data('index');\r\n var elemCell = td.children(ELEM_CELL);\r\n var ELEM_CELL_C = 'layui-table-cell-c';\r\n var elemCellClose = $('');\r\n\r\n expandedMode = expandedMode || col.expandedMode || options.cellExpandedMode;\r\n\r\n // 展开风格\r\n if (expandedMode === 'tips') { // TIPS 展开风格\r\n that.tipsIndex = layer.tips([\r\n '
                  ',\r\n elemCell.html(),\r\n '
                  ',\r\n ''\r\n ].join(''), elemCell[0], {\r\n tips: [3, ''],\r\n time: -1,\r\n anim: -1,\r\n maxWidth: (device.ios || device.android) ? 300 : that.elem.width()/2,\r\n isOutAnim: false,\r\n skin: 'layui-table-tips',\r\n success: function(layero, index){\r\n layero.find('.layui-table-tips-c').on('click', function(){\r\n layer.close(index);\r\n });\r\n }\r\n });\r\n } else { // 多行展开风格\r\n // 恢复其他已经展开的单元格\r\n that.elem.find('.'+ ELEM_CELL_C).trigger('click');\r\n\r\n // 设置当前单元格展开宽度\r\n that.cssRules(key, function(item){\r\n var width = item.style.width;\r\n var expandedWidth = col.expandedWidth || options.cellExpandedWidth;\r\n\r\n // 展开后的宽度不能小于当前宽度\r\n if(expandedWidth < parseFloat(width)) expandedWidth = parseFloat(width);\r\n\r\n elemCellClose.data('cell-width', width);\r\n item.style.width = expandedWidth + 'px';\r\n\r\n setTimeout(function(){\r\n that.scrollPatch(); // 滚动条补丁\r\n });\r\n });\r\n\r\n // 设置当前单元格展开样式\r\n that.setRowActive(index, ELEM_EXPAND);\r\n\r\n // 插入关闭按钮\r\n if(!elemCell.next('.'+ ELEM_CELL_C)[0]){\r\n elemCell.after(elemCellClose);\r\n }\r\n\r\n // 关闭展开状态\r\n elemCellClose.on('click', function(){\r\n var $this = $(this);\r\n that.setRowActive(index, [ELEM_EXPAND, ELEM_HOVER].join(' '), true); // 移除单元格展开样式\r\n that.cssRules(key, function(item){\r\n item.style.width = $this.data('cell-width'); // 恢复单元格展开前的宽度\r\n setTimeout(function(){\r\n that.resize(); // 滚动条补丁\r\n });\r\n });\r\n $this.remove();\r\n });\r\n }\r\n\r\n othis.remove();\r\n layui.stope(e);\r\n };\r\n\r\n // 表格主体单元格展开事件\r\n that.layBody.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e);\r\n });\r\n // 表格合计栏单元格展开事件\r\n that.layTotal.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e, 'tips'); // 强制采用 tips 风格\r\n });\r\n\r\n // 行工具条操作事件\r\n var toolFn = function(type){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var index = othis.parents('tr').eq(0).data('index');\r\n // 标记当前活动行\r\n that.setRowActive(index);\r\n\r\n // 执行事件\r\n layui.event.call(\r\n this,\r\n MOD_NAME,\r\n (type || 'tool') + '('+ filter +')',\r\n commonMember.call(this, {\r\n event: othis.attr('lay-event'),\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n };\r\n\r\n // 行工具条单击事件\r\n that.layBody.on('click', '*[lay-event]', function(e){\r\n toolFn.call(this);\r\n layui.stope(e);\r\n }).on('dblclick', '*[lay-event]', function(e){ //行工具条双击事件\r\n toolFn.call(this, 'toolDouble');\r\n layui.stope(e);\r\n });\r\n\r\n // 同步滚动条\r\n that.layMain.on('scroll', function(){\r\n var othis = $(this);\r\n var scrollLeft = othis.scrollLeft();\r\n var scrollTop = othis.scrollTop();\r\n\r\n that.layHeader.scrollLeft(scrollLeft);\r\n that.layTotal.scrollLeft(scrollLeft);\r\n that.layFixed.find(ELEM_BODY).scrollTop(scrollTop);\r\n\r\n layer.close(that.tipsIndex);\r\n });\r\n\r\n // 固定列滚轮事件 - 临时兼容方案\r\n that.layFixed.find(ELEM_BODY).on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var scrollTop = that.layMain.scrollTop();\r\n var step = 30;\r\n\r\n e.preventDefault();\r\n that.layMain.scrollTop(scrollTop + (delta > 0 ? -step : step));\r\n });\r\n };\r\n\r\n // 全局事件\r\n (function(){\r\n // 自适应尺寸\r\n _WIN.on('resize', function(){\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n });\r\n\r\n // 全局点击\r\n _DOC.on('click', function(){\r\n _DOC.trigger('table.remove.tool.panel');\r\n });\r\n\r\n // 工具面板移除事件\r\n _DOC.on('table.remove.tool.panel', function(){\r\n $('.' + ELEM_TOOL_PANEL).remove();\r\n });\r\n })();\r\n\r\n // 初始化\r\n table.init = function(filter, settings){\r\n settings = settings || {};\r\n var that = this;\r\n var inst = null;\r\n var elemTable = typeof filter === 'object' ? filter : (\r\n typeof filter === 'string'\r\n ? $('table[lay-filter=\"'+ filter +'\"]')\r\n : $(ELEM + '[lay-data], '+ ELEM + '[lay-options]')\r\n );\r\n var errorTips = 'Table element property lay-data configuration item has a syntax error: ';\r\n\r\n //遍历数据表格\r\n elemTable.each(function(){\r\n var othis = $(this);\r\n var attrData = othis.attr('lay-data');\r\n var tableData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || othis.attr('lay-options'))\r\n });\r\n\r\n var options = $.extend({\r\n elem: this\r\n ,cols: []\r\n ,data: []\r\n ,skin: othis.attr('lay-skin') //风格\r\n ,size: othis.attr('lay-size') //尺寸\r\n ,even: typeof othis.attr('lay-even') === 'string' //偶数行背景\r\n }, table.config, settings, tableData);\r\n\r\n filter && othis.hide();\r\n\r\n //获取表头数据\r\n othis.find('thead>tr').each(function(i){\r\n options.cols[i] = [];\r\n $(this).children().each(function(ii){\r\n var th = $(this);\r\n var attrData = th.attr('lay-data');\r\n var itemData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || th.attr('lay-options'))\r\n });\r\n\r\n var row = $.extend({\r\n title: th.text()\r\n ,colspan: parseInt(th.attr('colspan')) || 1 //列单元格\r\n ,rowspan: parseInt(th.attr('rowspan')) || 1 //行单元格\r\n }, itemData);\r\n\r\n options.cols[i].push(row);\r\n });\r\n });\r\n\r\n //缓存静态表体数据\r\n var trElem = othis.find('tbody>tr');\r\n\r\n //执行渲染\r\n var tableIns = table.render(options);\r\n\r\n //获取表体数据\r\n if (trElem.length && !settings.data && !tableIns.config.url) {\r\n var tdIndex = 0;\r\n table.eachCols(tableIns.config.id, function (i3, item3) {\r\n trElem.each(function(i1){\r\n options.data[i1] = options.data[i1] || {};\r\n var tr = $(this);\r\n var field = item3.field;\r\n options.data[i1][field] = tr.children('td').eq(tdIndex).html();\r\n });\r\n tdIndex++;\r\n })\r\n\r\n tableIns.reloadData({\r\n data: options.data\r\n });\r\n }\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //记录所有实例\r\n thisTable.that = {}; //记录所有实例对象\r\n thisTable.config = {}; //记录所有实例配置项\r\n\r\n var eachChildCols = function (index, cols, i1, item2) {\r\n //如果是组合列,则捕获对应的子列\r\n if (item2.colGroup) {\r\n var childIndex = 0;\r\n index++;\r\n item2.CHILD_COLS = [];\r\n // 找到它的子列所在cols的下标\r\n var i2 = i1 + (parseInt(item2.rowspan) || 1);\r\n layui.each(cols[i2], function (i22, item22) {\r\n if (item22.parentKey) { // 如果字段信息中包含了parentKey和key信息\r\n if (item22.parentKey === item2.key) {\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n } else {\r\n // 没有key信息以colspan数量所谓判断标准\r\n //如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n childIndex = childIndex + (parseInt(item22.colspan > 1 ? item22.colspan : 1));\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n });\r\n }\r\n };\r\n\r\n // 遍历表头\r\n table.eachCols = function(id, callback, cols){\r\n var config = thisTable.config[id] || {};\r\n var arrs = [], index = 0;\r\n\r\n cols = $.extend(true, [], cols || config.cols);\r\n\r\n //重新整理表头结构\r\n layui.each(cols, function(i1, item1){\r\n if (i1) return true; // 只需遍历第一层\r\n layui.each(item1, function(i2, item2){\r\n eachChildCols(index, cols, i1, item2);\r\n if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中\r\n arrs.push(item2)\r\n });\r\n });\r\n\r\n //重新遍历列,如果有子列,则进入递归\r\n var eachArrs = function(obj){\r\n layui.each(obj || arrs, function(i, item){\r\n if(item.CHILD_COLS) return eachArrs(item.CHILD_COLS);\r\n typeof callback === 'function' && callback(i, item);\r\n });\r\n };\r\n\r\n eachArrs();\r\n };\r\n\r\n // 获取表格选中状态\r\n table.checkStatus = function(id){\r\n var nums = 0;\r\n var invalidNum = 0;\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n\r\n //计算全选个数\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array' || item[table.config.disabledName]){\r\n invalidNum++; // 无效数据,或已删除的\r\n return;\r\n }\r\n if(item[table.config.checkName]){\r\n nums++;\r\n if(!item[table.config.disabledName]){\r\n arr.push(table.clearCacheKey(item));\r\n }\r\n }\r\n });\r\n return {\r\n data: arr, // 选中的数据\r\n isAll: data.length ? (nums === (data.length - invalidNum)) : false // 是否全选\r\n };\r\n };\r\n\r\n // 设置行选中状态\r\n table.setRowChecked = function(id, opts){\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n that.setRowChecked(opts);\r\n };\r\n\r\n // 获取表格当前页的所有行数据\r\n table.getData = function(id){\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array'){\r\n return;\r\n }\r\n arr.push(table.clearCacheKey(item));\r\n });\r\n return arr;\r\n };\r\n\r\n // 重置表格尺寸结构\r\n table.resize = function(id){\r\n // 若指定表格唯一 id,则只执行该 id 对应的表格实例\r\n if(id){\r\n var config = getThisTableConfig(id); // 获取当前实例配置项\r\n if(!config) return;\r\n\r\n getThisTable(id).resize();\r\n\r\n } else { // 否则重置所有表格实例尺寸\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n }\r\n };\r\n\r\n // 表格导出\r\n table.exportFile = function(id, data, opts){\r\n data = data || table.clearCacheKey(table.cache[id]);\r\n opts = typeof opts === 'object' ? opts : function(){\r\n var obj = {};\r\n opts && (obj.type = opts);\r\n return obj;\r\n }();\r\n\r\n var type = opts.type || 'csv';\r\n var thatTable = thisTable.that[id];\r\n var config = thisTable.config[id] || {};\r\n var textType = ({\r\n csv: 'text/csv',\r\n xls: 'application/vnd.ms-excel'\r\n })[type];\r\n var alink = document.createElement(\"a\");\r\n\r\n if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');\r\n\r\n // 处理 treeTable 数据\r\n if (config.tree && config.tree.view) {\r\n try {\r\n data = $.extend(true, [], table.cache[id]);\r\n data = (function fn(data) {\r\n return data.reduce(function (acc, obj){\r\n var children = obj.children || [];\r\n delete obj.children;\r\n return acc.concat(obj, fn(children));\r\n }, []);\r\n })(Array.from(data));\r\n } catch (e) {}\r\n }\r\n\r\n alink.href = 'data:'+ textType +';charset=utf-8,\\ufeff'+ encodeURIComponent(function(){\r\n var dataTitle = [];\r\n var dataMain = [];\r\n var dataTotal = [];\r\n var fieldsIsHide = {};\r\n\r\n // 表头和表体\r\n layui.each(data, function(i1, item1){\r\n var vals = [];\r\n if(typeof id === 'object'){ // 若 id 参数直接为表头数据\r\n layui.each(id, function(i, item){\r\n i1 == 0 && dataTitle.push(item || '');\r\n });\r\n layui.each(layui.isArray(item1) ? $.extend([], item1) : table.clearCacheKey(item1), function(i2, item2){\r\n vals.push('\"'+ (item2 || '') +'\"');\r\n });\r\n } else {\r\n table.eachCols(id, function(i3, item3){\r\n if(item3.ignoreExport === false || item3.field && item3.type == 'normal'){\r\n // 不导出隐藏列,除非设置 ignoreExport 强制导出\r\n if (\r\n (item3.hide && item3.ignoreExport !== false) ||\r\n item3.ignoreExport === true // 忽略导出\r\n ) {\r\n if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列\r\n return;\r\n }\r\n\r\n var content = item1[item3.field];\r\n if(content === undefined || content === null) content = '';\r\n\r\n i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');\r\n\r\n // 解析内容\r\n content = parseTempData.call(thatTable, {\r\n item3: item3,\r\n content: content,\r\n tplData: item1,\r\n text: 'text',\r\n obj: {\r\n td: function(field){\r\n var td = thatTable.layBody.find('tr[data-index=\"'+ i1 +'\"]>td');\r\n return td.filter('[data-field=\"'+ field +'\"]');\r\n }\r\n }\r\n });\r\n\r\n // 异常处理\r\n content = content.replace(/\"/g, '\"\"'); // 避免内容存在「双引号」导致异常分隔\r\n // content += '\\t'; // 加「水平制表符」 避免内容被转换格式\r\n content = '\"'+ content +'\"'; // 避免内容存在「逗号」导致异常分隔\r\n\r\n // 插入内容\r\n vals.push(content);\r\n }else if(item3.field && item3.type !== 'normal'){\r\n // https://gitee.com/layui/layui/issues/I8PHCR\r\n if(i1 == 0) fieldsIsHide[item3.field] = true;\r\n }\r\n });\r\n }\r\n dataMain.push(vals.join(','));\r\n });\r\n\r\n // 表合计\r\n thatTable && layui.each(thatTable.dataTotal, function(i, o){\r\n fieldsIsHide[o.field] || dataTotal.push('\"' + (o.total || '') + '\"');\r\n });\r\n\r\n return dataTitle.join(',') + '\\r\\n' + dataMain.join('\\r\\n') + '\\r\\n' + dataTotal.join(',');\r\n }());\r\n\r\n alink.download = (opts.title || config.title || 'table_'+ (config.index || '')) + '.' + type;\r\n document.body.appendChild(alink);\r\n alink.click();\r\n document.body.removeChild(alink);\r\n };\r\n\r\n // 获取表格配置信息\r\n table.getOptions = function (id) {\r\n return getThisTableConfig(id);\r\n }\r\n\r\n // 显示或隐藏列\r\n table.hideCol = function (id, cols) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (layui.type(cols) === 'boolean') {\r\n // 显示全部或者隐藏全部\r\n that.eachCols(function (i2, item2) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if (col.hide != cols) {\r\n var hide = col.hide = cols;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n })\r\n } else {\r\n cols = layui.isArray(cols) ? cols : [cols];\r\n layui.each(cols, function (i1, item1) {\r\n that.eachCols(function (i2, item2) {\r\n if (item1.field === item2.field) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if ('hide' in item1 && col.hide != item1.hide) {\r\n var hide = col.hide = !!item1.hide;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n }\r\n })\r\n });\r\n }\r\n $('.' + ELEM_TOOL_PANEL).remove(); // 关闭字段筛选面板如果打开的话\r\n // 重新适配尺寸\r\n that.resize();\r\n }\r\n\r\n // 重载\r\n table.reload = function(id, options, deep, type){\r\n var config = getThisTableConfig(id); //获取当前实例配置项\r\n if(!config) return;\r\n\r\n var that = getThisTable(id);\r\n that.reload(options, deep, type);\r\n\r\n return thisTable.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n table.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[3] = 'reloadData';\r\n\r\n // 重载时,影响整个结构的参数,不适合更新的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'elem', 'id', 'cols', 'width', 'height', 'maxHeight',\r\n 'toolbar', 'defaultToolbar',\r\n 'className', 'css', 'pagebar'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return table.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n table.render = function(options){\r\n var inst = new Class(options);\r\n return thisTable.call(inst);\r\n };\r\n\r\n // 清除临时 Key\r\n table.clearCacheKey = function(data){\r\n data = $.extend({}, data);\r\n delete data[table.config.checkName];\r\n delete data[table.config.indexName];\r\n delete data[table.config.numbersName];\r\n delete data[table.config.disabledName];\r\n return data;\r\n };\r\n\r\n // 自动完成渲染\r\n $(function(){\r\n table.init();\r\n });\r\n\r\n exports(MOD_NAME, table);\r\n});\r\n","/**\r\n * layui.treeTable\r\n * 树表组件\r\n */\r\n\r\nlayui.define(['table'], function (exports) {\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var form = layui.form;\r\n var table = layui.table;\r\n var hint = layui.hint();\r\n\r\n // api\r\n var treeTable = {\r\n config: {},\r\n // 事件\r\n on: table.on,\r\n // 遍历字段\r\n eachCols: table.eachCols,\r\n index: table.index,\r\n set: function (options) {\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n resize: table.resize,\r\n getOptions: table.getOptions,\r\n hideCol: table.hideCol,\r\n renderData: table.renderData\r\n };\r\n\r\n // 操作当前实例\r\n var thisTreeTable = function () {\r\n var that = this;\r\n var options = that.config\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function (options, deep) {\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function (options, deep) {\r\n treeTable.reloadData(id, options, deep);\r\n }\r\n }\r\n }\r\n\r\n // 获取当前实例\r\n var getThisTable = function (id) {\r\n var that = thisTreeTable.that[id];\r\n if (!that) hint.error(id ? ('The treeTable instance with ID \\'' + id + '\\' not found') : 'ID argument required');\r\n return that || null;\r\n }\r\n\r\n // 字符\r\n var MOD_NAME = 'treeTable';\r\n var HIDE = 'layui-hide';\r\n\r\n var ELEM_VIEW = '.layui-table-view';\r\n var ELEM_TREE = '.layui-table-tree';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n\r\n var TABLE_TREE = 'layui-table-tree';\r\n var LAY_DATA_INDEX = 'LAY_DATA_INDEX';\r\n var LAY_DATA_INDEX_HISTORY = 'LAY_DATA_INDEX_HISTORY';\r\n var LAY_PARENT_INDEX = 'LAY_PARENT_INDEX';\r\n var LAY_CHECKBOX_HALF = 'LAY_CHECKBOX_HALF';\r\n var LAY_EXPAND = 'LAY_EXPAND';\r\n var LAY_HAS_EXPANDED = 'LAY_HAS_EXPANDED';\r\n var LAY_ASYNC_STATUS = 'LAY_ASYNC_STATUS';\r\n var LAY_CASCADE = ['all', 'parent', 'children', 'none'];\r\n\r\n // 构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++treeTable.index;\r\n that.config = $.extend(true, {}, that.config, treeTable.config, options);\r\n // 处理一些属性\r\n that.init();\r\n that.render();\r\n };\r\n\r\n var updateCache = function (id, childrenKey, data) {\r\n var tableCache = table.cache[id];\r\n layui.each(data || tableCache, function (index, item) {\r\n var itemDataIndex = item[LAY_DATA_INDEX] || '';\r\n if (itemDataIndex.indexOf('-') !== -1) {\r\n tableCache[itemDataIndex] = item\r\n }\r\n item[childrenKey] && updateCache(id, childrenKey, item[childrenKey]);\r\n })\r\n }\r\n\r\n var updateOptions = function (id, options, reload) {\r\n var that = getThisTable(id);\r\n reload === 'reloadData' || (that.status = { // 用于记录一些状态信息\r\n expand: {} // 折叠状态\r\n });\r\n var thatOptionsTemp = $.extend(true, {}, that.getOptions(), options);\r\n var treeOptions = thatOptionsTemp.tree;\r\n var childrenKey = treeOptions.customName.children;\r\n var idKey = treeOptions.customName.id;\r\n // 处理属性\r\n delete options.hasNumberCol;\r\n delete options.hasChecboxCol;\r\n delete options.hasRadioCol;\r\n table.eachCols(null, function (i1, item1) {\r\n if (item1.type === 'numbers') {\r\n options.hasNumberCol = true;\r\n } else if (item1.type === 'checkbox') {\r\n options.hasChecboxCol = true;\r\n } else if (item1.type === 'radio') {\r\n options.hasRadioCol = true;\r\n }\r\n }, thatOptionsTemp.cols)\r\n\r\n var parseData = options.parseData;\r\n var done = options.done;\r\n\r\n if (thatOptionsTemp.url) {\r\n // 异步加载的时候需要处理parseData进行转换\r\n if (!reload || (reload && parseData && !parseData.mod)) {\r\n options.parseData = function () {\r\n var parseDataThat = this;\r\n var args = arguments;\r\n var retData = args[0];\r\n if (layui.type(parseData) === 'function') {\r\n retData = parseData.apply(parseDataThat, args) || args[0];\r\n }\r\n var dataName = parseDataThat.response.dataName;\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用\r\n retData[dataName] = that.flatToTree(retData[dataName]);\r\n }\r\n // 处理节点状态\r\n updateStatus(retData[dataName], function (item) {\r\n item[LAY_EXPAND] = LAY_EXPAND in item ? item[LAY_EXPAND] : (item[idKey] !== undefined && that.status.expand[item[idKey]])\r\n }, childrenKey);\r\n\r\n if (parseDataThat.autoSort && parseDataThat.initSort && parseDataThat.initSort.type) {\r\n layui.sort(retData[dataName], parseDataThat.initSort.field, parseDataThat.initSort.type === 'desc', true)\r\n }\r\n\r\n that.initData(retData[dataName]);\r\n\r\n return retData;\r\n }\r\n options.parseData.mod = true\r\n }\r\n } else {\r\n options.data = options.data || [];\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData) {\r\n options.data = that.flatToTree(options.data);\r\n }\r\n that.initData(options.data);\r\n }\r\n\r\n if (!reload || (reload && done && !done.mod)) {\r\n options.done = function () {\r\n var args = arguments;\r\n var doneThat = this;\r\n var isRenderData = args[3]; // 是否是 renderData\r\n if (!isRenderData) {\r\n delete that.isExpandAll;\r\n }\r\n\r\n var tableView = this.elem.next();\r\n that.updateStatus(null, {\r\n LAY_HAS_EXPANDED: false // 去除已经打开过的状态\r\n });\r\n // 更新cache中的内容 将子节点也存到cache中\r\n updateCache(id, childrenKey);\r\n // 更新全选框的状态\r\n var layTableAllChooseElem = tableView.find('[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]');\r\n if (layTableAllChooseElem.length) {\r\n var checkStatus = treeTable.checkStatus(id);\r\n layTableAllChooseElem.prop({\r\n checked: checkStatus.isAll && checkStatus.data.length,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length\r\n })\r\n }\r\n if (!isRenderData && thatOptionsTemp.autoSort && thatOptionsTemp.initSort && thatOptionsTemp.initSort.type) {\r\n treeTable.sort(id);\r\n }\r\n\r\n that.renderTreeTable(tableView);\r\n\r\n if (layui.type(done) === 'function') {\r\n return done.apply(doneThat, args);\r\n }\r\n }\r\n options.done.mod = true;\r\n }\r\n }\r\n\r\n Class.prototype.init = function () {\r\n var that = this;\r\n var options = that.config;\r\n var cascade = options.tree.data.cascade;\r\n if (LAY_CASCADE.indexOf(cascade) === -1) {\r\n options.tree.data.cascade = 'all'; // 超出范围的都重置为全联动\r\n }\r\n\r\n // 先初始一个空的表格以便拿到对应的表格实例信息\r\n var tableIns = table.render($.extend({}, options, {\r\n data: [],\r\n url: '',\r\n done: null\r\n }))\r\n var id = tableIns.config.id;\r\n thisTreeTable.that[id] = that; // 记录当前实例对象\r\n that.tableIns = tableIns;\r\n\r\n updateOptions(id, options);\r\n }\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n tree: {\r\n customName: {\r\n children: \"children\", // 节点数据中保存子节点数据的属性名称\r\n isParent: \"isParent\", // 节点数据保存节点是否为父节点的属性名称\r\n name: \"name\", // 节点数据保存节点名称的属性名称\r\n id: \"id\", // 唯一标识的属性名称\r\n pid: \"parentId\", // 父节点唯一标识的属性名称\r\n icon: \"icon\" // 图标的属性名称\r\n },\r\n view: {\r\n indent: 14, // 层级缩进量\r\n flexIconClose: '', // 关闭时候的折叠图标\r\n flexIconOpen: '', // 打开时候的折叠图标\r\n showIcon: true, // 是否显示图标(节点类型图标)\r\n icon: '', // 节点图标,如果设置了这个属性或者数据中有这个字段信息,不管打开还是关闭都以这个图标的值为准\r\n iconClose: '', // 关闭时候的图标\r\n iconOpen: '', // 打开时候的图标\r\n iconLeaf: '', // 叶子节点的图标\r\n showFlexIconIfNotParent: false, // 当节点不是父节点的时候是否显示折叠图标\r\n dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识\r\n expandAllDefault: false // 默认展开所有节点\r\n },\r\n data: {\r\n isSimpleData: false, // 是否简单数据模式\r\n rootPid: null, // 根节点的父 ID 值\r\n cascade: 'all' // 级联方式 默认全部级联:all 可选 级联父 parent 级联子 children\r\n },\r\n async: {\r\n enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用\r\n url: '', // 异步加载的接口,可以根据需要设置与顶层接口不同的接口,如果相同可以不设置该参数\r\n type: null, // 请求的接口类型,设置可缺省同上\r\n contentType: null, // 提交参数的数据类型,设置可缺省同上\r\n headers: null, // 设置可缺省同上\r\n where: null, // 设置可缺省同上\r\n autoParam: [] // 自动参数\r\n },\r\n callback: {\r\n beforeExpand: null, // 展开前的回调 return false 可以阻止展开的动作\r\n onExpand: null // 展开之后的回调\r\n }\r\n },\r\n };\r\n\r\n Class.prototype.getOptions = function () {\r\n var that = this;\r\n if (that.tableIns) {\r\n return table.getOptions(that.tableIns.config.id); // 获取表格的实时配置信息\r\n } else {\r\n return that.config;\r\n }\r\n };\r\n\r\n function flatToTree(flatArr, idKey, pIdKey, childrenKey, rootPid) {\r\n idKey = idKey || 'id';\r\n pIdKey = pIdKey || 'parentId';\r\n childrenKey = childrenKey || 'children';\r\n // 创建一个空的 nodes 对象,用于保存所有的节点\r\n var nodes = {};\r\n // 遍历所有节点,将其加入 nodes 对象中\r\n var idTemp = '';\r\n layui.each(flatArr, function (index, item) {\r\n idTemp = idKey + item[idKey];\r\n nodes[idTemp] = $.extend({}, item);\r\n nodes[idTemp][childrenKey] = [];\r\n })\r\n // 遍历所有节点,将其父子关系加入 nodes 对象\r\n var pidTemp = '';\r\n layui.each(nodes, function (index, item) {\r\n pidTemp = idKey + item[pIdKey];\r\n if (pidTemp && nodes[pidTemp]) {\r\n nodes[pidTemp][childrenKey].push(item);\r\n }\r\n })\r\n // 返回顶层节点\r\n return Object.keys(nodes)\r\n .map(function(k) {\r\n return nodes[k];\r\n })\r\n .filter(function (item) {\r\n return rootPid ? item[pIdKey] === rootPid : !item[pIdKey];\r\n })\r\n }\r\n\r\n Class.prototype.flatToTree = function (tableData) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var tableId = options.id;\r\n\r\n tableData = tableData || table.cache[tableId];\r\n\r\n return flatToTree(tableData, customName.id, customName.pid, customName.children, treeOptions.data.rootPid)\r\n }\r\n\r\n Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n var pIdKey = customName.pid;\r\n\r\n var flat = [];\r\n layui.each(tableData, function (i1, item1) {\r\n var dataIndex = (parentIndex ? parentIndex + '-' : '') + i1;\r\n var dataNew = $.extend({}, item1);\r\n dataNew[pIdKey] = item1[pIdKey] || parentId;\r\n flat.push(dataNew);\r\n flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex));\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n // 通过当前行数据返回 treeNode 信息\r\n Class.prototype.getTreeNode = function (data) {\r\n var that = this;\r\n if (!data) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var customName = treeOptions.customName;\r\n\r\n // 带上一些常用的方法\r\n return {\r\n data: data,\r\n dataIndex: data[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(data[LAY_PARENT_INDEX])\r\n },\r\n };\r\n }\r\n\r\n // 通过 index 返回节点信息\r\n Class.prototype.getNodeByIndex = function (index) {\r\n var that = this;\r\n var treeNodeData = that.getNodeDataByIndex(index);\r\n if (!treeNodeData) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var parentKey = customName.parent;\r\n var tableId = options.id;\r\n\r\n var treeNode = {\r\n data: treeNodeData,\r\n dataIndex: treeNodeData[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(treeNodeData[LAY_PARENT_INDEX])\r\n },\r\n update: function (data) {\r\n return treeTable.updateNode(tableId, index, data)\r\n },\r\n remove: function () {\r\n return treeTable.removeNode(tableId, index)\r\n },\r\n expand: function (opts) {\r\n return treeTable.expandNode(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n },\r\n setChecked: function (opts) {\r\n return treeTable.setRowChecked(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n }\r\n };\r\n\r\n treeNode.dataIndex = index;\r\n return treeNode;\r\n }\r\n\r\n // 通过 id 获取节点信息\r\n Class.prototype.getNodeById = function (id) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var idKey = customName.id;\r\n\r\n // 通过 id 拿到数据的 dataIndex\r\n var dataIndex = '';\r\n var tableDataFlat = treeTable.getData(options.id, true);\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[idKey] === id) {\r\n dataIndex = item1[LAY_DATA_INDEX];\r\n return true;\r\n }\r\n })\r\n if (!dataIndex) {\r\n return;\r\n }\r\n\r\n // 用 index\r\n return that.getNodeByIndex(dataIndex);\r\n }\r\n\r\n // 通过 index 获取节点数据\r\n Class.prototype.getNodeDataByIndex = function (index, clone, newValue) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableCache = table.cache[tableId];\r\n\r\n // 获取当前行中的数据\r\n var dataCache = tableCache[index];\r\n\r\n // 若非删除操作,则返回合并后的数据\r\n if (newValue !== 'delete' && dataCache) {\r\n $.extend(dataCache, newValue);\r\n return clone ? $.extend({}, dataCache) : dataCache;\r\n }\r\n\r\n // 删除操作\r\n var dataRet = tableCache;\r\n var indexArr = String(index).split('-');\r\n\r\n // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理\r\n\r\n // 根据 index 进行数据处理\r\n for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) {\r\n if (newValue && i === indexArr.length - 1) {\r\n if (newValue === 'delete') { // 删除并返回当前数据\r\n // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S)\r\n /*if (tableCache) {\r\n layui.each(tableCache, function (i1, item1) {\r\n if (item1[LAY_DATA_INDEX] === index) {\r\n tableCache.splice(i1, 1);\r\n return true;\r\n }\r\n })\r\n }*/\r\n return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0];\r\n } else { // 更新值\r\n $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue);\r\n }\r\n }\r\n dataRet = i ? dataRet[childrenKey][indexArr[i]] : dataRet[indexArr[i]];\r\n }\r\n return clone ? $.extend({}, dataRet) : dataRet;\r\n }\r\n\r\n treeTable.getNodeDataByIndex = function (id, index) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n return that.getNodeDataByIndex(index, true);\r\n }\r\n\r\n // 判断是否是父节点\r\n var checkIsParent = function (data, isParentKey, childrenKey) {\r\n isParentKey = isParentKey || 'isParent';\r\n childrenKey = childrenKey || 'children';\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n checkIsParent(item1[childrenKey]);\r\n }\r\n })\r\n }\r\n\r\n Class.prototype.initData = function (data, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n\r\n data = data || that.getTableData();\r\n\r\n var customName = treeOptions.customName;\r\n var isParentKey = customName.isParent;\r\n var childrenKey = customName.children;\r\n\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n }\r\n item1[LAY_DATA_INDEX_HISTORY] = item1[LAY_DATA_INDEX];\r\n item1[LAY_PARENT_INDEX] = parentIndex = parentIndex || '';\r\n var dataIndex = item1[LAY_DATA_INDEX] = (parentIndex ? parentIndex + '-' : '') + i1;\r\n that.initData(item1[childrenKey] || [], dataIndex);\r\n });\r\n\r\n updateCache(tableId, childrenKey, data);\r\n\r\n return data;\r\n }\r\n\r\n // 与 tableId 有关带防抖的方法\r\n var debounceFn = (function () {\r\n var fn = {};\r\n return function (tableId, func, wait) {\r\n if (!fn[tableId]) {\r\n fn[tableId] = layui.debounce(func, wait);\r\n }\r\n return fn[tableId];\r\n }\r\n })()\r\n\r\n // 优化参数,添加一个 getNodeByIndex 方法 只传 表格id 和行 dataIndex 分几步优化 todo\r\n var expandNode = function (treeNode, expandFlag, sonSign, focus, callbackFlag) {\r\n // treeNode // 需要展开的节点\r\n var trElem = treeNode.trElem;\r\n var tableViewElem = treeNode.tableViewElem || trElem.closest(ELEM_VIEW);\r\n var tableId = treeNode.tableId || tableViewElem.attr('lay-id');\r\n var options = treeNode.options || table.getOptions(tableId);\r\n var dataIndex = treeNode.dataIndex || trElem.attr('lay-data-index'); // 可能出现多层\r\n var treeTableThat = getThisTable(tableId);\r\n\r\n var treeOptions = options.tree || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n\r\n var trData = treeTableThat.getNodeDataByIndex(dataIndex);\r\n\r\n // 后续调优:对已经展开的节点进行展开和已经关闭的节点进行关闭应该做优化减少不必要的代码执行 todo\r\n var isToggle = layui.type(expandFlag) !== 'boolean';\r\n var trExpand = isToggle ? !trData[LAY_EXPAND] : expandFlag;\r\n var retValue = trData[isParentKey] ? trExpand : null;\r\n\r\n if (callbackFlag && trExpand != trData[LAY_EXPAND] && (!trData[LAY_ASYNC_STATUS] || trData[LAY_ASYNC_STATUS] === 'local')) {\r\n var beforeExpand = treeOptions.callback.beforeExpand;\r\n if (layui.type(beforeExpand) === 'function') {\r\n if (beforeExpand(tableId, trData, expandFlag) === false) {\r\n return retValue;\r\n }\r\n }\r\n }\r\n\r\n var trExpanded = trData[LAY_HAS_EXPANDED]; // 展开过,包括异步加载\r\n\r\n // 找到表格中的同类节点(需要找到lay-data-index一致的所有行)\r\n var trsElem = tableViewElem.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n // 处理折叠按钮图标\r\n var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n flexIconElem.html(trExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose)\r\n trData[isParentKey] && flexIconElem.css('visibility', 'visible');\r\n // 处理节点图标\r\n treeOptions.view.showIcon && trsElem\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(trExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose);\r\n trData[LAY_EXPAND] = trExpand;\r\n var trDataId = trData[customName.id];\r\n trDataId !== undefined && (treeTableThat.status.expand[trDataId] = trExpand);\r\n if (retValue === null) {\r\n return retValue;\r\n }\r\n\r\n var childNodes = trData[customName.children] || [];\r\n // 处理子节点展示与否\r\n if (trExpand) {\r\n // 展开\r\n if (trExpanded) { // 已经展开过\r\n if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决\r\n trsElem.nextAll(childNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).removeClass(HIDE);\r\n layui.each(childNodes, function (i1, item1) {\r\n if (!item1[isParentKey]) {\r\n return;\r\n }\r\n\r\n if (sonSign && !isToggle && !item1[LAY_EXPAND]) { // 非状态切换的情况下\r\n // 级联展开子节点\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n } else if (item1[LAY_EXPAND]) { // 初始化级联展开\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, true);\r\n }\r\n });\r\n } else {\r\n var asyncSetting = treeOptions.async || {};\r\n var asyncUrl = asyncSetting.url || options.url;\r\n if (asyncSetting.enable && trData[isParentKey] && !trData[LAY_ASYNC_STATUS]) {\r\n trData[LAY_ASYNC_STATUS] = 'loading';\r\n flexIconElem.html('');\r\n\r\n // 异步获取子节点数据成功之后处理方法\r\n var asyncSuccessFn = function (data) {\r\n trData[LAY_ASYNC_STATUS] = 'success';\r\n trData[customName.children] = data;\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX])\r\n expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag);\r\n }\r\n\r\n var format = asyncSetting.format; // 自定义数据返回方法\r\n if (layui.type(format) === 'function') {\r\n format(trData, options, asyncSuccessFn);\r\n return retValue;\r\n }\r\n\r\n var params = {};\r\n // 参数\r\n var data = $.extend(params, asyncSetting.where || options.where);\r\n var asyncAutoParam = asyncSetting.autoParam;\r\n layui.each(asyncAutoParam, function (index, item) {\r\n var itemStr = item;\r\n var itemArr = item.split('=');\r\n data[itemArr[0].trim()] = trData[(itemArr[1] || itemArr[0]).trim()]\r\n })\r\n\r\n var asyncContentType = asyncSetting.contentType || options.contentType;\r\n if (asyncContentType && asyncContentType.indexOf(\"application/json\") == 0) { // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n var asyncType = asyncSetting.method || options.method;\r\n var asyncDataType = asyncSetting.dataType || options.dataType;\r\n var asyncJsonpCallback = asyncSetting.jsonpCallback || options.jsonpCallback;\r\n var asyncHeaders = asyncSetting.headers || options.headers;\r\n var asyncParseData = asyncSetting.parseData || options.parseData;\r\n var asyncResponse = asyncSetting.response || options.response;\r\n\r\n $.ajax({\r\n type: asyncType || 'get',\r\n url: asyncUrl,\r\n contentType: asyncContentType,\r\n data: data,\r\n dataType: asyncDataType || 'json',\r\n jsonpCallback: asyncJsonpCallback,\r\n headers: asyncHeaders || {},\r\n success: function (res) {\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if (typeof asyncParseData === 'function') {\r\n res = asyncParseData.call(options, res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if (res[asyncResponse.statusName] != asyncResponse.statusCode) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n flexIconElem.html('');\r\n // 事件\r\n } else {\r\n // 正常返回\r\n asyncSuccessFn(res[asyncResponse.dataName]);\r\n }\r\n },\r\n error: function (e, msg) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n return retValue;\r\n }\r\n trExpanded = trData[LAY_HAS_EXPANDED] = true;\r\n if (childNodes.length) {\r\n // 判断是否需要排序\r\n if (options.initSort && (!options.url || options.autoSort)) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n layui.sort(childNodes, initSort.field, initSort.type === 'desc', true);\r\n } else {\r\n // 恢复默认\r\n layui.sort(childNodes, table.config.indexName, null, true);\r\n }\r\n }\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]);\r\n // 将数据通过模板得出节点的html代码\r\n var str2 = table.getTrHtml(tableId, childNodes, null, null, dataIndex);\r\n\r\n var str2Obj = {\r\n trs: $(str2.trs.join('')),\r\n trs_fixed: $(str2.trs_fixed.join('')),\r\n trs_fixed_r: $(str2.trs_fixed_r.join(''))\r\n }\r\n var dataLevel = dataIndex.split('-').length - 1;\r\n var dataLevelNew = (dataLevel || 0) + 1;\r\n layui.each(childNodes, function (childIndex, childItem) {\r\n str2Obj.trs.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed_r.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n })\r\n\r\n tableViewElem.find(ELEM_MAIN).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs);\r\n tableViewElem.find(ELEM_FIXL).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed);\r\n tableViewElem.find(ELEM_FIXR).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed_r);\r\n\r\n // 初始化新增的节点中的内容\r\n treeTableThat.renderTreeTable(str2Obj.trs, dataLevelNew);\r\n\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n // 级联展开/关闭子节点\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n })\r\n }\r\n }\r\n }\r\n } else {\r\n treeTableThat.isExpandAll = false;\r\n // 关闭\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n });\r\n tableViewElem.find(childNodes.map(function (value, index, array) { // 只隐藏直接子节点,其他由递归的处理\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n } else {\r\n var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], dataIndex);\r\n tableViewElem.find(childNodesFlat.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n }\r\n }\r\n\r\n\r\n debounceFn('resize-' + tableId, function () {\r\n treeTable.resize(tableId);\r\n }, 0)();\r\n\r\n if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {\r\n var onExpand = treeOptions.callback.onExpand;\r\n layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);\r\n }\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * 展开或关闭一个节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Number|String} opts.index 展开行的数据下标\r\n * @param {Boolean} [opts.expandFlag] 展开、关闭、切换\r\n * @param {Boolean} [opts.inherit] 是否级联子节点\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件\r\n * @return [{Boolean}] 状态结果\r\n * */\r\n treeTable.expandNode = function (id, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n opts = opts || {};\r\n\r\n var index = opts.index;\r\n var expandFlag = opts.expandFlag;\r\n var sonSign = opts.inherit;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n return expandNode({\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + index + '\"]').first()\r\n }, expandFlag, sonSign, null, callbackFlag)\r\n };\r\n\r\n /**\r\n * 展开或关闭全部节点\r\n * @param {String} id 树表id\r\n * @param {Boolean} expandFlag 展开或关闭\r\n * */\r\n treeTable.expandAll = function (id, expandFlag) {\r\n if (layui.type(expandFlag) !== 'boolean') {\r\n return hint.error('expandAll 的展开状态参数只接收true/false')\r\n }\r\n\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n that.isExpandAll = expandFlag;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var isParentKey = treeOptions.customName.isParent;\r\n var idKey = treeOptions.customName.id;\r\n var showFlexIconIfNotParent = treeOptions.view.showFlexIconIfNotParent;\r\n\r\n if (!expandFlag) {\r\n // 关闭所有\r\n // 将所有已经打开的节点的状态设置为关闭,\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = false;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = false);\r\n }\r\n }) // 只处理当前页,如果需要处理全部表格,需要用treeTable.updateStatus\r\n // 隐藏所有非顶层的节点\r\n tableView.find('.layui-table-box tbody tr[data-level!=\"0\"]').addClass(HIDE);\r\n\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconClose);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconClose);\r\n } else {\r\n var tableDataFlat = treeTable.getData(id, true);\r\n // 展开所有\r\n // 存在异步加载\r\n if (treeOptions.async.enable) {\r\n // 判断是否有未加载过的节点\r\n var isAllAsyncDone = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_ASYNC_STATUS]) {\r\n isAllAsyncDone = false;\r\n return true;\r\n }\r\n })\r\n // 有未加载过的节点\r\n if (!isAllAsyncDone) {\r\n // 逐个展开\r\n layui.each(treeTable.getData(id), function (i1, item1) {\r\n treeTable.expandNode(id, {\r\n index: item1[LAY_DATA_INDEX],\r\n expandFlag: true,\r\n inherit: true\r\n })\r\n })\r\n return;\r\n }\r\n }\r\n\r\n // 先判断是否全部打开过了\r\n var isAllExpanded = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_HAS_EXPANDED]) {\r\n isAllExpanded = false;\r\n return true;\r\n }\r\n })\r\n // 如果全部节点已经都打开过,就可以简单处理跟隐藏所有节点反操作\r\n if (isAllExpanded) {\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n // 显示所有子节点\r\n tableView.find('tbody tr[data-level!=\"0\"]').removeClass(HIDE);\r\n // 处理节点的图标\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconOpen);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconOpen);\r\n } else {\r\n // 如果有未打开过的父节点,将 tr 内容全部重新生成\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[LAY_HAS_EXPANDED] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n if (options.initSort && options.initSort.type && options.autoSort) {\r\n return treeTable.sort(id);\r\n }\r\n var trAll = table.getTrHtml(id, tableDataFlat);\r\n\r\n var trAllObj = {\r\n trs: $(trAll.trs.join('')),\r\n trs_fixed: $(trAll.trs_fixed.join('')),\r\n trs_fixed_r: $(trAll.trs_fixed_r.join(''))\r\n }\r\n var props;\r\n layui.each(tableDataFlat, function (dataIndex, dataItem) {\r\n var dataLevel = dataItem[LAY_DATA_INDEX].split('-').length - 1;\r\n props = {\r\n 'data-index': dataItem[LAY_DATA_INDEX],\r\n 'lay-data-index': dataItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevel\r\n };\r\n trAllObj.trs.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props)\r\n })\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody').html(trAllObj[['trs', 'trs_fixed', 'trs_fixed_r'][i]]);\r\n });\r\n that.renderTreeTable(tableView, 0, false);\r\n }\r\n }\r\n treeTable.resize(id);\r\n }\r\n\r\n Class.prototype.renderTreeTable = function (tableView, level, sonSign) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n !tableViewElem.hasClass(TABLE_TREE) && tableViewElem.addClass(TABLE_TREE);\r\n var tableId = options.id;\r\n var treeOptions = options.tree || {};\r\n var treeOptionsData = treeOptions.data || {};\r\n var treeOptionsView = treeOptions.view || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n var tableFilterId = tableViewElem.attr('lay-filter');\r\n var treeTableThat = that;\r\n // var tableData = treeTableThat.getTableData();\r\n\r\n level = level || 0;\r\n\r\n if (!level) {\r\n // 初始化的表格里面没有level信息,可以作为顶层节点的判断\r\n tableViewElem.find('.layui-table-body tr:not([data-level])').attr('data-level', level);\r\n layui.each(table.cache[tableId], function (dataIndex, dataItem) {\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n }\r\n\r\n var dataExpand = null; // 记录需要展开的数据\r\n var nameKey = customName.name;\r\n var indent = treeOptionsView.indent || 14;\r\n layui.each(tableView.find('td[data-field=\"' + nameKey + '\"]'), function (index, item) {\r\n item = $(item);\r\n var trElem = item.closest('tr');\r\n var itemCell = item.children('.layui-table-cell');\r\n if (itemCell.hasClass('layui-table-tree-item')) {\r\n return;\r\n }\r\n var trIndex = trElem.attr('lay-data-index');\r\n if (!trIndex) { // 排除在统计行中的节点\r\n return;\r\n }\r\n trElem = tableViewElem.find('tr[lay-data-index=\"' + trIndex + '\"]');\r\n var trData = treeTableThat.getNodeDataByIndex(trIndex);\r\n\r\n if (trData[LAY_EXPAND] && trData[isParentKey]) {\r\n // 需要展开\r\n dataExpand = dataExpand || {};\r\n dataExpand[trIndex] = true;\r\n }\r\n if (trData[LAY_CHECKBOX_HALF]) {\r\n trElem.find('input[type=\"checkbox\"][name=\"layTableCheckbox\"]').prop('indeterminate', true);\r\n }\r\n\r\n var htmlTemp = itemCell.html();\r\n itemCell = trElem.find('td[data-field=\"' + nameKey + '\"]>div.layui-table-cell');\r\n itemCell.addClass('layui-table-tree-item');\r\n var flexIconElem = itemCell\r\n .html(['
                  ',\r\n trData[LAY_EXPAND] ? treeOptionsView.flexIconOpen : treeOptionsView.flexIconClose, // 折叠图标\r\n '
                  ',\r\n treeOptionsView.showIcon ? '
                  ' +\r\n (trData[customName.icon] || treeOptionsView.icon ||\r\n (trData[isParentKey] ?\r\n (trData[LAY_EXPAND] ? treeOptionsView.iconOpen : treeOptionsView.iconClose) :\r\n treeOptionsView.iconLeaf) ||\r\n '') + '
                  ' : '', // 区分父子节点\r\n htmlTemp].join('')) // 图标要可定制\r\n .find('.layui-table-tree-flexIcon');\r\n\r\n // 添加展开按钮的事件\r\n flexIconElem.on('click', function (event) {\r\n layui.stope(event);\r\n // 处理数据\r\n // var trElem = item.closest('tr');\r\n expandNode({trElem: trElem}, null, null, null, true);\r\n });\r\n });\r\n\r\n if (!level && treeOptions.view.expandAllDefault && that.isExpandAll === undefined) {\r\n return treeTable.expandAll(tableId, true); // 默认展开全部\r\n }\r\n\r\n // 当前层的数据看看是否需要展开\r\n if (sonSign !== false && dataExpand) {\r\n layui.each(dataExpand, function (index, item) {\r\n var trDefaultExpand = tableViewElem.find('tr[lay-data-index=\"' + index + '\"]');\r\n trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);\r\n expandNode({trElem: trDefaultExpand.first()}, true);\r\n });\r\n // #1463 expandNode 中已经展开过的节点不会重新渲染\r\n debounceFn('renderTreeTable2-' + tableId, function () {\r\n form.render($('.layui-table-tree[lay-id=\"' + tableId + '\"]'));\r\n }, 0)();\r\n } else {\r\n debounceFn('renderTreeTable-' + tableId, function () {\r\n options.hasNumberCol && formatNumber(that);\r\n form.render($('.layui-table-tree[lay-id=\"' + tableId + '\"]'));\r\n }, 0)();\r\n }\r\n }\r\n\r\n var formatNumber = function (that) {\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n\r\n var num = 0;\r\n var trMain = tableViewElem.find('.layui-table-main tbody tr');\r\n var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');\r\n layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {\r\n if (item1['LAY_HIDE']) return;\r\n var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);\r\n itemData['LAY_NUM'] = ++num;\r\n trMain.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);\r\n })\r\n }\r\n\r\n // 树表渲染\r\n Class.prototype.render = function (type) {\r\n var that = this;\r\n that.tableIns = table[type === 'reloadData' ? 'reloadData' : 'reload'](that.tableIns.config.id, $.extend(true, {}, that.config));\r\n that.config = that.tableIns.config;\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function (options, deep, type) {\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function (key, item) {\r\n if (layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 根据需要处理options中的一些参数\r\n updateOptions(that.getOptions().id, options, type || true);\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 仅重载数据\r\n treeTable.reloadData = function () {\r\n var args = $.extend(true, [], arguments);\r\n args[3] = 'reloadData';\r\n\r\n return treeTable.reload.apply(null, args);\r\n };\r\n\r\n var updateStatus = function (data, statusObj, childrenKey, notCascade) {\r\n var dataUpdated = [];\r\n layui.each(data, function (i1, item1) {\r\n if (layui.type(statusObj) === 'function') {\r\n statusObj(item1);\r\n } else {\r\n $.extend(item1, statusObj);\r\n }\r\n dataUpdated.push($.extend({}, item1));\r\n notCascade || (dataUpdated = dataUpdated.concat(updateStatus(item1[childrenKey], statusObj, childrenKey, notCascade)));\r\n });\r\n return dataUpdated;\r\n }\r\n\r\n Class.prototype.updateStatus = function (data, statusObj, notCascade) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n data = data || table.cache[options.id];\r\n\r\n return updateStatus(data, statusObj, treeOptions.customName.children, notCascade);\r\n }\r\n\r\n Class.prototype.getTableData = function () {\r\n var that = this;\r\n var options = that.getOptions();\r\n // return options.url ? table.cache[options.id] : options.data;\r\n return table.cache[options.id];\r\n }\r\n\r\n treeTable.updateStatus = function (id, statusObj, data) {\r\n var that = getThisTable(id);\r\n var options = that.getOptions();\r\n if (!data) {\r\n if (options.url) {\r\n data = table.cache[options.id];\r\n } else {\r\n data = options.data;\r\n }\r\n }\r\n return that.updateStatus(data, statusObj);\r\n }\r\n\r\n treeTable.sort = function (id) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n if (options.autoSort) {\r\n that.initData();\r\n treeTable.renderData(id);\r\n }\r\n }\r\n\r\n // 处理事件\r\n var updateObjParams = function (obj) {\r\n var tableId = obj.config.id;\r\n var tableThat = getThisTable(tableId);\r\n var trData = obj.data = treeTable.getNodeDataByIndex(tableId, obj.index); // 克隆的\r\n var trIndex = trData[LAY_DATA_INDEX];\r\n obj.dataIndex = trIndex;\r\n\r\n // 处理update方法\r\n var updateFn = obj.update;\r\n obj.update = function () {\r\n var updateThat = this;\r\n var args = arguments;\r\n $.extend(tableThat.getNodeDataByIndex(trIndex), args[0]);\r\n var ret = updateFn.apply(updateThat, args); // 主要负责更新节点内容\r\n var nameKey = obj.config.tree.customName.name;\r\n nameKey in args[0] && obj.tr.find('td[data-field=\"' + nameKey + '\"]').children('div.layui-table-cell').removeClass('layui-table-tree-item');\r\n tableThat.renderTreeTable(obj.tr, obj.tr.attr('data-level'), false);\r\n return ret;\r\n }\r\n\r\n // 处理del方法\r\n obj.del = function () {\r\n treeTable.removeNode(tableId, trData);\r\n }\r\n\r\n // 处理setRowChecked\r\n obj.setRowChecked = function (checked) {\r\n treeTable.setRowChecked(tableId, {\r\n index: trData,\r\n checked: checked\r\n });\r\n }\r\n }\r\n\r\n // 更新数据\r\n treeTable.updateNode = function (id, index, newNode) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n var trIndex = trElem.attr('data-index');\r\n var trLevel = trElem.attr('data-level')\r\n\r\n if (!newNode) {\r\n return;\r\n }\r\n // 更新值\r\n var newNodeTemp = that.getNodeDataByIndex(index, false, newNode);\r\n // 获取新的tr替换\r\n var trNew = table.getTrHtml(id, [newNodeTemp]);\r\n // 重新渲染tr\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody tr[lay-data-index=\"' + index + '\"]').replaceWith($(trNew[['trs', 'trs_fixed', 'trs_fixed_r'][i]].join('')).attr({\r\n 'data-index': trIndex,\r\n 'lay-data-index': index,\r\n 'data-level': trLevel\r\n }));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n treeTable.removeNode = function (id, node) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete');\r\n var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]);\r\n that.updateCheckStatus(nodeP);\r\n var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]);\r\n layui.each(delNodesFlat, function (i2, item2) {\r\n indexArr.push('tr[lay-data-index=\"' + item2[LAY_DATA_INDEX] + '\"]');\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n // index发生变化需要更新页面tr中对应的lay-data-index 新增和删除都要注意数据结构变动之后的index问题\r\n layui.each(that.treeToFlat(tableData), function (i3, item3) {\r\n if (item3[LAY_DATA_INDEX_HISTORY] && item3[LAY_DATA_INDEX_HISTORY] !== item3[LAY_DATA_INDEX]) {\r\n tableView.find('tr[lay-data-index=\"' + item3[LAY_DATA_INDEX_HISTORY] + '\"]').attr({\r\n 'data-index': item3[LAY_DATA_INDEX],\r\n 'lay-data-index': item3[LAY_DATA_INDEX],\r\n });\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n\r\n // 重新适配尺寸\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * 新增数据节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {String|Number} opts.parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可\r\n * @param {Number} opts.index 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后\r\n * @param {Object|Array} opts.data 新增的节点,单个或者多个\r\n * @param {Boolean} opts.focus 新增的节点,单个或者多个\r\n * @return {Array} 新增的节点\r\n * */\r\n treeTable.addNodes = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableViewElem = options.elem.next();\r\n var checkName = table.config.checkName;\r\n\r\n opts = opts || {};\r\n\r\n var parentIndex = opts.parentIndex;\r\n var index = opts.index;\r\n var newNodes = opts.data;\r\n var focus = opts.focus;\r\n\r\n parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex;\r\n var parentNode = parentIndex ? that.getNodeDataByIndex(parentIndex) : null;\r\n index = layui.type(index) === 'number' ? index : -1;\r\n\r\n // 添加数据\r\n newNodes = $.extend(true, [], (layui.isArray(newNodes) ? newNodes : [newNodes]));\r\n\r\n // 若未传入 LAY_CHECKED 属性,则继承父节点的 checked 状态\r\n layui.each(newNodes, function(i, item){\r\n if(!(checkName in item) && parentNode){\r\n item[checkName] = parentNode[checkName];\r\n }\r\n })\r\n\r\n var tableData = that.getTableData(), dataAfter;\r\n if (!parentNode) {\r\n // 添加到根节点\r\n dataAfter = table.cache[id].splice(index === -1 ? table.cache[id].length : index);\r\n table.cache[id] = table.cache[id].concat(newNodes, dataAfter);\r\n if (!options.url) {\r\n // 静态data模式\r\n if (!options.page) {\r\n options.data = table.cache[id];\r\n } else {\r\n var pageOptions = options.page;\r\n options.data.splice.apply(options.data, [pageOptions.limit * (pageOptions.curr - 1), pageOptions.limit].concat(table.cache[id]))\r\n }\r\n }\r\n // 将新节点添加到页面\r\n tableData = that.initData();\r\n\r\n if (tableViewElem.find('.layui-none').length) {\r\n table.renderData(id);\r\n return newNodes;\r\n }\r\n\r\n var newNodesHtml = table.getTrHtml(id, newNodes);\r\n var newNodesHtmlObj = {\r\n trs: $(newNodesHtml.trs.join('')),\r\n trs_fixed: $(newNodesHtml.trs_fixed.join('')),\r\n trs_fixed_r: $(newNodesHtml.trs_fixed_r.join(''))\r\n }\r\n\r\n var attrs = {};\r\n layui.each(newNodes, function (newNodeIndex, newNodeItem) {\r\n attrs = {\r\n 'data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'lay-data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'data-level': '0'\r\n };\r\n newNodesHtmlObj.trs.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs)\r\n })\r\n var trIndexPrev = parseInt(newNodes[0][LAY_DATA_INDEX]) - 1;\r\n var tableViewElemMAIN = tableViewElem.find(ELEM_MAIN);\r\n var tableViewElemFIXL = tableViewElem.find(ELEM_FIXL);\r\n var tableViewElemFIXR = tableViewElem.find(ELEM_FIXR);\r\n if (trIndexPrev === -1) {\r\n // 插入到开头\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n if (index === -1) {\r\n // 追加到最后\r\n tableViewElemMAIN.find('tbody').append(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').append(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').append(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n var trIndexNext = dataAfter[0][LAY_DATA_INDEX_HISTORY];\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n\r\n }\r\n\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableViewElem.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n\r\n that.renderTreeTable(tableViewElem.find(newNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')));\r\n } else {\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childKey = treeOptions.customName.children;\r\n\r\n parentNode[isParentKey] = true;\r\n var childrenNodes = parentNode[childKey];\r\n if (!childrenNodes) {\r\n childrenNodes = parentNode[childKey] = newNodes;\r\n } else {\r\n dataAfter = childrenNodes.splice(index === -1 ? childrenNodes.length : index);\r\n childrenNodes = parentNode[childKey] = childrenNodes.concat(newNodes, dataAfter);\r\n }\r\n // 删除已经存在的同级节点以及他们的子节点,并且把中间节点的已展开过的状态设置为false\r\n that.updateStatus(childrenNodes, function (d) {\r\n if (d[isParentKey] || treeOptions.view.showFlexIconIfNotParent) {\r\n d[LAY_HAS_EXPANDED] = false;\r\n }\r\n });\r\n var childrenNodesFlat = that.treeToFlat(childrenNodes);\r\n tableViewElem.find(childrenNodesFlat.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).remove();\r\n\r\n tableData = that.initData();\r\n // 去掉父节点的已经展开过的状态,重新执行一次展开的方法\r\n parentNode[LAY_HAS_EXPANDED] = false;\r\n parentNode[LAY_ASYNC_STATUS] = 'local'; // 转为本地数据,应该规定异步加载子节点的时候addNodes的规则\r\n expandNode({trElem: tableViewElem.find('tr[lay-data-index=\"' + parentIndex + '\"]')}, true)\r\n }\r\n that.updateCheckStatus(parentNode);\r\n treeTable.resize(id);\r\n if (focus) {\r\n // 滚动到第一个新增的节点\r\n tableViewElem.find(ELEM_MAIN).find('tr[lay-data-index=\"' + newNodes[0][LAY_DATA_INDEX] + '\"]').get(0).scrollIntoViewIfNeeded();\r\n }\r\n\r\n return newNodes;\r\n }\r\n\r\n // 获取表格选中状态\r\n treeTable.checkStatus = function (id, includeHalfCheck) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var checkName = table.config.checkName;\r\n\r\n // 需要区分单双选\r\n var tableData = treeTable.getData(id, true);\r\n var checkedData = tableData.filter(function (value, index, array) {\r\n return value[checkName] || (includeHalfCheck && value[LAY_CHECKBOX_HALF]);\r\n });\r\n\r\n var isAll = true;\r\n layui.each(treeOptions.data.cascade === 'all' ? table.cache[id] : treeTable.getData(id, true), function (i1, item1) {\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n return true;\r\n }\r\n })\r\n\r\n return {\r\n data: checkedData,\r\n isAll: isAll\r\n }\r\n }\r\n\r\n // 排序之后重新渲染成树表\r\n treeTable.on('sort', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n treeTable.sort(tableId);\r\n }\r\n });\r\n\r\n // 行点击\r\n treeTable.on('row', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行双击\r\n treeTable.on('rowDouble', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n\r\n var treeOptions = options.tree || {};\r\n if (treeOptions.view.dblClickExpand) {\r\n expandNode({trElem: obj.tr.first()}, null, null, null, true);\r\n }\r\n }\r\n })\r\n\r\n // 菜单\r\n treeTable.on('rowContextmenu', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // tr中带lay-event节点点击\r\n treeTable.on('tool', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行内编辑\r\n treeTable.on('edit', function (obj) {\r\n // 如果编辑涉及到关键的name字段需要重新更新一下tr节点\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n if (obj.field === options.tree.customName.name) {\r\n var updateData = {};\r\n updateData[obj.field] = obj.value;\r\n obj.update(updateData); // 通过update调用执行tr节点的更新\r\n }\r\n }\r\n });\r\n\r\n // 单选\r\n treeTable.on('radio', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n updateObjParams(obj);\r\n checkNode.call(that, obj.tr, obj.checked)\r\n }\r\n })\r\n\r\n // 设置或取消行选中样式\r\n Class.prototype.setRowCheckedClass = function(tr, checked){\r\n var that = this;\r\n var options = that.getOptions();\r\n\r\n var index = tr.data('index');\r\n var tableViewElem = options.elem.next();\r\n \r\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 主体行\r\n\r\n // 右侧固定行\r\n tr.each(function(){\r\n var index = $(this).data('index');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr[data-index=\"'+ index +'\"]');\r\n trFixedR[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n });\r\n };\r\n\r\n // 更新表格的复选框状态\r\n Class.prototype.updateCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n if (!options.hasChecboxCol) {\r\n return false; // 如果没有复选列则不需要更新状态\r\n }\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n\r\n var checkName = table.config.checkName;\r\n\r\n var cascade = treeOptions.data.cascade;\r\n var isCascadeParent = cascade === 'all' || cascade === 'parent';\r\n\r\n // 如有必要更新父节点们的状态\r\n if (isCascadeParent && dataP) {\r\n var trsP = that.updateParentCheckStatus(dataP, layui.type(checked) === 'boolean' ? checked : null);\r\n layui.each(trsP, function (indexP, itemP) {\r\n var checkboxElem = tableView.find('tr[lay-data-index=\"' + itemP[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)');\r\n var checked = itemP[checkName];\r\n\r\n // 标记父节点行背景色\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked);\r\n \r\n // 设置原始复选框 checked 属性值并渲染\r\n form.render(checkboxElem.prop({\r\n checked: checked,\r\n indeterminate: itemP[LAY_CHECKBOX_HALF]\r\n }))\r\n })\r\n }\r\n\r\n // 更新全选的状态\r\n var isAll = true;\r\n var isIndeterminate = false;\r\n var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);\r\n data = data.filter(function (item) {\r\n return !item[options.disabledName];\r\n });\r\n layui.each(data, function (i1, item1) {\r\n if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {\r\n isIndeterminate = true;\r\n }\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n }\r\n if (isIndeterminate && !isAll) {\r\n return true;\r\n }\r\n })\r\n isIndeterminate = isIndeterminate && !isAll;\r\n form.render(tableView.find('input[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]').prop({\r\n 'checked': isAll,\r\n indeterminate: isIndeterminate\r\n }));\r\n\r\n return isAll\r\n }\r\n\r\n // 更新父节点的选中状态\r\n Class.prototype.updateParentCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var checkName = table.config.checkName;\r\n var childrenKey = treeOptions.customName.children;\r\n\r\n var dataRet = [];\r\n dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断\r\n if (checked === true) {\r\n // 为真需要判断子节点的情况\r\n if (!dataP[childrenKey].length) {\r\n checked = false;\r\n } else {\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (!item[checkName]) { // 只要有一个子节点为false\r\n checked = false;\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true; // 跳出循环\r\n }\r\n });\r\n }\r\n } else if (checked === false) {\r\n // 判断是否为半选\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName] || item[LAY_CHECKBOX_HALF]) { // 只要有一个子节点为选中或者半选状态\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n // 状态不确定的情况下根据子节点的信息\r\n checked = false;\r\n var checkedNum = 0;\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName]) {\r\n checkedNum++;\r\n }\r\n });\r\n checked = dataP[childrenKey].length ? dataP[childrenKey].length === checkedNum : dataP[checkName]; // 如果没有子节点保留原来的状态;\r\n dataP[LAY_CHECKBOX_HALF] = checked ? false : checkedNum > 0;\r\n }\r\n dataP[checkName] = checked;\r\n dataRet.push($.extend({}, dataP));\r\n if (dataP[LAY_PARENT_INDEX]) {\r\n dataRet = dataRet.concat(that.updateParentCheckStatus(table.cache[tableId][dataP[LAY_PARENT_INDEX]], checked));\r\n }\r\n return dataRet\r\n }\r\n\r\n var checkNode = function (trElem, checked, callbackFlag) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n var inputElem = (trElem.length ? trElem : tableView).find('.laytable-cell-radio, .laytable-cell-checkbox').children('input').last();\r\n // 判断是单选还是多选 不应该同时存在radio列和checkbox列\r\n var isRadio = inputElem.attr('type') === 'radio';\r\n\r\n if (callbackFlag) {\r\n var triggerEvent = function () {\r\n var fn = function (event) {\r\n layui.stope(event);\r\n }\r\n inputElem.parent().on('click', fn); // 添加临时的阻止冒泡事件\r\n inputElem.next().click();\r\n inputElem.parent().off('click', fn);\r\n }\r\n // 如果需要触发事件可以简单的触发对应节点的click事件\r\n if (isRadio) {\r\n // 单选只能选中或者切换其他的不能取消选中 后续看是否有支持的必要 todo\r\n if (checked && !inputElem.prop('checked')) {\r\n triggerEvent()\r\n }\r\n } else {\r\n if (layui.type(checked) === 'boolean') {\r\n if (inputElem.prop('checked') !== checked) {\r\n // 如果当前已经是想要修改的状态则不做处理\r\n triggerEvent()\r\n }\r\n } else {\r\n // 切换\r\n triggerEvent()\r\n }\r\n }\r\n } else {\r\n var trData = that.getNodeDataByIndex(trElem.attr('data-index'));\r\n var checkName = table.config.checkName;\r\n // 如果不触发事件应该有一个方法可以更新数据以及页面的节点\r\n if (isRadio) {\r\n if (!trData) {\r\n // 单选必须是一个存在的行\r\n return;\r\n }\r\n var statusChecked = {};\r\n statusChecked[checkName] = false;\r\n // that.updateStatus(null, statusChecked); // 取消其他的选中状态\r\n that.updateStatus(null, function (d) {\r\n if (d[checkName]) {\r\n var radioElem = tableView.find('tr[lay-data-index=\"' + d[LAY_DATA_INDEX] + '\"] input[type=\"radio\"][lay-type=\"layTableRadio\"]');\r\n d[checkName] = false;\r\n\r\n // 取消当前选中行背景色\r\n that.setRowCheckedClass(radioElem.closest('tr'), false);\r\n form.render(radioElem.prop('checked', false));\r\n }\r\n }); // 取消其他的选中状态\r\n trData[checkName] = checked;\r\n\r\n that.setRowCheckedClass(trElem, checked); // 标记当前选中行背景色\r\n that.setRowCheckedClass(trElem.siblings(), false); // 取消其他行背景色\r\n\r\n form.render(trElem.find('input[type=\"radio\"][lay-type=\"layTableRadio\"]').prop('checked', checked));\r\n } else {\r\n // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态\r\n checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo\r\n // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态\r\n // 处理不可操作的信息\r\n var checkedStatusFn = function (d) {\r\n if (!d[table.config.disabledName]) { // 节点不可操作的不处理\r\n d[checkName] = checked;\r\n d[LAY_CHECKBOX_HALF] = false;\r\n }\r\n }\r\n\r\n var trs = that.updateStatus(trData ? [trData] : table.cache[tableId], checkedStatusFn, trData && ['parent', 'none'].indexOf(treeOptions.data.cascade) !== -1);\r\n var checkboxElem = tableView.find(trs.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)';\r\n }).join(','));\r\n\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked); // 标记当前选中行背景色\r\n form.render(checkboxElem.prop({checked: checked, indeterminate: false}));\r\n\r\n var trDataP;\r\n\r\n // 更新父节点以及更上层节点的状态\r\n if (trData && trData[LAY_PARENT_INDEX]) {\r\n // 找到父节点,然后判断父节点的子节点是否全部选中\r\n trDataP = that.getNodeDataByIndex(trData[LAY_PARENT_INDEX]);\r\n }\r\n\r\n return that.updateCheckStatus(trDataP, checked);\r\n }\r\n }\r\n }\r\n\r\n // 多选\r\n treeTable.on('checkbox', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n var checked = obj.checked;\r\n updateObjParams(obj)\r\n obj.isAll = checkNode.call(that, obj.tr, checked);\r\n }\r\n })\r\n\r\n /**\r\n * 设置行选中状态\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Object|String} opts.index 节点下标\r\n * @param {Boolean} opts.checked 选中或取消\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件回调\r\n * */\r\n treeTable.setRowChecked = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n opts = opts || {};\r\n\r\n var node = opts.index;\r\n var checked = opts.checked;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var dataIndex = layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX];\r\n // 判断是否在当前页面中\r\n var nodeData = that.getNodeDataByIndex(dataIndex);\r\n if (!nodeData) {\r\n // 目前只能处理当前页的数据\r\n return;\r\n }\r\n\r\n var collectNeedExpandNodeIndex = function(index){\r\n needExpandIndex.push(index);\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n if (!trElem.length) {\r\n var nodeData = that.getNodeDataByIndex(index);\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n parentIndex && collectNeedExpandNodeIndex(parentIndex);\r\n }\r\n }\r\n\r\n // 判断是否展开过\r\n var trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n if (!trElem.length) {\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n var needExpandIndex = [];\r\n collectNeedExpandNodeIndex(parentIndex);\r\n // 如果还没有展开没有渲染的要先渲染出来\r\n layui.each(needExpandIndex.reverse(),function(index, nodeIndex){\r\n treeTable.expandNode(id, {\r\n index: nodeIndex,\r\n expandFlag: true\r\n });\r\n })\r\n trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n }\r\n checkNode.call(that, trElem, checked, callbackFlag);\r\n }\r\n\r\n treeTable.checkAllNodes = function (id, checked) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n checkNode.call(that, tableView.find('tr[data-index=\"NONE\"]'), !!checked)\r\n }\r\n\r\n /**\r\n * 获得数据\r\n * @param {String} id 表格id\r\n * @param {Boolean} [isSimpleData] 是否返回平铺结构的数据\r\n * @return {Array} 表格数据\r\n * */\r\n treeTable.getData = function (id, isSimpleData) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n var tableData = [];\r\n layui.each($.extend(true, [], table.cache[id] || []), function (index, item) {\r\n // 遍历排除掉临时的数据\r\n tableData.push(item);\r\n })\r\n return isSimpleData ? that.treeToFlat(tableData) : tableData;\r\n }\r\n\r\n /**\r\n * 重新加载子节点\r\n * @param {String} id 表格id\r\n * @param {String} dataIndex 父节点的dataIndex\r\n * */\r\n treeTable.reloadAsyncNode = function (id, dataIndex) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n if (!treeOptions.async || !treeOptions.async.enable) {\r\n return;\r\n }\r\n var dataP = that.getNodeDataByIndex(dataIndex);\r\n if (!dataP) {\r\n return;\r\n }\r\n dataP[LAY_HAS_EXPANDED] = false;\r\n dataP[LAY_EXPAND] = false;\r\n dataP[LAY_ASYNC_STATUS] = false;\r\n layui.each(that.treeToFlat(dataP[treeOptions.customName.children]).reverse(), function (i1, item1) {\r\n treeTable.removeNode(id, item1[LAY_DATA_INDEX]);\r\n })\r\n // 重新展开\r\n treeTable.expandNode(id, {\r\n index: dataIndex,\r\n expandFlag: true,\r\n callbackFlag: true,\r\n })\r\n }\r\n\r\n /**\r\n * 通过数据id获取节点对象\r\n * */\r\n treeTable.getNodeById = function (id, dataId) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n return that.getNodeById(dataId);\r\n }\r\n\r\n /**\r\n * 根据自定义规则搜索节点数据\r\n * @param {String} id 树表id\r\n * @param {Function} filter 自定义过滤器函数\r\n * @param {Object} [opts]\r\n * @param {Boolean} [opts.isSingle] 是否只找到第一个\r\n * @param {Object} [opts.parentNode] 在指定在某个父节点下的子节点中搜索\r\n * @return {Object} 节点对象\r\n * */\r\n treeTable.getNodesByFilter = function (id, filter, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n\r\n opts = opts || {};\r\n var isSingle = opts.isSingle;\r\n var parentNode = opts.parentNode;\r\n var dataP = parentNode && parentNode.data;\r\n // dataP = dataP || table.cache[id];\r\n var nodes = that.treeToFlat(dataP ? (dataP[options.tree.customName.children] || []) : table.cache[id]).filter(filter);\r\n var nodesResult = [];\r\n layui.each(nodes, function (i1, item1) {\r\n nodesResult.push(that.getNodeByIndex(item1[LAY_DATA_INDEX]));\r\n if (isSingle) {\r\n return true;\r\n }\r\n });\r\n\r\n return nodesResult;\r\n }\r\n\r\n\r\n // 记录所有实例\r\n thisTreeTable.that = {}; // 记录所有实例对象\r\n // thisTreeTable.config = {}; // 记录所有实例配置项\r\n\r\n // 重载\r\n treeTable.reload = function (id, options, deep, type) {\r\n // deep = deep !== false; // 默认采用深拷贝\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n that.reload(options, deep, type);\r\n return thisTreeTable.call(that);\r\n };\r\n\r\n // 核心入口\r\n treeTable.render = function (options) {\r\n var inst = new Class(options);\r\n return thisTreeTable.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, treeTable);\r\n});\r\n","/**\r\n * tree 树组件\r\n */\r\n\r\nlayui.define(['form','util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n \r\n // 模块名\r\n var MOD_NAME = 'tree';\r\n\r\n // 外部接口\r\n var tree = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'children'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n getChecked: function(){\r\n return that.getChecked.call(that);\r\n },\r\n setChecked: function(id){// 设置值\r\n return that.setChecked.call(that, id);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n }\r\n\r\n // 字符常量\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var NONE = 'layui-none';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_VIEW = 'layui-tree';\r\n var ELEM_SET = 'layui-tree-set';\r\n var ICON_CLICK = 'layui-tree-iconClick';\r\n var ICON_ADD = 'layui-icon-addition';\r\n var ICON_SUB = 'layui-icon-subtraction';\r\n var ELEM_ENTRY = 'layui-tree-entry';\r\n var ELEM_MAIN = 'layui-tree-main';\r\n var ELEM_TEXT = 'layui-tree-txt';\r\n var ELEM_PACK = 'layui-tree-pack';\r\n var ELEM_SPREAD = 'layui-tree-spread';\r\n var ELEM_LINE_SHORT = 'layui-tree-setLineShort';\r\n var ELEM_SHOW = 'layui-tree-showLine';\r\n var ELEM_EXTEND = 'layui-tree-lineExtend';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++tree.index;\r\n that.config = $.extend({}, that.config, tree.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n data: [], // 数据\r\n \r\n showCheckbox: false, // 是否显示复选框\r\n showLine: true, // 是否开启连接线\r\n accordion: false, // 是否开启手风琴模式\r\n onlyIconControl: false, // 是否仅允许节点左侧图标控制展开收缩\r\n isJump: false, // 是否允许点击节点时弹出新窗口跳转\r\n edit: false, // 是否开启节点的操作图标\r\n \r\n text: {\r\n defaultNodeName: '未命名', // 节点默认名称\r\n none: '无数据' // 数据为空时的文本提示\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n \r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n \r\n that.config = $.extend(true, {}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 主体渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, tree.config.customName, options.customName);\r\n \r\n that.checkids = [];\r\n\r\n var temp = $('
                  ');\r\n that.tree(temp);\r\n\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n\r\n // 索引\r\n that.key = options.id || that.index;\r\n \r\n // 插入组件结构\r\n that.elem = temp;\r\n that.elemNone = $('
                  '+ options.text.none +'
                  ');\r\n othis.html(that.elem);\r\n\r\n if(that.elem.find('.layui-tree-set').length == 0){\r\n return that.elem.append(that.elemNone);\r\n };\r\n \r\n // 复选框渲染\r\n if(options.showCheckbox){\r\n that.renderForm('checkbox');\r\n };\r\n\r\n that.elem.find('.layui-tree-set').each(function(){\r\n var othis = $(this);\r\n // 最外层\r\n if(!othis.parent('.layui-tree-pack')[0]){\r\n othis.addClass('layui-tree-setHide');\r\n };\r\n\r\n // 没有下一个节点 上一层父级有延伸线\r\n if(!othis.next()[0] && othis.parents('.layui-tree-pack').eq(1).hasClass('layui-tree-lineExtend')){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n \r\n // 没有下一个节点 外层最后一个\r\n if(!othis.next()[0] && !othis.parents('.layui-tree-set').eq(0).next()[0]){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n });\r\n\r\n that.events();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-tree-'+ this.index);\r\n };\r\n\r\n // 节点解析\r\n Class.prototype.tree = function(elem, children){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var data = children || options.data;\r\n\r\n // 遍历数据\r\n layui.each(data, function(index, item){\r\n var hasChild = item[customName.children] && item[customName.children].length > 0;\r\n var packDiv = $('
                  ');\r\n var entryDiv = $(['
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n // 箭头\r\n ,function(){\r\n if(options.showLine){\r\n if(hasChild){\r\n return '';\r\n }else{\r\n return '';\r\n };\r\n }else{\r\n return '';\r\n };\r\n }()\r\n \r\n // 复选框\r\n ,function(){\r\n return options.showCheckbox ? '' : '';\r\n }()\r\n \r\n // 节点\r\n ,function(){\r\n if(options.isJump && item.href){\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }else{\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }\r\n }()\r\n ,'
                  '\r\n \r\n // 节点操作图标\r\n ,function(){\r\n if(!options.edit) return '';\r\n \r\n var editIcon = {\r\n add: ''\r\n ,update: ''\r\n ,del: ''\r\n }, arr = ['
                  '];\r\n \r\n if(options.edit === true){\r\n options.edit = ['update', 'del']\r\n }\r\n \r\n if(typeof options.edit === 'object'){\r\n layui.each(options.edit, function(i, val){\r\n arr.push(editIcon[val] || '')\r\n });\r\n return arr.join('') + '
                  ';\r\n }\r\n }()\r\n ,'
                  '].join(''));\r\n\r\n // 如果有子节点,则递归继续生成树\r\n if(hasChild){\r\n entryDiv.append(packDiv);\r\n that.tree(packDiv, item[customName.children]);\r\n };\r\n\r\n elem.append(entryDiv);\r\n \r\n // 若有前置节点,前置节点加连接线\r\n if(entryDiv.prev('.'+ELEM_SET)[0]){\r\n entryDiv.prev().children('.layui-tree-pack').addClass('layui-tree-showLine');\r\n };\r\n \r\n // 若无子节点,则父节点加延伸线\r\n if(!hasChild){\r\n entryDiv.parent('.layui-tree-pack').addClass('layui-tree-lineExtend');\r\n };\r\n\r\n // 展开节点操作\r\n that.spread(entryDiv, item);\r\n \r\n // 选择框\r\n if(options.showCheckbox){\r\n item.checked && that.checkids.push(item[customName.id]);\r\n that.checkClick(entryDiv, item);\r\n }\r\n \r\n // 操作节点\r\n options.edit && that.operate(entryDiv, item);\r\n \r\n });\r\n };\r\n\r\n // 展开节点\r\n Class.prototype.spread = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n var elemCheckbox = elemMain.find('input[same=\"layuiTreeCheck\"]');\r\n var elemIcon = entry.find('.'+ ICON_CLICK);\r\n var elemText = entry.find('.'+ ELEM_TEXT);\r\n var touchOpen = options.onlyIconControl ? elemIcon : elemMain; // 判断展开通过节点还是箭头图标\r\n var state = '';\r\n \r\n // 展开收缩\r\n touchOpen.on('click', function(e){\r\n var packCont = elem.children('.'+ELEM_PACK)\r\n ,iconClick = touchOpen.children('.layui-icon')[0] ? touchOpen.children('.layui-icon') : touchOpen.find('.layui-tree-icon').children('.layui-icon');\r\n\r\n // 若没有子节点\r\n if(!packCont[0]){\r\n state = 'normal';\r\n }else{\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n elem.removeClass(ELEM_SPREAD);\r\n packCont.slideUp(200);\r\n iconClick.removeClass(ICON_SUB).addClass(ICON_ADD); \r\n that.updateFieldValue(item, 'spread', false);\r\n }else{\r\n elem.addClass(ELEM_SPREAD);\r\n packCont.slideDown(200);\r\n iconClick.addClass(ICON_SUB).removeClass(ICON_ADD);\r\n that.updateFieldValue(item, 'spread', true);\r\n\r\n // 是否手风琴\r\n if(options.accordion){\r\n var sibls = elem.siblings('.'+ELEM_SET);\r\n sibls.removeClass(ELEM_SPREAD);\r\n sibls.children('.'+ELEM_PACK).slideUp(200);\r\n sibls.find('.layui-tree-icon').children('.layui-icon').removeClass(ICON_SUB).addClass(ICON_ADD);\r\n };\r\n };\r\n };\r\n });\r\n \r\n // 点击回调\r\n elemText.on('click', function(){\r\n var othis = $(this);\r\n \r\n // 判断是否禁用状态\r\n if(othis.hasClass(DISABLED)) return;\r\n \r\n // 判断展开收缩状态\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n state = options.onlyIconControl ? 'open' : 'close';\r\n } else {\r\n state = options.onlyIconControl ? 'close' : 'open';\r\n }\r\n\r\n // 获取选中状态\r\n if(elemCheckbox[0]){\r\n that.updateFieldValue(item, 'checked', elemCheckbox.prop('checked'));\r\n }\r\n \r\n // 点击产生的回调\r\n options.click && options.click({\r\n elem: elem,\r\n state: state,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 更新数据源 checked,spread 字段值\r\n Class.prototype.updateFieldValue = function(obj, field, value){\r\n if(field in obj) obj[field] = value;\r\n };\r\n \r\n // 计算复选框选中状态\r\n Class.prototype.setCheckbox = function(elem, item, elemCheckbox){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n\r\n // 同步子节点选中状态\r\n if(typeof item[customName.children] === 'object' || elem.find('.'+ELEM_PACK)[0]){\r\n var elemCheckboxs = elem.find('.'+ ELEM_PACK).find('input[same=\"layuiTreeCheck\"]');\r\n elemCheckboxs.each(function(index){\r\n if(this.disabled) return; // 不可点击则跳过\r\n var children = item[customName.children][index];\r\n if(children) that.updateFieldValue(children, 'checked', checked);\r\n that.updateFieldValue(this, 'checked', checked);\r\n });\r\n };\r\n\r\n // 同步父节点选中状态\r\n var setParentsChecked = function(thisNodeElem){\r\n // 若无父节点,则终止递归\r\n if(!thisNodeElem.parents('.'+ ELEM_SET)[0]) return;\r\n\r\n var state;\r\n var parentPack = thisNodeElem.parent('.'+ ELEM_PACK);\r\n var parentNodeElem = parentPack.parent();\r\n var parentCheckbox = parentPack.prev().find('input[same=\"layuiTreeCheck\"]');\r\n\r\n // 如果子节点有任意一条选中,则父节点为选中状态\r\n if(checked){\r\n parentCheckbox.prop('checked', checked);\r\n } else { // 如果当前节点取消选中,则根据计算“兄弟和子孙”节点选中状态,来同步父节点选中状态\r\n parentPack.find('input[same=\"layuiTreeCheck\"]').each(function(){\r\n if(this.checked){\r\n state = true;\r\n }\r\n });\r\n \r\n // 如果兄弟子孙节点全部未选中,则父节点也应为非选中状态\r\n state || parentCheckbox.prop('checked', false);\r\n }\r\n \r\n // 向父节点递归\r\n setParentsChecked(parentNodeElem);\r\n };\r\n \r\n setParentsChecked(elem);\r\n\r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 复选框选择\r\n Class.prototype.checkClick = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n \r\n \r\n \r\n // 点击复选框\r\n elemMain.on('click', 'input[same=\"layuiTreeCheck\"]+', function(e){\r\n layui.stope(e); // 阻止点击节点事件\r\n\r\n var elemCheckbox = $(this).prev();\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n \r\n that.setCheckbox(elem, item, elemCheckbox);\r\n that.updateFieldValue(item, 'checked', checked);\r\n\r\n // 复选框点击产生的回调\r\n options.oncheck && options.oncheck({\r\n elem: elem,\r\n checked: checked,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 节点操作\r\n Class.prototype.operate = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n\r\n entry.children('.layui-tree-btnGroup').on('click', '.layui-icon', function(e){\r\n layui.stope(e); // 阻止节点操作\r\n\r\n var type = $(this).data(\"type\");\r\n var packCont = elem.children('.'+ELEM_PACK);\r\n var returnObj = {\r\n data: item,\r\n type: type,\r\n elem:elem\r\n };\r\n // 增加\r\n if(type == 'add'){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 若开启连接线,更改图标样式\r\n if(options.showLine){\r\n elemMain.find('.'+ICON_CLICK).addClass('layui-tree-icon');\r\n elemMain.find('.'+ICON_CLICK).children('.layui-icon').addClass(ICON_ADD).removeClass('layui-icon-file');\r\n // 若未开启连接线,显示箭头\r\n } else {\r\n elemMain.find('.layui-tree-iconArrow').removeClass(HIDE);\r\n };\r\n // 节点添加子节点容器\r\n elem.append('
                  ');\r\n };\r\n\r\n // 新增节点\r\n var key = options.operate && options.operate(returnObj);\r\n var obj = {};\r\n\r\n obj[customName.title] = options.text.defaultNodeName;\r\n obj[customName.id] = key;\r\n that.tree(elem.children('.'+ELEM_PACK), [obj]);\r\n \r\n // 放在新增后面,因为要对元素进行操作\r\n if(options.showLine){\r\n // 节点本身无子节点\r\n if(!packCont[0]){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET)\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 兄弟节点添加连接线\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n elem.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n // 父级移除延伸线\r\n parentPack.removeClass(ELEM_EXTEND);\r\n // 同层节点最后一个更改线的状态\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n } else {\r\n elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n } else {\r\n // 添加延伸线\r\n if(!packCont.hasClass(ELEM_EXTEND)){\r\n packCont.addClass(ELEM_EXTEND);\r\n };\r\n // 子节点添加延伸线\r\n elem.find('.'+ELEM_PACK).each(function(){\r\n $(this).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n // 如果前一个节点有延伸线\r\n if(packCont.children('.'+ELEM_SET).last().prev().hasClass(ELEM_LINE_SHORT)){\r\n packCont.children('.'+ELEM_SET).last().prev().removeClass(ELEM_LINE_SHORT);\r\n }else{\r\n // 若之前的没有,说明处于连接状态\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若是最外层,要始终保持相连的状态\r\n if(!elem.parent('.'+ELEM_PACK)[0] && elem.next()[0]){\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n if(!options.showCheckbox) return;\r\n // 若开启复选框,同步新增节点状态\r\n if(elemMain.find('input[same=\"layuiTreeCheck\"]')[0].checked){\r\n var packLast = elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).last();\r\n packLast.find('input[same=\"layuiTreeCheck\"]')[0].checked = true;\r\n };\r\n that.renderForm('checkbox');\r\n \r\n // 修改\r\n } else if(type == 'update') {\r\n var text = elemMain.children('.'+ ELEM_TEXT).html();\r\n elemMain.children('.'+ ELEM_TEXT).html('');\r\n // 添加输入框,覆盖在文字上方\r\n elemMain.append('');\r\n // 获取焦点\r\n elemMain.children('.layui-tree-editInput').val(util.unescape(text)).focus();\r\n // 嵌入文字移除输入框\r\n var getVal = function(input){\r\n var textNew = input.val().trim();\r\n textNew = textNew ? textNew : options.text.defaultNodeName;\r\n input.remove();\r\n elemMain.children('.'+ ELEM_TEXT).html(textNew);\r\n \r\n // 同步数据\r\n returnObj.data[customName.title] = textNew;\r\n \r\n // 节点修改的回调\r\n options.operate && options.operate(returnObj);\r\n };\r\n // 失去焦点\r\n elemMain.children('.layui-tree-editInput').blur(function(){\r\n getVal($(this));\r\n });\r\n // 回车\r\n elemMain.children('.layui-tree-editInput').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getVal($(this));\r\n };\r\n });\r\n\r\n // 删除\r\n } else {\r\n layer.confirm('确认删除该节点 \"'+ (item[customName.title] || '') +'\" 吗?', function(index){\r\n options.operate && options.operate(returnObj); // 节点删除的回调\r\n returnObj.status = 'remove'; // 标注节点删除\r\n \r\n layer.close(index);\r\n \r\n // 若删除最后一个,显示空数据提示\r\n if(!elem.prev('.'+ELEM_SET)[0] && !elem.next('.'+ELEM_SET)[0] && !elem.parent('.'+ELEM_PACK)[0]){\r\n elem.remove();\r\n that.elem.append(that.elemNone);\r\n return;\r\n };\r\n // 若有兄弟节点\r\n if(elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY)[0]){\r\n // 若开启复选框\r\n if(options.showCheckbox){\r\n // 若开启复选框,进行下步操作\r\n var elemDel = function(elem){\r\n // 若无父结点,则不执行\r\n if(!elem.parents('.'+ELEM_SET)[0]) return;\r\n var siblingTree = elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY);\r\n var parentTree = elem.parent('.'+ELEM_PACK).prev();\r\n var checkState = parentTree.find('input[same=\"layuiTreeCheck\"]')[0];\r\n var state = 1;\r\n var num = 0;\r\n\r\n // 若父节点未勾选\r\n if(checkState.checked == false){\r\n // 遍历兄弟节点\r\n siblingTree.each(function(i, item1){\r\n var input = $(item1).find('input[same=\"layuiTreeCheck\"]')[0]\r\n if(input.checked == false && !input.disabled){\r\n state = 0;\r\n };\r\n // 判断是否全为不可勾选框\r\n if(!input.disabled){\r\n num = 1;\r\n };\r\n });\r\n // 若有可勾选选择框并且已勾选\r\n if(state == 1 && num == 1){\r\n // 勾选父节点\r\n checkState.checked = true;\r\n that.renderForm('checkbox');\r\n // 向上遍历祖先节点\r\n elemDel(parentTree.parent('.'+ELEM_SET));\r\n };\r\n };\r\n };\r\n elemDel(elem);\r\n };\r\n // 若开启连接线\r\n if(options.showLine){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET);\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 父级去除延伸线,因为此时子节点里没有空节点\r\n parentPack.removeClass(ELEM_EXTEND);\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最后一个节点\r\n if(!elem.next()[0]){\r\n elem.prev().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n }else{\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最外层最后一个节点,去除前一个结点的连接线\r\n if(!elem.next()[0] && !elem.parents('.'+ELEM_SET)[1] && !elem.parents('.'+ELEM_SET).eq(0).next()[0]){\r\n elem.prev('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n }else{\r\n // 若为最后一个节点且有延伸线\r\n if(!elem.next()[0] && elem.hasClass(ELEM_LINE_SHORT)){\r\n elem.prev().addClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n \r\n } else {\r\n // 若无兄弟节点\r\n var prevDiv = elem.parent('.'+ELEM_PACK).prev();\r\n // 若开启了连接线\r\n if(options.showLine){\r\n prevDiv.find('.'+ICON_CLICK).removeClass('layui-tree-icon');\r\n prevDiv.find('.'+ICON_CLICK).children('.layui-icon').removeClass(ICON_SUB).addClass('layui-icon-file');\r\n // 父节点所在层添加延伸线\r\n var pare = prevDiv.parents('.'+ELEM_PACK).eq(0);\r\n pare.addClass(ELEM_EXTEND);\r\n\r\n // 兄弟节点最后子节点添加延伸线\r\n pare.children('.'+ELEM_SET).each(function(){\r\n $(this).children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n }else{\r\n // 父节点隐藏箭头\r\n prevDiv.find('.layui-tree-iconArrow').addClass(HIDE);\r\n };\r\n // 移除展开属性\r\n elem.parents('.'+ELEM_SET).eq(0).removeClass(ELEM_SPREAD);\r\n // 移除节点容器\r\n elem.parent('.'+ELEM_PACK).remove();\r\n };\r\n\r\n elem.remove();\r\n });\r\n \r\n };\r\n });\r\n };\r\n\r\n // 部分事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkWarp = that.elem.find('.layui-tree-checkedFirst');\r\n \r\n // 初始选中\r\n that.setChecked(that.checkids);\r\n \r\n // 搜索\r\n that.elem.find('.layui-tree-search').on('keyup', function(){\r\n var input = $(this);\r\n var val = input.val();\r\n var pack = input.nextAll();\r\n var arr = [];\r\n\r\n // 遍历所有的值\r\n pack.find('.'+ ELEM_TEXT).each(function(){\r\n var entry = $(this).parents('.'+ELEM_ENTRY);\r\n // 若值匹配,加一个类以作标识\r\n if($(this).html().indexOf(val) != -1){\r\n arr.push($(this).parent());\r\n \r\n var select = function(div){\r\n div.addClass('layui-tree-searchShow');\r\n // 向上父节点渲染\r\n if(div.parent('.'+ELEM_PACK)[0]){\r\n select(div.parent('.'+ELEM_PACK).parent('.'+ELEM_SET));\r\n };\r\n };\r\n select(entry.parent('.'+ELEM_SET));\r\n };\r\n });\r\n\r\n // 根据标志剔除\r\n pack.find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n if(!parent.hasClass('layui-tree-searchShow')){\r\n parent.addClass(HIDE);\r\n };\r\n });\r\n if(pack.find('.layui-tree-searchShow').length == 0){\r\n that.elem.append(that.elemNone);\r\n };\r\n\r\n // 节点过滤的回调\r\n options.onsearch && options.onsearch({\r\n elem: arr\r\n });\r\n });\r\n\r\n // 还原搜索初始状态\r\n that.elem.find('.layui-tree-search').on('keydown', function(){\r\n $(this).nextAll().find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n parent.removeClass('layui-tree-searchShow '+ HIDE);\r\n });\r\n if($('.layui-tree-emptyText')[0]) $('.layui-tree-emptyText').remove();\r\n });\r\n };\r\n\r\n // 得到选中节点\r\n Class.prototype.getChecked = function(){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checkId = [];\r\n var checkData = [];\r\n \r\n // 遍历节点找到选中索引\r\n that.elem.find('.layui-form-checked').each(function(){\r\n checkId.push($(this).prev()[0].value);\r\n });\r\n \r\n // 遍历节点\r\n var eachNodes = function(data, checkNode){\r\n layui.each(data, function(index, item){\r\n layui.each(checkId, function(index2, item2){\r\n if(item[customName.id] == item2){\r\n that.updateFieldValue(item, 'checked', true);\r\n\r\n var cloneItem = $.extend({}, item);\r\n delete cloneItem[customName.children];\r\n\r\n checkNode.push(cloneItem);\r\n \r\n if(item[customName.children]){\r\n cloneItem[customName.children] = [];\r\n eachNodes(item[customName.children], cloneItem[customName.children]);\r\n }\r\n return true\r\n }\r\n });\r\n });\r\n };\r\n\r\n eachNodes($.extend({}, options.data), checkData);\r\n \r\n return checkData;\r\n };\r\n\r\n // 设置选中节点\r\n Class.prototype.setChecked = function(checkedId){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始选中\r\n that.elem.find('.'+ELEM_SET).each(function(i, item){\r\n var thisId = $(this).data('id');\r\n var input = $(item).children('.'+ELEM_ENTRY).find('input[same=\"layuiTreeCheck\"]');\r\n var reInput = input.next();\r\n \r\n // 若返回数字\r\n if(typeof checkedId === 'number'){\r\n if(thisId.toString() == checkedId.toString()){\r\n if(!input[0].checked){\r\n reInput.click();\r\n };\r\n return false;\r\n };\r\n } \r\n // 若返回数组\r\n else if(typeof checkedId === 'object'){\r\n layui.each(checkedId, function(index, value){\r\n if(value.toString() == thisId.toString() && !input[0].checked){\r\n reInput.click();\r\n return true;\r\n }\r\n });\r\n };\r\n });\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n tree.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的节点数据\r\n tree.getChecked = function(id){\r\n var that = thisModule.that[id];\r\n return that.getChecked();\r\n };\r\n \r\n // 设置选中节点\r\n tree.setChecked = function(id, checkedId){\r\n var that = thisModule.that[id];\r\n return that.setChecked(checkedId);\r\n };\r\n \r\n // 核心入口\r\n tree.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, tree);\r\n})","/**\r\n * transfer 穿梭框组件\r\n */\r\n\r\nlayui.define(['laytpl', 'form'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var form = layui.form;\r\n \r\n // 模块名\r\n var MOD_NAME = 'transfer';\r\n\r\n // 外部接口\r\n var transfer = {\r\n config: {},\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n // 获取右侧数据\r\n getData: function(){\r\n return that.getData.call(that);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n };\r\n\r\n // 字符常量\r\n var ELEM = 'layui-transfer';\r\n var HIDE = 'layui-hide'; \r\n var DISABLED = 'layui-btn-disabled';\r\n var NONE = 'layui-none';\r\n var ELEM_BOX = 'layui-transfer-box';\r\n var ELEM_HEADER = 'layui-transfer-header';\r\n var ELEM_SEARCH = 'layui-transfer-search';\r\n var ELEM_ACTIVE = 'layui-transfer-active';\r\n var ELEM_DATA = 'layui-transfer-data';\r\n \r\n // 穿梭框模板\r\n var TPL_BOX = function(obj){\r\n obj = obj || {};\r\n return ['
                  ',\r\n '
                  ',\r\n '',\r\n '
                  ',\r\n '{{# if(d.data.showSearch){ }}',\r\n '
                  ',\r\n '',\r\n '',\r\n '
                  ',\r\n '{{# } }}',\r\n '
                    ',\r\n '
                    '].join('');\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                    ',\r\n TPL_BOX({\r\n index: 0,\r\n checkAllName: 'layTransferLeftCheckAll'\r\n }),\r\n '
                    ',\r\n '',\r\n '',\r\n '
                    ',\r\n TPL_BOX({\r\n index: 1,\r\n checkAllName: 'layTransferRightCheckAll'\r\n }),\r\n '
                    '].join('');\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++transfer.index;\r\n that.config = $.extend({}, that.config, transfer.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n title: ['列表一', '列表二'],\r\n width: 200,\r\n height: 360,\r\n data: [], // 数据源\r\n value: [], // 选中的数据\r\n showSearch: false, // 是否开启搜索\r\n id: '', // 唯一索引,默认自增 index\r\n text: {\r\n none: '无数据',\r\n searchNone: '无匹配数据'\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 解析模板\r\n var thisElem = that.elem = $(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index // 索引\r\n }));\r\n \r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n \r\n // 初始化属性\r\n options.data = options.data || [];\r\n options.value = options.value || [];\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n that.key = options.id;\r\n \r\n // 插入组件结构\r\n othis.html(that.elem);\r\n \r\n // 各级容器\r\n that.layBox = that.elem.find('.'+ ELEM_BOX)\r\n that.layHeader = that.elem.find('.'+ ELEM_HEADER)\r\n that.laySearch = that.elem.find('.'+ ELEM_SEARCH)\r\n that.layData = thisElem.find('.'+ ELEM_DATA);\r\n that.layBtn = thisElem.find('.'+ ELEM_ACTIVE + ' .layui-btn');\r\n \r\n // 初始化尺寸\r\n that.layBox.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n that.layData.css({\r\n height: function(){\r\n var height = options.height - that.layHeader.outerHeight();\r\n if(options.showSearch){\r\n height -= that.laySearch.outerHeight();\r\n }\r\n return height - 2;\r\n }()\r\n });\r\n \r\n that.renderData(); // 渲染数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染数据\r\n Class.prototype.renderData = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右穿梭框差异数据\r\n var arr = [{\r\n checkName: 'layTransferLeftCheck',\r\n views: []\r\n }, {\r\n checkName: 'layTransferRightCheck',\r\n views: []\r\n }];\r\n \r\n // 解析格式\r\n that.parseData(function(item){ \r\n // 标注为 selected 的为右边的数据\r\n var _index = item.selected ? 1 : 0\r\n var listElem = ['
                  • ',\r\n '',\r\n '
                  • '].join('');\r\n // 按照 options.value 顺序排列右侧数据\r\n if(_index){\r\n layui.each(options.value, function(i, v){\r\n if(v == item.value && item.selected){\r\n arr[_index].views[i] = listElem;\r\n }\r\n });\r\n } else {\r\n arr[_index].views.push(listElem);\r\n }\r\n delete item.selected;\r\n });\r\n \r\n that.layData.eq(0).html(arr[0].views.join(''));\r\n that.layData.eq(1).html(arr[1].views.join(''));\r\n \r\n that.renderCheckBtn();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-transfer-'+ this.index);\r\n };\r\n \r\n // 同步复选框和按钮状态\r\n Class.prototype.renderCheckBtn = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n obj = obj || {};\r\n \r\n that.layBox.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n var allElemCheckbox = othis.find('.'+ ELEM_HEADER).find('input[type=\"checkbox\"]');\r\n var listElemCheckbox = thisDataElem.find('input[type=\"checkbox\"]');\r\n \r\n // 同步复选框和按钮状态\r\n var nums = 0;\r\n var haveChecked = false;\r\n\r\n listElemCheckbox.each(function(){\r\n var isHide = $(this).data('hide');\r\n if(this.checked || this.disabled || isHide){\r\n nums++;\r\n }\r\n if(this.checked && !isHide){\r\n haveChecked = true;\r\n }\r\n });\r\n \r\n allElemCheckbox.prop('checked', haveChecked && nums === listElemCheckbox.length); // 全选复选框状态\r\n that.layBtn.eq(_index)[haveChecked ? 'removeClass' : 'addClass'](DISABLED); // 对应的按钮状态\r\n \r\n // 无数据视图\r\n if(!obj.stopNone){\r\n var isNone = thisDataElem.children('li:not(.'+ HIDE +')').length\r\n that.noneView(thisDataElem, isNone ? '' : options.text.none);\r\n }\r\n });\r\n \r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 无数据视图\r\n Class.prototype.noneView = function(thisDataElem, text){\r\n var createNoneElem = $('

                    '+ (text || '') +'

                    ');\r\n if(thisDataElem.find('.'+ NONE)[0]){\r\n thisDataElem.find('.'+ NONE).remove();\r\n }\r\n text.replace(/\\s/g, '') && thisDataElem.append(createNoneElem);\r\n };\r\n \r\n // 同步 value 属性值\r\n Class.prototype.setValue = function(){\r\n var that = this;\r\n var options = that.config;\r\n var arr = [];\r\n\r\n that.layBox.eq(1).find('.'+ ELEM_DATA +' input[type=\"checkbox\"]').each(function(){\r\n var isHide = $(this).data('hide');\r\n isHide || arr.push(this.value);\r\n });\r\n options.value = arr;\r\n \r\n return that;\r\n };\r\n\r\n // 解析数据\r\n Class.prototype.parseData = function(callback){\r\n var that = this;\r\n var options = that.config;\r\n var newData = [];\r\n \r\n layui.each(options.data, function(index, item){\r\n // 解析格式\r\n item = (typeof options.parseData === 'function' \r\n ? options.parseData(item) \r\n : item) || item;\r\n \r\n newData.push(item = $.extend({}, item))\r\n \r\n layui.each(options.value, function(index2, item2){\r\n if(item2 == item.value){\r\n item.selected = true;\r\n }\r\n });\r\n callback && callback(item);\r\n });\r\n \r\n options.data = newData;\r\n return that;\r\n };\r\n \r\n // 获得右侧面板数据\r\n Class.prototype.getData = function(value){\r\n var that = this;\r\n var options = that.config;\r\n var selectedData = [];\r\n \r\n that.setValue();\r\n \r\n layui.each(value || options.value, function(index, item){\r\n layui.each(options.data, function(index2, item2){\r\n delete item2.selected;\r\n if(item == item2.value){\r\n selectedData.push(item2);\r\n };\r\n });\r\n });\r\n return selectedData;\r\n };\r\n\r\n // 执行穿梭\r\n Class.prototype.transfer = function (_index, elem) {\r\n var that = this;\r\n var options = that.config;\r\n var thisBoxElem = that.layBox.eq(_index);\r\n var arr = [];\r\n\r\n if (!elem) {\r\n // 通过按钮触发找到选中的进行移动\r\n thisBoxElem.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n\r\n thisDataElem.children('li').each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var isHide = thisElemCheckbox.data('hide');\r\n\r\n if(thisElemCheckbox[0].checked && !isHide){\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n }\r\n\r\n that.setValue();\r\n });\r\n });\r\n } else {\r\n // 双击单条记录移动\r\n var thisList = elem;\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n\r\n that.setValue();\r\n }\r\n\r\n that.renderCheckBtn();\r\n\r\n // 穿梭时,如果另外一个框正在搜索,则触发匹配\r\n var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')\r\n siblingInput.val() === '' || siblingInput.trigger('keyup');\r\n\r\n // 穿梭时的回调\r\n options.onchange && options.onchange(that.getData(arr), _index);\r\n }\r\n\r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右复选框\r\n that.elem.on('click', 'input[lay-filter=\"layTransferCheckbox\"]+', function(){ \r\n var thisElemCheckbox = $(this).prev();\r\n var checked = thisElemCheckbox[0].checked;\r\n var thisDataElem = thisElemCheckbox.parents('.'+ ELEM_BOX).eq(0).find('.'+ ELEM_DATA);\r\n \r\n if(thisElemCheckbox[0].disabled) return;\r\n \r\n // 判断是否全选\r\n if(thisElemCheckbox.attr('lay-type') === 'all'){\r\n thisDataElem.find('input[type=\"checkbox\"]').each(function(){\r\n if(this.disabled) return;\r\n this.checked = checked;\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.renderCheckBtn({stopNone: true});\r\n }, 0)\r\n });\r\n\r\n // 双击穿梭\r\n that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){\r\n var elemThis = $(this);\r\n var thisElemCheckbox = elemThis.children('input[type=\"checkbox\"]');\r\n var thisDataElem = elemThis.parent();\r\n var thisBoxElem = thisDataElem.parent();\r\n var index = thisBoxElem.data('index');\r\n\r\n if(thisElemCheckbox[0].disabled) return;\r\n\r\n // 根据 dblclick 回调函数返回值决定是否执行穿梭 --- 2.9.3+\r\n var ret = typeof options.dblclick === 'function' ? options.dblclick({\r\n elem: elemThis,\r\n data: that.getData([thisElemCheckbox[0].value])[0],\r\n index: index\r\n }) : null;\r\n\r\n if(ret === false) return;\r\n\r\n that.transfer(index, elemThis);\r\n })\r\n\r\n // 穿梭按钮事件\r\n that.layBtn.on('click', function(){\r\n var othis = $(this);\r\n var _index = othis.data('index');\r\n\r\n if(othis.hasClass(DISABLED)) return;\r\n that.transfer(_index);\r\n });\r\n \r\n // 搜索\r\n that.laySearch.find('input').on('keyup', function(){\r\n var value = this.value;\r\n var thisDataElem = $(this).parents('.'+ ELEM_SEARCH).eq(0).siblings('.'+ ELEM_DATA);\r\n var thisListElem = thisDataElem.children('li');\r\n\r\n thisListElem.each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var title = thisElemCheckbox[0].title;\r\n\r\n // 是否区分大小写\r\n if(options.showSearch !== 'cs'){\r\n title = title.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n\r\n var isMatch = title.indexOf(value) !== -1;\r\n\r\n thisList[isMatch ? 'removeClass': 'addClass'](HIDE);\r\n thisElemCheckbox.data('hide', isMatch ? false : true);\r\n });\r\n\r\n that.renderCheckBtn();\r\n \r\n // 无匹配数据视图\r\n var isNone = thisListElem.length === thisDataElem.children('li.'+ HIDE).length;\r\n that.noneView(thisDataElem, isNone ? options.text.searchNone : '');\r\n });\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n transfer.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的数据(右侧面板)\r\n transfer.getData = function(id){\r\n var that = thisModule.that[id];\r\n return that.getData();\r\n };\r\n\r\n // 核心入口\r\n transfer.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, transfer);\r\n});\r\n","/**\r\n * carousel 轮播模块\r\n * MIT Licensed \r\n */\r\n \r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // 外部接口\r\n var carousel = {\r\n config: {}, // 全局配置项\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 字符常量\r\n var MOD_NAME = 'carousel';\r\n var ELEM = '.layui-carousel';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled'\r\n \r\n var ELEM_ITEM = '>*[carousel-item]>*';\r\n var ELEM_LEFT = 'layui-carousel-left';\r\n var ELEM_RIGHT = 'layui-carousel-right';\r\n var ELEM_PREV = 'layui-carousel-prev';\r\n var ELEM_NEXT = 'layui-carousel-next';\r\n var ELEM_ARROW = 'layui-carousel-arrow';\r\n var ELEM_IND = 'layui-carousel-ind';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, carousel.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n width: '600px',\r\n height: '280px',\r\n full: false, // 是否全屏\r\n arrow: 'hover', // 切换箭头默认显示状态:hover/always/none\r\n indicator: 'inside', // 指示器位置:inside/outside/none\r\n autoplay: true, // 是否自动切换\r\n interval: 3000, // 自动切换的时间间隔,不能低于800ms\r\n anim: '', // 动画类型:default/updown/fade\r\n trigger: 'click', // 指示器的触发方式:click/hover\r\n index: 0 // 初始开始的索引\r\n };\r\n \r\n // 轮播渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n carousel.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n options.elem = $(options.elem);\r\n if(!options.elem[0]) return;\r\n that.elemItem = options.elem.find(ELEM_ITEM);\r\n \r\n if(options.index < 0) options.index = 0;\r\n if(options.index >= that.elemItem.length) options.index = that.elemItem.length - 1;\r\n if(options.interval < 800) options.interval = 800;\r\n\r\n // 是否全屏模式\r\n if(options.full){\r\n options.elem.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 9999\r\n });\r\n } else {\r\n options.elem.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n }\r\n \r\n options.elem.attr('lay-anim', options.anim);\r\n \r\n // 初始焦点状态\r\n that.elemItem.eq(options.index).addClass(THIS);\r\n\r\n // 指示器等动作\r\n if(that.elemItem.length <= 1) return;\r\n\r\n that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n that.events();\r\n };\r\n \r\n // 重置轮播\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n clearInterval(that.timer);\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n \r\n // 获取上一个等待条目的索引\r\n Class.prototype.prevIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevIndex = options.index - 1;\r\n\r\n if(prevIndex < 0){\r\n prevIndex = that.elemItem.length - 1;\r\n }\r\n\r\n return prevIndex;\r\n };\r\n \r\n // 获取下一个等待条目的索引\r\n Class.prototype.nextIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var nextIndex = options.index + 1;\r\n\r\n if(nextIndex >= that.elemItem.length){\r\n nextIndex = 0;\r\n }\r\n\r\n return nextIndex;\r\n };\r\n \r\n // 索引递增\r\n Class.prototype.addIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index + num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index >= that.elemItem.length){\r\n options.index = 0;\r\n }\r\n };\r\n \r\n // 索引递减\r\n Class.prototype.subIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index - num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index < 0){\r\n options.index = that.elemItem.length - 1;\r\n }\r\n };\r\n \r\n // 自动轮播\r\n Class.prototype.autoplay = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n };\r\n \r\n // 箭头\r\n Class.prototype.arrow = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplArrow = $([\r\n '',\r\n ''\r\n ].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-arrow', options.arrow);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_ARROW)[0]){\r\n options.elem.find('.'+ELEM_ARROW).remove();\r\n }\r\n options.elem.append(tplArrow);\r\n \r\n // 事件\r\n tplArrow.on('click', function(){\r\n var othis = $(this);\r\n var type = othis.attr('lay-type')\r\n that.slide(type);\r\n });\r\n };\r\n\r\n // 跳转到特定下标\r\n Class.prototype.goto = function(index){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(index > options.index){\r\n that.slide('add', index - options.index);\r\n } else if(index < options.index){\r\n that.slide('sub', options.index - index);\r\n }\r\n }\r\n \r\n // 指示器\r\n Class.prototype.indicator = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplInd = that.elemInd = $(['
                      ',\r\n function(){\r\n var li = [];\r\n layui.each(that.elemItem, function(index){\r\n li.push('');\r\n });\r\n return li.join('');\r\n }(),\r\n '
                    '].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-indicator', options.indicator);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_IND)[0]){\r\n options.elem.find('.'+ELEM_IND).remove();\r\n }\r\n options.elem.append(tplInd);\r\n \r\n if(options.anim === 'updown'){\r\n tplInd.css('margin-top', -(tplInd.height()/2));\r\n }\r\n \r\n // 事件\r\n tplInd.find('li').on(options.trigger === 'hover' ? 'mouseover' : options.trigger, function(){\r\n that.goto($(this).index());\r\n });\r\n };\r\n \r\n // 滑动切换\r\n Class.prototype.slide = function(type, num){\r\n var that = this;\r\n var elemItem = that.elemItem;\r\n var options = that.config;\r\n var thisIndex = options.index;\r\n var filter = options.elem.attr('lay-filter');\r\n \r\n if(that.haveSlide) return;\r\n \r\n // 滑动方向\r\n if(type === 'sub'){\r\n that.subIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_PREV);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(ELEM_RIGHT);\r\n }, 50);\r\n } else { // 默认递增滑\r\n that.addIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_NEXT);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_LEFT);\r\n elemItem.eq(options.index).addClass(ELEM_LEFT);\r\n }, 50); \r\n }\r\n \r\n // 移除过渡类\r\n setTimeout(function(){\r\n elemItem.removeClass(THIS + ' ' + ELEM_PREV + ' ' + ELEM_NEXT + ' ' + ELEM_LEFT + ' ' + ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(THIS);\r\n that.haveSlide = false; // 解锁\r\n }, 350);\r\n \r\n // 指示器焦点\r\n that.elemInd.find('li').eq(options.index).addClass(THIS)\r\n .siblings().removeClass(THIS);\r\n \r\n that.haveSlide = true;\r\n \r\n // 回调返回的参数\r\n var params = {\r\n index: options.index,\r\n prevIndex: thisIndex,\r\n item: elemItem.eq(options.index)\r\n };\r\n \r\n typeof options.change === 'function' && options.change(params);\r\n layui.event.call(this, MOD_NAME, 'change('+ filter +')', params);\r\n };\r\n \r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(options.elem.data('haveEvents')) return;\r\n \r\n // 移入移出容器\r\n options.elem.on('mouseenter touchstart', function(){\r\n if (that.config.autoplay === 'always') return;\r\n clearInterval(that.timer);\r\n }).on('mouseleave touchend', function(){\r\n if (that.config.autoplay === 'always') return;\r\n that.autoplay();\r\n });\r\n\r\n var touchEl = options.elem;\r\n var isVertical = options.anim === 'updown';\r\n lay.touchSwipe(touchEl, {\r\n onTouchEnd: function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var distance = isVertical ? state.distanceY : state.distanceX;\r\n var speed = distance / duration;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(distance) > touchEl[isVertical ? 'height' : 'width']() / 3;\r\n if(shouldSwipe){\r\n that.slide(distance > 0 ? '' : 'sub');\r\n }\r\n }\r\n })\r\n \r\n options.elem.data('haveEvents', true);\r\n };\r\n \r\n // 核心入口\r\n carousel.render = function(options){\r\n return new Class(options);\r\n };\r\n \r\n exports(MOD_NAME, carousel);\r\n});\r\n\r\n \r\n","/**\r\n * rate 评分评星组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'],function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.jquery;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var rate = {\r\n config: {},\r\n index: layui.rate ? (layui.rate.index + 10000) : 0,\r\n\r\n //设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n //事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n }\r\n\r\n // 操作当前实例\r\n var thisRate = function () {\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setvalue: function (value) {\r\n that.setvalue.call(that, value);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n //字符常量\r\n var MOD_NAME = 'rate';\r\n var ELEM_VIEW = 'layui-rate';\r\n var ICON_RATE = 'layui-icon-rate';\r\n var ICON_RATE_SOLID = 'layui-icon-rate-solid';\r\n var ICON_RATE_HALF = 'layui-icon-rate-half';\r\n var ICON_SOLID_HALF = 'layui-icon-rate-solid layui-icon-rate-half';\r\n var ICON_SOLID_RATE = 'layui-icon-rate-solid layui-icon-rate';\r\n var ICON_HALF_RATE = 'layui-icon-rate layui-icon-rate-half';\r\n\r\n //构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++rate.index;\r\n that.config = $.extend({}, that.config, rate.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n length: 5, //初始长度\r\n text: false, //是否显示评分等级\r\n readonly: false, //是否只读\r\n half: false, //是否可以半星\r\n value: 0, //星星选中个数\r\n theme: '' //主题颜色\r\n };\r\n\r\n //评分渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n rate.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 自定义主题\r\n var style = options.theme ? ('style=\"color: '+ options.theme + ';\"') : '';\r\n\r\n options.elem = $(options.elem);\r\n\r\n //最大值不能大于总长度\r\n if(options.value > options.length){\r\n options.value = options.length;\r\n }\r\n\r\n //如果没有选择半星的属性,却给了小数的数值,统一向上或向下取整\r\n if(parseInt(options.value) !== options.value){\r\n if(!options.half){\r\n options.value = (Math.ceil(options.value) - options.value) < 0.5 ? Math.ceil(options.value): Math.floor(options.value)\r\n }\r\n }\r\n\r\n //组件模板\r\n var temp = '
                      ';\r\n for(var i = 1;i <= options.length;i++){\r\n var item = '
                    • Math.floor(options.value)?ICON_RATE:ICON_RATE_SOLID)\r\n + '\" '+ style +'>
                    • ';\r\n\r\n if(options.half&&parseInt(options.value) !== options.value&&i == Math.ceil(options.value)){\r\n temp = temp + '
                    • ';\r\n }else{\r\n temp = temp +item;\r\n }\r\n }\r\n temp += '
                    ' + (options.text ? (''+ options.value + '星') : '') + '';\r\n\r\n //开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n\r\n that.elemTemp = $(temp);\r\n\r\n options.span = that.elemTemp.next('span');\r\n\r\n options.setText && options.setText(options.value);\r\n\r\n othis.html(that.elemTemp);\r\n\r\n othis.addClass(\"layui-inline\");\r\n\r\n //如果不是只读,那么进行触控事件\r\n if(!options.readonly) that.action();\r\n\r\n };\r\n\r\n //评分重置\r\n Class.prototype.setvalue = function(value){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.value = value ;\r\n that.render();\r\n };\r\n\r\n //li触控事件\r\n Class.prototype.action = function(){\r\n var that = this;\r\n var options = that.config;\r\n var _ul = that.elemTemp;\r\n var wide = _ul.find(\"i\").width();\r\n var liElems = _ul.children(\"li\");\r\n\r\n liElems.each(function(index){\r\n var ind = index + 1;\r\n var othis = $(this);\r\n\r\n //点击\r\n othis.on('click', function(e){\r\n //将当前点击li的索引值赋给value\r\n options.value = ind;\r\n if(options.half){\r\n //获取鼠标在li上的位置\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n options.value = options.value - 0.5;\r\n }\r\n }\r\n\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n });\r\n\r\n //移入\r\n othis.on('mousemove', function(e){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + ind + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n // 如果设置可选半星,那么判断鼠标相对li的位置\r\n if(options.half){\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n othis.children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID)\r\n }\r\n }\r\n })\r\n\r\n //移出\r\n othis.on('mouseleave', function(){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + Math.floor(options.value) + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n //如果设置可选半星,根据分数判断是否有半星\r\n if(options.half){\r\n if(parseInt(options.value) !== options.value){\r\n _ul.children(\"li:eq(\" + Math.floor(options.value) + \")\").children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_SOLID_RATE)\r\n }\r\n }\r\n })\r\n\r\n })\r\n\r\n lay.touchSwipe(_ul, {\r\n onTouchMove: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n var pageX = e.touches[0].pageX;\r\n var rateElemWidth = _ul.width();\r\n var itemElemWidth = rateElemWidth / options.length; // 单颗星的宽度\r\n var offsetX = pageX - _ul.offset().left;\r\n var num = offsetX / itemElemWidth; // 原始值\r\n var remainder = num % 1;\r\n var integer = num - remainder;\r\n\r\n // 最终值\r\n var score = remainder <= 0.5 && options.half ? integer + 0.5 : Math.ceil(num);\r\n if(score > options.length) score = options.length;\r\n if(score < 0) score = 0;\r\n\r\n liElems.each(function(index){\r\n var iconElem = $(this).children('i');\r\n var isActiveIcon = (Math.ceil(score) - index === 1);\r\n var needSelect = Math.ceil(score) > index;\r\n var shouldHalfIcon = (score - index === 0.5);\r\n\r\n if(needSelect){\r\n // 设置选中样式\r\n iconElem.addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE);\r\n if(options.half && shouldHalfIcon){\r\n iconElem.addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID);\r\n }\r\n }else{\r\n // 恢复初始样式\r\n iconElem.addClass(ICON_RATE).removeClass(ICON_SOLID_HALF);\r\n }\r\n\r\n // 设置缩放样式\r\n iconElem.toggleClass('layui-rate-hover', isActiveIcon);\r\n });\r\n\r\n // 更新最终值\r\n options.value = score;\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n options.setText && options.setText(options.value);\r\n },\r\n onTouchEnd: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n _ul.find('i').removeClass('layui-rate-hover');\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n }\r\n });\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function () {\r\n var that = this;\r\n //var options = that.config;\r\n };\r\n\r\n //核心入口\r\n rate.render = function(options){\r\n var inst = new Class(options);\r\n return thisRate.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, rate);\r\n})\r\n","/**\r\n * flow 流加载组件\r\n */\r\n\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$, Flow = function(options){}\r\n ,ELEM_MORE = 'layui-flow-more'\r\n ,ELEM_LOAD = '';\r\n\r\n //主方法\r\n Flow.prototype.load = function(options){\r\n var that = this, page = 0, lock, isOver, lazyimg, timer;\r\n options = options || {};\r\n\r\n var elem = $(options.elem); if(!elem[0]) return;\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var mb = options.mb || 50; //与底部的临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; //是否自动滚动加载\r\n var end = options.end || '没有更多了'; //“末页”显示文案\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '加载更多'\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem.append(more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n html = $(html);\r\n more.before(html);\r\n over = over == 0 ? true : null;\r\n over ? more.html(end) : more.find('a').html(ELEM_TEXT);\r\n isOver = over;\r\n lock = null;\r\n lazyimg && lazyimg();\r\n };\r\n\r\n //触发请求\r\n var done = function(){\r\n lock = true;\r\n more.find('a').html(ELEM_LOAD);\r\n typeof options.done === 'function' && options.done(++page, next);\r\n };\r\n\r\n done();\r\n\r\n //不自动滚动加载\r\n more.find('a').on('click', function(){\r\n var othis = $(this);\r\n if(isOver) return;\r\n lock || done();\r\n });\r\n\r\n //如果允许图片懒加载\r\n if(options.isLazyimg){\r\n lazyimg = that.lazyimg({\r\n elem: options.elem + ' img'\r\n ,scrollElem: options.scrollElem\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this), top = othis.scrollTop();\r\n\r\n if(timer) clearTimeout(timer);\r\n if(isOver || !elem.width()) return; //如果已经结束,或者元素处于隐藏状态,则不执行滚动加载\r\n\r\n timer = setTimeout(function(){\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? othis.height() : $(window).height();\r\n\r\n //计算滚动所在容器的实际高度\r\n var scrollHeight = notDocument\r\n ? othis.prop('scrollHeight')\r\n : document.documentElement.scrollHeight;\r\n\r\n //临界点\r\n if(scrollHeight - top - height <= mb){\r\n lock || done();\r\n }\r\n }, 100);\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //图片懒加载\r\n Flow.prototype.lazyimg = function(options){\r\n var that = this, index = 0, haveScroll;\r\n options = options || {};\r\n\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var elem = options.elem || 'img';\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //显示图片\r\n var show = function(item, height){\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n var elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n /* 始终只加载在当前屏范围内的图片 */\r\n if(elemTop >= start && elemTop <= end){\r\n if(item.attr('lay-src')){\r\n var src = item.attr('lay-src');\r\n layui.img(src, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.attr('src', src).removeAttr('lay-src');\r\n\r\n /* 当前图片加载就绪后,检测下一个图片是否在当前屏 */\r\n next[0] && render(next);\r\n index++;\r\n }, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.removeAttr('lay-src');\r\n });\r\n }\r\n }\r\n }, render = function(othis, scroll){\r\n\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? (scroll||scrollElem).height() : $(window).height();\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n\r\n that.lazyimg.elem = $(elem);\r\n\r\n if(othis){\r\n show(othis, height);\r\n } else {\r\n //计算未加载过的图片\r\n for(var i = 0; i < that.lazyimg.elem.length; i++){\r\n var item = that.lazyimg.elem.eq(i), elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n show(item, height);\r\n index = i;\r\n\r\n //如果图片的top坐标,超出了当前屏,则终止后续图片的遍历\r\n if(elemTop > end) break;\r\n }\r\n }\r\n };\r\n\r\n render();\r\n\r\n if(!haveScroll){\r\n var timer;\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this);\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(function(){\r\n render(null, othis);\r\n }, 50);\r\n });\r\n haveScroll = true;\r\n }\r\n return render;\r\n };\r\n\r\n //暴露接口\r\n exports('flow', new Flow());\r\n});\r\n","/**\r\n * code\r\n * Code 预览组件\r\n */\r\n\r\nlayui.define(['lay', 'util', 'element', 'form'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var util = layui.util;\r\n var element = layui.element;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var hint = layui.hint();\r\n\r\n // 常量\r\n var CONST = {\r\n ELEM_VIEW: 'layui-code-view',\r\n ELEM_TAB: 'layui-tab',\r\n ELEM_HEADER: 'layui-code-header',\r\n ELEM_FULL: 'layui-code-full',\r\n ELEM_PREVIEW: 'layui-code-preview',\r\n ELEM_ITEM: 'layui-code-item',\r\n ELEM_SHOW: 'layui-show',\r\n ELEM_LINE: 'layui-code-line',\r\n ELEM_LINE_NUM: 'layui-code-line-number',\r\n ELEM_LN_MODE: 'layui-code-ln-mode',\r\n CDDE_DATA_CLASS: 'LayuiCodeDataClass',\r\n LINE_RAW_WIDTH: 45, // 行号初始宽度,需与 css 保持一致\r\n };\r\n\r\n // 默认参数项\r\n var config = {\r\n elem: '', // 元素选择器\r\n about: '', // 代码栏右上角信息\r\n ln: true, // 代码区域是否显示行号\r\n header: false, // 是否显示代码栏头部区域\r\n encode: true, // 是否对 code 进行编码(若开启预览,则强制开启)\r\n copy: true, // 是否开启代码区域复制功能图标\r\n // 默认文本\r\n text: {\r\n code: util.escape(''),\r\n preview: 'Preview',\r\n },\r\n wordWrap: true, // 是否自动换行\r\n lang: 'text', // 指定语言类型\r\n highlighter: false, // 是否开启语法高亮,'hljs','prism','shiki'\r\n langMarker: false, // 代码区域是否显示语言类型标记\r\n };\r\n\r\n // 初始索引\r\n var codeIndex = layui.code ? (layui.code.index + 10000) : 0;\r\n\r\n // 去除尾部空格\r\n var trimEnd = function(str){\r\n return String(str).replace(/\\s+$/, '');\r\n }\r\n // 保留首行缩进\r\n var trim = function(str){\r\n return trimEnd(str).replace(/^\\n|\\n$/, '');\r\n };\r\n\r\n // export api\r\n exports('code', function(options, mode){\r\n options = $.extend(true, {}, config, options);\r\n\r\n // 返回对象\r\n var ret = {\r\n config: options,\r\n reload: function(opts) { // 重载\r\n layui.code(this.updateOptions(opts));\r\n },\r\n updateOptions: function(opts) { // 更新属性(选项)\r\n opts = opts || {};\r\n delete opts.elem;\r\n return $.extend(true, options, opts);\r\n },\r\n reloadCode: function(opts) { // 仅重载 code\r\n layui.code(this.updateOptions(opts), 'reloadCode');\r\n }\r\n };\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n // 是否正向渲染\r\n layui.each(options.obverse ? elem : elem.get().reverse(), function(){\r\n layui.code($.extend({}, options, {\r\n elem: this\r\n }), mode);\r\n });\r\n return ret;\r\n }\r\n\r\n // 目标元素是否存在\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return ret;\r\n\r\n // 合并属性上的参数,并兼容旧版本属性写法 lay-*\r\n $.extend(true, options, lay.options(othis[0]), function(obj){\r\n var attrs = ['title', 'height', 'encode', 'skin', 'about'];\r\n layui.each(attrs, function(i, attr){\r\n var value = othis.attr('lay-'+ attr);\r\n if(typeof value === 'string'){\r\n obj[attr] = value;\r\n }\r\n })\r\n return obj;\r\n }({}));\r\n\r\n // codeRender 需要关闭编码\r\n // 未使用 codeRender 时若开启了预览,则强制开启编码\r\n options.encode = (options.encode || options.preview) && !options.codeRender;\r\n\r\n // 获得初始 code\r\n options.code = options.code || function(){\r\n var arr = [];\r\n var textarea = othis.children('textarea');\r\n\r\n // 若内容放置在 textarea 中\r\n textarea.each(function(){\r\n arr.push(trim(this.value));\r\n });\r\n\r\n // 内容直接放置在元素外层\r\n if(arr.length === 0){\r\n arr.push(trim(othis.html()));\r\n }\r\n\r\n return arr.join('');\r\n }();\r\n\r\n // 创建 code 行结构\r\n var createCode = function(html) {\r\n // codeRender\r\n if(typeof options.codeRender === 'function') {\r\n html = options.codeRender(String(html), options);\r\n }\r\n\r\n // code 行\r\n var lines = String(html).split(/\\r?\\n/g);\r\n\r\n // 包裹 code 行结构\r\n html = $.map(lines, function(line, num) {\r\n return [\r\n '
                    ',\r\n (\r\n options.ln ? [\r\n '
                    ',\r\n (util.digit(num + 1) + '.'),\r\n '
                    ',\r\n ].join('') : ''\r\n ),\r\n '
                    ',\r\n (line || ' '),\r\n '
                    ',\r\n '
                    '\r\n ].join('');\r\n });\r\n\r\n return {\r\n lines: lines,\r\n html: html\r\n };\r\n };\r\n\r\n // 原始 code\r\n var rawCode = options.code;\r\n\r\n // 最终 code\r\n var finalCode = function(code) {\r\n return typeof options.codeParse === 'function' ?\r\n options.codeParse(code, options) :\r\n code;\r\n };\r\n\r\n // 仅重载 code\r\n if (mode === 'reloadCode') {\r\n return othis.children('.layui-code-wrap').html(\r\n createCode(finalCode(rawCode)).html\r\n ), ret;\r\n }\r\n\r\n // 自增索引\r\n var index = layui.code.index = ++codeIndex;\r\n othis.attr('lay-code-index', index);\r\n\r\n // 初始化 className\r\n var hasDataClass = CONST.CDDE_DATA_CLASS in othis.data();\r\n if (hasDataClass) {\r\n othis.attr('class', othis.data(CONST.CDDE_DATA_CLASS) || '');\r\n }\r\n\r\n // 记录初始 className\r\n if (!hasDataClass) {\r\n othis.data(CONST.CDDE_DATA_CLASS, othis.attr('class'));\r\n }\r\n\r\n // 工具栏\r\n var tools = {\r\n copy: {\r\n className: 'file-b',\r\n title: ['复制代码'],\r\n event: function(obj){\r\n var code = util.unescape(finalCode(options.code));\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\r\n\r\n typeof options.onCopy === 'function' && options.onCopy(code);\r\n }\r\n }\r\n };\r\n\r\n // 移除包裹结构\r\n var unwrap = (function fn() {\r\n var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);\r\n var elemTabHas = elemViewHas.children('.'+ CONST.ELEM_TAB);\r\n var elemPreviewViewHas = elemViewHas.children('.' + CONST.ELEM_ITEM +'-preview');\r\n\r\n // 移除旧结构\r\n elemTabHas.remove(); // 移除 tab\r\n elemPreviewViewHas.remove(); // 移除预览区域\r\n if (elemViewHas[0]) othis.unwrap(); // 移除外层容器\r\n\r\n return fn;\r\n })();\r\n\r\n // 是否开启预览\r\n if(options.preview){\r\n var FILTER_VALUE = 'LAY-CODE-DF-'+ index;\r\n var layout = options.layout || ['code', 'preview'];\r\n var isIframePreview = options.preview === 'iframe';\r\n\r\n // 追加 Tab 组件\r\n var elemView = $('
                    ');\r\n var elemTabView = $('
                    ');\r\n var elemHeaderView = $('
                    ');\r\n var elemPreviewView = $('
                    ');\r\n var elemToolbar = $('
                    ');\r\n\r\n\r\n if(options.id) elemView.attr('id', options.id);\r\n elemView.addClass(options.className);\r\n elemTabView.attr('lay-filter', FILTER_VALUE);\r\n\r\n // 标签头\r\n layui.each(layout, function(i, v){\r\n var li = $('
                  • ');\r\n if(i === 0) li.addClass('layui-this');\r\n li.html(options.text[v]);\r\n elemHeaderView.append(li);\r\n });\r\n\r\n // 工具栏\r\n $.extend(tools, {\r\n 'full': {\r\n className: 'screen-full',\r\n title: ['最大化显示', '还原显示'],\r\n event: function(obj){\r\n var el = obj.elem;\r\n var elemView = el.closest('.'+ CONST.ELEM_PREVIEW);\r\n var classNameFull = 'layui-icon-'+ this.className;\r\n var classNameRestore = 'layui-icon-screen-restore';\r\n var title = this.title;\r\n var htmlElem = $('html,body');\r\n var ELEM_SCROLLBAR_HIDE = 'layui-scrollbar-hide';\r\n\r\n if(el.hasClass(classNameFull)){\r\n elemView.addClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameFull).addClass(classNameRestore);\r\n el.attr('title', title[1]);\r\n htmlElem.addClass(ELEM_SCROLLBAR_HIDE);\r\n } else {\r\n elemView.removeClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameRestore).addClass(classNameFull);\r\n el.attr('title', title[0]);\r\n htmlElem.removeClass(ELEM_SCROLLBAR_HIDE);\r\n }\r\n }\r\n },\r\n 'window': {\r\n className: 'release',\r\n title: ['在新窗口预览'],\r\n event: function(obj){\r\n util.openWin({\r\n content: finalCode(options.code)\r\n });\r\n }\r\n }\r\n });\r\n\r\n // copy\r\n if(options.copy){\r\n if(layui.type(options.tools) === 'array'){\r\n // 若 copy 未存在于 tools 中,则追加到最前\r\n if(options.tools.indexOf('copy') === -1){\r\n options.tools.unshift('copy');\r\n }\r\n } else {\r\n options.tools = ['copy'];\r\n }\r\n }\r\n\r\n // 工具栏事件\r\n elemToolbar.on('click', '>i', function(){\r\n var oi = $(this);\r\n var type = oi.data('type');\r\n var parameters = {\r\n elem: oi,\r\n type: type,\r\n options: options, // 当前属性选项\r\n rawCode: options.code, // 原始 code\r\n finalCode: util.unescape(finalCode(options.code)) // 最终 code\r\n };\r\n\r\n // 内部 tools event\r\n tools[type] && typeof tools[type].event === 'function' && tools[type].event(parameters);\r\n\r\n // 外部 tools event\r\n typeof options.toolsEvent === 'function' && options.toolsEvent(parameters);\r\n });\r\n\r\n // 增加工具栏\r\n if (options.addTools && options.tools) {\r\n options.tools = [].concat(options.tools, options.addTools);\r\n }\r\n\r\n // 渲染工具栏\r\n layui.each(options.tools, function(i, v){\r\n var viso = typeof v === 'object'; // 若为 object 值,则可自定义更多属性\r\n var tool = viso ? v : (\r\n tools[v] || {\r\n className: v,\r\n title: [v]\r\n }\r\n );\r\n\r\n var className = tool.className || tool.type;\r\n var title = tool.title || [''];\r\n var type = viso ? ( tool.type || className ) : v;\r\n\r\n if (!type) return;\r\n\r\n // 若非内置 tool,则合并到 tools 中\r\n if (!tools[type]) {\r\n var obj = {};\r\n obj[type] = tool;\r\n $.extend(tools, obj);\r\n }\r\n\r\n elemToolbar.append(\r\n ''\r\n );\r\n });\r\n\r\n othis.addClass(CONST.ELEM_ITEM).wrap(elemView); // 包裹外层容器\r\n elemTabView.append(elemHeaderView); // 追加标签头\r\n options.tools && elemTabView.append(elemToolbar); // 追加工具栏\r\n othis.before(elemTabView); // 追加标签结构\r\n\r\n // 追加预览\r\n if(isIframePreview){\r\n elemPreviewView.html('');\r\n }\r\n\r\n // 执行预览\r\n var runPreview = function(thisItemBody){\r\n var iframe = thisItemBody.children('iframe')[0];\r\n\r\n // 是否 iframe 方式预览\r\n if(isIframePreview && iframe){\r\n iframe.srcdoc = finalCode(options.code);\r\n } else {\r\n thisItemBody.html(options.code);\r\n }\r\n\r\n // 当前实例预览完毕后的回调\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({\r\n container: thisItemBody,\r\n options: options,\r\n render: function(){\r\n form.render(thisItemBody.find('.layui-form'));\r\n element.render();\r\n }\r\n });\r\n },3);\r\n };\r\n\r\n if(layout[0] === 'preview'){\r\n elemPreviewView.addClass(CONST.ELEM_SHOW);\r\n othis.before(elemPreviewView);\r\n runPreview(elemPreviewView);\r\n } else {\r\n othis.addClass(CONST.ELEM_SHOW).after(elemPreviewView);\r\n }\r\n\r\n // 内容项初始化样式\r\n options.previewStyle = [options.style, options.previewStyle].join('');\r\n elemPreviewView.attr('style', options.previewStyle);\r\n\r\n // tab change\r\n element.on('tab('+ FILTER_VALUE +')', function(data){\r\n var $this = $(this);\r\n var thisElem = $(data.elem).closest('.'+ CONST.ELEM_PREVIEW);\r\n var elemItemBody = thisElem.find('.'+ CONST.ELEM_ITEM);\r\n var thisItemBody = elemItemBody.eq(data.index);\r\n\r\n elemItemBody.removeClass(CONST.ELEM_SHOW);\r\n thisItemBody.addClass(CONST.ELEM_SHOW);\r\n\r\n if($this.attr('lay-id') === 'preview'){\r\n runPreview(thisItemBody);\r\n }\r\n\r\n setCodeLayout();\r\n });\r\n }\r\n\r\n // 创建 code 容器\r\n var codeElem = $(''); // 此处的闭合标签是为了兼容 IE8\r\n\r\n // 添加主容器 className\r\n othis.addClass(function(arr) {\r\n if (!options.wordWrap) arr.push('layui-code-nowrap');\r\n return arr.join(' ')\r\n }(['layui-code-view layui-border-box']));\r\n\r\n // code 主题风格\r\n var theme = options.theme || options.skin;\r\n if (theme) {\r\n othis.removeClass('layui-code-theme-dark layui-code-theme-light');\r\n othis.addClass('layui-code-theme-'+ theme);\r\n }\r\n\r\n // 添加高亮必要的 className\r\n if (options.highlighter) {\r\n othis.addClass([\r\n options.highlighter,\r\n 'language-' + options.lang,\r\n 'layui-code-hl'\r\n ].join(' '));\r\n }\r\n\r\n // 获取 code 行结构\r\n var createCodeRst = createCode(\r\n options.encode ? util.escape(finalCode(rawCode)) : rawCode // 是否编码\r\n );\r\n var lines = createCodeRst.lines;\r\n\r\n // 插入 code\r\n othis.html(codeElem.html(createCodeRst.html));\r\n\r\n // 插入行号边栏\r\n if (options.ln) {\r\n othis.append('
                    ');\r\n }\r\n\r\n // 兼容旧版本 height 属性\r\n if (options.height) {\r\n codeElem.css('max-height', options.height);\r\n }\r\n\r\n // code 区域样式\r\n options.codeStyle = [options.style, options.codeStyle].join('');\r\n if (options.codeStyle) {\r\n codeElem.attr('style', function(i, val) {\r\n return (val || '') + options.codeStyle;\r\n });\r\n }\r\n\r\n // 动态设置样式\r\n var cssRules = [\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line{}',\r\n setValue: function(item, value) {\r\n item.style['padding-left'] = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line>.layui-code-line-number{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-ln-side{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n }\r\n ];\r\n\r\n // 生成初始 style 元素\r\n var styleElem = lay.style({\r\n target: othis[0],\r\n id: 'DF-code-'+ index,\r\n text: $.map($.map(cssRules, function(val){\r\n return val.selector;\r\n }), function(val, i) {\r\n return ['.layui-code-view[lay-code-index=\"'+ index + '\"]', val].join(' ');\r\n }).join('')\r\n })\r\n\r\n // 动态设置 code 布局\r\n var setCodeLayout = (function fn() {\r\n if (options.ln) {\r\n var multiLine = Math.floor(lines.length / 100);\r\n var lineElem = codeElem.children('.'+ CONST.ELEM_LINE);\r\n var width = lineElem.last().children('.'+ CONST.ELEM_LINE_NUM).outerWidth();\r\n\r\n othis.addClass(CONST.ELEM_LN_MODE);\r\n\r\n // 若超出 100 行\r\n if (multiLine && width > CONST.LINE_RAW_WIDTH) {\r\n lay.getStyleRules(styleElem, function(item, i) {\r\n try {\r\n cssRules[i].setValue(item, width);\r\n } catch(e) { }\r\n });\r\n }\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n // 创建 code header\r\n if (options.header) {\r\n var headerElem = $('
                    ');\r\n headerElem.html(options.title || options.text.code);\r\n othis.prepend(headerElem);\r\n }\r\n\r\n // 创建 code 区域固定条\r\n var elemFixbar = $('
                    ');\r\n\r\n // 若开启复制,且未开启预览,则单独生成复制图标\r\n if(options.copy && !options.preview){\r\n var copyElem = $(['',\r\n '',\r\n ''].join(''));\r\n\r\n // 点击复制\r\n copyElem.on('click', function(){\r\n tools.copy.event();\r\n });\r\n\r\n elemFixbar.append(copyElem);\r\n }\r\n\r\n // 创建 language marker\r\n if (options.langMarker) {\r\n elemFixbar.append('' + options.lang + '');\r\n }\r\n\r\n // 创建 about 自定义内容\r\n if (options.about) {\r\n elemFixbar.append(options.about);\r\n }\r\n\r\n // 生成 code fixbar\r\n othis.append(elemFixbar);\r\n\r\n // code 渲染完毕后的回调\r\n if (!options.preview) {\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({});\r\n },3);\r\n }\r\n\r\n // 所有实例渲染完毕后的回调\r\n if(options.elem.length === index + 1){\r\n typeof options.allDone === 'function' && options.allDone();\r\n }\r\n\r\n return ret;\r\n });\r\n});\r\n\r\n// 若为源码版,则自动加载该组件依赖的 css 文件\r\nif(!layui['layui.all']){\r\n layui.addcss('modules/code.css?v=6', 'skincodecss');\r\n}\r\n"]} \ No newline at end of file +{"version":3,"sources":["layui.js","modules/layui.all.js","modules/lay.js","modules/laytpl.js","modules/laypage.js","modules/laydate.js","modules/jquery.js","modules/layer.js","modules/util.js","modules/dropdown.js","modules/slider.js","modules/colorpicker.js","modules/element.js","modules/upload.js","modules/form.js","modules/table.js","modules/treeTable.js","modules/tree.js","modules/transfer.js","modules/carousel.js","modules/rate.js","modules/flow.js","modules/code.js"],"names":["win","jsPath","doc","document","config","modules","status","timeout","event","Layui","this","v","GLOBAL","LAYUI_GLOBAL","getPath","currentScript","src","js","scripts","last","length","i","readyState","dir","substring","lastIndexOf","error","msg","type","console","isOpera","opera","toString","builtin","lay","layer","laydate","laypage","laytpl","form","upload","dropdown","transfer","tree","table","treeTable","element","rate","colorpicker","slider","carousel","flow","util","code","jquery","all","layui.all","EV_REMOVE","prototype","cache","define","deps","factory","use","setApp","app","exports","layui","callback","apps","from","node","url","that","head","getElementsByTagName","item","jQuery","fn","on","each","index","splice","$","onScriptLoad","e","readyRegExp","navigator","platform","test","currentTarget","srcElement","removeChild","poll","onCallback","setTimeout","push","slice","apply","host","match","location","base","replace","createElement","async","charset","version","Date","getTime","appendChild","attachEvent","indexOf","addEventListener","disuse","isArray","getStyle","name","style","currentStyle","getComputedStyle","getPropertyValue","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","getAttribute","setAttribute","addcss","firename","modName","img","Image","complete","onload","onerror","options","key","o","clone","extend","router","hash","data","path","search","split","obj","pathname","_index","substr","settings","storage","localStorage","JSON","parse","value","remove","stringify","sessionData","sessionStorage","device","agent","userAgent","toLowerCase","getVersion","label","exp","RegExp","result","os","ie","ActiveXObject","weixin","android","ios","mobile","hint","_typeof","operand","String","Object","call","_isArray","len","callFn","sort","arr","desc","notClone","o1","o2","v1","v2","isNaN","isNum","reverse","stope","thisEvent","stopPropagation","cancelBubble","onevent","events","params","filter","eventName","filterName","_","off","debounce","func","wait","context","args","arguments","clearTimeout","throttle","cooldown","window","selector","Class","elem","querySelectorAll","Array","searchElement","fromIndex","rst","val","constructor","ai","target","digit","num","str","Math","pow","elemName","attr","hasScrollbar","body","scrollHeight","innerHeight","documentElement","clientHeight","getStyleRules","rules","sheet","styleSheet","cssRules","styleText","text","cssText","innerHTML","styleElem","find","append","position","opts","scrollArea","winArea","margin","left","top","rect1","clickType","rect","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","SYSTEM_RELOAD","othis","attrName","attrValue","Function","ev","errorText","join","isTopElem","topElems","matched","clipboard","writeText","legacyCopy","opacity","select","execCommand","done","err","then","passiveSupported","defineProperty","get","removeEventListener","touchEventsSupported","touchSwipe","state","onMove","onEnd","targetElem","pointerStart","x","y","pointerEnd","distanceX","distanceY","direction","timeStart","onStart","touches","passive","now","onTouchStart","preventDefault","abs","onTouchMove","onTouchEnd","__lay_touchswipe_cb_","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","undefined","thisKey","thisValue","width","height","removeAttr","html","parentNode","detachEvent","open","close","tool","escape","inner","source","template","tagExp","__","jss","jsse","tag","start","render","DISABLED","view","elemArr","countText","plate","groups","Number","layout","count","curr","limits","limit","pages","ceil","prev","next","views","page","pager","first","halve","floor","end","max","theme","def","limitTemplet","refresh","skip","skipText","jump","isskip","childs","btn","input","nodeName","keyCode","load","even","isLayui","ready","MOD_NAME","MOD_ID","weekStart","laydate_dir","set","thisModule","inst","content","reload","THIS","LIMIT_YEAR","ELEM_STATIC","ELEM_LIST","ELEM_SELECTED","ELEM_HINT","ELEM_PREV","ELEM_NEXT","ELEM_CONFIRM","ELEM_TIME_TEXT","ELEM_TIME_BTN","ELEM_PREVIEW","ELEM_SHADE","newThat","getThis","init","dateType","formatArr","format","isLeapYear","year","range","isInitValue","min","trigger","show","showBottom","isPreview","btns","lang","calendar","mark","holidays","zIndex","change","autoConfirm","shade","cn","weeks","time","timeTips","startTime","endTime","dateTips","month","tools","confirm","clear","invalidDate","formatError","preview","en","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","0-1-1","0-2-14","0-3-8","0-3-12","0-4-1","0-5-1","0-5-4","0-6-1","0-9-10","0-10-1","0-12-25","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","spanY","spanM","divContent","thead","theadTr","tr","insertRow","j","th","insertCell","insertBefore","ELEM_MAIN","title","shortcuts","btnSetting","dataset","timeBtn","dateTime","endState","listYM","checkDate","click","main","isPrimaryColor","thisElemDate","thisId","insertAdjacentHTML","changeEvent","renderAdditional","div","hinTimer","ms","getAsYM","Y","M","thisMaxDate","vals","arrDate","minMaxError","checkValid","getEndDate","initDate","startEnd","thisv","parseFloat","EYM","_i","_v","getDateTime","td","YMD","keys","idx","dayStr","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","setFullYear","getDay","index_","st","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","span","scroll","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","ym","closeList","choose","scrollTop","haveSpan","olElem","overflowY","touchAction","tips","elemBtn","elemPreview","color","thisTime","param","panelIndex","isChange","YM","dateTimeTemp","active","addSubYear","isYear","isMonth","prevYear","prevMonth","nextMonth","nextYear","header","layYM","layType","tagName","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","getInst","one","concat","amd","global","module","w","Error","noGlobal","deletedIds","class2type","hasOwn","hasOwnProperty","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","isArrayLike","isWindow","toArray","pushStack","elems","ret","merge","prevObject","map","eq","copyIsArray","copy","deep","isFunction","isPlainObject","expando","random","isReady","noop","isNumeric","realStringObj","isEmptyObject","nodeType","ownFirst","globalEval","trim","execScript","camelCase","string","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","unloadHandler","childNodes","els","seed","m","nid","nidselect","newSelector","newContext","ownerDocument","exec","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createPositionalPseudo","argument","matchIndexes","parent","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","innerText","elemLang","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","button","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","rparentsprev","charAt","parseHTML","guaranteedUnique","contents","sibling","targets","closest","l","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","contentWindow","readyList","rnotwhite","detach","completed","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","promise","always","deferred","fail","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","triggerHandler","doScroll","frameElement","doScrollCheck","inlineBlockNeedsLayout","container","zoom","deleteExpando","shrinkWrapBlocksVal","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","internalKey","isNode","toJSON","thisCache","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","shrinkWrapBlocks","pnum","rcssNum","cssExpand","isHidden","el","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","access","chainable","emptyGet","raw","bulk","rcheckableType","rtagName","rscriptType","rleadingWhitespace","nodeNames","createSafeFragment","safeFrag","createDocumentFragment","fragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","wrapMap","option","legend","area","col","_default","getAll","found","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","rhtml","rtbody","fixDefaultChecked","defaultChecked","buildFragment","selection","ignored","wrap","safe","nodes","htmlPrefilter","createTextNode","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","t","handleObjIn","special","eventHandle","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","handleObj","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","metaKey","original","which","charCode","eventDoc","fromElement","pageX","scrollLeft","clientLeft","pageY","clientTop","relatedTarget","toElement","blur","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","fragmentDiv","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","oldData","curData","domManip","collection","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","fixCloneNodeIssues","defaultSelected","forceAcceptData","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","pixelPositionVal","pixelMarginRightVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","reliableMarginLeftVal","rmargin","rnumnonpx","swap","old","computeStyleTests","divStyle","marginLeft","marginRight","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","getStyles","curCSS","rposition","addGetHookIf","conditionFn","hookFn","opener","computed","maxWidth","minWidth","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","rnumsplit","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","showHide","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","cssProps","float","origName","isFinite","$1","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","propHooks","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","tick","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","timer","anim","*","tweener","oldfire","dataShow","unqueued","overflow","overflowX","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","nodeHook","boolHook","ruseDefault","getSetInput","rfocusable","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rclickable","rclass","removeProp","tabindex","for","getClass","classes","clazz","finalValue","curValue","toggleClass","stateVal","classNames","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","rhash","requireNonComma","depth","comma","parseXML","DOMParser","parseFromString","loadXML","rts","rheaders","rnoContent","rprotocol","rurl","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxConvert","s","response","isSuccess","conv2","current","conv","converters","responseFields","dataFilter","filterHidden","lastModified","etag","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","firstDataType","ct","finalDataType","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","buildParams","serialize","serializeArray","xhr","createActiveXHR","documentMode","createStandardXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","scriptCharset","oldCallbacks","rjsonp","_load","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","getWindow","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","delegate","undelegate","size","andSelf","layer_dir","removeFocus","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","innerWidth","outerWidth","titHeight","outerHeight","btnHeight","setHeight","maxHeight","offsetTop","offsetLeft","layArea","goal","tipsG","guide","autoLeft","tipLeft","where","tipTop","padding-right","_DOC","DATA_NAME","resizeElem","dict","eventMoveElem","eventResizeElem","docEvent","setRig","setBot","X","stX","stY","moveOut","resizing","moveEnd","openLayer","IE6","shadeClose","full","reselect","sthis","setTop","record","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","contElem","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","isfix","closeAnim","WRAP","domsElem","closeLast","prompt","placeholder","formType","maxlength","tab","photos","loop","toolbar","imgIndex","pushData","alt","pid","thumb","imgprev","tabimg","imgnext","errorMsg","keyup","isNumber","getTransform","transforms","rotate","scaleX","touchEndCallback","imgElem","transform","ratio","delta","wheelDelta","detail","zoomElem","threshold","loadi","loadImage","winarea","imgarea","wh","_$","isMobile","_win","propSuffix","deliver","fixbar","elemTopBar","setTopBar","ELEM","$doc","$target","bars","default","$scroll","bar1","bar2","elemBar","lay-type","bgcolor","countdown","clock","countTime","d","h","setTime","timeAgo","onlyDate","stamp","toDateString","years","days","milliseconds","meridiem","getMilliseconds","customMeridiem","hm","yy","yyyy","MM","dd","H","HH","hh","A","mm","ss","SSS","unescape","openWin","specs","toVisibleArea","scrollElem","SCROLL_NAME","OFFSET_NAME","scrollValue","scrollOffset","thisOffset","thisElem","vertical","callbacks","attrSelector","DATANAME","dataCache","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX","customName","reloadData","STR_ELEM","STR_ITEM_UP","STR_ITEM_DOWN","STR_MENU_TITLE","STR_ITEM_GROUP","STR_ITEM_PARENT","STR_ITEM_CHECKED","STR_ITEM_CHECKED2","STR_MENU_PANEL","STR_MENU_PANEL_L","STR_ELEM_SHADE","STR_GROUP_TITLE","isAllowSpread","isSpreadItem","accordion","rerender","elemView","elemBody","getDefaultView","elemUl","eachItemView","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","delayRemove","prevElem","isClickAllScope","clickScope","elemGroup","spread","elemPrev","normalizedDelay","isMouseEnter","prevElemCallback","isAccordion","contentElem","needSpread","groupSibs","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","tipsAlways","minValue","maxValue","scaleFir","scaleSec","hasRender","elemTemp","number","setSliderTipsTxt","sliderWrapBtnElem","tipsTxt","setTips","calcSliderTipsLeft","sliderWidth","sliderWrap","setSliderTipsLeft","margin-bottom","elemInput","slide","sliderAct","sliderTxt","inputValue","offsetValue","round","arrValue","firLeft","valueTo","secLeft","wrapWidth","selfValue","oldLeft","elemMove","sliderBtnElem","up","upCall","oldleft","oldx","reaLeft","inputScale","getInputValue","realValue","ICON_PICKER_DOWN","ICON_PICKER_CLOSE","PICKER_TRIG_SPAN","PICKER_TRIG_I","PICKER_SIDE_SLIDER","PICKER_BASIS","PICKER_ALPHA_BG","PICKER_ALPHA_SLIDER","PICKER_BASIS_CUR","PICKER_INPUT","RGBToHSB","rgb","hsb","r","g","HSBToRGB","t1","t3","t2","HSBToHEX","hex","nr","RGBSTo","rgbs","re","$win","alpha","predefine","colors","elemColorBox","bgstr","background","renderPicker","elemPicker","removePicker","thisElemInd","thisColor","pickerEvents","bindElem","elemPickerInput","backgroundColor","side","basis","alphacolor","alphaslider","_h","_b","_s","_a","pre","z","createMoveElem","oldtop","oldy","maxh","maxw","eventType","simulatedEvent","pointer","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","sidetop","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","tabChange","tabAuto","tabDelete","layid","liElem","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","MORE","BAR","CLOSE","STOPE","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","force","field","acceptMime","drag","multiple","cross-domain","data-format-error","check-error","limit-number","limit-size","elemFile","isFile","initIE","elemForm","FileReader","chooseFiles","reader","readAsDataURL","limitSize","getFiles","ajaxSend","successful","failed","allDone","fileLength","total","request","sets","formData","FormData","resetFileState","unified","res","lengthComputable","loaded","iframeSend","iframeBody","thisFile","pushFile","resetFile","filename","newFile","File","typeName","images","video","audio","toFixed","setChooseFile","setChooseText","dataTransfer","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","precision","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","isShow","thatInput","TIPS","NONE","initValue","selects","reElem","isSearch","nearElem","laySearch","showDown","hideDown","followScroll","notOption","dl","dds","dts","dlHeight","none","posTop","thisDd","ddHeight","setThisDd","prevNext","thisElem1","showDd","firstIndex","cacheNearElem","nearDd","origin","thisDds","eventsType","optionsFirst","switch","SUBTRA","checks","RE_CLASS","indeterminate","ICON","radios","ANIM","forms","sameRadio","renderItem","itemType","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","$dom","checkName","indexName","numbersName","disabledName","thisTable","setColsWidth","getThisTable","getThisTableConfig","parseTempData","item3","tplData","exportTemplet","LAY_COL","HIDE_V","ELEM_VIEW","ELEM_HEADER","ELEM_BODY","ELEM_FIXR","ELEM_PAGE_VIEW","ELEM_SORT","ELEM_CHECKED","ELEM_EDIT","ELEM_GROUP","ELEM_COL_SPECIAL","ELEM_TOOL_PANEL","ELEM_EXPAND","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","loading","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","customHeightFunc","lay-filter","lay-id","renderStyle","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","leftDefaultTemp","elemToolTemp","toolbarHtml","layEvent","print","iconElem","thisItem","pagebarHtml","layPagebar","pagebar","setParentCol","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","getEndTh","colNums","autoColNums","autoWidth","countWidth","cntrWidth","getAutoWidth","eachCols","getScrollWidth","back","patchNums","i3","headerWidth","scrollPatch","haveInit","HAS_SET_COLS_PATCH","errorView","elemNone","layNone","syncCheckAll","renderForm","startLimit","initSort","reloadType","renderData","totalRow","parseData","newData","getTrHtml","trsObj","trs","trs_fixed","trs_fixed_r","tds_fixed","tds_fixed_r","LAY_KEY","edit","trAttr","totalRowData","sortKey","pull","scrollPos","tipsIndex","renderTotal","totalNums","dataTotal","TOTAL_NUMS","totalRowDecimals","thisTotalNum","totalRowText","getContent","TOTAL_ROW","patchElem","getColElem","renderFormByElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","isCheckAll","isCheckMult","dataIndex","thisData","existChecked","getChecked","checkedElem","currTr","checkedSameElem","fixRElem","_field","elemSort","fromEvent","layInit","selectorText","headerMain","thIndex","thElem","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","updateRow","ELEM_CELL","row","cell","_BODY","commonMember","lis","openPanel","panel","fieldTitle","exportFile","printWin","edg","onafterprint","oLeft","pLeft","allowResize","ruleWidth","thatTable","setWidth","nowType","clearCacheKey","del","update","fields","setRowEvent","getCol","UNROW","renderGridEdit","editType","ELEM_GRID_DOWN","oldValue","reedit","showGridExpandIcon","elemCell","gridExpand","expandedMode","ELEM_CELL_C","elemCellClose","cellExpandedMode","expandedWidth","cellExpandedWidth","$this","toolFn","errorTips","tdIndex","attrData","tableData","trElem","itemData","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","nums","invalidNum","getData","dataTitle","dataMain","fieldsIsHide","textType","csv","xls","alink","reduce","acc","ignoreExport","download","getOptions","hideCol","thisTreeTable","ELEM_FIXL","TABLE_TREE","LAY_DATA_INDEX","LAY_DATA_INDEX_HISTORY","LAY_PARENT_INDEX","LAY_CHECKBOX_HALF","LAY_EXPAND","LAY_HAS_EXPANDED","LAY_ASYNC_STATUS","LAY_CASCADE","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","pIdKey","idTemp","pidTemp","tableId","flatArr","k","treeToFlat","parentId","parentIndex","flat","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","newValue","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","array","asyncSuccessFn","asyncContentType","asyncDataType","asyncJsonpCallback","asyncHeaders","asyncParseData","asyncResponse","str2","str2Obj","dataLevelNew","asyncSetting","asyncUrl","asyncAutoParam","itemArr","asyncType","childItem","data-index","lay-data-index","data-level","childNodesFlat","formatNumber","inherit","expandAll","isAllAsyncDone","isAllExpanded","trAll","trAllObj","dataItem","dataLevel","level","treeOptionsView","dataExpand","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","delNodesFlat","delNode","nodeP","updateCheckStatus","i4","item4","addNodes","newNodes","childKey","childrenNodes","dataAfter","childrenNodesFlat","pageOptions","newNodesHtml","newNodesHtmlObj","trIndexPrev","newNodeIndex","newNodeItem","tableViewElemMAIN","tableViewElemFIXL","tableViewElemFIXR","trIndexNext","scrollIntoViewIfNeeded","includeHalfCheck","checkedData","updateData","setRowCheckedClass","dataP","trsP","isIndeterminate","updateParentCheckStatus","indexP","itemP","checkboxElem","checkedNum","inputElem","isRadio","triggerEvent","trDataP","radioElem","collectNeedExpandNodeIndex","needExpandIndex","nodeData","checkAllNodes","reloadAsyncNode","dataId","getNodesByFilter","isSingle","nodesResult","ELEM_SET","ICON_CLICK","ICON_ADD","ICON_SUB","ELEM_ENTRY","ELEM_TEXT","ELEM_PACK","ELEM_SPREAD","ELEM_LINE_SHORT","ELEM_SHOW","ELEM_EXTEND","showCheckbox","showLine","onlyIconControl","defaultNodeName","checkids","editIcon","hasChild","packDiv","entryDiv","checkClick","operate","entry","elemCheckbox","elemText","touchOpen","packCont","iconClick","updateFieldValue","sibls","setCheckbox","setParentsChecked","thisNodeElem","parentNodeElem","parentCheckbox","parentPack","oncheck","getVal","returnObj","textNew","elemDel","pare","siblingTree","checkState","parentTree","prevDiv","pack","onsearch","checkId","checkData","eachNodes","index2","cloneItem","checkedId","reInput","ELEM_BOX","ELEM_SEARCH","ELEM_DATA","TPL_BOX","checkAllName","showSearch","searchNone","layData","layBtn","listElem","renderCheckBtn","thisDataElem","allElemCheckbox","listElemCheckbox","haveChecked","isHide","stopNone","noneView","createNoneElem","selectedData","thisElemCheckbox","thisBoxElem","siblingInput","thisList","onchange","elemThis","dblclick","thisListElem","isMatch","ELEM_LEFT","ELEM_RIGHT","ELEM_ARROW","ELEM_IND","arrow","indicator","autoplay","elemItem","prevIndex","nextIndex","addIndex","subIndex","tplArrow","goto","tplInd","elemInd","thisIndex","haveSlide","touchEl","isVertical","distance","ICON_RATE","ICON_RATE_SOLID","ICON_RATE_HALF","ICON_SOLID_HALF","ICON_HALF_RATE","readonly","half","setText","action","setvalue","_ul","wide","liElems","ind","score","itemElemWidth","remainder","isActiveIcon","needSelect","shouldHalfIcon","Flow","isOver","lazyimg","mb","isAuto","notDocument","more","over","isLazyimg","elemTop","CONST","ELEM_TAB","ELEM_FULL","ELEM_ITEM","ELEM_LINE","ELEM_LINE_NUM","ELEM_LN_MODE","CDDE_DATA_CLASS","LINE_RAW_WIDTH","about","ln","encode","wordWrap","highlighter","langMarker","codeIndex","mode","rawCode","finalCode","isIframePreview","elemHeaderView","elemToolbar","runPreview","codeElem","createCodeRst","lines","setCodeLayout","elemFixbar","copyElem","reloadCode","obverse","codeRender","createCode","line","codeParse","hasDataClass","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemTabView","elemPreviewView","classNameFull","classNameRestore","htmlElem","ELEM_SCROLLBAR_HIDE","oi","parameters","toolsEvent","addTools","viso","thisItemBody","srcdoc","previewStyle","elemItemBody","codeStyle","multiLine"],"mappings":"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","file":"layui.js","sourcesContent":["/**\n * Layui\n * Classic modular front-end UI library\n * MIT Licensed\n */\n\n;!function(win){\n \"use strict\";\n\n var doc = win.document;\n var config = {\n modules: {}, // 模块物理路径\n status: {}, // 模块加载状态\n timeout: 10, // 符合规范的模块请求最长等待秒数\n event: {} // 模块自定义事件\n };\n\n var Layui = function(){\n this.v = '2.9.4'; // Layui 版本号\n };\n\n // 识别预先可能定义的指定全局对象\n var GLOBAL = win.LAYUI_GLOBAL || {};\n\n // 获取 layui 所在目录\n var getPath = function(){\n var jsPath = doc.currentScript ? doc.currentScript.src : function(){\n var js = doc.scripts;\n var last = js.length - 1;\n var src;\n for(var i = last; i > 0; i--){\n if(js[i].readyState === 'interactive'){\n src = js[i].src;\n break;\n }\n }\n return src || js[last].src;\n }();\n\n return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);\n }();\n\n // 异常提示\n var error = function(msg, type){\n type = type || 'log';\n win.console && console[type] && console[type]('layui error hint: ' + msg);\n };\n\n var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';\n\n // 内置模块\n var modules = config.builtin = {\n lay: 'lay', // 基础 DOM 操作\n layer: 'layer', // 弹层\n laydate: 'laydate', // 日期\n laypage: 'laypage', // 分页\n laytpl: 'laytpl', // 模板引擎\n form: 'form', // 表单集\n upload: 'upload', // 上传\n dropdown: 'dropdown', // 下拉菜单\n transfer: 'transfer', // 穿梭框\n tree: 'tree', // 树结构\n table: 'table', // 表格\n treeTable: 'treeTable', // 树表\n element: 'element', // 常用元素操作\n rate: 'rate', // 评分组件\n colorpicker: 'colorpicker', // 颜色选择器\n slider: 'slider', // 滑块\n carousel: 'carousel', // 轮播\n flow: 'flow', // 流加载\n util: 'util', // 工具块\n code: 'code', // 代码修饰器\n jquery: 'jquery', // DOM 库(第三方)\n\n all: 'all',\n 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)\n };\n\n // 记录基础数据\n Layui.prototype.cache = config;\n\n // 定义模块\n Layui.prototype.define = function(deps, factory){\n var that = this;\n var type = typeof deps === 'function';\n var callback = function(){\n var setApp = function(app, exports){\n layui[app] = exports;\n config.status[app] = true;\n };\n typeof factory === 'function' && factory(function(app, exports){\n setApp(app, exports);\n config.callback[app] = function(){\n factory(setApp);\n }\n });\n return this;\n };\n\n type && (\n factory = deps,\n deps = []\n );\n\n that.use(deps, callback, null, 'define');\n return that;\n };\n\n // 使用特定模块\n Layui.prototype.use = function(apps, callback, exports, from){\n var that = this;\n var dir = config.dir = config.dir ? config.dir : getPath;\n var head = doc.getElementsByTagName('head')[0];\n\n apps = function(){\n if(typeof apps === 'string'){\n return [apps];\n }\n // 当第一个参数为 function 时,则自动加载所有内置模块,且执行的回调即为该 function 参数;\n else if(typeof apps === 'function'){\n callback = apps;\n return ['all'];\n }\n return apps;\n }();\n\n // 如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery,则不加载内部 jquery 模块\n if(win.jQuery && jQuery.fn.on){\n that.each(apps, function(index, item){\n if(item === 'jquery'){\n apps.splice(index, 1);\n }\n });\n layui.jquery = layui.$ = jQuery;\n }\n\n var item = apps[0];\n var timeout = 0;\n\n exports = exports || [];\n\n // 静态资源host\n config.host = config.host || (dir.match(/\\/\\/([\\s\\S]+?)\\//)||['//'+ location.host +'/'])[0];\n\n // 加载完毕\n function onScriptLoad(e, url){\n var readyRegExp = navigator.platform === 'PLaySTATION 3' ? /^complete$/ : /^(complete|loaded)$/\n if (e.type === 'load' || (readyRegExp.test((e.currentTarget || e.srcElement).readyState))) {\n config.modules[item] = url;\n head.removeChild(node);\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n config.status[item] ? onCallback() : setTimeout(poll, 4);\n }());\n }\n }\n\n // 回调\n function onCallback(){\n exports.push(layui[item]);\n apps.length > 1 ?\n that.use(apps.slice(1), callback, exports, from)\n : ( typeof callback === 'function' && function(){\n // 保证文档加载完毕再执行回调\n if(layui.jquery && typeof layui.jquery === 'function' && from !== 'define'){\n return layui.jquery(function(){\n callback.apply(layui, exports);\n });\n }\n callback.apply(layui, exports);\n }() );\n }\n\n // 如果引入了聚合板,内置的模块则不必重复加载\n if( apps.length === 0 || (layui['layui.all'] && modules[item]) ){\n return onCallback(), that;\n }\n\n /*\n * 获取加载的模块 URL\n * 如果是内置模块,则按照 dir 参数拼接模块路径\n * 如果是扩展模块,则判断模块路径值是否为 {/} 开头,\n * 如果路径值是 {/} 开头,则模块路径即为后面紧跟的字符。\n * 否则,则按照 base 参数拼接模块路径\n */\n\n var url = ( modules[item] ? (dir + 'modules/')\n : (/^\\{\\/\\}/.test(that.modules[item]) ? '' : (config.base || ''))\n ) + (that.modules[item] || item) + '.js';\n url = url.replace(/^\\{\\/\\}/, '');\n\n // 如果扩展模块(即:非内置模块)对象已经存在,则不必再加载\n if(!config.modules[item] && layui[item]){\n config.modules[item] = url; // 并记录起该扩展模块的 url\n }\n\n // 首次加载模块\n if(!config.modules[item]){\n var node = doc.createElement('script');\n\n node.async = true;\n node.charset = 'utf-8';\n node.src = url + function(){\n var version = config.version === true\n ? (config.v || (new Date()).getTime())\n : (config.version||'');\n return version ? ('?v=' + version) : '';\n }();\n\n head.appendChild(node);\n\n if(node.attachEvent && !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && !isOpera){\n node.attachEvent('onreadystatechange', function(e){\n onScriptLoad(e, url);\n });\n } else {\n node.addEventListener('load', function(e){\n onScriptLoad(e, url);\n }, false);\n }\n\n config.modules[item] = url;\n } else { // 缓存\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n (typeof config.modules[item] === 'string' && config.status[item])\n ? onCallback()\n : setTimeout(poll, 4);\n }());\n }\n\n return that;\n };\n\n // 弃用原有的指定模块,以便重新扩展新的同名模块\n Layui.prototype.disuse = function(apps){\n var that = this;\n apps = that.isArray(apps) ? apps : [apps];\n that.each(apps, function (index, item) {\n if (!config.status[item]) {\n // return error('module ' + item + ' is not exist');\n }\n delete that[item];\n delete modules[item];\n delete that.modules[item];\n delete config.status[item];\n delete config.modules[item];\n });\n return that;\n };\n\n // 获取节点的 style 属性值\n Layui.prototype.getStyle = function(node, name){\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\n return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);\n };\n\n // css 外部加载器\n Layui.prototype.link = function(href, fn, cssname){\n var that = this;\n var head = doc.getElementsByTagName('head')[0];\n var link = doc.createElement('link');\n\n if(typeof fn === 'string') cssname = fn;\n\n var app = (cssname || href).replace(/\\.|\\//g, '');\n var id = 'layuicss-'+ app;\n var STAUTS_NAME = 'creating';\n var timeout = 0;\n\n link.href = href + (config.debug ? '?v='+new Date().getTime() : '');\n link.rel = 'stylesheet';\n link.id = id;\n link.media = 'all';\n\n if(!doc.getElementById(id)){\n head.appendChild(link);\n }\n\n if(typeof fn !== 'function') return that;\n\n // 轮询 css 是否加载完毕\n (function poll(status) {\n var delay = 100;\n var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素\n\n // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范\n if(++timeout > config.timeout * 1000 / delay){\n return error(href + ' timeout');\n }\n\n // css 加载就绪\n if(parseInt(that.getStyle(getLinkElem, 'width')) === 1989){\n // 如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态\n if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');\n // 如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调\n getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();\n } else {\n getLinkElem.setAttribute('lay-status', STAUTS_NAME);\n setTimeout(function(){\n poll(STAUTS_NAME);\n }, delay);\n }\n }());\n\n // 轮询css是否加载完毕\n /*\n (function poll() {\n if(++timeout > config.timeout * 1000 / 100){\n return error(href + ' timeout');\n };\n parseInt(that.getStyle(doc.getElementById(id), 'width')) === 1989 ? function(){\n fn();\n }() : setTimeout(poll, 100);\n }());\n */\n\n return that;\n };\n\n // css 内部加载器\n Layui.prototype.addcss = function(firename, fn, cssname){\n return layui.link(config.dir + 'css/' + firename, fn, cssname);\n };\n\n // 存储模块的回调\n config.callback = {};\n\n // 重新执行模块的工厂函数\n Layui.prototype.factory = function(modName){\n if(layui[modName]){\n return typeof config.callback[modName] === 'function'\n ? config.callback[modName]\n : null;\n }\n };\n\n // 图片预加载\n Layui.prototype.img = function(url, callback, error) {\n var img = new Image();\n img.src = url;\n if(img.complete){\n return callback(img);\n }\n img.onload = function(){\n img.onload = null;\n typeof callback === 'function' && callback(img);\n };\n img.onerror = function(e){\n img.onerror = null;\n typeof error === 'function' && error(e);\n };\n };\n\n // 全局配置\n Layui.prototype.config = function(options){\n options = options || {};\n for(var key in options){\n config[key] = options[key];\n }\n return this;\n };\n\n // 记录全部模块\n Layui.prototype.modules = function(){\n var clone = {};\n for(var o in modules){\n clone[o] = modules[o];\n }\n return clone;\n }();\n\n // 拓展模块\n Layui.prototype.extend = function(options){\n var that = this;\n\n // 验证模块是否被占用\n options = options || {};\n for(var o in options){\n if(that[o] || that.modules[o]){\n error(o+ ' Module already exists', 'error');\n } else {\n that.modules[o] = options[o];\n }\n }\n\n return that;\n };\n\n // location.hash 路由解析\n Layui.prototype.router = Layui.prototype.hash = function(hash){\n var that = this;\n var hash = hash || location.hash;\n var data = {\n path: [],\n search: {},\n hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''\n };\n\n if(!/^#\\//.test(hash)) return data; // 禁止非路由规范\n\n hash = hash.replace(/^#\\//, '');\n data.href = '/' + hash;\n hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];\n\n // 提取 Hash 结构\n that.each(hash, function(index, item){\n /^\\w+=/.test(item) ? function(){\n item = item.split('=');\n data.search[item[0]] = item[1];\n }() : data.path.push(item);\n });\n\n return data;\n };\n\n // URL 解析\n Layui.prototype.url = function(href){\n var that = this;\n var data = {\n // 提取 url 路径\n pathname: function(){\n var pathname = href\n ? function(){\n var str = (href.match(/\\.[^.]+?\\/.+/) || [])[0] || '';\n return str.replace(/^[^\\/]+/, '').replace(/\\?.+/, '');\n }()\n : location.pathname;\n return pathname.replace(/^\\//, '').split('/');\n }(),\n\n // 提取 url 参数\n search: function(){\n var obj = {};\n var search = (href\n ? function(){\n var str = (href.match(/\\?.+/) || [])[0] || '';\n return str.replace(/\\#.+/, '');\n }()\n : location.search\n ).replace(/^\\?+/, '').split('&'); // 去除 ?,按 & 分割参数\n\n // 遍历分割后的参数\n that.each(search, function(index, item){\n var _index = item.indexOf('=')\n ,key = function(){ // 提取 key\n if(_index < 0){\n return item.substr(0, item.length);\n } else if(_index === 0){\n return false;\n } else {\n return item.substr(0, _index);\n }\n }();\n // 提取 value\n if(key){\n obj[key] = _index > 0 ? item.substr(_index + 1) : null;\n }\n });\n\n return obj;\n }(),\n\n // 提取 Hash\n hash: that.router(function(){\n return href\n ? ((href.match(/#.+/) || [])[0] || '/')\n : location.hash;\n }())\n };\n\n return data;\n };\n\n // 本地持久存储\n Layui.prototype.data = function(table, settings, storage){\n table = table || 'layui';\n storage = storage || localStorage;\n\n if(!win.JSON || !win.JSON.parse) return;\n\n // 如果 settings 为 null,则删除表\n if(settings === null){\n return delete storage[table];\n }\n\n settings = typeof settings === 'object'\n ? settings\n : {key: settings};\n\n try {\n var data = JSON.parse(storage[table]);\n } catch(e) {\n var data = {};\n }\n\n if('value' in settings) data[settings.key] = settings.value;\n if(settings.remove) delete data[settings.key];\n storage[table] = JSON.stringify(data);\n\n return settings.key ? data[settings.key] : data;\n };\n\n // 本地临时存储\n Layui.prototype.sessionData = function(table, settings){\n return this.data(table, settings, sessionStorage);\n }\n\n // 设备信息\n Layui.prototype.device = function(key){\n var agent = navigator.userAgent.toLowerCase();\n\n // 获取版本号\n var getVersion = function(label){\n var exp = new RegExp(label + '/([^\\\\s\\\\_\\\\-]+)');\n label = (agent.match(exp)||[])[1];\n return label || false;\n };\n\n // 返回结果集\n var result = {\n os: function(){ // 底层操作系统\n if(/windows/.test(agent)){\n return 'windows';\n } else if(/linux/.test(agent)){\n return 'linux';\n } else if(/iphone|ipod|ipad|ios/.test(agent)){\n return 'ios';\n } else if(/mac/.test(agent)){\n return 'mac';\n }\n }(),\n ie: function(){ // ie 版本\n return (!!win.ActiveXObject || \"ActiveXObject\" in win) ? (\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\n ) : false;\n }(),\n weixin: getVersion('micromessenger') // 是否微信\n };\n\n // 任意的 key\n if(key && !result[key]){\n result[key] = getVersion(key);\n }\n\n // 移动设备\n result.android = /android/.test(agent);\n result.ios = result.os === 'ios';\n result.mobile = (result.android || result.ios);\n\n return result;\n };\n\n // 提示\n Layui.prototype.hint = function(){\n return {\n error: error\n };\n };\n\n // typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…\n Layui.prototype._typeof = Layui.prototype.type = function(operand){\n if(operand === null) return String(operand);\n\n // 细分引用类型\n return (typeof operand === 'object' || typeof operand === 'function') ? function(){\n var type = Object.prototype.toString.call(operand).match(/\\s(.+)\\]$/) || []; // 匹配类型字符\n var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符\n\n type = type[1] || 'Object';\n\n // 除匹配到的类型外,其他对象均返回 object\n return new RegExp('\\\\b('+ classType + ')\\\\b').test(type)\n ? type.toLowerCase()\n : 'object';\n }() : typeof operand;\n };\n\n // 对象是否具备数组结构(此处为兼容 jQuery 对象)\n Layui.prototype._isArray = Layui.prototype.isArray = function(obj){\n var that = this;\n var len;\n var type = that.type(obj);\n\n if(!obj || (typeof obj !== 'object') || obj === win) return false;\n\n len = 'length' in obj && obj.length; // 兼容 ie\n return type === 'array' || len === 0 || (\n typeof len === 'number' && len > 0 && (len - 1) in obj // 兼容 jQuery 对象\n );\n };\n\n // 遍历\n Layui.prototype.each = function(obj, fn){\n var key;\n var that = this;\n var callFn = function(key, obj){ // 回调\n return fn.call(obj[key], key, obj[key])\n };\n\n if(typeof fn !== 'function') return that;\n obj = obj || [];\n\n // 优先处理数组结构\n if(that.isArray(obj)){\n for(key = 0; key < obj.length; key++){\n if(callFn(key, obj)) break;\n }\n } else {\n for(key in obj){\n if(callFn(key, obj)) break;\n }\n }\n\n return that;\n };\n\n // 将数组中的成员对象按照某个 key 的 value 值进行排序\n Layui.prototype.sort = function(arr, key, desc, notClone){\n var that = this;\n var clone = notClone ? (arr || []) : JSON.parse(\n JSON.stringify(arr || [])\n );\n\n // 若未传入 key,则直接返回原对象\n if(that.type(arr) === 'object' && !key){\n return clone;\n } else if(typeof arr !== 'object'){ // 若 arr 非对象\n return [clone];\n }\n\n // 开始排序\n clone.sort(function(o1, o2){\n var v1 = o1[key];\n var v2 = o2[key];\n\n /*\n * 特殊数据\n * 若比较的成员均非对象\n */\n\n // 若比较的成员均为数字\n if(!isNaN(o1) && !isNaN(o2)) return o1 - o2;\n // 若比较的成员只存在某一个非对象\n if(!isNaN(o1) && isNaN(o2)){\n if(key && typeof o2 === 'object'){\n v1 = o1;\n } else {\n return -1;\n }\n } else if (isNaN(o1) && !isNaN(o2)){\n if(key && typeof o1 === 'object'){\n v2 = o2;\n } else {\n return 1;\n }\n }\n\n /*\n * 正常数据\n * 即成员均为对象,也传入了对比依据: key\n * 若 value 为数字,按「大小」排序;若 value 非数字,则按「字典序」排序\n */\n\n // value 是否为数字\n var isNum = [!isNaN(v1), !isNaN(v2)];\n\n // 若为数字比较\n if(isNum[0] && isNum[1]){\n if(v1 && (!v2 && v2 !== 0)){ // 数字 vs 空\n return 1;\n } else if((!v1 && v1 !== 0) && v2){ // 空 vs 数字\n return -1;\n } else { // 数字 vs 数字\n return v1 - v2;\n }\n }\n\n /**\n * 字典序排序\n */\n\n // 若为非数字比较\n if(!isNum[0] && !isNum[1]){\n // 字典序比较\n if(v1 > v2){\n return 1;\n } else if (v1 < v2) {\n return -1;\n } else {\n return 0;\n }\n }\n\n // 若为混合比较\n if(isNum[0] || !isNum[1]){ // 数字 vs 非数字\n return -1;\n } else if(!isNum[0] || isNum[1]) { // 非数字 vs 数字\n return 1;\n }\n\n });\n\n desc && clone.reverse(); // 倒序\n return clone;\n };\n\n // 阻止事件冒泡\n Layui.prototype.stope = function(thisEvent){\n thisEvent = thisEvent || win.event;\n try { thisEvent.stopPropagation() } catch(e){\n thisEvent.cancelBubble = true;\n }\n };\n\n // 字符常理\n var EV_REMOVE = 'LAYUI-EVENT-REMOVE';\n\n // 自定义模块事件\n Layui.prototype.onevent = function(modName, events, callback){\n if(typeof modName !== 'string'\n || typeof callback !== 'function') return this;\n\n return Layui.event(modName, events, null, callback);\n };\n\n // 执行自定义模块事件\n Layui.prototype.event = Layui.event = function(modName, events, params, fn){\n var that = this;\n var result = null;\n var filter = (events || '').match(/\\((.*)\\)$/)||[]; // 提取事件过滤器字符结构,如:select(xxx)\n var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称,如:form.select\n var filterName = filter[1] || ''; // 获取过滤器名称,,如:xxx\n var callback = function(_, item){\n var res = item && item.call(that, params);\n res === false && result === null && (result = false);\n };\n\n // 如果参数传入特定字符,则执行移除事件\n if(params === EV_REMOVE){\n delete (that.cache.event[eventName] || {})[filterName];\n return that;\n }\n\n // 添加事件\n if(fn){\n config.event[eventName] = config.event[eventName] || {};\n\n if (filterName) {\n // 带filter不支持重复事件\n config.event[eventName][filterName] = [fn];\n } else {\n // 不带filter处理的是所有的同类事件,应该支持重复事件\n config.event[eventName][filterName] = config.event[eventName][filterName] || [];\n config.event[eventName][filterName].push(fn);\n }\n return this;\n }\n\n // 执行事件回调\n layui.each(config.event[eventName], function(key, item){\n // 执行当前模块的全部事件\n if(filterName === '{*}'){\n layui.each(item, callback);\n return;\n }\n\n // 执行指定事件\n key === '' && layui.each(item, callback);\n (filterName && key === filterName) && layui.each(item, callback);\n });\n\n return result;\n };\n\n // 新增模块事件\n Layui.prototype.on = function(events, modName, callback){\n var that = this;\n return that.onevent.call(that, modName, events, callback);\n }\n\n // 移除模块事件\n Layui.prototype.off = function(events, modName){\n var that = this;\n return that.event.call(that, modName, events, EV_REMOVE);\n };\n\n // 防抖\n Layui.prototype.debounce = function (func, wait) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n func.apply(context, args);\n }, wait);\n }\n };\n\n // 节流\n Layui.prototype.throttle = function (func, wait) {\n var cooldown = false;\n return function () {\n var context = this;\n var args = arguments;\n if (!cooldown) {\n func.apply(context, args);\n cooldown = true;\n setTimeout(function () {\n cooldown = false;\n }, wait);\n }\n }\n };\n\n // exports layui\n win.layui = new Layui();\n\n}(window); // gulp build: layui-footer\n\n","/**\r\n * 用于打包聚合版,该文件不会存在于构建后的目录 \r\n */\r\n \r\nlayui.define(function(exports){\r\n var cache = layui.cache;\r\n layui.config({\r\n dir: cache.dir.replace(/lay\\/dest\\/$/, '')\r\n });\r\n exports('layui.all', layui.v);\r\n});","\n/** lay 基础模块 | MIT Licensed */\n\n;!function(window){ // gulp build: lay-header\n \"use strict\";\n\n var MOD_NAME = 'lay'; // 模块名\n var document = window.document;\n\n /**\n * 元素查找\n * @param {string | HTMLElement | JQuery} selector\n */\n var lay = function(selector){\n return new Class(selector);\n };\n\n // 构造器\n var Class = function(selector){\n var that = this;\n var elem = typeof selector === 'object' ? function(){\n // 仅适配简单元素对象\n return layui.isArray(selector) ? selector : [selector];\n }() : (\n this.selector = selector,\n document.querySelectorAll(selector || null)\n );\n\n lay.each(elem, function(index, item){\n that.push(elem[index]);\n });\n };\n\n /*\n * API 兼容\n */\n Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex) {\n var rst = -1;\n fromIndex = fromIndex || 0;\n layui.each(this, function(index, val){\n if (searchElement === val && index >= fromIndex) {\n rst = index;\n return !0;\n }\n });\n return rst;\n };\n\n /*\n lay 对象操作\n */\n\n Class.fn = Class.prototype = [];\n Class.fn.constructor = Class;\n\n /**\n * 将两个或多个对象的内容深度合并到第一个对象中\n * @callback ExtendFunc\n * @param {*} target - 一个对象\n * @param {...*} objectN - 包含额外的属性合并到第一个参数\n * @returns {*} 返回合并后的对象\n */\n /** @type ExtendFunc*/\n lay.extend = function(){\n var ai = 1;\n var length;\n var args = arguments;\n var clone = function(target, obj){\n target = target || (layui.type(obj) === 'array' ? [] : {}); // 目标对象\n for(var i in obj){\n // 若值为普通对象,则进入递归,继续深度合并\n target[i] = (obj[i] && obj[i].constructor === Object)\n ? clone(target[i], obj[i])\n : obj[i];\n }\n return target;\n };\n\n args[0] = typeof args[0] === 'object' ? args[0] : {};\n length = args.length\n\n for(; ai < length; ai++){\n if(typeof args[ai] === 'object'){\n clone(args[0], args[ai]);\n }\n }\n return args[0];\n };\n\n /**\n * IE 版本\n * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false\n */\n lay.ie = function(){\n var agent = navigator.userAgent.toLowerCase();\n return (!!window.ActiveXObject || \"ActiveXObject\" in window) ? (\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\n ) : false;\n }();\n\n\n /**\n * 获取 layui 常见方法,以便用于组件单独版\n */\n\n lay.layui = layui || {};\n lay.getPath = layui.cache.dir; // 获取当前 JS 所在目录\n lay.stope = layui.stope; // 中止冒泡\n lay.each = function(){ // 遍历\n layui.each.apply(layui, arguments);\n return this;\n };\n\n\n /**\n * 数字前置补零\n * @param {number | string} num - 原始数字\n * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零\n * @returns {string} 返回补 0 后的数字\n * @example\n * ```js\n * lay.digit(6, 2); // \"06\"\n * lay.digit('7', 3); // \"007\"\n * ```\n */\n lay.digit = function(num, length){\n if(!(typeof num === 'string' || typeof num === 'number')) return '';\n\n var str = '';\n num = String(num);\n length = length || 2;\n for(var i = num.length; i < length; i++){\n str += '0';\n }\n return num < Math.pow(10, length) ? str + num : num;\n };\n\n /**\n * 创建元素\n * @param {string} elemName - 元素的标签名\n * @param {Object.} [attr] - 添加到元素上的属性\n * @returns {HTMLElement} 返回创建的 HTML 元素\n * @example\n * ```js\n * lay.elem('div', {id: 'test'}) //
                    \n * ```\n */\n lay.elem = function(elemName, attr){\n var elem = document.createElement(elemName);\n lay.each(attr || {}, function(key, value){\n elem.setAttribute(key, value);\n });\n return elem;\n };\n\n /**\n * 当前页面是否存在滚动条\n * @returns {boolean} 是否存在滚动条\n * @example\n * ```\n * lay.hasScrollbar() // true 或 false\n * ```\n */\n lay.hasScrollbar = function(){\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\n };\n\n /**\n * 获取 style rules\n * @param {HTMLStyleElement} style - HTMLStyle 元素\n * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历\n * @returns {CSSRuleList } 返回 `style rules`\n * @example\n * ```\n * \n *\n * lay.getStyleRules($('#test')[0], function(rule, index){\n * if(rule.selectorText === '.lay-card'){\n * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}'\n * rule.style.color = '#EEE';\n * return true; // 终止遍历\n * }\n * }) // RuleList\n * ```\n */\n lay.getStyleRules = function(style, callback) {\n if (!style) return;\n\n var sheet = style.sheet || style.styleSheet || {};\n var rules = sheet.cssRules || sheet.rules;\n\n if (typeof callback === 'function') {\n layui.each(rules, function(i, item){\n if (callback(item, i)) return true;\n });\n }\n\n return rules;\n };\n\n /**\n * 创建 style 样式\n * @param {Object} options - 可配置的选项\n * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器\n * @param {string} [options.id] - 样式元素的 id,默认自增\n * @param {string} options.text - 样式内容\n * @returns {HTMLStyleElement} 返回创建的样式元素\n * @example\n * ```html\n *
                    \n * \n * \n *
                    \n *\n * lay.style({\n * target: '#targetEl',\n * text: '.card{color: #000}'\n * }) // \n * ```\n */\n lay.style = function(options){\n options = options || {};\n\n var style = lay.elem('style');\n var styleText = options.text || '';\n var target = options.target;\n\n if (!styleText) return;\n\n // 添加样式\n if ('styleSheet' in style) {\n style.setAttribute('type', 'text/css');\n style.styleSheet.cssText = styleText;\n } else {\n style.innerHTML = styleText;\n }\n\n // ID\n style.id = 'LAY-STYLE-'+ (options.id || function(index) {\n lay.style.index++;\n return 'DF-'+ index;\n }(lay.style.index || 0));\n\n // 是否向目标容器中追加 style 元素\n if (target) {\n var styleElem = lay(target).find('#'+ style.id);\n styleElem[0] && styleElem.remove();\n lay(target).append(style);\n }\n\n return style;\n };\n\n /**\n * 将元素定位到指定目标元素附近\n * @param {HTMLElement} target - 目标元素\n * @param {HTMLElement} elem - 定位元素\n * @param {Object} [opts] - 可配置的选项\n * @param {'absolute' | 'fixed'} [opts.position] - 元素的定位类型\n * @param {'left' | 'right'} [opts.clickType=\"left\"] - 点击类型,默认为 'left',如果 {@link target} 是 document 或 body 元素,则为 'right'\n * @param {'left' | 'right' | 'center'} [opts.align=\"left\"] - 对齐方式\n * @param {boolean} [opts.allowBottomOut=false] - 顶部没有足够区域显示时,是否允许底部溢出\n * @param {string | number} [opts.margin=5] - 边距\n * @param {Event} [opts.e] - 事件对象,仅右键生效\n * @param {boolean} [opts.SYSTEM_RELOAD] - 是否重载,用于出现滚动条时重新计算位置\n * @example\n * ```js\n * \n *
                      \n *
                    • 菜单1
                    • \n *
                    • 菜单2
                    • \n *
                    \n *\n * // 下拉菜单将被定位到按钮附近\n * lay.position(\n * $('#targetEl')[0],\n * $('#contentEl')[0],\n * {\n * position: 'fixed',\n * align: 'center'\n * }\n * )\n * ```\n */\n lay.position = function(target, elem, opts){\n if(!elem) return;\n opts = opts || {};\n\n // 如果绑定的是 document 或 body 元素,则直接获取鼠标坐标\n if(target === document || target === lay('body')[0]){\n opts.clickType = 'right';\n }\n\n // 绑定绑定元素的坐标\n var rect = opts.clickType === 'right' ? function(){\n var e = opts.e || window.event || {};\n return {\n left: e.clientX,\n top: e.clientY,\n right: e.clientX,\n bottom: e.clientY\n }\n }() : target.getBoundingClientRect();\n var elemWidth = elem.offsetWidth; // 控件的宽度\n var elemHeight = elem.offsetHeight; // 控件的高度\n\n // 滚动条高度\n var scrollArea = function(type){\n type = type ? 'scrollLeft' : 'scrollTop';\n return document.body[type] | document.documentElement[type];\n };\n\n // 窗口宽高\n var winArea = function(type){\n return document.documentElement[type ? 'clientWidth' : 'clientHeight']\n };\n var margin = 'margin' in opts ? opts.margin : 5;\n var left = rect.left;\n var top = rect.bottom;\n\n // 相对元素居中\n if(opts.align === 'center'){\n left = left - (elemWidth - target.offsetWidth) / 2;\n } else if(opts.align === 'right'){\n left = left - elemWidth + target.offsetWidth;\n }\n\n // 判断右侧是否超出边界\n if(left + elemWidth + margin > winArea('width')){\n left = winArea('width') - elemWidth - margin; // 如果超出右侧,则将面板向右靠齐\n }\n // 左侧是否超出边界\n if(left < margin) left = margin;\n\n\n // 判断底部和顶部是否超出边界\n if(rect.bottom + elemHeight + margin > winArea()){ // 底部超出边界\n // 优先判断顶部是否有足够区域显示完全,且底部不能超出边界\n if(rect.top > elemHeight + margin && rect.top <= winArea() ){\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\n } else if(!opts.allowBottomOut){ // 顶部没有足够区域显示时,是否允许底部溢出\n top = winArea() - elemHeight - margin*2; // 面板向底部靠齐\n if(top < 0) top = 0; // 如果面板底部靠齐时,又溢出窗口顶部,则只能将顶部靠齐\n }\n }\n /*\n if(top + elemHeight + margin > winArea()){\n // 优先顶部是否有足够区域显示完全\n if(rect.top > elemHeight + margin){\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\n } else {\n // 如果面板是鼠标右键弹出,且顶部没有足够区域显示,则将面板向底部靠齐\n if(obj.clickType === 'right'){\n top = winArea() - elemHeight - margin*2;\n if(top < 0) top = 0; // 不能溢出窗口顶部\n } else {\n top = margin; // 位置计算逻辑完备性处理\n }\n }\n }\n */\n\n // 定位类型\n var position = opts.position;\n if(position) elem.style.position = position;\n\n // 设置坐标\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + 'px';\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + 'px';\n\n // 防止页面无滚动条时,又因为弹出面板而出现滚动条导致的坐标计算偏差\n if(!lay.hasScrollbar()){\n var rect1 = elem.getBoundingClientRect();\n // 如果弹出面板的溢出窗口底部,则表示将出现滚动条,此时需要重新计算坐标\n if(!opts.SYSTEM_RELOAD && (rect1.bottom + margin) > winArea()){\n opts.SYSTEM_RELOAD = true;\n setTimeout(function(){\n lay.position(target, elem, opts);\n }, 50);\n }\n }\n };\n\n /**\n * 获取元素上的属性配置项\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\n * @param {{attr: string} | string} [opts=\"lay-options\"] - 可配置的选项,string 类型指定属性名\n * @returns {Object.} 返回元素上的属性配置项\n * @example\n * ```js\n *
                    \n *\n * var elem = $('#testEl')\n * lay.options(elem) // {color:red}\n * lay.options(elem[0]) // {color:red}\n * lay.options('#testEl') // {color:red}\n * lay.options('#testEl', {attr: 'lay-toc'}) // {hot: true}\n * lay.options('#testEl', 'lay-toc') // {hot: true}\n *\n * $('#testEl').attr('lay-toc') // '{hot: true}'\n * ```\n */\n lay.options = function(elem, opts){\n opts = typeof opts === 'object' ? opts : {attr: opts};\n\n if(elem === document) return {};\n\n var othis = lay(elem);\n var attrName = opts.attr || 'lay-options';\n var attrValue = othis.attr(attrName);\n\n try {\n /**\n * 请注意: 开发者在使用 lay-options=\"{}\" 配置组件选项时,需确保属性值不来自于网页用户,\n * 即属性值必须在网页开发者自身的可控范围内,否则请勿在 HTML 标签属性中获取组件选项。\n */\n return new Function('return '+ (attrValue || '{}'))();\n } catch(ev) {\n layui.hint().error(opts.errorText || [\n attrName + '=\"'+ attrValue + '\"',\n '\\n parseerror: '+ ev\n ].join('\\n'), 'error');\n return {};\n }\n };\n\n\n /**\n * 元素是否属于顶级元素(document 或 body)\n * @param {HTMLElement} elem - HTML 元素\n * @returns {boolean} 是否属于顶级元素\n * @example\n * ```js\n * lay.isTopElem(document) // true\n * ```\n */\n lay.isTopElem = function(elem){\n var topElems = [document, lay('body')[0]]\n ,matched = false;\n lay.each(topElems, function(index, item){\n if(item === elem){\n return matched = true\n }\n });\n return matched;\n };\n\n // 剪切板\n lay.clipboard = {\n /**\n * 写入文本\n * @param {Object} options - 可配置的选项\n * @param {string} options.text - 写入剪贴板的文本\n * @param {() => void} [options.done] - 写入成功/完成回调\n * @param {(err?: any) => void} [options.error] - 写入失败回调\n * @example\n * ```js\n * lay.clipboard.writeText({\n * text: '测试文本',\n * done: function(){ layer.msg('copied')},\n * error: function(){ layer.msg('error')}\n * })\n * ```\n */\n writeText: function(options) {\n var text = String(options.text);\n\n if(navigator && 'clipboard' in navigator){\n navigator.clipboard.writeText(text)\n .then(options.done, function(){\n legacyCopy();\n });\n }else{\n legacyCopy();\n }\n\n function legacyCopy(){\n var elem = document.createElement('textarea');\n\n elem.value = text;\n elem.style.position = 'fixed';\n elem.style.opacity = '0';\n elem.style.top = '0px';\n elem.style.left = '0px';\n\n document.body.appendChild(elem);\n elem.select();\n\n try {\n document.execCommand('copy');\n typeof options.done === 'function' && options.done();\n } catch(err) {\n typeof options.error === 'function' && options.error(err);\n } finally {\n elem.remove ? elem.remove() : document.body.removeChild(elem);\n }\n }\n }\n };\n\n /**\n * 检测是否支持 Passive Event Listeners\n * 引用自 https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n * @type {boolean}\n */\n lay.passiveSupported = function(){\n var passiveSupported = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n passiveSupported = true;\n }\n });\n window.addEventListener('test', null, opts);\n window.removeEventListener('test', null, opts);\n } catch (err) {}\n return passiveSupported;\n }();\n\n /**\n * 是否支持 touch 事件\n */\n lay.touchEventsSupported = function(){\n return 'ontouchstart' in window;\n };\n\n /**\n * @typedef touchSwipeState\n * @prop {{x: number,y: number}} pointerStart - 初始坐标\n * @prop {{x: number,y: number}} pointerEnd - 结束坐标\n * @prop {number} distanceX - X 轴移动距离\n * @prop {number} distanceY - Y 轴移动距离\n * @prop {'none'|'right'|'left'|'up'|'down'} direction - 滑动方向\n * @prop {Date} timeStart 开始时间\n */\n /**\n * @callback touchSwipeCallback\n * @param {TouchEvent} e 滑动事件\n * @param {touchSwipeState} state 滑动相关的状态\n */\n /**\n * 基于 touch 事件的触摸滑动\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\n * @param {{onTouchStart?: touchSwipeCallback, onTouchMove?: touchSwipeCallback, onTouchEnd?: touchSwipeCallback}} opts - 配置项\n */\n lay.touchSwipe = function(elem, opts){\n var options = opts\n var targetElem = lay(elem)[0];\n\n if(!targetElem || !lay.touchEventsSupported()) return;\n\n var state = {\n pointerStart: {x:0, y:0},\n pointerEnd: {x:0, y:0},\n distanceX: 0,\n distanceY: 0,\n direction:'none', // 'up','down','left','right','none\n timeStart: null\n }\n\n var onStart = function(e){\n if(e.touches.length !== 1) return;\n bindEvents();\n // 重置状态\n state.timeStart = Date.now();\n state.pointerStart.x = state.pointerEnd.x = e.touches[0].clientX;\n state.pointerStart.y = state.pointerEnd.y = e.touches[0].clientY;\n state.distanceX = state.distanceY = 0;\n state.direction = 'none'\n\n options.onTouchStart && options.onTouchStart(e, state);\n }\n\n var onMove = function(e){\n e.preventDefault();\n state.pointerEnd.x = e.touches[0].clientX;\n state.pointerEnd.y = e.touches[0].clientY;\n state.distanceX = state.pointerStart.x - state.pointerEnd.x;\n state.distanceY = state.pointerStart.y - state.pointerEnd.y;\n if(Math.abs(state.distanceX) > Math.abs(state.distanceY)){\n state.direction = state.distanceX > 0 ? 'left' : 'right';\n }else{\n state.direction = state.distanceY > 0 ? 'up' : 'down';\n }\n options.onTouchMove && options.onTouchMove(e, state);\n }\n\n var onEnd = function(e){\n options.onTouchEnd && options.onTouchEnd(e, state);\n unbindEvents();\n }\n \n var bindEvents = function(){\n targetElem.addEventListener('touchmove', onMove, lay.passiveSupported ? { passive: false} : false);\n targetElem.addEventListener('touchend', onEnd);\n targetElem.addEventListener('touchcancel', onEnd);\n }\n\n var unbindEvents = function(){\n targetElem.removeEventListener('touchmove', onMove);\n targetElem.removeEventListener('touchend', onEnd, lay.passiveSupported ? { passive: false} : false);\n targetElem.removeEventListener('touchcancel', onEnd);\n }\n\n // 防止事件重复绑定\n if(targetElem.__lay_touchswipe_cb_){\n targetElem.removeEventListener('touchstart', targetElem.__lay_touchswipe_cb_);\n }\n targetElem.__lay_touchswipe_cb_ = onStart;\n targetElem.addEventListener('touchstart', onStart);\n }\n\n\n /*\n * lay 元素操作\n */\n\n\n // 追加字符\n Class.addStr = function(str, new_str){\n str = str.replace(/\\s+/, ' ');\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\n lay.each(new_str, function(ii, item){\n if(!new RegExp('\\\\b'+ item + '\\\\b').test(str)){\n str = str + ' ' + item;\n }\n });\n return str.replace(/^\\s|\\s$/, '');\n };\n\n // 移除值\n Class.removeStr = function(str, new_str){\n str = str.replace(/\\s+/, ' ');\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\n lay.each(new_str, function(ii, item){\n var exp = new RegExp('\\\\b'+ item + '\\\\b')\n if(exp.test(str)){\n str = str.replace(exp, '');\n }\n });\n return str.replace(/\\s+/, ' ').replace(/^\\s|\\s$/, '');\n };\n\n // 查找子元素\n Class.fn.find = function(selector){\n var that = this;\n var elem = [];\n var isObject = typeof selector === 'object';\n\n this.each(function(i, item){\n var children = isObject && item.contains(selector)\n ? selector\n : item.querySelectorAll(selector || null);\n\n lay.each(children, function(index, child){\n elem.push(child);\n });\n });\n\n return lay(elem);\n };\n\n // 元素遍历\n Class.fn.each = function(fn){\n return lay.each.call(this, this, fn);\n };\n\n // 添加 className\n Class.fn.addClass = function(className, type){\n return this.each(function(index, item){\n item.className = Class[type ? 'removeStr' : 'addStr'](item.className, className)\n });\n };\n\n // 移除 className\n Class.fn.removeClass = function(className){\n return this.addClass(className, true);\n };\n\n // 是否包含 css 类\n Class.fn.hasClass = function(className){\n var has = false;\n this.each(function(index, item){\n if(new RegExp('\\\\b'+ className +'\\\\b').test(item.className)){\n has = true;\n }\n });\n return has;\n };\n\n // 添加或获取 css style\n Class.fn.css = function(key, value){\n var that = this;\n var parseValue = function(v){\n return isNaN(v) ? v : (v +'px');\n };\n return (typeof key === 'string' && value === undefined) ? function(){\n if(that.length > 0) return that[0].style[key];\n }() : that.each(function(index, item){\n typeof key === 'object' ? lay.each(key, function(thisKey, thisValue){\n item.style[thisKey] = parseValue(thisValue);\n }) : item.style[key] = parseValue(value);\n });\n };\n\n // 添加或获取宽度\n Class.fn.width = function(value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].offsetWidth; // 此处还需做兼容\n }() : that.each(function(index, item){\n that.css('width', value);\n });\n };\n\n // 添加或获取高度\n Class.fn.height = function(value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].offsetHeight; // 此处还需做兼容\n }() : that.each(function(index, item){\n that.css('height', value);\n });\n };\n\n // 添加或获取属性\n Class.fn.attr = function(key, value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].getAttribute(key);\n }() : that.each(function(index, item){\n item.setAttribute(key, value);\n });\n };\n\n // 移除属性\n Class.fn.removeAttr = function(key){\n return this.each(function(index, item){\n item.removeAttribute(key);\n });\n };\n\n // 设置或获取 HTML 内容\n Class.fn.html = function(html){\n var that = this;\n return html === undefined ? function(){\n if(that.length > 0) return that[0].innerHTML;\n }() : this.each(function(index, item){\n item.innerHTML = html;\n });\n };\n\n // 设置或获取值\n Class.fn.val = function(value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].value;\n }() : this.each(function(index, item){\n item.value = value;\n });\n };\n\n // 追加内容\n Class.fn.append = function(elem){\n return this.each(function(index, item){\n typeof elem === 'object'\n ? item.appendChild(elem)\n : item.innerHTML = item.innerHTML + elem;\n });\n };\n\n // 移除内容\n Class.fn.remove = function(elem){\n return this.each(function(index, item){\n elem ? item.removeChild(elem) : item.parentNode.removeChild(item);\n });\n };\n\n // 事件绑定\n Class.fn.on = function(eventName, fn){\n return this.each(function(index, item){\n item.attachEvent ? item.attachEvent('on' + eventName, function(e){\n e.target = e.srcElement;\n fn.call(item, e);\n }) : item.addEventListener(eventName, fn, false);\n });\n };\n\n // 解除事件\n Class.fn.off = function(eventName, fn){\n return this.each(function(index, item){\n item.detachEvent\n ? item.detachEvent('on'+ eventName, fn)\n : item.removeEventListener(eventName, fn, false);\n });\n };\n\n // export\n window.lay = lay;\n\n // 输出为 layui 模块\n if(window.layui && layui.define){\n layui.define(function(exports){\n exports(MOD_NAME, lay);\n });\n }\n\n}(window, window.document); // gulp build: lay-footer\n","/**\r\n * laytpl 轻量模板引擎\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n\r\n // 默认属性\r\n var config = {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n };\r\n\r\n // 模板工具\r\n var tool = {\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n }\r\n };\r\n\r\n // 内部方法\r\n var inner = {\r\n exp: function(str){\r\n return new RegExp(str, 'g');\r\n },\r\n // 错误提示\r\n error: function(e, source){\r\n var error = 'Laytpl Error: ';\r\n typeof console === 'object' && console.error(error + e + '\\n'+ (source || ''));\r\n return error + e;\r\n }\r\n };\r\n\r\n // constructor\r\n var Class = function(template, options){\r\n var that = this;\r\n that.config = that.config || {};\r\n that.template = template;\r\n\r\n // 简单属性合并\r\n var extend = function(obj){\r\n for(var i in obj){\r\n that.config[i] = obj[i];\r\n }\r\n };\r\n\r\n extend(config);\r\n extend(options);\r\n };\r\n\r\n // 标签正则\r\n Class.prototype.tagExp = function(type, _, __){\r\n var options = this.config;\r\n var types = [\r\n '#([\\\\s\\\\S])+?', // js 语句\r\n '([^{#}])*?' // 普通字段\r\n ][type || 0];\r\n\r\n return inner.exp((_||'') + options.open + types + options.close + (__||''));\r\n };\r\n\r\n // 模版解析\r\n Class.prototype.parse = function(template, data){\r\n var that = this;\r\n var options = that.config;\r\n var source = template;\r\n var jss = inner.exp('^'+ options.open +'#', '');\r\n var jsse = inner.exp(options.close +'$', '');\r\n\r\n // 模板必须为 string 类型\r\n if(typeof template !== 'string') return template;\r\n\r\n // 正则解析\r\n template = template.replace(/\\s+|\\r|\\t|\\n/g, ' ')\r\n .replace(inner.exp(options.open +'#'), options.open +'# ')\r\n .replace(inner.exp(options.close +'}'), '} '+ options.close).replace(/\\\\/g, '\\\\\\\\')\r\n\r\n // 不匹配指定区域的内容\r\n .replace(inner.exp(options.open + '!(.+?)!' + options.close), function(str){\r\n str = str.replace(inner.exp('^'+ options.open + '!'), '')\r\n .replace(inner.exp('!'+ options.close), '')\r\n .replace(inner.exp(options.open + '|' + options.close), function(tag){\r\n return tag.replace(/(.)/g, '\\\\$1')\r\n });\r\n return str\r\n })\r\n\r\n // 匹配 JS 语法\r\n .replace(/(?=\"|')/g, '\\\\').replace(that.tagExp(), function(str){\r\n str = str.replace(jss, '').replace(jsse, '');\r\n return '\";' + str.replace(/\\\\(.)/g, '$1') + ';view+=\"';\r\n })\r\n\r\n // 匹配普通输出语句\r\n .replace(that.tagExp(1), function(str){\r\n var start = '\"+laytpl.escape(';\r\n if(str.replace(/\\s/g, '') === options.open + options.close){\r\n return '';\r\n }\r\n str = str.replace(inner.exp(options.open + '|' + options.close), '');\r\n if(/^=/.test(str)){\r\n str = str.replace(/^=/, '');\r\n } else if(/^-/.test(str)){\r\n str = str.replace(/^-/, '');\r\n start = '\"+(';\r\n }\r\n return start + str.replace(/\\\\(.)/g, '$1') + ')+\"';\r\n });\r\n\r\n template = '\"use strict\";var view = \"' + template + '\";return view;';\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用模板语法时,需确保模板中的 JS 语句不来自于页面用户输入。\r\n * 即模板中的 JS 语句必须在页面开发者自身的可控范围内,否则请避免使用该模板解析。\r\n */\r\n that.cache = template = new Function('d, laytpl', template);\r\n return template(data, tool);\r\n } catch(e) {\r\n delete that.cache;\r\n return inner.error(e, source);\r\n }\r\n };\r\n\r\n // 数据渲染\r\n Class.prototype.render = function(data, callback){\r\n data = data || {};\r\n\r\n var that = this;\r\n var result = that.cache ? that.cache(data, tool) : that.parse(that.template, data);\r\n\r\n // 返回渲染结果\r\n typeof callback === 'function' && callback(result);\r\n return result;\r\n };\r\n\r\n // 创建实例\r\n var laytpl = function(template, options){\r\n return new Class(template, options);\r\n };\r\n\r\n // 配置全局属性\r\n laytpl.config = function(options){\r\n options = options || {};\r\n for(var i in options){\r\n config[i] = options[i];\r\n }\r\n };\r\n\r\n laytpl.v = '2.0.0';\r\n\r\n // export\r\n exports('laytpl', laytpl);\r\n});\r\n","/**\r\n * laypage 分页组件\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n \r\n var doc = document;\r\n var id = 'getElementById';\r\n var tag = 'getElementsByTagName';\r\n \r\n // 字符常量\r\n var MOD_NAME = 'laypage';\r\n var DISABLED = 'layui-disabled';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = options || {};\r\n that.config.index = ++laypage.index;\r\n that.render(true);\r\n };\r\n\r\n // 判断传入的容器类型\r\n Class.prototype.type = function(){\r\n var config = this.config;\r\n if(typeof config.elem === 'object'){\r\n return config.elem.length === undefined ? 2 : 3;\r\n }\r\n };\r\n\r\n // 分页视图\r\n Class.prototype.view = function(){\r\n var that = this;\r\n var config = that.config;\r\n\r\n // 连续页码个数\r\n var groups = config.groups = 'groups' in config \r\n ? (Number(config.groups) || 0)\r\n : 5; \r\n \r\n // 排版\r\n config.layout = typeof config.layout === 'object' \r\n ? config.layout \r\n : ['prev', 'page', 'next'];\r\n \r\n config.count = Number(config.count) || 0; // 数据总数\r\n config.curr = Number(config.curr) || 1; // 当前页\r\n\r\n // 每页条数的选择项\r\n config.limits = typeof config.limits === 'object'\r\n ? config.limits\r\n : [10, 20, 30, 40, 50];\r\n\r\n // 默认条数\r\n config.limit = Number(config.limit) || 10;\r\n \r\n // 总页数\r\n config.pages = Math.ceil(config.count/config.limit) || 1;\r\n \r\n // 当前页不能超过总页数\r\n if(config.curr > config.pages){\r\n config.curr = config.pages;\r\n } else if(config.curr < 1) { // 当前分页不能小于 1\r\n config.curr = 1;\r\n }\r\n \r\n // 连续分页个数不能低于 0 且不能大于总页数\r\n if(groups < 0){\r\n groups = 1;\r\n } else if (groups > config.pages){\r\n groups = config.pages;\r\n }\r\n \r\n config.prev = 'prev' in config ? config.prev : '上一页'; // 上一页文本\r\n config.next = 'next' in config ? config.next : '下一页'; // 下一页文本\r\n \r\n // 计算当前组\r\n var index = config.pages > groups \r\n ? Math.ceil( (config.curr + (groups > 1 ? 1 : 0)) / (groups > 0 ? groups : 1) )\r\n : 1;\r\n \r\n // 视图片段\r\n var views = {\r\n // 上一页\r\n prev: function(){\r\n return config.prev \r\n ? ''+ config.prev +''\r\n : '';\r\n }(),\r\n \r\n // 页码\r\n page: function(){\r\n var pager = [];\r\n \r\n // 数据量为0时,不输出页码\r\n if(config.count < 1){\r\n return '';\r\n }\r\n \r\n // 首页\r\n if(index > 1 && config.first !== false && groups !== 0){\r\n pager.push(''+ (config.first || 1) +'');\r\n }\r\n\r\n // 计算当前页码组的起始页\r\n var halve = Math.floor((groups-1)/2) // 页码数等分\r\n var start = index > 1 ? config.curr - halve : 1;\r\n var end = index > 1 ? (function(){\r\n var max = config.curr + (groups - halve - 1);\r\n return max > config.pages ? config.pages : max;\r\n }()) : groups;\r\n \r\n // 防止最后一组出现“不规定”的连续页码数\r\n if(end - start < groups - 1){\r\n start = end - groups + 1;\r\n }\r\n\r\n // 输出左分割符\r\n if(config.first !== false && start > 2){\r\n pager.push('')\r\n }\r\n \r\n // 输出连续页码\r\n for(; start <= end; start++){\r\n if(start === config.curr){\r\n // 当前页\r\n pager.push(''+ start +'');\r\n } else {\r\n pager.push(''+ start +'');\r\n }\r\n }\r\n \r\n // 输出输出右分隔符 & 末页\r\n if(config.pages > groups && config.pages > end && config.last !== false){\r\n if(end + 1 < config.pages){\r\n pager.push('');\r\n }\r\n if(groups !== 0){\r\n pager.push(''+ (config.last || config.pages) +'');\r\n }\r\n }\r\n\r\n return pager.join('');\r\n }(),\r\n \r\n // 下一页\r\n next: function(){\r\n return config.next \r\n ? ''+ config.next +''\r\n : '';\r\n }(),\r\n \r\n // 数据总数\r\n count: function(){\r\n var countText = typeof config.countText === 'object' ? config.countText : ['共 ', ' 条'];\r\n return ''+ countText[0] + config.count + countText[1] +''\r\n }(),\r\n \r\n // 每页条数\r\n limit: function(){\r\n var elemArr = ['';\r\n }(),\r\n \r\n // 刷新当前页\r\n refresh: [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n\r\n // 跳页区域\r\n skip: function(){\r\n var skipText = typeof config.skipText === 'object' ? config.skipText : [\r\n '到第',\r\n '页',\r\n '确定'\r\n ];\r\n return [\r\n ''+ skipText[0],\r\n '',\r\n skipText[1]+ '',\r\n ''\r\n ].join('');\r\n }()\r\n };\r\n\r\n return ['
                    ',\r\n function(){\r\n var plate = [];\r\n layui.each(config.layout, function(index, item){\r\n if(views[item]){\r\n plate.push(views[item])\r\n }\r\n });\r\n return plate.join('');\r\n }(),\r\n '
                    '].join('');\r\n };\r\n\r\n // 跳页的回调\r\n Class.prototype.jump = function(elem, isskip){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var config = that.config;\r\n var childs = elem.children;\r\n var btn = elem[tag]('button')[0];\r\n var input = elem[tag]('input')[0];\r\n var select = elem[tag]('select')[0];\r\n var skip = function(){\r\n var curr = Number(input.value.replace(/\\s|\\D/g, ''));\r\n if(curr){\r\n config.curr = curr;\r\n that.render();\r\n }\r\n };\r\n \r\n if(isskip) return skip();\r\n \r\n // 页码\r\n for(var i = 0, len = childs.length; i < len; i++){\r\n if(childs[i].nodeName.toLowerCase() === 'a'){\r\n laypage.on(childs[i], 'click', function(){\r\n var curr = Number(this.getAttribute('data-page'));\r\n if(curr < 1 || curr > config.pages) return;\r\n config.curr = curr;\r\n that.render();\r\n });\r\n }\r\n }\r\n \r\n // 条数\r\n if(select){\r\n laypage.on(select, 'change', function(){\r\n var value = this.value;\r\n if(config.curr*value > config.count){\r\n config.curr = Math.ceil(config.count/value);\r\n }\r\n config.limit = value;\r\n that.render();\r\n });\r\n }\r\n \r\n // 确定\r\n if(btn){\r\n laypage.on(btn, 'click', function(){\r\n skip();\r\n });\r\n }\r\n };\r\n \r\n // 输入页数字控制\r\n Class.prototype.skip = function(elem){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var input = elem[tag]('input')[0];\r\n\r\n if(!input) return;\r\n\r\n // 键盘事件\r\n laypage.on(input, 'keyup', function(e){\r\n var value = this.value;\r\n var keyCode = e.keyCode;\r\n\r\n if(/^(37|38|39|40)$/.test(keyCode)) return;\r\n\r\n if(/\\D/.test(value)){\r\n this.value = value.replace(/\\D/, '');\r\n }\r\n if(keyCode === 13){\r\n that.jump(elem, true)\r\n }\r\n });\r\n };\r\n\r\n // 渲染分页\r\n Class.prototype.render = function(load){\r\n var that = this;\r\n var config = that.config;\r\n var type = that.type();\r\n var view = that.view();\r\n \r\n if(type === 2){\r\n config.elem && (config.elem.innerHTML = view);\r\n } else if(type === 3){\r\n config.elem.html(view);\r\n } else {\r\n if(doc[id](config.elem)){\r\n doc[id](config.elem).innerHTML = view;\r\n }\r\n }\r\n\r\n config.jump && config.jump(config, load);\r\n \r\n var elem = doc[id]('layui-laypage-' + config.index);\r\n that.jump(elem);\r\n \r\n if(config.hash && !load){\r\n location.hash = '!'+ config.hash +'='+ config.curr;\r\n }\r\n \r\n that.skip(elem);\r\n };\r\n \r\n // 外部接口\r\n var laypage = {\r\n // 分页渲染\r\n render: function(options){\r\n var o = new Class(options);\r\n return o.index;\r\n },\r\n index: layui.laypage ? (layui.laypage.index + 10000) : 0,\r\n on: function(elem, even, fn){\r\n elem.attachEvent ? elem.attachEvent('on'+ even, function(e){ // for ie\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }) : elem.addEventListener(even, fn, false);\r\n return this;\r\n }\r\n }\r\n\r\n exports(MOD_NAME, laypage);\r\n});\r\n","/** laydate 日期与时间控件 | MIT Licensed */\r\n\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define, ready = {\r\n getPath: (window.lay && lay.getPath) ? lay.getPath : ''\r\n\r\n // 载入 CSS 依赖\r\n ,link: function(href, fn, cssname){\r\n\r\n // 未设置路径,则不主动加载 css\r\n if(!laydate.path) return;\r\n\r\n // 加载 css\r\n if(window.lay && lay.layui){\r\n lay.layui.link(laydate.path + href, fn, cssname);\r\n }\r\n }\r\n };\r\n\r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = window.LAYUI_GLOBAL || {};\r\n\r\n // 模块名\r\n var MOD_NAME = 'laydate';\r\n var MOD_ID = 'layui-'+ MOD_NAME +'-id' // 已渲染过的索引标记名\r\n\r\n // 外部调用\r\n var laydate = {\r\n v: '5.5.0' // layDate 版本号\r\n ,config: {\r\n weekStart: 0, // 默认周日一周的开始\r\n } // 全局配置项\r\n ,index: (window.laydate && window.laydate.v) ? 100000 : 0\r\n ,path: GLOBAL.laydate_dir || ready.getPath\r\n\r\n // 设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n return that;\r\n }\r\n\r\n // 主体 CSS 等待事件\r\n ,ready: function(callback){\r\n var cssname = 'laydate';\r\n var ver = ''\r\n var path = (isLayui ? 'modules/' : '') + 'laydate.css?v='+ laydate.v + ver;\r\n\r\n isLayui ? (\r\n layui['layui.all']\r\n ? (typeof callback === 'function' && callback())\r\n : layui.addcss(path, callback, cssname)\r\n ) : ready.link(path, callback, cssname);\r\n\r\n return this;\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return that.inst = {\r\n // 提示框\r\n hint: function(content){\r\n that.hint.call(that, content);\r\n },\r\n // 重载实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n };\r\n };\r\n\r\n // 字符常量\r\n var ELEM = '.layui-laydate';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'laydate-disabled';\r\n var LIMIT_YEAR = [100, 200000];\r\n\r\n var ELEM_STATIC = 'layui-laydate-static';\r\n var ELEM_LIST = 'layui-laydate-list';\r\n var ELEM_SELECTED = 'laydate-selected';\r\n var ELEM_HINT = 'layui-laydate-hint';\r\n var ELEM_DAY_NOW = 'laydate-day-now';\r\n var ELEM_PREV = 'laydate-day-prev';\r\n var ELEM_NEXT = 'laydate-day-next';\r\n var ELEM_FOOTER = 'layui-laydate-footer';\r\n var ELEM_SHORTCUT = 'layui-laydate-shortcut';\r\n var ELEM_NOW = '.laydate-btns-now'\r\n var ELEM_CONFIRM = '.laydate-btns-confirm';\r\n var ELEM_TIME_TEXT = 'laydate-time-text';\r\n var ELEM_TIME_BTN = 'laydate-btns-time';\r\n var ELEM_PREVIEW = 'layui-laydate-preview';\r\n var ELEM_MAIN = 'layui-laydate-main';\r\n var ELEM_SHADE = 'layui-laydate-shade';\r\n\r\n // 组件构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++laydate.index;\r\n that.config = lay.extend({}, that.config, laydate.config, options);\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = lay(options.elem || that.config.elem);\r\n if(elem.length > 1){\r\n lay.each(elem, function(){\r\n laydate.render(lay.extend({}, that.config, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 初始化属性\r\n options = lay.extend(that.config, lay.options(elem[0])); // 继承节点上的属性\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(elem[0] && elem.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options);\r\n }\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 自增索引\r\n options.index = that.index;\r\n\r\n // 初始化\r\n laydate.ready(function(){\r\n that.init();\r\n });\r\n };\r\n\r\n // 日期格式字符\r\n var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';\r\n\r\n // 将日期格式字符转换为数组\r\n thisModule.formatArr = function(format){\r\n return (format || '').match(new RegExp(dateType + '|.', 'g')) || []\r\n };\r\n\r\n /*\r\n 组件操作\r\n */\r\n\r\n // 是否闰年\r\n Class.isLeapYear = function(year){\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'date' //控件类型,支持:year/month/date/time/datetime\r\n ,range: false //是否开启范围选择,即双控件\r\n ,format: 'yyyy-MM-dd' //默认日期格式\r\n ,value: null //默认日期,支持传入new Date(),或者符合format参数设定的日期格式字符\r\n ,isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用)\r\n ,min: '1900-1-1' //有效最小日期,年月日必须用“-”分割,时分秒必须用“:”分割。注意:它并不是遵循 format 设定的格式。\r\n ,max: '2099-12-31' //有效最大日期,同上\r\n ,trigger: 'click' //呼出控件的事件\r\n ,show: false //是否直接显示,如果设置 true,则默认直接显示控件\r\n ,showBottom: true //是否显示底部栏\r\n ,isPreview: true //是否显示值预览\r\n ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列\r\n ,lang: 'cn' //语言,只支持cn/en,即中文和英文\r\n ,theme: 'default' //主题\r\n ,position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static\r\n ,calendar: false //是否开启公历重要节日,仅支持中文版\r\n ,mark: {} //日期备注,如重要事件或活动标记\r\n ,holidays: null // 标注法定节假日或补假上班\r\n ,zIndex: null //控件层叠顺序\r\n ,done: null //控件选择完毕后的回调,点击清空/现在/确定也均会触发\r\n ,change: null //日期时间改变后的回调\r\n ,autoConfirm: true //是否自动确认(日期|年份|月份选择器非range下是否自动确认)\r\n ,shade: 0\r\n };\r\n\r\n //多语言\r\n Class.prototype.lang = function(){\r\n var that = this\r\n ,options = that.config\r\n ,text = {\r\n cn: {\r\n weeks: ['日', '一', '二', '三', '四', '五', '六']\r\n ,time: ['时', '分', '秒']\r\n ,timeTips: '选择时间'\r\n ,startTime: '开始时间'\r\n ,endTime: '结束时间'\r\n ,dateTips: '返回日期'\r\n ,month: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']\r\n ,tools: {\r\n confirm: '确定'\r\n ,clear: '清空'\r\n ,now: '现在'\r\n }\r\n ,timeout: '结束时间不能早于开始时间
                    请重新选择'\r\n ,invalidDate: '不在有效日期或时间范围内'\r\n ,formatError: ['日期格式不合法
                    必须遵循下述格式:
                    ', '
                    已为你重置']\r\n ,preview: '当前选中的结果'\r\n }\r\n ,en: {\r\n weeks: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\r\n ,time: ['Hours', 'Minutes', 'Seconds']\r\n ,timeTips: 'Select Time'\r\n ,startTime: 'Start Time'\r\n ,endTime: 'End Time'\r\n ,dateTips: 'Select Date'\r\n ,month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n ,tools: {\r\n confirm: 'Confirm'\r\n ,clear: 'Clear'\r\n ,now: 'Now'\r\n }\r\n ,timeout: 'End time cannot be less than start Time
                    Please re-select'\r\n ,invalidDate: 'Invalid date'\r\n ,formatError: ['The date format error
                    Must be followed:
                    ', '
                    It has been reset']\r\n ,preview: 'The selected result'\r\n }\r\n };\r\n return text[options.lang] || text['cn'];\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n that.init();\r\n };\r\n\r\n //初始准备\r\n Class.prototype.init = function(){\r\n var that = this\r\n ,options = that.config\r\n ,isStatic = options.position === 'static'\r\n ,format = {\r\n year: 'yyyy'\r\n ,month: 'yyyy-MM'\r\n ,date: 'yyyy-MM-dd'\r\n ,time: 'HH:mm:ss'\r\n ,datetime: 'yyyy-MM-dd HH:mm:ss'\r\n };\r\n\r\n options.elem = lay(options.elem);\r\n options.eventElem = lay(options.eventElem);\r\n\r\n if(!options.elem[0]) return;\r\n\r\n layui.type(options.theme) !== 'array' && (options.theme = [options.theme]);\r\n // 设置了全面版模式\r\n if (options.fullPanel) {\r\n if (options.type !== 'datetime' || options.range) {\r\n // 目前只支持datetime的全面版\r\n delete options.fullPanel;\r\n }\r\n }\r\n\r\n //日期范围分隔符\r\n that.rangeStr = options.range ? (\r\n typeof options.range === 'string' ? options.range : '-'\r\n ) : '';\r\n\r\n //日期范围的日历面板是否联动\r\n that.rangeLinked = !!(options.range && options.rangeLinked && (options.type === 'date' || options.type === 'datetime'))\r\n\r\n //切换日历联动方式\r\n that.autoCalendarModel = function () {\r\n var state = that.rangeLinked;\r\n that.rangeLinked = (options.range && (options.type === 'date' || options.type === 'datetime'))\r\n && ((!that.startDate || !that.endDate) || (that.startDate && that.endDate && that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month));\r\n lay(that.elem)[that.rangeLinked ? 'addClass' : 'removeClass']('layui-laydate-linkage');\r\n return that.rangeLinked != state; // 返回发生了变化\r\n };\r\n\r\n //是否自动切换\r\n that.autoCalendarModel.auto = that.rangeLinked && options.rangeLinked === 'auto';\r\n\r\n //若 range 参数为数组,则表示为开始日期和结束日期的 input 对象\r\n if(layui.type(options.range) === 'array'){\r\n that.rangeElem = [\r\n lay(options.range[0]),\r\n lay(options.range[1])\r\n ];\r\n }\r\n\r\n //若 type 设置非法,则初始化为 date 类型\r\n if(!format[options.type]){\r\n window.console && console.error && console.error('laydate type error:\\''+ options.type + '\\' is not supported')\r\n options.type = 'date';\r\n }\r\n\r\n //根据不同 type,初始化默认 format\r\n if(options.format === format.date){\r\n options.format = format[options.type] || format.date;\r\n }\r\n\r\n //将日期格式转化成数组\r\n that.format = thisModule.formatArr(options.format);\r\n\r\n // 设置了一周的开始是周几,此处做一个控制\r\n if (options.weekStart) {\r\n if (!/^[0-6]$/.test(options.weekStart)) {\r\n var lang = that.lang();\r\n options.weekStart = lang.weeks.indexOf(options.weekStart);\r\n if (options.weekStart === -1) options.weekStart = 0;\r\n }\r\n }\r\n\r\n //生成正则表达式\r\n that.EXP_IF = '';\r\n that.EXP_SPLIT = '';\r\n lay.each(that.format, function(i, item){\r\n var EXP = new RegExp(dateType).test(item)\r\n ? '\\\\d{'+ function(){\r\n if(new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1]||'')){\r\n if(/^yyyy|y$/.test(item)) return 4;\r\n return item.length;\r\n }\r\n if(/^yyyy$/.test(item)) return '1,4';\r\n if(/^y$/.test(item)) return '1,308';\r\n return '1,2';\r\n }() +'}'\r\n : '\\\\' + item;\r\n that.EXP_IF = that.EXP_IF + EXP;\r\n that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';\r\n });\r\n //验证日期格式正则\r\n that.EXP_IF_ONE = new RegExp('^'+ that.EXP_IF +'$'); //验证单个日期格式\r\n that.EXP_IF = new RegExp('^'+ (\r\n options.range ?\r\n that.EXP_IF + '\\\\s\\\\'+ that.rangeStr + '\\\\s' + that.EXP_IF\r\n : that.EXP_IF\r\n ) +'$');\r\n that.EXP_SPLIT = new RegExp('^'+ that.EXP_SPLIT +'$', '');\r\n\r\n //如果不是 input|textarea 元素,则默认采用 click 事件\r\n if(!that.isInput(options.elem[0])){\r\n if(options.trigger === 'focus'){\r\n options.trigger = 'click';\r\n }\r\n }\r\n\r\n // 设置唯一 KEY\r\n options.elem.attr('lay-key', that.index);\r\n options.eventElem.attr('lay-key', that.index);\r\n options.elem.attr(MOD_ID, options.id); // 渲染过的标记\r\n\r\n //记录重要日期\r\n options.mark = lay.extend({}, (options.calendar && options.lang === 'cn') ? {\r\n '0-1-1': '元旦'\r\n ,'0-2-14': '情人'\r\n ,'0-3-8': '妇女'\r\n ,'0-3-12': '植树'\r\n ,'0-4-1': '愚人'\r\n ,'0-5-1': '劳动'\r\n ,'0-5-4': '青年'\r\n ,'0-6-1': '儿童'\r\n ,'0-9-10': '教师'\r\n ,'0-10-1': '国庆'\r\n ,'0-12-25': '圣诞'\r\n } : {}, options.mark);\r\n\r\n //获取限制内日期\r\n lay.each(['min', 'max'], function(i, item){\r\n var ymd = [];\r\n var hms = [];\r\n if(typeof options[item] === 'number'){ //如果为数字\r\n var day = options[item]\r\n ,tDate = new Date()\r\n ,time = that.newDate({ //今天的最大毫秒数\r\n year: tDate.getFullYear()\r\n ,month: tDate.getMonth()\r\n ,date: tDate.getDate()\r\n ,hours: i ? 23 : 0\r\n ,minutes: i ? 59 : 0\r\n ,seconds: i ? 59 : 0\r\n }).getTime()\r\n ,STAMP = 86400000 //代表一天的毫秒数\r\n ,thisDate = new Date(\r\n day ? (\r\n day < STAMP ? time + day*STAMP : day //如果数字小于一天的毫秒数,则数字为天数,否则为毫秒数\r\n ) : time\r\n );\r\n ymd = [thisDate.getFullYear(), thisDate.getMonth() + 1, thisDate.getDate()];\r\n hms = [thisDate.getHours(), thisDate.getMinutes(), thisDate.getSeconds()];\r\n } else if(typeof options[item] === 'string') {\r\n ymd = (options[item].match(/\\d+-\\d+-\\d+/) || [''])[0].split('-');\r\n hms = (options[item].match(/\\d+:\\d+:\\d+/) || [''])[0].split(':');\r\n } else if(typeof options[item] === 'object'){\r\n return options[item];\r\n }\r\n options[item] = {\r\n year: ymd[0] | 0 || new Date().getFullYear()\r\n ,month: ymd[1] ? (ymd[1] | 0) - 1 : new Date().getMonth()\r\n ,date: ymd[2] | 0 || new Date().getDate()\r\n ,hours: hms[0] | 0\r\n ,minutes: hms[1] | 0\r\n ,seconds: hms[2] | 0\r\n };\r\n });\r\n\r\n that.elemID = 'layui-laydate'+ options.elem.attr('lay-key');\r\n\r\n if(options.show || isStatic) that.render();\r\n isStatic || that.events();\r\n\r\n //默认赋值\r\n if(options.value && options.isInitValue){\r\n if(layui.type(options.value) === 'date'){\r\n that.setValue(that.parse(0, that.systemDate(options.value)));\r\n } else {\r\n that.setValue(options.value);\r\n }\r\n }\r\n };\r\n\r\n //控件主体渲染\r\n Class.prototype.render = function(){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isStatic = options.position === 'static'\r\n\r\n //主面板\r\n ,elem = that.elem = lay.elem('div', {\r\n id: that.elemID\r\n ,\"class\": [\r\n 'layui-laydate'\r\n ,options.range ? ' layui-laydate-range' : ''\r\n ,that.rangeLinked ? ' layui-laydate-linkage' : ''\r\n ,isStatic ? (' '+ ELEM_STATIC) : ''\r\n ,options.fullPanel ? ' laydate-theme-fullpanel' : '' // 全面版\r\n // ,options.theme && options.theme !== 'default' && !/^#/.test(options.theme) ? (' laydate-theme-' + options.theme) : ''\r\n ,(function () {\r\n var themeStr = '';\r\n lay.each(options.theme, function (index, theme) {\r\n if (theme !== 'default' && !/^#/.test(theme)) {\r\n themeStr += ' laydate-theme-' + theme;\r\n }\r\n })\r\n return themeStr;\r\n })()\r\n ].join('')\r\n })\r\n\r\n //主区域\r\n ,elemMain = that.elemMain = []\r\n ,elemHeader = that.elemHeader = []\r\n ,elemCont = that.elemCont = []\r\n ,elemTable = that.table = []\r\n\r\n //底部区域\r\n ,divFooter = that.footer = lay.elem('div', {\r\n \"class\": ELEM_FOOTER\r\n })\r\n\r\n //快捷栏\r\n ,divShortcut = that.shortcut = lay.elem('ul', {\r\n \"class\": ELEM_SHORTCUT\r\n });\r\n\r\n if(options.zIndex) elem.style.zIndex = options.zIndex;\r\n\r\n //单双日历区域\r\n lay.each(new Array(2), function(i){\r\n if(!options.range && i > 0){\r\n return true;\r\n }\r\n\r\n //头部区域\r\n var divHeader = lay.elem('div', {\r\n \"class\": 'layui-laydate-header'\r\n })\r\n\r\n //左右切换\r\n ,headerChild = [function(){ //上一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //上一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //年月选择\r\n var elem = lay.elem('div', {\r\n \"class\": 'laydate-set-ym'\r\n }), spanY = lay.elem('span'), spanM = lay.elem('span');\r\n elem.appendChild(spanY);\r\n elem.appendChild(spanM);\r\n return elem;\r\n }(), function(){ //下一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //下一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }()]\r\n\r\n //日历内容区域\r\n ,divContent = lay.elem('div', {\r\n \"class\": 'layui-laydate-content'\r\n })\r\n ,table = lay.elem('table')\r\n ,thead = lay.elem('thead'), theadTr = lay.elem('tr');\r\n\r\n //生成年月选择\r\n lay.each(headerChild, function(i, item){\r\n divHeader.appendChild(item);\r\n });\r\n\r\n //生成表格\r\n thead.appendChild(theadTr);\r\n lay.each(new Array(6), function(i){ //表体\r\n var tr = table.insertRow(0);\r\n lay.each(new Array(7), function(j){\r\n if(i === 0){\r\n var th = lay.elem('th');\r\n th.innerHTML = lang.weeks[(j + options.weekStart) % 7];\r\n theadTr.appendChild(th);\r\n }\r\n tr.insertCell(j);\r\n });\r\n });\r\n table.insertBefore(thead, table.children[0]); //表头\r\n divContent.appendChild(table);\r\n\r\n elemMain[i] = lay.elem('div', {\r\n \"class\": ELEM_MAIN + ' laydate-main-list-'+ i\r\n });\r\n\r\n elemMain[i].appendChild(divHeader);\r\n elemMain[i].appendChild(divContent);\r\n\r\n elemHeader.push(headerChild);\r\n elemCont.push(divContent);\r\n elemTable.push(table);\r\n });\r\n\r\n //生成底部栏\r\n lay(divFooter).html(function(){\r\n var html = [], btns = [];\r\n if(options.type === 'datetime'){\r\n html.push(''+ lang.timeTips +'');\r\n }\r\n if(!(!options.range && options.type === 'datetime') || options.fullPanel){\r\n html.push('')\r\n }\r\n\r\n lay.each(options.btns, function(i, item){\r\n var title = lang.tools[item] || 'btn';\r\n if(options.range && item === 'now') return;\r\n if(isStatic && item === 'clear') title = options.lang === 'cn' ? '重置' : 'Reset';\r\n btns.push(''+ title +'');\r\n });\r\n html.push('');\r\n return html.join('');\r\n }());\r\n\r\n // 生成快捷键栏\r\n if (options.shortcuts) {\r\n elem.appendChild(divShortcut);\r\n lay(divShortcut).html(function () {\r\n var shortcutBtns = [];\r\n lay.each(options.shortcuts, function (i, item) {\r\n shortcutBtns.push('
                  • '+item.text+'
                  • ')\r\n })\r\n return shortcutBtns.join('');\r\n }()).find('li').on('click', function (event) {\r\n var btnSetting = options.shortcuts[this.dataset['index']] || {};\r\n var value = (typeof btnSetting.value === 'function'\r\n ? btnSetting.value()\r\n : btnSetting.value) || [];\r\n if (!layui.isArray(value)) {\r\n value = [value];\r\n }\r\n var type = options.type;\r\n lay.each(value, function (i, item) {\r\n var dateTime = [options.dateTime, that.endDate][i];\r\n if (type === 'time' && layui.type(item) !== 'date') {\r\n if (that.EXP_IF.test(item)) {\r\n item = (item.match(that.EXP_SPLIT) || []).slice(1);\r\n lay.extend(dateTime, {hours: item[0] | 0, minutes: item[2] | 0, seconds: item[4] | 0})\r\n }\r\n } else {\r\n lay.extend(dateTime, that.systemDate(layui.type(item) === 'date' ? item : new Date(item)))\r\n }\r\n\r\n if (type === 'time' || type === 'datetime') {\r\n that[['startTime', 'endTime'][i]] = {\r\n hours: dateTime.hours,\r\n minutes: dateTime.minutes,\r\n seconds: dateTime.seconds,\r\n }\r\n }\r\n if (i === 0) { // 第一个值作为startDate\r\n that.startDate = lay.extend({}, dateTime);\r\n } else {\r\n that.endState = true;\r\n }\r\n if (type === 'year' || type === 'month' || type === 'time') {\r\n that.listYM[i] = [dateTime.year, dateTime.month + 1];\r\n } else if (i) {\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n }\r\n });\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n\r\n var timeBtn = lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n timeBtn && timeBtn.attr('lay-type') === 'date' && timeBtn[0].click();\r\n that.done(null, 'change');\r\n\r\n lay(this).addClass(THIS);\r\n\r\n // 自动确认\r\n if(options.position !== 'static'){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n /*\r\n if (options.position !== 'static' && !options.range && options.autoConfirm) {\r\n if (type === 'date') {\r\n that.choose(lay(elem).find('td.layui-this'))\r\n } else if (type === 'year' || type === 'month') {\r\n if(lay(elemMain[0]).find('.' + ELEM_MAIN + ' li.' + THIS + ':not(.laydate-disabled)')[0]) {\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n }\r\n */\r\n })\r\n }\r\n\r\n //插入到主区域\r\n lay.each(elemMain, function(i, main){\r\n elem.appendChild(main);\r\n });\r\n options.showBottom && elem.appendChild(divFooter);\r\n\r\n // 生成自定义主题\r\n var style = lay.elem('style');\r\n var styleText = [];\r\n var colorTheme;\r\n var isPrimaryColor = true;\r\n lay.each(options.theme, function (index, theme) {\r\n // 主色\r\n if(isPrimaryColor && /^#/.test(theme)){\r\n colorTheme = true;\r\n isPrimaryColor = false;\r\n styleText.push([\r\n '#{{id}} .layui-laydate-header{background-color:{{theme}};}',\r\n '#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}',\r\n options.theme.indexOf('circle') !== -1 ? '' : '#{{id}} .layui-this{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now{color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n return;\r\n }\r\n // 第二个自定义颜色作为辅色\r\n if(!isPrimaryColor && /^#/.test(theme)){\r\n styleText.push([\r\n '#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n }\r\n });\r\n //快捷栏样式\r\n if (options.shortcuts && options.range) {\r\n styleText.push('#{{id}}.layui-laydate-range{width: 628px;}'.replace(/{{id}}/g, that.elemID))\r\n }\r\n if (styleText.length) {\r\n styleText = styleText.join('');\r\n if('styleSheet' in style){\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n colorTheme && lay(elem).addClass('laydate-theme-molv');\r\n elem.appendChild(style);\r\n }\r\n\r\n //移除上一个控件\r\n that.remove(Class.thisElemDate);\r\n\r\n //记录当前执行的实例索引\r\n laydate.thisId = options.id;\r\n\r\n //如果是静态定位,则插入到指定的容器中,否则,插入到body\r\n isStatic ? options.elem.append(elem) : (\r\n document.body.appendChild(elem)\r\n ,that.position() //定位\r\n );\r\n\r\n var shade = options.shade ? ('
                    ') : '';\r\n elem.insertAdjacentHTML('beforebegin', shade);\r\n\r\n that.checkDate().calendar(null, 0, 'init'); //初始校验\r\n that.changeEvent(); //日期切换\r\n\r\n Class.thisElemDate = that.elemID;\r\n\r\n that.renderAdditional()\r\n typeof options.ready === 'function' && options.ready(lay.extend({}, options.dateTime, {\r\n month: options.dateTime.month + 1\r\n }));\r\n\r\n that.preview();\r\n };\r\n\r\n //控件移除\r\n Class.prototype.remove = function(prev){\r\n var that = this\r\n ,options = that.config\r\n ,elem = lay('#'+ (prev || that.elemID));\r\n if(!elem[0]) return that;\r\n\r\n if(!elem.hasClass(ELEM_STATIC)){\r\n that.checkDate(function(){\r\n elem.remove();\r\n //delete options.dateTime;\r\n delete that.startDate;\r\n delete that.endDate;\r\n delete that.endState;\r\n delete that.startTime;\r\n delete that.endTime;\r\n delete laydate.thisId;\r\n typeof options.close === 'function' && options.close(that);\r\n });\r\n }\r\n lay('.' + ELEM_SHADE).remove();\r\n return that;\r\n };\r\n\r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(options.elem[0], that.elem, {\r\n position: options.position\r\n });\r\n return that;\r\n };\r\n\r\n // 提示\r\n Class.prototype.hint = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var div = lay.elem('div', {\r\n \"class\": ELEM_HINT\r\n });\r\n\r\n if(!that.elem) return;\r\n\r\n // 兼容旧版参数\r\n if(typeof opts === 'object'){\r\n opts = opts || {};\r\n } else {\r\n opts = {\r\n content: opts\r\n }\r\n }\r\n\r\n div.innerHTML = opts.content || '';\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n that.elem.appendChild(div);\r\n\r\n clearTimeout(that.hinTimer);\r\n that.hinTimer = setTimeout(function(){\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n }, 'ms' in opts ? opts.ms : 3000);\r\n };\r\n\r\n //获取递增/减后的年月\r\n Class.prototype.getAsYM = function(Y, M, type){\r\n type ? M-- : M++;\r\n if(M < 0){\r\n M = 11;\r\n Y--;\r\n }\r\n if(M > 11){\r\n M = 0;\r\n Y++;\r\n }\r\n return [Y, M];\r\n };\r\n\r\n //系统日期\r\n Class.prototype.systemDate = function(newDate){\r\n var thisDate = newDate || new Date();\r\n return {\r\n year: thisDate.getFullYear() //年\r\n ,month: thisDate.getMonth() //月\r\n ,date: thisDate.getDate() //日\r\n ,hours: newDate ? newDate.getHours() : 0 //时\r\n ,minutes: newDate ? newDate.getMinutes() : 0 //分\r\n ,seconds: newDate ? newDate.getSeconds() : 0 //秒\r\n }\r\n };\r\n\r\n //日期校验\r\n Class.prototype.checkDate = function(fn){\r\n var that = this\r\n ,thisDate = new Date()\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime = options.dateTime || that.systemDate()\r\n ,thisMaxDate, error\r\n\r\n ,elem = options.elem[0]\r\n ,valType = that.isInput(elem) ? 'val' : 'html'\r\n ,value = function(){\r\n //如果传入了开始和结束日期的 input 对象,则将其拼接为日期范围字符\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()];\r\n\r\n if(vals[0] && vals[1]){\r\n return vals.join(' ' + that.rangeStr + ' ');\r\n }\r\n }\r\n return that.isInput(elem)\r\n ? elem.value\r\n : (options.position === 'static' ? '' : lay(elem).attr('lay-date'));\r\n }()\r\n\r\n //校验日期有效数字\r\n ,checkValid = function(dateTime){\r\n if (!dateTime) {\r\n return;\r\n }\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], error = true; //不能超过20万年\r\n if(dateTime.month > 11) dateTime.month = 11, error = true;\r\n if(dateTime.seconds > 59) dateTime.seconds = 0, dateTime.minutes++, error = true;\r\n if(dateTime.minutes > 59) dateTime.minutes = 0, dateTime.hours++, error = true;\r\n if(dateTime.hours > 23) dateTime.hours = 0, error = true;\r\n\r\n //计算当前月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year);\r\n if(dateTime.date > thisMaxDate) dateTime.date = thisMaxDate, error = true;\r\n }\r\n\r\n //获得初始化日期值\r\n ,initDate = function(dateTime, value, index){\r\n var startEnd = ['startTime', 'endTime'];\r\n value = (value.match(that.EXP_SPLIT) || []).slice(1);\r\n index = index || 0;\r\n\r\n if(options.range){\r\n that[startEnd[index]] = that[startEnd[index]] || {};\r\n }\r\n lay.each(that.format, function(i, item){\r\n var thisv = parseFloat(value[i]);\r\n if(value[i].length < item.length) error = true;\r\n if(/yyyy|y/.test(item)){ //年\r\n if(thisv < LIMIT_YEAR[0]) thisv = LIMIT_YEAR[0], error = true; //年不能低于100年\r\n dateTime.year = thisv;\r\n } else if(/MM|M/.test(item)){ //月\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.month = thisv - 1;\r\n } else if(/dd|d/.test(item)){ //日\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.date = thisv;\r\n } else if(/HH|H/.test(item)){ //时\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 23) thisv = 23, error = true;\r\n dateTime.hours = thisv;\r\n options.range && (that[startEnd[index]].hours = thisv);\r\n } else if(/mm|m/.test(item)){ //分\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.minutes = thisv;\r\n options.range && (that[startEnd[index]].minutes = thisv);\r\n } else if(/ss|s/.test(item)){ //秒\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.seconds = thisv;\r\n options.range && (that[startEnd[index]].seconds = thisv);\r\n }\r\n });\r\n checkValid(dateTime);\r\n };\r\n\r\n if(fn === 'limit') {\r\n if (options.range) {\r\n checkValid(that.rangeLinked ? that.startDate : dateTime); // 校验开始时间\r\n that.endDate && checkValid(that.endDate); // 校验结束时间\r\n } else {\r\n checkValid(dateTime);\r\n }\r\n return that;\r\n }\r\n\r\n value = value || options.value;\r\n if(typeof value === 'string'){\r\n value = value.replace(/\\s+/g, ' ').replace(/^\\s|\\s$/g, '');\r\n }\r\n\r\n //如果开启范围,则计算结束日期\r\n var getEndDate = function(){\r\n if(options.range){\r\n that.endDate = that.endDate || lay.extend({}, options.dateTime, function(){\r\n var obj = {}\r\n ,dateTime = options.dateTime\r\n ,EYM = that.getAsYM(dateTime.year, dateTime.month);\r\n\r\n //初始右侧面板的年月\r\n if(options.type === 'year'){\r\n obj.year = dateTime.year + 1;\r\n } else if(options.type !== 'time'){\r\n obj.year = EYM[0];\r\n obj.month = EYM[1];\r\n }\r\n\r\n //初始右侧面板的时间\r\n if(options.type === 'datetime' || options.type === 'time'){\r\n obj.hours = 23;\r\n obj.minutes = obj.seconds = 59;\r\n }\r\n\r\n return obj;\r\n }());\r\n }\r\n };\r\n getEndDate();\r\n\r\n if(typeof value === 'string' && value){\r\n if(that.EXP_IF.test(value)){ //校验日期格式\r\n if(options.range){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n lay.each([options.dateTime, that.endDate], function(i, item){\r\n initDate(item, value[i], i);\r\n });\r\n } else {\r\n initDate(dateTime, value);\r\n }\r\n } else {\r\n //格式不合法\r\n that.hint(lang.formatError[0] + (\r\n options.range ? (options.format + ' '+ that.rangeStr +' ' + options.format) : options.format\r\n ) + lang.formatError[1]);\r\n error = true;\r\n }\r\n } else if(value && layui.type(value) === 'date'){ //若值为日期对象\r\n options.dateTime = that.systemDate(value);\r\n } else {\r\n //重置开始日期\r\n options.dateTime = that.systemDate();\r\n delete that.startTime;\r\n\r\n //重置结束日期\r\n delete that.endDate; //删除原有的结束日期\r\n getEndDate(); //并重新获得新的结束日期\r\n delete that.endTime;\r\n }\r\n\r\n //从日期范围表单中获取初始值\r\n (function(){\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()]\r\n ,arrDate = [options.dateTime, that.endDate];\r\n lay.each(vals, function(_i, _v){\r\n if(that.EXP_IF_ONE.test(_v)){ //校验日期格式\r\n initDate(arrDate[_i], _v, _i);\r\n }\r\n });\r\n }\r\n })();\r\n\r\n // 校验日期有效数字\r\n checkValid(dateTime);\r\n if(options.range) checkValid(that.endDate);\r\n\r\n // 如果初始值格式错误,则纠正初始值\r\n if(error && value){\r\n that.setValue(\r\n options.range ? (that.endDate ? that.parse() : '') : that.parse()\r\n );\r\n }\r\n\r\n //如果当前日期不在设定的最大小日期区间,则自动纠正在可选区域\r\n //校验主面板是否在可选日期区间\r\n var minMaxError;\r\n if(that.getDateTime(dateTime) > that.getDateTime(options.max)){ //若超出最大日期\r\n dateTime = options.dateTime = lay.extend({}, options.max);\r\n minMaxError = true;\r\n } else if(that.getDateTime(dateTime) < that.getDateTime(options.min)){ //若少于最小日期\r\n dateTime = options.dateTime = lay.extend({}, options.min);\r\n minMaxError = true;\r\n }\r\n\r\n //校验右侧面板是否在可选日期区间\r\n if(options.range){\r\n if(that.getDateTime(that.endDate) < that.getDateTime(options.min) || that.getDateTime(that.endDate) > that.getDateTime(options.max)){\r\n that.endDate = lay.extend({}, options.max);\r\n minMaxError = true;\r\n }\r\n // 有时间范围的情况下初始化startTime和endTime\r\n that.startTime = {\r\n hours: options.dateTime.hours,\r\n minutes: options.dateTime.minutes,\r\n seconds: options.dateTime.seconds,\r\n }\r\n that.endTime = {\r\n hours: that.endDate.hours,\r\n minutes: that.endDate.minutes,\r\n seconds: that.endDate.seconds,\r\n }\r\n // 如果是年月范围,将对应的日期统一成当月的1日进行比较,避免出现同一个月但是开始日期大于结束日期的情况\r\n if (options.type === 'month') {\r\n options.dateTime.date = 1;\r\n that.endDate.date = 1;\r\n }\r\n }\r\n\r\n // 初始值不在最大最小范围内\r\n if(minMaxError && value){\r\n that.setValue(that.parse());\r\n that.hint('value ' + lang.invalidDate + lang.formatError[1]);\r\n }\r\n\r\n // 初始赋值 startDate,endState\r\n that.startDate = that.startDate || value && lay.extend({}, options.dateTime); // 有默认值才初始化startDate\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n that.endState = !options.range || !that.rangeLinked || !!(that.startDate && that.endDate); // 初始化选中范围状态\r\n\r\n fn && fn();\r\n return that;\r\n };\r\n\r\n // 公历重要日期与自定义备注\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this\r\n ,mark, options = that.config;\r\n lay.each(options.mark, function(key, title){\r\n var keys = key.split('-');\r\n if((keys[0] == YMD[0] || keys[0] == 0) //每年的每月\r\n && (keys[1] == YMD[1] || keys[1] == 0) //每月的每日\r\n && keys[2] == YMD[2]){ //特定日\r\n mark = title || YMD[2];\r\n }\r\n });\r\n mark && td.find('div').html(''+ mark +'');\r\n\r\n return that;\r\n };\r\n\r\n // 标注法定节假日或补假上班\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n var type = ['', 'work'];\r\n\r\n if(layui.type(options.holidays) !== 'array') return that;\r\n\r\n lay.each(options.holidays, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(dayStr === td.attr('lay-ymd')){\r\n td.find('div').html('' + YMD[2] + '');\r\n }\r\n });\r\n });\r\n\r\n return that;\r\n };\r\n\r\n // 无效日期范围的标记\r\n Class.prototype.limit = function(opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var timestamp = {}\r\n var dateTime = opts.index > (opts.time ? 0 : 41) ? that.endDate : options.dateTime;\r\n var isOut;\r\n\r\n lay.each({\r\n now: lay.extend({}, dateTime, opts.date || {})\r\n ,min: options.min\r\n ,max: options.max\r\n }, function(key, item){\r\n timestamp[key] = that.newDate(lay.extend({\r\n year: item.year\r\n ,month: opts.type === 'year' ? 0 : item.month // 年份的时候只比较年\r\n ,date: (opts.type === 'year' || opts.type === 'month') ? 1 : item.date // 年月只比较年月不与最大最小比日期\r\n }, function(){\r\n var hms = {};\r\n lay.each(opts.time, function(i, keys){\r\n hms[keys] = item[keys];\r\n });\r\n return hms;\r\n }())).getTime(); //time:是否比较时分秒\r\n });\r\n\r\n isOut = timestamp.now < timestamp.min || timestamp.now > timestamp.max;\r\n opts.elem && opts.elem[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n return isOut;\r\n };\r\n\r\n //当前日期对象\r\n Class.prototype.thisDateTime = function(index){\r\n var that = this\r\n ,options = that.config;\r\n return index ? that.endDate: options.dateTime;\r\n };\r\n\r\n //日历表\r\n Class.prototype.calendar = function(value, index, type){\r\n index = index ? 1 : 0;\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = value || that.thisDateTime(index)\r\n ,thisDate = new Date(), startWeek, prevMaxDate, thisMaxDate\r\n ,lang = that.lang()\r\n\r\n ,isAlone = options.type !== 'date' && options.type !== 'datetime'\r\n ,tds = lay(that.table[index]).find('td')\r\n ,elemYM = lay(that.elemHeader[index][2]).find('span');\r\n\r\n if(dateTime.year < LIMIT_YEAR[0]) dateTime.year = LIMIT_YEAR[0], that.hint(lang.invalidDate);\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], that.hint(lang.invalidDate);\r\n\r\n //记录初始值\r\n if(!that.firstDate){\r\n that.firstDate = lay.extend({}, dateTime);\r\n }\r\n\r\n //计算当前月第一天的星期\r\n thisDate.setFullYear(dateTime.year, dateTime.month, 1);\r\n startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;\r\n\r\n prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天\r\n\r\n //赋值日\r\n lay.each(tds, function(index_, item){\r\n var YMD = [dateTime.year, dateTime.month], st;\r\n item = lay(item);\r\n item.removeAttr(\"class\");\r\n if(index_ < startWeek){\r\n st = prevMaxDate - startWeek + index_;\r\n item.addClass('laydate-day-prev');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n } else if(index_ >= startWeek && index_ < thisMaxDate + startWeek){\r\n st = index_ - startWeek;\r\n if (!that.rangeLinked) {\r\n st + 1 === dateTime.date && item.addClass(THIS);\r\n }\r\n } else {\r\n st = index_ - thisMaxDate - startWeek;\r\n item.addClass('laydate-day-next');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month);\r\n }\r\n YMD[1]++;\r\n YMD[2] = st + 1;\r\n item.attr('lay-ymd', YMD.join('-')).html('
                    ' + YMD[2] + '
                    ');\r\n that.mark(item, YMD).holidays(item, YMD).limit({\r\n elem: item,\r\n date: {\r\n year: YMD[0],\r\n month: YMD[1] - 1,\r\n date: YMD[2]\r\n },\r\n index: index_\r\n });\r\n });\r\n\r\n //同步头部年月\r\n lay(elemYM[0]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n lay(elemYM[1]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n\r\n if(options.lang === 'cn'){\r\n lay(elemYM[0]).attr('lay-type', 'year').html(dateTime.year + ' 年')\r\n lay(elemYM[1]).attr('lay-type', 'month').html((dateTime.month + 1) + ' 月');\r\n } else {\r\n lay(elemYM[0]).attr('lay-type', 'month').html(lang.month[dateTime.month]);\r\n lay(elemYM[1]).attr('lay-type', 'year').html(dateTime.year);\r\n }\r\n\r\n //初始默认选择器\r\n if(isAlone){ //年、月等独立选择器\r\n if(options.range){\r\n if(value || type !== 'init'){ // 判断是否需要显示年月时间列表\r\n that.listYM = [\r\n [(that.startDate || options.dateTime).year, (that.startDate || options.dateTime).month + 1]\r\n ,[that.endDate.year, that.endDate.month + 1]\r\n ];\r\n that.list(options.type, 0).list(options.type, 1);\r\n\r\n //同步按钮可点状态\r\n options.type === 'time' ? that.setBtnStatus('时间'\r\n ,lay.extend({}, that.systemDate(), that.startTime)\r\n ,lay.extend({}, that.systemDate(), that.endTime)\r\n ) : that.setBtnStatus(true);\r\n }\r\n } else {\r\n that.listYM = [[dateTime.year, dateTime.month + 1]];\r\n that.list(options.type, 0);\r\n }\r\n }\r\n\r\n //初始赋值双日历\r\n if(options.range && type === 'init'){\r\n //执行渲染第二个日历\r\n if (that.rangeLinked) {\r\n var EYM = that.getAsYM(dateTime.year, dateTime.month, index ? 'sub' : null)\r\n that.calendar(lay.extend({}, dateTime, {\r\n year: EYM[0]\r\n ,month: EYM[1]\r\n }), 1 - index); // 渲染另外一个\r\n } else {\r\n that.calendar(null, 1 - index);\r\n }\r\n }\r\n\r\n // 通过检测当前有效日期,来设定底部按钮状态\r\n if(!options.range){\r\n var timeParams = ['hours', 'minutes', 'seconds'];\r\n\r\n // 现在按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_NOW),\r\n date: that.systemDate(/^(datetime|time)$/.test(options.type) ? new Date() : null),\r\n index: 0,\r\n time: timeParams\r\n });\r\n // 确认按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n index: 0,\r\n time: timeParams\r\n });\r\n }\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n\r\n // 重置快捷栏选中状态\r\n lay(that.shortcut).find('li.' + THIS).removeClass(THIS);\r\n\r\n //标记选择范围\r\n if(options.range && !isAlone && type !== 'init') that.stampRange();\r\n\r\n return that;\r\n };\r\n\r\n //生成年月时分秒列表\r\n Class.prototype.list = function(type, index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.rangeLinked ? options.dateTime : [options.dateTime, that.endDate][index]\r\n ,lang = that.lang()\r\n ,isAlone = options.range && options.type !== 'date' && options.type !== 'datetime' //独立范围选择器\r\n\r\n ,ul = lay.elem('ul', {\r\n \"class\": ELEM_LIST + ' ' + ({\r\n year: 'laydate-year-list'\r\n ,month: 'laydate-month-list'\r\n ,time: 'laydate-time-list'\r\n })[type]\r\n })\r\n ,elemHeader = that.elemHeader[index]\r\n ,elemYM = lay(elemHeader[2]).find('span')\r\n ,elemCont = that.elemCont[index || 0]\r\n ,haveList = lay(elemCont).find('.'+ ELEM_LIST)[0]\r\n ,isCN = options.lang === 'cn'\r\n ,text = isCN ? '年' : ''\r\n\r\n ,listYM = that.listYM[index] || {}\r\n ,hms = ['hours', 'minutes', 'seconds']\r\n ,startEnd = ['startTime', 'endTime'][index];\r\n\r\n if(listYM[0] < 1) listYM[0] = 1;\r\n\r\n //生成年列表\r\n if(type === 'year'){\r\n var yearNum, startY = yearNum = listYM[0] - 7;\r\n if(startY < 1) startY = yearNum = 1;\r\n lay.each(new Array(15), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': yearNum\r\n })\r\n ,ymd = {\r\n year: yearNum\r\n ,month: 0\r\n ,date: 1\r\n };\r\n\r\n yearNum == listYM[0] && lay(li).addClass(THIS);\r\n li.innerHTML = yearNum + text;\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(yearNum < that.firstDate.year){\r\n ymd.month = options.min.month;\r\n ymd.date = options.min.date;\r\n } else if(yearNum >= that.firstDate.year){\r\n ymd.month = options.max.month;\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n yearNum++;\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', (yearNum - 8) + '-' + listYM[1])\r\n .html((startY + text) + ' - ' + (yearNum - 1 + text));\r\n }\r\n\r\n //生成月列表\r\n else if(type === 'month'){\r\n lay.each(new Array(12), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': i\r\n })\r\n ,ymd = {\r\n year: listYM[0]\r\n ,month: i\r\n ,date: 1\r\n };\r\n\r\n i + 1 == listYM[1] && lay(li).addClass(THIS);\r\n li.innerHTML = lang.month[i] + (isCN ? '月' : '');\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(listYM[0] < that.firstDate.year){\r\n ymd.date = options.min.date;\r\n } else if(listYM[0] >= that.firstDate.year){\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', listYM[0] + '-' + listYM[1])\r\n .html(listYM[0] + text);\r\n }\r\n\r\n //生成时间列表\r\n else if(type === 'time'){\r\n //检测时分秒状态是否在有效日期时间范围内\r\n var setTimeStatus = function(){\r\n lay(ul).find('ol').each(function(i, ol){\r\n lay(ol).find('li').each(function(ii, li){\r\n that.limit({\r\n elem: lay(li),\r\n date: [{\r\n hours: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: that[startEnd].minutes\r\n ,seconds: ii\r\n }][i],\r\n index: index,\r\n time: [\r\n ['hours'],\r\n ['hours', 'minutes'],\r\n ['hours', 'minutes', 'seconds']\r\n ][i]\r\n });\r\n });\r\n });\r\n if(!options.range){\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: that[startEnd],\r\n index: 0,\r\n time: ['hours', 'minutes', 'seconds']\r\n });\r\n }\r\n };\r\n\r\n //初始化时间对象\r\n if(options.range){\r\n if(!that[startEnd]){\r\n that[startEnd] = startEnd === 'startTime' ? dateTime : that.endDate;\r\n }\r\n } else {\r\n that[startEnd] = dateTime;\r\n }\r\n\r\n //生成时分秒\r\n lay.each([24, 60, 60], function(i, item){\r\n var li = lay.elem('li'), childUL = ['

                    '+ lang.time[i] +'

                      '];\r\n lay.each(new Array(item), function(ii){\r\n childUL.push(''+ lay.digit(ii, 2) +'');\r\n });\r\n li.innerHTML = childUL.join('') + '
                    ';\r\n ul.appendChild(li);\r\n });\r\n setTimeStatus();\r\n }\r\n\r\n //插入容器\r\n if(haveList) elemCont.removeChild(haveList);\r\n elemCont.appendChild(ul);\r\n\r\n //年月面板 - 选择事件\r\n if(type === 'year' || type === 'month'){\r\n //显示切换箭头\r\n lay(that.elemMain[index]).addClass('laydate-ym-show');\r\n\r\n //选中\r\n lay(ul).find('li').on('click', function(){\r\n var ym = lay(this).attr('lay-ym') | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n if (that.rangeLinked) {\r\n lay.extend(dateTime, {\r\n year: type === 'year' ? ym : listYM[0]\r\n ,month: type === 'year' ? listYM[1] - 1 : ym\r\n });\r\n } else {\r\n dateTime[type] = ym;\r\n }\r\n\r\n //当为年选择器或者年月选择器\r\n var isYearOrMonth = options.type === 'year' || options.type === 'month';\r\n if(isYearOrMonth){\r\n lay(ul).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n //如果为年月选择器,点击了年列表,则切换到月选择器\r\n if(options.type === 'month' && type === 'year'){\r\n that.listYM[index][0] = ym;\r\n isAlone && ((index ? that.endDate : dateTime).year = ym);\r\n that.list('month', index);\r\n }\r\n } else {\r\n that.checkDate('limit').calendar(dateTime, index, 'init'); // 重新渲染一下两个面板\r\n that.closeList();\r\n }\r\n\r\n that.setBtnStatus(); //同步按钮可点状态\r\n\r\n //若为月选择器,只有当选择月份时才自动关闭;\r\n //若为年选择器,选择年份即自动关闭\r\n //且在范围未开启时\r\n if(!options.range && options.autoConfirm){\r\n if((options.type === 'month' && type === 'month') || (options.type === 'year' && type === 'year')){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n\r\n (that.autoCalendarModel.auto && !that.rangeLinked) ? that.choose(lay(elemCont).find('td.layui-this'), index) : (that.endState && that.done(null, 'change'));\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n });\r\n } else { //时间选择面板 - 选择事件\r\n var span = lay.elem('span', {\r\n \"class\": ELEM_TIME_TEXT\r\n })\r\n\r\n //滚动条定位\r\n ,scroll = function(){\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this\r\n ,li = lay(ol).find('li')\r\n ol.scrollTop = 30*(that[startEnd][hms[i]] - 2);\r\n if(ol.scrollTop <= 0){\r\n li.each(function(ii, item){\r\n if(!lay(this).hasClass(DISABLED)){\r\n ol.scrollTop = 30*(ii - 2);\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n ,haveSpan = lay(elemHeader[2]).find('.'+ ELEM_TIME_TEXT);\r\n\r\n scroll();\r\n span.innerHTML = options.range ? [lang.startTime,lang.endTime][index] : lang.timeTips;\r\n lay(that.elemMain[index]).addClass('laydate-time-show');\r\n\r\n if(haveSpan[0]) haveSpan.remove();\r\n elemHeader[2].appendChild(span);\r\n\r\n var olElem = lay(ul).find('ol');\r\n olElem.each(function(i){\r\n var ol = this;\r\n //选择时分秒\r\n lay(ol).find('li').on('click', function(){\r\n var value = this.innerHTML | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n\r\n if(options.range){\r\n that[startEnd][hms[i]] = value;\r\n } else {\r\n dateTime[hms[i]] = value;\r\n }\r\n lay(ol).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n setTimeStatus();\r\n scroll();\r\n (that.endDate || options.type === 'time' || (options.type === 'datetime' && options.fullPanel)) && that.done(null, 'change');\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n });\r\n });\r\n\r\n if(layui.device().mobile){\r\n olElem.css({\r\n overflowY: 'auto',\r\n touchAction: 'pan-y'\r\n })\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //记录列表切换后的年月\r\n Class.prototype.listYM = [];\r\n\r\n //关闭列表\r\n Class.prototype.closeList = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n lay.each(that.elemCont, function(index, item){\r\n lay(this).find('.'+ ELEM_LIST).remove();\r\n lay(that.elemMain[index]).removeClass('laydate-ym-show laydate-time-show');\r\n });\r\n lay(that.elem).find('.'+ ELEM_TIME_TEXT).remove();\r\n };\r\n\r\n //检测结束日期是否超出开始日期\r\n Class.prototype.setBtnStatus = function(tips, start, end){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isOut, elemBtn = lay(that.footer).find(ELEM_CONFIRM);\r\n if(options.range && options.type !== 'time'){\r\n start = start || (that.rangeLinked ? that.startDate : options.dateTime);\r\n end = end || that.endDate;\r\n isOut = !that.endState || that.newDate(start).getTime() > that.newDate(end).getTime();\r\n\r\n //如果不在有效日期内,直接禁用按钮,否则比较开始和结束日期\r\n (that.limit({\r\n date: start\r\n }) || that.limit({\r\n date: end\r\n }))\r\n ? elemBtn.addClass(DISABLED)\r\n : elemBtn[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n //是否异常提示\r\n if(tips && isOut) that.hint(\r\n typeof tips === 'string' ? lang.timeout.replace(/日期/g, tips) : lang.timeout\r\n );\r\n }\r\n };\r\n\r\n // 转义为规定格式的日期字符\r\n Class.prototype.parse = function(state, date) {\r\n var that = this;\r\n var options = that.config;\r\n var startDate = (that.rangeLinked ? that.startDate : options.dateTime)\r\n var dateTime = date || (\r\n state == 'end' ? lay.extend({}, that.endDate, that.endTime) : (\r\n options.range\r\n ? lay.extend({}, startDate || options.dateTime, that.startTime)\r\n : options.dateTime\r\n )\r\n );\r\n var format = laydate.parse(dateTime, that.format, 1);\r\n\r\n // 返回日期范围字符\r\n if (options.range && state === undefined) {\r\n return format + ' '+ that.rangeStr +' ' + that.parse('end');\r\n }\r\n\r\n return format;\r\n };\r\n\r\n //创建指定日期时间对象\r\n Class.prototype.newDate = function(dateTime){\r\n dateTime = dateTime || {};\r\n return new Date(\r\n dateTime.year || 1\r\n ,dateTime.month || 0\r\n ,dateTime.date || 1\r\n ,dateTime.hours || 0\r\n ,dateTime.minutes || 0\r\n ,dateTime.seconds || 0\r\n );\r\n };\r\n\r\n // 获得指定日期时间对象的毫秒数\r\n Class.prototype.getDateTime = function(obj){\r\n return this.newDate(obj).getTime();\r\n }\r\n\r\n //赋值\r\n Class.prototype.setValue = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,elem = options.elem[0];\r\n\r\n //静态展现则不作默认赋值\r\n if(options.position === 'static') return that;\r\n\r\n value = value || '';\r\n\r\n //绑定的元素是否为 input\r\n if(that.isInput(elem)){\r\n lay(elem).val(value);\r\n } else {\r\n //如果 range 传入了开始和结束的 input 对象,则分别对其赋值\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n if(layui.type(value) !== 'array'){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n }\r\n rangeElem[0].val(value[0] || '');\r\n rangeElem[1].val(value[1] || '');\r\n } else {\r\n if(lay(elem).find('*').length === 0){\r\n lay(elem).html(value);\r\n }\r\n lay(elem).attr('lay-date', value);\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //预览\r\n Class.prototype.preview = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n if(!options.isPreview) return;\r\n\r\n var elemPreview = lay(that.elem).find('.'+ ELEM_PREVIEW)\r\n ,value = options.range ? ((that.rangeLinked ? that.endState : that.endDate) ? that.parse() : '') : that.parse();\r\n\r\n // 显示预览\r\n elemPreview.html(value);\r\n\r\n // 预览颜色渐变\r\n var oldValue = elemPreview.html();\r\n oldValue && (elemPreview.css({\r\n 'color': '#16b777'\r\n }),\r\n setTimeout(function(){\r\n elemPreview.css({\r\n 'color': '#777'\r\n });\r\n }, 300));\r\n };\r\n\r\n // 附加的渲染处理,在 ready 和 change 的时候调用\r\n Class.prototype.renderAdditional = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 处理全面板\r\n if (options.fullPanel) {\r\n that.list('time', 0);\r\n }\r\n };\r\n\r\n // 标记范围内的日期\r\n Class.prototype.stampRange = function(){\r\n var that = this\r\n ,options = that.config\r\n ,startTime = that.rangeLinked ? that.startDate : options.dateTime, endTime\r\n ,tds = lay(that.elem).find('td');\r\n\r\n if(options.range && !that.endState) lay(that.footer).find(ELEM_CONFIRM).addClass(DISABLED);\r\n // if(!that.endState) return;\r\n\r\n startTime = startTime && that.newDate({\r\n year: startTime.year\r\n ,month: startTime.month\r\n ,date: startTime.date\r\n }).getTime();\r\n\r\n endTime = that.endState && that.endDate && that.newDate({\r\n year: that.endDate.year\r\n ,month: that.endDate.month\r\n ,date: that.endDate.date\r\n }).getTime();\r\n\r\n // if(startTime > endTime) return that.hint(TIPS_OUT);\r\n\r\n lay.each(tds, function(i, item){\r\n var ymd = lay(item).attr('lay-ymd').split('-');\r\n var thisTime = that.newDate({\r\n year: ymd[0]\r\n ,month: ymd[1] - 1\r\n ,date: ymd[2]\r\n }).getTime();\r\n\r\n // 标记当天\r\n if(options.rangeLinked && !that.startDate){\r\n if(thisTime === that.newDate(that.systemDate()).getTime()){\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ''\r\n : ELEM_DAY_NOW\r\n );\r\n }\r\n }\r\n\r\n /*\r\n * 标注区间\r\n */\r\n\r\n lay(item).removeClass(ELEM_SELECTED + ' ' + THIS);\r\n\r\n if(thisTime === startTime || thisTime === endTime){\r\n (that.rangeLinked || (!that.rangeLinked && (i < 42 ? thisTime === startTime : thisTime === endTime))) &&\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ELEM_SELECTED\r\n : THIS\r\n );\r\n }\r\n if(thisTime > startTime && thisTime < endTime){\r\n lay(item).addClass(ELEM_SELECTED);\r\n }\r\n });\r\n };\r\n\r\n // 执行 done/change 回调\r\n Class.prototype.done = function(param, type){\r\n var that = this;\r\n var options = that.config;\r\n var start = lay.extend({},\r\n lay.extend(that.rangeLinked ? that.startDate : options.dateTime, that.startTime)\r\n );\r\n var end = lay.extend({}, lay.extend(that.endDate, that.endTime));\r\n\r\n lay.each([start, end], function(i, item){\r\n if(!('month' in item)) return;\r\n lay.extend(item, {\r\n month: item.month + 1\r\n });\r\n });\r\n\r\n that.preview();\r\n\r\n param = param || [that.parse(), start, end];\r\n type === 'change' && that.renderAdditional();\r\n typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param);\r\n\r\n return that;\r\n };\r\n\r\n //选择日期\r\n Class.prototype.choose = function(td, index){\r\n if(td.hasClass(DISABLED)) return;\r\n\r\n var that = this\r\n ,options = that.config\r\n ,panelIndex = index; // 记录点击的是哪一个面板的\r\n\r\n if (that.rangeLinked) {\r\n if (that.endState || !that.startDate) {\r\n // 重新选择或者第一次选择\r\n index = 0;\r\n that.endState = false;\r\n } else {\r\n index = 1;\r\n that.endState = true;\r\n }\r\n }\r\n\r\n var dateTime = that.thisDateTime(index)\r\n\r\n ,tds = lay(that.elem).find('td')\r\n ,YMD = td.attr('lay-ymd').split('-');\r\n\r\n YMD = {\r\n year: YMD[0] | 0\r\n ,month: (YMD[1] | 0) - 1\r\n ,date: YMD[2] | 0\r\n };\r\n\r\n lay.extend(dateTime, YMD); //同步 dateTime\r\n\r\n //范围选择\r\n if(options.range){\r\n //补充时分秒\r\n lay.each(['startTime', 'endTime'], function(i, item){\r\n that[item] = that[item] || {\r\n hours: i ? 23: 0\r\n ,minutes: i ? 59: 0\r\n ,seconds: i ? 59: 0\r\n };\r\n if (index === i) {\r\n // 判断选择之后的是否在范围内,超出则需要调整时分秒\r\n if (that.getDateTime(lay.extend({}, dateTime, that[item])) < that.getDateTime(options.min)) {\r\n that[item] = {\r\n hours: options.min.hours\r\n ,minutes: options.min.minutes\r\n ,seconds: options.min.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n } else if (that.getDateTime(lay.extend({}, dateTime, that[item])) > that.getDateTime(options.max)) {\r\n that[item] = {\r\n hours: options.max.hours\r\n ,minutes: options.max.minutes\r\n ,seconds: options.max.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n }\r\n }\r\n });\r\n if (!index) {\r\n that.startDate = lay.extend({}, dateTime); // 同步startDate\r\n }\r\n // 校验另外一个日期是否在有效的范围内\r\n if (that.endState && !that.limit({date: that.thisDateTime(1 - index)})) {\r\n // 根据选择之后判断是否需要切换模式\r\n var isChange;\r\n if (that.endState && that.autoCalendarModel.auto) {\r\n isChange = that.autoCalendarModel();\r\n }\r\n // 判断是否反选\r\n var needSwapDate = (isChange || that.rangeLinked && that.endState) && that.newDate(that.startDate) > that.newDate(that.endDate);\r\n if (needSwapDate){\r\n var isSameDate = that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month && that.startDate.date === that.endDate.date;\r\n var startDate;\r\n // 如果是同一天并且出现了反选证明是时分秒出现开始时间大于结束时间的现象\r\n if(isSameDate){\r\n startDate = that.startTime;\r\n that.startTime = that.endTime;\r\n that.endTime = startDate;\r\n }\r\n // 当出现反向选择时(即“后点击”的日期比“先点击”的日期小),重新提取区间\r\n startDate = that.startDate;\r\n that.startDate = lay.extend({}, that.endDate, that.startTime);\r\n options.dateTime = lay.extend({}, that.startDate);\r\n that.endDate = lay.extend({}, startDate, that.endTime);\r\n }\r\n isChange && (options.dateTime = lay.extend({}, that.startDate));\r\n }\r\n if (that.rangeLinked) {\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n if (panelIndex && !index && !isChange) { // 处理可能出现的联动面板中点击右面板但是判定为开始日期这个时候点击头部的切换上下月第一次没有反应的问题\r\n // 选择了右面板但是判断之后作为开始时间\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(options.dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n }\r\n that.calendar(dateTimeTemp, panelIndex, isChange ? 'init' : null);\r\n } else {\r\n that.calendar(null, index, isChange ? 'init' : null);\r\n }\r\n that.endState && that.done(null, 'change');\r\n } else if(options.position === 'static'){ //直接嵌套的选中\r\n that.calendar().done().done(null, 'change'); //同时执行 done 和 change 回调\r\n } else if(options.type === 'date'){\r\n options.autoConfirm ? that.setValue(that.parse()).done().remove() : that.calendar().done(null, 'change');\r\n } else if(options.type === 'datetime'){\r\n that.calendar().done(null, 'change');\r\n }\r\n };\r\n\r\n //底部按钮\r\n Class.prototype.tool = function(btn, type){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime\r\n ,isStatic = options.position === 'static'\r\n ,active = {\r\n //选择时间\r\n datetime: function(){\r\n if(lay(btn).hasClass(DISABLED)) return;\r\n that.list('time', 0);\r\n options.range && that.list('time', 1);\r\n lay(btn).attr('lay-type', 'date').html(that.lang().dateTips);\r\n }\r\n\r\n //选择日期\r\n ,date: function(){\r\n that.closeList();\r\n lay(btn).attr('lay-type', 'datetime').html(that.lang().timeTips);\r\n }\r\n\r\n //清空、重置\r\n ,clear: function(){\r\n isStatic && (\r\n lay.extend(dateTime, that.firstDate)\r\n ,that.calendar()\r\n )\r\n options.range && (\r\n delete options.dateTime\r\n ,delete that.endDate\r\n ,delete that.startTime\r\n ,delete that.endTime\r\n );\r\n that.setValue('');\r\n that.done(null, 'onClear').done(['', {}, {}]).remove();\r\n }\r\n\r\n // 现在\r\n ,now: function(){\r\n var thisDate = new Date();\r\n\r\n // 当前系统时间未在 min/max 范围内,则不可点击\r\n if(lay(btn).hasClass(DISABLED)){\r\n return that.hint(lang.tools.now +', '+ lang.invalidDate);\r\n }\r\n\r\n lay.extend(dateTime, that.systemDate(), {\r\n hours: thisDate.getHours()\r\n ,minutes: thisDate.getMinutes()\r\n ,seconds: thisDate.getSeconds()\r\n });\r\n\r\n that.setValue(that.parse());\r\n isStatic && that.calendar();\r\n that.done(null, 'onNow').done().remove();\r\n }\r\n\r\n //确定\r\n ,confirm: function(){\r\n if(options.range){\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(\r\n options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout\r\n );\r\n } else {\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(lang.invalidDate);\r\n }\r\n\r\n that.setValue(that.parse());\r\n that.done(null, 'onConfirm').done().remove();\r\n }\r\n };\r\n active[type] && active[type]();\r\n };\r\n\r\n //统一切换处理\r\n Class.prototype.change = function(index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.thisDateTime(index)\r\n ,isAlone = options.range && (options.type === 'year' || options.type === 'month')\r\n\r\n ,elemCont = that.elemCont[index || 0]\r\n ,listYM = that.listYM[index]\r\n ,addSubYear = function(type){\r\n var isYear = lay(elemCont).find('.laydate-year-list')[0]\r\n ,isMonth = lay(elemCont).find('.laydate-month-list')[0];\r\n\r\n //切换年列表\r\n if(isYear){\r\n listYM[0] = type ? listYM[0] - 15 : listYM[0] + 15;\r\n that.list('year', index);\r\n }\r\n\r\n if(isMonth){ //切换月面板中的年\r\n type ? listYM[0]-- : listYM[0]++;\r\n that.list('month', index);\r\n }\r\n\r\n if(isYear || isMonth){\r\n lay.extend(dateTime, {\r\n year: listYM[0]\r\n });\r\n if(isAlone) dateTime.year = listYM[0];\r\n options.range || that.done(null, 'change');\r\n options.range || that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: {\r\n year: listYM[0]\r\n }\r\n });\r\n }\r\n\r\n that.setBtnStatus();\r\n return isYear || isMonth;\r\n };\r\n\r\n return {\r\n prevYear: function(){\r\n if(addSubYear('sub')) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year--;\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n } else {\r\n dateTime.year--;\r\n that.checkDate('limit').calendar(null, index);\r\n // 面板自动切换的模式下重新判定是否发生模式转换等细节处理\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,prevMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month);\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextYear: function(){\r\n if(addSubYear()) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year++;\r\n that.checkDate('limit').calendar(null, 0, 'init');\r\n } else {\r\n dateTime.year++;\r\n that.checkDate('limit').calendar(null, index);\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n };\r\n };\r\n\r\n //日期切换事件\r\n Class.prototype.changeEvent = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n //日期选择事件\r\n lay(that.elem).on('click', function(e){\r\n lay.stope(e);\r\n }).on('mousedown', function(e){\r\n lay.stope(e);\r\n });\r\n\r\n //年月切换\r\n lay.each(that.elemHeader, function(i, header){\r\n //上一年\r\n lay(header[0]).on('click', function(e){\r\n that.change(i).prevYear();\r\n });\r\n\r\n //上一月\r\n lay(header[1]).on('click', function(e){\r\n that.change(i).prevMonth();\r\n });\r\n\r\n //选择年月\r\n lay(header[2]).find('span').on('click', function(e){\r\n var othis = lay(this)\r\n ,layYM = othis.attr('lay-ym')\r\n ,layType = othis.attr('lay-type');\r\n\r\n if(!layYM) return;\r\n\r\n layYM = layYM.split('-');\r\n\r\n that.listYM[i] = [layYM[0] | 0, layYM[1] | 0];\r\n that.list(layType, i);\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).addClass(DISABLED);\r\n });\r\n\r\n //下一月\r\n lay(header[3]).on('click', function(e){\r\n that.change(i).nextMonth();\r\n });\r\n\r\n //下一年\r\n lay(header[4]).on('click', function(e){\r\n that.change(i).nextYear();\r\n });\r\n });\r\n\r\n //点击日期\r\n lay.each(that.table, function(i, table){\r\n var tds = lay(table).find('td');\r\n tds.on('click', function(){\r\n that.choose(lay(this), i);\r\n });\r\n });\r\n\r\n //点击底部按钮\r\n lay(that.footer).find('span').on('click', function(){\r\n var type = lay(this).attr('lay-type');\r\n that.tool(this, type);\r\n });\r\n };\r\n\r\n //是否输入框\r\n Class.prototype.isInput = function(elem){\r\n return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);\r\n };\r\n\r\n //绑定的元素事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n if(!options.elem[0] || options.elem[0].eventHandler) return;\r\n\r\n var showEvent = function(){\r\n // 已经打开的面板避免重新渲染\r\n if(laydate.thisId === options.id) return;\r\n that.render();\r\n };\r\n\r\n //绑定呼出控件事件\r\n options.elem.on(options.trigger, showEvent);\r\n options.elem[0].eventHandler = true;\r\n options.eventElem.on(options.trigger, showEvent);\r\n\r\n // 元素解绑\r\n that.unbind = function () {\r\n that.remove();\r\n options.elem.off(options.trigger, showEvent);\r\n options.elem.removeAttr('lay-key');\r\n options.elem.removeAttr(MOD_ID);\r\n options.elem[0].eventHandler = false;\r\n options.eventElem.off(options.trigger, showEvent);\r\n options.eventElem.removeAttr('lay-key');\r\n delete thisModule.that[options.id];\r\n };\r\n };\r\n\r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n\r\n //获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that && isLayui) layui.hint().error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n\r\n // 初始执行\r\n ready.run = function(lay){\r\n // 绑定关闭控件事件\r\n lay(document).on('mousedown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n\r\n if(\r\n e.target === options.elem[0] ||\r\n e.target === options.eventElem[0] ||\r\n e.target === lay(options.closeStop)[0] ||\r\n (options.elem[0] && options.elem[0].contains(e.target))\r\n ) return;\r\n\r\n that.remove();\r\n\r\n }).on('keydown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n // 回车触发确认\r\n if(that.config.position === 'static') return;\r\n if(e.keyCode === 13){\r\n if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElemDate){\r\n e.preventDefault();\r\n lay(that.footer).find(ELEM_CONFIRM)[0].click();\r\n }\r\n }\r\n });\r\n\r\n //自适应定位\r\n lay(window).on('resize', function(){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elem || !lay(ELEM)[0]){\r\n return false;\r\n }\r\n\r\n that.position();\r\n });\r\n };\r\n\r\n // 渲染 - 核心接口\r\n laydate.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n // 重载\r\n laydate.reload = function (id, options) {\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.reload(options);\r\n };\r\n\r\n // 获取对应 ID 的实例\r\n laydate.getInst = function (id) {\r\n var that = thisModule.getThis(id);\r\n if(that){\r\n return that.inst;\r\n }\r\n };\r\n\r\n // 面板提示\r\n laydate.hint = function(id, opts){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.hint(opts);\r\n };\r\n\r\n // 解绑实例\r\n laydate.unbind = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.unbind();\r\n };\r\n\r\n // 关闭日期面板\r\n laydate.close = function(id){\r\n var that = thisModule.getThis(id || laydate.thisId);\r\n if(!that) return;\r\n return that.remove();\r\n };\r\n\r\n // 将指定对象转化为日期值\r\n laydate.parse = function(dateTime, format, one){\r\n dateTime = dateTime || {};\r\n\r\n //如果 format 是字符型,则转换为数组格式\r\n if(typeof format === 'string'){\r\n format = thisModule.formatArr(format);\r\n }\r\n\r\n format = (format || []).concat();\r\n\r\n //转义为规定格式\r\n lay.each(format, function(i, item){\r\n if(/yyyy|y/.test(item)){ //年\r\n format[i] = lay.digit(dateTime.year, item.length);\r\n } else if(/MM|M/.test(item)){ //月\r\n format[i] = lay.digit(dateTime.month + (one || 0), item.length);\r\n } else if(/dd|d/.test(item)){ //日\r\n format[i] = lay.digit(dateTime.date, item.length);\r\n } else if(/HH|H/.test(item)){ //时\r\n format[i] = lay.digit(dateTime.hours, item.length);\r\n } else if(/mm|m/.test(item)){ //分\r\n format[i] = lay.digit(dateTime.minutes, item.length);\r\n } else if(/ss|s/.test(item)){ //秒\r\n format[i] = lay.digit(dateTime.seconds, item.length);\r\n }\r\n });\r\n\r\n return format.join('');\r\n };\r\n\r\n // 得到某月的最后一天\r\n laydate.getEndDate = function(month, year){\r\n var thisDate = new Date();\r\n //设置日期为下个月的第一天\r\n thisDate.setFullYear(\r\n year || thisDate.getFullYear()\r\n ,month || (thisDate.getMonth() + 1)\r\n ,1);\r\n //减去一天,得到当前月最后一天\r\n return new Date(thisDate.getTime() - 1000*60*60*24).getDate();\r\n };\r\n\r\n //加载方式\r\n isLayui ? (\r\n laydate.ready()\r\n ,layui.define('lay', function(exports){ //layui 加载\r\n laydate.path = layui.cache.dir;\r\n ready.run(lay);\r\n exports(MOD_NAME, laydate);\r\n })\r\n ) : (\r\n (typeof define === 'function' && define.amd) ? define(function(){ //requirejs 加载\r\n ready.run(lay);\r\n return laydate;\r\n }) : function(){ //普通 script 标签加载\r\n laydate.ready();\r\n ready.run(window.lay);\r\n window.laydate = laydate;\r\n }()\r\n );\r\n\r\n}(window, window.document);\r\n\r\n","/*!\r\n * jQuery JavaScript Library v1.12.4\r\n * http://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2016-05-20T17:17Z\r\n */\r\n\r\n(function( global, factory ) {\r\n\r\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\r\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\r\n\t\t// is present, execute the factory and get jQuery.\r\n\t\t// For environments that do not have a `window` with a `document`\r\n\t\t// (such as Node.js), expose a factory as module.exports.\r\n\t\t// This accentuates the need for the creation of a real `window`.\r\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\r\n\t\t// See ticket #14549 for more info.\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory( global, true ) :\r\n\t\t\tfunction( w ) {\r\n\t\t\t\tif ( !w.document ) {\r\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\r\n\t\t\t\t}\r\n\t\t\t\treturn factory( w );\r\n\t\t\t};\r\n\t} else {\r\n\t\tfactory( global );\r\n\t}\r\n\r\n// Pass this if window is not defined yet\r\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\r\n\r\n// Support: Firefox 18+\r\n// Can't be in strict mode, several libs including ASP.NET trace\r\n// the stack via arguments.caller.callee and Firefox dies if\r\n// you try to trace through \"use strict\" call chains. (#13335)\r\n//\"use strict\";\r\nvar deletedIds = [];\r\n\r\nvar document = window.document;\r\n\r\nvar slice = deletedIds.slice;\r\n\r\nvar concat = deletedIds.concat;\r\n\r\nvar push = deletedIds.push;\r\n\r\nvar indexOf = deletedIds.indexOf;\r\n\r\nvar class2type = {};\r\n\r\nvar toString = class2type.toString;\r\n\r\nvar hasOwn = class2type.hasOwnProperty;\r\n\r\nvar support = {};\r\n\r\n\r\n\r\nvar\r\n\tversion = \"1.12.4\",\r\n\r\n\t// Define a local copy of jQuery\r\n\tjQuery = function( selector, context ) {\r\n\r\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\r\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\r\n\t\treturn new jQuery.fn.init( selector, context );\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\t// Make sure we trim BOM and NBSP\r\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\r\n\r\n\t// Matches dashed string for camelizing\r\n\trmsPrefix = /^-ms-/,\r\n\trdashAlpha = /-([\\da-z])/gi,\r\n\r\n\t// Used by jQuery.camelCase as callback to replace()\r\n\tfcamelCase = function( all, letter ) {\r\n\t\treturn letter.toUpperCase();\r\n\t};\r\n\r\njQuery.fn = jQuery.prototype = {\r\n\r\n\t// The current version of jQuery being used\r\n\tjquery: version,\r\n\r\n\tconstructor: jQuery,\r\n\r\n\t// Start with an empty selector\r\n\tselector: \"\",\r\n\r\n\t// The default length of a jQuery object is 0\r\n\tlength: 0,\r\n\r\n\ttoArray: function() {\r\n\t\treturn slice.call( this );\r\n\t},\r\n\r\n\t// Get the Nth element in the matched element set OR\r\n\t// Get the whole matched element set as a clean array\r\n\tget: function( num ) {\r\n\t\treturn num != null ?\r\n\r\n\t\t\t// Return just the one element from the set\r\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\r\n\r\n\t\t\t// Return all the elements in a clean array\r\n\t\t\tslice.call( this );\r\n\t},\r\n\r\n\t// Take an array of elements and push it onto the stack\r\n\t// (returning the new matched element set)\r\n\tpushStack: function( elems ) {\r\n\r\n\t\t// Build a new jQuery matched element set\r\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\r\n\r\n\t\t// Add the old object onto the stack (as a reference)\r\n\t\tret.prevObject = this;\r\n\t\tret.context = this.context;\r\n\r\n\t\t// Return the newly-formed element set\r\n\t\treturn ret;\r\n\t},\r\n\r\n\t// Execute a callback for every element in the matched set.\r\n\teach: function( callback ) {\r\n\t\treturn jQuery.each( this, callback );\r\n\t},\r\n\r\n\tmap: function( callback ) {\r\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\r\n\t\t\treturn callback.call( elem, i, elem );\r\n\t\t} ) );\r\n\t},\r\n\r\n\tslice: function() {\r\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\r\n\t},\r\n\r\n\tfirst: function() {\r\n\t\treturn this.eq( 0 );\r\n\t},\r\n\r\n\tlast: function() {\r\n\t\treturn this.eq( -1 );\r\n\t},\r\n\r\n\teq: function( i ) {\r\n\t\tvar len = this.length,\r\n\t\t\tj = +i + ( i < 0 ? len : 0 );\r\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\r\n\t},\r\n\r\n\tend: function() {\r\n\t\treturn this.prevObject || this.constructor();\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t// Behaves like an Array's method, not like a jQuery method.\r\n\tpush: push,\r\n\tsort: deletedIds.sort,\r\n\tsplice: deletedIds.splice\r\n};\r\n\r\njQuery.extend = jQuery.fn.extend = function() {\r\n\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\ttarget = arguments[ 0 ] || {},\r\n\t\ti = 1,\r\n\t\tlength = arguments.length,\r\n\t\tdeep = false;\r\n\r\n\t// Handle a deep copy situation\r\n\tif ( typeof target === \"boolean\" ) {\r\n\t\tdeep = target;\r\n\r\n\t\t// skip the boolean and the target\r\n\t\ttarget = arguments[ i ] || {};\r\n\t\ti++;\r\n\t}\r\n\r\n\t// Handle case when target is a string or something (possible in deep copy)\r\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\r\n\t\ttarget = {};\r\n\t}\r\n\r\n\t// extend jQuery itself if only one argument is passed\r\n\tif ( i === length ) {\r\n\t\ttarget = this;\r\n\t\ti--;\r\n\t}\r\n\r\n\tfor ( ; i < length; i++ ) {\r\n\r\n\t\t// Only deal with non-null/undefined values\r\n\t\tif ( ( options = arguments[ i ] ) != null ) {\r\n\r\n\t\t\t// Extend the base object\r\n\t\t\tfor ( name in options ) {\r\n\t\t\t\tsrc = target[ name ];\r\n\t\t\t\tcopy = options[ name ];\r\n\r\n\t\t\t\t// Prevent never-ending loop\r\n\t\t\t\tif ( target === copy ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Recurse if we're merging plain objects or arrays\r\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\r\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\r\n\r\n\t\t\t\t\tif ( copyIsArray ) {\r\n\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Never move original objects, clone them\r\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\r\n\r\n\t\t\t\t// Don't bring in undefined values\r\n\t\t\t\t} else if ( copy !== undefined ) {\r\n\t\t\t\t\ttarget[ name ] = copy;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the modified object\r\n\treturn target;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Unique for each copy of jQuery on the page\r\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\r\n\r\n\t// Assume jQuery is ready without the ready module\r\n\tisReady: true,\r\n\r\n\terror: function( msg ) {\r\n\t\tthrow new Error( msg );\r\n\t},\r\n\r\n\tnoop: function() {},\r\n\r\n\t// See test/unit/core.js for details concerning isFunction.\r\n\t// Since version 1.3, DOM methods and functions like alert\r\n\t// aren't supported. They return false on IE (#2968).\r\n\tisFunction: function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"function\";\r\n\t},\r\n\r\n\tisArray: Array.isArray || function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"array\";\r\n\t},\r\n\r\n\tisWindow: function( obj ) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj != null && obj == obj.window;\r\n\t},\r\n\r\n\tisNumeric: function( obj ) {\r\n\r\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\r\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\r\n\t\t// subtraction forces infinities to NaN\r\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\r\n\t\tvar realStringObj = obj && obj.toString();\r\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\r\n\t},\r\n\r\n\tisEmptyObject: function( obj ) {\r\n\t\tvar name;\r\n\t\tfor ( name in obj ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\tisPlainObject: function( obj ) {\r\n\t\tvar key;\r\n\r\n\t\t// Must be an Object.\r\n\t\t// Because of IE, we also have to check the presence of the constructor property.\r\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\r\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\t// Not own constructor property must be Object\r\n\t\t\tif ( obj.constructor &&\r\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\r\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch ( e ) {\r\n\r\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Handle iteration over inherited properties before own properties.\r\n\t\tif ( !support.ownFirst ) {\r\n\t\t\tfor ( key in obj ) {\r\n\t\t\t\treturn hasOwn.call( obj, key );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Own properties are enumerated firstly, so to speed up,\r\n\t\t// if last one is own, then all properties are own.\r\n\t\tfor ( key in obj ) {}\r\n\r\n\t\treturn key === undefined || hasOwn.call( obj, key );\r\n\t},\r\n\r\n\ttype: function( obj ) {\r\n\t\tif ( obj == null ) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\t\ttypeof obj;\r\n\t},\r\n\r\n\t// Workarounds based on findings by Jim Driscoll\r\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\r\n\tglobalEval: function( data ) {\r\n\t\tif ( data && jQuery.trim( data ) ) {\r\n\r\n\t\t\t// We use execScript on Internet Explorer\r\n\t\t\t// We use an anonymous function so that context is window\r\n\t\t\t// rather than jQuery in Firefox\r\n\t\t\t( window.execScript || function( data ) {\r\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\r\n\t\t\t} )( data );\r\n\t\t}\r\n\t},\r\n\r\n\t// Convert dashed to camelCase; used by the css and data modules\r\n\t// Microsoft forgot to hump their vendor prefix (#9572)\r\n\tcamelCase: function( string ) {\r\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\r\n\t},\r\n\r\n\tnodeName: function( elem, name ) {\r\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\r\n\t},\r\n\r\n\teach: function( obj, callback ) {\r\n\t\tvar length, i = 0;\r\n\r\n\t\tif ( isArrayLike( obj ) ) {\r\n\t\t\tlength = obj.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\ttrim: function( text ) {\r\n\t\treturn text == null ?\r\n\t\t\t\"\" :\r\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\r\n\t},\r\n\r\n\t// results is for internal usage only\r\n\tmakeArray: function( arr, results ) {\r\n\t\tvar ret = results || [];\r\n\r\n\t\tif ( arr != null ) {\r\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\r\n\t\t\t\tjQuery.merge( ret,\r\n\t\t\t\t\ttypeof arr === \"string\" ?\r\n\t\t\t\t\t[ arr ] : arr\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tpush.call( ret, arr );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\tinArray: function( elem, arr, i ) {\r\n\t\tvar len;\r\n\r\n\t\tif ( arr ) {\r\n\t\t\tif ( indexOf ) {\r\n\t\t\t\treturn indexOf.call( arr, elem, i );\r\n\t\t\t}\r\n\r\n\t\t\tlen = arr.length;\r\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\r\n\r\n\t\t\tfor ( ; i < len; i++ ) {\r\n\r\n\t\t\t\t// Skip accessing in sparse arrays\r\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tmerge: function( first, second ) {\r\n\t\tvar len = +second.length,\r\n\t\t\tj = 0,\r\n\t\t\ti = first.length;\r\n\r\n\t\twhile ( j < len ) {\r\n\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\r\n\t\tif ( len !== len ) {\r\n\t\t\twhile ( second[ j ] !== undefined ) {\r\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfirst.length = i;\r\n\r\n\t\treturn first;\r\n\t},\r\n\r\n\tgrep: function( elems, callback, invert ) {\r\n\t\tvar callbackInverse,\r\n\t\t\tmatches = [],\r\n\t\t\ti = 0,\r\n\t\t\tlength = elems.length,\r\n\t\t\tcallbackExpect = !invert;\r\n\r\n\t\t// Go through the array, only saving the items\r\n\t\t// that pass the validator function\r\n\t\tfor ( ; i < length; i++ ) {\r\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\r\n\t\t\tif ( callbackInverse !== callbackExpect ) {\r\n\t\t\t\tmatches.push( elems[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\t// arg is for internal usage only\r\n\tmap: function( elems, callback, arg ) {\r\n\t\tvar length, value,\r\n\t\t\ti = 0,\r\n\t\t\tret = [];\r\n\r\n\t\t// Go through the array, translating each of the items to their new values\r\n\t\tif ( isArrayLike( elems ) ) {\r\n\t\t\tlength = elems.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Go through every key on the object,\r\n\t\t} else {\r\n\t\t\tfor ( i in elems ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Flatten any nested arrays\r\n\t\treturn concat.apply( [], ret );\r\n\t},\r\n\r\n\t// A global GUID counter for objects\r\n\tguid: 1,\r\n\r\n\t// Bind a function to a context, optionally partially applying any\r\n\t// arguments.\r\n\tproxy: function( fn, context ) {\r\n\t\tvar args, proxy, tmp;\r\n\r\n\t\tif ( typeof context === \"string\" ) {\r\n\t\t\ttmp = fn[ context ];\r\n\t\t\tcontext = fn;\r\n\t\t\tfn = tmp;\r\n\t\t}\r\n\r\n\t\t// Quick check to determine if target is callable, in the spec\r\n\t\t// this throws a TypeError, but we will just return undefined.\r\n\t\tif ( !jQuery.isFunction( fn ) ) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\t// Simulated bind\r\n\t\targs = slice.call( arguments, 2 );\r\n\t\tproxy = function() {\r\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\r\n\t\t};\r\n\r\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\r\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\r\n\r\n\t\treturn proxy;\r\n\t},\r\n\r\n\tnow: function() {\r\n\t\treturn +( new Date() );\r\n\t},\r\n\r\n\t// jQuery.support is not used in Core but other projects attach their\r\n\t// properties to it so it needs to exist.\r\n\tsupport: support\r\n} );\r\n\r\n// JSHint would error on this code due to the Symbol not being defined in ES5.\r\n// Defining this global in .jshintrc would create a danger of using the global\r\n// unguarded in another place, it seems safer to just disable JSHint for these\r\n// three lines.\r\n/* jshint ignore: start */\r\nif ( typeof Symbol === \"function\" ) {\r\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\r\n}\r\n/* jshint ignore: end */\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\nfunction( i, name ) {\r\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n} );\r\n\r\nfunction isArrayLike( obj ) {\r\n\r\n\t// Support: iOS 8.2 (not reproducible in simulator)\r\n\t// `in` check used to prevent JIT error (gh-2145)\r\n\t// hasOwn isn't used here due to false negatives\r\n\t// regarding Nodelist length in IE\r\n\tvar length = !!obj && \"length\" in obj && obj.length,\r\n\t\ttype = jQuery.type( obj );\r\n\r\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn type === \"array\" || length === 0 ||\r\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\r\n}\r\nvar Sizzle =\r\n/*!\r\n * Sizzle CSS Selector Engine v2.2.1\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2015-10-17\r\n */\r\n(function( window ) {\r\n\r\nvar i,\r\n\tsupport,\r\n\tExpr,\r\n\tgetText,\r\n\tisXML,\r\n\ttokenize,\r\n\tcompile,\r\n\tselect,\r\n\toutermostContext,\r\n\tsortInput,\r\n\thasDuplicate,\r\n\r\n\t// Local document vars\r\n\tsetDocument,\r\n\tdocument,\r\n\tdocElem,\r\n\tdocumentIsHTML,\r\n\trbuggyQSA,\r\n\trbuggyMatches,\r\n\tmatches,\r\n\tcontains,\r\n\r\n\t// Instance-specific data\r\n\texpando = \"sizzle\" + 1 * new Date(),\r\n\tpreferredDoc = window.document,\r\n\tdirruns = 0,\r\n\tdone = 0,\r\n\tclassCache = createCache(),\r\n\ttokenCache = createCache(),\r\n\tcompilerCache = createCache(),\r\n\tsortOrder = function( a, b ) {\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// General-purpose constants\r\n\tMAX_NEGATIVE = 1 << 31,\r\n\r\n\t// Instance methods\r\n\thasOwn = ({}).hasOwnProperty,\r\n\tarr = [],\r\n\tpop = arr.pop,\r\n\tpush_native = arr.push,\r\n\tpush = arr.push,\r\n\tslice = arr.slice,\r\n\t// Use a stripped-down indexOf as it's faster than native\r\n\t// http://jsperf.com/thor-indexof-vs-for/5\r\n\tindexOf = function( list, elem ) {\r\n\t\tvar i = 0,\r\n\t\t\tlen = list.length;\r\n\t\tfor ( ; i < len; i++ ) {\r\n\t\t\tif ( list[i] === elem ) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\r\n\r\n\t// Regular expressions\r\n\r\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\r\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\r\n\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\r\n\r\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\r\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\r\n\t\t// Operator (capture 2)\r\n\t\t\"*([*^$|!~]?=)\" + whitespace +\r\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\r\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\r\n\t\t\"*\\\\]\",\r\n\r\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\r\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\r\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\r\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\r\n\t\t// 2. simple (capture 6)\r\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\r\n\t\t// 3. anything else (capture 2)\r\n\t\t\".*\" +\r\n\t\t\")\\\\)|)\",\r\n\r\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\r\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\r\n\r\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\r\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\r\n\r\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\r\n\r\n\trpseudo = new RegExp( pseudos ),\r\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\r\n\r\n\tmatchExpr = {\r\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\r\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\r\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\r\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\r\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\r\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\r\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\r\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\r\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\r\n\t\t// For use in libraries implementing .is()\r\n\t\t// We use this for POS matching in `select`\r\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\r\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\r\n\t},\r\n\r\n\trinputs = /^(?:input|select|textarea|button)$/i,\r\n\trheader = /^h\\d$/i,\r\n\r\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\r\n\r\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\r\n\r\n\trsibling = /[+~]/,\r\n\trescape = /'|\\\\/g,\r\n\r\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\r\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\r\n\tfunescape = function( _, escaped, escapedWhitespace ) {\r\n\t\tvar high = \"0x\" + escaped - 0x10000;\r\n\t\t// NaN means non-codepoint\r\n\t\t// Support: Firefox<24\r\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\r\n\t\treturn high !== high || escapedWhitespace ?\r\n\t\t\tescaped :\r\n\t\t\thigh < 0 ?\r\n\t\t\t\t// BMP codepoint\r\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\r\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\r\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\r\n\t},\r\n\r\n\t// Used for iframes\r\n\t// See setDocument()\r\n\t// Removing the function wrapper causes a \"Permission Denied\"\r\n\t// error in IE\r\n\tunloadHandler = function() {\r\n\t\tsetDocument();\r\n\t};\r\n\r\n// Optimize for push.apply( _, NodeList )\r\ntry {\r\n\tpush.apply(\r\n\t\t(arr = slice.call( preferredDoc.childNodes )),\r\n\t\tpreferredDoc.childNodes\r\n\t);\r\n\t// Support: Android<4.0\r\n\t// Detect silently failing push.apply\r\n\tarr[ preferredDoc.childNodes.length ].nodeType;\r\n} catch ( e ) {\r\n\tpush = { apply: arr.length ?\r\n\r\n\t\t// Leverage slice if possible\r\n\t\tfunction( target, els ) {\r\n\t\t\tpush_native.apply( target, slice.call(els) );\r\n\t\t} :\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Otherwise append directly\r\n\t\tfunction( target, els ) {\r\n\t\t\tvar j = target.length,\r\n\t\t\t\ti = 0;\r\n\t\t\t// Can't trust NodeList.length\r\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\r\n\t\t\ttarget.length = j - 1;\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction Sizzle( selector, context, results, seed ) {\r\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\r\n\t\tnewContext = context && context.ownerDocument,\r\n\r\n\t\t// nodeType defaults to 9, since context defaults to document\r\n\t\tnodeType = context ? context.nodeType : 9;\r\n\r\n\tresults = results || [];\r\n\r\n\t// Return early from calls with invalid selector or context\r\n\tif ( typeof selector !== \"string\" || !selector ||\r\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\r\n\tif ( !seed ) {\r\n\r\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\r\n\t\t\tsetDocument( context );\r\n\t\t}\r\n\t\tcontext = context || document;\r\n\r\n\t\tif ( documentIsHTML ) {\r\n\r\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\r\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\r\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\r\n\r\n\t\t\t\t// ID selector\r\n\t\t\t\tif ( (m = match[1]) ) {\r\n\r\n\t\t\t\t\t// Document context\r\n\t\t\t\t\tif ( nodeType === 9 ) {\r\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\r\n\r\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\t\tif ( elem.id === m ) {\r\n\t\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Element context\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\r\n\t\t\t\t\t\t\tcontains( context, elem ) &&\r\n\t\t\t\t\t\t\telem.id === m ) {\r\n\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Type selector\r\n\t\t\t\t} else if ( match[2] ) {\r\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\r\n\t\t\t\t\treturn results;\r\n\r\n\t\t\t\t// Class selector\r\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\r\n\t\t\t\t\tcontext.getElementsByClassName ) {\r\n\r\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Take advantage of querySelectorAll\r\n\t\t\tif ( support.qsa &&\r\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\r\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r\n\r\n\t\t\t\tif ( nodeType !== 1 ) {\r\n\t\t\t\t\tnewContext = context;\r\n\t\t\t\t\tnewSelector = selector;\r\n\r\n\t\t\t\t// qSA looks outside Element context, which is not what we want\r\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\r\n\t\t\t\t// Support: IE <=8\r\n\t\t\t\t// Exclude object elements\r\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\r\n\r\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\r\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\r\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prefix every selector in the list\r\n\t\t\t\t\tgroups = tokenize( selector );\r\n\t\t\t\t\ti = groups.length;\r\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewSelector = groups.join( \",\" );\r\n\r\n\t\t\t\t\t// Expand context for sibling selectors\r\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\r\n\t\t\t\t\t\tcontext;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( newSelector ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tpush.apply( results,\r\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t} catch ( qsaError ) {\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tif ( nid === expando ) {\r\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// All others\r\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\r\n}\r\n\r\n/**\r\n * Create key-value caches of limited size\r\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\r\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\r\n *\tdeleting the oldest entry\r\n */\r\nfunction createCache() {\r\n\tvar keys = [];\r\n\r\n\tfunction cache( key, value ) {\r\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\r\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\r\n\t\t\t// Only keep the most recent entries\r\n\t\t\tdelete cache[ keys.shift() ];\r\n\t\t}\r\n\t\treturn (cache[ key + \" \" ] = value);\r\n\t}\r\n\treturn cache;\r\n}\r\n\r\n/**\r\n * Mark a function for special use by Sizzle\r\n * @param {Function} fn The function to mark\r\n */\r\nfunction markFunction( fn ) {\r\n\tfn[ expando ] = true;\r\n\treturn fn;\r\n}\r\n\r\n/**\r\n * Support testing using an element\r\n * @param {Function} fn Passed the created div and expects a boolean result\r\n */\r\nfunction assert( fn ) {\r\n\tvar div = document.createElement(\"div\");\r\n\r\n\ttry {\r\n\t\treturn !!fn( div );\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t} finally {\r\n\t\t// Remove from its parent by default\r\n\t\tif ( div.parentNode ) {\r\n\t\t\tdiv.parentNode.removeChild( div );\r\n\t\t}\r\n\t\t// release memory in IE\r\n\t\tdiv = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the same handler for all of the specified attrs\r\n * @param {String} attrs Pipe-separated list of attributes\r\n * @param {Function} handler The method that will be applied\r\n */\r\nfunction addHandle( attrs, handler ) {\r\n\tvar arr = attrs.split(\"|\"),\r\n\t\ti = arr.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tExpr.attrHandle[ arr[i] ] = handler;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks document order of two siblings\r\n * @param {Element} a\r\n * @param {Element} b\r\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\r\n */\r\nfunction siblingCheck( a, b ) {\r\n\tvar cur = b && a,\r\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\r\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\r\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\r\n\r\n\t// Use IE sourceIndex if available on both nodes\r\n\tif ( diff ) {\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t// Check if b follows a\r\n\tif ( cur ) {\r\n\t\twhile ( (cur = cur.nextSibling) ) {\r\n\t\t\tif ( cur === b ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn a ? 1 : -1;\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for input types\r\n * @param {String} type\r\n */\r\nfunction createInputPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn name === \"input\" && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for buttons\r\n * @param {String} type\r\n */\r\nfunction createButtonPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for positionals\r\n * @param {Function} fn\r\n */\r\nfunction createPositionalPseudo( fn ) {\r\n\treturn markFunction(function( argument ) {\r\n\t\targument = +argument;\r\n\t\treturn markFunction(function( seed, matches ) {\r\n\t\t\tvar j,\r\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n\t\t\t\ti = matchIndexes.length;\r\n\r\n\t\t\t// Match elements found at the specified indexes\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks a node for validity as a Sizzle context\r\n * @param {Element|Object=} context\r\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\r\n */\r\nfunction testContext( context ) {\r\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\r\n}\r\n\r\n// Expose support vars for convenience\r\nsupport = Sizzle.support = {};\r\n\r\n/**\r\n * Detects XML nodes\r\n * @param {Element|Object} elem An element or a document\r\n * @returns {Boolean} True iff elem is a non-HTML XML node\r\n */\r\nisXML = Sizzle.isXML = function( elem ) {\r\n\t// documentElement is verified for cases where it doesn't yet exist\r\n\t// (such as loading iframes in IE - #4833)\r\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\r\n};\r\n\r\n/**\r\n * Sets document-related variables once based on the current document\r\n * @param {Element|Object} [doc] An element or document object to use to set the document\r\n * @returns {Object} Returns the current document\r\n */\r\nsetDocument = Sizzle.setDocument = function( node ) {\r\n\tvar hasCompare, parent,\r\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\r\n\r\n\t// Return early if doc is invalid or already selected\r\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\r\n\t\treturn document;\r\n\t}\r\n\r\n\t// Update global variables\r\n\tdocument = doc;\r\n\tdocElem = document.documentElement;\r\n\tdocumentIsHTML = !isXML( document );\r\n\r\n\t// Support: IE 9-11, Edge\r\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\r\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\r\n\t\t// Support: IE 11\r\n\t\tif ( parent.addEventListener ) {\r\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\r\n\r\n\t\t// Support: IE 9 - 10 only\r\n\t\t} else if ( parent.attachEvent ) {\r\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\r\n\t\t}\r\n\t}\r\n\r\n\t/* Attributes\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Support: IE<8\r\n\t// Verify that getAttribute really returns attributes and not properties\r\n\t// (excepting IE8 booleans)\r\n\tsupport.attributes = assert(function( div ) {\r\n\t\tdiv.className = \"i\";\r\n\t\treturn !div.getAttribute(\"className\");\r\n\t});\r\n\r\n\t/* getElement(s)By*\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Check if getElementsByTagName(\"*\") returns only elements\r\n\tsupport.getElementsByTagName = assert(function( div ) {\r\n\t\tdiv.appendChild( document.createComment(\"\") );\r\n\t\treturn !div.getElementsByTagName(\"*\").length;\r\n\t});\r\n\r\n\t// Support: IE<9\r\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\r\n\r\n\t// Support: IE<10\r\n\t// Check if getElementById returns elements by name\r\n\t// The broken getElementById methods don't pick up programatically-set names,\r\n\t// so use a roundabout getElementsByName test\r\n\tsupport.getById = assert(function( div ) {\r\n\t\tdocElem.appendChild( div ).id = expando;\r\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\r\n\t});\r\n\r\n\t// ID find and filter\r\n\tif ( support.getById ) {\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar m = context.getElementById( id );\r\n\t\t\t\treturn m ? [ m ] : [];\r\n\t\t\t}\r\n\t\t};\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t} else {\r\n\t\t// Support: IE6/7\r\n\t\t// getElementById is not reliable as a find shortcut\r\n\t\tdelete Expr.find[\"ID\"];\r\n\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\r\n\t\t\t\t\telem.getAttributeNode(\"id\");\r\n\t\t\t\treturn node && node.value === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t// Tag\r\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\r\n\t\tfunction( tag, context ) {\r\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\t\t\treturn context.getElementsByTagName( tag );\r\n\r\n\t\t\t// DocumentFragment nodes don't have gEBTN\r\n\t\t\t} else if ( support.qsa ) {\r\n\t\t\t\treturn context.querySelectorAll( tag );\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\tfunction( tag, context ) {\r\n\t\t\tvar elem,\r\n\t\t\t\ttmp = [],\r\n\t\t\t\ti = 0,\r\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\r\n\t\t\t\tresults = context.getElementsByTagName( tag );\r\n\r\n\t\t\t// Filter out possible comments\r\n\t\t\tif ( tag === \"*\" ) {\r\n\t\t\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\ttmp.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn tmp;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t// Class\r\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\r\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\r\n\t\t\treturn context.getElementsByClassName( className );\r\n\t\t}\r\n\t};\r\n\r\n\t/* QSA/matchesSelector\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// QSA and matchesSelector support\r\n\r\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n\trbuggyMatches = [];\r\n\r\n\t// qSa(:focus) reports false when true (Chrome 21)\r\n\t// We allow this because of a bug in IE8/9 that throws an error\r\n\t// whenever `document.activeElement` is accessed on an iframe\r\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\r\n\t// See http://bugs.jquery.com/ticket/13378\r\n\trbuggyQSA = [];\r\n\r\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\r\n\t\t// Build QSA regex\r\n\t\t// Regex strategy adopted from Diego Perini\r\n\t\tassert(function( div ) {\r\n\t\t\t// Select is set to empty string on purpose\r\n\t\t\t// This is to test IE's treatment of not explicitly\r\n\t\t\t// setting a boolean content attribute,\r\n\t\t\t// since its presence should be enough\r\n\t\t\t// http://bugs.jquery.com/ticket/12359\r\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: IE8, Opera 11-12.16\r\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\r\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\r\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\r\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\r\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\r\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\"~=\");\r\n\t\t\t}\r\n\r\n\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\r\n\t\t\t\trbuggyQSA.push(\":checked\");\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Safari 8+, iOS 8+\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\r\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\r\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Support: Windows 8 Native Apps\r\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\r\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Enforce case-sensitivity of name attribute\r\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\r\n\t\t\t}\r\n\r\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\r\n\t\t\tdiv.querySelectorAll(\"*,:x\");\r\n\t\t\trbuggyQSA.push(\",.*:\");\r\n\t\t});\r\n\t}\r\n\r\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\r\n\t\tdocElem.webkitMatchesSelector ||\r\n\t\tdocElem.mozMatchesSelector ||\r\n\t\tdocElem.oMatchesSelector ||\r\n\t\tdocElem.msMatchesSelector) )) ) {\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Check to see if it's possible to do matchesSelector\r\n\t\t\t// on a disconnected node (IE 9)\r\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\r\n\r\n\t\t\t// This should fail with an exception\r\n\t\t\t// Gecko does not error, returns false instead\r\n\t\t\tmatches.call( div, \"[s!='']:x\" );\r\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\r\n\t\t});\r\n\t}\r\n\r\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\r\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\r\n\r\n\t/* Contains\r\n\t---------------------------------------------------------------------- */\r\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\r\n\r\n\t// Element contains another\r\n\t// Purposefully self-exclusive\r\n\t// As in, an element does not contain itself\r\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\r\n\t\tfunction( a, b ) {\r\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n\t\t\t\tbup = b && b.parentNode;\r\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\r\n\t\t\t\tadown.contains ?\r\n\t\t\t\t\tadown.contains( bup ) :\r\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\r\n\t\t\t));\r\n\t\t} :\r\n\t\tfunction( a, b ) {\r\n\t\t\tif ( b ) {\r\n\t\t\t\twhile ( (b = b.parentNode) ) {\r\n\t\t\t\t\tif ( b === a ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t/* Sorting\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Document order sorting\r\n\tsortOrder = hasCompare ?\r\n\tfunction( a, b ) {\r\n\r\n\t\t// Flag for duplicate removal\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Sort on method existence if only one input has compareDocumentPosition\r\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n\t\tif ( compare ) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\r\n\t\t// Calculate position if both inputs belong to the same document\r\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\r\n\t\t\ta.compareDocumentPosition( b ) :\r\n\r\n\t\t\t// Otherwise we know they are disconnected\r\n\t\t\t1;\r\n\r\n\t\t// Disconnected nodes\r\n\t\tif ( compare & 1 ||\r\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\r\n\r\n\t\t\t// Choose the first element that is related to our preferred document\r\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Maintain original order\r\n\t\t\treturn sortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\t\t}\r\n\r\n\t\treturn compare & 4 ? -1 : 1;\r\n\t} :\r\n\tfunction( a, b ) {\r\n\t\t// Exit early if the nodes are identical\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\taup = a.parentNode,\r\n\t\t\tbup = b.parentNode,\r\n\t\t\tap = [ a ],\r\n\t\t\tbp = [ b ];\r\n\r\n\t\t// Parentless nodes are either documents or disconnected\r\n\t\tif ( !aup || !bup ) {\r\n\t\t\treturn a === document ? -1 :\r\n\t\t\t\tb === document ? 1 :\r\n\t\t\t\taup ? -1 :\r\n\t\t\t\tbup ? 1 :\r\n\t\t\t\tsortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\r\n\t\t// If the nodes are siblings, we can do a quick check\r\n\t\t} else if ( aup === bup ) {\r\n\t\t\treturn siblingCheck( a, b );\r\n\t\t}\r\n\r\n\t\t// Otherwise we need full lists of their ancestors for comparison\r\n\t\tcur = a;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tap.unshift( cur );\r\n\t\t}\r\n\t\tcur = b;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tbp.unshift( cur );\r\n\t\t}\r\n\r\n\t\t// Walk down the tree looking for a discrepancy\r\n\t\twhile ( ap[i] === bp[i] ) {\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn i ?\r\n\t\t\t// Do a sibling check if the nodes have a common ancestor\r\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\r\n\r\n\t\t\t// Otherwise nodes in our document sort first\r\n\t\t\tap[i] === preferredDoc ? -1 :\r\n\t\t\tbp[i] === preferredDoc ? 1 :\r\n\t\t\t0;\r\n\t};\r\n\r\n\treturn document;\r\n};\r\n\r\nSizzle.matches = function( expr, elements ) {\r\n\treturn Sizzle( expr, null, null, elements );\r\n};\r\n\r\nSizzle.matchesSelector = function( elem, expr ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\t// Make sure that attribute selectors are quoted\r\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\r\n\r\n\tif ( support.matchesSelector && documentIsHTML &&\r\n\t\t!compilerCache[ expr + \" \" ] &&\r\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\r\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\r\n\r\n\t\ttry {\r\n\t\t\tvar ret = matches.call( elem, expr );\r\n\r\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\r\n\t\t\tif ( ret || support.disconnectedMatch ||\r\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n\t\t\t\t\t// fragment in IE 9\r\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\t}\r\n\r\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\r\n};\r\n\r\nSizzle.contains = function( context, elem ) {\r\n\t// Set document vars if needed\r\n\tif ( ( context.ownerDocument || context ) !== document ) {\r\n\t\tsetDocument( context );\r\n\t}\r\n\treturn contains( context, elem );\r\n};\r\n\r\nSizzle.attr = function( elem, name ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\r\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\r\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\r\n\t\t\tfn( elem, name, !documentIsHTML ) :\r\n\t\t\tundefined;\r\n\r\n\treturn val !== undefined ?\r\n\t\tval :\r\n\t\tsupport.attributes || !documentIsHTML ?\r\n\t\t\telem.getAttribute( name ) :\r\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\r\n\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n};\r\n\r\nSizzle.error = function( msg ) {\r\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\r\n};\r\n\r\n/**\r\n * Document sorting and removing duplicates\r\n * @param {ArrayLike} results\r\n */\r\nSizzle.uniqueSort = function( results ) {\r\n\tvar elem,\r\n\t\tduplicates = [],\r\n\t\tj = 0,\r\n\t\ti = 0;\r\n\r\n\t// Unless we *know* we can detect duplicates, assume their presence\r\n\thasDuplicate = !support.detectDuplicates;\r\n\tsortInput = !support.sortStable && results.slice( 0 );\r\n\tresults.sort( sortOrder );\r\n\r\n\tif ( hasDuplicate ) {\r\n\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\tif ( elem === results[ i ] ) {\r\n\t\t\t\tj = duplicates.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile ( j-- ) {\r\n\t\t\tresults.splice( duplicates[ j ], 1 );\r\n\t\t}\r\n\t}\r\n\r\n\t// Clear input after sorting to release objects\r\n\t// See https://github.com/jquery/sizzle/pull/225\r\n\tsortInput = null;\r\n\r\n\treturn results;\r\n};\r\n\r\n/**\r\n * Utility function for retrieving the text value of an array of DOM nodes\r\n * @param {Array|Element} elem\r\n */\r\ngetText = Sizzle.getText = function( elem ) {\r\n\tvar node,\r\n\t\tret = \"\",\r\n\t\ti = 0,\r\n\t\tnodeType = elem.nodeType;\r\n\r\n\tif ( !nodeType ) {\r\n\t\t// If no nodeType, this is expected to be an array\r\n\t\twhile ( (node = elem[i++]) ) {\r\n\t\t\t// Do not traverse comment nodes\r\n\t\t\tret += getText( node );\r\n\t\t}\r\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n\t\t// Use textContent for elements\r\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\r\n\t\tif ( typeof elem.textContent === \"string\" ) {\r\n\t\t\treturn elem.textContent;\r\n\t\t} else {\r\n\t\t\t// Traverse its children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tret += getText( elem );\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n\t\treturn elem.nodeValue;\r\n\t}\r\n\t// Do not include comment or processing instruction nodes\r\n\r\n\treturn ret;\r\n};\r\n\r\nExpr = Sizzle.selectors = {\r\n\r\n\t// Can be adjusted by the user\r\n\tcacheLength: 50,\r\n\r\n\tcreatePseudo: markFunction,\r\n\r\n\tmatch: matchExpr,\r\n\r\n\tattrHandle: {},\r\n\r\n\tfind: {},\r\n\r\n\trelative: {\r\n\t\t\">\": { dir: \"parentNode\", first: true },\r\n\t\t\" \": { dir: \"parentNode\" },\r\n\t\t\"+\": { dir: \"previousSibling\", first: true },\r\n\t\t\"~\": { dir: \"previousSibling\" }\r\n\t},\r\n\r\n\tpreFilter: {\r\n\t\t\"ATTR\": function( match ) {\r\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\r\n\r\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\r\n\r\n\t\t\tif ( match[2] === \"~=\" ) {\r\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\r\n\t\t\t}\r\n\r\n\t\t\treturn match.slice( 0, 4 );\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( match ) {\r\n\t\t\t/* matches from matchExpr[\"CHILD\"]\r\n\t\t\t\t1 type (only|nth|...)\r\n\t\t\t\t2 what (child|of-type)\r\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\r\n\t\t\t\t5 sign of xn-component\r\n\t\t\t\t6 x of xn-component\r\n\t\t\t\t7 sign of y-component\r\n\t\t\t\t8 y of y-component\r\n\t\t\t*/\r\n\t\t\tmatch[1] = match[1].toLowerCase();\r\n\r\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\r\n\t\t\t\t// nth-* requires argument\r\n\t\t\t\tif ( !match[3] ) {\r\n\t\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n\t\t\t\t// remember that false/true cast respectively to 0/1\r\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\r\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\r\n\r\n\t\t\t// other types prohibit arguments\r\n\t\t\t} else if ( match[3] ) {\r\n\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( match ) {\r\n\t\t\tvar excess,\r\n\t\t\t\tunquoted = !match[6] && match[2];\r\n\r\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// Accept quoted arguments as-is\r\n\t\t\tif ( match[3] ) {\r\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\r\n\r\n\t\t\t// Strip excess characters from unquoted arguments\r\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\r\n\t\t\t\t// Get excess from tokenize (recursively)\r\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n\t\t\t\t// advance to the next closing parenthesis\r\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\r\n\r\n\t\t\t\t// excess is a negative index\r\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\r\n\t\t\t}\r\n\r\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n\t\t\treturn match.slice( 0, 3 );\r\n\t\t}\r\n\t},\r\n\r\n\tfilter: {\r\n\r\n\t\t\"TAG\": function( nodeNameSelector ) {\r\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn nodeNameSelector === \"*\" ?\r\n\t\t\t\tfunction() { return true; } :\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CLASS\": function( className ) {\r\n\t\t\tvar pattern = classCache[ className + \" \" ];\r\n\r\n\t\t\treturn pattern ||\r\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\r\n\t\t\t\tclassCache( className, function( elem ) {\r\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t\"ATTR\": function( name, operator, check ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n\r\n\t\t\t\tif ( result == null ) {\r\n\t\t\t\t\treturn operator === \"!=\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( !operator ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult += \"\";\r\n\r\n\t\t\t\treturn operator === \"=\" ? result === check :\r\n\t\t\t\t\toperator === \"!=\" ? result !== check :\r\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\r\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\r\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\r\n\t\t\t\t\tfalse;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\r\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\r\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\r\n\t\t\t\tofType = what === \"of-type\";\r\n\r\n\t\t\treturn first === 1 && last === 0 ?\r\n\r\n\t\t\t\t// Shortcut for :nth-*(n)\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn !!elem.parentNode;\r\n\t\t\t\t} :\r\n\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\r\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\r\n\t\t\t\t\t\tparent = elem.parentNode,\r\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\r\n\t\t\t\t\t\tuseCache = !xml && !ofType,\r\n\t\t\t\t\t\tdiff = false;\r\n\r\n\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\r\n\t\t\t\t\t\tif ( simple ) {\r\n\t\t\t\t\t\t\twhile ( dir ) {\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\r\n\t\t\t\t\t\t\t\t\tif ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\r\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\r\n\r\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\r\n\t\t\t\t\t\tif ( forward && useCache ) {\r\n\r\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\r\n\r\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\tnode = parent;\r\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\r\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\r\n\r\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\r\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\r\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\r\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\r\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Use previously-cached element index if available\r\n\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// xml :nth-child(...)\r\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\r\n\t\t\t\t\t\t\tif ( diff === false ) {\r\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\r\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\r\n\t\t\t\t\t\t\t\t\t\t++diff ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\r\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\r\n\t\t\t\t\t\tdiff -= last;\r\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( pseudo, argument ) {\r\n\t\t\t// pseudo-class names are case-insensitive\r\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n\t\t\t// Remember that setFilters inherits from pseudos\r\n\t\t\tvar args,\r\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\r\n\r\n\t\t\t// The user may use createPseudo to indicate that\r\n\t\t\t// arguments are needed to create the filter function\r\n\t\t\t// just as Sizzle does\r\n\t\t\tif ( fn[ expando ] ) {\r\n\t\t\t\treturn fn( argument );\r\n\t\t\t}\r\n\r\n\t\t\t// But maintain support for old signatures\r\n\t\t\tif ( fn.length > 1 ) {\r\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\r\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n\t\t\t\t\t\tvar idx,\r\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n\t\t\t\t\t\t\ti = matched.length;\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\r\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}) :\r\n\t\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\t\treturn fn( elem, 0, args );\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t},\r\n\r\n\tpseudos: {\r\n\t\t// Potentially complex pseudos\r\n\t\t\"not\": markFunction(function( selector ) {\r\n\t\t\t// Trim the selector passed to compile\r\n\t\t\t// to avoid treating leading and trailing\r\n\t\t\t// spaces as combinators\r\n\t\t\tvar input = [],\r\n\t\t\t\tresults = [],\r\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\r\n\r\n\t\t\treturn matcher[ expando ] ?\r\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n\t\t\t\t\tvar elem,\r\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n\t\t\t\t\t\ti = seed.length;\r\n\r\n\t\t\t\t\t// Match elements unmatched by `matcher`\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}) :\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tinput[0] = elem;\r\n\t\t\t\t\tmatcher( input, null, xml, results );\r\n\t\t\t\t\t// Don't keep the element (issue #299)\r\n\t\t\t\t\tinput[0] = null;\r\n\t\t\t\t\treturn !results.pop();\r\n\t\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"has\": markFunction(function( selector ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"contains\": markFunction(function( text ) {\r\n\t\t\ttext = text.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// \"Whether an element is represented by a :lang() selector\r\n\t\t// is based solely on the element's language value\r\n\t\t// being equal to the identifier C,\r\n\t\t// or beginning with the identifier C immediately followed by \"-\".\r\n\t\t// The matching of C against the element's language value is performed case-insensitively.\r\n\t\t// The identifier C does not have to be a valid language name.\"\r\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\r\n\t\t\"lang\": markFunction( function( lang ) {\r\n\t\t\t// lang value must be a valid identifier\r\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\r\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\r\n\t\t\t}\r\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar elemLang;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\r\n\t\t\t\t\t\telem.lang :\r\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\r\n\r\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\r\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// Miscellaneous\r\n\t\t\"target\": function( elem ) {\r\n\t\t\tvar hash = window.location && window.location.hash;\r\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\r\n\t\t},\r\n\r\n\t\t\"root\": function( elem ) {\r\n\t\t\treturn elem === docElem;\r\n\t\t},\r\n\r\n\t\t\"focus\": function( elem ) {\r\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n\t\t},\r\n\r\n\t\t// Boolean properties\r\n\t\t\"enabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === false;\r\n\t\t},\r\n\r\n\t\t\"disabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === true;\r\n\t\t},\r\n\r\n\t\t\"checked\": function( elem ) {\r\n\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\r\n\t\t},\r\n\r\n\t\t\"selected\": function( elem ) {\r\n\t\t\t// Accessing this property makes selected-by-default\r\n\t\t\t// options in Safari work properly\r\n\t\t\tif ( elem.parentNode ) {\r\n\t\t\t\telem.parentNode.selectedIndex;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.selected === true;\r\n\t\t},\r\n\r\n\t\t// Contents\r\n\t\t\"empty\": function( elem ) {\r\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\r\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\r\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tif ( elem.nodeType < 6 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t\"parent\": function( elem ) {\r\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\r\n\t\t},\r\n\r\n\t\t// Element/input types\r\n\t\t\"header\": function( elem ) {\r\n\t\t\treturn rheader.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"input\": function( elem ) {\r\n\t\t\treturn rinputs.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"button\": function( elem ) {\r\n\t\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\r\n\t\t},\r\n\r\n\t\t\"text\": function( elem ) {\r\n\t\t\tvar attr;\r\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\r\n\t\t\t\telem.type === \"text\" &&\r\n\r\n\t\t\t\t// Support: IE<8\r\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\r\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\r\n\t\t},\r\n\r\n\t\t// Position-in-collection\r\n\t\t\"first\": createPositionalPseudo(function() {\r\n\t\t\treturn [ 0 ];\r\n\t\t}),\r\n\r\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\treturn [ length - 1 ];\r\n\t\t}),\r\n\r\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n\t\t}),\r\n\r\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 1;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; --i >= 0; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; ++i < length; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t})\r\n\t}\r\n};\r\n\r\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\r\n\r\n// Add button/input type pseudos\r\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\r\n\tExpr.pseudos[ i ] = createInputPseudo( i );\r\n}\r\nfor ( i in { submit: true, reset: true } ) {\r\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\r\n}\r\n\r\n// Easy API for creating new setFilters\r\nfunction setFilters() {}\r\nsetFilters.prototype = Expr.filters = Expr.pseudos;\r\nExpr.setFilters = new setFilters();\r\n\r\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\r\n\tvar matched, match, tokens, type,\r\n\t\tsoFar, groups, preFilters,\r\n\t\tcached = tokenCache[ selector + \" \" ];\r\n\r\n\tif ( cached ) {\r\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n\t}\r\n\r\n\tsoFar = selector;\r\n\tgroups = [];\r\n\tpreFilters = Expr.preFilter;\r\n\r\n\twhile ( soFar ) {\r\n\r\n\t\t// Comma and first run\r\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n\t\t\tif ( match ) {\r\n\t\t\t\t// Don't consume trailing commas as valid\r\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n\t\t\t}\r\n\t\t\tgroups.push( (tokens = []) );\r\n\t\t}\r\n\r\n\t\tmatched = false;\r\n\r\n\t\t// Combinators\r\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n\t\t\tmatched = match.shift();\r\n\t\t\ttokens.push({\r\n\t\t\t\tvalue: matched,\r\n\t\t\t\t// Cast descendant combinators to space\r\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\r\n\t\t\t});\r\n\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t}\r\n\r\n\t\t// Filters\r\n\t\tfor ( type in Expr.filter ) {\r\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n\t\t\t\tmatched = match.shift();\r\n\t\t\t\ttokens.push({\r\n\t\t\t\t\tvalue: matched,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tmatches: match\r\n\t\t\t\t});\r\n\t\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !matched ) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the length of the invalid excess\r\n\t// if we're just parsing\r\n\t// Otherwise, throw an error or return tokens\r\n\treturn parseOnly ?\r\n\t\tsoFar.length :\r\n\t\tsoFar ?\r\n\t\t\tSizzle.error( selector ) :\r\n\t\t\t// Cache the tokens\r\n\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n};\r\n\r\nfunction toSelector( tokens ) {\r\n\tvar i = 0,\r\n\t\tlen = tokens.length,\r\n\t\tselector = \"\";\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tselector += tokens[i].value;\r\n\t}\r\n\treturn selector;\r\n}\r\n\r\nfunction addCombinator( matcher, combinator, base ) {\r\n\tvar dir = combinator.dir,\r\n\t\tcheckNonElements = base && dir === \"parentNode\",\r\n\t\tdoneName = done++;\r\n\r\n\treturn combinator.first ?\r\n\t\t// Check against closest ancestor/preceding element\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\treturn matcher( elem, context, xml );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\t// Check against all ancestor/preceding elements\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar oldCache, uniqueCache, outerCache,\r\n\t\t\t\tnewCache = [ dirruns, doneName ];\r\n\r\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\r\n\t\t\tif ( xml ) {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\r\n\r\n\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\r\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\r\n\r\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\r\n\r\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\r\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n}\r\n\r\nfunction elementMatcher( matchers ) {\r\n\treturn matchers.length > 1 ?\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar i = matchers.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} :\r\n\t\tmatchers[0];\r\n}\r\n\r\nfunction multipleContexts( selector, contexts, results ) {\r\n\tvar i = 0,\r\n\t\tlen = contexts.length;\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tSizzle( selector, contexts[i], results );\r\n\t}\r\n\treturn results;\r\n}\r\n\r\nfunction condense( unmatched, map, filter, context, xml ) {\r\n\tvar elem,\r\n\t\tnewUnmatched = [],\r\n\t\ti = 0,\r\n\t\tlen = unmatched.length,\r\n\t\tmapped = map != null;\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n\t\t\t\tnewUnmatched.push( elem );\r\n\t\t\t\tif ( mapped ) {\r\n\t\t\t\t\tmap.push( i );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn newUnmatched;\r\n}\r\n\r\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n\tif ( postFilter && !postFilter[ expando ] ) {\r\n\t\tpostFilter = setMatcher( postFilter );\r\n\t}\r\n\tif ( postFinder && !postFinder[ expando ] ) {\r\n\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n\t}\r\n\treturn markFunction(function( seed, results, context, xml ) {\r\n\t\tvar temp, i, elem,\r\n\t\t\tpreMap = [],\r\n\t\t\tpostMap = [],\r\n\t\t\tpreexisting = results.length,\r\n\r\n\t\t\t// Get initial elements from seed or context\r\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\r\n\r\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n\t\t\t\telems,\r\n\r\n\t\t\tmatcherOut = matcher ?\r\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n\r\n\t\t\t\t\t// ...intermediate processing is necessary\r\n\t\t\t\t\t[] :\r\n\r\n\t\t\t\t\t// ...otherwise use results directly\r\n\t\t\t\t\tresults :\r\n\t\t\t\tmatcherIn;\r\n\r\n\t\t// Find primary matches\r\n\t\tif ( matcher ) {\r\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n\t\t}\r\n\r\n\t\t// Apply postFilter\r\n\t\tif ( postFilter ) {\r\n\t\t\ttemp = condense( matcherOut, postMap );\r\n\t\t\tpostFilter( temp, [], context, xml );\r\n\r\n\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n\t\t\ti = temp.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( (elem = temp[i]) ) {\r\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( seed ) {\r\n\t\t\tif ( postFinder || preFilter ) {\r\n\t\t\t\tif ( postFinder ) {\r\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n\t\t\t\t\ttemp = [];\r\n\t\t\t\t\ti = matcherOut.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n\t\t\t\ti = matcherOut.length;\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\r\n\r\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Add elements to results, through postFinder if defined\r\n\t\t} else {\r\n\t\t\tmatcherOut = condense(\r\n\t\t\t\tmatcherOut === results ?\r\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n\t\t\t\t\tmatcherOut\r\n\t\t\t);\r\n\t\t\tif ( postFinder ) {\r\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n\t\t\t} else {\r\n\t\t\t\tpush.apply( results, matcherOut );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction matcherFromTokens( tokens ) {\r\n\tvar checkContext, matcher, j,\r\n\t\tlen = tokens.length,\r\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\r\n\t\ti = leadingRelative ? 1 : 0,\r\n\r\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n\t\tmatchContext = addCombinator( function( elem ) {\r\n\t\t\treturn elem === checkContext;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n\t\t\treturn indexOf( checkContext, elem ) > -1;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchers = [ function( elem, context, xml ) {\r\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n\t\t\t\t(checkContext = context).nodeType ?\r\n\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n\t\t\t// Avoid hanging onto element (issue #299)\r\n\t\t\tcheckContext = null;\r\n\t\t\treturn ret;\r\n\t\t} ];\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\r\n\t\t} else {\r\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n\r\n\t\t\t// Return special upon seeing a positional matcher\r\n\t\t\tif ( matcher[ expando ] ) {\r\n\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n\t\t\t\tj = ++i;\r\n\t\t\t\tfor ( ; j < len; j++ ) {\r\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn setMatcher(\r\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n\t\t\t\t\ti > 1 && toSelector(\r\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\r\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\r\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\r\n\t\t\t\t\tmatcher,\r\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n\t\t\t\t\tj < len && toSelector( tokens )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tmatchers.push( matcher );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementMatcher( matchers );\r\n}\r\n\r\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n\tvar bySet = setMatchers.length > 0,\r\n\t\tbyElement = elementMatchers.length > 0,\r\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\r\n\t\t\tvar elem, j, matcher,\r\n\t\t\t\tmatchedCount = 0,\r\n\t\t\t\ti = \"0\",\r\n\t\t\t\tunmatched = seed && [],\r\n\t\t\t\tsetMatched = [],\r\n\t\t\t\tcontextBackup = outermostContext,\r\n\t\t\t\t// We must always have either seed elements or outermost context\r\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\r\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\r\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\r\n\t\t\t\tlen = elems.length;\r\n\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\toutermostContext = context === document || context || outermost;\r\n\t\t\t}\r\n\r\n\t\t\t// Add elements passing elementMatchers directly to results\r\n\t\t\t// Support: IE<9, Safari\r\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\r\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\r\n\t\t\t\tif ( byElement && elem ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\r\n\t\t\t\t\t\tsetDocument( elem );\r\n\t\t\t\t\t\txml = !documentIsHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( outermost ) {\r\n\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Track unmatched elements for set filters\r\n\t\t\t\tif ( bySet ) {\r\n\t\t\t\t\t// They will have gone through all possible matchers\r\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n\t\t\t\t\t\tmatchedCount--;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n\t\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t\tunmatched.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\r\n\t\t\t// makes the latter nonnegative.\r\n\t\t\tmatchedCount += i;\r\n\r\n\t\t\t// Apply set filters to unmatched elements\r\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\r\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\r\n\t\t\t// no element matchers and no seed.\r\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\r\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\r\n\t\t\t// numerically zero.\r\n\t\t\tif ( bySet && i !== matchedCount ) {\r\n\t\t\t\tj = 0;\r\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\r\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n\t\t\t\t\tif ( matchedCount > 0 ) {\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n\t\t\t\t\tsetMatched = condense( setMatched );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add matches to results\r\n\t\t\t\tpush.apply( results, setMatched );\r\n\r\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n\r\n\t\t\t\t\tSizzle.uniqueSort( results );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override manipulation of globals by nested matchers\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\toutermostContext = contextBackup;\r\n\t\t\t}\r\n\r\n\t\t\treturn unmatched;\r\n\t\t};\r\n\r\n\treturn bySet ?\r\n\t\tmarkFunction( superMatcher ) :\r\n\t\tsuperMatcher;\r\n}\r\n\r\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\r\n\tvar i,\r\n\t\tsetMatchers = [],\r\n\t\telementMatchers = [],\r\n\t\tcached = compilerCache[ selector + \" \" ];\r\n\r\n\tif ( !cached ) {\r\n\t\t// Generate a function of recursive functions that can be used to check each element\r\n\t\tif ( !match ) {\r\n\t\t\tmatch = tokenize( selector );\r\n\t\t}\r\n\t\ti = match.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tcached = matcherFromTokens( match[i] );\r\n\t\t\tif ( cached[ expando ] ) {\r\n\t\t\t\tsetMatchers.push( cached );\r\n\t\t\t} else {\r\n\t\t\t\telementMatchers.push( cached );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cache the compiled function\r\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n\r\n\t\t// Save selector and tokenization\r\n\t\tcached.selector = selector;\r\n\t}\r\n\treturn cached;\r\n};\r\n\r\n/**\r\n * A low-level selection function that works with Sizzle's compiled\r\n * selector functions\r\n * @param {String|Function} selector A selector or a pre-compiled\r\n * selector function built with Sizzle.compile\r\n * @param {Element} context\r\n * @param {Array} [results]\r\n * @param {Array} [seed] A set of elements to match against\r\n */\r\nselect = Sizzle.select = function( selector, context, results, seed ) {\r\n\tvar i, tokens, token, type, find,\r\n\t\tcompiled = typeof selector === \"function\" && selector,\r\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\r\n\r\n\tresults = results || [];\r\n\r\n\t// Try to minimize operations if there is only one selector in the list and no seed\r\n\t// (the latter of which guarantees us context)\r\n\tif ( match.length === 1 ) {\r\n\r\n\t\t// Reduce context if the leading compound selector is an ID\r\n\t\ttokens = match[0] = match[0].slice( 0 );\r\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\r\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\r\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\r\n\r\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\r\n\t\t\tif ( !context ) {\r\n\t\t\t\treturn results;\r\n\r\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\r\n\t\t\t} else if ( compiled ) {\r\n\t\t\t\tcontext = context.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tselector = selector.slice( tokens.shift().value.length );\r\n\t\t}\r\n\r\n\t\t// Fetch a seed set for right-to-left matching\r\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\ttoken = tokens[i];\r\n\r\n\t\t\t// Abort if we hit a combinator\r\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n\t\t\t\t// Search, expanding context for leading sibling combinators\r\n\t\t\t\tif ( (seed = find(\r\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\r\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\r\n\t\t\t\t)) ) {\r\n\r\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n\t\t\t\t\ttokens.splice( i, 1 );\r\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\r\n\t\t\t\t\tif ( !selector ) {\r\n\t\t\t\t\t\tpush.apply( results, seed );\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Compile and execute a filtering function if one is not provided\r\n\t// Provide `match` to avoid retokenization if we modified the selector above\r\n\t( compiled || compile( selector, match ) )(\r\n\t\tseed,\r\n\t\tcontext,\r\n\t\t!documentIsHTML,\r\n\t\tresults,\r\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\r\n\t);\r\n\treturn results;\r\n};\r\n\r\n// One-time assignments\r\n\r\n// Sort stability\r\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\r\n\r\n// Support: Chrome 14-35+\r\n// Always assume duplicates if they aren't passed to the comparison function\r\nsupport.detectDuplicates = !!hasDuplicate;\r\n\r\n// Initialize against the default document\r\nsetDocument();\r\n\r\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\r\n// Detached nodes confoundingly follow *each other*\r\nsupport.sortDetached = assert(function( div1 ) {\r\n\t// Should return 1, but returns 4 (following)\r\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\r\n});\r\n\r\n// Support: IE<8\r\n// Prevent attribute/property \"interpolation\"\r\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\r\nif ( !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\r\n}) ) {\r\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use defaultValue in place of getAttribute(\"value\")\r\nif ( !support.attributes || !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\r\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\r\n}) ) {\r\n\taddHandle( \"value\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\r\n\t\t\treturn elem.defaultValue;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use getAttributeNode to fetch booleans when getAttribute lies\r\nif ( !assert(function( div ) {\r\n\treturn div.getAttribute(\"disabled\") == null;\r\n}) ) {\r\n\taddHandle( booleans, function( elem, name, isXML ) {\r\n\t\tvar val;\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\r\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\r\n\t\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nreturn Sizzle;\r\n\r\n})( window );\r\n\r\n\r\n\r\njQuery.find = Sizzle;\r\njQuery.expr = Sizzle.selectors;\r\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\r\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\r\njQuery.text = Sizzle.getText;\r\njQuery.isXMLDoc = Sizzle.isXML;\r\njQuery.contains = Sizzle.contains;\r\n\r\n\r\n\r\nvar dir = function( elem, dir, until ) {\r\n\tvar matched = [],\r\n\t\ttruncate = until !== undefined;\r\n\r\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\r\n\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmatched.push( elem );\r\n\t\t}\r\n\t}\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar siblings = function( n, elem ) {\r\n\tvar matched = [];\r\n\r\n\tfor ( ; n; n = n.nextSibling ) {\r\n\t\tif ( n.nodeType === 1 && n !== elem ) {\r\n\t\t\tmatched.push( n );\r\n\t\t}\r\n\t}\r\n\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar rneedsContext = jQuery.expr.match.needsContext;\r\n\r\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\r\n\r\n\r\n\r\nvar risSimple = /^.[^:#\\[\\.,]*$/;\r\n\r\n// Implement the identical functionality for filter and not\r\nfunction winnow( elements, qualifier, not ) {\r\n\tif ( jQuery.isFunction( qualifier ) ) {\r\n\t\treturn jQuery.grep( elements, function( elem, i ) {\r\n\t\t\t/* jshint -W018 */\r\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( qualifier.nodeType ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( elem === qualifier ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( typeof qualifier === \"string\" ) {\r\n\t\tif ( risSimple.test( qualifier ) ) {\r\n\t\t\treturn jQuery.filter( qualifier, elements, not );\r\n\t\t}\r\n\r\n\t\tqualifier = jQuery.filter( qualifier, elements );\r\n\t}\r\n\r\n\treturn jQuery.grep( elements, function( elem ) {\r\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\r\n\t} );\r\n}\r\n\r\njQuery.filter = function( expr, elems, not ) {\r\n\tvar elem = elems[ 0 ];\r\n\r\n\tif ( not ) {\r\n\t\texpr = \":not(\" + expr + \")\";\r\n\t}\r\n\r\n\treturn elems.length === 1 && elem.nodeType === 1 ?\r\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\r\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\r\n\t\t\treturn elem.nodeType === 1;\r\n\t\t} ) );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfind: function( selector ) {\r\n\t\tvar i,\r\n\t\t\tret = [],\r\n\t\t\tself = this,\r\n\t\t\tlen = self.length;\r\n\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\tjQuery.find( selector, self[ i ], ret );\r\n\t\t}\r\n\r\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\r\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\r\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\r\n\t\treturn ret;\r\n\t},\r\n\tfilter: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\r\n\t},\r\n\tnot: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\r\n\t},\r\n\tis: function( selector ) {\r\n\t\treturn !!winnow(\r\n\t\t\tthis,\r\n\r\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\r\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\r\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\r\n\t\t\t\tjQuery( selector ) :\r\n\t\t\t\tselector || [],\r\n\t\t\tfalse\r\n\t\t).length;\r\n\t}\r\n} );\r\n\r\n\r\n// Initialize a jQuery object\r\n\r\n\r\n// A central reference to the root jQuery(document)\r\nvar rootjQuery,\r\n\r\n\t// A simple way to check for HTML strings\r\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\r\n\t// Strict HTML recognition (#11290: must start with <)\r\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\r\n\r\n\tinit = jQuery.fn.init = function( selector, context, root ) {\r\n\t\tvar match, elem;\r\n\r\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\r\n\t\tif ( !selector ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// init accepts an alternate rootjQuery\r\n\t\t// so migrate can support jQuery.sub (gh-2101)\r\n\t\troot = root || rootjQuery;\r\n\r\n\t\t// Handle HTML strings\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\r\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\r\n\t\t\t\tselector.length >= 3 ) {\r\n\r\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\r\n\t\t\t\tmatch = [ null, selector, null ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\tmatch = rquickExpr.exec( selector );\r\n\t\t\t}\r\n\r\n\t\t\t// Match html or make sure no context is specified for #id\r\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\r\n\r\n\t\t\t\t// HANDLE: $(html) -> $(array)\r\n\t\t\t\tif ( match[ 1 ] ) {\r\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\r\n\r\n\t\t\t\t\t// scripts is true for back-compat\r\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\r\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\r\n\t\t\t\t\t\tmatch[ 1 ],\r\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t) );\r\n\r\n\t\t\t\t\t// HANDLE: $(html, props)\r\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\r\n\t\t\t\t\t\tfor ( match in context ) {\r\n\r\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\r\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\r\n\r\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t// HANDLE: $(#id)\r\n\t\t\t\t} else {\r\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\r\n\r\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\r\n\t\t\t\t\t// nodes that are no longer in the document #6963\r\n\t\t\t\t\tif ( elem && elem.parentNode ) {\r\n\r\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\r\n\t\t\t\t\t\t// by name instead of ID\r\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\r\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\r\n\t\t\t\t\t\tthis.length = 1;\r\n\t\t\t\t\t\tthis[ 0 ] = elem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.context = document;\r\n\t\t\t\t\tthis.selector = selector;\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\r\n\t\t\t// HANDLE: $(expr, $(...))\r\n\t\t\t} else if ( !context || context.jquery ) {\r\n\t\t\t\treturn ( context || root ).find( selector );\r\n\r\n\t\t\t// HANDLE: $(expr, context)\r\n\t\t\t// (which is just equivalent to: $(context).find(expr)\r\n\t\t\t} else {\r\n\t\t\t\treturn this.constructor( context ).find( selector );\r\n\t\t\t}\r\n\r\n\t\t// HANDLE: $(DOMElement)\r\n\t\t} else if ( selector.nodeType ) {\r\n\t\t\tthis.context = this[ 0 ] = selector;\r\n\t\t\tthis.length = 1;\r\n\t\t\treturn this;\r\n\r\n\t\t// HANDLE: $(function)\r\n\t\t// Shortcut for document ready\r\n\t\t} else if ( jQuery.isFunction( selector ) ) {\r\n\t\t\treturn typeof root.ready !== \"undefined\" ?\r\n\t\t\t\troot.ready( selector ) :\r\n\r\n\t\t\t\t// Execute immediately if ready is not present\r\n\t\t\t\tselector( jQuery );\r\n\t\t}\r\n\r\n\t\tif ( selector.selector !== undefined ) {\r\n\t\t\tthis.selector = selector.selector;\r\n\t\t\tthis.context = selector.context;\r\n\t\t}\r\n\r\n\t\treturn jQuery.makeArray( selector, this );\r\n\t};\r\n\r\n// Give the init function the jQuery prototype for later instantiation\r\ninit.prototype = jQuery.fn;\r\n\r\n// Initialize central reference\r\nrootjQuery = jQuery( document );\r\n\r\n\r\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\r\n\r\n\t// methods guaranteed to produce a unique set when starting from a unique set\r\n\tguaranteedUnique = {\r\n\t\tchildren: true,\r\n\t\tcontents: true,\r\n\t\tnext: true,\r\n\t\tprev: true\r\n\t};\r\n\r\njQuery.fn.extend( {\r\n\thas: function( target ) {\r\n\t\tvar i,\r\n\t\t\ttargets = jQuery( target, this ),\r\n\t\t\tlen = targets.length;\r\n\r\n\t\treturn this.filter( function() {\r\n\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tclosest: function( selectors, context ) {\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\tl = this.length,\r\n\t\t\tmatched = [],\r\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\r\n\t\t\t\tjQuery( selectors, context || this.context ) :\r\n\t\t\t\t0;\r\n\r\n\t\tfor ( ; i < l; i++ ) {\r\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\r\n\r\n\t\t\t\t// Always skip document fragments\r\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\r\n\t\t\t\t\tpos.index( cur ) > -1 :\r\n\r\n\t\t\t\t\t// Don't pass non-elements to Sizzle\r\n\t\t\t\t\tcur.nodeType === 1 &&\r\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\r\n\r\n\t\t\t\t\tmatched.push( cur );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\r\n\t},\r\n\r\n\t// Determine the position of an element within\r\n\t// the matched set of elements\r\n\tindex: function( elem ) {\r\n\r\n\t\t// No argument, return index in parent\r\n\t\tif ( !elem ) {\r\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\r\n\t\t}\r\n\r\n\t\t// index in selector\r\n\t\tif ( typeof elem === \"string\" ) {\r\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\r\n\t\t}\r\n\r\n\t\t// Locate the position of the desired element\r\n\t\treturn jQuery.inArray(\r\n\r\n\t\t\t// If it receives a jQuery object, the first element is used\r\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\r\n\t},\r\n\r\n\tadd: function( selector, context ) {\r\n\t\treturn this.pushStack(\r\n\t\t\tjQuery.uniqueSort(\r\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\r\n\t\t\t)\r\n\t\t);\r\n\t},\r\n\r\n\taddBack: function( selector ) {\r\n\t\treturn this.add( selector == null ?\r\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\r\n\t\t);\r\n\t}\r\n} );\r\n\r\nfunction sibling( cur, dir ) {\r\n\tdo {\r\n\t\tcur = cur[ dir ];\r\n\t} while ( cur && cur.nodeType !== 1 );\r\n\r\n\treturn cur;\r\n}\r\n\r\njQuery.each( {\r\n\tparent: function( elem ) {\r\n\t\tvar parent = elem.parentNode;\r\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\r\n\t},\r\n\tparents: function( elem ) {\r\n\t\treturn dir( elem, \"parentNode\" );\r\n\t},\r\n\tparentsUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"parentNode\", until );\r\n\t},\r\n\tnext: function( elem ) {\r\n\t\treturn sibling( elem, \"nextSibling\" );\r\n\t},\r\n\tprev: function( elem ) {\r\n\t\treturn sibling( elem, \"previousSibling\" );\r\n\t},\r\n\tnextAll: function( elem ) {\r\n\t\treturn dir( elem, \"nextSibling\" );\r\n\t},\r\n\tprevAll: function( elem ) {\r\n\t\treturn dir( elem, \"previousSibling\" );\r\n\t},\r\n\tnextUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"nextSibling\", until );\r\n\t},\r\n\tprevUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"previousSibling\", until );\r\n\t},\r\n\tsiblings: function( elem ) {\r\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\r\n\t},\r\n\tchildren: function( elem ) {\r\n\t\treturn siblings( elem.firstChild );\r\n\t},\r\n\tcontents: function( elem ) {\r\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\r\n\t\t\telem.contentDocument || elem.contentWindow.document :\r\n\t\t\tjQuery.merge( [], elem.childNodes );\r\n\t}\r\n}, function( name, fn ) {\r\n\tjQuery.fn[ name ] = function( until, selector ) {\r\n\t\tvar ret = jQuery.map( this, fn, until );\r\n\r\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\r\n\t\t\tselector = until;\r\n\t\t}\r\n\r\n\t\tif ( selector && typeof selector === \"string\" ) {\r\n\t\t\tret = jQuery.filter( selector, ret );\r\n\t\t}\r\n\r\n\t\tif ( this.length > 1 ) {\r\n\r\n\t\t\t// Remove duplicates\r\n\t\t\tif ( !guaranteedUnique[ name ] ) {\r\n\t\t\t\tret = jQuery.uniqueSort( ret );\r\n\t\t\t}\r\n\r\n\t\t\t// Reverse order for parents* and prev-derivatives\r\n\t\t\tif ( rparentsprev.test( name ) ) {\r\n\t\t\t\tret = ret.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\nvar rnotwhite = ( /\\S+/g );\r\n\r\n\r\n\r\n// Convert String-formatted options into Object-formatted ones\r\nfunction createOptions( options ) {\r\n\tvar object = {};\r\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\r\n\t\tobject[ flag ] = true;\r\n\t} );\r\n\treturn object;\r\n}\r\n\r\n/*\r\n * Create a callback list using the following parameters:\r\n *\r\n *\toptions: an optional list of space-separated options that will change how\r\n *\t\t\tthe callback list behaves or a more traditional option object\r\n *\r\n * By default a callback list will act like an event callback list and can be\r\n * \"fired\" multiple times.\r\n *\r\n * Possible options:\r\n *\r\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\r\n *\r\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\r\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\r\n *\t\t\t\t\tvalues (like a Deferred)\r\n *\r\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\r\n *\r\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\r\n *\r\n */\r\njQuery.Callbacks = function( options ) {\r\n\r\n\t// Convert options from String-formatted to Object-formatted if needed\r\n\t// (we check in cache first)\r\n\toptions = typeof options === \"string\" ?\r\n\t\tcreateOptions( options ) :\r\n\t\tjQuery.extend( {}, options );\r\n\r\n\tvar // Flag to know if list is currently firing\r\n\t\tfiring,\r\n\r\n\t\t// Last fire value for non-forgettable lists\r\n\t\tmemory,\r\n\r\n\t\t// Flag to know if list was already fired\r\n\t\tfired,\r\n\r\n\t\t// Flag to prevent firing\r\n\t\tlocked,\r\n\r\n\t\t// Actual callback list\r\n\t\tlist = [],\r\n\r\n\t\t// Queue of execution data for repeatable lists\r\n\t\tqueue = [],\r\n\r\n\t\t// Index of currently firing callback (modified by add/remove as needed)\r\n\t\tfiringIndex = -1,\r\n\r\n\t\t// Fire callbacks\r\n\t\tfire = function() {\r\n\r\n\t\t\t// Enforce single-firing\r\n\t\t\tlocked = options.once;\r\n\r\n\t\t\t// Execute callbacks for all pending executions,\r\n\t\t\t// respecting firingIndex overrides and runtime changes\r\n\t\t\tfired = firing = true;\r\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\r\n\t\t\t\tmemory = queue.shift();\r\n\t\t\t\twhile ( ++firingIndex < list.length ) {\r\n\r\n\t\t\t\t\t// Run callback and check for early termination\r\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\r\n\t\t\t\t\t\toptions.stopOnFalse ) {\r\n\r\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\r\n\t\t\t\t\t\tfiringIndex = list.length;\r\n\t\t\t\t\t\tmemory = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Forget the data if we're done with it\r\n\t\t\tif ( !options.memory ) {\r\n\t\t\t\tmemory = false;\r\n\t\t\t}\r\n\r\n\t\t\tfiring = false;\r\n\r\n\t\t\t// Clean up if we're done firing for good\r\n\t\t\tif ( locked ) {\r\n\r\n\t\t\t\t// Keep an empty list if we have data for future add calls\r\n\t\t\t\tif ( memory ) {\r\n\t\t\t\t\tlist = [];\r\n\r\n\t\t\t\t// Otherwise, this object is spent\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Actual Callbacks object\r\n\t\tself = {\r\n\r\n\t\t\t// Add a callback or a collection of callbacks to the list\r\n\t\t\tadd: function() {\r\n\t\t\t\tif ( list ) {\r\n\r\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfiringIndex = list.length - 1;\r\n\t\t\t\t\t\tqueue.push( memory );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t( function add( args ) {\r\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\r\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\r\n\t\t\t\t\t\t\t\t\tlist.push( arg );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Inspect recursively\r\n\t\t\t\t\t\t\t\tadd( arg );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} )( arguments );\r\n\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove a callback from the list\r\n\t\t\tremove: function() {\r\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\r\n\t\t\t\t\tvar index;\r\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\r\n\t\t\t\t\t\tlist.splice( index, 1 );\r\n\r\n\t\t\t\t\t\t// Handle firing indexes\r\n\t\t\t\t\t\tif ( index <= firingIndex ) {\r\n\t\t\t\t\t\t\tfiringIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Check if a given callback is in the list.\r\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\r\n\t\t\thas: function( fn ) {\r\n\t\t\t\treturn fn ?\r\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\r\n\t\t\t\t\tlist.length > 0;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove all callbacks from the list\r\n\t\t\tempty: function() {\r\n\t\t\t\tif ( list ) {\r\n\t\t\t\t\tlist = [];\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire and .add\r\n\t\t\t// Abort any current/pending executions\r\n\t\t\t// Clear all callbacks and values\r\n\t\t\tdisable: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tlist = memory = \"\";\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tdisabled: function() {\r\n\t\t\t\treturn !list;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire\r\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\r\n\t\t\t// Abort any pending executions\r\n\t\t\tlock: function() {\r\n\t\t\t\tlocked = true;\r\n\t\t\t\tif ( !memory ) {\r\n\t\t\t\t\tself.disable();\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tlocked: function() {\r\n\t\t\t\treturn !!locked;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all callbacks with the given context and arguments\r\n\t\t\tfireWith: function( context, args ) {\r\n\t\t\t\tif ( !locked ) {\r\n\t\t\t\t\targs = args || [];\r\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\r\n\t\t\t\t\tqueue.push( args );\r\n\t\t\t\t\tif ( !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all the callbacks with the given arguments\r\n\t\t\tfire: function() {\r\n\t\t\t\tself.fireWith( this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// To know if the callbacks have already been called at least once\r\n\t\t\tfired: function() {\r\n\t\t\t\treturn !!fired;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\treturn self;\r\n};\r\n\r\n\r\njQuery.extend( {\r\n\r\n\tDeferred: function( func ) {\r\n\t\tvar tuples = [\r\n\r\n\t\t\t\t// action, add listener, listener list, final state\r\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\r\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\r\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\r\n\t\t\t],\r\n\t\t\tstate = \"pending\",\r\n\t\t\tpromise = {\r\n\t\t\t\tstate: function() {\r\n\t\t\t\t\treturn state;\r\n\t\t\t\t},\r\n\t\t\t\talways: function() {\r\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\t\t\t\tvar fns = arguments;\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r\n\r\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\r\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\r\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\r\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t\tfns = null;\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Get a promise for this deferred\r\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\r\n\t\t\t\tpromise: function( obj ) {\r\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdeferred = {};\r\n\r\n\t\t// Keep pipe for back-compat\r\n\t\tpromise.pipe = promise.then;\r\n\r\n\t\t// Add list-specific methods\r\n\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\tvar list = tuple[ 2 ],\r\n\t\t\t\tstateString = tuple[ 3 ];\r\n\r\n\t\t\t// promise[ done | fail | progress ] = list.add\r\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\r\n\r\n\t\t\t// Handle state\r\n\t\t\tif ( stateString ) {\r\n\t\t\t\tlist.add( function() {\r\n\r\n\t\t\t\t\t// state = [ resolved | rejected ]\r\n\t\t\t\t\tstate = stateString;\r\n\r\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\r\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\r\n\t\t\t}\r\n\r\n\t\t\t// deferred[ resolve | reject | notify ]\r\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\r\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\r\n\t\t} );\r\n\r\n\t\t// Make the deferred a promise\r\n\t\tpromise.promise( deferred );\r\n\r\n\t\t// Call given func if any\r\n\t\tif ( func ) {\r\n\t\t\tfunc.call( deferred, deferred );\r\n\t\t}\r\n\r\n\t\t// All done!\r\n\t\treturn deferred;\r\n\t},\r\n\r\n\t// Deferred helper\r\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\r\n\t\tvar i = 0,\r\n\t\t\tresolveValues = slice.call( arguments ),\r\n\t\t\tlength = resolveValues.length,\r\n\r\n\t\t\t// the count of uncompleted subordinates\r\n\t\t\tremaining = length !== 1 ||\r\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\r\n\r\n\t\t\t// the master Deferred.\r\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\r\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\r\n\r\n\t\t\t// Update function for both resolve and progress values\r\n\t\t\tupdateFunc = function( i, contexts, values ) {\r\n\t\t\t\treturn function( value ) {\r\n\t\t\t\t\tcontexts[ i ] = this;\r\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\r\n\t\t\t\t\tif ( values === progressValues ) {\r\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\r\n\r\n\t\t\t\t\t} else if ( !( --remaining ) ) {\r\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tprogressValues, progressContexts, resolveContexts;\r\n\r\n\t\t// add listeners to Deferred subordinates; treat others as resolved\r\n\t\tif ( length > 1 ) {\r\n\t\t\tprogressValues = new Array( length );\r\n\t\t\tprogressContexts = new Array( length );\r\n\t\t\tresolveContexts = new Array( length );\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\r\n\t\t\t\t\tresolveValues[ i ].promise()\r\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\r\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\r\n\t\t\t\t\t\t.fail( deferred.reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t--remaining;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if we're not waiting on anything, resolve the master\r\n\t\tif ( !remaining ) {\r\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\r\n\t\t}\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n} );\r\n\r\n\r\n// The deferred used on DOM ready\r\nvar readyList;\r\n\r\njQuery.fn.ready = function( fn ) {\r\n\r\n\t// Add the callback\r\n\tjQuery.ready.promise().done( fn );\r\n\r\n\treturn this;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Is the DOM ready to be used? Set to true once it occurs.\r\n\tisReady: false,\r\n\r\n\t// A counter to track how many items to wait for before\r\n\t// the ready event fires. See #6781\r\n\treadyWait: 1,\r\n\r\n\t// Hold (or release) the ready event\r\n\tholdReady: function( hold ) {\r\n\t\tif ( hold ) {\r\n\t\t\tjQuery.readyWait++;\r\n\t\t} else {\r\n\t\t\tjQuery.ready( true );\r\n\t\t}\r\n\t},\r\n\r\n\t// Handle when the DOM is ready\r\n\tready: function( wait ) {\r\n\r\n\t\t// Abort if there are pending holds or we're already ready\r\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remember that the DOM is ready\r\n\t\tjQuery.isReady = true;\r\n\r\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\r\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there are functions bound, to execute\r\n\t\treadyList.resolveWith( document, [ jQuery ] );\r\n\r\n\t\t// Trigger any bound ready events\r\n\t\tif ( jQuery.fn.triggerHandler ) {\r\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\r\n\t\t\tjQuery( document ).off( \"ready\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n/**\r\n * Clean-up method for dom ready events\r\n */\r\nfunction detach() {\r\n\tif ( document.addEventListener ) {\r\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\r\n\t\twindow.removeEventListener( \"load\", completed );\r\n\r\n\t} else {\r\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\r\n\t\twindow.detachEvent( \"onload\", completed );\r\n\t}\r\n}\r\n\r\n/**\r\n * The ready event handler and self cleanup method\r\n */\r\nfunction completed() {\r\n\r\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\r\n\tif ( document.addEventListener ||\r\n\t\twindow.event.type === \"load\" ||\r\n\t\tdocument.readyState === \"complete\" ) {\r\n\r\n\t\tdetach();\r\n\t\tjQuery.ready();\r\n\t}\r\n}\r\n\r\njQuery.ready.promise = function( obj ) {\r\n\tif ( !readyList ) {\r\n\r\n\t\treadyList = jQuery.Deferred();\r\n\r\n\t\t// Catch cases where $(document).ready() is called\r\n\t\t// after the browser event has already occurred.\r\n\t\t// Support: IE6-10\r\n\t\t// Older IE sometimes signals \"interactive\" too soon\r\n\t\tif ( document.readyState === \"complete\" ||\r\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\r\n\r\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\r\n\t\t\twindow.setTimeout( jQuery.ready );\r\n\r\n\t\t// Standards-based browsers support DOMContentLoaded\r\n\t\t} else if ( document.addEventListener ) {\r\n\r\n\t\t\t// Use the handy event callback\r\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.addEventListener( \"load\", completed );\r\n\r\n\t\t// If IE event model is used\r\n\t\t} else {\r\n\r\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\r\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.attachEvent( \"onload\", completed );\r\n\r\n\t\t\t// If IE and not a frame\r\n\t\t\t// continually check to see if the document is ready\r\n\t\t\tvar top = false;\r\n\r\n\t\t\ttry {\r\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\tif ( top && top.doScroll ) {\r\n\t\t\t\t( function doScrollCheck() {\r\n\t\t\t\t\tif ( !jQuery.isReady ) {\r\n\r\n\t\t\t\t\t\ttry {\r\n\r\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\r\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\r\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\r\n\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// detach all dom ready events\r\n\t\t\t\t\t\tdetach();\r\n\r\n\t\t\t\t\t\t// and execute any waiting functions\r\n\t\t\t\t\t\tjQuery.ready();\r\n\t\t\t\t\t}\r\n\t\t\t\t} )();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn readyList.promise( obj );\r\n};\r\n\r\n// Kick off the DOM ready check even if the user does not\r\njQuery.ready.promise();\r\n\r\n\r\n\r\n\r\n// Support: IE<9\r\n// Iteration over object's inherited properties before its own\r\nvar i;\r\nfor ( i in jQuery( support ) ) {\r\n\tbreak;\r\n}\r\nsupport.ownFirst = i === \"0\";\r\n\r\n// Note: most support tests are defined in their respective modules.\r\n// false until the test is run\r\nsupport.inlineBlockNeedsLayout = false;\r\n\r\n// Execute ASAP in case we need to set body.style.zoom\r\njQuery( function() {\r\n\r\n\t// Minified: var a,b,c,d\r\n\tvar val, div, body, container;\r\n\r\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\tif ( !body || !body.style ) {\r\n\r\n\t\t// Return for frameset docs that don't have a body\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Setup\r\n\tdiv = document.createElement( \"div\" );\r\n\tcontainer = document.createElement( \"div\" );\r\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\tbody.appendChild( container ).appendChild( div );\r\n\r\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t// Support: IE<8\r\n\t\t// Check if natively block-level elements act like inline-block\r\n\t\t// elements when setting their display to 'inline' and giving\r\n\t\t// them layout\r\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\r\n\r\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\r\n\t\tif ( val ) {\r\n\r\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\r\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\r\n\t\t\t// Support: IE<8\r\n\t\t\tbody.style.zoom = 1;\r\n\t\t}\r\n\t}\r\n\r\n\tbody.removeChild( container );\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9\r\n\tsupport.deleteExpando = true;\r\n\ttry {\r\n\t\tdelete div.test;\r\n\t} catch ( e ) {\r\n\t\tsupport.deleteExpando = false;\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\nvar acceptData = function( elem ) {\r\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\r\n\t\tnodeType = +elem.nodeType || 1;\r\n\r\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\r\n\treturn nodeType !== 1 && nodeType !== 9 ?\r\n\t\tfalse :\r\n\r\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\r\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\r\n};\r\n\r\n\r\n\r\n\r\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\r\n\trmultiDash = /([A-Z])/g;\r\n\r\nfunction dataAttr( elem, key, data ) {\r\n\r\n\t// If nothing was found internally, try to fetch any\r\n\t// data from the HTML5 data-* attribute\r\n\tif ( data === undefined && elem.nodeType === 1 ) {\r\n\r\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\r\n\r\n\t\tdata = elem.getAttribute( name );\r\n\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\ttry {\r\n\t\t\t\tdata = data === \"true\" ? true :\r\n\t\t\t\t\tdata === \"false\" ? false :\r\n\t\t\t\t\tdata === \"null\" ? null :\r\n\r\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\r\n\t\t\t\t\t+data + \"\" === data ? +data :\r\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\r\n\t\t\t\t\tdata;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\t// Make sure we set the data so it isn't changed later\r\n\t\t\tjQuery.data( elem, key, data );\r\n\r\n\t\t} else {\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\n// checks a cache object for emptiness\r\nfunction isEmptyDataObject( obj ) {\r\n\tvar name;\r\n\tfor ( name in obj ) {\r\n\r\n\t\t// if the public data object is empty, the private is still empty\r\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif ( name !== \"toJSON\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar ret, thisCache,\r\n\t\tinternalKey = jQuery.expando,\r\n\r\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\r\n\t\t// can't GC object references properly across the DOM-JS boundary\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\r\n\t\t// attached directly to the object so GC can occur automatically\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\r\n\t\t// Only defining an ID for JS objects if its cache already exists allows\r\n\t\t// the code to shortcut on the same path as a DOM node with no cache\r\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\r\n\r\n\t// Avoid doing any more work than we need to when trying to get data on an\r\n\t// object that has no data at all\r\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\r\n\t\tdata === undefined && typeof name === \"string\" ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( !id ) {\r\n\r\n\t\t// Only DOM nodes need a new unique ID for each element since their data\r\n\t\t// ends up in the global cache\r\n\t\tif ( isNode ) {\r\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\r\n\t\t} else {\r\n\t\t\tid = internalKey;\r\n\t\t}\r\n\t}\r\n\r\n\tif ( !cache[ id ] ) {\r\n\r\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\r\n\t\t// is serialized using JSON.stringify\r\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\r\n\t}\r\n\r\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\r\n\t// shallow copied over onto the existing cache\r\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\r\n\t\tif ( pvt ) {\r\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\r\n\t\t} else {\r\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\r\n\t\t}\r\n\t}\r\n\r\n\tthisCache = cache[ id ];\r\n\r\n\t// jQuery data() is stored in a separate object inside the object's internal data\r\n\t// cache in order to avoid key collisions between internal data and user-defined\r\n\t// data.\r\n\tif ( !pvt ) {\r\n\t\tif ( !thisCache.data ) {\r\n\t\t\tthisCache.data = {};\r\n\t\t}\r\n\r\n\t\tthisCache = thisCache.data;\r\n\t}\r\n\r\n\tif ( data !== undefined ) {\r\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\r\n\t}\r\n\r\n\t// Check for both converted-to-camel and non-converted data property names\r\n\t// If a data property was specified\r\n\tif ( typeof name === \"string\" ) {\r\n\r\n\t\t// First Try to find as-is property data\r\n\t\tret = thisCache[ name ];\r\n\r\n\t\t// Test for null|undefined property data\r\n\t\tif ( ret == null ) {\r\n\r\n\t\t\t// Try to find the camelCased property\r\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\r\n\t\t}\r\n\t} else {\r\n\t\tret = thisCache;\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\nfunction internalRemoveData( elem, name, pvt ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar thisCache, i,\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// See jQuery.data for more information\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\r\n\r\n\t// If there is already no cache entry for this object, there is no\r\n\t// purpose in continuing\r\n\tif ( !cache[ id ] ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( name ) {\r\n\r\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\r\n\r\n\t\tif ( thisCache ) {\r\n\r\n\t\t\t// Support array or space separated string names for data keys\r\n\t\t\tif ( !jQuery.isArray( name ) ) {\r\n\r\n\t\t\t\t// try the string as a key before any manipulation\r\n\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\tname = [ name ];\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\r\n\t\t\t\t\tname = jQuery.camelCase( name );\r\n\t\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\t\tname = [ name ];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tname = name.split( \" \" );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If \"name\" is an array of keys...\r\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\r\n\t\t\t\t// keys will be converted to camelCase.\r\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\r\n\t\t\t\t// both plain key and camelCase key. #12786\r\n\t\t\t\t// This will only penalize the array argument path.\r\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\r\n\t\t\t}\r\n\r\n\t\t\ti = name.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tdelete thisCache[ name[ i ] ];\r\n\t\t\t}\r\n\r\n\t\t\t// If there is no data left in the cache, we want to continue\r\n\t\t\t// and let the cache object itself get destroyed\r\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// See jQuery.data for more information\r\n\tif ( !pvt ) {\r\n\t\tdelete cache[ id ].data;\r\n\r\n\t\t// Don't destroy the parent cache unless the internal data object\r\n\t\t// had been the only thing left in it\r\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// Destroy the cache\r\n\tif ( isNode ) {\r\n\t\tjQuery.cleanData( [ elem ], true );\r\n\r\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\r\n\t/* jshint eqeqeq: false */\r\n\t} else if ( support.deleteExpando || cache != cache.window ) {\r\n\t\t/* jshint eqeqeq: true */\r\n\t\tdelete cache[ id ];\r\n\r\n\t// When all else fails, undefined\r\n\t} else {\r\n\t\tcache[ id ] = undefined;\r\n\t}\r\n}\r\n\r\njQuery.extend( {\r\n\tcache: {},\r\n\r\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\r\n\t// throw uncatchable exceptions if you attempt to set expando properties\r\n\tnoData: {\r\n\t\t\"applet \": true,\r\n\t\t\"embed \": true,\r\n\r\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\r\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\r\n\t},\r\n\r\n\thasData: function( elem ) {\r\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\r\n\t\treturn !!elem && !isEmptyDataObject( elem );\r\n\t},\r\n\r\n\tdata: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data );\r\n\t},\r\n\r\n\tremoveData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name );\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t_data: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data, true );\r\n\t},\r\n\r\n\t_removeData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name, true );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdata: function( key, value ) {\r\n\t\tvar i, name, data,\r\n\t\t\telem = this[ 0 ],\r\n\t\t\tattrs = elem && elem.attributes;\r\n\r\n\t\t// Special expections of .data basically thwart jQuery.access,\r\n\t\t// so implement the relevant behavior ourselves\r\n\r\n\t\t// Gets all values\r\n\t\tif ( key === undefined ) {\r\n\t\t\tif ( this.length ) {\r\n\t\t\t\tdata = jQuery.data( elem );\r\n\r\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\r\n\t\t\t\t\ti = attrs.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\r\n\t\t\t\t\t\t// Support: IE11+\r\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\r\n\t\t\t\t\t\tif ( attrs[ i ] ) {\r\n\t\t\t\t\t\t\tname = attrs[ i ].name;\r\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\r\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\r\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Sets multiple values\r\n\t\tif ( typeof key === \"object\" ) {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tjQuery.data( this, key );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn arguments.length > 1 ?\r\n\r\n\t\t\t// Sets one value\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tjQuery.data( this, key, value );\r\n\t\t\t} ) :\r\n\r\n\t\t\t// Gets one value\r\n\t\t\t// Try to fetch any internally stored data first\r\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\r\n\t},\r\n\r\n\tremoveData: function( key ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.removeData( this, key );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\njQuery.extend( {\r\n\tqueue: function( elem, type, data ) {\r\n\t\tvar queue;\r\n\r\n\t\tif ( elem ) {\r\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\r\n\t\t\tqueue = jQuery._data( elem, type );\r\n\r\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\r\n\t\t\tif ( data ) {\r\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\r\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.push( data );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn queue || [];\r\n\t\t}\r\n\t},\r\n\r\n\tdequeue: function( elem, type ) {\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\tvar queue = jQuery.queue( elem, type ),\r\n\t\t\tstartLength = queue.length,\r\n\t\t\tfn = queue.shift(),\r\n\t\t\thooks = jQuery._queueHooks( elem, type ),\r\n\t\t\tnext = function() {\r\n\t\t\t\tjQuery.dequeue( elem, type );\r\n\t\t\t};\r\n\r\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\r\n\t\tif ( fn === \"inprogress\" ) {\r\n\t\t\tfn = queue.shift();\r\n\t\t\tstartLength--;\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\r\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\r\n\t\t\t// automatically dequeued\r\n\t\t\tif ( type === \"fx\" ) {\r\n\t\t\t\tqueue.unshift( \"inprogress\" );\r\n\t\t\t}\r\n\r\n\t\t\t// clear up the last queue stop function\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tfn.call( elem, next, hooks );\r\n\t\t}\r\n\r\n\t\tif ( !startLength && hooks ) {\r\n\t\t\thooks.empty.fire();\r\n\t\t}\r\n\t},\r\n\r\n\t// not intended for public consumption - generates a queueHooks object,\r\n\t// or returns the current one\r\n\t_queueHooks: function( elem, type ) {\r\n\t\tvar key = type + \"queueHooks\";\r\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\r\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\r\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\r\n\t\t\t\tjQuery._removeData( elem, key );\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tqueue: function( type, data ) {\r\n\t\tvar setter = 2;\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tdata = type;\r\n\t\t\ttype = \"fx\";\r\n\t\t\tsetter--;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length < setter ) {\r\n\t\t\treturn jQuery.queue( this[ 0 ], type );\r\n\t\t}\r\n\r\n\t\treturn data === undefined ?\r\n\t\t\tthis :\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\r\n\r\n\t\t\t\t// ensure a hooks for this queue\r\n\t\t\t\tjQuery._queueHooks( this, type );\r\n\r\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\r\n\t\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\tdequeue: function( type ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.dequeue( this, type );\r\n\t\t} );\r\n\t},\r\n\tclearQueue: function( type ) {\r\n\t\treturn this.queue( type || \"fx\", [] );\r\n\t},\r\n\r\n\t// Get a promise resolved when queues of a certain type\r\n\t// are emptied (fx is the type by default)\r\n\tpromise: function( type, obj ) {\r\n\t\tvar tmp,\r\n\t\t\tcount = 1,\r\n\t\t\tdefer = jQuery.Deferred(),\r\n\t\t\telements = this,\r\n\t\t\ti = this.length,\r\n\t\t\tresolve = function() {\r\n\t\t\t\tif ( !( --count ) ) {\r\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tobj = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\r\n\t\t\tif ( tmp && tmp.empty ) {\r\n\t\t\t\tcount++;\r\n\t\t\t\ttmp.empty.add( resolve );\r\n\t\t\t}\r\n\t\t}\r\n\t\tresolve();\r\n\t\treturn defer.promise( obj );\r\n\t}\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar shrinkWrapBlocksVal;\r\n\r\n\tsupport.shrinkWrapBlocks = function() {\r\n\t\tif ( shrinkWrapBlocksVal != null ) {\r\n\t\t\treturn shrinkWrapBlocksVal;\r\n\t\t}\r\n\r\n\t\t// Will be changed later if needed.\r\n\t\tshrinkWrapBlocksVal = false;\r\n\r\n\t\t// Minified: var b,c,d\r\n\t\tvar div, body, container;\r\n\r\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\t\tif ( !body || !body.style ) {\r\n\r\n\t\t\t// Test fired too early or in an unsupported environment, exit.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Setup\r\n\t\tdiv = document.createElement( \"div\" );\r\n\t\tcontainer = document.createElement( \"div\" );\r\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\t\tbody.appendChild( container ).appendChild( div );\r\n\r\n\t\t// Support: IE6\r\n\t\t// Check if elements with layout shrink-wrap their children\r\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t\t// Reset CSS: box-sizing; display; margin; border\r\n\t\t\tdiv.style.cssText =\r\n\r\n\t\t\t\t// Support: Firefox<29, Android 2.3\r\n\t\t\t\t// Vendor-prefix box-sizing\r\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\r\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\r\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\r\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\r\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\r\n\t\t}\r\n\r\n\t\tbody.removeChild( container );\r\n\r\n\t\treturn shrinkWrapBlocksVal;\r\n\t};\r\n\r\n} )();\r\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\r\n\r\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\r\n\r\n\r\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\r\n\r\nvar isHidden = function( elem, el ) {\r\n\r\n\t\t// isHidden might be called from jQuery#filter function;\r\n\t\t// in that case, element will be second argument\r\n\t\telem = el || elem;\r\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\r\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\r\n\t};\r\n\r\n\r\n\r\nfunction adjustCSS( elem, prop, valueParts, tween ) {\r\n\tvar adjusted,\r\n\t\tscale = 1,\r\n\t\tmaxIterations = 20,\r\n\t\tcurrentValue = tween ?\r\n\t\t\tfunction() { return tween.cur(); } :\r\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\r\n\t\tinitial = currentValue(),\r\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\r\n\r\n\t\t// Starting value computation is required for potential unit mismatches\r\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\r\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\r\n\r\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\r\n\r\n\t\t// Trust units reported by jQuery.css\r\n\t\tunit = unit || initialInUnit[ 3 ];\r\n\r\n\t\t// Make sure we update the tween properties later on\r\n\t\tvalueParts = valueParts || [];\r\n\r\n\t\t// Iteratively approximate from a nonzero starting point\r\n\t\tinitialInUnit = +initial || 1;\r\n\r\n\t\tdo {\r\n\r\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\r\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\r\n\t\t\tscale = scale || \".5\";\r\n\r\n\t\t\t// Adjust and apply\r\n\t\t\tinitialInUnit = initialInUnit / scale;\r\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\r\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\r\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\r\n\t\t} while (\r\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\r\n\t\t);\r\n\t}\r\n\r\n\tif ( valueParts ) {\r\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\r\n\r\n\t\t// Apply relative offset (+=/-=) if specified\r\n\t\tadjusted = valueParts[ 1 ] ?\r\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\r\n\t\t\t+valueParts[ 2 ];\r\n\t\tif ( tween ) {\r\n\t\t\ttween.unit = unit;\r\n\t\t\ttween.start = initialInUnit;\r\n\t\t\ttween.end = adjusted;\r\n\t\t}\r\n\t}\r\n\treturn adjusted;\r\n}\r\n\r\n\r\n// Multifunctional method to get and set values of a collection\r\n// The value/s can optionally be executed if it's a function\r\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\r\n\tvar i = 0,\r\n\t\tlength = elems.length,\r\n\t\tbulk = key == null;\r\n\r\n\t// Sets many values\r\n\tif ( jQuery.type( key ) === \"object\" ) {\r\n\t\tchainable = true;\r\n\t\tfor ( i in key ) {\r\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\r\n\t\t}\r\n\r\n\t// Sets one value\r\n\t} else if ( value !== undefined ) {\r\n\t\tchainable = true;\r\n\r\n\t\tif ( !jQuery.isFunction( value ) ) {\r\n\t\t\traw = true;\r\n\t\t}\r\n\r\n\t\tif ( bulk ) {\r\n\r\n\t\t\t// Bulk operations run against the entire set\r\n\t\t\tif ( raw ) {\r\n\t\t\t\tfn.call( elems, value );\r\n\t\t\t\tfn = null;\r\n\r\n\t\t\t// ...except when executing function values\r\n\t\t\t} else {\r\n\t\t\t\tbulk = fn;\r\n\t\t\t\tfn = function( elem, key, value ) {\r\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tfn(\r\n\t\t\t\t\telems[ i ],\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn chainable ?\r\n\t\telems :\r\n\r\n\t\t// Gets\r\n\t\tbulk ?\r\n\t\t\tfn.call( elems ) :\r\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\r\n};\r\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\r\n\r\nvar rtagName = ( /<([\\w:-]+)/ );\r\n\r\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\r\n\r\nvar rleadingWhitespace = ( /^\\s+/ );\r\n\r\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\r\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\r\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\r\n\r\n\r\n\r\nfunction createSafeFragment( document ) {\r\n\tvar list = nodeNames.split( \"|\" ),\r\n\t\tsafeFrag = document.createDocumentFragment();\r\n\r\n\tif ( safeFrag.createElement ) {\r\n\t\twhile ( list.length ) {\r\n\t\t\tsafeFrag.createElement(\r\n\t\t\t\tlist.pop()\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\treturn safeFrag;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" ),\r\n\t\tfragment = document.createDocumentFragment(),\r\n\t\tinput = document.createElement( \"input\" );\r\n\r\n\t// Setup\r\n\tdiv.innerHTML = \"
                    a\";\r\n\r\n\t// IE strips leading whitespace when .innerHTML is used\r\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\r\n\r\n\t// Make sure that tbody elements aren't automatically inserted\r\n\t// IE will insert them into empty tables\r\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\r\n\r\n\t// Make sure that link elements get serialized correctly by innerHTML\r\n\t// This requires a wrapper element in IE\r\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\r\n\r\n\t// Makes sure cloning an html5 element does not cause problems\r\n\t// Where outerHTML is undefined, this still works\r\n\tsupport.html5Clone =\r\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\r\n\r\n\t// Check if a disconnected checkbox will retain its checked\r\n\t// value of true after appended to the DOM (IE6/7)\r\n\tinput.type = \"checkbox\";\r\n\tinput.checked = true;\r\n\tfragment.appendChild( input );\r\n\tsupport.appendChecked = input.checked;\r\n\r\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\r\n\t// Support: IE6-IE11+\r\n\tdiv.innerHTML = \"\";\r\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\r\n\r\n\t// #11217 - WebKit loses check when the name is after the checked attribute\r\n\tfragment.appendChild( div );\r\n\r\n\t// Support: Windows Web Apps (WWA)\r\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\r\n\tinput = document.createElement( \"input\" );\r\n\tinput.setAttribute( \"type\", \"radio\" );\r\n\tinput.setAttribute( \"checked\", \"checked\" );\r\n\tinput.setAttribute( \"name\", \"t\" );\r\n\r\n\tdiv.appendChild( input );\r\n\r\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\r\n\t// old WebKit doesn't clone checked state correctly in fragments\r\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\r\n\r\n\t// Support: IE<9\r\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\r\n\tsupport.noCloneEvent = !!div.addEventListener;\r\n\r\n\t// Support: IE<9\r\n\t// Since attributes and properties are the same in IE,\r\n\t// cleanData must set properties to undefined rather than use removeAttribute\r\n\tdiv[ jQuery.expando ] = 1;\r\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\r\n} )();\r\n\r\n\r\n// We have to close these tags to support XHTML (#13200)\r\nvar wrapMap = {\r\n\toption: [ 1, \"\" ],\r\n\tlegend: [ 1, \"
                    \", \"
                    \" ],\r\n\tarea: [ 1, \"\", \"\" ],\r\n\r\n\t// Support: IE8\r\n\tparam: [ 1, \"\", \"\" ],\r\n\tthead: [ 1, \"\", \"
                    \" ],\r\n\ttr: [ 2, \"\", \"
                    \" ],\r\n\tcol: [ 2, \"\", \"
                    \" ],\r\n\ttd: [ 3, \"\", \"
                    \" ],\r\n\r\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\r\n\t// unless wrapped in a div with non-breaking characters in front of it.\r\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
                    \", \"
                    \" ]\r\n};\r\n\r\n// Support: IE8-IE9\r\nwrapMap.optgroup = wrapMap.option;\r\n\r\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\r\nwrapMap.th = wrapMap.td;\r\n\r\n\r\nfunction getAll( context, tag ) {\r\n\tvar elems, elem,\r\n\t\ti = 0,\r\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\r\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\r\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\r\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\r\n\t\t\t\tundefined;\r\n\r\n\tif ( !found ) {\r\n\t\tfor ( found = [], elems = context.childNodes || context;\r\n\t\t\t( elem = elems[ i ] ) != null;\r\n\t\t\ti++\r\n\t\t) {\r\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\r\n\t\t\t\tfound.push( elem );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\r\n\t\tjQuery.merge( [ context ], found ) :\r\n\t\tfound;\r\n}\r\n\r\n\r\n// Mark scripts as having already been evaluated\r\nfunction setGlobalEval( elems, refElements ) {\r\n\tvar elem,\r\n\t\ti = 0;\r\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\tjQuery._data(\r\n\t\t\telem,\r\n\t\t\t\"globalEval\",\r\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\r\nvar rhtml = /<|&#?\\w+;/,\r\n\trtbody = / from table fragments\r\n\t\t\t\tif ( !support.tbody ) {\r\n\r\n\t\t\t\t\t// String was a , *may* have spurious \r\n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\ttmp.firstChild :\r\n\r\n\t\t\t\t\t\t// String was a bare or \r\n\t\t\t\t\t\twrap[ 1 ] === \"
                    \" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\t\ttmp :\r\n\t\t\t\t\t\t\t0;\r\n\r\n\t\t\t\t\tj = elem && elem.childNodes.length;\r\n\t\t\t\t\twhile ( j-- ) {\r\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\r\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\r\n\r\n\t\t\t\t\t\t\telem.removeChild( tbody );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\r\n\r\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\r\n\t\t\t\ttmp.textContent = \"\";\r\n\r\n\t\t\t\t// Fix #12392 for oldIE\r\n\t\t\t\twhile ( tmp.firstChild ) {\r\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remember the top-level container for proper cleanup\r\n\t\t\t\ttmp = safe.lastChild;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fix #11356: Clear elements from fragment\r\n\tif ( tmp ) {\r\n\t\tsafe.removeChild( tmp );\r\n\t}\r\n\r\n\t// Reset defaultChecked for any radios and checkboxes\r\n\t// about to be appended to the DOM in IE 6/7 (#8060)\r\n\tif ( !support.appendChecked ) {\r\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\r\n\t}\r\n\r\n\ti = 0;\r\n\twhile ( ( elem = nodes[ i++ ] ) ) {\r\n\r\n\t\t// Skip elements already in the context collection (trac-4087)\r\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\r\n\t\t\tif ( ignored ) {\r\n\t\t\t\tignored.push( elem );\r\n\t\t\t}\r\n\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Append to fragment\r\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tif ( contains ) {\r\n\t\t\tsetGlobalEval( tmp );\r\n\t\t}\r\n\r\n\t\t// Capture executables\r\n\t\tif ( scripts ) {\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\r\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\r\n\t\t\t\t\tscripts.push( elem );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttmp = null;\r\n\r\n\treturn safe;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar i, eventName,\r\n\t\tdiv = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\r\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\r\n\t\teventName = \"on\" + i;\r\n\r\n\t\tif ( !( support[ i ] = eventName in window ) ) {\r\n\r\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\r\n\t\t\tdiv.setAttribute( eventName, \"t\" );\r\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\r\n\t\t}\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\n\r\n\r\nvar rformElems = /^(?:input|select|textarea)$/i,\r\n\trkeyEvent = /^key/,\r\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\r\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\r\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\r\n\r\nfunction returnTrue() {\r\n\treturn true;\r\n}\r\n\r\nfunction returnFalse() {\r\n\treturn false;\r\n}\r\n\r\n// Support: IE9\r\n// See #13393 for more info\r\nfunction safeActiveElement() {\r\n\ttry {\r\n\t\treturn document.activeElement;\r\n\t} catch ( err ) { }\r\n}\r\n\r\nfunction on( elem, types, selector, data, fn, one ) {\r\n\tvar origFn, type;\r\n\r\n\t// Types can be a map of types/handlers\r\n\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t// ( types-Object, selector, data )\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\r\n\t\t\t// ( types-Object, data )\r\n\t\t\tdata = data || selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tfor ( type in types ) {\r\n\t\t\ton( elem, type, selector, data, types[ type ], one );\r\n\t\t}\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( data == null && fn == null ) {\r\n\r\n\t\t// ( types, fn )\r\n\t\tfn = selector;\r\n\t\tdata = selector = undefined;\r\n\t} else if ( fn == null ) {\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\r\n\t\t\t// ( types, selector, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = undefined;\r\n\t\t} else {\r\n\r\n\t\t\t// ( types, data, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t}\r\n\tif ( fn === false ) {\r\n\t\tfn = returnFalse;\r\n\t} else if ( !fn ) {\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( one === 1 ) {\r\n\t\torigFn = fn;\r\n\t\tfn = function( event ) {\r\n\r\n\t\t\t// Can use an empty set, since event contains the info\r\n\t\t\tjQuery().off( event );\r\n\t\t\treturn origFn.apply( this, arguments );\r\n\t\t};\r\n\r\n\t\t// Use same guid so caller can remove using origFn\r\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\r\n\t}\r\n\treturn elem.each( function() {\r\n\t\tjQuery.event.add( this, types, fn, data, selector );\r\n\t} );\r\n}\r\n\r\n/*\r\n * Helper functions for managing events -- not part of the public interface.\r\n * Props to Dean Edwards' addEvent library for many of the ideas.\r\n */\r\njQuery.event = {\r\n\r\n\tglobal: {},\r\n\r\n\tadd: function( elem, types, handler, data, selector ) {\r\n\t\tvar tmp, events, t, handleObjIn,\r\n\t\t\tspecial, eventHandle, handleObj,\r\n\t\t\thandlers, type, namespaces, origType,\r\n\t\t\telemData = jQuery._data( elem );\r\n\r\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\r\n\t\tif ( !elemData ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Caller can pass in an object of custom data in lieu of the handler\r\n\t\tif ( handler.handler ) {\r\n\t\t\thandleObjIn = handler;\r\n\t\t\thandler = handleObjIn.handler;\r\n\t\t\tselector = handleObjIn.selector;\r\n\t\t}\r\n\r\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\r\n\t\tif ( !handler.guid ) {\r\n\t\t\thandler.guid = jQuery.guid++;\r\n\t\t}\r\n\r\n\t\t// Init the element's event structure and main handler, if this is the first\r\n\t\tif ( !( events = elemData.events ) ) {\r\n\t\t\tevents = elemData.events = {};\r\n\t\t}\r\n\t\tif ( !( eventHandle = elemData.handle ) ) {\r\n\t\t\teventHandle = elemData.handle = function( e ) {\r\n\r\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\r\n\t\t\t\t// when an event is called after a page has unloaded\r\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\r\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\r\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t};\r\n\r\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\r\n\t\t\t// with IE non-native events\r\n\t\t\teventHandle.elem = elem;\r\n\t\t}\r\n\r\n\t\t// Handle multiple events separated by a space\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If event changes its type, use the special event handlers for the changed type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// If selector defined, determine special event api type, otherwise given type\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\r\n\t\t\t// Update special based on newly reset type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// handleObj is passed to all event handlers\r\n\t\t\thandleObj = jQuery.extend( {\r\n\t\t\t\ttype: type,\r\n\t\t\t\torigType: origType,\r\n\t\t\t\tdata: data,\r\n\t\t\t\thandler: handler,\r\n\t\t\t\tguid: handler.guid,\r\n\t\t\t\tselector: selector,\r\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\r\n\t\t\t\tnamespace: namespaces.join( \".\" )\r\n\t\t\t}, handleObjIn );\r\n\r\n\t\t\t// Init the event handler queue if we're the first\r\n\t\t\tif ( !( handlers = events[ type ] ) ) {\r\n\t\t\t\thandlers = events[ type ] = [];\r\n\t\t\t\thandlers.delegateCount = 0;\r\n\r\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\r\n\t\t\t\tif ( !special.setup ||\r\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\r\n\r\n\t\t\t\t\t// Bind the global event handler to the element\r\n\t\t\t\t\tif ( elem.addEventListener ) {\r\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\r\n\r\n\t\t\t\t\t} else if ( elem.attachEvent ) {\r\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( special.add ) {\r\n\t\t\t\tspecial.add.call( elem, handleObj );\r\n\r\n\t\t\t\tif ( !handleObj.handler.guid ) {\r\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add to the element's handler list, delegates in front\r\n\t\t\tif ( selector ) {\r\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\r\n\t\t\t} else {\r\n\t\t\t\thandlers.push( handleObj );\r\n\t\t\t}\r\n\r\n\t\t\t// Keep track of which events have ever been used, for event optimization\r\n\t\t\tjQuery.event.global[ type ] = true;\r\n\t\t}\r\n\r\n\t\t// Nullify elem to prevent memory leaks in IE\r\n\t\telem = null;\r\n\t},\r\n\r\n\t// Detach an event or set of events from an element\r\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\r\n\t\tvar j, handleObj, tmp,\r\n\t\t\torigCount, t, events,\r\n\t\t\tspecial, handlers, type,\r\n\t\t\tnamespaces, origType,\r\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\r\n\r\n\t\tif ( !elemData || !( events = elemData.events ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Once for each type.namespace in types; type may be omitted\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tfor ( type in events ) {\r\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\t\t\thandlers = events[ type ] || [];\r\n\t\t\ttmp = tmp[ 2 ] &&\r\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\r\n\r\n\t\t\t// Remove matching events\r\n\t\t\torigCount = j = handlers.length;\r\n\t\t\twhile ( j-- ) {\r\n\t\t\t\thandleObj = handlers[ j ];\r\n\r\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\r\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\r\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\r\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\r\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\r\n\t\t\t\t\thandlers.splice( j, 1 );\r\n\r\n\t\t\t\t\tif ( handleObj.selector ) {\r\n\t\t\t\t\t\thandlers.delegateCount--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( special.remove ) {\r\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\r\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\r\n\t\t\tif ( origCount && !handlers.length ) {\r\n\t\t\t\tif ( !special.teardown ||\r\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\r\n\r\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete events[ type ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove the expando if it's no longer used\r\n\t\tif ( jQuery.isEmptyObject( events ) ) {\r\n\t\t\tdelete elemData.handle;\r\n\r\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\r\n\t\t\t// so use it instead of delete\r\n\t\t\tjQuery._removeData( elem, \"events\" );\r\n\t\t}\r\n\t},\r\n\r\n\ttrigger: function( event, data, elem, onlyHandlers ) {\r\n\t\tvar handle, ontype, cur,\r\n\t\t\tbubbleType, special, tmp, i,\r\n\t\t\teventPath = [ elem || document ],\r\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\r\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\r\n\r\n\t\tcur = tmp = elem = elem || document;\r\n\r\n\t\t// Don't do events on text and comment nodes\r\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\r\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\r\n\r\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\r\n\t\t\tnamespaces = type.split( \".\" );\r\n\t\t\ttype = namespaces.shift();\r\n\t\t\tnamespaces.sort();\r\n\t\t}\r\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\r\n\r\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\r\n\t\tevent = event[ jQuery.expando ] ?\r\n\t\t\tevent :\r\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\r\n\r\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\r\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\r\n\t\tevent.namespace = namespaces.join( \".\" );\r\n\t\tevent.rnamespace = event.namespace ?\r\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\r\n\t\t\tnull;\r\n\r\n\t\t// Clean up the event in case it is being reused\r\n\t\tevent.result = undefined;\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = elem;\r\n\t\t}\r\n\r\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\r\n\t\tdata = data == null ?\r\n\t\t\t[ event ] :\r\n\t\t\tjQuery.makeArray( data, [ event ] );\r\n\r\n\t\t// Allow special events to draw outside the lines\r\n\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\r\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\r\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\tbubbleType = special.delegateType || type;\r\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\r\n\t\t\t\tcur = cur.parentNode;\r\n\t\t\t}\r\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\r\n\t\t\t\teventPath.push( cur );\r\n\t\t\t\ttmp = cur;\r\n\t\t\t}\r\n\r\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\r\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\r\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fire handlers on the event path\r\n\t\ti = 0;\r\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\r\n\t\t\tevent.type = i > 1 ?\r\n\t\t\t\tbubbleType :\r\n\t\t\t\tspecial.bindType || type;\r\n\r\n\t\t\t// jQuery handler\r\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\r\n\t\t\t\tjQuery._data( cur, \"handle\" );\r\n\r\n\t\t\tif ( handle ) {\r\n\t\t\t\thandle.apply( cur, data );\r\n\t\t\t}\r\n\r\n\t\t\t// Native handler\r\n\t\t\thandle = ontype && cur[ ontype ];\r\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\r\n\t\t\t\tevent.result = handle.apply( cur, data );\r\n\t\t\t\tif ( event.result === false ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevent.type = type;\r\n\r\n\t\t// If nobody prevented the default action, do it now\r\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\r\n\r\n\t\t\tif (\r\n\t\t\t\t( !special._default ||\r\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\r\n\t\t\t\t) && acceptData( elem )\r\n\t\t\t) {\r\n\r\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\r\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\r\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\r\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\r\n\t\t\t\t\ttmp = elem[ ontype ];\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\r\n\t\t\t\t\tjQuery.event.triggered = type;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\telem[ type ]();\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\r\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery.event.triggered = undefined;\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = tmp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\tdispatch: function( event ) {\r\n\r\n\t\t// Make a writable jQuery.Event from the native event object\r\n\t\tevent = jQuery.event.fix( event );\r\n\r\n\t\tvar i, j, ret, matched, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\targs = slice.call( arguments ),\r\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\r\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\r\n\r\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\r\n\t\targs[ 0 ] = event;\r\n\t\tevent.delegateTarget = this;\r\n\r\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\r\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine handlers\r\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\r\n\r\n\t\t// Run delegates first; they may want to stop propagation beneath us\r\n\t\ti = 0;\r\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tevent.currentTarget = matched.elem;\r\n\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\r\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\r\n\r\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\r\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\r\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\r\n\r\n\t\t\t\t\tevent.handleObj = handleObj;\r\n\t\t\t\t\tevent.data = handleObj.data;\r\n\r\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\r\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\r\n\r\n\t\t\t\t\tif ( ret !== undefined ) {\r\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Call the postDispatch hook for the mapped type\r\n\t\tif ( special.postDispatch ) {\r\n\t\t\tspecial.postDispatch.call( this, event );\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\thandlers: function( event, handlers ) {\r\n\t\tvar i, matches, sel, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\tdelegateCount = handlers.delegateCount,\r\n\t\t\tcur = event.target;\r\n\r\n\t\t// Support (at least): Chrome, IE9\r\n\t\t// Find delegate handlers\r\n\t\t// Black-hole SVG instance trees (#13180)\r\n\t\t//\r\n\t\t// Support: Firefox<=42+\r\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\r\n\t\tif ( delegateCount && cur.nodeType &&\r\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\r\n\r\n\t\t\t/* jshint eqeqeq: false */\r\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\r\n\t\t\t\t/* jshint eqeqeq: true */\r\n\r\n\t\t\t\t// Don't check non-elements (#13208)\r\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\r\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\r\n\t\t\t\t\tmatches = [];\r\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\r\n\t\t\t\t\t\thandleObj = handlers[ i ];\r\n\r\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\r\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\r\n\r\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\r\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\r\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\r\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( matches[ sel ] ) {\r\n\t\t\t\t\t\t\tmatches.push( handleObj );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( matches.length ) {\r\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add the remaining (directly-bound) handlers\r\n\t\tif ( delegateCount < handlers.length ) {\r\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\r\n\t\t}\r\n\r\n\t\treturn handlerQueue;\r\n\t},\r\n\r\n\tfix: function( event ) {\r\n\t\tif ( event[ jQuery.expando ] ) {\r\n\t\t\treturn event;\r\n\t\t}\r\n\r\n\t\t// Create a writable copy of the event object and normalize some properties\r\n\t\tvar i, prop, copy,\r\n\t\t\ttype = event.type,\r\n\t\t\toriginalEvent = event,\r\n\t\t\tfixHook = this.fixHooks[ type ];\r\n\r\n\t\tif ( !fixHook ) {\r\n\t\t\tthis.fixHooks[ type ] = fixHook =\r\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\r\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\r\n\t\t\t\t{};\r\n\t\t}\r\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\r\n\r\n\t\tevent = new jQuery.Event( originalEvent );\r\n\r\n\t\ti = copy.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tprop = copy[ i ];\r\n\t\t\tevent[ prop ] = originalEvent[ prop ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Fix target property (#1925)\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = originalEvent.srcElement || document;\r\n\t\t}\r\n\r\n\t\t// Support: Safari 6-8+\r\n\t\t// Target should not be a text node (#504, #13143)\r\n\t\tif ( event.target.nodeType === 3 ) {\r\n\t\t\tevent.target = event.target.parentNode;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\r\n\t\tevent.metaKey = !!event.metaKey;\r\n\r\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\r\n\t},\r\n\r\n\t// Includes some event props shared by KeyEvent and MouseEvent\r\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\r\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\r\n\r\n\tfixHooks: {},\r\n\r\n\tkeyHooks: {\r\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\r\n\t\t\t// Add which for key events\r\n\t\t\tif ( event.which == null ) {\r\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tmouseHooks: {\r\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\r\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\t\t\tvar body, eventDoc, doc,\r\n\t\t\t\tbutton = original.button,\r\n\t\t\t\tfromElement = original.fromElement;\r\n\r\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\r\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\r\n\t\t\t\teventDoc = event.target.ownerDocument || document;\r\n\t\t\t\tdoc = eventDoc.documentElement;\r\n\t\t\t\tbody = eventDoc.body;\r\n\r\n\t\t\t\tevent.pageX = original.clientX +\r\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\r\n\t\t\t\tevent.pageY = original.clientY +\r\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\r\n\t\t\t}\r\n\r\n\t\t\t// Add relatedTarget, if necessary\r\n\t\t\tif ( !event.relatedTarget && fromElement ) {\r\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\r\n\t\t\t\t\toriginal.toElement :\r\n\t\t\t\t\tfromElement;\r\n\t\t\t}\r\n\r\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\r\n\t\t\t// Note: button is not normalized, so don't use it\r\n\t\t\tif ( !event.which && button !== undefined ) {\r\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tspecial: {\r\n\t\tload: {\r\n\r\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\r\n\t\t\tnoBubble: true\r\n\t\t},\r\n\t\tfocus: {\r\n\r\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tthis.focus();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\r\n\t\t\t\t\t\t// let .trigger() run the handlers\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusin\"\r\n\t\t},\r\n\t\tblur: {\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\r\n\t\t\t\t\tthis.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusout\"\r\n\t\t},\r\n\t\tclick: {\r\n\r\n\t\t\t// For checkbox, fire native event so checked state will be right\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\r\n\t\t\t\t\tthis.click();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\r\n\t\t\t_default: function( event ) {\r\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbeforeunload: {\r\n\t\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t\t// Support: Firefox 20+\r\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\r\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\r\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Piggyback on a donor event to simulate a different one\r\n\tsimulate: function( type, elem, event ) {\r\n\t\tvar e = jQuery.extend(\r\n\t\t\tnew jQuery.Event(),\r\n\t\t\tevent,\r\n\t\t\t{\r\n\t\t\t\ttype: type,\r\n\t\t\t\tisSimulated: true\r\n\r\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\r\n\t\t\t\t// would not be triggered on donor event, since in our own\r\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\r\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\r\n\t\t\t\t//\r\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\r\n\t\t\t\t// since `originalEvent` should point to the original event for the\r\n\t\t\t\t// constancy with other events and for more focused logic\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tjQuery.event.trigger( e, null, elem );\r\n\r\n\t\tif ( e.isDefaultPrevented() ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.removeEvent = document.removeEventListener ?\r\n\tfunction( elem, type, handle ) {\r\n\r\n\t\t// This \"if\" is needed for plain objects\r\n\t\tif ( elem.removeEventListener ) {\r\n\t\t\telem.removeEventListener( type, handle );\r\n\t\t}\r\n\t} :\r\n\tfunction( elem, type, handle ) {\r\n\t\tvar name = \"on\" + type;\r\n\r\n\t\tif ( elem.detachEvent ) {\r\n\r\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\r\n\t\t\t// detachEvent needed property on element, by name of that event,\r\n\t\t\t// to properly expose it to GC\r\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\r\n\t\t\t\telem[ name ] = null;\r\n\t\t\t}\r\n\r\n\t\t\telem.detachEvent( name, handle );\r\n\t\t}\r\n\t};\r\n\r\njQuery.Event = function( src, props ) {\r\n\r\n\t// Allow instantiation without the 'new' keyword\r\n\tif ( !( this instanceof jQuery.Event ) ) {\r\n\t\treturn new jQuery.Event( src, props );\r\n\t}\r\n\r\n\t// Event object\r\n\tif ( src && src.type ) {\r\n\t\tthis.originalEvent = src;\r\n\t\tthis.type = src.type;\r\n\r\n\t\t// Events bubbling up the document may have been marked as prevented\r\n\t\t// by a handler lower down the tree; reflect the correct value.\r\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\r\n\t\t\t\tsrc.defaultPrevented === undefined &&\r\n\r\n\t\t\t\t// Support: IE < 9, Android < 4.0\r\n\t\t\t\tsrc.returnValue === false ?\r\n\t\t\treturnTrue :\r\n\t\t\treturnFalse;\r\n\r\n\t// Event type\r\n\t} else {\r\n\t\tthis.type = src;\r\n\t}\r\n\r\n\t// Put explicitly provided properties onto the event object\r\n\tif ( props ) {\r\n\t\tjQuery.extend( this, props );\r\n\t}\r\n\r\n\t// Create a timestamp if incoming event doesn't have one\r\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\r\n\r\n\t// Mark it as fixed\r\n\tthis[ jQuery.expando ] = true;\r\n};\r\n\r\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\r\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\r\njQuery.Event.prototype = {\r\n\tconstructor: jQuery.Event,\r\n\tisDefaultPrevented: returnFalse,\r\n\tisPropagationStopped: returnFalse,\r\n\tisImmediatePropagationStopped: returnFalse,\r\n\r\n\tpreventDefault: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isDefaultPrevented = returnTrue;\r\n\t\tif ( !e ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If preventDefault exists, run it on the original event\r\n\t\tif ( e.preventDefault ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t// Support: IE\r\n\t\t// Otherwise set the returnValue property of the original event to false\r\n\t\t} else {\r\n\t\t\te.returnValue = false;\r\n\t\t}\r\n\t},\r\n\tstopPropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isPropagationStopped = returnTrue;\r\n\r\n\t\tif ( !e || this.isSimulated ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If stopPropagation exists, run it on the original event\r\n\t\tif ( e.stopPropagation ) {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\r\n\t\t// Support: IE\r\n\t\t// Set the cancelBubble property of the original event to true\r\n\t\te.cancelBubble = true;\r\n\t},\r\n\tstopImmediatePropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isImmediatePropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && e.stopImmediatePropagation ) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t}\r\n\r\n\t\tthis.stopPropagation();\r\n\t}\r\n};\r\n\r\n// Create mouseenter/leave events using mouseover/out and event-time checks\r\n// so that event delegation works in jQuery.\r\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\r\n//\r\n// Support: Safari 7 only\r\n// Safari sends mouseenter too often; see:\r\n// https://code.google.com/p/chromium/issues/detail?id=470258\r\n// for the description of the bug (it existed in older Chrome versions as well).\r\njQuery.each( {\r\n\tmouseenter: \"mouseover\",\r\n\tmouseleave: \"mouseout\",\r\n\tpointerenter: \"pointerover\",\r\n\tpointerleave: \"pointerout\"\r\n}, function( orig, fix ) {\r\n\tjQuery.event.special[ orig ] = {\r\n\t\tdelegateType: fix,\r\n\t\tbindType: fix,\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar ret,\r\n\t\t\t\ttarget = this,\r\n\t\t\t\trelated = event.relatedTarget,\r\n\t\t\t\thandleObj = event.handleObj;\r\n\r\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\r\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\r\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\r\n\t\t\t\tevent.type = handleObj.origType;\r\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\r\n\t\t\t\tevent.type = fix;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t};\r\n} );\r\n\r\n// IE submit delegation\r\nif ( !support.submit ) {\r\n\r\n\tjQuery.event.special.submit = {\r\n\t\tsetup: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\r\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\r\n\r\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\r\n\t\t\t\tvar elem = e.target,\r\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\r\n\r\n\t\t\t\t\t\t// Support: IE <=8\r\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\r\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\r\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\r\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\r\n\t\t\t\t\t\tundefined;\r\n\r\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\r\n\t\t\t\t\t\tevent._submitBubble = true;\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// return undefined since we don't need an event listener\r\n\t\t},\r\n\r\n\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t// If form was submitted by the user, bubble the event up the tree\r\n\t\t\tif ( event._submitBubble ) {\r\n\t\t\t\tdelete event._submitBubble;\r\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\r\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\r\n\t\t\tjQuery.event.remove( this, \"._submit\" );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// IE change delegation and checkbox/radio fix\r\nif ( !support.change ) {\r\n\r\n\tjQuery.event.special.change = {\r\n\r\n\t\tsetup: function() {\r\n\r\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\r\n\r\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\r\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\r\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\r\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\r\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\r\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\r\n\t\t\t\t\t\t\tthis._justChanged = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tthis._justChanged = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\r\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\r\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\r\n\t\t\t\tvar elem = e.target;\r\n\r\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar elem = event.target;\r\n\r\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\r\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\r\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\r\n\r\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\t\t\tjQuery.event.remove( this, \"._change\" );\r\n\r\n\t\t\treturn !rformElems.test( this.nodeName );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Support: Firefox\r\n// Firefox doesn't have focus(in | out) events\r\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\r\n//\r\n// Support: Chrome, Safari\r\n// focus(in | out) events fire after focus & blur events,\r\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\r\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\r\nif ( !support.focusin ) {\r\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\r\n\r\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\r\n\t\tvar handler = function( event ) {\r\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\r\n\t\t};\r\n\r\n\t\tjQuery.event.special[ fix ] = {\r\n\t\t\tsetup: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\r\n\t\t\t\t}\r\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\r\n\t\t\t},\r\n\t\t\tteardown: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\r\n\t\t\t\t\tjQuery._removeData( doc, fix );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t} );\r\n}\r\n\r\njQuery.fn.extend( {\r\n\r\n\ton: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn );\r\n\t},\r\n\tone: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn, 1 );\r\n\t},\r\n\toff: function( types, selector, fn ) {\r\n\t\tvar handleObj, type;\r\n\t\tif ( types && types.preventDefault && types.handleObj ) {\r\n\r\n\t\t\t// ( event ) dispatched jQuery.Event\r\n\t\t\thandleObj = types.handleObj;\r\n\t\t\tjQuery( types.delegateTarget ).off(\r\n\t\t\t\thandleObj.namespace ?\r\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\r\n\t\t\t\t\thandleObj.origType,\r\n\t\t\t\thandleObj.selector,\r\n\t\t\t\thandleObj.handler\r\n\t\t\t);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t\t// ( types-object [, selector] )\r\n\t\t\tfor ( type in types ) {\r\n\t\t\t\tthis.off( type, selector, types[ type ] );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( selector === false || typeof selector === \"function\" ) {\r\n\r\n\t\t\t// ( types [, fn] )\r\n\t\t\tfn = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tif ( fn === false ) {\r\n\t\t\tfn = returnFalse;\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.remove( this, types, fn, selector );\r\n\t\t} );\r\n\t},\r\n\r\n\ttrigger: function( type, data ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.trigger( type, data, this );\r\n\t\t} );\r\n\t},\r\n\ttriggerHandler: function( type, data ) {\r\n\t\tvar elem = this[ 0 ];\r\n\t\tif ( elem ) {\r\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\r\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\r\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\r\n\r\n\t// Support: IE 10-11, Edge 10240+\r\n\t// In IE/Edge using regex groups here causes severe slowdowns.\r\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\r\n\trnoInnerhtml = /\\s*$/g,\r\n\tsafeFragment = createSafeFragment( document ),\r\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\r\n\r\n// Support: IE<8\r\n// Manipulating tables requires a tbody\r\nfunction manipulationTarget( elem, content ) {\r\n\treturn jQuery.nodeName( elem, \"table\" ) &&\r\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\r\n\r\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\r\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\r\n\t\telem;\r\n}\r\n\r\n// Replace/restore the type attribute of script elements for safe DOM manipulation\r\nfunction disableScript( elem ) {\r\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\r\n\treturn elem;\r\n}\r\nfunction restoreScript( elem ) {\r\n\tvar match = rscriptTypeMasked.exec( elem.type );\r\n\tif ( match ) {\r\n\t\telem.type = match[ 1 ];\r\n\t} else {\r\n\t\telem.removeAttribute( \"type\" );\r\n\t}\r\n\treturn elem;\r\n}\r\n\r\nfunction cloneCopyEvent( src, dest ) {\r\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar type, i, l,\r\n\t\toldData = jQuery._data( src ),\r\n\t\tcurData = jQuery._data( dest, oldData ),\r\n\t\tevents = oldData.events;\r\n\r\n\tif ( events ) {\r\n\t\tdelete curData.handle;\r\n\t\tcurData.events = {};\r\n\r\n\t\tfor ( type in events ) {\r\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\r\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// make the cloned public data object a copy from the original\r\n\tif ( curData.data ) {\r\n\t\tcurData.data = jQuery.extend( {}, curData.data );\r\n\t}\r\n}\r\n\r\nfunction fixCloneNodeIssues( src, dest ) {\r\n\tvar nodeName, e, data;\r\n\r\n\t// We do not need to do anything for non-Elements\r\n\tif ( dest.nodeType !== 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tnodeName = dest.nodeName.toLowerCase();\r\n\r\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\r\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\r\n\t\tdata = jQuery._data( dest );\r\n\r\n\t\tfor ( e in data.events ) {\r\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\r\n\t\t}\r\n\r\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\r\n\t\tdest.removeAttribute( jQuery.expando );\r\n\t}\r\n\r\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\r\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\r\n\t\tdisableScript( dest ).text = src.text;\r\n\t\trestoreScript( dest );\r\n\r\n\t// IE6-10 improperly clones children of object elements using classid.\r\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\r\n\t} else if ( nodeName === \"object\" ) {\r\n\t\tif ( dest.parentNode ) {\r\n\t\t\tdest.outerHTML = src.outerHTML;\r\n\t\t}\r\n\r\n\t\t// This path appears unavoidable for IE9. When cloning an object\r\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\r\n\t\t// If the src has innerHTML and the destination does not,\r\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\r\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\r\n\t\t\tdest.innerHTML = src.innerHTML;\r\n\t\t}\r\n\r\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\r\n\r\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\r\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\r\n\t\t// a checked appearance if the defaultChecked value isn't also set\r\n\r\n\t\tdest.defaultChecked = dest.checked = src.checked;\r\n\r\n\t\t// IE6-7 get confused and end up setting the value of a cloned\r\n\t\t// checkbox/radio button to an empty string instead of \"on\"\r\n\t\tif ( dest.value !== src.value ) {\r\n\t\t\tdest.value = src.value;\r\n\t\t}\r\n\r\n\t// IE6-8 fails to return the selected option to the default selected\r\n\t// state when cloning options\r\n\t} else if ( nodeName === \"option\" ) {\r\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\r\n\r\n\t// IE6-8 fails to set the defaultValue to the correct value when\r\n\t// cloning other types of input fields\r\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\r\n\t\tdest.defaultValue = src.defaultValue;\r\n\t}\r\n}\r\n\r\nfunction domManip( collection, args, callback, ignored ) {\r\n\r\n\t// Flatten any nested arrays\r\n\targs = concat.apply( [], args );\r\n\r\n\tvar first, node, hasScripts,\r\n\t\tscripts, doc, fragment,\r\n\t\ti = 0,\r\n\t\tl = collection.length,\r\n\t\tiNoClone = l - 1,\r\n\t\tvalue = args[ 0 ],\r\n\t\tisFunction = jQuery.isFunction( value );\r\n\r\n\t// We can't cloneNode fragments that contain checked, in WebKit\r\n\tif ( isFunction ||\r\n\t\t\t( l > 1 && typeof value === \"string\" &&\r\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\r\n\t\treturn collection.each( function( index ) {\r\n\t\t\tvar self = collection.eq( index );\r\n\t\t\tif ( isFunction ) {\r\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\r\n\t\t\t}\r\n\t\t\tdomManip( self, args, callback, ignored );\r\n\t\t} );\r\n\t}\r\n\r\n\tif ( l ) {\r\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\r\n\t\tfirst = fragment.firstChild;\r\n\r\n\t\tif ( fragment.childNodes.length === 1 ) {\r\n\t\t\tfragment = first;\r\n\t\t}\r\n\r\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\r\n\t\tif ( first || ignored ) {\r\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\r\n\t\t\thasScripts = scripts.length;\r\n\r\n\t\t\t// Use the original fragment for the last item\r\n\t\t\t// instead of the first because it can end up\r\n\t\t\t// being emptied incorrectly in certain situations (#8070).\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tnode = fragment;\r\n\r\n\t\t\t\tif ( i !== iNoClone ) {\r\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\r\n\r\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\r\n\t\t\t\t\tif ( hasScripts ) {\r\n\r\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback.call( collection[ i ], node, i );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasScripts ) {\r\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\r\n\r\n\t\t\t\t// Reenable scripts\r\n\t\t\t\tjQuery.map( scripts, restoreScript );\r\n\r\n\t\t\t\t// Evaluate executable scripts on first document insertion\r\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\r\n\t\t\t\t\tnode = scripts[ i ];\r\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\r\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\r\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\r\n\r\n\t\t\t\t\t\tif ( node.src ) {\r\n\r\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\r\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\r\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjQuery.globalEval(\r\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\r\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Fix #11809: Avoid leaking memory\r\n\t\t\tfragment = first = null;\r\n\t\t}\r\n\t}\r\n\r\n\treturn collection;\r\n}\r\n\r\nfunction remove( elem, selector, keepData ) {\r\n\tvar node,\r\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\r\n\t\ti = 0;\r\n\r\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\r\n\r\n\t\tif ( !keepData && node.nodeType === 1 ) {\r\n\t\t\tjQuery.cleanData( getAll( node ) );\r\n\t\t}\r\n\r\n\t\tif ( node.parentNode ) {\r\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\r\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\r\n\t\t\t}\r\n\t\t\tnode.parentNode.removeChild( node );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\njQuery.extend( {\r\n\thtmlPrefilter: function( html ) {\r\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\r\n\t},\r\n\r\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\r\n\t\tvar destElements, node, clone, i, srcElements,\r\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\r\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\r\n\r\n\t\t\tclone = elem.cloneNode( true );\r\n\r\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\r\n\t\t} else {\r\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\r\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\r\n\t\t}\r\n\r\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\r\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\r\n\t\t\tdestElements = getAll( clone );\r\n\t\t\tsrcElements = getAll( elem );\r\n\r\n\t\t\t// Fix all IE cloning issues\r\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\r\n\r\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\r\n\t\t\t\tif ( destElements[ i ] ) {\r\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy the events from the original to the clone\r\n\t\tif ( dataAndEvents ) {\r\n\t\t\tif ( deepDataAndEvents ) {\r\n\t\t\t\tsrcElements = srcElements || getAll( elem );\r\n\t\t\t\tdestElements = destElements || getAll( clone );\r\n\r\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\r\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloneCopyEvent( elem, clone );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tdestElements = getAll( clone, \"script\" );\r\n\t\tif ( destElements.length > 0 ) {\r\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\r\n\t\t}\r\n\r\n\t\tdestElements = srcElements = node = null;\r\n\r\n\t\t// Return the cloned set\r\n\t\treturn clone;\r\n\t},\r\n\r\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\r\n\t\tvar elem, type, id, data,\r\n\t\t\ti = 0,\r\n\t\t\tinternalKey = jQuery.expando,\r\n\t\t\tcache = jQuery.cache,\r\n\t\t\tattributes = support.attributes,\r\n\t\t\tspecial = jQuery.event.special;\r\n\r\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\r\n\r\n\t\t\t\tid = elem[ internalKey ];\r\n\t\t\t\tdata = id && cache[ id ];\r\n\r\n\t\t\t\tif ( data ) {\r\n\t\t\t\t\tif ( data.events ) {\r\n\t\t\t\t\t\tfor ( type in data.events ) {\r\n\t\t\t\t\t\t\tif ( special[ type ] ) {\r\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\r\n\r\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\r\n\t\t\t\t\tif ( cache[ id ] ) {\r\n\r\n\t\t\t\t\t\tdelete cache[ id ];\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\r\n\t\t\t\t\t\t// IE creates expando attributes along with the property\r\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\r\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\r\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\r\n\r\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\r\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\r\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdeletedIds.push( id );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\t// Keep domManip exposed until 3.0 (gh-2225)\r\n\tdomManip: domManip,\r\n\r\n\tdetach: function( selector ) {\r\n\t\treturn remove( this, selector, true );\r\n\t},\r\n\r\n\tremove: function( selector ) {\r\n\t\treturn remove( this, selector );\r\n\t},\r\n\r\n\ttext: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\treturn value === undefined ?\r\n\t\t\t\tjQuery.text( this ) :\r\n\t\t\t\tthis.empty().append(\r\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\r\n\t\t\t\t);\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\tappend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.appendChild( elem );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tprepend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tbefore: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tafter: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tempty: function() {\r\n\t\tvar elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\r\n\r\n\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t}\r\n\r\n\t\t\t// Remove any remaining nodes\r\n\t\t\twhile ( elem.firstChild ) {\r\n\t\t\t\telem.removeChild( elem.firstChild );\r\n\t\t\t}\r\n\r\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\r\n\t\t\t// Support: IE<9\r\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\r\n\t\t\t\telem.options.length = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\r\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\r\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\r\n\r\n\t\treturn this.map( function() {\r\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\r\n\t\t} );\r\n\t},\r\n\r\n\thtml: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar elem = this[ 0 ] || {},\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = this.length;\r\n\r\n\t\t\tif ( value === undefined ) {\r\n\t\t\t\treturn elem.nodeType === 1 ?\r\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t}\r\n\r\n\t\t\t// See if we can take a shortcut and just use innerHTML\r\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\r\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\r\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\r\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\r\n\r\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfor ( ; i < l; i++ ) {\r\n\r\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\t\t\t\telem = this[ i ] || {};\r\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t\t\t\t\telem.innerHTML = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem = 0;\r\n\r\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\r\n\t\t\t\t} catch ( e ) {}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem ) {\r\n\t\t\t\tthis.empty().append( value );\r\n\t\t\t}\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\treplaceWith: function() {\r\n\t\tvar ignored = [];\r\n\r\n\t\t// Make the changes, replacing each non-ignored context element with the new content\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tvar parent = this.parentNode;\r\n\r\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( this ) );\r\n\t\t\t\tif ( parent ) {\r\n\t\t\t\t\tparent.replaceChild( elem, this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Force callback invocation\r\n\t\t}, ignored );\r\n\t}\r\n} );\r\n\r\njQuery.each( {\r\n\tappendTo: \"append\",\r\n\tprependTo: \"prepend\",\r\n\tinsertBefore: \"before\",\r\n\tinsertAfter: \"after\",\r\n\treplaceAll: \"replaceWith\"\r\n}, function( name, original ) {\r\n\tjQuery.fn[ name ] = function( selector ) {\r\n\t\tvar elems,\r\n\t\t\ti = 0,\r\n\t\t\tret = [],\r\n\t\t\tinsert = jQuery( selector ),\r\n\t\t\tlast = insert.length - 1;\r\n\r\n\t\tfor ( ; i <= last; i++ ) {\r\n\t\t\telems = i === last ? this : this.clone( true );\r\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\r\n\r\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\r\n\t\t\tpush.apply( ret, elems.get() );\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\n\r\n\r\nvar iframe,\r\n\telemdisplay = {\r\n\r\n\t\t// Support: Firefox\r\n\t\t// We have to pre-define these values for FF (#10227)\r\n\t\tHTML: \"block\",\r\n\t\tBODY: \"block\"\r\n\t};\r\n\r\n/**\r\n * Retrieve the actual display of a element\r\n * @param {String} name nodeName of the element\r\n * @param {Object} doc Document object\r\n */\r\n\r\n// Called only from within defaultDisplay\r\nfunction actualDisplay( name, doc ) {\r\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\r\n\r\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\r\n\r\n\t// We don't have any data stored on the element,\r\n\t// so use \"detach\" method as fast way to get rid of the element\r\n\telem.detach();\r\n\r\n\treturn display;\r\n}\r\n\r\n/**\r\n * Try to determine the default display value of an element\r\n * @param {String} nodeName\r\n */\r\nfunction defaultDisplay( nodeName ) {\r\n\tvar doc = document,\r\n\t\tdisplay = elemdisplay[ nodeName ];\r\n\r\n\tif ( !display ) {\r\n\t\tdisplay = actualDisplay( nodeName, doc );\r\n\r\n\t\t// If the simple way fails, read from inside an iframe\r\n\t\tif ( display === \"none\" || !display ) {\r\n\r\n\t\t\t// Use the already-created iframe if possible\r\n\t\t\tiframe = ( iframe || jQuery( \"';\r\n break;\r\n case 3:\r\n delete config.title;\r\n delete config.closeBtn;\r\n config.icon === -1 && (config.icon === 0);\r\n layer.closeAll('loading');\r\n break;\r\n case 4:\r\n conType || (config.content = [config.content, 'body']);\r\n config.follow = config.content[1];\r\n config.content = config.content[0] + '';\r\n delete config.title;\r\n config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];\r\n config.tipsMore || layer.closeAll('tips');\r\n break;\r\n }\r\n \r\n // 建立容器\r\n that.vessel(conType, function(html, titleHTML, moveElem){\r\n body.append(html[0]);\r\n conType ? function(){\r\n (config.type == 2 || config.type == 4) ? function(){\r\n $('body').append(html[1]);\r\n }() : function(){\r\n if(!content.parents('.'+doms[0])[0]){\r\n content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);\r\n $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);\r\n }\r\n }();\r\n }() : body.append(html[1]);\r\n $('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);\r\n \r\n that.layero = $('#'+ doms[0] + times);\r\n that.shadeo = $('#'+ doms.SHADE + times);\r\n \r\n config.scrollbar || ready.setScrollbar(times);\r\n }).auto(times);\r\n \r\n // 遮罩\r\n that.shadeo.css({\r\n 'background-color': config.shade[1] || '#000'\r\n ,'opacity': config.shade[0] || config.shade\r\n });\r\n\r\n config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);\r\n\r\n // 坐标自适应浏览器窗口尺寸\r\n config.type == 4 ? that.tips() : function(){\r\n that.offset()\r\n // 首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸\r\n parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){\r\n that.layero.css('visibility', 'hidden');\r\n layer.ready(function(){\r\n that.offset();\r\n that.layero.css('visibility', 'visible');\r\n });\r\n }();\r\n }();\r\n \r\n // 若是固定定位,则跟随 resize 事件来自适应坐标\r\n if(config.fixed){\r\n if(!ready.events.resize[that.index]){\r\n ready.events.resize[that.index] = function(){\r\n that.resize();\r\n };\r\n // 此处 resize 事件不会一直叠加,当关闭弹层时会移除该事件\r\n win.on('resize', ready.events.resize[that.index]);\r\n }\r\n }\r\n \r\n config.time <= 0 || setTimeout(function(){\r\n layer.close(that.index);\r\n }, config.time);\r\n that.move().callback();\r\n \r\n // 为兼容 jQuery3.0 的 css 动画影响元素尺寸计算\r\n if(doms.anim[config.anim]){\r\n var animClass = 'layer-anim '+ doms.anim[config.anim];\r\n that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){\r\n $(this).removeClass(animClass);\r\n });\r\n }\r\n \r\n // 记录配置信息\r\n that.layero.data('config', config);\r\n};\r\n\r\n// 当前实例的 resize 事件\r\nClass.pt.resize = function(){\r\n var that = this;\r\n var config = that.config;\r\n \r\n that.offset();\r\n (/^\\d+%$/.test(config.area[0]) || /^\\d+%$/.test(config.area[1])) && that.auto(that.index);\r\n config.type == 4 && that.tips();\r\n};\r\n\r\n// 自适应\r\nClass.pt.auto = function(index){\r\n var that = this, config = that.config, layero = $('#'+ doms[0] + index);\r\n \r\n if(config.area[0] === '' && config.maxWidth > 0){\r\n // 适配 ie7\r\n if(layer.ie && layer.ie < 8 && config.btn){\r\n layero.width(layero.innerWidth());\r\n }\r\n layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);\r\n }\r\n \r\n var area = [layero.innerWidth(), layero.innerHeight()];\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var setHeight = function(elem){\r\n elem = layero.find(elem);\r\n elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));\r\n };\r\n\r\n switch(config.type){\r\n case 2: \r\n setHeight('iframe');\r\n break;\r\n default:\r\n if(config.area[1] === ''){\r\n if(config.maxHeight > 0 && layero.outerHeight() > config.maxHeight){\r\n area[1] = config.maxHeight;\r\n setHeight('.'+doms[5]);\r\n } else if(config.fixed && area[1] >= win.height()){\r\n area[1] = win.height();\r\n setHeight('.'+doms[5]);\r\n }\r\n } else {\r\n setHeight('.'+doms[5]);\r\n }\r\n break;\r\n }\r\n \r\n return that;\r\n};\r\n\r\n// 计算坐标\r\nClass.pt.offset = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var area = [layero.outerWidth(), layero.outerHeight()];\r\n var type = typeof config.offset === 'object';\r\n that.offsetTop = (win.height() - area[1])/2;\r\n that.offsetLeft = (win.width() - area[0])/2;\r\n \r\n if(type){\r\n that.offsetTop = config.offset[0];\r\n that.offsetLeft = config.offset[1]||that.offsetLeft;\r\n } else if(config.offset !== 'auto'){\r\n \r\n if(config.offset === 't'){ // 上\r\n that.offsetTop = 0;\r\n } else if(config.offset === 'r'){ // 右\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'b'){ // 下\r\n that.offsetTop = win.height() - area[1];\r\n } else if(config.offset === 'l'){ // 左\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lt'){ // 左上\r\n that.offsetTop = 0;\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lb'){ // 左下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'rt'){ // 右上\r\n that.offsetTop = 0;\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'rb'){ // 右下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = win.width() - area[0];\r\n } else {\r\n that.offsetTop = config.offset;\r\n }\r\n \r\n }\r\n \r\n if(!config.fixed){\r\n that.offsetTop = /%$/.test(that.offsetTop) ? \r\n win.height()*parseFloat(that.offsetTop)/100\r\n : parseFloat(that.offsetTop);\r\n that.offsetLeft = /%$/.test(that.offsetLeft) ? \r\n win.width()*parseFloat(that.offsetLeft)/100\r\n : parseFloat(that.offsetLeft);\r\n that.offsetTop += win.scrollTop();\r\n that.offsetLeft += win.scrollLeft();\r\n }\r\n \r\n // 最小化窗口时的自适应\r\n if(layero.data('maxminStatus') === 'min'){\r\n that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);\r\n that.offsetLeft = layero.css('left');\r\n }\r\n\r\n // 设置坐标\r\n layero.css({\r\n top: that.offsetTop, \r\n left: that.offsetLeft\r\n });\r\n};\r\n\r\n// Tips\r\nClass.pt.tips = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);\r\n if(!follow[0]) follow = $('body');\r\n var goal = {\r\n width: follow.outerWidth(),\r\n height: follow.outerHeight(),\r\n top: follow.offset().top,\r\n left: follow.offset().left\r\n }, tipsG = layero.find('.layui-layer-TipsG');\r\n \r\n var guide = config.tips[0];\r\n config.tips[1] || tipsG.remove();\r\n \r\n goal.autoLeft = function(){\r\n if(goal.left + layArea[0] - win.width() > 0){\r\n goal.tipLeft = goal.left + goal.width - layArea[0];\r\n tipsG.css({right: 12, left: 'auto'});\r\n } else {\r\n goal.tipLeft = goal.left;\r\n }\r\n };\r\n \r\n // 辨别 tips 的方位\r\n // 21 为箭头大小 8*2 + 箭头相对父元素的top偏移 5\r\n goal.where = [function(){ // 上 \r\n goal.autoLeft();\r\n goal.tipTop = goal.top - layArea[1] - 10;\r\n tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);\r\n }, function(){ // 右\r\n goal.tipLeft = goal.left + goal.width + 10;\r\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\r\n goal.tipTop = Math.max(goal.tipTop, 0);\r\n tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]); \r\n }, function(){ // 下\r\n goal.autoLeft();\r\n goal.tipTop = goal.top + goal.height + 10;\r\n tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);\r\n }, function(){ // 左\r\n goal.tipLeft = goal.left - layArea[0] - 10;\r\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\r\n goal.tipTop = Math.max(goal.tipTop, 0);\r\n tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);\r\n }];\r\n goal.where[guide-1]();\r\n \r\n /* 8*2为小三角形占据的空间 */\r\n if(guide === 1){\r\n goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();\r\n } else if(guide === 2){\r\n win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()\r\n } else if(guide === 3){\r\n (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();\r\n } else if(guide === 4){\r\n layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()\r\n }\r\n\r\n layero.find('.'+doms[5]).css({\r\n 'background-color': config.tips[1], \r\n 'padding-right': (config.closeBtn ? '30px' : '')\r\n });\r\n layero.css({\r\n left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0), \r\n top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)\r\n });\r\n}\r\n\r\n// 拖拽层\r\nClass.pt.move = function(){\r\n var that = this;\r\n var config = that.config;\r\n var _DOC = $(document);\r\n var layero = that.layero;\r\n var DATA_NAME = ['LAY_MOVE_DICT', 'LAY_RESIZE_DICT'];\r\n var moveElem = layero.find(config.move);\r\n var resizeElem = layero.find('.layui-layer-resize');\r\n \r\n // 给指定元素添加拖动光标\r\n if(config.move) moveElem.css('cursor', 'move');\r\n \r\n // 按下拖动元素\r\n moveElem.on('mousedown', function(e){\r\n if (e.button) {return;} // 不是左键不处理\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.move){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [\r\n e.clientX - parseFloat(layero.css('left')),\r\n e.clientY - parseFloat(layero.css('top'))\r\n ];\r\n \r\n othis.data(DATA_NAME[0], dict);\r\n ready.eventMoveElem = othis;\r\n ready.moveElem.css('cursor', 'move').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 按下右下角拉伸\r\n resizeElem.on('mousedown', function(e){\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.resize){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [e.clientX, e.clientY];\r\n dict.index = that.index;\r\n dict.area = [\r\n layero.outerWidth()\r\n ,layero.outerHeight()\r\n ];\r\n \r\n othis.data(DATA_NAME[1], dict);\r\n ready.eventResizeElem = othis;\r\n ready.moveElem.css('cursor', 'se-resize').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 拖动元素,避免多次调用实例造成事件叠加\r\n if(ready.docEvent) return that;\r\n _DOC.on('mousemove', function(e){\r\n // 拖拽移动\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {}\r\n ,layero = dict.layero\r\n ,config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n var fixed = layero.css('position') === 'fixed';\r\n \r\n e.preventDefault();\r\n \r\n dict.stX = fixed ? 0 : win.scrollLeft();\r\n dict.stY = fixed ? 0 : win.scrollTop();\r\n\r\n // 控制元素不被拖出窗口外\r\n if(!config.moveOut){\r\n var setRig = win.width() - layero.outerWidth() + dict.stX;\r\n var setBot = win.height() - layero.outerHeight() + dict.stY; \r\n X < dict.stX && (X = dict.stX);\r\n X > setRig && (X = setRig); \r\n Y < dict.stY && (Y = dict.stY);\r\n Y > setBot && (Y = setBot);\r\n }\r\n \r\n // 拖动时跟随鼠标位置\r\n layero.css({\r\n left: X,\r\n top: Y\r\n });\r\n }\r\n \r\n // Resize\r\n if(ready.eventResizeElem){\r\n var dict = ready.eventResizeElem.data(DATA_NAME[1]) || {};\r\n var config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n \r\n e.preventDefault();\r\n \r\n // 拉伸宽高\r\n layer.style(dict.index, {\r\n width: dict.area[0] + X\r\n ,height: dict.area[1] + Y\r\n });\r\n \r\n config.resizing && config.resizing(dict.layero);\r\n }\r\n }).on('mouseup', function(e){\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {};\r\n var config = dict.config;\r\n \r\n ready.eventMoveElem.removeData(DATA_NAME[0]);\r\n delete ready.eventMoveElem;\r\n ready.moveElem.hide();\r\n config.moveEnd && config.moveEnd(dict.layero);\r\n }\r\n if(ready.eventResizeElem){\r\n ready.eventResizeElem.removeData(DATA_NAME[1]);\r\n delete ready.eventResizeElem;\r\n ready.moveElem.hide();\r\n }\r\n });\r\n \r\n ready.docEvent = true; // 已给 document 执行全局事件\r\n return that;\r\n};\r\n\r\nClass.pt.callback = function(){\r\n var that = this, layero = that.layero, config = that.config;\r\n that.openLayer();\r\n if(config.success){\r\n if(config.type == 2){\r\n layero.find('iframe').on('load', function(){\r\n config.success(layero, that.index, that);\r\n });\r\n } else {\r\n config.success(layero, that.index, that);\r\n }\r\n }\r\n layer.ie == 6 && that.IE6(layero);\r\n \r\n // 按钮\r\n layero.find('.'+ doms[6]).children('a').on('click', function(){\r\n var index = $(this).index();\r\n if(index === 0){\r\n if(config.yes){\r\n config.yes(that.index, layero, that);\r\n } else if(config['btn1']){\r\n config['btn1'](that.index, layero, that);\r\n } else {\r\n layer.close(that.index);\r\n }\r\n } else {\r\n var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n });\r\n \r\n // 取消\r\n function cancel(){\r\n var close = config.cancel && config.cancel(that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n \r\n // 右上角关闭回调\r\n layero.find('.'+ doms[7]).on('click', cancel);\r\n \r\n // 点遮罩关闭\r\n if(config.shadeClose){\r\n that.shadeo.on('click', function(){\r\n layer.close(that.index);\r\n });\r\n } \r\n \r\n // 最小化\r\n layero.find('.layui-layer-min').on('click', function(){\r\n var min = config.min && config.min(layero, that.index, that);\r\n min === false || layer.min(that.index, config);\r\n });\r\n \r\n // 全屏/还原\r\n layero.find('.layui-layer-max').on('click', function(){\r\n if($(this).hasClass('layui-layer-maxmin')){\r\n layer.restore(that.index);\r\n config.restore && config.restore(layero, that.index, that);\r\n } else {\r\n layer.full(that.index, config);\r\n setTimeout(function(){\r\n config.full && config.full(layero, that.index, that);\r\n }, 100);\r\n }\r\n });\r\n\r\n config.end && (ready.end[that.index] = config.end);\r\n};\r\n\r\n// for ie6 恢复 select\r\nready.reselect = function(){\r\n $.each($('select'), function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show(); \r\n }\r\n sthis = null;\r\n });\r\n}; \r\n\r\nClass.pt.IE6 = function(layero){\r\n // 隐藏select\r\n $('select').each(function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();\r\n }\r\n sthis = null;\r\n });\r\n};\r\n\r\n// 需依赖原型的对外方法\r\nClass.pt.openLayer = function(){\r\n var that = this;\r\n \r\n // 置顶当前窗口\r\n layer.zIndex = that.config.zIndex;\r\n layer.setTop = function(layero){\r\n var setZindex = function(){\r\n layer.zIndex++;\r\n layero.css('z-index', layer.zIndex + 1);\r\n };\r\n layer.zIndex = parseInt(layero[0].style.zIndex);\r\n layero.on('mousedown', setZindex);\r\n return layer.zIndex;\r\n };\r\n};\r\n\r\n// 记录宽高坐标,用于还原\r\nready.record = function(layero){\r\n if(!layero[0]) return window.console && console.error('index error');\r\n var area = [\r\n layero[0].style.width || layero.width(),\r\n layero[0].style.height || layero.height(),\r\n layero.position().top, \r\n layero.position().left + parseFloat(layero.css('margin-left'))\r\n ];\r\n layero.find('.layui-layer-max').addClass('layui-layer-maxmin');\r\n layero.attr({area: area});\r\n};\r\n\r\n// 设置页面滚动条\r\nready.setScrollbar = function(index){\r\n doms.html.css('overflow', 'hidden').attr('layer-full', index);\r\n};\r\n\r\n// 恢复页面滚动条\r\nready.restScrollbar = function(index){\r\n if(doms.html.attr('layer-full') == index){\r\n doms.html[0].style[doms.html[0].style.removeProperty \r\n ? 'removeProperty' \r\n : 'removeAttribute']('overflow');\r\n doms.html.removeAttr('layer-full');\r\n }\r\n};\r\n\r\n/** 内置成员 */\r\n\r\nwindow.layer = layer;\r\n\r\n// 获取子 iframe 的 DOM\r\nlayer.getChildFrame = function(selector, index){\r\n index = index || $('.'+doms[4]).attr('times');\r\n return $('#'+ doms[0] + index).find('iframe').contents().find(selector); \r\n};\r\n\r\n// 得到当前 iframe 层的索引,子 iframe 时使用\r\nlayer.getFrameIndex = function(name){\r\n return $('#'+ name).parents('.'+doms[4]).attr('times');\r\n};\r\n\r\n// iframe 层自适应宽高\r\nlayer.iframeAuto = function(index){\r\n if(!index) return;\r\n var heg = layer.getChildFrame('html', index).outerHeight();\r\n var layero = $('#'+ doms[0] + index);\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n layero.css({height: heg + titHeight + btnHeight});\r\n layero.find('iframe').css({height: heg});\r\n};\r\n\r\n// 重置 iframe url\r\nlayer.iframeSrc = function(index, url){\r\n $('#'+ doms[0] + index).find('iframe').attr('src', url);\r\n};\r\n\r\n// 设定层的样式\r\nlayer.style = function(index, options, limit){\r\n var layero = $('#'+ doms[0] + index);\r\n var contElem = layero.find('.layui-layer-content');\r\n var type = layero.attr('type');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft');\r\n \r\n // loading 和 tips 层不允许更改\r\n if(type === ready.type[3] || type === ready.type[4]){\r\n return;\r\n }\r\n \r\n if(!limit){\r\n if(parseFloat(options.width) <= 260){\r\n options.width = 260;\r\n }\r\n \r\n if(parseFloat(options.height) - titHeight - btnHeight <= 64){\r\n options.height = 64 + titHeight + btnHeight;\r\n }\r\n }\r\n layero.css(options);\r\n btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n \r\n if(type === ready.type[2]){\r\n layero.find('iframe').css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n });\r\n } else {\r\n contElem.css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n - parseFloat(contElem.css('padding-top'))\r\n - parseFloat(contElem.css('padding-bottom'))\r\n })\r\n }\r\n};\r\n\r\n// 最小化\r\nlayer.min = function(index, options){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'min') return; // 当前的状态是否已经是最小化\r\n if(maxminStatus === 'max') layer.restore(index); // 若当前为最大化,则先还原后再最小化\r\n\r\n layero.data('maxminStatus', 'min');\r\n options = options || layero.data('config') || {};\r\n\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var elemMin = layero.find('.layui-layer-min');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft'); // 最小化时的横坐标\r\n var hasMinLeft = typeof minLeft === 'string'; // 是否已经赋值过最小化坐标\r\n var left = hasMinLeft ? minLeft : (181*ready.minStackIndex)+'px';\r\n var position = layero.css('position');\r\n var minWidth = 180; // 最小化时的宽度\r\n var settings = {\r\n width: minWidth\r\n ,height: titHeight\r\n ,position: 'fixed'\r\n ,overflow: 'hidden'\r\n };\r\n\r\n ready.record(layero); // 记录当前尺寸、坐标,用于还原\r\n\r\n // 简易最小化补位\r\n if(ready.minStackArr.length > 0){\r\n left = ready.minStackArr[0];\r\n ready.minStackArr.shift();\r\n }\r\n\r\n // left 是否超出边界\r\n if(parseFloat(left) + minWidth > win.width()){\r\n left = win.width() - minWidth - function(){\r\n ready.minStackArr.edgeIndex = ready.minStackArr.edgeIndex || 0;\r\n return ready.minStackArr.edgeIndex += 3;\r\n }();\r\n if(left < 0) left = 0;\r\n }\r\n \r\n // 是否堆叠在左下角\r\n if(options.minStack){\r\n settings.left = left;\r\n settings.top = win.height() - titHeight;\r\n hasMinLeft || ready.minStackIndex++; // 若未赋值过最小化坐标,则最小化操作索引自增\r\n layero.attr('minLeft', left);\r\n }\r\n \r\n layero.attr('position', position);\r\n layer.style(index, settings, true);\r\n\r\n elemMin.hide();\r\n layero.attr('type') === 'page' && layero.find(doms[4]).hide();\r\n ready.restScrollbar(index);\r\n\r\n // 隐藏遮罩\r\n shadeo.hide();\r\n};\r\n\r\n// 还原\r\nlayer.restore = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var area = layero.attr('area').split(',');\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n\r\n layero.removeData('maxminStatus'); // 移除最大最小状态\r\n \r\n // 恢复原来尺寸\r\n layer.style(index, {\r\n width: area[0], // 数值或百分比\r\n height: area[1],\r\n top: parseFloat(area[2]),\r\n left: parseFloat(area[3]),\r\n position: layero.attr('position'),\r\n overflow: 'visible'\r\n }, true);\r\n \r\n layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');\r\n layero.find('.layui-layer-min').show();\r\n type === 'page' && layero.find(doms[4]).show();\r\n\r\n // 恢复页面滚动条弹层打开时的状态\r\n options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);\r\n \r\n // 恢复遮罩\r\n shadeo.show();\r\n // ready.events.resize[index](); // ?\r\n};\r\n\r\n// 全屏(最大化)\r\nlayer.full = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'max') return // 检查当前的状态是否已经是最大化\r\n if(maxminStatus === 'min') layer.restore(index); // 若当前为最小化,则先还原后再最大化\r\n\r\n layero.data('maxminStatus', 'max');\r\n ready.record(layero); // 记录当前尺寸、坐标\r\n\r\n if(!doms.html.attr('layer-full')){\r\n ready.setScrollbar(index);\r\n }\r\n\r\n setTimeout(function(){\r\n var isfix = layero.css('position') === 'fixed';\r\n layer.style(index, {\r\n top: isfix ? 0 : win.scrollTop(),\r\n left: isfix ? 0 : win.scrollLeft(),\r\n width: '100%',\r\n height: '100%'\r\n }, true);\r\n layero.find('.layui-layer-min').hide();\r\n }, 100);\r\n};\r\n\r\n// 改变 title\r\nlayer.title = function(name, index){\r\n var title = $('#'+ doms[0] + (index || layer.index)).find(doms[1]);\r\n title.html(name);\r\n};\r\n\r\n// 关闭 layer 总方法\r\nlayer.close = function(index, callback){\r\n var layero = function(){\r\n var closest = $('.'+ doms[0]).children('#'+ index).closest('.'+ doms[0]);\r\n return closest[0] ? (\r\n index = closest.attr('times'),\r\n closest\r\n ) : $('#'+ doms[0] + index)\r\n }();\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var hideOnClose = options.id && options.hideOnClose; // 是否关闭时移除弹层容器\r\n\r\n if(!layero[0]) return;\r\n\r\n // 关闭动画\r\n var closeAnim = ({\r\n slideDown: 'layer-anim-slide-down-out',\r\n slideLeft: 'layer-anim-slide-left-out',\r\n slideUp: 'layer-anim-slide-up-out',\r\n slideRight: 'layer-anim-slide-right-out'\r\n })[options.anim] || 'layer-anim-close';\r\n\r\n // 移除主容器\r\n var remove = function(){\r\n var WRAP = 'layui-layer-wrap';\r\n\r\n // 是否关闭时隐藏弹层容器\r\n if(hideOnClose){\r\n layero.removeClass('layer-anim '+ closeAnim);\r\n return layero.hide();\r\n }\r\n\r\n // 是否为页面捕获层\r\n if(type === ready.type[1] && layero.attr('conType') === 'object'){\r\n layero.children(':not(.'+ doms[5] +')').remove();\r\n var wrap = layero.find('.'+WRAP);\r\n for(var i = 0; i < 2; i++){\r\n wrap.unwrap();\r\n }\r\n wrap.css('display', wrap.data('display')).removeClass(WRAP);\r\n } else {\r\n // 低版本 IE 回收 iframe\r\n if(type === ready.type[2]){\r\n try {\r\n var iframe = $('#'+ doms[4] + index)[0];\r\n iframe.contentWindow.document.write('');\r\n iframe.contentWindow.close();\r\n layero.find('.'+doms[5])[0].removeChild(iframe);\r\n } catch(e){}\r\n }\r\n layero[0].innerHTML = '';\r\n layero.remove();\r\n }\r\n\r\n typeof ready.end[index] === 'function' && ready.end[index]();\r\n delete ready.end[index];\r\n typeof callback === 'function' && callback();\r\n\r\n // 移除 reisze 事件\r\n if(ready.events.resize[index]){\r\n win.off('resize', ready.events.resize[index]);\r\n delete ready.events.resize[index];\r\n }\r\n };\r\n // 移除遮罩\r\n var removeShade = (function fn(){\r\n $('#'+ doms.SHADE + index)[\r\n hideOnClose ? 'hide' : 'remove'\r\n ]();\r\n })();\r\n \r\n // 是否允许关闭动画\r\n if(options.isOutAnim){\r\n layero.addClass('layer-anim '+ closeAnim);\r\n }\r\n \r\n layer.ie == 6 && ready.reselect();\r\n ready.restScrollbar(index); \r\n \r\n // 记住被关闭层的最小化堆叠坐标\r\n if(typeof layero.attr('minLeft') === 'string'){\r\n ready.minStackIndex--;\r\n ready.minStackArr.push(layero.attr('minLeft'));\r\n }\r\n \r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n remove()\r\n } else {\r\n setTimeout(function(){\r\n remove();\r\n }, 200);\r\n }\r\n};\r\n\r\n// 关闭所有层\r\nlayer.closeAll = function(type, callback){\r\n if(typeof type === 'function'){\r\n callback = type;\r\n type = null;\r\n }\r\n var domsElem = $('.'+doms[0]);\r\n $.each(domsElem, function(_index){\r\n var othis = $(this);\r\n var is = type ? (othis.attr('type') === type) : 1;\r\n is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);\r\n is = null;\r\n });\r\n if(domsElem.length === 0) typeof callback === 'function' && callback();\r\n};\r\n\r\n// 根据弹层类型关闭最近打开的层\r\nlayer.closeLast = function(type, callback){\r\n type = type || 'page';\r\n layer.close($('.layui-layer-'+ type +':last').attr(\"times\"), callback);\r\n};\r\n\r\n\r\n/*\r\n * 拓展模块,layui 开始合并在一起\r\n */\r\n\r\n\r\nvar cache = layer.cache || {};\r\nvar skin = function(type){\r\n return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');\r\n}; \r\n \r\n// 仿系统 prompt\r\nlayer.prompt = function(options, yes){\r\n var style = '', placeholder = '';\r\n options = options || {};\r\n \r\n if(typeof options === 'function') yes = options;\r\n \r\n if(options.area){\r\n var area = options.area;\r\n style = 'style=\"width: '+ area[0] +'; height: '+ area[1] + ';\"';\r\n delete options.area;\r\n }\r\n if (options.placeholder) {\r\n placeholder = ' placeholder=\"' + options.placeholder + '\"';\r\n }\r\n var prompt, content = options.formType == 2 ? '' : function () {\r\n return '';\r\n }();\r\n \r\n var success = options.success;\r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n btn: ['确定','取消'],\r\n content: content,\r\n skin: 'layui-layer-prompt' + skin('prompt'),\r\n maxWidth: win.width(),\r\n success: function(layero){\r\n prompt = layero.find('.layui-layer-input');\r\n prompt.val(options.value || '').focus();\r\n typeof success === 'function' && success(layero);\r\n },\r\n resize: false,\r\n yes: function(index){\r\n var value = prompt.val();\r\n if(value.length > (options.maxlength||500)) {\r\n layer.tips('最多输入'+ (options.maxlength || 500) +'个字数', prompt, {tips: 1});\r\n } else {\r\n yes && yes(value, index, prompt);\r\n }\r\n }\r\n }, options));\r\n};\r\n\r\n// tab 层\r\nlayer.tab = function(options){\r\n options = options || {};\r\n \r\n var tab = options.tab || {};\r\n var THIS = 'layui-this';\r\n var success = options.success;\r\n \r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n skin: 'layui-layer-tab' + skin('tab'),\r\n resize: false,\r\n title: function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = ''+ tab[0].title +'';\r\n for(; ii < len; ii++){\r\n str += ''+ tab[ii].title +'';\r\n }\r\n }\r\n return str;\r\n }(),\r\n content: '
                      '+ function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = '
                    • '+ (tab[0].content || 'no content') +'
                    • ';\r\n for(; ii < len; ii++){\r\n str += '
                    • '+ (tab[ii].content || 'no content') +'
                    • ';\r\n }\r\n }\r\n return str;\r\n }() +'
                    ',\r\n success: function(layero){\r\n var btn = layero.find('.layui-layer-title').children();\r\n var main = layero.find('.layui-layer-tabmain').children();\r\n btn.on('mousedown', function(e){\r\n e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;\r\n var othis = $(this), index = othis.index();\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n main.eq(index).show().siblings().hide();\r\n typeof options.change === 'function' && options.change(index);\r\n });\r\n typeof success === 'function' && success(layero);\r\n }\r\n }, options));\r\n};\r\n\r\n// 图片层\r\nlayer.photos = function(options, loop, key){\r\n var dict = {};\r\n\r\n // 默认属性\r\n options = $.extend(true, {\r\n toolbar: true,\r\n footer: true\r\n }, options);\r\n\r\n if(!options.photos) return;\r\n \r\n // 若 photos 并非选择器或 jQuery 对象,则为普通 object\r\n var isObject = !(typeof options.photos === 'string' || options.photos instanceof $);\r\n var photos = isObject ? options.photos : {};\r\n var data = photos.data || [];\r\n var start = photos.start || 0;\r\n var success = options.success;\r\n \r\n dict.imgIndex = (start|0) + 1;\r\n options.img = options.img || 'img';\r\n delete options.success;\r\n \r\n // 若 options.photos 不是一个对象\r\n if(!isObject){ // 页面直接获取\r\n var parent = $(options.photos), pushData = function(){\r\n data = [];\r\n parent.find(options.img).each(function(index){\r\n var othis = $(this);\r\n othis.attr('layer-index', index);\r\n data.push({\r\n alt: othis.attr('alt'),\r\n pid: othis.attr('layer-pid'),\r\n src: othis.attr('lay-src') || othis.attr('layer-src') || othis.attr('src'),\r\n thumb: othis.attr('src')\r\n });\r\n });\r\n };\r\n \r\n pushData();\r\n \r\n if (data.length === 0) return;\r\n \r\n loop || parent.on('click', options.img, function(){\r\n pushData();\r\n var othis = $(this), index = othis.attr('layer-index'); \r\n layer.photos($.extend(options, {\r\n photos: {\r\n start: index,\r\n data: data,\r\n tab: options.tab\r\n },\r\n full: options.full\r\n }), true);\r\n });\r\n \r\n // 不直接弹出\r\n if (!loop) return;\r\n } else if (data.length === 0){\r\n return layer.msg('没有图片');\r\n }\r\n \r\n // 上一张\r\n dict.imgprev = function(key){\r\n dict.imgIndex--;\r\n if(dict.imgIndex < 1){\r\n dict.imgIndex = data.length;\r\n }\r\n dict.tabimg(key);\r\n };\r\n \r\n // 下一张\r\n dict.imgnext = function(key,errorMsg){\r\n dict.imgIndex++;\r\n if(dict.imgIndex > data.length){\r\n dict.imgIndex = 1;\r\n if (errorMsg) {return}\r\n }\r\n dict.tabimg(key)\r\n };\r\n \r\n // 方向键\r\n dict.keyup = function(event){\r\n if(!dict.end){\r\n var code = event.keyCode;\r\n event.preventDefault();\r\n if(code === 37){\r\n dict.imgprev(true);\r\n } else if(code === 39) {\r\n dict.imgnext(true);\r\n } else if(code === 27) {\r\n layer.close(dict.index);\r\n }\r\n }\r\n }\r\n \r\n // 切换\r\n dict.tabimg = function(key){\r\n if(data.length <= 1) return;\r\n photos.start = dict.imgIndex - 1;\r\n layer.close(dict.index);\r\n return layer.photos(options, true, key);\r\n }\r\n\r\n dict.isNumber = function (n) {\r\n return typeof n === 'number' && !isNaN(n);\r\n }\r\n\r\n dict.image = {};\r\n\r\n dict.getTransform = function(opts){\r\n var transforms = [];\r\n var rotate = opts.rotate;\r\n var scaleX = opts.scaleX;\r\n var scale = opts.scale;\r\n\r\n if (dict.isNumber(rotate) && rotate !== 0) {\r\n transforms.push('rotate(' + rotate + 'deg)');\r\n }\r\n\r\n if (dict.isNumber(scaleX) && scaleX !== 1) {\r\n transforms.push('scaleX(' + scaleX + ')');\r\n }\r\n\r\n if (dict.isNumber(scale)) {\r\n transforms.push('scale(' + scale + ')');\r\n }\r\n\r\n return transforms.length ? transforms.join(' ') : 'none';\r\n }\r\n \r\n // 一些动作\r\n dict.event = function(layero, index, that){\r\n // 上一张\r\n dict.main.find('.layui-layer-photos-prev').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgprev(true);\r\n }); \r\n \r\n // 下一张\r\n dict.main.find('.layui-layer-photos-next').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgnext(true);\r\n });\r\n \r\n $(document).on('keyup', dict.keyup);\r\n\r\n // 头部工具栏事件\r\n layero.off('click').on('click','*[toolbar-event]', function () {\r\n var othis = $(this);\r\n var event = othis.attr('toolbar-event');\r\n switch (event) {\r\n case 'rotate':\r\n dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'scalex':\r\n dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'zoom':\r\n var ratio = Number(othis.attr('data-option'));\r\n dict.image.scale = (dict.image.scale || 1) + ratio;\r\n // 缩小状态最小值\r\n if (ratio < 0 && dict.image.scale < 0 - ratio) {\r\n dict.image.scale = 0 - ratio;\r\n }\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'reset':\r\n dict.image.scaleX = 1;\r\n dict.image.scale = 1;\r\n dict.image.rotate = 0;\r\n dict.imgElem.css({\r\n transform: 'none'\r\n });\r\n break;\r\n case 'close':\r\n layer.close(index);\r\n break;\r\n }\r\n that.offset();\r\n that.auto(index);\r\n });\r\n \r\n // 鼠标滚轮缩放图片事件\r\n dict.main.on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var zoomElem = dict.main.find('[toolbar-event=\"zoom\"]');\r\n if (delta > 0) {\r\n zoomElem.eq(0).trigger('click');\r\n } else {\r\n zoomElem.eq(1).trigger('click');\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n // 滑动切换图片事件,仅限 layui 中 \r\n if(window.layui || window.lay){\r\n var lay = window.layui.lay || window.lay;\r\n var touchEndCallback = function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var speed = state.distanceX / duration;\r\n var threshold = win.width() / 3;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(state.distanceX) > threshold;\r\n if(!shouldSwipe) return;\r\n if(state.direction === 'left'){\r\n dict.imgnext(true);\r\n }else if(state.direction === 'right'){\r\n dict.imgprev(true);\r\n }\r\n }\r\n\r\n $.each([that.shadeo, dict.main], function(i, elem){\r\n lay.touchSwipe(elem, {\r\n onTouchEnd: touchEndCallback\r\n })\r\n })\r\n }\r\n };\r\n \r\n // 图片预加载\r\n function loadImage(url, callback, error) { \r\n var img = new Image();\r\n img.src = url; \r\n if(img.complete){\r\n return callback(img);\r\n }\r\n img.onload = function(){\r\n img.onload = null;\r\n callback(img);\r\n };\r\n img.onerror = function(e){\r\n img.onerror = null;\r\n error(e);\r\n }; \r\n }\r\n \r\n dict.loadi = layer.load(1, {\r\n shade: 'shade' in options ? false : 0.9,\r\n scrollbar: false\r\n });\r\n\r\n loadImage(data[start].src, function(img){\r\n layer.close(dict.loadi);\r\n \r\n var alt = data[start].alt || '';\r\n\r\n // 切换图片时不出现动画\r\n if(key) options.anim = -1;\r\n \r\n // 弹出图片层\r\n dict.index = layer.open($.extend({\r\n type: 1,\r\n id: 'layui-layer-photos',\r\n area: function(){\r\n var imgarea = [img.width, img.height];\r\n var winarea = [$(window).width() - 100, $(window).height() - 100];\r\n \r\n // 若实际图片的宽或者高比 屏幕大(那么进行缩放)\r\n if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){\r\n var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];// 取宽度缩放比例、高度缩放比例\r\n if(wh[0] > wh[1]){// 取缩放比例最大的进行缩放\r\n imgarea[0] = imgarea[0]/wh[0];\r\n imgarea[1] = imgarea[1]/wh[0];\r\n } else if(wh[0] < wh[1]){\r\n imgarea[0] = imgarea[0]/wh[1];\r\n imgarea[1] = imgarea[1]/wh[1];\r\n }\r\n }\r\n\r\n return [imgarea[0]+'px', imgarea[1]+'px']; \r\n }(),\r\n title: false,\r\n shade: 0.9,\r\n shadeClose: true,\r\n closeBtn: false,\r\n move: '.layer-layer-photos-main img',\r\n moveType: 1,\r\n scrollbar: false,\r\n moveOut: true,\r\n anim: 5,\r\n isOutAnim: false,\r\n skin: 'layui-layer-photos' + skin('photos'),\r\n content: '
                    '\r\n + '\"'+'\r\n + function(){\r\n var arr = ['
                    '];\r\n\r\n // 左右箭头翻页\r\n if (data.length > 1) {\r\n arr.push(['
                    ',\r\n '',\r\n '',\r\n '
                    '].join(''));\r\n }\r\n\r\n // 头部工具栏\r\n if (options.toolbar) {\r\n arr.push([\r\n '
                    ',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '
                    '\r\n ].join(''));\r\n }\r\n\r\n // 底部栏\r\n if (options.footer) {\r\n arr.push(['
                    ',\r\n '

                    '+ alt +'

                    ',\r\n ''+ dict.imgIndex +' / '+ data.length +'',\r\n '查看原图',\r\n '
                    '].join(''));\r\n }\r\n\r\n arr.push('
                    ');\r\n return arr.join('');\r\n }()\r\n +'
                    ',\r\n success: function(layero, index, that){\r\n dict.main = layero.find('.layer-layer-photos-main');\r\n dict.footer = layero.find('.layui-layer-photos-footer');\r\n dict.imgElem = dict.main.children('img');\r\n dict.event(layero, index, that);\r\n options.tab && options.tab(data[start], layero);\r\n typeof success === 'function' && success(layero);\r\n }, end: function(){\r\n dict.end = true;\r\n $(document).off('keyup', dict.keyup);\r\n }\r\n }, options));\r\n }, function(){\r\n layer.close(dict.loadi);\r\n layer.msg('当前图片地址异常
                    是否继续查看下一张?', {\r\n time: 30000, \r\n btn: ['下一张', '不看了'], \r\n yes: function(){\r\n data.length > 1 && dict.imgnext(true,true);\r\n }\r\n });\r\n });\r\n};\r\n\r\n// 主入口\r\nready.run = function(_$){\r\n $ = _$;\r\n win = $(window);\r\n \r\n // 移动端兼容性处理\r\n // https://gitee.com/layui/layui/issues/I81WGC\r\n // https://github.com/jquery/jquery/issues/1729\r\n var agent = navigator.userAgent.toLowerCase();\r\n var isMobile = /android|iphone|ipod|ipad|ios/.test(agent)\r\n var _win = $(window);\r\n if(isMobile){\r\n $.each({Height: \"height\", Width: \"width\"}, function(propSuffix, funcName){\r\n var propName = 'inner' + propSuffix;\r\n win[funcName] = function(){\r\n return propName in window \r\n ? window[propName]\r\n : _win[funcName]()\r\n }\r\n })\r\n }\r\n doms.html = $('html');\r\n layer.open = function(deliver){\r\n var o = new Class(deliver);\r\n return o.index;\r\n };\r\n};\r\n\r\n// 加载方式\r\nwindow.layui && layui.define ? (\r\n layer.ready(),\r\n layui.define(['jquery','lay'], function(exports){ // layui\r\n layer.path = layui.cache.dir;\r\n ready.run(layui.$);\r\n\r\n // export api\r\n window.layer = layer;\r\n exports('layer', layer);\r\n })\r\n) : (\r\n (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ // requirejs\r\n ready.run(window.jQuery);\r\n return layer;\r\n }) : function(){ // 普通 script 标签引入\r\n layer.ready();\r\n ready.run(window.jQuery);\r\n }()\r\n);\r\n\r\n}(window);\r\n","/**\r\n * util 工具组件\r\n */\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n\r\n // 外部接口\r\n var util = {\r\n // 固定块\r\n fixbar: function(options){\r\n var ELEM = 'layui-fixbar';\r\n var $doc = $(document);\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n target: 'body', // fixbar 的插入目标选择器\r\n bars: [], // bar 信息\r\n \"default\": true, // 是否显示默认 bar\r\n margin: 160, // 出现 top bar 的滚动条高度临界值\r\n duration: 320 // top bar 等动画时长(毫秒)\r\n }, options);\r\n\r\n // 目标元素对象\r\n var $target = $(options.target);\r\n\r\n // 滚动条所在元素对象\r\n var $scroll = options.scroll\r\n ? $(options.scroll)\r\n : $(options.target === 'body' ? $doc : $target)\r\n\r\n // 是否提供默认图标\r\n if(options['default']){\r\n // 兼容旧版本的一些属性\r\n if(options.bar1){\r\n options.bars.push({\r\n type: 'bar1',\r\n icon: 'layui-icon-chat'\r\n });\r\n }\r\n if(options.bar2){\r\n options.bars.push({\r\n type: 'bar2',\r\n icon: 'layui-icon-help'\r\n });\r\n }\r\n // 默认 top bar\r\n options.bars.push({\r\n type: 'top',\r\n icon: 'layui-icon-top'\r\n });\r\n }\r\n\r\n var elem = $('
                      ').addClass(ELEM);\r\n var elemTopBar;\r\n\r\n // 遍历生成 bars 节点\r\n layui.each(options.bars, function(i, item){\r\n var elemBar = $('
                    • ');\r\n\r\n // 设置 bar 相关属性\r\n elemBar.addClass(item.icon).attr({\r\n 'lay-type': item.type,\r\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\r\n }).html(item.content);\r\n\r\n // bar 点击事件\r\n elemBar.on('click', function(){\r\n var type = $(this).attr('lay-type');\r\n if(type === 'top'){\r\n (\r\n options.target === 'body'\r\n ? $('html,body')\r\n : $scroll\r\n ).animate({\r\n scrollTop : 0\r\n }, options.duration);\r\n }\r\n typeof options.click === 'function' && options.click.call(this, type);\r\n });\r\n\r\n // 自定义任意事件\r\n if(layui.type(options.on) === 'object'){\r\n layui.each(options.on, function(eventName, callback){\r\n elemBar.on(eventName, function(){\r\n var type = $(this).attr('lay-type');\r\n typeof callback === 'function' && callback.call(this, type);\r\n });\r\n })\r\n }\r\n\r\n // 获得 top bar 节点\r\n if(item.type === 'top'){\r\n elemBar.addClass('layui-fixbar-top');\r\n elemTopBar = elemBar;\r\n }\r\n\r\n elem.append(elemBar); // 插入 bar 节点\r\n });\r\n\r\n // 若目标元素已存在 fixbar,则移除旧的节点\r\n $target.find('.'+ ELEM).remove();\r\n\r\n // 向目标元素插入 fixbar 节点\r\n typeof options.css === 'object' && elem.css(options.css);\r\n $target.append(elem);\r\n\r\n // top bar 的显示隐藏\r\n if(elemTopBar){\r\n var lock;\r\n var setTopBar = (function setTopBar(){\r\n var top = $scroll.scrollTop();\r\n if(top >= options.margin){\r\n lock || (elemTopBar.show(), lock = 1);\r\n } else {\r\n lock && (elemTopBar.hide(), lock = 0);\r\n }\r\n return setTopBar;\r\n })();\r\n }\r\n\r\n // 根据 scrollbar 设置 fixbar 相关状态\r\n var timer;\r\n $scroll.on('scroll', function(){\r\n if(!setTopBar) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setTopBar();\r\n }, 100);\r\n });\r\n },\r\n\r\n // 倒计时\r\n countdown: function(options){\r\n var that = this;\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n date: new Date(),\r\n now: new Date()\r\n }, options);\r\n\r\n // 兼容旧版参数\r\n var args = arguments;\r\n if(args.length > 1){\r\n options.date = new Date(args[0]);\r\n options.now = new Date(args[1]);\r\n options.clock = args[2];\r\n }\r\n\r\n // 实例对象\r\n var inst = {\r\n options: options,\r\n clear: function(){ // 清除计时器\r\n clearTimeout(inst.timer);\r\n },\r\n reload: function(opts){ // 重置倒计时\r\n this.clear();\r\n $.extend(true, this.options, {\r\n now: new Date()\r\n }, opts);\r\n count();\r\n }\r\n };\r\n\r\n typeof options.ready === 'function' && options.ready();\r\n\r\n // 计算倒计时\r\n var count = (function fn(){\r\n var date = new Date(options.date);\r\n var now = new Date(options.now);\r\n var countTime = function(time){\r\n return time > 0 ? time : 0;\r\n }(date.getTime() - now.getTime());\r\n var result = {\r\n d: Math.floor(countTime/(1000*60*60*24)), // 天\r\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\r\n m: Math.floor(countTime/(1000*60)) % 60, // 分\r\n s: Math.floor(countTime/1000) % 60 // 秒\r\n };\r\n var next = function(){\r\n now.setTime(now.getTime() + 1000);\r\n options.now = now;\r\n count();\r\n };\r\n\r\n // 兼容旧版返回值\r\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\r\n\r\n // 计时 - 以秒间隔\r\n inst.timer = setTimeout(next, 1000);\r\n typeof options.clock === 'function' && options.clock(result, inst);\r\n\r\n // 计时完成\r\n if(countTime <= 0){\r\n clearTimeout(inst.timer);\r\n typeof options.done === 'function' && options.done(result, inst);\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n return inst;\r\n },\r\n\r\n // 某个时间在当前时间的多久前\r\n timeAgo: function(time, onlyDate){\r\n var that = this;\r\n var arr = [[], []];\r\n var stamp = new Date().getTime() - new Date(time).getTime();\r\n\r\n // 返回具体日期\r\n if(stamp > 1000*60*60*24*31){\r\n stamp = new Date(time);\r\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\r\n arr[0][1] = that.digit(stamp.getMonth() + 1);\r\n arr[0][2] = that.digit(stamp.getDate());\r\n\r\n // 是否输出时间\r\n if(!onlyDate){\r\n arr[1][0] = that.digit(stamp.getHours());\r\n arr[1][1] = that.digit(stamp.getMinutes());\r\n arr[1][2] = that.digit(stamp.getSeconds());\r\n }\r\n return arr[0].join('-') + ' ' + arr[1].join(':');\r\n }\r\n\r\n // 30 天以内,返回「多久前」\r\n if(stamp >= 1000*60*60*24){\r\n return ((stamp/1000/60/60/24)|0) + ' 天前';\r\n } else if(stamp >= 1000*60*60){\r\n return ((stamp/1000/60/60)|0) + ' 小时前';\r\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\r\n return ((stamp/1000/60)|0) + ' 分钟前';\r\n } else if(stamp < 0){\r\n return '未来';\r\n } else {\r\n return '刚刚';\r\n }\r\n },\r\n\r\n // 数字前置补零\r\n digit: function(num, length){\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + (num|0) : num;\r\n },\r\n\r\n // 转化为日期格式字符\r\n toDateString: function(time, format, options){\r\n // 若 null 或空字符,则返回空字符\r\n if(time === null || time === '') return '';\r\n\r\n // 引用自 dayjs\r\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\r\n var REGEX_FORMAT = /\\[([^\\]]+)]|y{1,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|SSS/g;\r\n var that = this;\r\n var date = new Date(function(){\r\n if(!time) return;\r\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\r\n }() || new Date())\r\n\r\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\r\n\r\n var years = date.getFullYear();\r\n var month = date.getMonth();\r\n var days = date.getDate();\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var seconds = date.getSeconds();\r\n var milliseconds = date.getMilliseconds();\r\n\r\n var defaultMeridiem = function(hours, minutes){\r\n var hm = hours * 100 + minutes;\r\n if (hm < 600) {\r\n return '凌晨';\r\n } else if (hm < 900) {\r\n return '早上';\r\n } else if (hm < 1100) {\r\n return '上午';\r\n } else if (hm < 1300) {\r\n return '中午';\r\n } else if (hm < 1800) {\r\n return '下午';\r\n }\r\n return '晚上';\r\n };\r\n\r\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\r\n\r\n var matches = {\r\n yy: function(){return String(years).slice(-2);},\r\n yyyy: function(){return that.digit(years, 4);},\r\n M: function(){return String(month + 1);},\r\n MM: function(){return that.digit(month + 1);},\r\n d: function(){return String(days);},\r\n dd: function(){return that.digit(days);},\r\n H: function(){return String(hours);},\r\n HH: function(){return that.digit(hours);},\r\n h: function(){return String(hours % 12 || 12);},\r\n hh: function(){return that.digit(hours % 12 || 12);},\r\n A: function(){return meridiem(hours, minutes);},\r\n m: function(){return String(minutes);},\r\n mm: function(){return that.digit(minutes);},\r\n s: function(){return String(seconds);},\r\n ss: function(){return that.digit(seconds);},\r\n SSS: function(){return that.digit(milliseconds, 3);}\r\n }\r\n\r\n format = format || 'yyyy-MM-dd HH:mm:ss';\r\n\r\n return format.replace(REGEX_FORMAT, function(match, $1) {\r\n return $1 || (matches[match] && matches[match]()) || match;\r\n });\r\n },\r\n\r\n // 转义 html\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n },\r\n\r\n // 还原转义的 html\r\n unescape: function(html){\r\n if(html === undefined || html === null) html = '';\r\n html += '';\r\n\r\n return html.replace(/\\&/g, '&')\r\n .replace(/\\</g, '<').replace(/\\>/g, '>')\r\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\r\n },\r\n\r\n // 打开新窗口\r\n openWin: function(options){\r\n var win;\r\n options = options || {};\r\n win = options.window || window.open((options.url || ''), options.target, options.specs);\r\n if(options.url) return;\r\n win.document.open('text/html', 'replace');\r\n win.document.write(options.content || '');\r\n win.document.close();\r\n },\r\n\r\n // 让指定的元素保持在可视区域\r\n toVisibleArea: function(options){\r\n options = $.extend({\r\n margin: 160, // 触发动作的边界值\r\n duration: 200, // 动画持续毫秒数\r\n type: 'y' // 触发方向,x 水平、y 垂直\r\n }, options);\r\n\r\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\r\n\r\n var scrollElem = options.scrollElem // 滚动元素\r\n var thisElem = options.thisElem // 目标元素\r\n var vertical = options.type === 'y' // 是否垂直方向\r\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\r\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\r\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\r\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\r\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\r\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\r\n var obj = {};\r\n\r\n // 边界满足条件\r\n if(thisOffset > size - options.margin || thisOffset < options.margin){\r\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\r\n scrollElem.animate(obj, options.duration);\r\n }\r\n },\r\n\r\n /**\r\n * 批量事件\r\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\r\n * @param {Object.} events - 事件集合\r\n * @param {Object} [options] - 参数的更多选项\r\n * @param {(string|HTMLElement|JQuery)} [options.elem=\"body\"] - 触发事件的委托元素\r\n * @param {string} [options.trigger=\"click\"] - 事件触发的方式\r\n * @returns {Object} 返回当前 events 参数设置的事件集合\r\n */\r\n on: function(attr, events, options) {\r\n // 若参数一为 object 类型,则为事件集,且省略 attr\r\n if (typeof attr === 'object') {\r\n options = events || {};\r\n events = attr;\r\n attr = options.attr || 'lay-on'; // 默认属性名\r\n }\r\n\r\n // 更多选项\r\n options = $.extend({\r\n elem: 'body',\r\n trigger: 'click'\r\n }, typeof options === 'object' ? options : {\r\n trigger: options // 兼容旧版\r\n });\r\n\r\n var elem = options.elem = $(options.elem);\r\n var attrSelector = '['+ attr +']';\r\n var DATANAME = 'UTIL_ON_DATA'; // 缓存在委托元素上的 data-* 属性名\r\n\r\n if (!elem[0]) return; // 若委托元素不存在\r\n\r\n // 初始化 data 默认值,以委托元素为存储单元\r\n if (!elem.data(DATANAME)) {\r\n elem.data(DATANAME, {\r\n events: {},\r\n callbacks: {}\r\n });\r\n }\r\n\r\n // 读取 data 缓存\r\n var dataCache = elem.data(DATANAME);\r\n var callbacks = dataCache.callbacks;\r\n\r\n // 根据 attr 记录事件集合\r\n events = dataCache.events[attr] = $.extend(true, dataCache.events[attr], events);\r\n\r\n // 清除事件委托,避免重复绑定\r\n elem.off(options.trigger, attrSelector, callbacks[attr]);\r\n\r\n // 绑定事件委托\r\n elem.on(\r\n options.trigger,\r\n attrSelector,\r\n callbacks[attr] = function(e) {\r\n var othis = $(this);\r\n var key = othis.attr(attr);\r\n typeof events[key] === 'function' && events[key].call(this, othis, e);\r\n }\r\n );\r\n\r\n return events;\r\n }\r\n };\r\n\r\n // 兼容旧版\r\n util.event = util.on;\r\n\r\n // 输出接口\r\n exports('util', util);\r\n});\r\n","/**\r\n * dropdown \r\n * 下拉菜单组件\r\n */\r\n\r\nlayui.define(['jquery', 'laytpl', 'lay', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'touchstart' : 'mousedown');\r\n \r\n // 模块名\r\n var MOD_NAME = 'dropdown';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var dropdown = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'child'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n reloadData: function(options){\r\n dropdown.reloadData(id, options);\r\n },\r\n close: function () {\r\n that.remove()\r\n }\r\n }\r\n };\r\n\r\n // 字符常量\r\n var STR_ELEM = 'layui-dropdown';\r\n var STR_HIDE = 'layui-hide';\r\n var STR_DISABLED = 'layui-disabled';\r\n var STR_NONE = 'layui-none';\r\n var STR_ITEM_UP = 'layui-menu-item-up';\r\n var STR_ITEM_DOWN = 'layui-menu-item-down';\r\n var STR_MENU_TITLE = 'layui-menu-body-title';\r\n var STR_ITEM_GROUP = 'layui-menu-item-group';\r\n var STR_ITEM_PARENT = 'layui-menu-item-parent';\r\n var STR_ITEM_DIV = 'layui-menu-item-divider';\r\n var STR_ITEM_CHECKED = 'layui-menu-item-checked';\r\n var STR_ITEM_CHECKED2 = 'layui-menu-item-checked2';\r\n var STR_MENU_PANEL = 'layui-menu-body-panel';\r\n var STR_MENU_PANEL_L = 'layui-menu-body-panel-left';\r\n var STR_ELEM_SHADE = 'layui-dropdown-shade';\r\n \r\n var STR_GROUP_TITLE = '.'+ STR_ITEM_GROUP + '>.'+ STR_MENU_TITLE;\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++dropdown.index;\r\n that.config = $.extend({}, that.config, dropdown.config, options);\r\n that.init();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n trigger: 'click', // 事件类型\r\n content: '', // 自定义菜单内容\r\n className: '', // 自定义样式类名\r\n style: '', // 设置面板 style 属性\r\n show: false, // 是否初始即显示菜单面板\r\n isAllowSpread: true, // 是否允许菜单组展开收缩\r\n isSpreadItem: true, // 是否初始展开子菜单\r\n data: [], // 菜单数据结构\r\n delay: [200, 300], // 延时显示或隐藏的毫秒数,若为 number 类型,则表示显示和隐藏的延迟时间相同,trigger 为 hover 时才生效\r\n shade: 0, // 遮罩\r\n accordion: false // 手风琴效果,仅菜单组生效。基础菜单需要在容器上追加 'lay-accordion' 属性。\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options, type){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.init(true, type);\r\n };\r\n\r\n // 初始化准备\r\n Class.prototype.init = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n dropdown.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(!rerender && elem[0] && elem.data(MOD_INDEX)){\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n if(options.show || (type === 'reloadData' && that.elemView && $('body').find(that.elemView.get(0)).length)) that.render(rerender, type); //初始即显示或者面板弹出之后执行了刷新数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染\r\n Class.prototype.render = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var elemBody = $('body');\r\n \r\n // 默认菜单内容\r\n var getDefaultView = function(){\r\n var elemUl = $('
                        ');\r\n if(options.data.length > 0 ){\r\n eachItemView(elemUl, options.data)\r\n } else {\r\n elemUl.html('
                      • No data
                      • ');\r\n }\r\n return elemUl;\r\n };\r\n \r\n // 遍历菜单项\r\n var eachItemView = function(views, data){\r\n // var views = [];\r\n\r\n layui.each(data, function(index, item){\r\n // 是否存在子级\r\n var isChild = item[customName.children] && item[customName.children].length > 0;\r\n var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem\r\n var title = function(title){\r\n var templet = item.templet || options.templet;\r\n if(templet){\r\n title = typeof templet === 'function' \r\n ? templet(item)\r\n : laytpl(templet).render(item);\r\n }\r\n return title;\r\n }(util.escape(item[customName.title]));\r\n \r\n // 初始类型\r\n var type = function(){\r\n if(isChild){\r\n item.type = item.type || 'parent';\r\n }\r\n if(item.type){\r\n return ({\r\n group: 'group'\r\n ,parent: 'parent'\r\n ,'-': '-'\r\n })[item.type] || 'parent';\r\n }\r\n return '';\r\n }();\r\n\r\n if(type !== '-' && (!item[customName.title] && !item[customName.id] && !isChild)) return;\r\n \r\n //列表元素\r\n var viewLi = $([''\r\n \r\n //标题区\r\n ,function(){\r\n //是否超文本\r\n var viewText = ('href' in item) ? (\r\n ''+ title +''\r\n ) : title;\r\n \r\n //是否存在子级\r\n if(isChild){\r\n return '
                        '+ viewText + function(){\r\n if(type === 'parent'){\r\n return '';\r\n } else if(type === 'group' && options.isAllowSpread){\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }() +'
                        '\r\n \r\n }\r\n return '
                        '+ viewText +'
                        ';\r\n }()\r\n ,''].join(''));\r\n \r\n viewLi.data('item', item);\r\n \r\n //子级区\r\n if(isChild){\r\n var elemPanel = $('
                        ');\r\n var elemUl = $('
                          ');\r\n\r\n if(type === 'parent'){\r\n elemPanel.append(eachItemView(elemUl, item[customName.children]));\r\n viewLi.append(elemPanel);\r\n } else {\r\n viewLi.append(eachItemView(elemUl, item[customName.children]));\r\n }\r\n }\r\n\r\n views.append(viewLi);\r\n });\r\n return views;\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                          '\r\n ,'
                          '].join('');\r\n \r\n // 如果是右键事件,则每次触发事件时,将允许重新渲染\r\n if(options.trigger === 'contextmenu' || lay.isTopElem(options.elem[0])) rerender = true;\r\n \r\n // 判断是否已经打开了下拉菜单面板\r\n if(!rerender && options.elem.data(MOD_INDEX +'_opened')) return;\r\n\r\n // 记录模板对象\r\n that.elemView = $('.' + STR_ELEM + '[lay-id=\"' + options.id + '\"]');\r\n if (type === 'reloadData' && that.elemView.length) {\r\n that.elemView.html(options.content || getDefaultView());\r\n } else {\r\n that.elemView = $(TPL_MAIN);\r\n that.elemView.append(options.content || getDefaultView());\r\n\r\n // 初始化某些属性\r\n if(options.className) that.elemView.addClass(options.className);\r\n if(options.style) that.elemView.attr('style', options.style);\r\n\r\n // 记录当前执行的实例索引\r\n dropdown.thisId = options.id;\r\n\r\n // 插入视图\r\n that.remove(); // 移除非当前绑定元素的面板\r\n elemBody.append(that.elemView);\r\n options.elem.data(MOD_INDEX +'_opened', true);\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                          ') : '';\r\n that.elemView.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n that.elemView.on('mouseenter', function(){\r\n clearTimeout(thisModule.timer);\r\n }).on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n }\r\n\r\n // 坐标定位\r\n that.position();\r\n thisModule.prevElem = that.elemView; // 记录当前打开的元素,以便在下次关闭\r\n thisModule.prevElem.data('prevElem', options.elem); // 将当前绑定的元素,记录在打开元素的 data 对象中\r\n \r\n // 阻止全局事件\r\n that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n that.elemView.find('.layui-menu li').on('click', function(e){\r\n var othis = $(this);\r\n var data = othis.data('item') || {};\r\n var isChild = data[customName.children] && data[customName.children].length > 0;\r\n var isClickAllScope = options.clickScope === 'all'; // 是否所有父子菜单均触发点击事件\r\n\r\n if(data.disabled) return; // 菜单项禁用状态\r\n \r\n // 普通菜单项点击后的回调及关闭面板\r\n if((!isChild || isClickAllScope) && data.type !== '-'){\r\n var ret = typeof options.click === 'function' \r\n ? options.click(data, othis) \r\n : null;\r\n \r\n ret === false || (isChild || that.remove());\r\n layui.stope(e);\r\n }\r\n });\r\n \r\n // 触发菜单组展开收缩\r\n that.elemView.find(STR_GROUP_TITLE).on('click', function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parent();\r\n var data = elemGroup.data('item') || {};\r\n \r\n if(data.type === 'group' && options.isAllowSpread){\r\n thisModule.spread(elemGroup, options.accordion);\r\n }\r\n });\r\n\r\n // 组件打开完毕的事件\r\n typeof options.ready === 'function' && options.ready(\r\n that.elemView, \r\n options.elem\r\n );\r\n };\r\n \r\n // 位置定位\r\n Class.prototype.position = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n lay.position(options.elem[0], that.elemView[0], {\r\n position: options.position,\r\n e: that.e,\r\n clickType: options.trigger === 'contextmenu' ? 'right' : null,\r\n align: options.align || null\r\n });\r\n };\r\n \r\n // 删除视图\r\n Class.prototype.remove = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemPrev = thisModule.prevElem;\r\n \r\n // 若存在已打开的面板元素,则移除\r\n if(elemPrev){\r\n elemPrev.data('prevElem') && (\r\n elemPrev.data('prevElem').data(MOD_INDEX +'_opened', false)\r\n );\r\n elemPrev.remove();\r\n }\r\n lay('.' + STR_ELEM_SHADE).remove();\r\n };\r\n\r\n Class.prototype.normalizedDelay = function(){\r\n var that = this;\r\n var options = that.config;\r\n var delay = [].concat(options.delay);\r\n \r\n return {\r\n show: delay[0],\r\n hide: delay[1] !== undefined ? delay[1] : delay[0] \r\n }\r\n }\r\n \r\n // 延迟删除视图\r\n Class.prototype.delayRemove = function(){\r\n var that = this;\r\n var options = that.config;\r\n clearTimeout(thisModule.timer);\r\n\r\n thisModule.timer = setTimeout(function(){\r\n that.remove();\r\n }, that.normalizedDelay().hide);\r\n };\r\n \r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若传入 hover,则解析为 mouseenter\r\n if(options.trigger === 'hover') options.trigger = 'mouseenter';\r\n\r\n // 解除上一个事件\r\n if(that.prevElem) that.prevElem.off(options.trigger, that.prevElemCallback);\r\n\r\n // 是否鼠标移入时触发\r\n var isMouseEnter = options.trigger === 'mouseenter';\r\n \r\n // 记录被绑定的元素及回调\r\n that.prevElem = options.elem;\r\n that.prevElemCallback = function(e){\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n\r\n // 若为鼠标移入事件,则延迟触发\r\n isMouseEnter ? (\r\n thisModule.timer = setTimeout(function(){\r\n that.render();\r\n }, that.normalizedDelay().show)\r\n ) : that.render();\r\n \r\n e.preventDefault();\r\n };\r\n\r\n // 触发元素事件\r\n options.elem.on(options.trigger, that.prevElemCallback);\r\n \r\n // 如果是鼠标移入事件\r\n if (isMouseEnter) {\r\n // 执行鼠标移出事件\r\n options.elem.on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 设置菜单组展开和收缩状态\r\n thisModule.spread = function(othis, isAccordion){\r\n var contentElem = othis.children('ul');\r\n var needSpread = othis.hasClass(STR_ITEM_UP);\r\n var ANIM_MS = 200;\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({'display': ''}); // 剔除临时 style,以适配外部样式的状态重置;\r\n };\r\n\r\n // 动画是否正在执行\r\n if (contentElem.is(':animated')) return;\r\n\r\n // 展开\r\n if (needSpread) {\r\n othis.removeClass(STR_ITEM_UP).addClass(STR_ITEM_DOWN);\r\n contentElem.hide().stop().slideDown(ANIM_MS, complete);\r\n } else { // 收缩\r\n contentElem.stop().slideUp(ANIM_MS, complete);\r\n othis.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n\r\n // 手风琴\r\n if (needSpread && isAccordion) {\r\n var groupSibs = othis.siblings('.' + STR_ITEM_DOWN);\r\n groupSibs.children('ul').stop().slideUp(ANIM_MS, complete);\r\n groupSibs.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n };\r\n \r\n // 全局事件\r\n (function(){\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n \r\n // 自适应定位\r\n _WIN.on('resize', function(){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId);\r\n if(!that) return;\r\n \r\n if((that.elemView && !that.elemView[0]) || !$('.'+ STR_ELEM)[0]){\r\n return false;\r\n }\r\n \r\n var options = that.config;\r\n \r\n if(options.trigger === 'contextmenu'){\r\n that.remove();\r\n } else {\r\n that.position();\r\n }\r\n });\r\n \r\n \r\n \r\n // 点击任意处关闭\r\n _DOC.on(clickOrMousedown, function(e){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId)\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素不是 body document,或者不是鼠标右键事件\r\n if(!(lay.isTopElem(options.elem[0]) || options.trigger === 'contextmenu')){\r\n if(\r\n e.target === options.elem[0] || \r\n options.elem.find(e.target)[0] ||\r\n (that.elemView && e.target === that.elemView[0]) ||\r\n (that.elemView && that.elemView.find(e.target)[0])\r\n ) return;\r\n }\r\n \r\n that.remove();\r\n });\r\n \r\n // 基础菜单的静态元素事件\r\n var ELEM_LI = '.layui-menu:not(.layui-dropdown-menu) li';\r\n _DOC.on('click', ELEM_LI, function(e){\r\n var othis = $(this);\r\n var parent = othis.parents('.layui-menu').eq(0);\r\n var isChild = othis.hasClass(STR_ITEM_GROUP) || othis.hasClass(STR_ITEM_PARENT);\r\n var filter = parent.attr('lay-filter') || parent.attr('id');\r\n var options = lay.options(this);\r\n \r\n // 非触发元素\r\n if(othis.hasClass(STR_ITEM_DIV)) return;\r\n\r\n // 非菜单组\r\n if(!isChild){\r\n // 选中\r\n parent.find('.'+ STR_ITEM_CHECKED).removeClass(STR_ITEM_CHECKED); // 清除选中样式\r\n parent.find('.'+ STR_ITEM_CHECKED2).removeClass(STR_ITEM_CHECKED2); // 清除父级菜单选中样式\r\n othis.addClass(STR_ITEM_CHECKED); //添加选中样式\r\n othis.parents('.'+ STR_ITEM_PARENT).addClass(STR_ITEM_CHECKED2); // 添加父级菜单选中样式\r\n\r\n options.title = options.title || $.trim(othis.children('.'+ STR_MENU_TITLE).text());\r\n \r\n // 触发事件\r\n layui.event.call(this, MOD_NAME, 'click('+ filter +')', options);\r\n }\r\n });\r\n \r\n // 基础菜单的展开收缩事件\r\n _DOC.on('click', (ELEM_LI + STR_GROUP_TITLE), function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parents('.'+ STR_ITEM_GROUP +':eq(0)');\r\n var options = lay.options(elemGroup[0]);\r\n var isAccordion = typeof othis.parents('.layui-menu').eq(0).attr('lay-accordion') === 'string';\r\n\r\n if(('isAllowSpread' in options) ? options.isAllowSpread : true){\r\n thisModule.spread(elemGroup, isAccordion);\r\n }\r\n });\r\n \r\n // 判断子级菜单是否超出屏幕\r\n var ELEM_LI_PAR = '.layui-menu .'+ STR_ITEM_PARENT\r\n _DOC.on('mouseenter', ELEM_LI_PAR, function(e){\r\n var othis = $(this);\r\n var elemPanel = othis.find('.'+ STR_MENU_PANEL);\r\n\r\n if(!elemPanel[0]) return;\r\n var rect = elemPanel[0].getBoundingClientRect();\r\n \r\n // 是否超出右侧屏幕\r\n if(rect.right > _WIN.width()){\r\n elemPanel.addClass(STR_MENU_PANEL_L);\r\n // 不允许超出左侧屏幕\r\n rect = elemPanel[0].getBoundingClientRect();\r\n if(rect.left < 0){\r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n }\r\n }\r\n \r\n // 是否超出底部屏幕\r\n if(rect.bottom > _WIN.height()){\r\n elemPanel.eq(0).css('margin-top', -(rect.bottom - _WIN.height() + 5));\r\n }\r\n }).on('mouseleave', ELEM_LI_PAR, function(e){\r\n var othis = $(this)\r\n var elemPanel = othis.children('.'+ STR_MENU_PANEL);\r\n \r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n elemPanel.css('margin-top', 0);\r\n });\r\n \r\n })();\r\n\r\n // 关闭面板\r\n dropdown.close = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.remove();\r\n return thisModule.call(that);\r\n };\r\n \r\n // 重载实例\r\n dropdown.reload = function(id, options, type){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n\r\n that.reload(options, type);\r\n return thisModule.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n dropdown.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[2] = 'reloadData';\r\n\r\n // 重载时,与数据相关的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'data', 'templet', 'content'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(!dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return dropdown.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n dropdown.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, dropdown);\r\n});\r\n","/**\r\n * slider 滑块组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n 'use strict';\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var slider = {\r\n config: {},\r\n index: layui.slider ? (layui.slider.index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisSlider = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setValue: function(value, index){ // 设置值\r\n value = value > options.max ? options.max : value;\r\n value = value < options.min ? options.min : value;\r\n options.value = value;\r\n return that.slide('set', value, index || 0);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'slider';\r\n var DISABLED = 'layui-disabled';\r\n var ELEM_VIEW = 'layui-slider';\r\n var SLIDER_BAR = 'layui-slider-bar';\r\n var SLIDER_WRAP = 'layui-slider-wrap';\r\n var SLIDER_WRAP_BTN = 'layui-slider-wrap-btn';\r\n var SLIDER_TIPS = 'layui-slider-tips';\r\n var SLIDER_INPUT = 'layui-slider-input';\r\n var SLIDER_INPUT_TXT = 'layui-slider-input-txt';\r\n var SLIDER_INPUT_BTN = 'layui-slider-input-btn';\r\n var ELEM_HOVER = 'layui-slider-hover';\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++slider.index;\r\n that.config = $.extend({}, that.config, slider.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'default', //滑块类型,垂直:vertical\r\n min: 0, //最小值\r\n max: 100, //最大值,默认100\r\n value: 0, //初始值,默认为0\r\n step: 1, //间隔值\r\n showstep: false, //间隔点开启\r\n tips: true, //文字提示,开启\r\n tipsAlways: false, //文字提示,始终开启\r\n input: false, //输入框,关闭\r\n range: false, //范围选择,与输入框不能同时开启,默认关闭\r\n height: 200, //配合 type:\"vertical\" 使用,默认200px\r\n disabled: false, //滑块禁用,默认关闭\r\n theme: '#16baaa' //主题颜色\r\n };\r\n\r\n //滑块渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n slider.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n //间隔值不能小于 1\r\n if(options.step < 1) options.step = 1;\r\n\r\n //最大值不能小于最小值\r\n if(options.max < options.min) options.max = options.min + options.step;\r\n\r\n\r\n\r\n //判断是否开启双滑块\r\n if(options.range){\r\n options.value = typeof(options.value) == 'object' ? options.value : [options.min, options.value];\r\n var minValue = Math.min(options.value[0], options.value[1])\r\n ,maxValue = Math.max(options.value[0], options.value[1]);\r\n options.value[0] = Math.max(minValue,options.min);\r\n options.value[1] = Math.max(maxValue,options.min);\r\n options.value[0] = Math.min(options.value[0],options.max);\r\n options.value[1] = Math.min(options.value[1],options.max);\r\n\r\n var scaleFir = Math.floor((options.value[0] - options.min) / (options.max - options.min) * 100);\r\n var scaleSec = Math.floor((options.value[1] - options.min) / (options.max - options.min) * 100);\r\n var scale = scaleSec - scaleFir + '%';\r\n scaleFir = scaleFir + '%';\r\n scaleSec = scaleSec + '%';\r\n } else {\r\n //如果初始值是一个数组,则获取数组的最小值\r\n if(typeof options.value == 'object'){\r\n options.value = Math.min.apply(null, options.value);\r\n }\r\n\r\n //初始值不能小于最小值且不能大于最大值\r\n if(options.value < options.min) options.value = options.min;\r\n if(options.value > options.max) options.value = options.max;\r\n\r\n var scale = Math.floor((options.value - options.min) / (options.max - options.min) * 100) + '%';\r\n }\r\n\r\n\r\n //如果禁用,颜色为统一的灰色\r\n var theme = options.disabled ? '#c2c2c2' : options.theme;\r\n\r\n //滑块\r\n var temp = '
                          '+ (options.tips ? '
                          ' : '') +\r\n '
                          ' +\r\n '
                          '+ (options.range ? '
                          ' : '') +'
                          ';\r\n\r\n var othis = $(options.elem);\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n that.elemTemp = $(temp);\r\n\r\n //把数据缓存到滑块上\r\n if(options.range){\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(0).data('value', options.value[0]);\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(1).data('value', options.value[1]);\r\n }else{\r\n that.elemTemp.find('.' + SLIDER_WRAP).data('value', options.value);\r\n }\r\n\r\n //插入替代元素\r\n othis.html(that.elemTemp);\r\n\r\n //垂直滑块\r\n if(options.type === 'vertical'){\r\n that.elemTemp.height(options.height + 'px');\r\n }\r\n\r\n //显示间断点\r\n if(options.showstep){\r\n var number = (options.max - options.min) / options.step, item = '';\r\n for(var i = 1; i < number + 1; i++) {\r\n var step = i * 100 / number;\r\n if(step < 100){\r\n item += '
                          '\r\n }\r\n }\r\n that.elemTemp.append(item);\r\n }\r\n\r\n //插入输入框\r\n if(options.input && !options.range){\r\n var elemInput = $('
                          ');\r\n othis.css(\"position\",\"relative\");\r\n othis.append(elemInput);\r\n othis.find('.' + SLIDER_INPUT_TXT).children('input').val(options.value);\r\n if(options.type === 'vertical'){\r\n elemInput.css({\r\n left: 0\r\n ,top: -48\r\n });\r\n } else {\r\n that.elemTemp.css(\"margin-right\", elemInput.outerWidth() + 15);\r\n }\r\n }\r\n\r\n //给未禁止的滑块滑动事件\r\n if(!options.disabled){\r\n that.slide();\r\n }else{\r\n that.elemTemp.addClass(DISABLED);\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).addClass(DISABLED);\r\n }\r\n\r\n /**\r\n * @description 设置提示文本内容\r\n * @param {Element} sliderWrapBtnElem 提示文本节点元素\r\n */\r\n function setSliderTipsTxt(sliderWrapBtnElem) {\r\n var value = sliderWrapBtnElem.parent().data('value');\r\n var tipsTxt = options.setTips ? options.setTips(value) : value;\r\n that.elemTemp.find('.' + SLIDER_TIPS).html(tipsTxt);\r\n }\r\n\r\n /**\r\n * @description 计算提示文本元素的 position left\r\n * @param {Element} sliderWrapBtnElem 提示文本节点元素\r\n */\r\n function calcSliderTipsLeft(sliderWrapBtnElem){\r\n var sliderWidth = options.type === 'vertical' ? options.height : that.elemTemp[0].offsetWidth;\r\n var sliderWrap = that.elemTemp.find('.' + SLIDER_WRAP);\r\n var tipsLeft = options.type === 'vertical' ? (sliderWidth - sliderWrapBtnElem.parent()[0].offsetTop - sliderWrap.height()) : sliderWrapBtnElem.parent()[0].offsetLeft;\r\n var left = tipsLeft / sliderWidth * 100;\r\n return left\r\n }\r\n\r\n /**\r\n * @description 设置提示文本元素的 position left\r\n * @param {number} left 要设置的 left 的大小\r\n */\r\n function setSliderTipsLeft(left) {\r\n if(options.type === 'vertical'){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"bottom\": left + '%',\r\n \"margin-bottom\": \"20px\",\r\n \"display\": \"inline-block\"\r\n });\r\n } else {\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"left\": left + '%',\r\n \"display\": \"inline-block\"\r\n });\r\n }\r\n }\r\n\r\n //判断是否要始终显示提示文本\r\n if(options.tips){\r\n if(options.tipsAlways){\r\n var sliderWrapBtnElem = that.elemTemp.find('.' + SLIDER_WRAP_BTN);\r\n setSliderTipsTxt(sliderWrapBtnElem)\r\n var left = calcSliderTipsLeft(sliderWrapBtnElem);\r\n setSliderTipsLeft(left)\r\n }else{\r\n //划过滑块显示数值\r\n var timer;\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).on('mouseover', function(){\r\n setSliderTipsTxt($(this))\r\n var left = calcSliderTipsLeft($(this));\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setSliderTipsLeft(left)\r\n }, 300);\r\n }).on('mouseout', function(){\r\n clearTimeout(timer);\r\n if(!options.tipsAlways){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css(\"display\", \"none\");\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n //滑块滑动\r\n Class.prototype.slide = function(setValue, value, i){\r\n var that = this;\r\n var options = that.config;\r\n var sliderAct = that.elemTemp;\r\n var sliderWidth = function(){\r\n return options.type === 'vertical' ? options.height : sliderAct[0].offsetWidth\r\n };\r\n var sliderWrap = sliderAct.find('.' + SLIDER_WRAP);\r\n var sliderTxt = sliderAct.next('.' + SLIDER_INPUT);\r\n var inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n var step = 100 / ((options.max - options.min) / Math.ceil(options.step));\r\n var change = function(offsetValue, index, from){\r\n if(Math.ceil(offsetValue) * step > 100){\r\n offsetValue = Math.ceil(offsetValue) * step\r\n }else{\r\n offsetValue = Math.round(offsetValue) * step\r\n }\r\n offsetValue = offsetValue > 100 ? 100: offsetValue;\r\n offsetValue = offsetValue < 0 ? 0: offsetValue;\r\n sliderWrap.eq(index).css((options.type === 'vertical' ?'bottom':'left'), offsetValue + '%');\r\n var firLeft = valueTo(sliderWrap[0].offsetLeft);\r\n var secLeft = options.range ? valueTo(sliderWrap[1].offsetLeft) : 0;\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_TIPS).css({\"bottom\":offsetValue + '%', \"margin-bottom\":\"20px\"});\r\n firLeft = valueTo(sliderWidth() - sliderWrap[0].offsetTop - sliderWrap.height());\r\n secLeft = options.range ? valueTo(sliderWidth() - sliderWrap[1].offsetTop - sliderWrap.height()) : 0;\r\n }else{\r\n sliderAct.find('.' + SLIDER_TIPS).css(\"left\",offsetValue + '%');\r\n }\r\n firLeft = firLeft > 100 ? 100: firLeft;\r\n secLeft = secLeft > 100 ? 100: secLeft;\r\n var minLeft = Math.min(firLeft, secLeft)\r\n ,wrapWidth = Math.abs(firLeft - secLeft);\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_BAR).css({\"height\":wrapWidth + '%', \"bottom\":minLeft + '%'});\r\n }else{\r\n sliderAct.find('.' + SLIDER_BAR).css({\"width\":wrapWidth + '%', \"left\":minLeft + '%'});\r\n }\r\n var selfValue = options.min + Math.round((options.max - options.min) * offsetValue / 100);\r\n inputValue = selfValue;\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val(inputValue);\r\n sliderWrap.eq(index).data('value', selfValue);\r\n sliderAct.find('.' + SLIDER_TIPS).html(options.setTips ? options.setTips(selfValue) : selfValue);\r\n\r\n //如果开启范围选择,则返回数组值\r\n if(options.range){\r\n var arrValue = [\r\n sliderWrap.eq(0).data('value'),\r\n sliderWrap.eq(1).data('value')\r\n ];\r\n if(arrValue[0] > arrValue[1]) arrValue.reverse(); //如果前面的圆点超过了后面的圆点值,则调换顺序\r\n }\r\n\r\n that.value = options.range ? arrValue : selfValue; // 最新值\r\n options.change && options.change(that.value); // change 回调\r\n\r\n // 值完成选中的事件\r\n if(from === 'done') options.done && options.done(that.value);\r\n };\r\n var valueTo = function(value){\r\n var oldLeft = value / sliderWidth() * 100 / step;\r\n var left = Math.round(oldLeft) * step;\r\n if(value == sliderWidth()){\r\n left = Math.ceil(oldLeft) * step;\r\n }\r\n return left;\r\n };\r\n\r\n //拖拽元素\r\n var elemMove = $(['
                          sliderWidth())left = sliderWidth();\r\n var reaLeft = left / sliderWidth() * 100 / step;\r\n change(reaLeft, index);\r\n othis.addClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).show();\r\n e.preventDefault();\r\n };\r\n\r\n var up = function(delay){\r\n othis.removeClass(ELEM_HOVER);\r\n if(!options.tipsAlways){\r\n setTimeout(function(){\r\n sliderAct.find('.' + SLIDER_TIPS).hide();\r\n }, delay);\r\n }\r\n };\r\n\r\n createMoveElem(othis, move, up)\r\n });\r\n });\r\n\r\n // 点击滑块\r\n sliderAct.on('click', function(e){\r\n var main = $('.' + SLIDER_WRAP_BTN);\r\n var othis = $(this);\r\n if(!main.is(event.target) && main.has(event.target).length === 0 && main.length){\r\n var index;\r\n var offset = options.type === 'vertical'\r\n ? (sliderWidth() - e.clientY + othis.offset().top - $(window).scrollTop())\r\n :(e.clientX - othis.offset().left - $(window).scrollLeft());\r\n\r\n if(offset < 0)offset = 0;\r\n if(offset > sliderWidth()) offset = sliderWidth();\r\n var reaLeft = offset / sliderWidth() * 100 / step;\r\n if(options.range){\r\n if(options.type === 'vertical'){\r\n index = Math.abs(offset - parseInt($(sliderWrap[0]).css('bottom'))) > Math.abs(offset - parseInt($(sliderWrap[1]).css('bottom'))) ? 1 : 0;\r\n } else {\r\n index = Math.abs(offset - sliderWrap[0].offsetLeft) > Math.abs(offset - sliderWrap[1].offsetLeft) ? 1 : 0;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n change(reaLeft, index, 'done');\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //点击加减输入框\r\n sliderTxt.children('.' + SLIDER_INPUT_BTN).children('i').each(function(index){\r\n $(this).on('click', function(){\r\n inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n if(index == 1){ //减\r\n inputValue = inputValue - options.step < options.min\r\n ? options.min\r\n : Number(inputValue) - options.step;\r\n }else{\r\n inputValue = Number(inputValue) + options.step > options.max\r\n ? options.max\r\n : Number(inputValue) + options.step;\r\n }\r\n var inputScale = (inputValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n });\r\n });\r\n\r\n //获取输入框值\r\n var getInputValue = function(){\r\n var realValue = this.value;\r\n realValue = isNaN(realValue) ? 0 : realValue;\r\n realValue = realValue < options.min ? options.min : realValue;\r\n realValue = realValue > options.max ? options.max : realValue;\r\n this.value = realValue;\r\n var inputScale = (realValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n };\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getInputValue.call(this);\r\n }\r\n }).on('change', getInputValue);\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n };\r\n\r\n //核心入口\r\n slider.render = function(options){\r\n var inst = new Class(options);\r\n return thisSlider.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, slider);\r\n})\r\n","/**\r\n * colorpicker \r\n * 颜色选择组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'click' : 'mousedown');\r\n\r\n //外部接口\r\n var colorpicker = {\r\n config: {}\r\n ,index: layui.colorpicker ? (layui.colorpicker.index + 10000) : 0\r\n\r\n //设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n //事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, 'colorpicker', events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options\r\n };\r\n }\r\n\r\n //字符常量\r\n ,MOD_NAME = 'colorpicker', SHOW = 'layui-show', THIS = 'layui-this', ELEM = 'layui-colorpicker'\r\n \r\n ,ELEM_MAIN = '.layui-colorpicker-main', ICON_PICKER_DOWN = 'layui-icon-down', ICON_PICKER_CLOSE = 'layui-icon-close'\r\n ,PICKER_TRIG_SPAN = 'layui-colorpicker-trigger-span', PICKER_TRIG_I = 'layui-colorpicker-trigger-i', PICKER_SIDE = 'layui-colorpicker-side', PICKER_SIDE_SLIDER = 'layui-colorpicker-side-slider'\r\n ,PICKER_BASIS = 'layui-colorpicker-basis', PICKER_ALPHA_BG = 'layui-colorpicker-alpha-bgcolor', PICKER_ALPHA_SLIDER = 'layui-colorpicker-alpha-slider', PICKER_BASIS_CUR = 'layui-colorpicker-basis-cursor', PICKER_INPUT = 'layui-colorpicker-main-input'\r\n\r\n //RGB转HSB\r\n ,RGBToHSB = function(rgb){\r\n var hsb = {h:0, s:0, b:0};\r\n var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n var delta = max - min;\r\n hsb.b = max;\r\n hsb.s = max !== 0 ? 255*delta/max : 0;\r\n if(hsb.s !== 0){\r\n if(rgb.r == max){ // 因 rgb 中返回的数字为 string 类型\r\n hsb.h = (rgb.g - rgb.b) / delta;\r\n }else if(rgb.g == max){\r\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n }else{\r\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n }\r\n }else{\r\n hsb.h = -1;\r\n }\r\n if(max === min){\r\n hsb.h = 0;\r\n }\r\n hsb.h *= 60;\r\n if(hsb.h < 0) {\r\n hsb.h += 360;\r\n }\r\n hsb.s *= 100/255;\r\n hsb.b *= 100/255;\r\n return hsb; \r\n }\r\n\r\n //HEX转HSB\r\n ,HEXToHSB = function(hex){\r\n hex = hex.indexOf('#') > -1 ? hex.substring(1) : hex;\r\n if(hex.length === 3){\r\n var num = hex.split(\"\");\r\n hex = num[0]+num[0]+num[1]+num[1]+num[2]+num[2]\r\n }\r\n hex = parseInt(hex, 16);\r\n var rgb = {r:hex >> 16, g:(hex & 0x00FF00) >> 8, b:(hex & 0x0000FF)};\r\n return RGBToHSB(rgb);\r\n }\r\n\r\n //HSB转RGB\r\n ,HSBToRGB = function(hsb){\r\n var rgb = {};\r\n var h = hsb.h;\r\n var s = hsb.s*255/100;\r\n var b = hsb.b*255/100;\r\n if(s === 0){\r\n rgb.r = rgb.g = rgb.b = b;\r\n }else{\r\n var t1 = b;\r\n var t2 = (255 - s) * b /255;\r\n var t3 = (t1 - t2) * (h % 60) /60;\r\n if(h === 360) h = 0;\r\n if(h < 60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}\r\n else if(h < 120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}\r\n else if(h < 180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}\r\n else if(h < 240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}\r\n else if(h < 300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}\r\n else if(h < 360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}\r\n else {rgb.r=0; rgb.g=0; rgb.b=0}\r\n }\r\n return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\r\n }\r\n\r\n //HSB转HEX\r\n ,HSBToHEX = function(hsb){\r\n var rgb = HSBToRGB(hsb);\r\n var hex = [\r\n rgb.r.toString(16)\r\n ,rgb.g.toString(16)\r\n ,rgb.b.toString(16)\r\n ];\r\n $.each(hex, function(nr, val){\r\n if(val.length === 1){\r\n hex[nr] = '0' + val;\r\n }\r\n });\r\n return hex.join('');\r\n }\r\n\r\n //转化成所需rgb格式\r\n ,RGBSTo = function(rgbs){\r\n var regexp = /[0-9]{1,3}/g;\r\n var re = rgbs.match(regexp) || [];\r\n return {r:re[0], g:re[1], b:re[2]};\r\n }\r\n \r\n ,$win = $(window)\r\n ,$doc = $(document)\r\n \r\n //构造器\r\n ,Class = function(options){\r\n var that = this;\r\n that.index = ++colorpicker.index;\r\n that.config = $.extend({}, that.config, colorpicker.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n color: '' //默认颜色,默认没有\r\n ,size: null //选择器大小\r\n ,alpha: false //是否开启透明度\r\n ,format: 'hex' //颜色显示/输入格式,可选 rgb,hex\r\n ,predefine: false //预定义颜色是否开启\r\n ,colors: [ //默认预定义颜色列表\r\n '#16baaa', '#16b777', '#1E9FFF', '#FF5722', '#FFB800', '#01AAED', '#999', '#c00', '#ff8c00','#ffd700'\r\n ,'#90ee90', '#00ced1', '#1e90ff', '#c71585', 'rgb(0, 186, 189)', 'rgb(255, 120, 0)', 'rgb(250, 212, 0)', '#393D49', 'rgba(0,0,0,.5)', 'rgba(255, 69, 0, 0.68)', 'rgba(144, 240, 144, 0.5)', 'rgba(31, 147, 255, 0.73)'\r\n ]\r\n };\r\n\r\n //初始颜色选择框\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n colorpicker.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n \r\n //颜色选择框对象\r\n var elemColorBox = $(['
                          '\r\n ,''\r\n ,' 3){ //需要优化\r\n if(!(options.alpha && options.format == 'rgb')){\r\n bgstr = '#' + HSBToHEX(RGBToHSB(RGBSTo(options.color)))\r\n }\r\n }\r\n \r\n return 'background: '+ bgstr;\r\n }\r\n \r\n return bgstr;\r\n }() +'\">'\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                          '].join(''))\r\n\r\n //初始化颜色选择框\r\n elem = options.elem = $(options.elem);\r\n options.size && elemColorBox.addClass('layui-colorpicker-'+ options.size); //初始化颜色选择框尺寸\r\n \r\n // 插入颜色选择框\r\n elem.addClass('layui-inline').html(\r\n that.elemColorBox = elemColorBox\r\n );\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n \r\n // 获取背景色值\r\n that.color = that.elemColorBox.find('.'+ PICKER_TRIG_SPAN)[0].style.background;\r\n \r\n // 相关事件\r\n that.events();\r\n };\r\n\r\n //渲染颜色选择器\r\n Class.prototype.renderPicker = function(){\r\n var that = this\r\n ,options = that.config\r\n ,elemColorBox = that.elemColorBox[0]\r\n \r\n //颜色选择器对象\r\n ,elemPicker = that.elemPicker = $(['
                          '\r\n //颜色面板\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n \r\n //透明度条块\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n \r\n //预设颜色列表\r\n ,function(){\r\n if(options.predefine){\r\n var list = ['
                          '];\r\n layui.each(options.colors, function(i, v){\r\n list.push(['
                          3 \r\n ? ' layui-colorpicker-pre-isalpha' \r\n : '') +'\">'\r\n ,'
                          '\r\n ,'
                          '].join(''));\r\n });\r\n list.push('
                          ');\r\n return list.join('');\r\n } else {\r\n return '';\r\n }\r\n }()\r\n \r\n //底部表单元素区域\r\n ,'
                          '\r\n ,'
                          '\r\n ,''\r\n ,'
                          '\r\n ,'
                          '\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                          '].join(''))\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)[0];\r\n \r\n //如果当前点击的颜色盒子已经存在选择器,则关闭\r\n if($(ELEM_MAIN)[0] && $(ELEM_MAIN).data('index') == that.index){\r\n that.removePicker(Class.thisElemInd);\r\n } else { //插入颜色选择器\r\n that.removePicker(Class.thisElemInd); \r\n $('body').append(elemPicker);\r\n }\r\n\r\n // 记录当前执行的实例索引\r\n colorpicker.thisId = options.id;\r\n \r\n Class.thisElemInd = that.index; //记录最新打开的选择器索引\r\n Class.thisColor = elemColorBox.style.background //记录最新打开的选择器颜色选中值\r\n \r\n that.position();\r\n that.pickerEvents();\r\n };\r\n\r\n //颜色选择器移除\r\n Class.prototype.removePicker = function(index){\r\n var that = this;\r\n var options = that.config;\r\n var elem = $('#layui-colorpicker'+ (index || that.index));\r\n\r\n if(elem[0]){\r\n elem.remove();\r\n delete colorpicker.thisId;\r\n\r\n // 面板关闭后的回调\r\n typeof options.close === 'function' && options.close(that.color);\r\n }\r\n\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(that.bindElem || that.elemColorBox[0], that.elemPicker[0], {\r\n position: options.position\r\n ,align: 'center'\r\n });\r\n return that;\r\n };\r\n\r\n //颜色选择器赋值\r\n Class.prototype.val = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBox = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT)\r\n ,e = elemColorBox[0]\r\n ,bgcolor = e.style.backgroundColor;\r\n\r\n //判断是否有背景颜色\r\n if(bgcolor){\r\n \r\n //转化成hsb格式\r\n var hsb = RGBToHSB(RGBSTo(bgcolor))\r\n ,type = elemColorBox.attr('lay-type');\r\n \r\n //同步滑块的位置及颜色选择器的选择\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n \r\n // 若格式要求为rgb\r\n if(type === 'torgb'){\r\n elemPickerInput.find('input').val(bgcolor);\r\n } else if(type === 'rgba'){ // 若格式要求为 rgba\r\n var rgb = RGBSTo(bgcolor);\r\n \r\n // 若开启透明度而没有设置,则给默认值\r\n if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){\r\n elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)');\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n } else {\r\n elemPickerInput.find('input').val(bgcolor);\r\n var left = bgcolor.slice(bgcolor.lastIndexOf(\",\") + 1, bgcolor.length - 1) * 280;\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n }\r\n \r\n // 设置 span 背景色\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'; \r\n } else {\r\n elemPickerInput.find('input').val('#'+ HSBToHEX(hsb));\r\n }\r\n } else {\r\n // 若没有背景颜色则默认到最初始的状态\r\n that.select(0,100,100);\r\n elemPickerInput.find('input').val(\"\");\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = '';\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n }\r\n };\r\n\r\n //颜色选择器滑动 / 点击\r\n Class.prototype.side = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,span = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,type = span.attr('lay-type')\r\n\r\n ,side = that.elemPicker.find('.' + PICKER_SIDE)\r\n ,slider = that.elemPicker.find('.' + PICKER_SIDE_SLIDER)\r\n ,basis = that.elemPicker.find('.' + PICKER_BASIS)\r\n ,choose = that.elemPicker.find('.' + PICKER_BASIS_CUR)\r\n ,alphacolor = that.elemPicker.find('.' + PICKER_ALPHA_BG)\r\n ,alphaslider = that.elemPicker.find('.' + PICKER_ALPHA_SLIDER)\r\n \r\n ,_h = slider[0].offsetTop/180*360\r\n ,_b = 100 - (choose[0].offsetTop + 3)/180*100\r\n ,_s = (choose[0].offsetLeft + 3)/260*100\r\n ,_a = Math.round(alphaslider[0].offsetLeft/280*100)/100 \r\n \r\n ,i = that.elemColorBox.find('.' + PICKER_TRIG_I)\r\n ,pre = that.elemPicker.find('.layui-colorpicker-pre').children('div')\r\n\r\n ,change = function(x,y,z,a){\r\n that.select(x, y, z);\r\n var rgb = HSBToRGB({h:x, s:y, b:z});\r\n var color = HSBToHEX({h:x, s:y, b:z});\r\n var elemInput = that.elemPicker.find('.' + PICKER_INPUT).find('input');\r\n\r\n i.addClass(ICON_PICKER_DOWN).removeClass(ICON_PICKER_CLOSE);\r\n span[0].style.background = 'rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')';\r\n\r\n if(type === 'torgb'){\r\n elemInput.val('rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')');\r\n } else if(type === 'rgba'){\r\n var left = a * 280;\r\n alphaslider.css(\"left\", left);\r\n elemInput.val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')');\r\n span[0].style.background = 'rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')';\r\n alphacolor[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'\r\n } else {\r\n elemInput.val('#'+ color);\r\n }\r\n \r\n //回调更改的颜色\r\n options.change && options.change($.trim(that.elemPicker.find('.' + PICKER_INPUT).find('input').val()));\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                          '].join(''))\r\n ,createMoveElem = function(call){\r\n $('#LAY-colorpicker-moving')[0] || $('body').append(elemMove);\r\n elemMove.on('mousemove', call);\r\n elemMove.on('mouseup', function(){\r\n elemMove.remove();\r\n }).on('mouseleave', function(){\r\n elemMove.remove();\r\n });\r\n };\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldy = e.clientY;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,maxh = side[0].offsetHeight;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a);\r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n //layui.stope(e);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('click', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop();\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight) top = this.offsetHeight; \r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a); \r\n e.preventDefault();\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldleft = this.offsetLeft\r\n ,oldy = e.clientY\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,left = oldleft + (e.clientX - oldx)\r\n ,maxh = basis[0].offsetHeight - 3\r\n ,maxw = basis[0].offsetWidth - 3;\r\n if(top < -3)top = -3;\r\n if(top > maxh)top = maxh;\r\n if(left < -3)left = -3;\r\n if(left > maxw)left = maxw;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n e.preventDefault();\r\n };\r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n basis.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top - 3 + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left - 3 + $win.scrollLeft()\r\n if(top < -3)top = -3;\r\n if(top > this.offsetHeight - 3)top = this.offsetHeight - 3;\r\n if(left < -3)left = -3;\r\n if(left > this.offsetWidth - 3)left = this.offsetWidth - 3;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n layui.stope(e);\r\n e.preventDefault();\r\n choose.trigger(e, 'mousedown');\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e){\r\n var oldleft = this.offsetLeft\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var left = oldleft + (e.clientX - oldx)\r\n ,maxw = alphacolor[0].offsetWidth;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('click', function(e){\r\n var left = e.clientX - $(this).offset().left\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n });\r\n \r\n //预定义颜色选择\r\n pre.each(function(){\r\n $(this).on('click', function(){\r\n $(this).parent('.layui-colorpicker-pre').addClass('selected').siblings().removeClass('selected');\r\n var color = this.style.backgroundColor\r\n ,hsb = RGBToHSB(RGBSTo(color))\r\n ,a = color.slice(color.lastIndexOf(\",\") + 1, color.length - 1),left;\r\n _h = hsb.h;\r\n _s = hsb.s;\r\n _b = hsb.b;\r\n if((color.match(/[0-9]{1,3}/g) || []).length === 3) a = 1;\r\n _a = a;\r\n left = a * 280;\r\n change(hsb.h, hsb.s, hsb.b, a);\r\n })\r\n });\r\n\r\n if(!lay.touchEventsSupported()) return;\r\n // 触摸事件模拟\r\n layui.each([\r\n {elem: side, eventType: 'click'},\r\n {elem: alphacolor, eventType: 'click'},\r\n {elem: basis, eventType: 'mousedown'}\r\n ], function(i, obj){\r\n lay.touchSwipe(obj.elem, {\r\n onTouchMove: function(e){\r\n touchHandler(e, obj.eventType)\r\n }\r\n })\r\n })\r\n\r\n function touchHandler(event, eventType) {\r\n var pointer = event.touches[0];\r\n var simulatedEvent = document.createEvent(\"MouseEvent\");\r\n\r\n simulatedEvent.initMouseEvent(eventType, \r\n true, true, window, 1, \r\n pointer.screenX, pointer.screenY,pointer.clientX, pointer.clientY, \r\n false, false, false, false, 0, null\r\n );\r\n pointer.target.dispatchEvent(simulatedEvent);\r\n }\r\n };\r\n\r\n //颜色选择器hsb转换\r\n Class.prototype.select = function(h, s, b, type){\r\n var that = this;\r\n var options = that.config;\r\n var hex = HSBToHEX({h:h, s:100, b:100});\r\n var color = HSBToHEX({h:h, s:s, b:b});\r\n var sidetop = h/360*180;\r\n var top = 180 - b/100*180 - 3;\r\n var left = s/100*260 - 3;\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n that.elemPicker.find('.' + PICKER_BASIS)[0].style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top\r\n ,\"left\": left\r\n });\r\n \r\n // if(type === 'change') return;\r\n\r\n // 选中的颜色\r\n // that.elemPicker.find('.' + PICKER_INPUT).find('input').val('#'+ color);\r\n };\r\n \r\n Class.prototype.pickerEvents = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN) //颜色盒子\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT + ' input') //颜色选择器表单\r\n \r\n ,pickerEvents = {\r\n //清空\r\n clear: function(othis){\r\n elemColorBoxSpan[0].style.background ='';\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n that.color = '';\r\n \r\n options.done && options.done('');\r\n that.removePicker();\r\n }\r\n \r\n //确认\r\n ,confirm: function(othis, change){\r\n var value = $.trim(elemPickerInput.val())\r\n ,colorValue\r\n ,hsb;\r\n \r\n if(value.indexOf(',') > -1){\r\n hsb = RGBToHSB(RGBSTo(value));\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n \r\n if((value.match(/[0-9]{1,3}/g) || []).length > 3 && elemColorBoxSpan.attr('lay-type') === 'rgba'){\r\n var left = value.slice(value.lastIndexOf(\",\") + 1, value.length - 1) * 280;\r\n that.elemPicker.find('.' + PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n elemColorBoxSpan[0].style.background = value;\r\n colorValue = value;\r\n }\r\n } else {\r\n hsb = HEXToHSB(value);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_CLOSE).addClass(ICON_PICKER_DOWN);\r\n }\r\n \r\n if(change === 'change'){\r\n that.select(hsb.h, hsb.s, hsb.b, change);\r\n options.change && options.change(colorValue);\r\n return;\r\n }\r\n that.color = value;\r\n \r\n options.done && options.done(value);\r\n that.removePicker(); \r\n }\r\n };\r\n \r\n //选择器面板点击事件\r\n that.elemPicker.on('click', '*[colorpicker-events]', function(){\r\n var othis = $(this)\r\n ,attrEvent = othis.attr('colorpicker-events');\r\n pickerEvents[attrEvent] && pickerEvents[attrEvent].call(this, othis);\r\n });\r\n \r\n //输入框事件\r\n elemPickerInput.on('keyup', function(e){\r\n var othis = $(this);\r\n pickerEvents.confirm.call(this, othis, e.keyCode === 13 ? null : 'change');\r\n });\r\n }\r\n\r\n // 颜色选择器输入\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 弹出颜色选择器\r\n that.elemColorBox.on('click' , function(){\r\n that.renderPicker();\r\n if($(ELEM_MAIN)[0]){\r\n that.val();\r\n that.side();\r\n }\r\n });\r\n };\r\n\r\n //全局事件\r\n (function(){\r\n //绑定关闭控件事件\r\n $doc.on(clickOrMousedown, function(e){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n var elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN);\r\n\r\n //如果点击的元素是颜色框\r\n if($(e.target).hasClass(ELEM) \r\n || $(e.target).parents('.'+ELEM)[0]\r\n ) return; \r\n \r\n //如果点击的元素是选择器\r\n if($(e.target).hasClass(ELEM_MAIN.replace(/\\./g, '')) \r\n || $(e.target).parents(ELEM_MAIN)[0]\r\n ) return; \r\n \r\n if(!that.elemPicker) return;\r\n \r\n if(that.color){\r\n var hsb = RGBToHSB(RGBSTo(that.color));\r\n that.select(hsb.h, hsb.s, hsb.b); \r\n } else {\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n }\r\n elemColorBoxSpan[0].style.background = that.color || '';\r\n \r\n // 取消选择的回调\r\n typeof options.cancel === 'function' && options.cancel(that.color);\r\n\r\n // 移除面板\r\n that.removePicker();\r\n });\r\n\r\n //自适应定位\r\n $win.on('resize', function(){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elemPicker || !$(ELEM_MAIN)[0]){\r\n return false;\r\n }\r\n that.position();\r\n });\r\n })();\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n //核心入口\r\n colorpicker.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, colorpicker);\r\n});\r\n","/**\r\n * element\r\n * 常用元素操作组件\r\n */\r\n \r\nlayui.define('jquery', function(exports){\r\n 'use strict';\r\n \r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'element';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var TITLE = '.layui-tab-title';\r\n \r\n var Element = function(){\r\n this.config = {};\r\n };\r\n \r\n // 全局设置\r\n Element.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 表单事件\r\n Element.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 外部 Tab 新增\r\n Element.prototype.tabAdd = function(filter, options){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var barElem = titElem.children('.layui-tab-bar');\r\n var contElem = tabElem.children('.layui-tab-content');\r\n var li = ' 0) layAttr.unshift(''); //向前插,预留空格\r\n return layAttr.join(' ');\r\n }() +'>'+ (options.title || 'unnaming') +'';\r\n \r\n barElem[0] ? barElem.before(li) : titElem.append(li);\r\n contElem.append('
                          '+ (options.content || '') +'
                          ');\r\n // call.hideTabMore(true);\r\n // 是否添加即切换\r\n options.change && this.tabChange(filter, options.id);\r\n titElem.data('LAY_TAB_CHANGE', options.change);\r\n call.tabAuto(options.change ? 'change' : null);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 删除\r\n Element.prototype.tabDelete = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n call.tabDelete(null, liElem);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 切换\r\n Element.prototype.tabChange = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n\r\n call.tabClick.call(liElem[0], {\r\n liElem: liElem\r\n });\r\n return this;\r\n };\r\n \r\n // 自定义 Tab 选项卡\r\n Element.prototype.tab = function(options){\r\n options = options || {};\r\n dom.on('click', options.headerElem, function(e){\r\n var index = $(this).index();\r\n call.tabClick.call(this, {\r\n index: index,\r\n options: options\r\n });\r\n });\r\n };\r\n \r\n \r\n // 动态改变进度条\r\n Element.prototype.progress = function(filter, percent){\r\n var ELEM = 'layui-progress';\r\n var elem = $('.'+ ELEM +'[lay-filter='+ filter +']');\r\n var elemBar = elem.find('.'+ ELEM +'-bar');\r\n var text = elemBar.find('.'+ ELEM +'-text');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n }).attr('lay-percent', percent);\r\n text.text(percent);\r\n return this;\r\n };\r\n \r\n var NAV_ELEM = '.layui-nav';\r\n var NAV_ITEM = 'layui-nav-item';\r\n var NAV_BAR = 'layui-nav-bar';\r\n var NAV_TREE = 'layui-nav-tree';\r\n var NAV_CHILD = 'layui-nav-child';\r\n var NAV_CHILD_C = 'layui-nav-child-c';\r\n var NAV_MORE = 'layui-nav-more';\r\n var NAV_DOWN = 'layui-icon-down';\r\n var NAV_ANIM = 'layui-anim layui-anim-upbit';\r\n \r\n // 基础事件体\r\n var call = {\r\n // Tab 点击\r\n tabClick: function(obj){\r\n obj = obj || {};\r\n var options = obj.options || {};\r\n var othis = obj.liElem || $(this);\r\n var parents = options.headerElem \r\n ? othis.parent() \r\n : othis.parents('.layui-tab').eq(0);\r\n var item = options.bodyElem \r\n ? $(options.bodyElem) \r\n : parents.children('.layui-tab-content').children('.layui-tab-item');\r\n var elemA = othis.find('a');\r\n var isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank'; // 是否存在跳转\r\n var unselect = typeof othis.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n var filter = parents.attr('lay-filter');\r\n\r\n // 下标\r\n var index = 'index' in obj \r\n ? obj.index \r\n : othis.parent().children('li').index(othis);\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(e, othis){\r\n var li = othis || $(this).parent();\r\n var index = li.parent().children('li').index(li);\r\n var tabElem = li.closest('.layui-tab');\r\n var item = tabElem.children('.layui-tab-content').children('.layui-tab-item');\r\n var filter = tabElem.attr('lay-filter');\r\n \r\n if(li.hasClass(THIS)){\r\n if (li.next()[0] && li.next().is('li')){\r\n call.tabClick.call(li.next()[0], {\r\n index: index + 1\r\n });\r\n } else if (li.prev()[0] && li.prev().is('li')){\r\n call.tabClick.call(li.prev()[0], null, index - 1);\r\n }\r\n }\r\n \r\n li.remove();\r\n item.eq(index).remove();\r\n setTimeout(function(){\r\n call.tabAuto();\r\n }, 50);\r\n \r\n layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread){\r\n var SCROLL = 'layui-tab-scroll';\r\n var MORE = 'layui-tab-more';\r\n var BAR = 'layui-tab-bar';\r\n var CLOSE = 'layui-tab-close';\r\n var that = this;\r\n \r\n $('.layui-tab').each(function(){\r\n var othis = $(this);\r\n var title = othis.children('.layui-tab-title');\r\n var item = othis.children('.layui-tab-content').children('.layui-tab-item');\r\n var STOPE = 'lay-stope=\"tabmore\"';\r\n var span = $('');\r\n\r\n if(that === window && device.ie != 8){\r\n // call.hideTabMore(true)\r\n }\r\n \r\n // 开启关闭图标\r\n if(othis.attr('lay-allowclose')){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0]){\r\n var close = $('');\r\n close.on('click', call.tabDelete);\r\n li.append(close);\r\n }\r\n });\r\n }\r\n \r\n if(typeof othis.attr('lay-unauto') === 'string') return;\r\n \r\n // 响应式\r\n if(\r\n title.prop('scrollWidth') > title.outerWidth() + 1 || (\r\n title.find('li').length && title.height() > function(height){\r\n return height + height/2;\r\n }(title.find('li').eq(0).height())\r\n )\r\n ){\r\n // 若执行是来自于切换,则自动展开\r\n (\r\n spread === 'change' && title.data('LAY_TAB_CHANGE')\r\n ) && title.addClass(MORE);\r\n \r\n if(title.find('.'+BAR)[0]) return;\r\n title.append(span);\r\n othis.attr('overflow', '');\r\n\r\n // 展开图标事件\r\n span.on('click', function(e){\r\n var isSpread = title.hasClass(MORE);\r\n title[isSpread ? 'removeClass' : 'addClass'](MORE);\r\n });\r\n } else {\r\n title.find('.'+ BAR).remove();\r\n othis.removeAttr('overflow');\r\n }\r\n });\r\n }\r\n // 隐藏更多 Tab\r\n ,hideTabMore: function(e){\r\n var tsbTitle = $('.layui-tab-title');\r\n if(e === true || $(e.target).attr('lay-stope') !== 'tabmore'){\r\n tsbTitle.removeClass('layui-tab-more');\r\n tsbTitle.find('.layui-tab-bar').attr('title','');\r\n }\r\n }\r\n \r\n //点击一级菜单\r\n /*\r\n ,clickThis: function(){\r\n var othis = $(this), parents = othis.parents(NAV_ELEM)\r\n ,filter = parents.attr('lay-filter')\r\n ,elemA = othis.find('a')\r\n ,unselect = typeof othis.attr('lay-unselect') === 'string';\r\n\r\n if(othis.find('.'+NAV_CHILD)[0]) return;\r\n \r\n if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank') && !unselect){\r\n parents.find('.'+THIS).removeClass(THIS);\r\n othis.addClass(THIS);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n )\r\n */\r\n \r\n // 点击菜单 - a 标签触发\r\n ,clickThis: function() {\r\n var othis = $(this);\r\n var parents = othis.closest(NAV_ELEM);\r\n var filter = parents.attr('lay-filter');\r\n var parent = othis.parent() ;\r\n var child = othis.siblings('.'+ NAV_CHILD);\r\n var unselect = typeof parent.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n \r\n // 满足点击选中的条件\r\n if (!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect) {\r\n if (!child[0]) {\r\n parents.find('.'+ THIS).removeClass(THIS);\r\n parent.addClass(THIS);\r\n }\r\n }\r\n \r\n // 若为垂直菜单\r\n if (parents.hasClass(NAV_TREE)) {\r\n var NAV_ITEMED = NAV_ITEM + 'ed'; // 用于标注展开状态\r\n var needExpand = !parent.hasClass(NAV_ITEMED); // 是否执行展开\r\n var ANIM_MS = 200; // 动画过渡毫秒数\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({\r\n \"display\": \"\" // 剔除动画生成的 style display,以适配外部样式的状态重置\r\n });\r\n // 避免导航滑块错位\r\n parents.children('.'+ NAV_BAR).css({\r\n opacity: 0\r\n })\r\n };\r\n\r\n // 是否正处于动画中的状态\r\n if (child.is(':animated')) return;\r\n\r\n // 剔除可能存在的 CSS3 动画类\r\n child.removeClass(NAV_ANIM);\r\n\r\n // 若有子菜单,则对其执行展开或收缩\r\n if (child[0]) {\r\n if (needExpand) {\r\n // 先执行 slideDown 动画,再标注展开状态样式,避免元素 `block` 状态导致动画无效\r\n child.slideDown(ANIM_MS, complete);\r\n parent.addClass(NAV_ITEMED);\r\n } else {\r\n // 先取消展开状态样式,再将元素临时显示,避免 `none` 状态导致 slideUp 动画无效\r\n parent.removeClass(NAV_ITEMED);\r\n child.show().slideUp(ANIM_MS, complete);\r\n }\r\n\r\n // 手风琴 --- 收缩兄弟展开项\r\n if (typeof parents.attr('lay-accordion') === 'string' || parents.attr('lay-shrink') === 'all') {\r\n var parentSibs = parent.siblings('.'+ NAV_ITEMED);\r\n parentSibs.removeClass(NAV_ITEMED);\r\n parentSibs.children('.'+ NAV_CHILD).show().stop().slideUp(ANIM_MS, complete);\r\n }\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n \r\n // 折叠面板\r\n ,collapse: function(){\r\n var othis = $(this);\r\n var icon = othis.find('.layui-colla-icon');\r\n var elemCont = othis.siblings('.layui-colla-content');\r\n var parents = othis.parents('.layui-collapse').eq(0);\r\n var filter = parents.attr('lay-filter');\r\n var isNone = elemCont.css('display') === 'none';\r\n \r\n // 是否手风琴\r\n if(typeof parents.attr('lay-accordion') === 'string'){\r\n var show = parents.children('.layui-colla-item').children('.'+SHOW);\r\n show.siblings('.layui-colla-title').children('.layui-colla-icon').html('');\r\n show.removeClass(SHOW);\r\n }\r\n \r\n elemCont[isNone ? 'addClass' : 'removeClass'](SHOW);\r\n icon.html(isNone ? '' : '');\r\n \r\n layui.event.call(this, MOD_NAME, 'collapse('+ filter +')', {\r\n title: othis\r\n ,content: elemCont\r\n ,show: isNone\r\n });\r\n }\r\n };\r\n \r\n // 初始化元素操作\r\n Element.prototype.init = function(type, filter){\r\n var that = this, elemFilter = function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(){\r\n call.tabAuto.call({});\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(){\r\n var TIME = 200;\r\n var timer = {};\r\n var timerMore = {};\r\n var timeEnd = {};\r\n var NAV_TITLE = 'layui-nav-title';\r\n \r\n // 滑块跟随\r\n var follow = function(bar, nav, index) {\r\n var othis = $(this);\r\n var child = othis.find('.'+NAV_CHILD);\r\n\r\n // 是否垂直导航菜单\r\n if (nav.hasClass(NAV_TREE)) {\r\n // 无子菜单时跟随\r\n if (!child[0]) {\r\n var thisA = othis.children('.'+ NAV_TITLE);\r\n bar.css({\r\n top: othis.offset().top - nav.offset().top,\r\n height: (thisA[0] ? thisA : othis).outerHeight(),\r\n opacity: 1\r\n });\r\n }\r\n } else {\r\n child.addClass(NAV_ANIM);\r\n \r\n // 若居中对齐\r\n if (child.hasClass(NAV_CHILD_C)) {\r\n child.css({\r\n left: -(child.outerWidth() - othis.width()) / 2\r\n });\r\n }\r\n \r\n // 滑块定位\r\n if (child[0]) { // 若有子菜单,则滑块消失\r\n bar.css({\r\n left: bar.position().left + bar.width() / 2,\r\n width: 0,\r\n opacity: 0\r\n });\r\n } else { // bar 跟随\r\n bar.css({\r\n left: othis.position().left + parseFloat(othis.css('marginLeft')),\r\n top: othis.position().top + othis.height() - bar.height()\r\n });\r\n }\r\n \r\n // 渐显滑块并适配宽度\r\n timer[index] = setTimeout(function() {\r\n bar.css({\r\n width: child[0] ? 0 : othis.width(),\r\n opacity: child[0] ? 0 : 1\r\n });\r\n }, device.ie && device.ie < 10 ? 0 : TIME);\r\n \r\n // 显示子菜单\r\n clearTimeout(timeEnd[index]);\r\n if (child.css('display') === 'block') {\r\n clearTimeout(timerMore[index]);\r\n }\r\n timerMore[index] = setTimeout(function(){\r\n child.addClass(SHOW);\r\n othis.find('.'+NAV_MORE).addClass(NAV_MORE+'d');\r\n }, 300);\r\n }\r\n };\r\n \r\n // 遍历导航\r\n $(NAV_ELEM + elemFilter).each(function(index) {\r\n var othis = $(this);\r\n var bar = $('');\r\n var itemElem = othis.find('.'+NAV_ITEM);\r\n \r\n // hover 滑动效果\r\n if (!othis.find('.'+NAV_BAR)[0]) {\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).on('mouseenter', function() {\r\n follow.call(this, bar, othis, index);\r\n }).on('mouseleave', function() { // 鼠标移出\r\n // 是否为垂直导航\r\n if (othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n height: 0,\r\n opacity: 0\r\n });\r\n } else {\r\n // 隐藏子菜单\r\n clearTimeout(timerMore[index]);\r\n timerMore[index] = setTimeout(function(){\r\n othis.find('.'+ NAV_CHILD).removeClass(SHOW);\r\n othis.find('.'+ NAV_MORE).removeClass(NAV_MORE +'d');\r\n }, 300);\r\n }\r\n });\r\n\r\n // 鼠标离开当前菜单时\r\n othis.on('mouseleave', function() {\r\n clearTimeout(timer[index])\r\n timeEnd[index] = setTimeout(function() {\r\n if (!othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n width: 0,\r\n left: bar.position().left + bar.width() / 2,\r\n opacity: 0\r\n });\r\n }\r\n }, TIME);\r\n });\r\n }\r\n \r\n // 展开子菜单\r\n itemElem.find('a').each(function() {\r\n var thisA = $(this);\r\n var parent = thisA.parent();\r\n var child = thisA.siblings('.'+ NAV_CHILD);\r\n \r\n // 输出小箭头\r\n if (child[0] && !thisA.children('.'+ NAV_MORE)[0]) {\r\n thisA.append('');\r\n }\r\n \r\n thisA.off('click', call.clickThis).on('click', call.clickThis); // 点击菜单\r\n });\r\n });\r\n }\r\n \r\n //面包屑\r\n ,breadcrumb: function(){\r\n var ELEM = '.layui-breadcrumb';\r\n \r\n $(ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,ATTE_SPR = 'lay-separator'\r\n ,separator = othis.attr(ATTE_SPR) || '/'\r\n ,aNode = othis.find('a');\r\n if(aNode.next('span['+ ATTE_SPR +']')[0]) return;\r\n aNode.each(function(index){\r\n if(index === aNode.length - 1) return;\r\n $(this).after(''+ separator +'');\r\n });\r\n othis.css('visibility', 'visible');\r\n });\r\n }\r\n \r\n //进度条\r\n ,progress: function(){\r\n var ELEM = 'layui-progress';\r\n $('.' + ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,elemBar = othis.find('.layui-progress-bar')\r\n ,percent = elemBar.attr('lay-percent');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n });\r\n \r\n if(othis.attr('lay-showpercent')){\r\n setTimeout(function(){\r\n elemBar.html(''+ percent +'');\r\n },350);\r\n }\r\n });\r\n }\r\n \r\n //折叠面板\r\n ,collapse: function(){\r\n var ELEM = 'layui-collapse';\r\n \r\n $('.' + ELEM + elemFilter).each(function(){\r\n var elemItem = $(this).find('.layui-colla-item')\r\n elemItem.each(function(){\r\n var othis = $(this)\r\n ,elemTitle = othis.find('.layui-colla-title')\r\n ,elemCont = othis.find('.layui-colla-content')\r\n ,isNone = elemCont.css('display') === 'none';\r\n \r\n //初始状态\r\n elemTitle.find('.layui-colla-icon').remove();\r\n elemTitle.append(''+ (isNone ? '' : '') +'');\r\n\r\n //点击标题\r\n elemTitle.off('click', call.collapse).on('click', call.collapse);\r\n }); \r\n \r\n });\r\n }\r\n };\r\n\r\n return items[type] ? items[type]() : layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n \r\n Element.prototype.render = Element.prototype.init;\r\n\r\n var element = new Element();\r\n var dom = $(document);\r\n \r\n $(function(){\r\n element.render();\r\n });\r\n\r\n dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换\r\n // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab\r\n $(window).on('resize', call.tabAuto); // 自适应\r\n \r\n exports(MOD_NAME, element);\r\n});\r\n\r\n","/**\r\n * upload\r\n * 上传组件\r\n */\r\n \r\nlayui.define(['lay', 'layer'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var layer = layui.layer;\r\n var device = layui.device();\r\n\r\n // 模块名\r\n var MOD_NAME = 'upload';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var upload = {\r\n config: {}, // 全局配置项\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0, // 索引\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n upload: function(files){\r\n that.upload.call(that, files);\r\n },\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n }\r\n };\r\n \r\n // 字符常量\r\n var ELEM = 'layui-upload';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_FILE = 'layui-upload-file';\r\n var ELEM_FORM = 'layui-upload-form';\r\n var ELEM_IFRAME = 'layui-upload-iframe';\r\n var ELEM_CHOOSE = 'layui-upload-choose';\r\n var ELEM_DRAG = 'layui-upload-drag';\r\n var UPLOADING = 'UPLOADING';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++upload.index;\r\n that.config = $.extend({}, that.config, upload.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n accept: 'images', // 允许上传的文件类型:images/file/video/audio\r\n exts: '', // 允许上传的文件后缀名\r\n auto: true, // 是否选完文件后自动上传\r\n bindAction: '', // 手动上传触发的元素\r\n url: '', // 上传地址\r\n force: '', // 强制规定返回的数据格式,目前只支持是否强制 json\r\n field: 'file', // 文件字段名\r\n acceptMime: '', // 筛选出的文件类型,默认为所有文件\r\n method: 'post', // 请求上传的 http 类型\r\n data: {}, // 请求上传的额外参数\r\n drag: true, // 是否允许拖拽上传\r\n size: 0, // 文件限制大小,默认不限制\r\n number: 0, // 允许同时上传的文件数,默认不限制\r\n multiple: false, // 是否允许多文件上传,不支持 ie8-9\r\n text: { // 自定义提示文本\r\n \"cross-domain\": \"Cross-domain requests are not supported\", // 跨域\r\n \"data-format-error\": \"Please return JSON data format\", // 数据格式错误\r\n \"check-error\": \"\", // 文件格式校验失败\r\n \"error\": \"\", // 上传失败\r\n \"limit-number\": null, // 限制 number 属性的提示 --- function\r\n \"limit-size\": null // 限制 size 属性的提示 --- function\r\n }\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render(true);\r\n };\r\n \r\n // 初始渲染\r\n Class.prototype.render = function(rerender){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if (elem.length > 1) {\r\n layui.each(elem, function() {\r\n upload.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0], {\r\n attr: elem.attr('lay-data') ? 'lay-data' : null // 兼容旧版的 lay-data 属性\r\n }));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if (!rerender && elem[0] && elem.data(MOD_INDEX)) {\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.bindAction = $(options.bindAction);\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n that.file();\r\n that.events();\r\n };\r\n \r\n //追加文件域\r\n Class.prototype.file = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemFile = that.elemFile = $([\r\n ''\r\n ].join(''));\r\n var next = options.elem.next();\r\n \r\n if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){\r\n next.remove();\r\n }\r\n \r\n //包裹ie8/9容器\r\n if(device.ie && device.ie < 10){\r\n options.elem.wrap('
                          ');\r\n }\r\n \r\n that.isFile() ? (\r\n that.elemFile = options.elem,\r\n options.field = options.elem[0].name\r\n ) : options.elem.after(elemFile);\r\n \r\n //初始化ie8/9的Form域\r\n if(device.ie && device.ie < 10){\r\n that.initIE();\r\n }\r\n };\r\n \r\n //ie8-9初始化\r\n Class.prototype.initIE = function(){\r\n var that = this;\r\n var options = that.config;\r\n var iframe = $('');\r\n var elemForm = $(['
                          '\r\n ,''].join(''));\r\n \r\n //插入iframe \r\n $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);\r\n\r\n //包裹文件域\r\n if(!options.elem.next().hasClass(ELEM_FORM)){\r\n that.elemFile.wrap(elemForm); \r\n \r\n //追加额外的参数\r\n options.elem.next('.'+ ELEM_FORM).append(function(){\r\n var arr = [];\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n arr.push('')\r\n });\r\n return arr.join('');\r\n }());\r\n }\r\n };\r\n \r\n //异常提示\r\n Class.prototype.msg = function(content){\r\n return layer.msg(content, {\r\n icon: 2,\r\n shift: 6\r\n });\r\n };\r\n \r\n //判断绑定元素是否为文件域本身\r\n Class.prototype.isFile = function(){\r\n var elem = this.config.elem[0];\r\n if(!elem) return;\r\n return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'\r\n }\r\n \r\n //预读图片信息\r\n Class.prototype.preview = function(callback){\r\n var that = this;\r\n if(window.FileReader){\r\n layui.each(that.chooseFiles, function(index, file){\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file); \r\n reader.onload = function(){\r\n callback && callback(index, file, this.result);\r\n }\r\n });\r\n }\r\n };\r\n \r\n // 执行上传\r\n Class.prototype.upload = function(files, type){\r\n var that = this;\r\n var options = that.config;\r\n var text = options.text || {};\r\n var elemFile = that.elemFile[0];\r\n\r\n // 获取文件队列\r\n var getFiles = function(){\r\n return files || that.files || that.chooseFiles || elemFile.files;\r\n };\r\n \r\n // 高级浏览器处理方式,支持跨域\r\n var ajaxSend = function(){\r\n var successful = 0;\r\n var failed = 0;\r\n var items = getFiles();\r\n\r\n // 多文件全部上传完毕的回调\r\n var allDone = function(){\r\n if(options.multiple && successful + failed === that.fileLength){\r\n typeof options.allDone === 'function' && options.allDone({\r\n total: that.fileLength,\r\n successful: successful,\r\n failed: failed\r\n });\r\n }\r\n };\r\n\r\n // 发送请求\r\n var request = function(sets){\r\n var formData = new FormData();\r\n\r\n // 恢复文件状态\r\n var resetFileState = function(file) {\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n delete file[UPLOADING];\r\n });\r\n } else {\r\n delete file[UPLOADING];\r\n }\r\n };\r\n\r\n // 追加额外的参数\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' \r\n ? sets.unified ? value() : value(sets.index, sets.file)\r\n : value;\r\n formData.append(key, value);\r\n });\r\n\r\n /*\r\n * 添加 file 到表单域\r\n */\r\n\r\n // 是否统一上传\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n if (file[UPLOADING]) return;\r\n file[UPLOADING] = true; // 上传中的标记\r\n formData.append(options.field, file);\r\n });\r\n } else { // 逐一上传\r\n if (sets.file[UPLOADING]) return;\r\n formData.append(options.field, sets.file);\r\n sets.file[UPLOADING] = true; // 上传中的标记\r\n }\r\n\r\n // ajax 参数\r\n var opts = {\r\n url: options.url,\r\n type: 'post', // 统一采用 post 上传\r\n data: formData,\r\n dataType: options.dataType || 'json',\r\n contentType: false,\r\n processData: false,\r\n headers: options.headers || {},\r\n success: function(res){ // 成功回调\r\n options.unified ? (successful += that.fileLength) : successful++;\r\n done(sets.index, res);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n },\r\n error: function(e){ // 异常回调\r\n options.unified ? (failed += that.fileLength) : failed++;\r\n that.msg(text['error'] || [\r\n 'Upload failed, please try again.',\r\n 'status: '+ (e.status || '') +' - '+ (e.statusText || 'error')\r\n ].join('
                          '));\r\n error(sets.index);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n }\r\n };\r\n\r\n // 进度条\r\n if(typeof options.progress === 'function'){\r\n opts.xhr = function(){\r\n var xhr = $.ajaxSettings.xhr();\r\n // 上传进度\r\n xhr.upload.addEventListener(\"progress\", function (obj) {\r\n if(obj.lengthComputable){\r\n var percent = Math.floor((obj.loaded/obj.total)* 100); // 百分比\r\n options.progress(percent, (options.item ? options.item[0] : options.elem[0]) , obj, sets.index);\r\n }\r\n });\r\n return xhr;\r\n }\r\n }\r\n $.ajax(opts);\r\n };\r\n\r\n // 多文件是否一起上传\r\n if(options.unified){\r\n request({\r\n unified: true,\r\n index: 0\r\n });\r\n } else {\r\n layui.each(items, function(index, file){\r\n request({\r\n index: index,\r\n file: file\r\n });\r\n });\r\n }\r\n };\r\n \r\n // 低版本 IE 处理方式,不支持跨域\r\n var iframeSend = function(){\r\n var iframe = $('#'+ ELEM_IFRAME);\r\n \r\n that.elemFile.parent().submit();\r\n\r\n // 获取响应信息\r\n clearInterval(Class.timer);\r\n Class.timer = setInterval(function() {\r\n var res, iframeBody = iframe.contents().find('body');\r\n try {\r\n res = iframeBody.text();\r\n } catch(e) {\r\n that.msg(text['cross-domain']); \r\n clearInterval(Class.timer);\r\n error();\r\n }\r\n if(res){\r\n clearInterval(Class.timer);\r\n iframeBody.html('');\r\n done(0, res);\r\n }\r\n }, 30); \r\n };\r\n \r\n // 统一回调\r\n var done = function(index, res){\r\n that.elemFile.next('.'+ ELEM_CHOOSE).remove();\r\n elemFile.value = '';\r\n \r\n if(options.force === 'json'){\r\n if(typeof res !== 'object'){\r\n try {\r\n res = JSON.parse(res);\r\n } catch(e){\r\n res = {};\r\n return that.msg(text['data-format-error']);\r\n }\r\n }\r\n }\r\n \r\n typeof options.done === 'function' && options.done(res, index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n // 统一网络异常回调\r\n var error = function(index){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n var check;\r\n var exts = options.exts;\r\n var value = function(){\r\n var arr = [];\r\n layui.each(files || that.chooseFiles, function(i, item){\r\n arr.push(item.name);\r\n });\r\n return arr;\r\n }();\r\n \r\n // 回调函数返回的参数\r\n var args = {\r\n // 预览\r\n preview: function(callback){\r\n that.preview(callback);\r\n },\r\n // 上传\r\n upload: function(index, file){\r\n var thisFile = {};\r\n thisFile[index] = file;\r\n that.upload(thisFile);\r\n },\r\n // 追加文件到队列\r\n pushFile: function(){\r\n that.files = that.files || {};\r\n layui.each(that.chooseFiles, function(index, item){\r\n that.files[index] = item;\r\n });\r\n return that.files;\r\n },\r\n // 重置文件\r\n resetFile: function(index, file, filename){\r\n var newFile = new File([file], filename);\r\n that.files = that.files || {};\r\n that.files[index] = newFile;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n // 上传前的回调 - 如果回调函数明确返回 false,则停止上传\r\n if(options.before && (options.before(args) === false)) return;\r\n\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n \r\n ajaxSend();\r\n };\r\n \r\n // 文件类型名称\r\n var typeName = ({\r\n file: '文件',\r\n images: '图片',\r\n video: '视频',\r\n audio: '音频'\r\n })[options.accept] || '文件';\r\n\r\n // 校验文件格式\r\n value = value.length === 0 \r\n ? ((elemFile.value.match(/[^\\/\\\\]+\\..+/g)||[]) || '')\r\n : value;\r\n \r\n // 若文件域值为空\r\n if (value.length === 0) return;\r\n \r\n // 根据文件类型校验\r\n switch(options.accept){\r\n case 'file': // 一般文件\r\n layui.each(value, function(i, item){\r\n if(exts && !RegExp('.\\\\.('+ exts +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'video': // 视频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'audio': // 音频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n default: // 图片文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'jpg|png|gif|bmp|jpeg|svg') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n }\r\n \r\n // 校验失败提示\r\n if(check){\r\n that.msg(text['check-error'] || ('选择的'+ typeName +'中包含不支持的格式'));\r\n return elemFile.value = '';\r\n }\r\n\r\n // 选择文件的回调 \r\n if(type === 'choose' || options.auto){\r\n options.choose && options.choose(args);\r\n if(type === 'choose'){\r\n return;\r\n }\r\n }\r\n \r\n // 检验文件数量\r\n that.fileLength = function(){\r\n var length = 0;\r\n var items = getFiles();\r\n layui.each(items, function(){\r\n length++;\r\n });\r\n return length;\r\n }();\r\n \r\n if(options.number && that.fileLength > options.number){\r\n return that.msg(typeof text['limit-number'] === 'function' \r\n ? text['limit-number'](options, that.fileLength) \r\n : (\r\n '同时最多只能上传: '+ options.number + ' 个文件'\r\n +'
                          您当前已经选择了: '+ that.fileLength +' 个文件'\r\n ));\r\n }\r\n \r\n // 检验文件大小\r\n if(options.size > 0 && !(device.ie && device.ie < 10)){\r\n var limitSize;\r\n \r\n layui.each(getFiles(), function(index, file){\r\n if(file.size > 1024*options.size){\r\n var size = options.size/1024;\r\n size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'\r\n elemFile.value = '';\r\n limitSize = size;\r\n }\r\n });\r\n if(limitSize) return that.msg(typeof text['limit-size'] === 'function' \r\n ? text['limit-size'](options, limitSize) \r\n : '文件大小不能超过 '+ limitSize);\r\n }\r\n\r\n send();\r\n };\r\n \r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 设置当前选择的文件队列\r\n var setChooseFile = function(files){\r\n that.chooseFiles = {};\r\n layui.each(files, function(i, item){\r\n var time = new Date().getTime();\r\n that.chooseFiles[time + '-' + i] = item;\r\n });\r\n };\r\n \r\n // 设置选择的文本\r\n var setChooseText = function(files, filename){\r\n var elemFile = that.elemFile;\r\n var item = options.item ? options.item : options.elem;\r\n var value = files.length > 1 \r\n ? files.length + '个文件' \r\n : ((files[0] || {}).name || (elemFile[0].value.match(/[^\\/\\\\]+\\..+/g)||[]) || '');\r\n \r\n if(elemFile.next().hasClass(ELEM_CHOOSE)){\r\n elemFile.next().remove();\r\n }\r\n that.upload(null, 'choose');\r\n if(that.isFile() || options.choose) return;\r\n elemFile.after(''+ value +'');\r\n };\r\n\r\n // 点击上传容器\r\n options.elem.off('upload.start').on('upload.start', function(){\r\n var othis = $(this);\r\n\r\n that.config.item = othis;\r\n that.elemFile[0].click();\r\n });\r\n \r\n // 拖拽上传\r\n if(!(device.ie && device.ie < 10)){\r\n options.elem.off('upload.over').on('upload.over', function(){\r\n var othis = $(this)\r\n othis.attr('lay-over', '');\r\n })\r\n .off('upload.leave').on('upload.leave', function(){\r\n var othis = $(this)\r\n othis.removeAttr('lay-over');\r\n })\r\n .off('upload.drop').on('upload.drop', function(e, param){\r\n var othis = $(this);\r\n var files = param.originalEvent.dataTransfer.files || [];\r\n \r\n othis.removeAttr('lay-over');\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n }\r\n \r\n // 文件选择\r\n that.elemFile.on('change', function(){\r\n var files = this.files || [];\r\n\r\n if(files.length === 0) return;\r\n\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n \r\n // 手动触发上传\r\n options.bindAction.off('upload.action').on('upload.action', function(){\r\n that.upload();\r\n });\r\n\r\n\r\n // 防止事件重复绑定\r\n if(options.elem.data(MOD_INDEX)) return;\r\n\r\n\r\n // 目标元素 click 事件\r\n options.elem.on('click', function(){\r\n if(that.isFile()) return;\r\n $(this).trigger('upload.start');\r\n });\r\n \r\n // 目标元素 drop 事件\r\n if(options.drag){\r\n options.elem.on('dragover', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.over');\r\n }).on('dragleave', function(e){\r\n $(this).trigger('upload.leave');\r\n }).on('drop', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.drop', e);\r\n });\r\n }\r\n \r\n // 手动上传时触发上传的元素 click 事件\r\n options.bindAction.on('click', function(){\r\n $(this).trigger('upload.action');\r\n });\r\n \r\n // 绑定元素索引\r\n options.elem.data(MOD_INDEX, options.id);\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n\r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 核心入口 \r\n upload.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, upload);\r\n});\r\n\r\n","/**\r\n * form 表单组件\r\n */\r\n \r\nlayui.define(['lay', 'layer', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'form';\r\n var ELEM = '.layui-form';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n var OUT_OF_RANGE = 'layui-input-number-out-of-range';\r\n \r\n var Form = function(){\r\n this.config = {\r\n // 内置的验证规则\r\n verify: {\r\n required: function(value) {\r\n if (!/[\\S]+/.test(value)) {\r\n return '必填项不能为空';\r\n }\r\n },\r\n phone: function(value) {\r\n var EXP = /^1\\d{10}$/;\r\n if (value && !EXP.test(value)) {\r\n return '手机号格式不正确';\r\n }\r\n },\r\n email: function(value) {\r\n var EXP = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n if (value && !EXP.test(value)) {\r\n return '邮箱格式不正确';\r\n }\r\n },\r\n url: function(value) {\r\n var EXP = /^(#|(http(s?)):\\/\\/|\\/\\/)[^\\s]+\\.[^\\s]+$/;\r\n if (value && !EXP.test(value)) {\r\n return '链接格式不正确';\r\n }\r\n },\r\n number: function(value){\r\n if (value && isNaN(value)) {\r\n return '只能填写数字';\r\n }\r\n },\r\n date: function(value){\r\n var EXP = /^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/;\r\n if (value && !EXP.test(value)) {\r\n return '日期格式不正确';\r\n }\r\n },\r\n identity: function(value) {\r\n var EXP = /(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/;\r\n if (value && !EXP.test(value)) {\r\n return '身份证号格式不正确';\r\n }\r\n }\r\n },\r\n autocomplete: null // 全局 autocomplete 状态。 null 表示不干预\r\n };\r\n };\r\n \r\n // 全局设置\r\n Form.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 验证规则设定\r\n Form.prototype.verify = function(settings){\r\n var that = this;\r\n $.extend(true, that.config.verify, settings);\r\n return that;\r\n };\r\n\r\n // 获取指定表单对象\r\n Form.prototype.getFormElem = function(filter){\r\n return $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n };\r\n \r\n // 表单事件\r\n Form.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 赋值/取值\r\n Form.prototype.val = function(filter, object){\r\n var that = this\r\n ,formElem = that.getFormElem(filter);\r\n \r\n // 遍历\r\n formElem.each(function(index, item){\r\n var itemForm = $(this);\r\n \r\n // 赋值\r\n layui.each(object, function(key, value){\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]')\r\n ,type;\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) return;\r\n type = itemElem[0].type;\r\n \r\n // 如果为复选框\r\n if(type === 'checkbox'){\r\n itemElem[0].checked = value;\r\n } else if(type === 'radio') { // 如果为单选框\r\n itemElem.each(function(){\r\n this.checked = this.value == value;\r\n });\r\n } else { // 其它类型的表单\r\n itemElem.val(value);\r\n }\r\n });\r\n });\r\n \r\n form.render(null, filter);\r\n \r\n // 返回值\r\n return that.getValue(filter);\r\n };\r\n \r\n // 取值\r\n Form.prototype.getValue = function(filter, itemForm){\r\n itemForm = itemForm || this.getFormElem(filter);\r\n \r\n var nameIndex = {} // 数组 name 索引\r\n ,field = {}\r\n ,fieldElem = itemForm.find('input,select,textarea') // 获取所有表单域\r\n \r\n layui.each(fieldElem, function(_, item){ \r\n var othis = $(this)\r\n ,init_name; // 初始 name\r\n \r\n item.name = (item.name || '').replace(/^\\s*|\\s*&/, '');\r\n if(!item.name) return;\r\n \r\n // 用于支持数组 name\r\n if(/^.*\\[\\]$/.test(item.name)){\r\n var key = item.name.match(/^(.*)\\[\\]$/g)[0];\r\n nameIndex[key] = nameIndex[key] | 0;\r\n init_name = item.name.replace(/^(.*)\\[\\]$/, '$1['+ (nameIndex[key]++) +']');\r\n }\r\n \r\n if(/^(checkbox|radio)$/.test(item.type) && !item.checked) return; // 复选框和单选框未选中,不记录字段 \r\n field[init_name || item.name] = item.value;\r\n });\r\n \r\n return field;\r\n };\r\n \r\n // 表单控件渲染\r\n Form.prototype.render = function(type, filter){\r\n var that = this;\r\n var options = that.config;\r\n var elemForm = $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n var items = {\r\n // 输入框\r\n input: function(elem){\r\n var inputs = elem || elemForm.find('input,textarea');\r\n\r\n // 初始化全局的 autocomplete\r\n options.autocomplete && inputs.attr('autocomplete', options.autocomplete);\r\n\r\n var handleInputNumber = function(elem, eventType){\r\n var that = this;\r\n var rawValue = elem.val();\r\n var value = Number(rawValue);\r\n var step = Number(elem.attr('step')) || 1; // 加减的数字间隔\r\n var min = Number(elem.attr('min'));\r\n var max = Number(elem.attr('max'));\r\n var precision = Number(elem.attr('lay-precision'));\r\n var noAction = eventType !== 'click' && rawValue === ''; // 初始渲染和失焦时空值不作处理\r\n var isInit = eventType === 'init';\r\n\r\n if(isNaN(value)) return; // 若非数字,则不作处理\r\n\r\n if(eventType === 'click'){\r\n var isDecrement = !!$(that).index() // 0: icon-up, 1: icon-down\r\n value = isDecrement ? value - step : value + step;\r\n }\r\n\r\n // 获取小数点后位数\r\n var decimals = function(step){\r\n var decimals = (step.toString().match(/\\.(\\d+$)/) || [])[1] || '';\r\n return decimals.length;\r\n };\r\n\r\n precision = precision >= 0 ? precision : Math.max(decimals(step), decimals(rawValue));\r\n\r\n if(!noAction){\r\n // 初始渲染时只处理数字精度\r\n if(!isInit){\r\n if(value <= min) value = min;\r\n if(value >= max) value = max;\r\n }\r\n if(precision) value = value.toFixed(precision);\r\n elem.val(value);\r\n }\r\n\r\n // 超出范围的样式\r\n var outOfRange = value < min || value > max;\r\n elem[outOfRange && !noAction ? 'addClass' : 'removeClass'](OUT_OF_RANGE);\r\n\r\n if(isInit) return;\r\n\r\n // 更新按钮状态\r\n var controlBtn = {\r\n increment: elem.next().find('.layui-icon-up'),\r\n decrement: elem.next().find('.layui-icon-down')\r\n }\r\n controlBtn.increment[(value >= max && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n controlBtn.decrement[(value <= min && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n }\r\n\r\n // 初始化输入框动态点缀\r\n elemForm.find('input[lay-affix],textarea[lay-affix]').each(function(){\r\n var othis = $(this);\r\n var affix = othis.attr('lay-affix');\r\n var CLASS_WRAP = 'layui-input-wrap';\r\n var CLASS_SUFFIX = 'layui-input-suffix';\r\n var CLASS_AFFIX = 'layui-input-affix';\r\n var disabled = othis.is('[disabled]') || othis.is('[readonly]');\r\n\r\n // 根据是否空值来显示或隐藏元素\r\n var showAffix = function(elem, value){\r\n elem = $(elem);\r\n if(!elem[0]) return;\r\n elem[$.trim(value) ? 'removeClass' : 'addClass'](HIDE);\r\n };\r\n\r\n // 渲染动态点缀内容\r\n var renderAffix = function(opts){\r\n opts = $.extend({}, (affixOptions[affix] || {\r\n value: affix\r\n }), opts, lay.options(othis[0]));\r\n var elemAffix = $('
                          ');\r\n var value = layui.isArray(opts.value) ? opts.value : [opts.value];\r\n var elemIcon = $(function(){\r\n var arr = [];\r\n layui.each(value, function(i, item){\r\n arr.push('');\r\n });\r\n return arr.join('');\r\n }());\r\n \r\n elemAffix.append(elemIcon); // 插入图标元素\r\n\r\n // 追加 className\r\n if(opts.split) elemAffix.addClass('layui-input-split');\r\n if(opts.className) elemAffix.addClass(opts.className);\r\n\r\n // 移除旧的元素\r\n var hasElemAffix = othis.next('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n // 是否在规定的容器中\r\n if(!othis.parent().hasClass(CLASS_WRAP)){\r\n othis.wrap('
                          ');\r\n }\r\n\r\n // 是否已经存在后缀元素\r\n var hasElemSuffix = othis.next('.'+ CLASS_SUFFIX);\r\n if(hasElemSuffix[0]){\r\n hasElemAffix = hasElemSuffix.find('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n hasElemSuffix.prepend(elemAffix);\r\n\r\n othis.css('padding-right', function(){\r\n var paddingRight = othis.closest('.layui-input-group')[0] \r\n ? 0 \r\n : hasElemSuffix.outerWidth();\r\n return paddingRight + elemAffix.outerWidth()\r\n });\r\n } else {\r\n elemAffix.addClass(CLASS_SUFFIX);\r\n othis.after(elemAffix);\r\n }\r\n\r\n opts.show === 'auto' && showAffix(elemAffix, othis.val());\r\n \r\n typeof opts.init === 'function' && opts.init.call(this, othis, opts);\r\n \r\n // 输入事件\r\n othis.on('input propertychange', function(){\r\n var value = this.value;\r\n opts.show === 'auto' && showAffix(elemAffix, value);\r\n });\r\n\r\n // 失去焦点事件\r\n othis.on('blur', function(){\r\n typeof opts.blur === 'function' && opts.blur.call(this, othis, opts);\r\n });\r\n \r\n // 点击动态后缀事件\r\n elemIcon.on('click', function(){\r\n var inputFilter = othis.attr('lay-filter');\r\n if($(this).hasClass(DISABLED)) return;\r\n \r\n typeof opts.click === 'function' && opts.click.call(this, othis, opts);\r\n \r\n // 对外事件\r\n layui.event.call(this, MOD_NAME, 'input-affix('+ inputFilter +')', {\r\n elem: othis[0],\r\n affix: affix,\r\n options: opts\r\n });\r\n });\r\n };\r\n \r\n // 动态点缀配置项\r\n var affixOptions = {\r\n eye: { // 密码显隐\r\n value: 'eye-invisible',\r\n click: function(elem, opts){ // 事件\r\n var SHOW_NAME = 'LAY_FORM_INPUT_AFFIX_SHOW';\r\n var isShow = elem.data(SHOW_NAME);\r\n \r\n elem.attr('type', isShow ? 'password' : 'text').data(SHOW_NAME, !isShow);\r\n\r\n renderAffix({\r\n value: isShow ? 'eye-invisible' : 'eye'\r\n });\r\n }\r\n },\r\n clear: { // 内容清除\r\n value: 'clear',\r\n click: function(elem){\r\n elem.val('').focus();\r\n showAffix($(this).parent(), null);\r\n },\r\n show: 'auto', // 根据输入框值是否存在来显示或隐藏点缀图标\r\n disabled: disabled // 跟随输入框禁用状态\r\n },\r\n number: { // 数字输入框\r\n value: ['up', 'down'],\r\n split: true,\r\n className: 'layui-input-number',\r\n disabled: othis.is('[disabled]'), // 跟随输入框禁用状态\r\n init: function(elem){\r\n handleInputNumber.call(this, elem, 'init')\r\n },\r\n click: function(elem){\r\n handleInputNumber.call(this, elem, 'click')\r\n },\r\n blur: function(elem){\r\n handleInputNumber.call(this, elem, 'blur')\r\n },\r\n }\r\n };\r\n \r\n renderAffix();\r\n });\r\n }\r\n \r\n // 下拉选择框\r\n ,select: function(elem){\r\n var TIPS = '请选择';\r\n var CLASS = 'layui-form-select';\r\n var TITLE = 'layui-select-title';\r\n var NONE = 'layui-select-none';\r\n var initValue = '';\r\n var thatInput;\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 隐藏 select\r\n var hide = function(e, clear){\r\n if(!$(e.target).parent().hasClass(TITLE) || clear){\r\n $('.'+CLASS).removeClass(CLASS+'ed ' + CLASS+'up');\r\n thatInput && initValue && thatInput.val(initValue);\r\n }\r\n thatInput = null;\r\n };\r\n \r\n // 各种事件\r\n var events = function(reElem, disabled, isSearch){\r\n var select = $(this);\r\n var title = reElem.find('.' + TITLE);\r\n var input = title.find('input');\r\n var dl = reElem.find('dl');\r\n var dds = dl.children('dd');\r\n var dts = dl.children('dt'); // select 分组dt元素\r\n var index = this.selectedIndex; // 当前选中的索引\r\n var nearElem; // select 组件当前选中的附近元素,用于辅助快捷键功能\r\n \r\n if(disabled) return;\r\n\r\n // 搜索项\r\n var laySearch = select.attr('lay-search');\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n reElem.addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\r\n nearElem = null;\r\n\r\n // 初始选中样式\r\n dds.removeClass(THIS);\r\n index >= 0 && dds.eq(index).addClass(THIS);\r\n\r\n // 上下定位识别\r\n if(top + dlHeight > $win.height() && top >= dlHeight){\r\n reElem.addClass(CLASS + 'up');\r\n }\r\n\r\n followScroll();\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n reElem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n nearElem = null;\r\n \r\n if(choose) return;\r\n \r\n notOption(input.val(), function(none){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n // 未查询到相关值\r\n if(none){\r\n initValue = $(select[0].options[selectedIndex]).html(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n\r\n // 如果有选中值,则将输入框纠正为该值。否则清空输入框\r\n input.val(initValue || '');\r\n }\r\n });\r\n };\r\n \r\n // 定位下拉滚动条\r\n var followScroll = function(){ \r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n if(!thisDd[0]) return;\r\n \r\n var posTop = thisDd.position().top;\r\n var dlHeight = dl.height();\r\n var ddHeight = thisDd.height();\r\n \r\n // 若选中元素在滚动条不可见底部\r\n if(posTop > dlHeight){\r\n dl.scrollTop(posTop + dl.scrollTop() - dlHeight + ddHeight - 5);\r\n }\r\n \r\n // 若选择元素在滚动条不可见顶部\r\n if(posTop < 0){\r\n dl.scrollTop(posTop + dl.scrollTop() - 5);\r\n }\r\n };\r\n \r\n // 点击标题区域\r\n title.on('click', function(e){\r\n reElem.hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\r\n hide(e, true), \r\n showDown()\r\n );\r\n dl.find('.'+NONE).remove();\r\n }); \r\n \r\n // 点击箭头获取焦点\r\n title.find('.layui-edge').on('click', function(){\r\n input.focus();\r\n });\r\n \r\n // select 中 input 键盘事件\r\n input.on('keyup', function(e){ // 键盘松开\r\n var keyCode = e.keyCode;\r\n \r\n // Tab键展开\r\n if(keyCode === 9){\r\n showDown();\r\n }\r\n }).on('keydown', function(e){ // 键盘按下\r\n var keyCode = e.keyCode;\r\n\r\n // Tab键隐藏\r\n if(keyCode === 9){\r\n hideDown();\r\n }\r\n \r\n // 标注 dd 的选中状态\r\n var setThisDd = function(prevNext, thisElem1){\r\n var nearDd, cacheNearElem\r\n e.preventDefault();\r\n\r\n // 得到当前队列元素 \r\n var thisElem = function(){\r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n // 如果是搜索状态,且按 Down 键,且当前可视 dd 元素在选中元素之前,\r\n // 则将当前可视 dd 元素的上一个元素作为虚拟的当前选中元素,以保证递归不中断\r\n if(dl.children('dd.'+ HIDE)[0] && prevNext === 'next'){\r\n var showDd = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')')\r\n ,firstIndex = showDd.eq(0).index();\r\n if(firstIndex >=0 && firstIndex < thisDd.index() && !showDd.hasClass(THIS)){\r\n return showDd.eq(0).prev()[0] ? showDd.eq(0).prev() : dl.children(':last');\r\n }\r\n }\r\n\r\n if(thisElem1 && thisElem1[0]){\r\n return thisElem1;\r\n }\r\n if(nearElem && nearElem[0]){\r\n return nearElem;\r\n }\r\n \r\n return thisDd;\r\n // return dds.eq(index);\r\n }();\r\n \r\n cacheNearElem = thisElem[prevNext](); // 当前元素的附近元素\r\n nearDd = thisElem[prevNext]('dd:not(.'+ HIDE +')'); // 当前可视元素的 dd 元素\r\n\r\n // 如果附近的元素不存在,则停止执行,并清空 nearElem\r\n if(!cacheNearElem[0]) return nearElem = null;\r\n \r\n // 记录附近的元素,让其成为下一个当前元素\r\n nearElem = thisElem[prevNext]();\r\n\r\n // 如果附近不是 dd ,或者附近的 dd 元素是禁用状态,则进入递归查找\r\n if((!nearDd[0] || nearDd.hasClass(DISABLED)) && nearElem[0]){\r\n return setThisDd(prevNext, nearElem);\r\n }\r\n \r\n nearDd.addClass(THIS).siblings().removeClass(THIS); // 标注样式\r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(keyCode === 38) setThisDd('prev'); // Up 键\r\n if(keyCode === 40) setThisDd('next'); // Down 键\r\n \r\n // Enter 键\r\n if(keyCode === 13){ \r\n e.preventDefault();\r\n dl.children('dd.'+THIS).trigger('click');\r\n }\r\n }).on('paste', function(){\r\n showDown();\r\n });\r\n \r\n // 检测值是否不属于 select 项\r\n var notOption = function(value, callback, origin){\r\n var num = 0;\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n\r\n // 是否区分大小写\r\n if(laySearch !== 'cs'){\r\n text = text.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[not ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this)\r\n ,thisDds = othis.nextUntil('dt').filter('dd') // 当前分组下的dd元素\r\n ,allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了\r\n othis[allHide ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n var none = num === dds.length;\r\n return callback(none), none;\r\n };\r\n \r\n // 搜索匹配\r\n var search = function(e){\r\n var value = this.value, keyCode = e.keyCode;\r\n \r\n if(keyCode === 9 || keyCode === 13 \r\n || keyCode === 37 || keyCode === 38 \r\n || keyCode === 39 || keyCode === 40\r\n ){\r\n return false;\r\n }\r\n \r\n notOption(value, function(none){\r\n if(none){\r\n dl.find('.'+NONE)[0] || dl.append('

                          无匹配项

                          ');\r\n } else {\r\n dl.find('.'+NONE).remove();\r\n }\r\n }, 'keyup');\r\n \r\n // 当搜索值清空时\r\n if(value === ''){\r\n // 取消选中项\r\n select.val('');\r\n dl.find('.'+ THIS).removeClass(THIS);\r\n (select[0].options[0] || {}).value || dl.children('dd:eq(0)').addClass(THIS);\r\n dl.find('.'+ NONE).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n // #1449: IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件\r\n var eventsType = 'input propertychange';\r\n if(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder')){\r\n eventsType = 'keyup';\r\n }\r\n input.on(eventsType, search).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n thatInput = input; // 当前的 select 中的 input 元素\r\n initValue = $(select[0].options[selectedIndex]).text(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n \r\n setTimeout(function(){\r\n notOption(input.val(), function(none){\r\n initValue || input.val(''); // none && !initValue\r\n }, 'blur');\r\n }, 200);\r\n });\r\n }\r\n\r\n // 选择\r\n dds.on('click', function(){\r\n var othis = $(this), value = othis.attr('lay-value');\r\n var filter = select.attr('lay-filter'); // 获取过滤器\r\n \r\n if(othis.hasClass(DISABLED)) return false;\r\n \r\n if(othis.hasClass('layui-select-tips')){\r\n input.val('');\r\n } else {\r\n input.val(othis.text());\r\n othis.addClass(THIS);\r\n }\r\n\r\n othis.siblings().removeClass(THIS);\r\n select.val(value).removeClass('layui-form-danger');\r\n\r\n layui.event.call(this, MOD_NAME, 'select('+ filter +')', {\r\n elem: select[0]\r\n ,value: value\r\n ,othis: reElem\r\n });\r\n\r\n hideDown(true);\r\n return false;\r\n });\r\n \r\n reElem.find('dl>dt').on('click', function(e){\r\n return false;\r\n });\r\n \r\n $(document).off('click', hide).on('click', hide); // 点击其它元素关闭 select\r\n }\r\n \r\n // 初始渲染 select 组件选项\r\n selects.each(function(index, select){\r\n var othis = $(this)\r\n ,hasRender = othis.next('.'+CLASS)\r\n ,disabled = this.disabled\r\n ,value = select.value\r\n ,selected = $(select.options[select.selectedIndex]) // 获取当前选中项\r\n ,optionsFirst = select.options[0];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n var isSearch = typeof othis.attr('lay-search') === 'string'\r\n ,placeholder = optionsFirst ? (\r\n optionsFirst.value ? TIPS : (optionsFirst.innerHTML || TIPS)\r\n ) : TIPS;\r\n\r\n // 替代元素\r\n var reElem = $(['
                          '\r\n ,'
                          '\r\n ,('') // 禁用状态\r\n ,'
                          '\r\n ,'
                          '\r\n ,function(options){\r\n var arr = [];\r\n layui.each(options, function(index, item){\r\n var tagName = item.tagName.toLowerCase();\r\n\r\n if(index === 0 && !item.value && tagName !== 'optgroup'){\r\n arr.push('
                          '+ $.trim(item.innerHTML || TIPS) +'
                          ');\r\n } else if(tagName === 'optgroup'){\r\n arr.push('
                          '+ item.label +'
                          '); \r\n } else {\r\n arr.push('
                          '+ $.trim(item.innerHTML) +'
                          ');\r\n }\r\n });\r\n arr.length === 0 && arr.push('
                          没有选项
                          ');\r\n return arr.join('');\r\n }(othis.find('*')) +'
                          '\r\n ,'
                          '].join(''));\r\n \r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n othis.after(reElem); \r\n events.call(this, reElem, disabled, isSearch);\r\n });\r\n }\r\n \r\n // 复选框/开关\r\n ,checkbox: function(elem){\r\n var CLASS = {\r\n \"checkbox\": ['layui-form-checkbox', 'layui-form-checked', 'checkbox'],\r\n \"switch\": ['layui-form-switch', 'layui-form-onswitch', 'switch'],\r\n SUBTRA: 'layui-icon-indeterminate'\r\n };\r\n var checks = elem || elemForm.find('input[type=checkbox]');\r\n // 风格\r\n var skins = {\r\n \"primary\": true, // 默认风格\r\n \"tag\": true, // 标签风格\r\n \"switch\": true // 开关风格\r\n };\r\n // 事件\r\n var events = function(reElem, RE_CLASS){\r\n var check = $(this);\r\n \r\n // 勾选\r\n reElem.on('click', function(){\r\n var othis = $(this);\r\n var filter = check.attr('lay-filter') // 获取过滤器\r\n var title = (\r\n othis.next('*[lay-checkbox]')[0] \r\n ? othis.next().html()\r\n : check.attr('title') || ''\r\n );\r\n var skin = check.attr('lay-skin') || 'primary';\r\n\r\n // 开关\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n\r\n // 禁用\r\n if(check[0].disabled) return;\r\n \r\n // 半选\r\n if (check[0].indeterminate) {\r\n check[0].indeterminate = false;\r\n reElem.find('.'+ CLASS.SUBTRA).removeClass(CLASS.SUBTRA).addClass('layui-icon-ok');\r\n }\r\n\r\n // 开关\r\n check[0].checked ? (\r\n check[0].checked = false,\r\n reElem.removeClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[1])\r\n ) : (\r\n check[0].checked = true,\r\n reElem.addClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[0])\r\n );\r\n \r\n // 事件\r\n layui.event.call(check[0], MOD_NAME, RE_CLASS[2]+'('+ filter +')', {\r\n elem: check[0],\r\n value: check[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 遍历复选框\r\n checks.each(function(index, check){\r\n var othis = $(this);\r\n var skin = othis.attr('lay-skin') || 'primary';\r\n var title = util.escape($.trim(check.title || function(){ // 向下兼容 lay-text 属性\r\n return check.title = othis.attr('lay-text') || '';\r\n }()));\r\n var disabled = this.disabled;\r\n\r\n // if(!skins[skin]) skin = 'primary'; // 若非内置风格,则强制为默认风格\r\n var RE_CLASS = CLASS[skin] || CLASS.checkbox;\r\n\r\n // 替代元素\r\n var hasRender = othis.next('.' + RE_CLASS[0]);\r\n hasRender[0] && hasRender.remove(); // 若已经渲染,则 Rerender\r\n \r\n // 若存在标题模板,则优先读取标题模板\r\n if(othis.next('[lay-checkbox]')[0]){\r\n title = othis.next().html() || '';\r\n }\r\n\r\n // 若为开关,则对 title 进行分隔解析\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n // 替代元素\r\n var reElem = $(['
                          ',\r\n function(){ // 不同风格的内容\r\n var type = {\r\n // 复选框\r\n \"checkbox\": [\r\n (title[0] ? ('
                          '+ title[0] +'
                          ') : (skin === 'primary' ? '' : '
                          ')),\r\n ''\r\n ].join(''),\r\n // 开关\r\n \"switch\": '
                          '+ ((check.checked ? title[0] : title[1]) || '') +'
                          '\r\n };\r\n return type[skin] || type['checkbox'];\r\n }(),\r\n '
                          '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem, RE_CLASS);\r\n });\r\n }\r\n \r\n // 单选框\r\n ,radio: function(elem){\r\n var CLASS = 'layui-form-radio';\r\n var ICON = ['layui-icon-radio', 'layui-icon-circle'];\r\n var radios = elem || elemForm.find('input[type=radio]');\r\n\r\n // 事件\r\n var events = function(reElem){\r\n var radio = $(this);\r\n var ANIM = 'layui-anim-scaleSpring';\r\n \r\n reElem.on('click', function(){\r\n var name = radio[0].name, forms = radio.parents(ELEM);\r\n var filter = radio.attr('lay-filter'); // 获取过滤器\r\n var sameRadio = forms.find('input[name='+ name.replace(/(\\.|#|\\[|\\])/g, '\\\\$1') +']'); // 找到相同name的兄弟\r\n \r\n if(radio[0].disabled) return;\r\n \r\n layui.each(sameRadio, function(){\r\n var next = $(this).next('.' + CLASS);\r\n this.checked = false;\r\n next.removeClass(CLASS + 'ed');\r\n next.children('.layui-icon').removeClass(ANIM + ' ' + ICON[0]).addClass(ICON[1]);\r\n });\r\n \r\n radio[0].checked = true;\r\n reElem.addClass(CLASS + 'ed');\r\n reElem.children('.layui-icon').addClass(ANIM + ' ' + ICON[0]);\r\n \r\n layui.event.call(radio[0], MOD_NAME, 'radio('+ filter +')', {\r\n elem: radio[0],\r\n value: radio[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 初始渲染\r\n radios.each(function(index, radio){\r\n var othis = $(this), hasRender = othis.next('.' + CLASS);\r\n var disabled = this.disabled;\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n \r\n // 替代元素\r\n var reElem = $(['
                          ', // 禁用状态\r\n '',\r\n '
                          '+ function(){\r\n var title = util.escape(radio.title || '');\r\n if(othis.next('[lay-radio]')[0]){\r\n title = othis.next().html();\r\n }\r\n return title;\r\n }() +'
                          ',\r\n '
                          '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem);\r\n });\r\n }\r\n };\r\n\r\n // 执行所有渲染项\r\n var renderItem = function(){\r\n layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n\r\n // jquery 对象\r\n if (layui.type(type) === 'object') {\r\n // 若对象为表单域容器\r\n if($(type).is(ELEM)){\r\n elemForm = $(type);\r\n renderItem();\r\n } else { // 对象为表单项\r\n type.each(function (index, item) {\r\n var elem = $(item);\r\n if (!elem.closest(ELEM).length) {\r\n return; // 若不在 layui-form 容器中直接跳过\r\n }\r\n if (item.tagName === 'SELECT') {\r\n items['select'](elem);\r\n } else if (item.tagName === 'INPUT') {\r\n var itemType = item.type;\r\n if (itemType === 'checkbox' || itemType === 'radio') {\r\n items[itemType](elem);\r\n } else {\r\n items['input'](elem);\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n type ? (\r\n items[type] ? items[type]() : hint.error('不支持的 \"'+ type + '\" 表单渲染')\r\n ) : renderItem();\r\n }\r\n return that;\r\n };\r\n\r\n /**\r\n * 主动触发验证\r\n * @param {(string|HTMLElement|JQuery)} elem - 要验证的区域表单元素\r\n * @return {boolean} 返回结果。若验证通过,返回 `true`, 否则返回 `false`\r\n */\r\n Form.prototype.validate = function(elem) {\r\n var that = this;\r\n var intercept; // 拦截标识\r\n var options = that.config; // 获取全局配置项\r\n var verify = options.verify; // 验证规则\r\n var DANGER = 'layui-form-danger'; // 警示样式\r\n\r\n elem = $(elem);\r\n\r\n // 节点不存在可视为 true\r\n if (!elem[0]) return !0;\r\n\r\n // 若节点不存在特定属性,则查找容器内有待验证的子节点\r\n if (elem.attr('lay-verify') === undefined) {\r\n // 若校验的是一个不带验证规则的容器,校验内部的 lay-verify 节点\r\n if (that.validate(elem.find('*[lay-verify]')) === false) {\r\n return false;\r\n }\r\n }\r\n\r\n // 开始校验\r\n layui.each(elem, function(_, item) {\r\n var othis = $(this);\r\n var verifyStr = othis.attr('lay-verify') || '';\r\n var vers = verifyStr.split('|');\r\n var verType = othis.attr('lay-vertype'); // 提示方式\r\n var value = $.trim(othis.val());\r\n\r\n othis.removeClass(DANGER); // 移除警示样式\r\n \r\n // 遍历元素绑定的验证规则\r\n layui.each(vers, function(_, thisVer) {\r\n var verst; // 校验结果\r\n var errorText = ''; // 错误提示文本\r\n var rule = verify[thisVer]; // 获取校验规则\r\n \r\n // 匹配验证规则\r\n if (rule) {\r\n verst = typeof rule === 'function'\r\n ? errorText = rule(value, item) \r\n : !rule[0].test(value); // 兼容早期数组中的正则写法\r\n \r\n // 是否属于美化替换后的表单元素\r\n var isForm2Elem = item.tagName.toLowerCase() === 'select' || (\r\n /^(checkbox|radio)$/.test(item.type)\r\n );\r\n \r\n errorText = errorText || rule[1];\r\n \r\n // 获取自定义必填项提示文本\r\n if (thisVer === 'required') {\r\n errorText = othis.attr('lay-reqtext') || errorText;\r\n }\r\n \r\n // 若命中校验规则\r\n if (verst) {\r\n // 提示层风格\r\n if (verType === 'tips') {\r\n layer.tips(errorText, function(){\r\n if(typeof othis.attr('lay-ignore') !== 'string'){\r\n if(isForm2Elem){\r\n return othis.next();\r\n }\r\n }\r\n return othis;\r\n }(), {tips: 1});\r\n } else if(verType === 'alert') {\r\n layer.alert(errorText, {title: '提示', shadeClose: true});\r\n } \r\n // 若返回的为字符或数字,则自动弹出默认提示框;否则由 verify 方法中处理提示\r\n else if(/\\b(string|number)\\b/.test(typeof errorText)) {\r\n layer.msg(errorText, {icon: 5, shift: 6});\r\n }\r\n\r\n setTimeout(function() {\r\n (isForm2Elem ? othis.next().find('input') : item).focus();\r\n }, 7);\r\n \r\n othis.addClass(DANGER);\r\n return intercept = true;\r\n }\r\n }\r\n });\r\n\r\n if (intercept) return intercept;\r\n });\r\n\r\n return !intercept;\r\n };\r\n\r\n // 提交表单并校验\r\n var submit = Form.prototype.submit = function(filter, callback){\r\n var field = {}; // 字段集合\r\n var button = $(this); // 当前触发的按钮\r\n\r\n // 表单域 lay-filter 属性值\r\n var layFilter = typeof filter === 'string' \r\n ? filter \r\n : button.attr('lay-filter');\r\n\r\n // 当前所在表单域\r\n var elem = this.getFormElem \r\n ? this.getFormElem(layFilter) \r\n : button.parents(ELEM).eq(0);\r\n\r\n // 获取需要校验的元素\r\n var verifyElem = elem.find('*[lay-verify]');\r\n\r\n // 开始校验\r\n if(!form.validate(verifyElem)) return false;\r\n\r\n // 获取当前表单值\r\n field = form.getValue(null, elem);\r\n\r\n // 返回的参数\r\n var params = {\r\n elem: this.getFormElem ? (window.event && window.event.target) : this // 触发事件的对象\r\n ,form: this.getFormElem ? elem[0] : button.parents('form')[0] // 当前所在的 form 元素,如果存在的话\r\n ,field: field // 当前表单数据\r\n };\r\n \r\n // 回调\r\n typeof callback === 'function' && callback(params);\r\n \r\n // 事件\r\n return layui.event.call(this, MOD_NAME, 'submit('+ layFilter +')', params);\r\n };\r\n \r\n var form = new Form();\r\n var $dom = $(document);\r\n var $win = $(window);\r\n \r\n // 初始自动完成渲染\r\n $(function(){\r\n form.render();\r\n });\r\n \r\n // 表单 reset 重置渲染\r\n $dom.on('reset', ELEM, function(){\r\n var filter = $(this).attr('lay-filter');\r\n setTimeout(function(){\r\n form.render(null, filter);\r\n }, 50);\r\n });\r\n \r\n // 表单提交事件\r\n $dom.on('submit', ELEM, submit)\r\n .on('click', '*[lay-submit]', submit);\r\n \r\n exports(MOD_NAME, form);\r\n});\r\n\r\n \r\n","/**\r\n * layui.table\r\n * 表格组件\r\n */\r\n\r\nlayui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var laytpl = layui.laytpl;\r\n var laypage = layui.laypage;\r\n var layer = layui.layer;\r\n var form = layui.form;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // api\r\n var table = {\r\n config: { // 全局配置项\r\n checkName: 'LAY_CHECKED', // 是否选中状态的特定字段名\r\n indexName: 'LAY_INDEX', // 初始下标索引名,用于恢复当前页表格排序\r\n numbersName: 'LAY_NUM', // 序号\r\n disabledName: 'LAY_DISABLED' // 禁用状态的特定字段名\r\n },\r\n cache: {}, // 数据缓存\r\n index: layui.table ? (layui.table.index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisTable = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function(options, deep){\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function(options, deep){\r\n table.reloadData(id, options, deep);\r\n },\r\n setColsWidth: function(){\r\n that.setColsWidth.call(that);\r\n },\r\n resize: function(){ // 重置表格尺寸/结构\r\n that.resize.call(that);\r\n }\r\n }\r\n };\r\n\r\n // 获取当前实例\r\n var getThisTable = function(id){\r\n var that = thisTable.that[id];\r\n if(!that) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that || null;\r\n };\r\n\r\n // 获取当前实例配置项\r\n var getThisTableConfig = function(id){\r\n var config = thisTable.config[id];\r\n if(!config) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return config || null;\r\n };\r\n\r\n // lay 函数可以处理 Selector,HTMLElement,JQuery 类型\r\n // 无效的 CSS 选择器字符串,会抛出 SyntaxError 异常,此时直接返回 laytpl 模板字符串\r\n var resolveTplStr = function(templet){\r\n try{ \r\n return lay(templet).html();\r\n }catch(err){\r\n return templet;\r\n }\r\n }\r\n\r\n // 解析自定义模板数据\r\n var parseTempData = function(obj){\r\n obj = obj || {};\r\n\r\n var options = this.config || {};\r\n var item3 = obj.item3; // 表头数据\r\n var content = obj.content; // 原始内容\r\n if (item3.type === 'numbers') content = obj.tplData[table.config.numbersName];\r\n\r\n // 是否编码 HTML\r\n var escaped = 'escape' in item3 ? item3.escape : options.escape;\r\n if(escaped) content = util.escape(content);\r\n\r\n // 获取模板\r\n var templet = obj.text && item3.exportTemplet || (item3.templet || item3.toolbar);\r\n\r\n // 获取模板内容\r\n if(templet){\r\n content = typeof templet === 'function'\r\n ? templet.call(item3, obj.tplData, obj.obj)\r\n : laytpl(resolveTplStr(templet) || String(content)).render($.extend({\r\n LAY_COL: item3\r\n }, obj.tplData));\r\n }\r\n\r\n // 是否只返回文本\r\n return obj.text ? $('
                          '+ content +'
                          ').text() : content;\r\n };\r\n\r\n // 字符\r\n var MOD_NAME = 'table';\r\n var ELEM = '.layui-table';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var HIDE_V = 'layui-hide-v';\r\n var DISABLED = 'layui-disabled';\r\n var NONE = 'layui-none';\r\n\r\n var ELEM_VIEW = 'layui-table-view';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_INIT = '.layui-table-init';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_TOTAL = '.layui-table-total';\r\n var ELEM_PAGE = '.layui-table-page';\r\n var ELEM_PAGE_VIEW = '.layui-table-pageview';\r\n var ELEM_SORT = '.layui-table-sort';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n var ELEM_EDIT = 'layui-table-edit';\r\n var ELEM_HOVER = 'layui-table-hover';\r\n var ELEM_GROUP = 'laytable-cell-group';\r\n var ELEM_COL_SPECIAL = 'layui-table-col-special';\r\n var ELEM_TOOL_PANEL = 'layui-table-tool-panel';\r\n var ELEM_EXPAND = 'layui-table-expanded'\r\n\r\n var DATA_MOVE_NAME = 'LAY_TABLE_MOVE_DICT';\r\n\r\n // thead 区域模板\r\n var TPL_HEADER = function(options){\r\n var rowCols = '{{#var colspan = layui.type(item2.colspan2) === \\'number\\' ? item2.colspan2 : item2.colspan; if(colspan){}} colspan=\"{{=colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{=item2.rowspan}}\"{{#}}}';\r\n\r\n options = options || {};\r\n return ['
                        '\r\n ,''\r\n ,'{{# layui.each(d.data.cols, function(i1, item1){ }}'\r\n ,''\r\n ,'{{# layui.each(item1, function(i2, item2){ }}'\r\n ,'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}'\r\n ,'{{# if(item2.fixed === \"right\"){ right = true; } }}'\r\n ,function(){\r\n if(options.fixed && options.fixed !== 'right'){\r\n return '{{# if(item2.fixed && item2.fixed !== \"right\"){ }}';\r\n }\r\n if(options.fixed === 'right'){\r\n return '{{# if(item2.fixed === \"right\"){ }}';\r\n }\r\n return '';\r\n }()\r\n ,'{{# var isSort = !(item2.colGroup) && item2.sort; }}'\r\n ,''\r\n ,(options.fixed ? '{{# }; }}' : '')\r\n ,'{{# }); }}'\r\n ,''\r\n ,'{{# }); }}'\r\n ,''\r\n ,'
                        \\' + item2.title + \\'\\').text() }}\"{{# } }}>'\r\n ,'
                        '\r\n ,'{{# if(item2.type === \"checkbox\"){ }}' //复选框\r\n ,''\r\n ,'{{# } else { }}'\r\n ,'{{-item2.title||\"\"}}'\r\n ,'{{# if(isSort){ }}'\r\n ,''\r\n ,'{{# } }}'\r\n ,'{{# } }}'\r\n ,'
                        '\r\n ,'
                        '].join('');\r\n };\r\n\r\n // tbody 区域模板\r\n var TPL_BODY = [''\r\n ,''\r\n ,'
                        '].join('');\r\n\r\n // 主模板\r\n var TPL_MAIN = [\r\n ,'{{# if(d.data.toolbar){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# } }}'\r\n\r\n ,'
                        '\r\n ,'{{# if(d.data.loading){ }}'\r\n ,'
                        '\r\n ,''\r\n ,'
                        '\r\n ,'{{# } }}'\r\n\r\n ,'{{# var left, right; }}'\r\n ,'
                        '\r\n ,TPL_HEADER()\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_BODY\r\n ,'
                        '\r\n\r\n ,'{{# if(left){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_HEADER({fixed: true})\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_BODY\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# }; }}'\r\n\r\n ,'{{# if(right){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_HEADER({fixed: 'right'})\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_BODY\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# }; }}'\r\n ,'
                        '\r\n\r\n ,'{{# if(d.data.totalRow){ }}'\r\n ,'
                        '\r\n ,''\r\n ,''\r\n , '
                        Total
                        '\r\n ,'
                        '\r\n ,'{{# } }}'\r\n\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ].join('');\r\n\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n\r\n // constructor\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++table.index;\r\n that.config = $.extend({}, that.config, table.config, options);\r\n that.render();\r\n };\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n limit: 10, // 每页显示的数量\r\n loading: true, // 请求数据时,是否显示 loading\r\n escape: true, // 是否开启 HTML 编码功能,即转义 html 原文\r\n cellMinWidth: 60, // 所有单元格默认最小宽度\r\n cellMaxWidth: Number.MAX_VALUE, // 所有单元格默认最大宽度\r\n editTrigger: 'click', // 单元格编辑的事件触发方式\r\n defaultToolbar: ['filter', 'exports', 'print'], // 工具栏右侧图标\r\n defaultContextmenu: true, // 显示默认上下文菜单\r\n autoSort: true, // 是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n text: {\r\n none: '无数据'\r\n },\r\n cols: []\r\n };\r\n\r\n // 表格渲染\r\n Class.prototype.render = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.elem = $(options.elem);\r\n options.where = options.where || {};\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n var id = options.id = 'id' in options ? options.id : (\r\n options.elem.attr('id') || that.index\r\n );\r\n\r\n thisTable.that[id] = that; // 记录当前实例对象\r\n thisTable.config[id] = options; // 记录当前实例配置项\r\n\r\n //请求参数的自定义格式\r\n options.request = $.extend({\r\n pageName: 'page',\r\n limitName: 'limit'\r\n }, options.request)\r\n\r\n // 响应数据的自定义格式\r\n options.response = $.extend({\r\n statusName: 'code', //规定数据状态的字段名称\r\n statusCode: 0, //规定成功的状态码\r\n msgName: 'msg', //规定状态信息的字段名称\r\n dataName: 'data', //规定数据总数的字段名称\r\n totalRowName: 'totalRow', //规定数据统计的字段名称\r\n countName: 'count'\r\n }, options.response);\r\n\r\n //如果 page 传入 laypage 对象\r\n if(options.page !== null && typeof options.page === 'object'){\r\n options.limit = options.page.limit || options.limit;\r\n options.limits = options.page.limits || options.limits;\r\n that.page = options.page.curr = options.page.curr || 1;\r\n delete options.page.elem;\r\n delete options.page.jump;\r\n }\r\n\r\n if(!options.elem[0]) return that;\r\n\r\n // 若元素未设 lay-filter 属性,则取实例 id 值\r\n if(!options.elem.attr('lay-filter')){\r\n options.elem.attr('lay-filter', options.id);\r\n }\r\n\r\n // 仅重载数据\r\n if(type === 'reloadData'){\r\n // 请求数据\r\n return that.pullData(that.page, {\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 初始化索引\r\n options.index = that.index;\r\n that.key = options.id || options.index;\r\n\r\n // 初始化一些其他参数\r\n that.setInit();\r\n\r\n // 高度铺满:full-差距值\r\n if(options.height && /^full-.+$/.test(options.height)){\r\n that.fullHeightGap = options.height.split('-')[1];\r\n options.height = _WIN.height() - (parseFloat(that.fullHeightGap) || 0);\r\n } else if (options.height && /^#\\w+\\S*-.+$/.test(options.height)) {\r\n var parentDiv = options.height.split(\"-\");\r\n that.parentHeightGap = parentDiv.pop();\r\n that.parentDiv = parentDiv.join(\"-\");\r\n options.height = $(that.parentDiv).height() - (parseFloat(that.parentHeightGap) || 0);\r\n } else if (typeof options.height === \"function\"){\r\n that.customHeightFunc = options.height;\r\n options.height = that.customHeightFunc();\r\n }\r\n\r\n // 开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n // 主容器\r\n var reElem = that.elem = $('
                        ');\r\n\r\n // 添加 className\r\n reElem.addClass(function(){\r\n var arr = [\r\n ELEM_VIEW,\r\n ELEM_VIEW +'-'+ that.index,\r\n 'layui-form',\r\n 'layui-border-box'\r\n ];\r\n if(options.className) arr.push(options.className);\r\n return arr.join(' ');\r\n }()).attr({\r\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\r\n 'lay-id': options.id,\r\n 'style': function(){\r\n var arr = [];\r\n if(options.width) arr.push('width:'+ options.width + 'px;');\r\n // if(options.height) arr.push('height:'+ options.height + 'px;');\r\n return arr.join('')\r\n }()\r\n }).html(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index //索引\r\n }));\r\n\r\n // 初始化样式\r\n that.renderStyle();\r\n\r\n // 生成替代元素\r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则 Rerender\r\n othis.after(reElem);\r\n\r\n // 各级容器\r\n that.layTool = reElem.find(ELEM_TOOL);\r\n that.layBox = reElem.find(ELEM_BOX);\r\n that.layHeader = reElem.find(ELEM_HEADER);\r\n that.layMain = reElem.find(ELEM_MAIN);\r\n that.layBody = reElem.find(ELEM_BODY);\r\n that.layFixed = reElem.find(ELEM_FIXED);\r\n that.layFixLeft = reElem.find(ELEM_FIXL);\r\n that.layFixRight = reElem.find(ELEM_FIXR);\r\n that.layTotal = reElem.find(ELEM_TOTAL);\r\n that.layPage = reElem.find(ELEM_PAGE);\r\n\r\n // 初始化头部工具栏\r\n that.renderToolbar();\r\n\r\n // 初始化底部分页栏\r\n that.renderPagebar();\r\n\r\n // 让表格平铺\r\n that.fullSize();\r\n\r\n that.pullData(that.page); // 请求数据\r\n that.events(); // 事件\r\n };\r\n\r\n // 根据列类型,定制化参数\r\n Class.prototype.initOpts = function(item){\r\n var that = this\r\n var options = that.config;\r\n var initWidth = {\r\n checkbox: 50,\r\n radio: 50,\r\n space: 30,\r\n numbers: 60\r\n };\r\n\r\n // 让 type 参数兼容旧版本\r\n if(item.checkbox) item.type = \"checkbox\";\r\n if(item.space) item.type = \"space\";\r\n if(!item.type) item.type = \"normal\";\r\n\r\n if(item.type !== \"normal\"){\r\n item.unresize = true;\r\n item.width = item.width || initWidth[item.type];\r\n }\r\n };\r\n\r\n //初始化一些参数\r\n Class.prototype.setInit = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.clientWidth = options.width || function(){ //获取容器宽度\r\n //如果父元素宽度为0(一般为隐藏元素),则继续查找上层元素,直到找到真实宽度为止\r\n var getWidth = function(parent){\r\n var width, isNone;\r\n parent = parent || options.elem.parent()\r\n width = parent.width();\r\n try {\r\n isNone = parent.css('display') === 'none';\r\n } catch(e){}\r\n if(parent[0] && (!width || isNone)) return getWidth(parent.parent());\r\n return width;\r\n };\r\n return getWidth();\r\n }();\r\n\r\n if(type === 'width') return options.clientWidth;\r\n // 初始化高度配置,如果设置了最高高度,以最高高度形式为准\r\n options.height = options.maxHeight || options.height;\r\n\r\n // 初始化 css 参数\r\n if(options.css && options.css.indexOf(ELEM_VIEW) === -1){\r\n var css = options.css.split('}');\r\n layui.each(css, function(index, value){\r\n if(value){\r\n css[index] = '.'+ ELEM_VIEW + '-'+ that.index + ' ' + value;\r\n }\r\n });\r\n options.css = css.join('}');\r\n }\r\n\r\n // 封装对 col 的配置处理\r\n var initChildCols = function (i1, item1, i2, item2) {\r\n //如果列参数为空,则移除\r\n if (!item2) {\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n item2.key = [options.index, i1, i2].join('-');\r\n item2.colspan = item2.colspan || 0;\r\n item2.rowspan = item2.rowspan || 0;\r\n\r\n //根据列类型,定制化参数\r\n that.initOpts(item2);\r\n\r\n //设置列的父列索引\r\n //如果是组合列,则捕获对应的子列\r\n var indexChild = i1 + (parseInt(item2.rowspan) || 1);\r\n if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列\r\n item2.colGroup = true;\r\n var childIndex = 0;\r\n layui.each(options.cols[indexChild], function (i22, item22) {\r\n //如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n\r\n item22.HAS_PARENT = true;\r\n item22.parentKey = [options.index, i1, i2].join('-') // i1 + '-' + i2;\r\n childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);\r\n initChildCols(indexChild, options.cols[indexChild], i22, item22);\r\n });\r\n } else {\r\n item2.colGroup = false;\r\n }\r\n item2.hide = item2.hide && !item2.colGroup || false; // 初始化中中间节点的hide信息不做处理,否则会出错,如果需要必须将其子节点也都同步成hide\r\n };\r\n\r\n // 初始化列参数\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if (i1) {\r\n delete item2.HAS_PARENT; // 去掉临时的计数排除标识,避免有新字段插入的时候重新计算被跳过导致下标出错的问题\r\n } else {\r\n initChildCols(i1, item1, i2, item2); // 只解析顶层节点由递归完成解析\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n // 初始化样式\r\n Class.prototype.renderStyle = function() {\r\n var that = this;\r\n var options = that.config;\r\n var index = that.index;\r\n var text = [];\r\n\r\n // 单元格宽度\r\n layui.each(options.cols, function(i1, item1) {\r\n layui.each(item1, function(i2, item2) {\r\n var key = [index, i1, i2].join('-');\r\n var val = ['width: ', (item2.width || options.cellMinWidth), 'px'].join('');\r\n text.push('.laytable-cell-'+ key +'{'+ val +'}');\r\n });\r\n });\r\n\r\n // 自定义行样式\r\n (function (lineStyle) {\r\n if (!lineStyle) return;\r\n var trClassName = '.layui-table-view-'+ index +' .layui-table-body .layui-table tr';\r\n var rules = lineStyle.split(';');\r\n var cellMaxHeight = 'none';\r\n\r\n // 计算单元格最大高度\r\n layui.each(rules, function(i, rule) {\r\n rule = rule.split(':');\r\n if (rule[0] === 'height') {\r\n var val = parseFloat(rule[1]);\r\n if (!isNaN(val)) cellMaxHeight = (val - 1) + 'px';\r\n return true;\r\n }\r\n });\r\n\r\n // 多行相关样式\r\n layui.each([\r\n '{'+ lineStyle +'}',\r\n '.layui-table-cell{height: auto; max-height: '+ cellMaxHeight +'; white-space: normal; text-overflow: clip;}',\r\n '> td:hover > .layui-table-cell{overflow: auto;}'\r\n ].concat(\r\n device.ie ? [\r\n '.layui-table-edit{height: '+ cellMaxHeight +';}',\r\n 'td[data-edit]:hover:after{height: '+ cellMaxHeight +';}'\r\n ] : []\r\n ), function(i, val) {\r\n val && text.push(trClassName + ' ' + val);\r\n });\r\n })(options.lineStyle);\r\n\r\n // 自定义 css 属性\r\n if (options.css) text.push(options.css);\r\n\r\n // 生成 style\r\n lay.style({\r\n target: that.elem[0],\r\n text: text.join(''),\r\n id: 'DF-table-'+ index\r\n });\r\n };\r\n\r\n // 初始工具栏\r\n Class.prototype.renderToolbar = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n // 添加工具栏左侧模板\r\n var leftDefaultTemp = [\r\n '
                        ',\r\n '
                        ',\r\n '
                        '\r\n ].join('');\r\n var elemToolTemp = that.layTool.find('.layui-table-tool-temp');\r\n\r\n if(options.toolbar === 'default'){\r\n elemToolTemp.html(leftDefaultTemp);\r\n } else if(typeof options.toolbar === 'string'){\r\n var toolbarHtml = $(options.toolbar).html() || '';\r\n toolbarHtml && elemToolTemp.html(\r\n laytpl(toolbarHtml).render(options)\r\n );\r\n }\r\n\r\n // 添加工具栏右侧面板\r\n var layout = {\r\n filter: {\r\n title: '筛选列',\r\n layEvent: 'LAYTABLE_COLS',\r\n icon: 'layui-icon-cols'\r\n },\r\n exports: {\r\n title: '导出',\r\n layEvent: 'LAYTABLE_EXPORT',\r\n icon: 'layui-icon-export'\r\n },\r\n print: {\r\n title: '打印',\r\n layEvent: 'LAYTABLE_PRINT',\r\n icon: 'layui-icon-print'\r\n }\r\n }, iconElem = [];\r\n\r\n if(typeof options.defaultToolbar === 'object'){\r\n layui.each(options.defaultToolbar, function(i, item){\r\n var thisItem = typeof item === 'string' ? layout[item] : item;\r\n if(thisItem){\r\n iconElem.push('
                        '\r\n +''\r\n +'
                        ');\r\n }\r\n });\r\n }\r\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\r\n };\r\n\r\n // 分页栏\r\n Class.prototype.renderPagebar = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var layPagebar = that.layPagebar = $('
                        ');\r\n\r\n // 开启分页栏自定义模板\r\n if(options.pagebar){\r\n var pagebarHtml = $(options.pagebar).html() || '';\r\n pagebarHtml && layPagebar.append(laytpl(pagebarHtml).render(options));\r\n that.layPage.append(layPagebar);\r\n }\r\n };\r\n\r\n // 同步表头父列的相关值\r\n Class.prototype.setParentCol = function(hide, parentKey){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var parentTh = that.layHeader.find('th[data-key=\"'+ parentKey +'\"]'); // 获取父列元素\r\n var parentColspan = parseInt(parentTh.attr('colspan')) || 0;\r\n\r\n if(parentTh[0]){\r\n var arrParentKey = parentKey.split('-');\r\n var getThisCol = options.cols[arrParentKey[1]][arrParentKey[2]];\r\n\r\n hide ? parentColspan-- : parentColspan++;\r\n\r\n parentTh.attr('colspan', parentColspan);\r\n parentTh[parentColspan ? 'removeClass' : 'addClass'](HIDE); // 如果子列显示,父列必然需要显示\r\n\r\n getThisCol.colspan2 = parentColspan; // 更新实际的 colspan 数\r\n getThisCol.hide = parentColspan < 1; // 同步 hide 参数\r\n\r\n // 递归,继续往上查询是否有父列\r\n var nextParentKey = parentTh.data('parentkey');\r\n nextParentKey && that.setParentCol(hide, nextParentKey);\r\n }\r\n };\r\n\r\n // 多级表头补丁\r\n Class.prototype.setColsPatch = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 同步表头父列的相关值\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if(item2.hide){\r\n that.setParentCol(item2.hide, item2.parentKey);\r\n }\r\n });\r\n });\r\n };\r\n\r\n // 设置组合表头的最大宽度\r\n Class.prototype.setGroupWidth = function(th){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.cols.length <= 1) return;\r\n\r\n // 获取表头组合\r\n var groups = that.layHeader.find((\r\n // 根据当前活动的表头 parentkey 属性查找其组合表头\r\n th ? ('th[data-key='+ th.data('parentkey') +']>') : ''\r\n ) + '.' + ELEM_GROUP); // 若无指向当前活动表头,则自下而上获取所有组合表头\r\n\r\n groups.css('width', 0);\r\n layui.each(groups.get().reverse(), function(){\r\n var othis = $(this);\r\n var key = othis.parent().data('key');\r\n var maxWidth = 0;\r\n\r\n that.layHeader.eq(0).find('th[data-parentkey='+ key +']').width(function(i, width){\r\n var oTh = $(this);\r\n if(oTh.hasClass(HIDE)) return;\r\n width > 0 && (maxWidth += width);\r\n });\r\n\r\n // 给组合表头赋值最大宽度\r\n if(maxWidth) othis.css('max-width', maxWidth - 1);\r\n\r\n // 若当前活动的组合表头仍存在上级,则继续向上设置\r\n if(th && othis.parent().data('parentkey')){\r\n that.setGroupWidth(othis.parent());\r\n }\r\n });\r\n groups.css('width', 'auto');\r\n };\r\n\r\n // 动态分配列宽\r\n Class.prototype.setColsWidth = function(){\r\n var that = this;\r\n var options = that.config;\r\n var colNums = 0; // 列个数\r\n var autoColNums = 0; // 自动列宽的列个数\r\n var autoWidth = 0; // 自动列分配的宽度\r\n var countWidth = 0; // 所有列总宽度和\r\n var cntrWidth = that.setInit('width');\r\n\r\n // 统计列个数\r\n that.eachCols(function(i, item){\r\n item.hide || colNums++;\r\n });\r\n\r\n // 减去边框差和滚动条宽\r\n cntrWidth = cntrWidth - function(){\r\n return (options.skin === 'line' || options.skin === 'nob') ? 2 : colNums + 1;\r\n }() - that.getScrollWidth(that.layMain[0]) - 1;\r\n\r\n // 计算自动分配的宽度\r\n var getAutoWidth = function(back){\r\n // 遍历所有列\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n var width = 0;\r\n var minWidth = item2.minWidth || options.cellMinWidth; // 最小宽度\r\n var maxWidth = item2.maxWidth || options.cellMaxWidth; // 最大宽度\r\n\r\n if(!item2){\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n if(item2.colGroup || item2.hide) return;\r\n\r\n if(!back){\r\n width = item2.width || 0;\r\n if(/\\d+%$/.test(width)){ // 列宽为百分比\r\n width = Math.floor((parseFloat(width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n } else if(!width){ // 列宽未填写\r\n item2.width = width = 0;\r\n autoColNums++;\r\n } else if(item2.type === 'normal'){\r\n // 若 width 小于 minWidth, 则将 width 值自动设为 minWidth 的值\r\n width < minWidth && (item2.width = width = minWidth);\r\n // 若 width 大于 maxWidth, 则将 width 值自动设为 maxWidth 的值\r\n width > maxWidth && (item2.width = width = maxWidth);\r\n }\r\n } else if(autoWidth && autoWidth < minWidth){\r\n autoColNums--;\r\n width = minWidth;\r\n } else if(autoWidth && autoWidth > maxWidth){\r\n autoColNums--;\r\n width = maxWidth;\r\n }\r\n\r\n if(item2.hide) width = 0;\r\n countWidth = countWidth + width;\r\n });\r\n });\r\n\r\n // 如果未填充满,则将剩余宽度平分\r\n (cntrWidth > countWidth && autoColNums > 0) && (\r\n autoWidth = (cntrWidth - countWidth) / autoColNums\r\n );\r\n }\r\n\r\n getAutoWidth();\r\n getAutoWidth(true); // 重新检测分配的宽度是否低于最小列宽\r\n\r\n // 记录自动列数\r\n that.autoColNums = autoColNums = autoColNums > 0 ? autoColNums : 0;\r\n\r\n // 设置列宽\r\n that.eachCols(function(i3, item3){\r\n var minWidth = item3.minWidth || options.cellMinWidth;\r\n var maxWidth = item3.maxWidth || options.cellMaxWidth;\r\n\r\n if(item3.colGroup || item3.hide) return;\r\n\r\n // 给未分配宽的列平均分配宽\r\n if(item3.width === 0){\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = Math.floor(function(){\r\n if(autoWidth < minWidth) return minWidth;\r\n if(autoWidth > maxWidth) return maxWidth;\r\n return autoWidth;\r\n }()) + 'px';\r\n });\r\n }\r\n\r\n // 给设定百分比的列分配列宽\r\n else if(/\\d+%$/.test(item3.width)){\r\n that.cssRules(item3.key, function(item){\r\n var width = Math.floor((parseFloat(item3.width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n item.style.width = width + 'px';\r\n });\r\n }\r\n\r\n // 给拥有普通 width 值的列分配最新列宽\r\n else {\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = item3.width + 'px';\r\n });\r\n }\r\n });\r\n\r\n // 填补 Math.floor 造成的数差\r\n var patchNums = that.layMain.width() - that.getScrollWidth(that.layMain[0])\r\n - that.layMain.children('table').outerWidth();\r\n\r\n if(that.autoColNums > 0 && patchNums >= -colNums && patchNums <= colNums){\r\n var getEndTh = function(th){\r\n var field;\r\n th = th || that.layHeader.eq(0).find('thead > tr:first-child > th:last-child')\r\n field = th.data('field');\r\n if(!field && th.prev()[0]){\r\n return getEndTh(th.prev())\r\n }\r\n return th;\r\n };\r\n var th = getEndTh();\r\n var key = th.data('key');\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || th.outerWidth();\r\n item.style.width = (parseFloat(width) + patchNums) + 'px';\r\n\r\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\r\n if(that.layMain.height() - that.layMain.prop('clientHeight') > 0){\r\n item.style.width = (parseFloat(item.style.width) - 1) + 'px';\r\n }\r\n });\r\n }\r\n\r\n that.setGroupWidth();\r\n\r\n // 如果表格内容为空(无数据 或 请求异常)\r\n if (that.layMain.find('tbody').is(\":empty\")) {\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n var headerWidth = that.layHeader.first().children('table').width()\r\n that.layMain.find('table').width(headerWidth);\r\n } else {\r\n that.layMain.find('table').width('auto');\r\n }\r\n\r\n that.loading(!0);\r\n };\r\n\r\n // 重置表格尺寸/结构\r\n Class.prototype.resize = function(){\r\n var that = this;\r\n\r\n if (!that.layMain) return;\r\n\r\n that.fullSize(); // 让表格铺满\r\n that.setColsWidth(); // 自适应列宽\r\n that.scrollPatch(); // 滚动条补丁\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function(options, deep, type){\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n if (type !== 'reloadData') {\r\n layui.each(that.config.cols, function (i1, item1) {\r\n layui.each(item1, function (i2, item2) {\r\n delete item2.colspan2;\r\n })\r\n })\r\n delete that.config.HAS_SET_COLS_PATCH;\r\n }\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 异常提示\r\n Class.prototype.errorView = function(html){\r\n var that = this\r\n ,elemNone = that.layMain.find('.'+ NONE)\r\n ,layNone = $('
                        '+ (html || 'Error') +'
                        ');\r\n\r\n if(elemNone[0]){\r\n that.layNone.remove();\r\n elemNone.remove();\r\n }\r\n\r\n that.layFixed.addClass(HIDE);\r\n that.layMain.find('tbody').html('');\r\n\r\n that.layMain.append(that.layNone = layNone);\r\n\r\n // 异常情况下对 page 和 total 的内容处理\r\n that.layTotal.addClass(HIDE_V);\r\n that.layPage.find(ELEM_PAGE_VIEW).addClass(HIDE_V);\r\n\r\n table.cache[that.key] = []; //格式化缓存数据\r\n\r\n that.syncCheckAll();\r\n that.renderForm();\r\n that.setColsWidth();\r\n };\r\n\r\n // 初始页码\r\n Class.prototype.page = 1;\r\n\r\n // 获得数据\r\n Class.prototype.pullData = function(curr, opts){\r\n var that = this;\r\n var options = that.config;\r\n // 同步表头父列的相关值\r\n options.HAS_SET_COLS_PATCH || that.setColsPatch();\r\n options.HAS_SET_COLS_PATCH = true;\r\n var request = options.request;\r\n var response = options.response;\r\n var res;\r\n var sort = function(){\r\n if(typeof options.initSort === 'object'){\r\n that.sort({\r\n field: options.initSort.field,\r\n type: options.initSort.type,\r\n reloadType: opts.type\r\n });\r\n }\r\n };\r\n var done = function(res, origin){\r\n that.setColsWidth();\r\n typeof options.done === 'function' && options.done(\r\n res, curr, res[response.countName], origin\r\n );\r\n };\r\n\r\n opts = opts || {};\r\n\r\n // 数据拉取前的回调\r\n typeof options.before === 'function' && options.before(\r\n options\r\n );\r\n that.startTime = new Date().getTime(); // 渲染开始时间\r\n\r\n if (opts.renderData) { // 将 cache 信息重新渲染\r\n res = {};\r\n res[response.dataName] = table.cache[that.key];\r\n res[response.countName] = options.url ? (layui.type(options.page) === 'object' ? options.page.count : res[response.dataName].length) : options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, that.totalRow);\r\n }\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type,\r\n sort: true\r\n }), done(res, 'renderData');\r\n } else if(options.url){ // Ajax请求\r\n var params = {};\r\n // 当 page 开启,默认自动传递 page、limit 参数\r\n if(options.page){\r\n params[request.pageName] = curr;\r\n params[request.limitName] = options.limit;\r\n }\r\n\r\n // 参数\r\n var data = $.extend(params, options.where);\r\n if(options.contentType && options.contentType.indexOf(\"application/json\") == 0){ // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n\r\n that.loading();\r\n\r\n $.ajax({\r\n type: options.method || 'get',\r\n url: options.url,\r\n contentType: options.contentType,\r\n data: data,\r\n dataType: options.dataType || 'json',\r\n jsonpCallback: options.jsonpCallback,\r\n headers: options.headers || {},\r\n complete: typeof options.complete === 'function' ? options.complete : undefined,\r\n success: function(res){\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if(typeof options.parseData === 'function'){\r\n res = options.parseData(res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if(res[response.statusName] != response.statusCode){\r\n that.errorView(\r\n res[response.msgName] ||\r\n ('返回的数据不符合规范,正确的成功状态码应为:\"'+ response.statusName +'\": '+ response.statusCode)\r\n );\r\n } else {\r\n that.totalRow = res[response.totalRowName];\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n // 耗时(接口请求+视图渲染)\r\n options.time = (new Date().getTime() - that.startTime) + ' ms';\r\n }\r\n done(res);\r\n },\r\n error: function(e, msg){\r\n that.errorView('请求异常,错误提示:'+ msg);\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n } else if(layui.type(options.data) === 'array'){ //已知数据\r\n res = {};\r\n var startLimit = curr*options.limit - options.limit;\r\n var newData = options.data.concat();\r\n\r\n res[response.dataName] = options.page\r\n ? newData.splice(startLimit, options.limit)\r\n : newData;\r\n res[response.countName] = options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, options.totalRow);\r\n }\r\n that.totalRow = res[response.totalRowName];\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n done(res);\r\n }\r\n };\r\n\r\n // 遍历表头\r\n Class.prototype.eachCols = function(callback){\r\n var that = this;\r\n table.eachCols(null, callback, that.config.cols);\r\n return that;\r\n };\r\n\r\n // 获取表头参数项\r\n Class.prototype.col = function(key){\r\n try {\r\n key = key.split('-');\r\n return this.config.cols[key[1]][key[2]] || {};\r\n } catch(e){\r\n hint.error(e);\r\n return {};\r\n }\r\n };\r\n\r\n Class.prototype.getTrHtml = function(data, sort, curr, trsObj) {\r\n var that = this;\r\n var options = that.config;\r\n var trs = trsObj && trsObj.trs || [];\r\n var trs_fixed = trsObj && trsObj.trs_fixed || [];\r\n var trs_fixed_r = trsObj && trsObj.trs_fixed_r || [];\r\n curr = curr || 1\r\n\r\n layui.each(data, function(i1, item1){\r\n var tds = [];\r\n var tds_fixed = [];\r\n var tds_fixed_r = [];\r\n var numbers = i1 + options.limit*(curr - 1) + 1; // 序号\r\n\r\n // 数组值是否为 object,如果不是,则自动转为 object\r\n if(typeof item1 !== 'object'){\r\n data[i1] = item1 = {LAY_KEY: item1};\r\n try {\r\n table.cache[that.key][i1] = item1;\r\n } catch(e) {}\r\n }\r\n\r\n //若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n // 加入序号保留字段\r\n item1[table.config.numbersName] = numbers;\r\n\r\n // 记录下标索引,用于恢复排序\r\n if(!sort) item1[table.config.indexName] = i1;\r\n\r\n // 遍历表头\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n var key = item3.key;\r\n var content = item1[field];\r\n\r\n if(content === undefined || content === null) content = '';\r\n if(item3.colGroup) return;\r\n\r\n // td 内容\r\n var td = [''\r\n ,'
                        '\r\n + function(){\r\n var tplData = $.extend(true, {\r\n LAY_COL: item3\r\n }, item1);\r\n var checkName = table.config.checkName;\r\n var disabledName = table.config.disabledName;\r\n\r\n // 渲染不同风格的列\r\n switch(item3.type){\r\n case 'checkbox': // 复选\r\n return '';\r\n //break;\r\n case 'radio': // 单选\r\n return '';\r\n //break;\r\n case 'numbers':\r\n return numbers;\r\n //break;\r\n }\r\n\r\n //解析工具列模板\r\n if(item3.toolbar){\r\n return laytpl($(item3.toolbar).html()||'').render(tplData);\r\n }\r\n return parseTempData.call(that, {\r\n item3: item3\r\n ,content: content\r\n ,tplData: tplData\r\n });\r\n }()\r\n ,'
                        '].join('');\r\n\r\n tds.push(td);\r\n if(item3.fixed && item3.fixed !== 'right') tds_fixed.push(td);\r\n if(item3.fixed === 'right') tds_fixed_r.push(td);\r\n });\r\n\r\n // 添加 tr 属性\r\n var trAttr = function(){\r\n var arr = ['data-index=\"'+ i1 +'\"'];\r\n if(item1[table.config.checkName]) arr.push('class=\"'+ ELEM_CHECKED +'\"');\r\n return arr.join(' ');\r\n }();\r\n\r\n trs.push(''+ tds.join('') + '');\r\n trs_fixed.push(''+ tds_fixed.join('') + '');\r\n trs_fixed_r.push(''+ tds_fixed_r.join('') + '');\r\n });\r\n\r\n return {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n }\r\n }\r\n\r\n // 返回行节点代码\r\n table.getTrHtml = function (id, data) {\r\n var that = getThisTable(id);\r\n return that.getTrHtml(data, null, that.page);\r\n }\r\n\r\n // 数据渲染\r\n Class.prototype.renderData = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var res = opts.res;\r\n var curr = opts.curr;\r\n var count = that.count = opts.count;\r\n var sort = opts.sort;\r\n\r\n var data = res[options.response.dataName] || []; //列表数据\r\n var totalRowData = res[options.response.totalRowName]; //合计行数据\r\n var trs = [];\r\n var trs_fixed = [];\r\n var trs_fixed_r = [];\r\n\r\n // 渲染视图\r\n var render = function(){ // 后续性能提升的重点\r\n if(!sort && that.sortKey){\r\n return that.sort({\r\n field: that.sortKey.field,\r\n type: that.sortKey.sort,\r\n pull: true,\r\n reloadType: opts.type\r\n });\r\n }\r\n that.getTrHtml(data, sort, curr, {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n });\r\n\r\n // 容器的滚动条位置\r\n if(!(options.scrollPos === 'fixed' && opts.type === 'reloadData')){\r\n that.layBody.scrollTop(0);\r\n }\r\n if(options.scrollPos === 'reset'){\r\n that.layBody.scrollLeft(0);\r\n }\r\n\r\n that.layMain.find('.'+ NONE).remove();\r\n that.layMain.find('tbody').html(trs.join(''));\r\n that.layFixLeft.find('tbody').html(trs_fixed.join(''));\r\n that.layFixRight.find('tbody').html(trs_fixed_r.join(''));\r\n\r\n // 渲染表单\r\n that.syncCheckAll();\r\n that.renderForm();\r\n\r\n // 因为 page 参数有可能发生变化 先重新铺满\r\n that.fullSize();\r\n\r\n // 滚动条补丁\r\n that.haveInit ? that.scrollPatch() : setTimeout(function(){\r\n that.scrollPatch();\r\n }, 50);\r\n that.haveInit = true;\r\n\r\n layer.close(that.tipsIndex);\r\n };\r\n\r\n table.cache[that.key] = data; //记录数据\r\n\r\n //显示隐藏合计栏\r\n that.layTotal[data.length == 0 ? 'addClass' : 'removeClass'](HIDE_V);\r\n\r\n //显示隐藏分页栏\r\n that.layPage[(options.page || options.pagebar) ? 'removeClass' : 'addClass'](HIDE);\r\n that.layPage.find(ELEM_PAGE_VIEW)[\r\n (!options.page || count == 0 || (data.length === 0 && curr == 1))\r\n ? 'addClass'\r\n : 'removeClass'\r\n ](HIDE_V);\r\n\r\n //如果无数据\r\n if(data.length === 0){\r\n return that.errorView(options.text.none);\r\n } else {\r\n that.layFixLeft.removeClass(HIDE);\r\n }\r\n\r\n //如果执行初始排序\r\n if(sort){\r\n return render();\r\n }\r\n\r\n //正常初始化数据渲染\r\n render(); //渲染数据\r\n that.renderTotal(data, totalRowData); //数据合计\r\n that.layTotal && that.layTotal.removeClass(HIDE);\r\n\r\n //同步分页状态\r\n if(options.page){\r\n options.page = $.extend({\r\n elem: 'layui-table-page' + options.index,\r\n count: count,\r\n limit: options.limit,\r\n limits: options.limits || [10,20,30,40,50,60,70,80,90],\r\n groups: 3,\r\n layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],\r\n prev: '',\r\n next: '',\r\n jump: function(obj, first){\r\n if(!first){\r\n //分页本身并非需要做以下更新,下面参数的同步,主要是因为其它处理统一用到了它们\r\n //而并非用的是 options.page 中的参数(以确保分页未开启的情况仍能正常使用)\r\n that.page = obj.curr; //更新页码\r\n options.limit = obj.limit; //更新每页条数\r\n\r\n that.pullData(obj.curr);\r\n }\r\n }\r\n }, options.page);\r\n options.page.count = count; //更新总条数\r\n laypage.render(options.page);\r\n }\r\n };\r\n\r\n // 重新渲染数据\r\n table.renderData = function (id) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n that.pullData(that.page, {\r\n renderData: true,\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 数据合计行\r\n Class.prototype.renderTotal = function(data, totalRowData){\r\n var that = this;\r\n var options = that.config;\r\n var totalNums = {};\r\n\r\n if(!options.totalRow) return;\r\n\r\n layui.each(data, function(i1, item1){\r\n // 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3\r\n ,content = item1[field];\r\n\r\n if(item3.totalRow){\r\n totalNums[field] = (totalNums[field] || 0) + (parseFloat(content) || 0);\r\n }\r\n });\r\n });\r\n\r\n that.dataTotal = []; // 记录合计行结果\r\n\r\n var tds = [];\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n\r\n // 合计数据的特定字段\r\n var TOTAL_NUMS = totalRowData && totalRowData[item3.field];\r\n\r\n // 合计数据的小数点位数处理\r\n var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;\r\n var thisTotalNum = totalNums[field]\r\n ? parseFloat(totalNums[field] || 0).toFixed(decimals)\r\n : '';\r\n\r\n // td 显示内容\r\n var content = function(){\r\n var text = item3.totalRowText || '';\r\n var tplData = {\r\n LAY_COL: item3\r\n };\r\n\r\n tplData[field] = thisTotalNum;\r\n\r\n // 获取自动计算的合并内容\r\n var getContent = item3.totalRow ? (parseTempData.call(that, {\r\n item3: item3,\r\n content: thisTotalNum,\r\n tplData: tplData\r\n }) || text) : text;\r\n\r\n // 如果直接传入了合计行数据,则不输出自动计算的结果\r\n return TOTAL_NUMS || getContent;\r\n }();\r\n\r\n // 合计原始结果\r\n var total = TOTAL_NUMS || thisTotalNum || '';\r\n item3.field && that.dataTotal.push({\r\n field: item3.field,\r\n total: $('
                        '+ content +'
                        ').text()\r\n });\r\n\r\n // td 容器\r\n var td = ['',\r\n '
                        ' + function(){\r\n var totalRow = item3.totalRow || options.totalRow;\r\n\r\n // 如果 totalRow 参数为字符类型,则解析为自定义模版\r\n if(typeof totalRow === 'string'){\r\n return laytpl(totalRow).render($.extend({\r\n TOTAL_NUMS: TOTAL_NUMS || totalNums[field],\r\n TOTAL_ROW: totalRowData || {},\r\n LAY_COL: item3\r\n }, item3));\r\n }\r\n return content;\r\n }(),\r\n '
                        '].join('');\r\n\r\n tds.push(td);\r\n });\r\n\r\n var patchElem = that.layTotal.find('.layui-table-patch'); // 可能存在滚动条补丁\r\n that.layTotal.find('tbody').html('' + tds.join('') + (patchElem.length ? patchElem.get(0).outerHTML : '') + '');\r\n };\r\n\r\n //找到对应的列元素\r\n Class.prototype.getColElem = function(parent, key){\r\n var that = this;\r\n //var options = that.config;\r\n return parent.eq(0).find('.laytable-cell-'+ key + ':eq(0)');\r\n };\r\n\r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n var that = this;\r\n var options = that.config;\r\n var filter = that.elem.attr('lay-filter');\r\n form.render(type, filter);\r\n };\r\n\r\n // 定向渲染表单\r\n Class.prototype.renderFormByElem = function(elem){\r\n layui.each(['input', 'select'], function(i, formType){\r\n form.render(elem.find(formType));\r\n })\r\n };\r\n\r\n // 同步全选按钮状态\r\n Class.prototype.syncCheckAll = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkAllElem = that.layHeader.find('input[name=\"layTableCheckbox\"]');\r\n var syncColsCheck = function(checked){\r\n that.eachCols(function(i, item){\r\n if(item.type === 'checkbox'){\r\n item[options.checkName] = checked;\r\n }\r\n });\r\n return checked;\r\n };\r\n var checkStatus = table.checkStatus(that.key);\r\n\r\n if(!checkAllElem[0]) return;\r\n\r\n // 选中状态\r\n syncColsCheck(checkStatus.isAll);\r\n checkAllElem.prop({\r\n checked: checkStatus.isAll,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length // 半选\r\n });\r\n form.render(checkAllElem);\r\n };\r\n\r\n // 标记当前活动行背景色\r\n Class.prototype.setRowActive = function(index, className, removeClass){\r\n var that = this;\r\n var options = that.config;\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n className = className || 'layui-table-click';\r\n\r\n if(removeClass) return tr.removeClass(className);\r\n\r\n tr.addClass(className);\r\n tr.siblings('tr').removeClass(className);\r\n };\r\n\r\n // 设置行选中状态\r\n Class.prototype.setRowChecked = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var isCheckAll = opts.index === 'all'; // 是否操作全部\r\n var isCheckMult = layui.type(opts.index) === 'array'; // 是否操作多个\r\n\r\n // 匹配行元素\r\n var tr = function(tr) {\r\n return isCheckAll ? tr : tr.filter(isCheckMult ? function() {\r\n var dataIndex = $(this).data('index');\r\n return opts.index.indexOf(dataIndex) !== -1;\r\n } : '[data-index=\"'+ opts.index +'\"]');\r\n }(that.layBody.find('tr'));\r\n\r\n // 默认属性\r\n opts = $.extend({\r\n type: 'checkbox' // 选中方式\r\n }, opts);\r\n\r\n // 同步数据选中属性值\r\n var thisData = table.cache[that.key];\r\n var existChecked = 'checked' in opts;\r\n\r\n // 若为单选框,则单向选中;若为复选框,则切换选中。\r\n var getChecked = function(value){\r\n return opts.type === 'radio' ? true : (existChecked ? opts.checked : !value)\r\n };\r\n\r\n // 设置选中状态\r\n layui.each(thisData, function(i, item){\r\n // 绕过空项和禁用项\r\n if(layui.type(item) === 'array' || item[options.disabledName]) return;\r\n\r\n // 匹配条件\r\n var matched = isCheckAll || (\r\n isCheckMult ? opts.index.indexOf(i) !== -1 : Number(opts.index) === i\r\n );\r\n\r\n // 设置匹配项的选中值\r\n if(matched){\r\n // 标记数据选中状态\r\n var checked = item[options.checkName] = getChecked(item[options.checkName]);\r\n\r\n // 标记当前行背景色\r\n var currTr = tr.filter('[data-index=\"'+ i +'\"]');\r\n currTr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n\r\n // 若为 radio 类型,则取消其他行选中背景色\r\n if(opts.type === 'radio'){\r\n currTr.siblings().removeClass(ELEM_CHECKED);\r\n }\r\n } else if(opts.type === 'radio') {\r\n delete item[options.checkName];\r\n }\r\n });\r\n\r\n // 若存在复选框或单选框,则标注选中状态样式\r\n var checkedElem = tr.find('input[lay-type=\"'+ ({\r\n radio: 'layTableRadio',\r\n checkbox: 'layTableCheckbox'\r\n }[opts.type] || 'checkbox') +'\"]:not(:disabled)');\r\n var checkedSameElem = checkedElem.last();\r\n var fixRElem = checkedSameElem.closest(ELEM_FIXR);\r\n\r\n ( opts.type === 'radio' && fixRElem.hasClass(HIDE)\r\n ? checkedElem.first()\r\n : checkedElem ).prop('checked', getChecked(checkedSameElem.prop('checked')));\r\n\r\n that.syncCheckAll();\r\n that.renderForm(opts.type);\r\n };\r\n\r\n // 数据排序\r\n Class.prototype.sort = function(opts){ // field, type, pull, fromEvent\r\n var that = this;\r\n var field;\r\n var res = {};\r\n var options = that.config;\r\n var filter = options.elem.attr('lay-filter');\r\n var data = table.cache[that.key], thisData;\r\n\r\n opts = opts || {};\r\n\r\n // 字段匹配\r\n if(typeof opts.field === 'string'){\r\n field = opts.field;\r\n that.layHeader.find('th').each(function(i, item){\r\n var othis = $(this);\r\n var _field = othis.data('field');\r\n if(_field === opts.field){\r\n opts.field = othis;\r\n field = _field;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n try {\r\n field = field || opts.field.data('field');\r\n var key = opts.field.data('key');\r\n\r\n // 如果欲执行的排序已在状态中,则不执行渲染\r\n if(that.sortKey && !opts.pull){\r\n if(field === that.sortKey.field && opts.type === that.sortKey.sort){\r\n return;\r\n }\r\n }\r\n\r\n var elemSort = that.layHeader.find('th .laytable-cell-'+ key).find(ELEM_SORT);\r\n that.layHeader.find('th').find(ELEM_SORT).removeAttr('lay-sort'); // 清除其它标题排序状态\r\n elemSort.attr('lay-sort', opts.type || null);\r\n that.layFixed.find('th')\r\n } catch(e){\r\n hint.error('Table modules: sort field \\''+ field +'\\' not matched');\r\n }\r\n\r\n // 记录排序索引和类型\r\n that.sortKey = {\r\n field: field,\r\n sort: opts.type\r\n };\r\n\r\n // 默认为前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n if(options.autoSort){\r\n if(opts.type === 'asc'){ //升序\r\n thisData = layui.sort(data, field, null, true);\r\n } else if(opts.type === 'desc'){ //降序\r\n thisData = layui.sort(data, field, true, true);\r\n } else { // 清除排序\r\n thisData = layui.sort(data, table.config.indexName, null, true);\r\n delete that.sortKey;\r\n delete options.initSort;\r\n }\r\n }\r\n\r\n res[options.response.dataName] = thisData || data;\r\n\r\n // 重载数据\r\n that.renderData({\r\n res: res,\r\n curr: that.page,\r\n count: that.count,\r\n sort: true,\r\n type: opts.reloadType\r\n });\r\n\r\n // 排序是否来自于点击表头事件触发\r\n if(opts.fromEvent){\r\n options.initSort = {\r\n field: field,\r\n type: opts.type\r\n };\r\n layui.event.call(opts.field, MOD_NAME, 'sort('+ filter +')', $.extend({\r\n config: options\r\n }, options.initSort));\r\n }\r\n };\r\n\r\n // 请求 loading\r\n Class.prototype.loading = function(hide){\r\n var that = this;\r\n var options = that.config;\r\n if(options.loading){\r\n if(hide){\r\n that.layInit && that.layInit.remove();\r\n delete that.layInit;\r\n that.layBox.find(ELEM_INIT).remove();\r\n } else {\r\n that.layInit = $(['
                        ',\r\n '',\r\n '
                        '].join(''));\r\n that.layBox.append(that.layInit);\r\n }\r\n }\r\n };\r\n\r\n // 获取对应单元格的 cssRules\r\n Class.prototype.cssRules = function(key, callback){\r\n var that = this;\r\n var style = that.elem.children('style')[0];\r\n\r\n lay.getStyleRules(style, function(item){\r\n if (item.selectorText === ('.laytable-cell-'+ key)) {\r\n callback(item);\r\n\r\n /* 以下代码为防止 Chrome DevTools 审查 iframe 中的 table 元素时出现的页面崩溃\r\n * closes https://gitee.com/layui/layui/issues/I8N08M\r\n * 具体原因不明,可能是初始操作 cssRules 触发了 DevTools inspect 的解析报错\r\n * 后续若浏览器本身修复了该问题,下述补丁也将会剔除\r\n */\r\n (function PatcheToCssRulesInDevTools(){\r\n if (self === parent) return;\r\n var input = lay.elem('input', {\r\n style: 'position: absolute; left: 0; top: 0; opacity: 0.01;'\r\n });\r\n document.body.appendChild(input);\r\n input.focus();\r\n document.body.removeChild(input);\r\n })();\r\n\r\n return true;\r\n }\r\n });\r\n };\r\n\r\n // 让表格铺满\r\n Class.prototype.fullSize = function(){\r\n var that = this;\r\n var options = that.config;\r\n var height = options.height;\r\n var bodyHeight;\r\n var MIN_HEIGHT = 135;\r\n\r\n if(that.fullHeightGap){\r\n height = _WIN.height() - that.fullHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css('height', height);\r\n } else if (that.parentDiv && that.parentHeightGap) {\r\n height = $(that.parentDiv).height() - that.parentHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css(\"height\", height);\r\n } else if (that.customHeightFunc) {\r\n height = that.customHeightFunc();\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n }\r\n\r\n // 如果多级表头,则填补表头高度\r\n if(options.cols.length > 1){\r\n // 补全高度\r\n var th = that.layFixed.find(ELEM_HEADER).find('th');\r\n // 固定列表头同步跟本体 th 一致高度\r\n var headerMain = that.layHeader.first();\r\n layui.each(th, function (thIndex, thElem) {\r\n thElem = $(thElem);\r\n thElem.height(headerMain.find('th[data-key=\"' + thElem.attr('data-key') + '\"]').height() + 'px');\r\n })\r\n }\r\n\r\n if(!height) return;\r\n\r\n // 减去列头区域的高度 --- 此处的数字常量是为了防止容器处在隐藏区域无法获得高度的问题,只对默认尺寸表格做支持\r\n bodyHeight = parseFloat(height) - (that.layHeader.outerHeight() || 39)\r\n\r\n // 减去工具栏的高度\r\n if(options.toolbar){\r\n bodyHeight -= (that.layTool.outerHeight() || 51);\r\n }\r\n\r\n // 减去统计栏的高度\r\n if(options.totalRow){\r\n bodyHeight -= (that.layTotal.outerHeight() || 40);\r\n }\r\n\r\n // 减去分页栏的高度\r\n if(options.page || options.pagebar){\r\n bodyHeight -= (that.layPage.outerHeight() || 43);\r\n }\r\n\r\n if (options.maxHeight) {\r\n layui.each({elem: height, layMain: bodyHeight}, function (elemName, elemHeight) {\r\n that[elemName].css({\r\n height: 'auto',\r\n maxHeight: elemHeight + 'px'\r\n });\r\n });\r\n } else {\r\n that.layMain.outerHeight(bodyHeight);\r\n }\r\n };\r\n\r\n //获取滚动条宽度\r\n Class.prototype.getScrollWidth = function(elem){\r\n var width;\r\n if(elem){\r\n width = elem.offsetWidth - elem.clientWidth;\r\n } else {\r\n elem = document.createElement('div');\r\n elem.style.width = '100px';\r\n elem.style.height = '100px';\r\n elem.style.overflowY = 'scroll';\r\n\r\n document.body.appendChild(elem);\r\n width = elem.offsetWidth - elem.clientWidth;\r\n document.body.removeChild(elem);\r\n }\r\n return width;\r\n };\r\n\r\n // 滚动条补丁\r\n Class.prototype.scrollPatch = function(){\r\n var that = this;\r\n var layMainTable = that.layMain.children('table');\r\n var scrollWidth = that.layMain.width() - that.layMain.prop('clientWidth'); // 纵向滚动条宽度\r\n var scrollHeight = that.layMain.height() - that.layMain.prop('clientHeight'); // 横向滚动条高度\r\n var getScrollWidth = that.getScrollWidth(that.layMain[0]); // 获取主容器滚动条宽度,如果有的话\r\n var outWidth = layMainTable.outerWidth() - that.layMain.width(); // 表格内容器的超出宽度\r\n\r\n // 添加补丁\r\n var addPatch = function(elem){\r\n if(scrollWidth && scrollHeight){\r\n elem = elem.eq(0);\r\n if(!elem.find('.layui-table-patch')[0]){\r\n var patchElem = $('
                        '); // 补丁元素\r\n patchElem.find('div').css({\r\n width: scrollWidth\r\n });\r\n elem.find('tr').append(patchElem);\r\n }\r\n } else {\r\n elem.find('.layui-table-patch').remove();\r\n }\r\n };\r\n\r\n addPatch(that.layHeader);\r\n addPatch(that.layTotal);\r\n\r\n // 固定列区域高度\r\n var mainHeight = that.layMain.height();\r\n var fixHeight = mainHeight - scrollHeight;\r\n\r\n that.layFixed.find(ELEM_BODY).css(\r\n 'height',\r\n layMainTable.height() >= fixHeight ? fixHeight : 'auto'\r\n ).scrollTop(that.layMain.scrollTop()); // 固定列滚动条高度\r\n\r\n // 表格宽度小于容器宽度时,隐藏固定列\r\n that.layFixRight[\r\n (table.cache[that.key] && table.cache[that.key].length) && outWidth > 0\r\n ? 'removeClass'\r\n : 'addClass'\r\n ](HIDE);\r\n\r\n // 操作栏\r\n that.layFixRight.css('right', scrollWidth - 1);\r\n };\r\n\r\n /**\r\n * @typedef updateRowOptions\r\n * @prop {number} index - 行索引\r\n * @prop {Object.} data - 行数据\r\n * @prop {boolean | ((field, index) => boolean)} [related] - 更新其他包含自定义模板且可能有所关联的列视图\r\n */\r\n /**\r\n * 更新指定行\r\n * @param {updateRowOptions | updateRowOptions[]} opts \r\n * @param {(field: string, value: any) => void} [callback] - 更新每个字段时的回调函数\r\n */\r\n Class.prototype.updateRow = function(opts, callback){\r\n var that = this;\r\n var ELEM_CELL = '.layui-table-cell';\r\n var opts = layui.type(opts) === 'array' ? opts : [opts];\r\n var dataCache = table.cache[that.key] || [];\r\n\r\n var update = function(opt){\r\n var index = opt.index;\r\n var row = opt.data;\r\n var related = opt.related;\r\n\r\n var data = dataCache[index] || {};\r\n var tr = that.layBody.find('tr[data-index=\"' + index + '\"]');\r\n\r\n // 更新缓存中的数据\r\n layui.each(row, function (key, value) {\r\n data[key] = value;\r\n callback && callback(key, value);\r\n });\r\n\r\n // 更新单元格\r\n that.eachCols(function (i, item3) {\r\n var field = String(item3.field || i);\r\n var shouldUpdate = field in row || ((typeof related === 'function' ? related(field, i) : related) && (item3.templet || item3.toolbar));\r\n if(shouldUpdate){\r\n var td = tr.children('td[data-field=\"' + field + '\"]');\r\n var cell = td.children(ELEM_CELL);\r\n var content = data[item3.field];\r\n cell.html(parseTempData.call(that, {\r\n item3: item3,\r\n content: content,\r\n tplData: $.extend({\r\n LAY_COL: item3,\r\n }, data)\r\n }));\r\n td.data(\"content\", content);\r\n that.renderFormByElem(cell);\r\n }\r\n });\r\n }\r\n\r\n layui.each(opts, function(i, opt){\r\n update(opt);\r\n });\r\n };\r\n\r\n /**\r\n * 更新指定行\r\n * @param {string} id - table ID\r\n * @param {updateRowOptions | updateRowOptions[]} options \r\n */\r\n table.updateRow = function (id, options){\r\n var that = getThisTable(id);\r\n return that.updateRow(options);\r\n }\r\n\r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var filter = options.elem.attr('lay-filter');\r\n var th = that.layHeader.find('th');\r\n var ELEM_CELL = '.layui-table-cell';\r\n\r\n var _BODY = $('body');\r\n var dict = {};\r\n\r\n // 头部工具栏操作事件\r\n that.layTool.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var data = table.cache[options.id];\r\n var openPanel = function(sets){\r\n var list = $(sets.list);\r\n var panel = $('
                          ');\r\n\r\n panel.html(list);\r\n\r\n // 限制最大高度\r\n if(options.height){\r\n panel.css('max-height', options.height - (that.layTool.outerHeight() || 50));\r\n }\r\n\r\n // 插入元素\r\n othis.find('.' + ELEM_TOOL_PANEL)[0] || othis.append(panel);\r\n that.renderForm();\r\n\r\n panel.on('click', function(e){\r\n layui.stope(e);\r\n });\r\n\r\n sets.done && sets.done(panel, list)\r\n };\r\n\r\n layui.stope(e);\r\n _DOC.trigger('table.tool.panel.remove');\r\n layer.close(that.tipsIndex);\r\n\r\n switch(events){\r\n case 'LAYTABLE_COLS': // 筛选列\r\n openPanel({\r\n list: function(){\r\n var lis = [];\r\n that.eachCols(function(i, item){\r\n if(item.field && item.type == 'normal'){\r\n lis.push('
                        • ' + (item.fieldTitle || item.title || item.field) + '
                        • ').text()) +'\" lay-filter=\"LAY_TABLE_TOOL_COLS\">');\r\n }\r\n });\r\n return lis.join('');\r\n }()\r\n ,done: function(){\r\n form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj){\r\n var othis = $(obj.elem);\r\n var checked = this.checked;\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var hide = col.hide;\r\n var parentKey = othis.data('parentkey');\r\n\r\n if(!col.key) return;\r\n\r\n // 同步勾选列的 hide 值和隐藏样式\r\n col.hide = !checked;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n checked ? 'removeClass' : 'addClass'\r\n ](HIDE);\r\n\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n if(hide != col.hide){\r\n that.setParentCol(!checked, parentKey);\r\n }\r\n\r\n // 重新适配尺寸\r\n that.resize();\r\n\r\n // 列筛选(显示或隐藏)后的事件\r\n layui.event.call(this, MOD_NAME, 'colToggled('+ filter +')', {\r\n col: col,\r\n config: options\r\n });\r\n });\r\n }\r\n });\r\n break;\r\n case 'LAYTABLE_EXPORT': // 导出\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n if(device.ie){\r\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {\r\n tips: 3\r\n });\r\n } else {\r\n openPanel({\r\n list: function(){\r\n return [\r\n '
                        • 导出 csv 格式文件
                        • ',\r\n '
                        • 导出 xls 格式文件
                        • '\r\n ].join('')\r\n }(),\r\n done: function(panel, list){\r\n list.on('click', function(){\r\n var type = $(this).data('type')\r\n table.exportFile.call(that, options.id, null, type);\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case 'LAYTABLE_PRINT': // 打印\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n var printWin = window.open('about:blank', '_blank');\r\n var style = [''].join('')\r\n var html = $(that.layHeader.html()); // 输出表头\r\n\r\n html.append(that.layMain.find('table').html()); // 输出表体\r\n html.append(that.layTotal.find('table').html()) // 输出合计行\r\n\r\n html.find('th.layui-table-patch').remove(); // 移除补丁\r\n // 移除表头特殊列\r\n html.find('thead>tr>th.'+ ELEM_COL_SPECIAL).filter(function(i, thElem){\r\n return !$(thElem).children('.'+ ELEM_GROUP).length; // 父级表头除外\r\n }).remove();\r\n html.find('tbody>tr>td.'+ ELEM_COL_SPECIAL).remove(); // 移除表体特殊列\r\n\r\n printWin.document.write(style + html.prop('outerHTML'));\r\n printWin.document.close();\r\n\r\n if(layui.device('edg').edg){\r\n printWin.onafterprint = printWin.close;\r\n printWin.print();\r\n }else{\r\n printWin.print();\r\n printWin.close();\r\n }\r\n break;\r\n }\r\n\r\n layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 表头自定义元素事件\r\n that.layHeader.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var th = othis.closest('th');\r\n var key = th.data('key');\r\n var col = that.col(key);\r\n\r\n layui.event.call(this, MOD_NAME, 'colTool('+ filter +')', $.extend({\r\n event: events,\r\n config: options,\r\n col: col\r\n },{}));\r\n });\r\n\r\n // 分页栏操作事件\r\n that.layPagebar.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n\r\n layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 拖拽调整宽度\r\n th.on('mousemove', function(e){\r\n var othis = $(this);\r\n var oLeft = othis.offset().left;\r\n var pLeft = e.clientX - oLeft;\r\n if(othis.data('unresize') || thisTable.eventMoveElem){\r\n return;\r\n }\r\n dict.allowResize = othis.width() - pLeft <= 10; //是否处于拖拽允许区域\r\n _BODY.css('cursor', (dict.allowResize ? 'col-resize' : ''));\r\n }).on('mouseleave', function(){\r\n var othis = $(this);\r\n if(thisTable.eventMoveElem) return;\r\n _BODY.css('cursor', '');\r\n }).on('mousedown', function(e){\r\n var othis = $(this);\r\n if(dict.allowResize){\r\n var key = othis.data('key');\r\n e.preventDefault();\r\n dict.offset = [e.clientX, e.clientY]; //记录初始坐标\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || othis.outerWidth();\r\n dict.rule = item;\r\n dict.ruleWidth = parseFloat(width);\r\n dict.minWidth = othis.data('minwidth') || options.cellMinWidth;\r\n dict.maxWidth = othis.data('maxwidth') || options.cellMaxWidth;\r\n });\r\n\r\n // 临时记录当前拖拽信息\r\n othis.data(DATA_MOVE_NAME, dict);\r\n thisTable.eventMoveElem = othis;\r\n }\r\n });\r\n\r\n // 拖拽中\r\n if(!thisTable.docEvent){\r\n _DOC.on('mousemove', function(e){\r\n if(thisTable.eventMoveElem){\r\n var dict = thisTable.eventMoveElem.data(DATA_MOVE_NAME) || {};\r\n\r\n thisTable.eventMoveElem.data('resizing', 1);\r\n e.preventDefault();\r\n\r\n if(dict.rule){\r\n var setWidth = dict.ruleWidth + e.clientX - dict.offset[0];\r\n var id = thisTable.eventMoveElem.closest('.' + ELEM_VIEW).attr('lay-id');\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n if(setWidth < dict.minWidth) setWidth = dict.minWidth;\r\n if(setWidth > dict.maxWidth) setWidth = dict.maxWidth;\r\n\r\n dict.rule.style.width = setWidth + 'px';\r\n thatTable.setGroupWidth(thisTable.eventMoveElem);\r\n layer.close(that.tipsIndex);\r\n }\r\n }\r\n }).on('mouseup', function(e){\r\n if(thisTable.eventMoveElem){\r\n var th = thisTable.eventMoveElem; // 当前触发拖拽的 th 元素\r\n var id = th.closest('.' + ELEM_VIEW).attr('lay-id');\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n var key = th.data('key');\r\n var col = thatTable.col(key);\r\n var filter = thatTable.config.elem.attr('lay-filter');\r\n\r\n // 重置过度信息\r\n dict = {};\r\n _BODY.css('cursor', '');\r\n thatTable.scrollPatch();\r\n\r\n // 清除当前拖拽信息\r\n th.removeData(DATA_MOVE_NAME);\r\n delete thisTable.eventMoveElem;\r\n\r\n // 列拖拽宽度后的事件\r\n thatTable.cssRules(key, function(item){\r\n col.width = parseFloat(item.style.width);\r\n layui.event.call(th[0], MOD_NAME, 'colResized('+ filter +')', {\r\n col: col,\r\n config: thatTable.config\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 已给 document 执行全局事件,避免重复绑定\r\n thisTable.docEvent = true;\r\n\r\n\r\n // 排序\r\n th.on('click', function(e){\r\n var othis = $(this);\r\n var elemSort = othis.find(ELEM_SORT);\r\n var nowType = elemSort.attr('lay-sort');\r\n var type;\r\n\r\n // 排序不触发的条件\r\n if(!elemSort[0] || othis.data('resizing') === 1){\r\n return othis.removeData('resizing');\r\n }\r\n\r\n if(nowType === 'asc'){\r\n type = 'desc';\r\n } else if(nowType === 'desc'){\r\n type = null;\r\n } else {\r\n type = 'asc';\r\n }\r\n that.sort({\r\n field: othis,\r\n type: type,\r\n fromEvent: true\r\n });\r\n }).find(ELEM_SORT+' .layui-edge ').on('click', function(e){\r\n var othis = $(this);\r\n var index = othis.index();\r\n var field = othis.parents('th').eq(0).data('field');\r\n layui.stope(e);\r\n if(index === 0){\r\n that.sort({\r\n field: field,\r\n type: 'asc',\r\n fromEvent: true\r\n });\r\n } else {\r\n that.sort({\r\n field: field,\r\n type: 'desc',\r\n fromEvent: true\r\n });\r\n }\r\n });\r\n\r\n //数据行中的事件返回的公共对象成员\r\n var commonMember = that.commonMember = function(sets){\r\n var othis = $(this);\r\n var index = othis.parents('tr').eq(0).data('index');\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n var data = table.cache[that.key] || [];\r\n\r\n data = data[index] || {};\r\n\r\n // 事件返回的公共成员\r\n var obj = {\r\n tr: tr, // 行元素\r\n config: options,\r\n data: table.clearCacheKey(data), // 当前行数据\r\n dataCache: data, // 当前行缓存中的数据\r\n index: index,\r\n del: function(){ // 删除行数据\r\n table.cache[that.key][index] = [];\r\n tr.remove();\r\n that.scrollPatch();\r\n },\r\n update: function(fields, related){ // 修改行数据\r\n fields = fields || {};\r\n that.updateRow({\r\n index: index,\r\n data: fields,\r\n related: related\r\n }, function(key, value){\r\n obj.data[key] = value;\r\n });\r\n },\r\n // 设置行选中状态\r\n setRowChecked: function(opts){\r\n that.setRowChecked($.extend({\r\n index: index\r\n }, opts));\r\n }\r\n // 获取当前列\r\n };\r\n\r\n return $.extend(obj, sets);\r\n };\r\n\r\n // 复选框选择(替代元素的 click 事件)\r\n that.elem.on('click', 'input[name=\"layTableCheckbox\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var checkbox = othis.prev();\r\n var children = that.layBody.find('input[name=\"layTableCheckbox\"]');\r\n var index = checkbox.parents('tr').eq(0).data('index');\r\n var checked = checkbox[0].checked;\r\n var isAll = checkbox.attr('lay-filter') === 'layTableAllChoose';\r\n\r\n if(checkbox[0].disabled) return;\r\n\r\n // 全选\r\n if(isAll){\r\n that.setRowChecked({\r\n index: 'all',\r\n checked: checked\r\n });\r\n } else {\r\n that.setRowChecked({\r\n index: index,\r\n checked: checked\r\n });\r\n layui.stope(e);\r\n }\r\n\r\n // 事件\r\n layui.event.call(\r\n checkbox[0],\r\n MOD_NAME, 'checkbox('+ filter +')',\r\n commonMember.call(checkbox[0], {\r\n checked: checked,\r\n type: isAll ? 'all' : 'one',\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 单选框选择\r\n that.elem.on('click', 'input[lay-type=\"layTableRadio\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var radio = othis.prev();\r\n var checked = radio[0].checked;\r\n var index = radio.parents('tr').eq(0).data('index');\r\n\r\n layui.stope(e);\r\n if(radio[0].disabled) return false;\r\n\r\n // 标注选中样式\r\n that.setRowChecked({\r\n type: 'radio',\r\n index: index\r\n });\r\n\r\n // 事件\r\n layui.event.call(\r\n radio[0],\r\n MOD_NAME, 'radio('+ filter +')',\r\n commonMember.call(radio[0], {\r\n checked: checked,\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 行事件\r\n that.layBody.on('mouseenter', 'tr', function(){ // 鼠标移入行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').addClass(ELEM_HOVER)\r\n }).on('mouseleave', 'tr', function(){ // 鼠标移出行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)\r\n }).on('click', 'tr', function(e){ // 单击行\r\n // 不支持行单击事件的元素\r\n var UNROW = [\r\n '.layui-form-checkbox',\r\n '.layui-form-switch',\r\n '.layui-form-radio',\r\n '[lay-unrow]'\r\n ].join(',');\r\n if( $(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\r\n return;\r\n }\r\n setRowEvent.call(this, 'row');\r\n }).on('dblclick', 'tr', function(){ // 双击行\r\n setRowEvent.call(this, 'rowDouble');\r\n }).on('contextmenu', 'tr', function(e){ // 菜单\r\n if (!options.defaultContextmenu) e.preventDefault();\r\n setRowEvent.call(this, 'rowContextmenu');\r\n });\r\n\r\n // 创建行单击、双击、菜单事件\r\n var setRowEvent = function(eventType){\r\n var othis = $(this);\r\n if(othis.data('off')) return; //不触发事件\r\n layui.event.call(this,\r\n MOD_NAME, eventType + '('+ filter +')',\r\n commonMember.call(othis.children('td')[0])\r\n );\r\n };\r\n\r\n // 渲染单元格编辑状态\r\n var renderGridEdit = function(othis, e){\r\n othis = $(othis);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n\r\n var field = othis.data('field');\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n // 是否开启编辑\r\n // 若 edit 传入函数,则根据函数的返回结果判断是否开启编辑\r\n var editType = typeof col.edit === 'function'\r\n ? col.edit(data)\r\n : col.edit;\r\n\r\n // 显示编辑表单\r\n if(editType){\r\n var input = $(function(){\r\n var inputElem = '';\r\n if(editType === 'textarea') {\r\n inputElem = '';\r\n }\r\n return inputElem;\r\n }());\r\n input[0].value = function(val) {\r\n return (val === undefined || val === null) ? '' : val;\r\n }(othis.data('content') || data[field]);\r\n othis.find('.'+ELEM_EDIT)[0] || othis.append(input);\r\n input.focus();\r\n e && layui.stope(e);\r\n }\r\n };\r\n\r\n // 单元格编辑 - 输入框内容被改变的事件\r\n that.layBody.on('change', '.'+ ELEM_EDIT, function(){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var value = this.value;\r\n var field = othis.parent().data('field');\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n\r\n //事件回调的参数对象\r\n var params = commonMember.call(td[0], {\r\n value: value,\r\n field: field,\r\n oldValue: data[field], // 编辑前的值\r\n td: td,\r\n reedit: function(){ // 重新编辑\r\n setTimeout(function(){\r\n // 重新渲染为编辑状态\r\n renderGridEdit(params.td);\r\n\r\n // 将字段缓存的值恢复到编辑之前的值\r\n var obj = {};\r\n obj[field] = params.oldValue;\r\n params.update(obj);\r\n });\r\n },\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n });\r\n\r\n // 更新缓存中的值\r\n var obj = {}; //变更的键值\r\n obj[field] = value;\r\n params.update(obj);\r\n\r\n // 执行 API 编辑事件\r\n layui.event.call(td[0], MOD_NAME, 'edit('+ filter +')', params);\r\n }).on('blur', '.'+ ELEM_EDIT, function(){ // 单元格编辑 - 恢复非编辑状态事件\r\n $(this).remove(); // 移除编辑状态\r\n });\r\n\r\n // 表格主体单元格触发编辑的事件\r\n that.layBody.on(options.editTrigger, 'td', function(e){\r\n renderGridEdit(this, e)\r\n }).on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 表格合计栏单元格 hover 显示展开图标\r\n that.layTotal.on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 显示单元格展开图标\r\n var ELEM_GRID = 'layui-table-grid';\r\n var ELEM_GRID_DOWN = 'layui-table-grid-down';\r\n var ELEM_GRID_PANEL = 'layui-table-grid-panel';\r\n var showGridExpandIcon = function(hide){\r\n var othis = $(this);\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n if(othis.parent().hasClass(ELEM_EXPAND)) return; // 是否已为展开状态\r\n\r\n if(hide){\r\n othis.find('.layui-table-grid-down').remove();\r\n } else if((\r\n elemCell.prop('scrollWidth') > elemCell.outerWidth() ||\r\n elemCell.find(\"br\").length > 0\r\n ) && !options.lineStyle){\r\n if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;\r\n othis.append('
                          ');\r\n }\r\n };\r\n // 展开单元格内容\r\n var gridExpand = function(e, expandedMode){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var key = td.data('key');\r\n var col = that.col(key);\r\n var index = td.parent().data('index');\r\n var elemCell = td.children(ELEM_CELL);\r\n var ELEM_CELL_C = 'layui-table-cell-c';\r\n var elemCellClose = $('');\r\n\r\n expandedMode = expandedMode || col.expandedMode || options.cellExpandedMode;\r\n\r\n // 展开风格\r\n if (expandedMode === 'tips') { // TIPS 展开风格\r\n that.tipsIndex = layer.tips([\r\n '
                          ',\r\n elemCell.html(),\r\n '
                          ',\r\n ''\r\n ].join(''), elemCell[0], {\r\n tips: [3, ''],\r\n time: -1,\r\n anim: -1,\r\n maxWidth: (device.ios || device.android) ? 300 : that.elem.width()/2,\r\n isOutAnim: false,\r\n skin: 'layui-table-tips',\r\n success: function(layero, index){\r\n layero.find('.layui-table-tips-c').on('click', function(){\r\n layer.close(index);\r\n });\r\n }\r\n });\r\n } else { // 多行展开风格\r\n // 恢复其他已经展开的单元格\r\n that.elem.find('.'+ ELEM_CELL_C).trigger('click');\r\n\r\n // 设置当前单元格展开宽度\r\n that.cssRules(key, function(item){\r\n var width = item.style.width;\r\n var expandedWidth = col.expandedWidth || options.cellExpandedWidth;\r\n\r\n // 展开后的宽度不能小于当前宽度\r\n if(expandedWidth < parseFloat(width)) expandedWidth = parseFloat(width);\r\n\r\n elemCellClose.data('cell-width', width);\r\n item.style.width = expandedWidth + 'px';\r\n\r\n setTimeout(function(){\r\n that.scrollPatch(); // 滚动条补丁\r\n });\r\n });\r\n\r\n // 设置当前单元格展开样式\r\n that.setRowActive(index, ELEM_EXPAND);\r\n\r\n // 插入关闭按钮\r\n if(!elemCell.next('.'+ ELEM_CELL_C)[0]){\r\n elemCell.after(elemCellClose);\r\n }\r\n\r\n // 关闭展开状态\r\n elemCellClose.on('click', function(){\r\n var $this = $(this);\r\n that.setRowActive(index, [ELEM_EXPAND, ELEM_HOVER].join(' '), true); // 移除单元格展开样式\r\n that.cssRules(key, function(item){\r\n item.style.width = $this.data('cell-width'); // 恢复单元格展开前的宽度\r\n setTimeout(function(){\r\n that.resize(); // 滚动条补丁\r\n });\r\n });\r\n $this.remove();\r\n // 重置单元格滚动条位置\r\n elemCell.scrollTop(0);\r\n elemCell.scrollLeft(0); \r\n });\r\n }\r\n\r\n othis.remove();\r\n layui.stope(e);\r\n };\r\n\r\n // 表格主体单元格展开事件\r\n that.layBody.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e);\r\n });\r\n // 表格合计栏单元格展开事件\r\n that.layTotal.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e, 'tips'); // 强制采用 tips 风格\r\n });\r\n\r\n // 行工具条操作事件\r\n var toolFn = function(type){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var index = othis.parents('tr').eq(0).data('index');\r\n // 标记当前活动行\r\n that.setRowActive(index);\r\n\r\n // 执行事件\r\n layui.event.call(\r\n this,\r\n MOD_NAME,\r\n (type || 'tool') + '('+ filter +')',\r\n commonMember.call(this, {\r\n event: othis.attr('lay-event'),\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n };\r\n\r\n // 行工具条单击事件\r\n that.layBody.on('click', '*[lay-event]', function(e){\r\n toolFn.call(this);\r\n layui.stope(e);\r\n }).on('dblclick', '*[lay-event]', function(e){ //行工具条双击事件\r\n toolFn.call(this, 'toolDouble');\r\n layui.stope(e);\r\n });\r\n\r\n // 同步滚动条\r\n that.layMain.on('scroll', function(){\r\n var othis = $(this);\r\n var scrollLeft = othis.scrollLeft();\r\n var scrollTop = othis.scrollTop();\r\n\r\n that.layHeader.scrollLeft(scrollLeft);\r\n that.layTotal.scrollLeft(scrollLeft);\r\n that.layFixed.find(ELEM_BODY).scrollTop(scrollTop);\r\n\r\n layer.close(that.tipsIndex);\r\n });\r\n\r\n // 固定列滚轮事件 - 临时兼容方案\r\n that.layFixed.find(ELEM_BODY).on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var scrollTop = that.layMain.scrollTop();\r\n var step = 30;\r\n\r\n e.preventDefault();\r\n that.layMain.scrollTop(scrollTop + (delta > 0 ? -step : step));\r\n });\r\n };\r\n\r\n // 全局事件\r\n (function(){\r\n // 自适应尺寸\r\n _WIN.on('resize', function(){\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n });\r\n\r\n // 全局点击\r\n _DOC.on('click', function(){\r\n _DOC.trigger('table.remove.tool.panel');\r\n });\r\n\r\n // 工具面板移除事件\r\n _DOC.on('table.remove.tool.panel', function(){\r\n $('.' + ELEM_TOOL_PANEL).remove();\r\n });\r\n })();\r\n\r\n // 初始化\r\n table.init = function(filter, settings){\r\n settings = settings || {};\r\n var that = this;\r\n var inst = null;\r\n var elemTable = typeof filter === 'object' ? filter : (\r\n typeof filter === 'string'\r\n ? $('table[lay-filter=\"'+ filter +'\"]')\r\n : $(ELEM + '[lay-data], '+ ELEM + '[lay-options]')\r\n );\r\n var errorTips = 'Table element property lay-data configuration item has a syntax error: ';\r\n\r\n //遍历数据表格\r\n elemTable.each(function(){\r\n var othis = $(this);\r\n var attrData = othis.attr('lay-data');\r\n var tableData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || othis.attr('lay-options'))\r\n });\r\n\r\n var options = $.extend({\r\n elem: this\r\n ,cols: []\r\n ,data: []\r\n ,skin: othis.attr('lay-skin') //风格\r\n ,size: othis.attr('lay-size') //尺寸\r\n ,even: typeof othis.attr('lay-even') === 'string' //偶数行背景\r\n }, table.config, settings, tableData);\r\n\r\n filter && othis.hide();\r\n\r\n //获取表头数据\r\n othis.find('thead>tr').each(function(i){\r\n options.cols[i] = [];\r\n $(this).children().each(function(ii){\r\n var th = $(this);\r\n var attrData = th.attr('lay-data');\r\n var itemData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || th.attr('lay-options'))\r\n });\r\n\r\n var row = $.extend({\r\n title: th.text()\r\n ,colspan: parseInt(th.attr('colspan')) || 1 //列单元格\r\n ,rowspan: parseInt(th.attr('rowspan')) || 1 //行单元格\r\n }, itemData);\r\n\r\n options.cols[i].push(row);\r\n });\r\n });\r\n\r\n //缓存静态表体数据\r\n var trElem = othis.find('tbody>tr');\r\n\r\n //执行渲染\r\n var tableIns = table.render(options);\r\n\r\n //获取表体数据\r\n if (trElem.length && !settings.data && !tableIns.config.url) {\r\n var tdIndex = 0;\r\n table.eachCols(tableIns.config.id, function (i3, item3) {\r\n trElem.each(function(i1){\r\n options.data[i1] = options.data[i1] || {};\r\n var tr = $(this);\r\n var field = item3.field;\r\n options.data[i1][field] = tr.children('td').eq(tdIndex).html();\r\n });\r\n tdIndex++;\r\n })\r\n\r\n tableIns.reloadData({\r\n data: options.data\r\n });\r\n }\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //记录所有实例\r\n thisTable.that = {}; //记录所有实例对象\r\n thisTable.config = {}; //记录所有实例配置项\r\n\r\n var eachChildCols = function (index, cols, i1, item2) {\r\n //如果是组合列,则捕获对应的子列\r\n if (item2.colGroup) {\r\n var childIndex = 0;\r\n index++;\r\n item2.CHILD_COLS = [];\r\n // 找到它的子列所在cols的下标\r\n var i2 = i1 + (parseInt(item2.rowspan) || 1);\r\n layui.each(cols[i2], function (i22, item22) {\r\n if (item22.parentKey) { // 如果字段信息中包含了parentKey和key信息\r\n if (item22.parentKey === item2.key) {\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n } else {\r\n // 没有key信息以colspan数量所谓判断标准\r\n //如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n childIndex = childIndex + (parseInt(item22.colspan > 1 ? item22.colspan : 1));\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n });\r\n }\r\n };\r\n\r\n // 遍历表头\r\n table.eachCols = function(id, callback, cols){\r\n var config = thisTable.config[id] || {};\r\n var arrs = [], index = 0;\r\n\r\n cols = $.extend(true, [], cols || config.cols);\r\n\r\n //重新整理表头结构\r\n layui.each(cols, function(i1, item1){\r\n if (i1) return true; // 只需遍历第一层\r\n layui.each(item1, function(i2, item2){\r\n eachChildCols(index, cols, i1, item2);\r\n if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中\r\n arrs.push(item2)\r\n });\r\n });\r\n\r\n //重新遍历列,如果有子列,则进入递归\r\n var eachArrs = function(obj){\r\n layui.each(obj || arrs, function(i, item){\r\n if(item.CHILD_COLS) return eachArrs(item.CHILD_COLS);\r\n typeof callback === 'function' && callback(i, item);\r\n });\r\n };\r\n\r\n eachArrs();\r\n };\r\n\r\n // 获取表格选中状态\r\n table.checkStatus = function(id){\r\n var nums = 0;\r\n var invalidNum = 0;\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n\r\n //计算全选个数\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array' || item[table.config.disabledName]){\r\n invalidNum++; // 无效数据,或已删除的\r\n return;\r\n }\r\n if(item[table.config.checkName]){\r\n nums++;\r\n if(!item[table.config.disabledName]){\r\n arr.push(table.clearCacheKey(item));\r\n }\r\n }\r\n });\r\n return {\r\n data: arr, // 选中的数据\r\n isAll: data.length ? (nums === (data.length - invalidNum)) : false // 是否全选\r\n };\r\n };\r\n\r\n // 设置行选中状态\r\n table.setRowChecked = function(id, opts){\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n that.setRowChecked(opts);\r\n };\r\n\r\n // 获取表格当前页的所有行数据\r\n table.getData = function(id){\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array'){\r\n return;\r\n }\r\n arr.push(table.clearCacheKey(item));\r\n });\r\n return arr;\r\n };\r\n\r\n // 重置表格尺寸结构\r\n table.resize = function(id){\r\n // 若指定表格唯一 id,则只执行该 id 对应的表格实例\r\n if(id){\r\n var config = getThisTableConfig(id); // 获取当前实例配置项\r\n if(!config) return;\r\n\r\n getThisTable(id).resize();\r\n\r\n } else { // 否则重置所有表格实例尺寸\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n }\r\n };\r\n\r\n // 表格导出\r\n table.exportFile = function(id, data, opts){\r\n data = data || table.clearCacheKey(table.cache[id]);\r\n opts = typeof opts === 'object' ? opts : function(){\r\n var obj = {};\r\n opts && (obj.type = opts);\r\n return obj;\r\n }();\r\n\r\n var type = opts.type || 'csv';\r\n var thatTable = thisTable.that[id];\r\n var config = thisTable.config[id] || {};\r\n var textType = ({\r\n csv: 'text/csv',\r\n xls: 'application/vnd.ms-excel'\r\n })[type];\r\n var alink = document.createElement(\"a\");\r\n\r\n if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');\r\n\r\n // 处理 treeTable 数据\r\n if (config.tree && config.tree.view) {\r\n try {\r\n data = $.extend(true, [], table.cache[id]);\r\n data = (function fn(data) {\r\n return data.reduce(function (acc, obj){\r\n var children = obj.children || [];\r\n delete obj.children;\r\n return acc.concat(obj, fn(children));\r\n }, []);\r\n })(Array.from(data));\r\n } catch (e) {}\r\n }\r\n\r\n alink.href = 'data:'+ textType +';charset=utf-8,\\ufeff'+ encodeURIComponent(function(){\r\n var dataTitle = [];\r\n var dataMain = [];\r\n var dataTotal = [];\r\n var fieldsIsHide = {};\r\n\r\n // 表头和表体\r\n layui.each(data, function(i1, item1){\r\n var vals = [];\r\n if(typeof id === 'object'){ // 若 id 参数直接为表头数据\r\n layui.each(id, function(i, item){\r\n i1 == 0 && dataTitle.push(item || '');\r\n });\r\n layui.each(layui.isArray(item1) ? $.extend([], item1) : table.clearCacheKey(item1), function(i2, item2){\r\n vals.push('\"'+ (item2 || '') +'\"');\r\n });\r\n } else {\r\n table.eachCols(id, function(i3, item3){\r\n if(item3.ignoreExport === false || item3.field && item3.type == 'normal'){\r\n // 不导出隐藏列,除非设置 ignoreExport 强制导出\r\n if (\r\n (item3.hide && item3.ignoreExport !== false) ||\r\n item3.ignoreExport === true // 忽略导出\r\n ) {\r\n if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列\r\n return;\r\n }\r\n\r\n var content = item1[item3.field];\r\n if(content === undefined || content === null) content = '';\r\n\r\n i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');\r\n\r\n // 解析内容\r\n content = parseTempData.call(thatTable, {\r\n item3: item3,\r\n content: content,\r\n tplData: item1,\r\n text: 'text',\r\n obj: {\r\n td: function(field){\r\n var td = thatTable.layBody.find('tr[data-index=\"'+ i1 +'\"]>td');\r\n return td.filter('[data-field=\"'+ field +'\"]');\r\n }\r\n }\r\n });\r\n\r\n // 异常处理\r\n content = content.replace(/\"/g, '\"\"'); // 避免内容存在「双引号」导致异常分隔\r\n // content += '\\t'; // 加「水平制表符」 避免内容被转换格式\r\n content = '\"'+ content +'\"'; // 避免内容存在「逗号」导致异常分隔\r\n\r\n // 插入内容\r\n vals.push(content);\r\n }else if(item3.field && item3.type !== 'normal'){\r\n // https://gitee.com/layui/layui/issues/I8PHCR\r\n if(i1 == 0) fieldsIsHide[item3.field] = true;\r\n }\r\n });\r\n }\r\n dataMain.push(vals.join(','));\r\n });\r\n\r\n // 表合计\r\n thatTable && layui.each(thatTable.dataTotal, function(i, o){\r\n fieldsIsHide[o.field] || dataTotal.push('\"' + (o.total || '') + '\"');\r\n });\r\n\r\n return dataTitle.join(',') + '\\r\\n' + dataMain.join('\\r\\n') + '\\r\\n' + dataTotal.join(',');\r\n }());\r\n\r\n alink.download = (opts.title || config.title || 'table_'+ (config.index || '')) + '.' + type;\r\n document.body.appendChild(alink);\r\n alink.click();\r\n document.body.removeChild(alink);\r\n };\r\n\r\n // 获取表格配置信息\r\n table.getOptions = function (id) {\r\n return getThisTableConfig(id);\r\n }\r\n\r\n // 显示或隐藏列\r\n table.hideCol = function (id, cols) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (layui.type(cols) === 'boolean') {\r\n // 显示全部或者隐藏全部\r\n that.eachCols(function (i2, item2) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if (col.hide != cols) {\r\n var hide = col.hide = cols;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n })\r\n } else {\r\n cols = layui.isArray(cols) ? cols : [cols];\r\n layui.each(cols, function (i1, item1) {\r\n that.eachCols(function (i2, item2) {\r\n if (item1.field === item2.field) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if ('hide' in item1 && col.hide != item1.hide) {\r\n var hide = col.hide = !!item1.hide;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n }\r\n })\r\n });\r\n }\r\n $('.' + ELEM_TOOL_PANEL).remove(); // 关闭字段筛选面板如果打开的话\r\n // 重新适配尺寸\r\n that.resize();\r\n }\r\n\r\n // 重载\r\n table.reload = function(id, options, deep, type){\r\n var config = getThisTableConfig(id); //获取当前实例配置项\r\n if(!config) return;\r\n\r\n var that = getThisTable(id);\r\n that.reload(options, deep, type);\r\n\r\n return thisTable.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n table.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[3] = 'reloadData';\r\n\r\n // 重载时,影响整个结构的参数,不适合更新的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'elem', 'id', 'cols', 'width', 'height', 'maxHeight',\r\n 'toolbar', 'defaultToolbar',\r\n 'className', 'css', 'pagebar'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return table.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n table.render = function(options){\r\n var inst = new Class(options);\r\n return thisTable.call(inst);\r\n };\r\n\r\n // 清除临时 Key\r\n table.clearCacheKey = function(data){\r\n data = $.extend({}, data);\r\n delete data[table.config.checkName];\r\n delete data[table.config.indexName];\r\n delete data[table.config.numbersName];\r\n delete data[table.config.disabledName];\r\n return data;\r\n };\r\n\r\n // 自动完成渲染\r\n $(function(){\r\n table.init();\r\n });\r\n\r\n exports(MOD_NAME, table);\r\n});\r\n","/**\r\n * layui.treeTable\r\n * 树表组件\r\n */\r\n\r\nlayui.define(['table'], function (exports) {\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var form = layui.form;\r\n var table = layui.table;\r\n var hint = layui.hint();\r\n\r\n // api\r\n var treeTable = {\r\n config: {},\r\n // 事件\r\n on: table.on,\r\n // 遍历字段\r\n eachCols: table.eachCols,\r\n index: table.index,\r\n set: function (options) {\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n resize: table.resize,\r\n getOptions: table.getOptions,\r\n hideCol: table.hideCol,\r\n renderData: table.renderData\r\n };\r\n\r\n // 操作当前实例\r\n var thisTreeTable = function () {\r\n var that = this;\r\n var options = that.config\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function (options, deep) {\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function (options, deep) {\r\n treeTable.reloadData(id, options, deep);\r\n }\r\n }\r\n }\r\n\r\n // 获取当前实例\r\n var getThisTable = function (id) {\r\n var that = thisTreeTable.that[id];\r\n if (!that) hint.error(id ? ('The treeTable instance with ID \\'' + id + '\\' not found') : 'ID argument required');\r\n return that || null;\r\n }\r\n\r\n // 字符\r\n var MOD_NAME = 'treeTable';\r\n var HIDE = 'layui-hide';\r\n\r\n var ELEM_VIEW = '.layui-table-view';\r\n var ELEM_TREE = '.layui-table-tree';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n\r\n var TABLE_TREE = 'layui-table-tree';\r\n var LAY_DATA_INDEX = 'LAY_DATA_INDEX';\r\n var LAY_DATA_INDEX_HISTORY = 'LAY_DATA_INDEX_HISTORY';\r\n var LAY_PARENT_INDEX = 'LAY_PARENT_INDEX';\r\n var LAY_CHECKBOX_HALF = 'LAY_CHECKBOX_HALF';\r\n var LAY_EXPAND = 'LAY_EXPAND';\r\n var LAY_HAS_EXPANDED = 'LAY_HAS_EXPANDED';\r\n var LAY_ASYNC_STATUS = 'LAY_ASYNC_STATUS';\r\n var LAY_CASCADE = ['all', 'parent', 'children', 'none'];\r\n\r\n // 构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++treeTable.index;\r\n that.config = $.extend(true, {}, that.config, treeTable.config, options);\r\n // 处理一些属性\r\n that.init();\r\n that.render();\r\n };\r\n\r\n var updateCache = function (id, childrenKey, data) {\r\n var tableCache = table.cache[id];\r\n layui.each(data || tableCache, function (index, item) {\r\n var itemDataIndex = item[LAY_DATA_INDEX] || '';\r\n if (itemDataIndex.indexOf('-') !== -1) {\r\n tableCache[itemDataIndex] = item\r\n }\r\n item[childrenKey] && updateCache(id, childrenKey, item[childrenKey]);\r\n })\r\n }\r\n\r\n var updateOptions = function (id, options, reload) {\r\n var that = getThisTable(id);\r\n reload === 'reloadData' || (that.status = { // 用于记录一些状态信息\r\n expand: {} // 折叠状态\r\n });\r\n var thatOptionsTemp = $.extend(true, {}, that.getOptions(), options);\r\n var treeOptions = thatOptionsTemp.tree;\r\n var childrenKey = treeOptions.customName.children;\r\n var idKey = treeOptions.customName.id;\r\n // 处理属性\r\n delete options.hasNumberCol;\r\n delete options.hasChecboxCol;\r\n delete options.hasRadioCol;\r\n table.eachCols(null, function (i1, item1) {\r\n if (item1.type === 'numbers') {\r\n options.hasNumberCol = true;\r\n } else if (item1.type === 'checkbox') {\r\n options.hasChecboxCol = true;\r\n } else if (item1.type === 'radio') {\r\n options.hasRadioCol = true;\r\n }\r\n }, thatOptionsTemp.cols)\r\n\r\n var parseData = options.parseData;\r\n var done = options.done;\r\n\r\n if (thatOptionsTemp.url) {\r\n // 异步加载的时候需要处理parseData进行转换\r\n if (!reload || (reload && parseData && !parseData.mod)) {\r\n options.parseData = function () {\r\n var parseDataThat = this;\r\n var args = arguments;\r\n var retData = args[0];\r\n if (layui.type(parseData) === 'function') {\r\n retData = parseData.apply(parseDataThat, args) || args[0];\r\n }\r\n var dataName = parseDataThat.response.dataName;\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用\r\n retData[dataName] = that.flatToTree(retData[dataName]);\r\n }\r\n // 处理节点状态\r\n updateStatus(retData[dataName], function (item) {\r\n item[LAY_EXPAND] = LAY_EXPAND in item ? item[LAY_EXPAND] : (item[idKey] !== undefined && that.status.expand[item[idKey]])\r\n }, childrenKey);\r\n\r\n if (parseDataThat.autoSort && parseDataThat.initSort && parseDataThat.initSort.type) {\r\n layui.sort(retData[dataName], parseDataThat.initSort.field, parseDataThat.initSort.type === 'desc', true)\r\n }\r\n\r\n that.initData(retData[dataName]);\r\n\r\n return retData;\r\n }\r\n options.parseData.mod = true\r\n }\r\n } else {\r\n options.data = options.data || [];\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData) {\r\n options.data = that.flatToTree(options.data);\r\n }\r\n that.initData(options.data);\r\n }\r\n\r\n if (!reload || (reload && done && !done.mod)) {\r\n options.done = function () {\r\n var args = arguments;\r\n var doneThat = this;\r\n var isRenderData = args[3]; // 是否是 renderData\r\n if (!isRenderData) {\r\n delete that.isExpandAll;\r\n }\r\n\r\n var tableView = this.elem.next();\r\n that.updateStatus(null, {\r\n LAY_HAS_EXPANDED: false // 去除已经打开过的状态\r\n });\r\n // 更新cache中的内容 将子节点也存到cache中\r\n updateCache(id, childrenKey);\r\n // 更新全选框的状态\r\n var layTableAllChooseElem = tableView.find('[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]');\r\n if (layTableAllChooseElem.length) {\r\n var checkStatus = treeTable.checkStatus(id);\r\n layTableAllChooseElem.prop({\r\n checked: checkStatus.isAll && checkStatus.data.length,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length\r\n })\r\n }\r\n if (!isRenderData && thatOptionsTemp.autoSort && thatOptionsTemp.initSort && thatOptionsTemp.initSort.type) {\r\n treeTable.sort(id);\r\n }\r\n\r\n that.renderTreeTable(tableView);\r\n\r\n if (layui.type(done) === 'function') {\r\n return done.apply(doneThat, args);\r\n }\r\n }\r\n options.done.mod = true;\r\n }\r\n }\r\n\r\n Class.prototype.init = function () {\r\n var that = this;\r\n var options = that.config;\r\n var cascade = options.tree.data.cascade;\r\n if (LAY_CASCADE.indexOf(cascade) === -1) {\r\n options.tree.data.cascade = 'all'; // 超出范围的都重置为全联动\r\n }\r\n\r\n // 先初始一个空的表格以便拿到对应的表格实例信息\r\n var tableIns = table.render($.extend({}, options, {\r\n data: [],\r\n url: '',\r\n done: null\r\n }))\r\n var id = tableIns.config.id;\r\n thisTreeTable.that[id] = that; // 记录当前实例对象\r\n that.tableIns = tableIns;\r\n\r\n updateOptions(id, options);\r\n }\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n tree: {\r\n customName: {\r\n children: \"children\", // 节点数据中保存子节点数据的属性名称\r\n isParent: \"isParent\", // 节点数据保存节点是否为父节点的属性名称\r\n name: \"name\", // 节点数据保存节点名称的属性名称\r\n id: \"id\", // 唯一标识的属性名称\r\n pid: \"parentId\", // 父节点唯一标识的属性名称\r\n icon: \"icon\" // 图标的属性名称\r\n },\r\n view: {\r\n indent: 14, // 层级缩进量\r\n flexIconClose: '', // 关闭时候的折叠图标\r\n flexIconOpen: '', // 打开时候的折叠图标\r\n showIcon: true, // 是否显示图标(节点类型图标)\r\n icon: '', // 节点图标,如果设置了这个属性或者数据中有这个字段信息,不管打开还是关闭都以这个图标的值为准\r\n iconClose: '', // 关闭时候的图标\r\n iconOpen: '', // 打开时候的图标\r\n iconLeaf: '', // 叶子节点的图标\r\n showFlexIconIfNotParent: false, // 当节点不是父节点的时候是否显示折叠图标\r\n dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识\r\n expandAllDefault: false // 默认展开所有节点\r\n },\r\n data: {\r\n isSimpleData: false, // 是否简单数据模式\r\n rootPid: null, // 根节点的父 ID 值\r\n cascade: 'all' // 级联方式 默认全部级联:all 可选 级联父 parent 级联子 children\r\n },\r\n async: {\r\n enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用\r\n url: '', // 异步加载的接口,可以根据需要设置与顶层接口不同的接口,如果相同可以不设置该参数\r\n type: null, // 请求的接口类型,设置可缺省同上\r\n contentType: null, // 提交参数的数据类型,设置可缺省同上\r\n headers: null, // 设置可缺省同上\r\n where: null, // 设置可缺省同上\r\n autoParam: [] // 自动参数\r\n },\r\n callback: {\r\n beforeExpand: null, // 展开前的回调 return false 可以阻止展开的动作\r\n onExpand: null // 展开之后的回调\r\n }\r\n },\r\n };\r\n\r\n Class.prototype.getOptions = function () {\r\n var that = this;\r\n if (that.tableIns) {\r\n return table.getOptions(that.tableIns.config.id); // 获取表格的实时配置信息\r\n } else {\r\n return that.config;\r\n }\r\n };\r\n\r\n function flatToTree(flatArr, idKey, pIdKey, childrenKey, rootPid) {\r\n idKey = idKey || 'id';\r\n pIdKey = pIdKey || 'parentId';\r\n childrenKey = childrenKey || 'children';\r\n // 创建一个空的 nodes 对象,用于保存所有的节点\r\n var nodes = {};\r\n // 遍历所有节点,将其加入 nodes 对象中\r\n var idTemp = '';\r\n layui.each(flatArr, function (index, item) {\r\n idTemp = idKey + item[idKey];\r\n nodes[idTemp] = $.extend({}, item);\r\n nodes[idTemp][childrenKey] = [];\r\n })\r\n // 遍历所有节点,将其父子关系加入 nodes 对象\r\n var pidTemp = '';\r\n layui.each(nodes, function (index, item) {\r\n pidTemp = idKey + item[pIdKey];\r\n if (pidTemp && nodes[pidTemp]) {\r\n nodes[pidTemp][childrenKey].push(item);\r\n }\r\n })\r\n // 返回顶层节点\r\n return Object.keys(nodes)\r\n .map(function(k) {\r\n return nodes[k];\r\n })\r\n .filter(function (item) {\r\n return rootPid ? item[pIdKey] === rootPid : !item[pIdKey];\r\n })\r\n }\r\n\r\n Class.prototype.flatToTree = function (tableData) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var tableId = options.id;\r\n\r\n tableData = tableData || table.cache[tableId];\r\n\r\n return flatToTree(tableData, customName.id, customName.pid, customName.children, treeOptions.data.rootPid)\r\n }\r\n\r\n Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n var pIdKey = customName.pid;\r\n\r\n var flat = [];\r\n layui.each(tableData, function (i1, item1) {\r\n var dataIndex = (parentIndex ? parentIndex + '-' : '') + i1;\r\n var dataNew = $.extend({}, item1);\r\n dataNew[pIdKey] = item1[pIdKey] || parentId;\r\n flat.push(dataNew);\r\n flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex));\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n // 通过当前行数据返回 treeNode 信息\r\n Class.prototype.getTreeNode = function (data) {\r\n var that = this;\r\n if (!data) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var customName = treeOptions.customName;\r\n\r\n // 带上一些常用的方法\r\n return {\r\n data: data,\r\n dataIndex: data[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(data[LAY_PARENT_INDEX])\r\n },\r\n };\r\n }\r\n\r\n // 通过 index 返回节点信息\r\n Class.prototype.getNodeByIndex = function (index) {\r\n var that = this;\r\n var treeNodeData = that.getNodeDataByIndex(index);\r\n if (!treeNodeData) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var parentKey = customName.parent;\r\n var tableId = options.id;\r\n\r\n var treeNode = {\r\n data: treeNodeData,\r\n dataIndex: treeNodeData[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(treeNodeData[LAY_PARENT_INDEX])\r\n },\r\n update: function (data) {\r\n return treeTable.updateNode(tableId, index, data)\r\n },\r\n remove: function () {\r\n return treeTable.removeNode(tableId, index)\r\n },\r\n expand: function (opts) {\r\n return treeTable.expandNode(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n },\r\n setChecked: function (opts) {\r\n return treeTable.setRowChecked(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n }\r\n };\r\n\r\n treeNode.dataIndex = index;\r\n return treeNode;\r\n }\r\n\r\n // 通过 id 获取节点信息\r\n Class.prototype.getNodeById = function (id) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var idKey = customName.id;\r\n\r\n // 通过 id 拿到数据的 dataIndex\r\n var dataIndex = '';\r\n var tableDataFlat = treeTable.getData(options.id, true);\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[idKey] === id) {\r\n dataIndex = item1[LAY_DATA_INDEX];\r\n return true;\r\n }\r\n })\r\n if (!dataIndex) {\r\n return;\r\n }\r\n\r\n // 用 index\r\n return that.getNodeByIndex(dataIndex);\r\n }\r\n\r\n // 通过 index 获取节点数据\r\n Class.prototype.getNodeDataByIndex = function (index, clone, newValue) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableCache = table.cache[tableId];\r\n\r\n // 获取当前行中的数据\r\n var dataCache = tableCache[index];\r\n\r\n // 若非删除操作,则返回合并后的数据\r\n if (newValue !== 'delete' && dataCache) {\r\n $.extend(dataCache, newValue);\r\n return clone ? $.extend({}, dataCache) : dataCache;\r\n }\r\n\r\n // 删除操作\r\n var dataRet = tableCache;\r\n var indexArr = String(index).split('-');\r\n\r\n // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理\r\n\r\n // 根据 index 进行数据处理\r\n for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) {\r\n if (newValue && i === indexArr.length - 1) {\r\n if (newValue === 'delete') { // 删除并返回当前数据\r\n // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S)\r\n /*if (tableCache) {\r\n layui.each(tableCache, function (i1, item1) {\r\n if (item1[LAY_DATA_INDEX] === index) {\r\n tableCache.splice(i1, 1);\r\n return true;\r\n }\r\n })\r\n }*/\r\n return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0];\r\n } else { // 更新值\r\n $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue);\r\n }\r\n }\r\n dataRet = i ? dataRet[childrenKey][indexArr[i]] : dataRet[indexArr[i]];\r\n }\r\n return clone ? $.extend({}, dataRet) : dataRet;\r\n }\r\n\r\n treeTable.getNodeDataByIndex = function (id, index) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n return that.getNodeDataByIndex(index, true);\r\n }\r\n\r\n // 判断是否是父节点\r\n var checkIsParent = function (data, isParentKey, childrenKey) {\r\n isParentKey = isParentKey || 'isParent';\r\n childrenKey = childrenKey || 'children';\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n checkIsParent(item1[childrenKey]);\r\n }\r\n })\r\n }\r\n\r\n Class.prototype.initData = function (data, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n\r\n data = data || that.getTableData();\r\n\r\n var customName = treeOptions.customName;\r\n var isParentKey = customName.isParent;\r\n var childrenKey = customName.children;\r\n\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n }\r\n item1[LAY_DATA_INDEX_HISTORY] = item1[LAY_DATA_INDEX];\r\n item1[LAY_PARENT_INDEX] = parentIndex = parentIndex || '';\r\n var dataIndex = item1[LAY_DATA_INDEX] = (parentIndex ? parentIndex + '-' : '') + i1;\r\n that.initData(item1[childrenKey] || [], dataIndex);\r\n });\r\n\r\n updateCache(tableId, childrenKey, data);\r\n\r\n return data;\r\n }\r\n\r\n // 与 tableId 有关带防抖的方法\r\n var debounceFn = (function () {\r\n var fn = {};\r\n return function (tableId, func, wait) {\r\n if (!fn[tableId]) {\r\n fn[tableId] = layui.debounce(func, wait);\r\n }\r\n return fn[tableId];\r\n }\r\n })()\r\n\r\n // 优化参数,添加一个 getNodeByIndex 方法 只传 表格id 和行 dataIndex 分几步优化 todo\r\n var expandNode = function (treeNode, expandFlag, sonSign, focus, callbackFlag) {\r\n // treeNode // 需要展开的节点\r\n var trElem = treeNode.trElem;\r\n var tableViewElem = treeNode.tableViewElem || trElem.closest(ELEM_VIEW);\r\n var tableId = treeNode.tableId || tableViewElem.attr('lay-id');\r\n var options = treeNode.options || table.getOptions(tableId);\r\n var dataIndex = treeNode.dataIndex || trElem.attr('lay-data-index'); // 可能出现多层\r\n var treeTableThat = getThisTable(tableId);\r\n\r\n var treeOptions = options.tree || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n\r\n var trData = treeTableThat.getNodeDataByIndex(dataIndex);\r\n\r\n // 后续调优:对已经展开的节点进行展开和已经关闭的节点进行关闭应该做优化减少不必要的代码执行 todo\r\n var isToggle = layui.type(expandFlag) !== 'boolean';\r\n var trExpand = isToggle ? !trData[LAY_EXPAND] : expandFlag;\r\n var retValue = trData[isParentKey] ? trExpand : null;\r\n\r\n if (callbackFlag && trExpand != trData[LAY_EXPAND] && (!trData[LAY_ASYNC_STATUS] || trData[LAY_ASYNC_STATUS] === 'local')) {\r\n var beforeExpand = treeOptions.callback.beforeExpand;\r\n if (layui.type(beforeExpand) === 'function') {\r\n if (beforeExpand(tableId, trData, expandFlag) === false) {\r\n return retValue;\r\n }\r\n }\r\n }\r\n\r\n var trExpanded = trData[LAY_HAS_EXPANDED]; // 展开过,包括异步加载\r\n\r\n // 找到表格中的同类节点(需要找到lay-data-index一致的所有行)\r\n var trsElem = tableViewElem.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n // 处理折叠按钮图标\r\n var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n flexIconElem.html(trExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose)\r\n trData[isParentKey] && flexIconElem.css('visibility', 'visible');\r\n // 处理节点图标\r\n treeOptions.view.showIcon && trsElem\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(trExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose);\r\n trData[LAY_EXPAND] = trExpand;\r\n var trDataId = trData[customName.id];\r\n trDataId !== undefined && (treeTableThat.status.expand[trDataId] = trExpand);\r\n if (retValue === null) {\r\n return retValue;\r\n }\r\n\r\n var childNodes = trData[customName.children] || [];\r\n // 处理子节点展示与否\r\n if (trExpand) {\r\n // 展开\r\n if (trExpanded) { // 已经展开过\r\n if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决\r\n trsElem.nextAll(childNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).removeClass(HIDE);\r\n layui.each(childNodes, function (i1, item1) {\r\n if (!item1[isParentKey]) {\r\n return;\r\n }\r\n\r\n if (sonSign && !isToggle && !item1[LAY_EXPAND]) { // 非状态切换的情况下\r\n // 级联展开子节点\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n } else if (item1[LAY_EXPAND]) { // 初始化级联展开\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, true);\r\n }\r\n });\r\n } else {\r\n var asyncSetting = treeOptions.async || {};\r\n var asyncUrl = asyncSetting.url || options.url;\r\n if (asyncSetting.enable && trData[isParentKey] && !trData[LAY_ASYNC_STATUS]) {\r\n trData[LAY_ASYNC_STATUS] = 'loading';\r\n flexIconElem.html('');\r\n\r\n // 异步获取子节点数据成功之后处理方法\r\n var asyncSuccessFn = function (data) {\r\n trData[LAY_ASYNC_STATUS] = 'success';\r\n trData[customName.children] = data;\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX])\r\n expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag);\r\n }\r\n\r\n var format = asyncSetting.format; // 自定义数据返回方法\r\n if (layui.type(format) === 'function') {\r\n format(trData, options, asyncSuccessFn);\r\n return retValue;\r\n }\r\n\r\n var params = {};\r\n // 参数\r\n var data = $.extend(params, asyncSetting.where || options.where);\r\n var asyncAutoParam = asyncSetting.autoParam;\r\n layui.each(asyncAutoParam, function (index, item) {\r\n var itemStr = item;\r\n var itemArr = item.split('=');\r\n data[itemArr[0].trim()] = trData[(itemArr[1] || itemArr[0]).trim()]\r\n })\r\n\r\n var asyncContentType = asyncSetting.contentType || options.contentType;\r\n if (asyncContentType && asyncContentType.indexOf(\"application/json\") == 0) { // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n var asyncType = asyncSetting.method || options.method;\r\n var asyncDataType = asyncSetting.dataType || options.dataType;\r\n var asyncJsonpCallback = asyncSetting.jsonpCallback || options.jsonpCallback;\r\n var asyncHeaders = asyncSetting.headers || options.headers;\r\n var asyncParseData = asyncSetting.parseData || options.parseData;\r\n var asyncResponse = asyncSetting.response || options.response;\r\n\r\n $.ajax({\r\n type: asyncType || 'get',\r\n url: asyncUrl,\r\n contentType: asyncContentType,\r\n data: data,\r\n dataType: asyncDataType || 'json',\r\n jsonpCallback: asyncJsonpCallback,\r\n headers: asyncHeaders || {},\r\n success: function (res) {\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if (typeof asyncParseData === 'function') {\r\n res = asyncParseData.call(options, res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if (res[asyncResponse.statusName] != asyncResponse.statusCode) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n flexIconElem.html('');\r\n // 事件\r\n } else {\r\n // 正常返回\r\n asyncSuccessFn(res[asyncResponse.dataName]);\r\n }\r\n },\r\n error: function (e, msg) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n return retValue;\r\n }\r\n trExpanded = trData[LAY_HAS_EXPANDED] = true;\r\n if (childNodes.length) {\r\n // 判断是否需要排序\r\n if (options.initSort && (!options.url || options.autoSort)) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n layui.sort(childNodes, initSort.field, initSort.type === 'desc', true);\r\n } else {\r\n // 恢复默认\r\n layui.sort(childNodes, table.config.indexName, null, true);\r\n }\r\n }\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]);\r\n // 将数据通过模板得出节点的html代码\r\n var str2 = table.getTrHtml(tableId, childNodes, null, null, dataIndex);\r\n\r\n var str2Obj = {\r\n trs: $(str2.trs.join('')),\r\n trs_fixed: $(str2.trs_fixed.join('')),\r\n trs_fixed_r: $(str2.trs_fixed_r.join(''))\r\n }\r\n var dataLevel = dataIndex.split('-').length - 1;\r\n var dataLevelNew = (dataLevel || 0) + 1;\r\n layui.each(childNodes, function (childIndex, childItem) {\r\n str2Obj.trs.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed_r.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n })\r\n\r\n tableViewElem.find(ELEM_MAIN).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs);\r\n tableViewElem.find(ELEM_FIXL).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed);\r\n tableViewElem.find(ELEM_FIXR).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed_r);\r\n\r\n // 初始化新增的节点中的内容\r\n treeTableThat.renderTreeTable(str2Obj.trs, dataLevelNew);\r\n\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n // 级联展开/关闭子节点\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n })\r\n }\r\n }\r\n }\r\n } else {\r\n treeTableThat.isExpandAll = false;\r\n // 关闭\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n });\r\n tableViewElem.find(childNodes.map(function (value, index, array) { // 只隐藏直接子节点,其他由递归的处理\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n } else {\r\n var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], dataIndex);\r\n tableViewElem.find(childNodesFlat.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n }\r\n }\r\n\r\n\r\n debounceFn('resize-' + tableId, function () {\r\n treeTable.resize(tableId);\r\n }, 0)();\r\n\r\n if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {\r\n var onExpand = treeOptions.callback.onExpand;\r\n layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);\r\n }\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * 展开或关闭一个节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Number|String} opts.index 展开行的数据下标\r\n * @param {Boolean} [opts.expandFlag] 展开、关闭、切换\r\n * @param {Boolean} [opts.inherit] 是否级联子节点\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件\r\n * @return [{Boolean}] 状态结果\r\n * */\r\n treeTable.expandNode = function (id, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n opts = opts || {};\r\n\r\n var index = opts.index;\r\n var expandFlag = opts.expandFlag;\r\n var sonSign = opts.inherit;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n return expandNode({\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + index + '\"]').first()\r\n }, expandFlag, sonSign, null, callbackFlag)\r\n };\r\n\r\n /**\r\n * 展开或关闭全部节点\r\n * @param {String} id 树表id\r\n * @param {Boolean} expandFlag 展开或关闭\r\n * */\r\n treeTable.expandAll = function (id, expandFlag) {\r\n if (layui.type(expandFlag) !== 'boolean') {\r\n return hint.error('expandAll 的展开状态参数只接收true/false')\r\n }\r\n\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n that.isExpandAll = expandFlag;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var isParentKey = treeOptions.customName.isParent;\r\n var idKey = treeOptions.customName.id;\r\n var showFlexIconIfNotParent = treeOptions.view.showFlexIconIfNotParent;\r\n\r\n if (!expandFlag) {\r\n // 关闭所有\r\n // 将所有已经打开的节点的状态设置为关闭,\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = false;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = false);\r\n }\r\n }) // 只处理当前页,如果需要处理全部表格,需要用treeTable.updateStatus\r\n // 隐藏所有非顶层的节点\r\n tableView.find('.layui-table-box tbody tr[data-level!=\"0\"]').addClass(HIDE);\r\n\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconClose);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconClose);\r\n } else {\r\n var tableDataFlat = treeTable.getData(id, true);\r\n // 展开所有\r\n // 存在异步加载\r\n if (treeOptions.async.enable) {\r\n // 判断是否有未加载过的节点\r\n var isAllAsyncDone = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_ASYNC_STATUS]) {\r\n isAllAsyncDone = false;\r\n return true;\r\n }\r\n })\r\n // 有未加载过的节点\r\n if (!isAllAsyncDone) {\r\n // 逐个展开\r\n layui.each(treeTable.getData(id), function (i1, item1) {\r\n treeTable.expandNode(id, {\r\n index: item1[LAY_DATA_INDEX],\r\n expandFlag: true,\r\n inherit: true\r\n })\r\n })\r\n return;\r\n }\r\n }\r\n\r\n // 先判断是否全部打开过了\r\n var isAllExpanded = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_HAS_EXPANDED]) {\r\n isAllExpanded = false;\r\n return true;\r\n }\r\n })\r\n // 如果全部节点已经都打开过,就可以简单处理跟隐藏所有节点反操作\r\n if (isAllExpanded) {\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n // 显示所有子节点\r\n tableView.find('tbody tr[data-level!=\"0\"]').removeClass(HIDE);\r\n // 处理节点的图标\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconOpen);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconOpen);\r\n } else {\r\n // 如果有未打开过的父节点,将 tr 内容全部重新生成\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[LAY_HAS_EXPANDED] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n if (options.initSort && options.initSort.type && options.autoSort) {\r\n return treeTable.sort(id);\r\n }\r\n var trAll = table.getTrHtml(id, tableDataFlat);\r\n\r\n var trAllObj = {\r\n trs: $(trAll.trs.join('')),\r\n trs_fixed: $(trAll.trs_fixed.join('')),\r\n trs_fixed_r: $(trAll.trs_fixed_r.join(''))\r\n }\r\n var props;\r\n layui.each(tableDataFlat, function (dataIndex, dataItem) {\r\n var dataLevel = dataItem[LAY_DATA_INDEX].split('-').length - 1;\r\n props = {\r\n 'data-index': dataItem[LAY_DATA_INDEX],\r\n 'lay-data-index': dataItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevel\r\n };\r\n trAllObj.trs.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props)\r\n })\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody').html(trAllObj[['trs', 'trs_fixed', 'trs_fixed_r'][i]]);\r\n });\r\n that.renderTreeTable(tableView, 0, false);\r\n }\r\n }\r\n treeTable.resize(id);\r\n }\r\n\r\n Class.prototype.renderTreeTable = function (tableView, level, sonSign) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n !tableViewElem.hasClass(TABLE_TREE) && tableViewElem.addClass(TABLE_TREE);\r\n var tableId = options.id;\r\n var treeOptions = options.tree || {};\r\n var treeOptionsData = treeOptions.data || {};\r\n var treeOptionsView = treeOptions.view || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n var tableFilterId = tableViewElem.attr('lay-filter');\r\n var treeTableThat = that;\r\n // var tableData = treeTableThat.getTableData();\r\n\r\n level = level || 0;\r\n\r\n if (!level) {\r\n // 初始化的表格里面没有level信息,可以作为顶层节点的判断\r\n tableViewElem.find('.layui-table-body tr:not([data-level])').attr('data-level', level);\r\n layui.each(table.cache[tableId], function (dataIndex, dataItem) {\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n }\r\n\r\n var dataExpand = null; // 记录需要展开的数据\r\n var nameKey = customName.name;\r\n var indent = treeOptionsView.indent || 14;\r\n layui.each(tableView.find('td[data-field=\"' + nameKey + '\"]'), function (index, item) {\r\n item = $(item);\r\n var trElem = item.closest('tr');\r\n var itemCell = item.children('.layui-table-cell');\r\n if (itemCell.hasClass('layui-table-tree-item')) {\r\n return;\r\n }\r\n var trIndex = trElem.attr('lay-data-index');\r\n if (!trIndex) { // 排除在统计行中的节点\r\n return;\r\n }\r\n trElem = tableViewElem.find('tr[lay-data-index=\"' + trIndex + '\"]');\r\n var trData = treeTableThat.getNodeDataByIndex(trIndex);\r\n\r\n if (trData[LAY_EXPAND] && trData[isParentKey]) {\r\n // 需要展开\r\n dataExpand = dataExpand || {};\r\n dataExpand[trIndex] = true;\r\n }\r\n if (trData[LAY_CHECKBOX_HALF]) {\r\n trElem.find('input[type=\"checkbox\"][name=\"layTableCheckbox\"]').prop('indeterminate', true);\r\n }\r\n\r\n var htmlTemp = itemCell.html();\r\n itemCell = trElem.find('td[data-field=\"' + nameKey + '\"]>div.layui-table-cell');\r\n itemCell.addClass('layui-table-tree-item');\r\n var flexIconElem = itemCell\r\n .html(['
                          ',\r\n trData[LAY_EXPAND] ? treeOptionsView.flexIconOpen : treeOptionsView.flexIconClose, // 折叠图标\r\n '
                          ',\r\n treeOptionsView.showIcon ? '
                          ' +\r\n (trData[customName.icon] || treeOptionsView.icon ||\r\n (trData[isParentKey] ?\r\n (trData[LAY_EXPAND] ? treeOptionsView.iconOpen : treeOptionsView.iconClose) :\r\n treeOptionsView.iconLeaf) ||\r\n '') + '
                          ' : '', // 区分父子节点\r\n htmlTemp].join('')) // 图标要可定制\r\n .find('.layui-table-tree-flexIcon');\r\n\r\n // 添加展开按钮的事件\r\n flexIconElem.on('click', function (event) {\r\n layui.stope(event);\r\n // 处理数据\r\n // var trElem = item.closest('tr');\r\n expandNode({trElem: trElem}, null, null, null, true);\r\n });\r\n });\r\n\r\n if (!level && treeOptions.view.expandAllDefault && that.isExpandAll === undefined) {\r\n return treeTable.expandAll(tableId, true); // 默认展开全部\r\n }\r\n\r\n // 当前层的数据看看是否需要展开\r\n if (sonSign !== false && dataExpand) {\r\n layui.each(dataExpand, function (index, item) {\r\n var trDefaultExpand = tableViewElem.find('tr[lay-data-index=\"' + index + '\"]');\r\n trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);\r\n expandNode({trElem: trDefaultExpand.first()}, true);\r\n });\r\n // #1463 expandNode 中已经展开过的节点不会重新渲染\r\n debounceFn('renderTreeTable2-' + tableId, function () {\r\n form.render($('.layui-table-tree[lay-id=\"' + tableId + '\"]'));\r\n }, 0)();\r\n } else {\r\n debounceFn('renderTreeTable-' + tableId, function () {\r\n options.hasNumberCol && formatNumber(that);\r\n form.render($('.layui-table-tree[lay-id=\"' + tableId + '\"]'));\r\n }, 0)();\r\n }\r\n }\r\n\r\n var formatNumber = function (that) {\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n\r\n var num = 0;\r\n var trMain = tableViewElem.find('.layui-table-main tbody tr');\r\n var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');\r\n layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {\r\n if (item1['LAY_HIDE']) return;\r\n var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);\r\n itemData['LAY_NUM'] = ++num;\r\n trMain.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);\r\n })\r\n }\r\n\r\n // 树表渲染\r\n Class.prototype.render = function (type) {\r\n var that = this;\r\n that.tableIns = table[type === 'reloadData' ? 'reloadData' : 'reload'](that.tableIns.config.id, $.extend(true, {}, that.config));\r\n that.config = that.tableIns.config;\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function (options, deep, type) {\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function (key, item) {\r\n if (layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 根据需要处理options中的一些参数\r\n updateOptions(that.getOptions().id, options, type || true);\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 仅重载数据\r\n treeTable.reloadData = function () {\r\n var args = $.extend(true, [], arguments);\r\n args[3] = 'reloadData';\r\n\r\n return treeTable.reload.apply(null, args);\r\n };\r\n\r\n var updateStatus = function (data, statusObj, childrenKey, notCascade) {\r\n var dataUpdated = [];\r\n layui.each(data, function (i1, item1) {\r\n if (layui.type(statusObj) === 'function') {\r\n statusObj(item1);\r\n } else {\r\n $.extend(item1, statusObj);\r\n }\r\n dataUpdated.push($.extend({}, item1));\r\n notCascade || (dataUpdated = dataUpdated.concat(updateStatus(item1[childrenKey], statusObj, childrenKey, notCascade)));\r\n });\r\n return dataUpdated;\r\n }\r\n\r\n Class.prototype.updateStatus = function (data, statusObj, notCascade) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n data = data || table.cache[options.id];\r\n\r\n return updateStatus(data, statusObj, treeOptions.customName.children, notCascade);\r\n }\r\n\r\n Class.prototype.getTableData = function () {\r\n var that = this;\r\n var options = that.getOptions();\r\n // return options.url ? table.cache[options.id] : options.data;\r\n return table.cache[options.id];\r\n }\r\n\r\n treeTable.updateStatus = function (id, statusObj, data) {\r\n var that = getThisTable(id);\r\n var options = that.getOptions();\r\n if (!data) {\r\n if (options.url) {\r\n data = table.cache[options.id];\r\n } else {\r\n data = options.data;\r\n }\r\n }\r\n return that.updateStatus(data, statusObj);\r\n }\r\n\r\n treeTable.sort = function (id) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n if (options.autoSort) {\r\n that.initData();\r\n treeTable.renderData(id);\r\n }\r\n }\r\n\r\n // 处理事件\r\n var updateObjParams = function (obj) {\r\n var tableId = obj.config.id;\r\n var tableThat = getThisTable(tableId);\r\n var trData = obj.data = treeTable.getNodeDataByIndex(tableId, obj.index); // 克隆的\r\n var trIndex = trData[LAY_DATA_INDEX];\r\n obj.dataIndex = trIndex;\r\n\r\n // 处理update方法\r\n var updateFn = obj.update;\r\n obj.update = function () {\r\n var updateThat = this;\r\n var args = arguments;\r\n $.extend(tableThat.getNodeDataByIndex(trIndex), args[0]);\r\n var ret = updateFn.apply(updateThat, args); // 主要负责更新节点内容\r\n var nameKey = obj.config.tree.customName.name;\r\n nameKey in args[0] && obj.tr.find('td[data-field=\"' + nameKey + '\"]').children('div.layui-table-cell').removeClass('layui-table-tree-item');\r\n tableThat.renderTreeTable(obj.tr, obj.tr.attr('data-level'), false);\r\n return ret;\r\n }\r\n\r\n // 处理del方法\r\n obj.del = function () {\r\n treeTable.removeNode(tableId, trData);\r\n }\r\n\r\n // 处理setRowChecked\r\n obj.setRowChecked = function (checked) {\r\n treeTable.setRowChecked(tableId, {\r\n index: trData,\r\n checked: checked\r\n });\r\n }\r\n }\r\n\r\n // 更新数据\r\n treeTable.updateNode = function (id, index, newNode) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n var trIndex = trElem.attr('data-index');\r\n var trLevel = trElem.attr('data-level')\r\n\r\n if (!newNode) {\r\n return;\r\n }\r\n // 更新值\r\n var newNodeTemp = that.getNodeDataByIndex(index, false, newNode);\r\n // 获取新的tr替换\r\n var trNew = table.getTrHtml(id, [newNodeTemp]);\r\n // 重新渲染tr\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody tr[lay-data-index=\"' + index + '\"]').replaceWith($(trNew[['trs', 'trs_fixed', 'trs_fixed_r'][i]].join('')).attr({\r\n 'data-index': trIndex,\r\n 'lay-data-index': index,\r\n 'data-level': trLevel\r\n }));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n treeTable.removeNode = function (id, node) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete');\r\n var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]);\r\n that.updateCheckStatus(nodeP);\r\n var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]);\r\n layui.each(delNodesFlat, function (i2, item2) {\r\n indexArr.push('tr[lay-data-index=\"' + item2[LAY_DATA_INDEX] + '\"]');\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n // index发生变化需要更新页面tr中对应的lay-data-index 新增和删除都要注意数据结构变动之后的index问题\r\n layui.each(that.treeToFlat(tableData), function (i3, item3) {\r\n if (item3[LAY_DATA_INDEX_HISTORY] && item3[LAY_DATA_INDEX_HISTORY] !== item3[LAY_DATA_INDEX]) {\r\n tableView.find('tr[lay-data-index=\"' + item3[LAY_DATA_INDEX_HISTORY] + '\"]').attr({\r\n 'data-index': item3[LAY_DATA_INDEX],\r\n 'lay-data-index': item3[LAY_DATA_INDEX],\r\n });\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n\r\n // 重新适配尺寸\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * 新增数据节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {String|Number} opts.parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可\r\n * @param {Number} opts.index 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后\r\n * @param {Object|Array} opts.data 新增的节点,单个或者多个\r\n * @param {Boolean} opts.focus 新增的节点,单个或者多个\r\n * @return {Array} 新增的节点\r\n * */\r\n treeTable.addNodes = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableViewElem = options.elem.next();\r\n var checkName = table.config.checkName;\r\n\r\n opts = opts || {};\r\n\r\n var parentIndex = opts.parentIndex;\r\n var index = opts.index;\r\n var newNodes = opts.data;\r\n var focus = opts.focus;\r\n\r\n parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex;\r\n var parentNode = parentIndex ? that.getNodeDataByIndex(parentIndex) : null;\r\n index = layui.type(index) === 'number' ? index : -1;\r\n\r\n // 添加数据\r\n newNodes = $.extend(true, [], (layui.isArray(newNodes) ? newNodes : [newNodes]));\r\n\r\n // 若未传入 LAY_CHECKED 属性,则继承父节点的 checked 状态\r\n layui.each(newNodes, function(i, item){\r\n if(!(checkName in item) && parentNode){\r\n item[checkName] = parentNode[checkName];\r\n }\r\n })\r\n\r\n var tableData = that.getTableData(), dataAfter;\r\n if (!parentNode) {\r\n // 添加到根节点\r\n dataAfter = table.cache[id].splice(index === -1 ? table.cache[id].length : index);\r\n table.cache[id] = table.cache[id].concat(newNodes, dataAfter);\r\n if (!options.url) {\r\n // 静态data模式\r\n if (!options.page) {\r\n options.data = table.cache[id];\r\n } else {\r\n var pageOptions = options.page;\r\n options.data.splice.apply(options.data, [pageOptions.limit * (pageOptions.curr - 1), pageOptions.limit].concat(table.cache[id]))\r\n }\r\n }\r\n // 将新节点添加到页面\r\n tableData = that.initData();\r\n\r\n if (tableViewElem.find('.layui-none').length) {\r\n table.renderData(id);\r\n return newNodes;\r\n }\r\n\r\n var newNodesHtml = table.getTrHtml(id, newNodes);\r\n var newNodesHtmlObj = {\r\n trs: $(newNodesHtml.trs.join('')),\r\n trs_fixed: $(newNodesHtml.trs_fixed.join('')),\r\n trs_fixed_r: $(newNodesHtml.trs_fixed_r.join(''))\r\n }\r\n\r\n var attrs = {};\r\n layui.each(newNodes, function (newNodeIndex, newNodeItem) {\r\n attrs = {\r\n 'data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'lay-data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'data-level': '0'\r\n };\r\n newNodesHtmlObj.trs.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs)\r\n })\r\n var trIndexPrev = parseInt(newNodes[0][LAY_DATA_INDEX]) - 1;\r\n var tableViewElemMAIN = tableViewElem.find(ELEM_MAIN);\r\n var tableViewElemFIXL = tableViewElem.find(ELEM_FIXL);\r\n var tableViewElemFIXR = tableViewElem.find(ELEM_FIXR);\r\n if (trIndexPrev === -1) {\r\n // 插入到开头\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n if (index === -1) {\r\n // 追加到最后\r\n tableViewElemMAIN.find('tbody').append(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').append(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').append(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n var trIndexNext = dataAfter[0][LAY_DATA_INDEX_HISTORY];\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n\r\n }\r\n\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableViewElem.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n\r\n that.renderTreeTable(tableViewElem.find(newNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')));\r\n } else {\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childKey = treeOptions.customName.children;\r\n\r\n parentNode[isParentKey] = true;\r\n var childrenNodes = parentNode[childKey];\r\n if (!childrenNodes) {\r\n childrenNodes = parentNode[childKey] = newNodes;\r\n } else {\r\n dataAfter = childrenNodes.splice(index === -1 ? childrenNodes.length : index);\r\n childrenNodes = parentNode[childKey] = childrenNodes.concat(newNodes, dataAfter);\r\n }\r\n // 删除已经存在的同级节点以及他们的子节点,并且把中间节点的已展开过的状态设置为false\r\n that.updateStatus(childrenNodes, function (d) {\r\n if (d[isParentKey] || treeOptions.view.showFlexIconIfNotParent) {\r\n d[LAY_HAS_EXPANDED] = false;\r\n }\r\n });\r\n var childrenNodesFlat = that.treeToFlat(childrenNodes);\r\n tableViewElem.find(childrenNodesFlat.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).remove();\r\n\r\n tableData = that.initData();\r\n // 去掉父节点的已经展开过的状态,重新执行一次展开的方法\r\n parentNode[LAY_HAS_EXPANDED] = false;\r\n parentNode[LAY_ASYNC_STATUS] = 'local'; // 转为本地数据,应该规定异步加载子节点的时候addNodes的规则\r\n expandNode({trElem: tableViewElem.find('tr[lay-data-index=\"' + parentIndex + '\"]')}, true)\r\n }\r\n that.updateCheckStatus(parentNode);\r\n treeTable.resize(id);\r\n if (focus) {\r\n // 滚动到第一个新增的节点\r\n tableViewElem.find(ELEM_MAIN).find('tr[lay-data-index=\"' + newNodes[0][LAY_DATA_INDEX] + '\"]').get(0).scrollIntoViewIfNeeded();\r\n }\r\n\r\n return newNodes;\r\n }\r\n\r\n // 获取表格选中状态\r\n treeTable.checkStatus = function (id, includeHalfCheck) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var checkName = table.config.checkName;\r\n\r\n // 需要区分单双选\r\n var tableData = treeTable.getData(id, true);\r\n var checkedData = tableData.filter(function (value, index, array) {\r\n return value[checkName] || (includeHalfCheck && value[LAY_CHECKBOX_HALF]);\r\n });\r\n\r\n var isAll = true;\r\n layui.each(treeOptions.data.cascade === 'all' ? table.cache[id] : treeTable.getData(id, true), function (i1, item1) {\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n return true;\r\n }\r\n })\r\n\r\n return {\r\n data: checkedData,\r\n isAll: isAll\r\n }\r\n }\r\n\r\n // 排序之后重新渲染成树表\r\n treeTable.on('sort', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n treeTable.sort(tableId);\r\n }\r\n });\r\n\r\n // 行点击\r\n treeTable.on('row', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行双击\r\n treeTable.on('rowDouble', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n\r\n var treeOptions = options.tree || {};\r\n if (treeOptions.view.dblClickExpand) {\r\n expandNode({trElem: obj.tr.first()}, null, null, null, true);\r\n }\r\n }\r\n })\r\n\r\n // 菜单\r\n treeTable.on('rowContextmenu', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // tr中带lay-event节点点击\r\n treeTable.on('tool', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行内编辑\r\n treeTable.on('edit', function (obj) {\r\n // 如果编辑涉及到关键的name字段需要重新更新一下tr节点\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n if (obj.field === options.tree.customName.name) {\r\n var updateData = {};\r\n updateData[obj.field] = obj.value;\r\n obj.update(updateData); // 通过update调用执行tr节点的更新\r\n }\r\n }\r\n });\r\n\r\n // 单选\r\n treeTable.on('radio', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n updateObjParams(obj);\r\n checkNode.call(that, obj.tr, obj.checked)\r\n }\r\n })\r\n\r\n // 设置或取消行选中样式\r\n Class.prototype.setRowCheckedClass = function(tr, checked){\r\n var that = this;\r\n var options = that.getOptions();\r\n\r\n var index = tr.data('index');\r\n var tableViewElem = options.elem.next();\r\n \r\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 主体行\r\n\r\n // 右侧固定行\r\n tr.each(function(){\r\n var index = $(this).data('index');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr[data-index=\"'+ index +'\"]');\r\n trFixedR[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n });\r\n };\r\n\r\n // 更新表格的复选框状态\r\n Class.prototype.updateCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n if (!options.hasChecboxCol) {\r\n return false; // 如果没有复选列则不需要更新状态\r\n }\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n\r\n var checkName = table.config.checkName;\r\n\r\n var cascade = treeOptions.data.cascade;\r\n var isCascadeParent = cascade === 'all' || cascade === 'parent';\r\n\r\n // 如有必要更新父节点们的状态\r\n if (isCascadeParent && dataP) {\r\n var trsP = that.updateParentCheckStatus(dataP, layui.type(checked) === 'boolean' ? checked : null);\r\n layui.each(trsP, function (indexP, itemP) {\r\n var checkboxElem = tableView.find('tr[lay-data-index=\"' + itemP[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)');\r\n var checked = itemP[checkName];\r\n\r\n // 标记父节点行背景色\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked);\r\n \r\n // 设置原始复选框 checked 属性值并渲染\r\n form.render(checkboxElem.prop({\r\n checked: checked,\r\n indeterminate: itemP[LAY_CHECKBOX_HALF]\r\n }))\r\n })\r\n }\r\n\r\n // 更新全选的状态\r\n var isAll = true;\r\n var isIndeterminate = false;\r\n var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);\r\n data = data.filter(function (item) {\r\n return !item[options.disabledName];\r\n });\r\n layui.each(data, function (i1, item1) {\r\n if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {\r\n isIndeterminate = true;\r\n }\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n }\r\n if (isIndeterminate && !isAll) {\r\n return true;\r\n }\r\n })\r\n isIndeterminate = isIndeterminate && !isAll;\r\n form.render(tableView.find('input[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]').prop({\r\n 'checked': isAll,\r\n indeterminate: isIndeterminate\r\n }));\r\n\r\n return isAll\r\n }\r\n\r\n // 更新父节点的选中状态\r\n Class.prototype.updateParentCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var checkName = table.config.checkName;\r\n var childrenKey = treeOptions.customName.children;\r\n\r\n var dataRet = [];\r\n dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断\r\n if (checked === true) {\r\n // 为真需要判断子节点的情况\r\n if (!dataP[childrenKey].length) {\r\n checked = false;\r\n } else {\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (!item[checkName]) { // 只要有一个子节点为false\r\n checked = false;\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true; // 跳出循环\r\n }\r\n });\r\n }\r\n } else if (checked === false) {\r\n // 判断是否为半选\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName] || item[LAY_CHECKBOX_HALF]) { // 只要有一个子节点为选中或者半选状态\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n // 状态不确定的情况下根据子节点的信息\r\n checked = false;\r\n var checkedNum = 0;\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName]) {\r\n checkedNum++;\r\n }\r\n });\r\n checked = dataP[childrenKey].length ? dataP[childrenKey].length === checkedNum : dataP[checkName]; // 如果没有子节点保留原来的状态;\r\n dataP[LAY_CHECKBOX_HALF] = checked ? false : checkedNum > 0;\r\n }\r\n dataP[checkName] = checked;\r\n dataRet.push($.extend({}, dataP));\r\n if (dataP[LAY_PARENT_INDEX]) {\r\n dataRet = dataRet.concat(that.updateParentCheckStatus(table.cache[tableId][dataP[LAY_PARENT_INDEX]], checked));\r\n }\r\n return dataRet\r\n }\r\n\r\n var checkNode = function (trElem, checked, callbackFlag) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n var inputElem = (trElem.length ? trElem : tableView).find('.laytable-cell-radio, .laytable-cell-checkbox').children('input').last();\r\n // 判断是单选还是多选 不应该同时存在radio列和checkbox列\r\n var isRadio = inputElem.attr('type') === 'radio';\r\n\r\n if (callbackFlag) {\r\n var triggerEvent = function () {\r\n var fn = function (event) {\r\n layui.stope(event);\r\n }\r\n inputElem.parent().on('click', fn); // 添加临时的阻止冒泡事件\r\n inputElem.next().click();\r\n inputElem.parent().off('click', fn);\r\n }\r\n // 如果需要触发事件可以简单的触发对应节点的click事件\r\n if (isRadio) {\r\n // 单选只能选中或者切换其他的不能取消选中 后续看是否有支持的必要 todo\r\n if (checked && !inputElem.prop('checked')) {\r\n triggerEvent()\r\n }\r\n } else {\r\n if (layui.type(checked) === 'boolean') {\r\n if (inputElem.prop('checked') !== checked) {\r\n // 如果当前已经是想要修改的状态则不做处理\r\n triggerEvent()\r\n }\r\n } else {\r\n // 切换\r\n triggerEvent()\r\n }\r\n }\r\n } else {\r\n var trData = that.getNodeDataByIndex(trElem.attr('data-index'));\r\n var checkName = table.config.checkName;\r\n // 如果不触发事件应该有一个方法可以更新数据以及页面的节点\r\n if (isRadio) {\r\n if (!trData) {\r\n // 单选必须是一个存在的行\r\n return;\r\n }\r\n var statusChecked = {};\r\n statusChecked[checkName] = false;\r\n // that.updateStatus(null, statusChecked); // 取消其他的选中状态\r\n that.updateStatus(null, function (d) {\r\n if (d[checkName]) {\r\n var radioElem = tableView.find('tr[lay-data-index=\"' + d[LAY_DATA_INDEX] + '\"] input[type=\"radio\"][lay-type=\"layTableRadio\"]');\r\n d[checkName] = false;\r\n\r\n // 取消当前选中行背景色\r\n that.setRowCheckedClass(radioElem.closest('tr'), false);\r\n form.render(radioElem.prop('checked', false));\r\n }\r\n }); // 取消其他的选中状态\r\n trData[checkName] = checked;\r\n\r\n that.setRowCheckedClass(trElem, checked); // 标记当前选中行背景色\r\n that.setRowCheckedClass(trElem.siblings(), false); // 取消其他行背景色\r\n\r\n form.render(trElem.find('input[type=\"radio\"][lay-type=\"layTableRadio\"]').prop('checked', checked));\r\n } else {\r\n // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态\r\n checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo\r\n // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态\r\n // 处理不可操作的信息\r\n var checkedStatusFn = function (d) {\r\n if (!d[table.config.disabledName]) { // 节点不可操作的不处理\r\n d[checkName] = checked;\r\n d[LAY_CHECKBOX_HALF] = false;\r\n }\r\n }\r\n\r\n var trs = that.updateStatus(trData ? [trData] : table.cache[tableId], checkedStatusFn, trData && ['parent', 'none'].indexOf(treeOptions.data.cascade) !== -1);\r\n var checkboxElem = tableView.find(trs.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)';\r\n }).join(','));\r\n\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked); // 标记当前选中行背景色\r\n form.render(checkboxElem.prop({checked: checked, indeterminate: false}));\r\n\r\n var trDataP;\r\n\r\n // 更新父节点以及更上层节点的状态\r\n if (trData && trData[LAY_PARENT_INDEX]) {\r\n // 找到父节点,然后判断父节点的子节点是否全部选中\r\n trDataP = that.getNodeDataByIndex(trData[LAY_PARENT_INDEX]);\r\n }\r\n\r\n return that.updateCheckStatus(trDataP, checked);\r\n }\r\n }\r\n }\r\n\r\n // 多选\r\n treeTable.on('checkbox', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n var checked = obj.checked;\r\n updateObjParams(obj)\r\n obj.isAll = checkNode.call(that, obj.tr, checked);\r\n }\r\n })\r\n\r\n /**\r\n * 设置行选中状态\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Object|String} opts.index 节点下标\r\n * @param {Boolean} opts.checked 选中或取消\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件回调\r\n * */\r\n treeTable.setRowChecked = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n opts = opts || {};\r\n\r\n var node = opts.index;\r\n var checked = opts.checked;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var dataIndex = layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX];\r\n // 判断是否在当前页面中\r\n var nodeData = that.getNodeDataByIndex(dataIndex);\r\n if (!nodeData) {\r\n // 目前只能处理当前页的数据\r\n return;\r\n }\r\n\r\n var collectNeedExpandNodeIndex = function(index){\r\n needExpandIndex.push(index);\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n if (!trElem.length) {\r\n var nodeData = that.getNodeDataByIndex(index);\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n parentIndex && collectNeedExpandNodeIndex(parentIndex);\r\n }\r\n }\r\n\r\n // 判断是否展开过\r\n var trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n if (!trElem.length) {\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n var needExpandIndex = [];\r\n collectNeedExpandNodeIndex(parentIndex);\r\n // 如果还没有展开没有渲染的要先渲染出来\r\n layui.each(needExpandIndex.reverse(),function(index, nodeIndex){\r\n treeTable.expandNode(id, {\r\n index: nodeIndex,\r\n expandFlag: true\r\n });\r\n })\r\n trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n }\r\n checkNode.call(that, trElem, checked, callbackFlag);\r\n }\r\n\r\n treeTable.checkAllNodes = function (id, checked) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n checkNode.call(that, tableView.find('tr[data-index=\"NONE\"]'), !!checked)\r\n }\r\n\r\n /**\r\n * 获得数据\r\n * @param {String} id 表格id\r\n * @param {Boolean} [isSimpleData] 是否返回平铺结构的数据\r\n * @return {Array} 表格数据\r\n * */\r\n treeTable.getData = function (id, isSimpleData) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n var tableData = [];\r\n layui.each($.extend(true, [], table.cache[id] || []), function (index, item) {\r\n // 遍历排除掉临时的数据\r\n tableData.push(item);\r\n })\r\n return isSimpleData ? that.treeToFlat(tableData) : tableData;\r\n }\r\n\r\n /**\r\n * 重新加载子节点\r\n * @param {String} id 表格id\r\n * @param {String} dataIndex 父节点的dataIndex\r\n * */\r\n treeTable.reloadAsyncNode = function (id, dataIndex) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n if (!treeOptions.async || !treeOptions.async.enable) {\r\n return;\r\n }\r\n var dataP = that.getNodeDataByIndex(dataIndex);\r\n if (!dataP) {\r\n return;\r\n }\r\n dataP[LAY_HAS_EXPANDED] = false;\r\n dataP[LAY_EXPAND] = false;\r\n dataP[LAY_ASYNC_STATUS] = false;\r\n layui.each(that.treeToFlat(dataP[treeOptions.customName.children]).reverse(), function (i1, item1) {\r\n treeTable.removeNode(id, item1[LAY_DATA_INDEX]);\r\n })\r\n // 重新展开\r\n treeTable.expandNode(id, {\r\n index: dataIndex,\r\n expandFlag: true,\r\n callbackFlag: true,\r\n })\r\n }\r\n\r\n /**\r\n * 通过数据id获取节点对象\r\n * */\r\n treeTable.getNodeById = function (id, dataId) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n return that.getNodeById(dataId);\r\n }\r\n\r\n /**\r\n * 根据自定义规则搜索节点数据\r\n * @param {String} id 树表id\r\n * @param {Function} filter 自定义过滤器函数\r\n * @param {Object} [opts]\r\n * @param {Boolean} [opts.isSingle] 是否只找到第一个\r\n * @param {Object} [opts.parentNode] 在指定在某个父节点下的子节点中搜索\r\n * @return {Object} 节点对象\r\n * */\r\n treeTable.getNodesByFilter = function (id, filter, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n\r\n opts = opts || {};\r\n var isSingle = opts.isSingle;\r\n var parentNode = opts.parentNode;\r\n var dataP = parentNode && parentNode.data;\r\n // dataP = dataP || table.cache[id];\r\n var nodes = that.treeToFlat(dataP ? (dataP[options.tree.customName.children] || []) : table.cache[id]).filter(filter);\r\n var nodesResult = [];\r\n layui.each(nodes, function (i1, item1) {\r\n nodesResult.push(that.getNodeByIndex(item1[LAY_DATA_INDEX]));\r\n if (isSingle) {\r\n return true;\r\n }\r\n });\r\n\r\n return nodesResult;\r\n }\r\n\r\n\r\n // 记录所有实例\r\n thisTreeTable.that = {}; // 记录所有实例对象\r\n // thisTreeTable.config = {}; // 记录所有实例配置项\r\n\r\n // 重载\r\n treeTable.reload = function (id, options, deep, type) {\r\n // deep = deep !== false; // 默认采用深拷贝\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n that.reload(options, deep, type);\r\n return thisTreeTable.call(that);\r\n };\r\n\r\n // 核心入口\r\n treeTable.render = function (options) {\r\n var inst = new Class(options);\r\n return thisTreeTable.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, treeTable);\r\n});\r\n","/**\r\n * tree 树组件\r\n */\r\n\r\nlayui.define(['form','util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n \r\n // 模块名\r\n var MOD_NAME = 'tree';\r\n\r\n // 外部接口\r\n var tree = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'children'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n getChecked: function(){\r\n return that.getChecked.call(that);\r\n },\r\n setChecked: function(id){// 设置值\r\n return that.setChecked.call(that, id);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n }\r\n\r\n // 字符常量\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var NONE = 'layui-none';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_VIEW = 'layui-tree';\r\n var ELEM_SET = 'layui-tree-set';\r\n var ICON_CLICK = 'layui-tree-iconClick';\r\n var ICON_ADD = 'layui-icon-addition';\r\n var ICON_SUB = 'layui-icon-subtraction';\r\n var ELEM_ENTRY = 'layui-tree-entry';\r\n var ELEM_MAIN = 'layui-tree-main';\r\n var ELEM_TEXT = 'layui-tree-txt';\r\n var ELEM_PACK = 'layui-tree-pack';\r\n var ELEM_SPREAD = 'layui-tree-spread';\r\n var ELEM_LINE_SHORT = 'layui-tree-setLineShort';\r\n var ELEM_SHOW = 'layui-tree-showLine';\r\n var ELEM_EXTEND = 'layui-tree-lineExtend';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++tree.index;\r\n that.config = $.extend({}, that.config, tree.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n data: [], // 数据\r\n \r\n showCheckbox: false, // 是否显示复选框\r\n showLine: true, // 是否开启连接线\r\n accordion: false, // 是否开启手风琴模式\r\n onlyIconControl: false, // 是否仅允许节点左侧图标控制展开收缩\r\n isJump: false, // 是否允许点击节点时弹出新窗口跳转\r\n edit: false, // 是否开启节点的操作图标\r\n \r\n text: {\r\n defaultNodeName: '未命名', // 节点默认名称\r\n none: '无数据' // 数据为空时的文本提示\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n \r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n \r\n that.config = $.extend(true, {}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 主体渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, tree.config.customName, options.customName);\r\n \r\n that.checkids = [];\r\n\r\n var temp = $('
                          ');\r\n that.tree(temp);\r\n\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n\r\n // 索引\r\n that.key = options.id || that.index;\r\n \r\n // 插入组件结构\r\n that.elem = temp;\r\n that.elemNone = $('
                          '+ options.text.none +'
                          ');\r\n othis.html(that.elem);\r\n\r\n if(that.elem.find('.layui-tree-set').length == 0){\r\n return that.elem.append(that.elemNone);\r\n };\r\n \r\n // 复选框渲染\r\n if(options.showCheckbox){\r\n that.renderForm('checkbox');\r\n };\r\n\r\n that.elem.find('.layui-tree-set').each(function(){\r\n var othis = $(this);\r\n // 最外层\r\n if(!othis.parent('.layui-tree-pack')[0]){\r\n othis.addClass('layui-tree-setHide');\r\n };\r\n\r\n // 没有下一个节点 上一层父级有延伸线\r\n if(!othis.next()[0] && othis.parents('.layui-tree-pack').eq(1).hasClass('layui-tree-lineExtend')){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n \r\n // 没有下一个节点 外层最后一个\r\n if(!othis.next()[0] && !othis.parents('.layui-tree-set').eq(0).next()[0]){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n });\r\n\r\n that.events();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-tree-'+ this.index);\r\n };\r\n\r\n // 节点解析\r\n Class.prototype.tree = function(elem, children){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var data = children || options.data;\r\n\r\n // 遍历数据\r\n layui.each(data, function(index, item){\r\n var hasChild = item[customName.children] && item[customName.children].length > 0;\r\n var packDiv = $('
                          ');\r\n var entryDiv = $(['
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n // 箭头\r\n ,function(){\r\n if(options.showLine){\r\n if(hasChild){\r\n return '';\r\n }else{\r\n return '';\r\n };\r\n }else{\r\n return '';\r\n };\r\n }()\r\n \r\n // 复选框\r\n ,function(){\r\n return options.showCheckbox ? '' : '';\r\n }()\r\n \r\n // 节点\r\n ,function(){\r\n if(options.isJump && item.href){\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }else{\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }\r\n }()\r\n ,'
                          '\r\n \r\n // 节点操作图标\r\n ,function(){\r\n if(!options.edit) return '';\r\n \r\n var editIcon = {\r\n add: ''\r\n ,update: ''\r\n ,del: ''\r\n }, arr = ['
                          '];\r\n \r\n if(options.edit === true){\r\n options.edit = ['update', 'del']\r\n }\r\n \r\n if(typeof options.edit === 'object'){\r\n layui.each(options.edit, function(i, val){\r\n arr.push(editIcon[val] || '')\r\n });\r\n return arr.join('') + '
                          ';\r\n }\r\n }()\r\n ,'
                          '].join(''));\r\n\r\n // 如果有子节点,则递归继续生成树\r\n if(hasChild){\r\n entryDiv.append(packDiv);\r\n that.tree(packDiv, item[customName.children]);\r\n };\r\n\r\n elem.append(entryDiv);\r\n \r\n // 若有前置节点,前置节点加连接线\r\n if(entryDiv.prev('.'+ELEM_SET)[0]){\r\n entryDiv.prev().children('.layui-tree-pack').addClass('layui-tree-showLine');\r\n };\r\n \r\n // 若无子节点,则父节点加延伸线\r\n if(!hasChild){\r\n entryDiv.parent('.layui-tree-pack').addClass('layui-tree-lineExtend');\r\n };\r\n\r\n // 展开节点操作\r\n that.spread(entryDiv, item);\r\n \r\n // 选择框\r\n if(options.showCheckbox){\r\n item.checked && that.checkids.push(item[customName.id]);\r\n that.checkClick(entryDiv, item);\r\n }\r\n \r\n // 操作节点\r\n options.edit && that.operate(entryDiv, item);\r\n \r\n });\r\n };\r\n\r\n // 展开节点\r\n Class.prototype.spread = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n var elemCheckbox = elemMain.find('input[same=\"layuiTreeCheck\"]');\r\n var elemIcon = entry.find('.'+ ICON_CLICK);\r\n var elemText = entry.find('.'+ ELEM_TEXT);\r\n var touchOpen = options.onlyIconControl ? elemIcon : elemMain; // 判断展开通过节点还是箭头图标\r\n var state = '';\r\n \r\n // 展开收缩\r\n touchOpen.on('click', function(e){\r\n var packCont = elem.children('.'+ELEM_PACK)\r\n ,iconClick = touchOpen.children('.layui-icon')[0] ? touchOpen.children('.layui-icon') : touchOpen.find('.layui-tree-icon').children('.layui-icon');\r\n\r\n // 若没有子节点\r\n if(!packCont[0]){\r\n state = 'normal';\r\n }else{\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n elem.removeClass(ELEM_SPREAD);\r\n packCont.slideUp(200);\r\n iconClick.removeClass(ICON_SUB).addClass(ICON_ADD); \r\n that.updateFieldValue(item, 'spread', false);\r\n }else{\r\n elem.addClass(ELEM_SPREAD);\r\n packCont.slideDown(200);\r\n iconClick.addClass(ICON_SUB).removeClass(ICON_ADD);\r\n that.updateFieldValue(item, 'spread', true);\r\n\r\n // 是否手风琴\r\n if(options.accordion){\r\n var sibls = elem.siblings('.'+ELEM_SET);\r\n sibls.removeClass(ELEM_SPREAD);\r\n sibls.children('.'+ELEM_PACK).slideUp(200);\r\n sibls.find('.layui-tree-icon').children('.layui-icon').removeClass(ICON_SUB).addClass(ICON_ADD);\r\n };\r\n };\r\n };\r\n });\r\n \r\n // 点击回调\r\n elemText.on('click', function(){\r\n var othis = $(this);\r\n \r\n // 判断是否禁用状态\r\n if(othis.hasClass(DISABLED)) return;\r\n \r\n // 判断展开收缩状态\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n state = options.onlyIconControl ? 'open' : 'close';\r\n } else {\r\n state = options.onlyIconControl ? 'close' : 'open';\r\n }\r\n\r\n // 获取选中状态\r\n if(elemCheckbox[0]){\r\n that.updateFieldValue(item, 'checked', elemCheckbox.prop('checked'));\r\n }\r\n \r\n // 点击产生的回调\r\n options.click && options.click({\r\n elem: elem,\r\n state: state,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 更新数据源 checked,spread 字段值\r\n Class.prototype.updateFieldValue = function(obj, field, value){\r\n if(field in obj) obj[field] = value;\r\n };\r\n \r\n // 计算复选框选中状态\r\n Class.prototype.setCheckbox = function(elem, item, elemCheckbox){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n\r\n // 同步子节点选中状态\r\n if(typeof item[customName.children] === 'object' || elem.find('.'+ELEM_PACK)[0]){\r\n var elemCheckboxs = elem.find('.'+ ELEM_PACK).find('input[same=\"layuiTreeCheck\"]');\r\n elemCheckboxs.each(function(index){\r\n if(this.disabled) return; // 不可点击则跳过\r\n var children = item[customName.children][index];\r\n if(children) that.updateFieldValue(children, 'checked', checked);\r\n that.updateFieldValue(this, 'checked', checked);\r\n });\r\n };\r\n\r\n // 同步父节点选中状态\r\n var setParentsChecked = function(thisNodeElem){\r\n // 若无父节点,则终止递归\r\n if(!thisNodeElem.parents('.'+ ELEM_SET)[0]) return;\r\n\r\n var state;\r\n var parentPack = thisNodeElem.parent('.'+ ELEM_PACK);\r\n var parentNodeElem = parentPack.parent();\r\n var parentCheckbox = parentPack.prev().find('input[same=\"layuiTreeCheck\"]');\r\n\r\n // 如果子节点有任意一条选中,则父节点为选中状态\r\n if(checked){\r\n parentCheckbox.prop('checked', checked);\r\n } else { // 如果当前节点取消选中,则根据计算“兄弟和子孙”节点选中状态,来同步父节点选中状态\r\n parentPack.find('input[same=\"layuiTreeCheck\"]').each(function(){\r\n if(this.checked){\r\n state = true;\r\n }\r\n });\r\n \r\n // 如果兄弟子孙节点全部未选中,则父节点也应为非选中状态\r\n state || parentCheckbox.prop('checked', false);\r\n }\r\n \r\n // 向父节点递归\r\n setParentsChecked(parentNodeElem);\r\n };\r\n \r\n setParentsChecked(elem);\r\n\r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 复选框选择\r\n Class.prototype.checkClick = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n \r\n \r\n \r\n // 点击复选框\r\n elemMain.on('click', 'input[same=\"layuiTreeCheck\"]+', function(e){\r\n layui.stope(e); // 阻止点击节点事件\r\n\r\n var elemCheckbox = $(this).prev();\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n \r\n that.setCheckbox(elem, item, elemCheckbox);\r\n that.updateFieldValue(item, 'checked', checked);\r\n\r\n // 复选框点击产生的回调\r\n options.oncheck && options.oncheck({\r\n elem: elem,\r\n checked: checked,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 节点操作\r\n Class.prototype.operate = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n\r\n entry.children('.layui-tree-btnGroup').on('click', '.layui-icon', function(e){\r\n layui.stope(e); // 阻止节点操作\r\n\r\n var type = $(this).data(\"type\");\r\n var packCont = elem.children('.'+ELEM_PACK);\r\n var returnObj = {\r\n data: item,\r\n type: type,\r\n elem:elem\r\n };\r\n // 增加\r\n if(type == 'add'){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 若开启连接线,更改图标样式\r\n if(options.showLine){\r\n elemMain.find('.'+ICON_CLICK).addClass('layui-tree-icon');\r\n elemMain.find('.'+ICON_CLICK).children('.layui-icon').addClass(ICON_ADD).removeClass('layui-icon-file');\r\n // 若未开启连接线,显示箭头\r\n } else {\r\n elemMain.find('.layui-tree-iconArrow').removeClass(HIDE);\r\n };\r\n // 节点添加子节点容器\r\n elem.append('
                          ');\r\n };\r\n\r\n // 新增节点\r\n var key = options.operate && options.operate(returnObj);\r\n var obj = {};\r\n\r\n obj[customName.title] = options.text.defaultNodeName;\r\n obj[customName.id] = key;\r\n that.tree(elem.children('.'+ELEM_PACK), [obj]);\r\n \r\n // 放在新增后面,因为要对元素进行操作\r\n if(options.showLine){\r\n // 节点本身无子节点\r\n if(!packCont[0]){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET)\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 兄弟节点添加连接线\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n elem.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n // 父级移除延伸线\r\n parentPack.removeClass(ELEM_EXTEND);\r\n // 同层节点最后一个更改线的状态\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n } else {\r\n elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n } else {\r\n // 添加延伸线\r\n if(!packCont.hasClass(ELEM_EXTEND)){\r\n packCont.addClass(ELEM_EXTEND);\r\n };\r\n // 子节点添加延伸线\r\n elem.find('.'+ELEM_PACK).each(function(){\r\n $(this).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n // 如果前一个节点有延伸线\r\n if(packCont.children('.'+ELEM_SET).last().prev().hasClass(ELEM_LINE_SHORT)){\r\n packCont.children('.'+ELEM_SET).last().prev().removeClass(ELEM_LINE_SHORT);\r\n }else{\r\n // 若之前的没有,说明处于连接状态\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若是最外层,要始终保持相连的状态\r\n if(!elem.parent('.'+ELEM_PACK)[0] && elem.next()[0]){\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n if(!options.showCheckbox) return;\r\n // 若开启复选框,同步新增节点状态\r\n if(elemMain.find('input[same=\"layuiTreeCheck\"]')[0].checked){\r\n var packLast = elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).last();\r\n packLast.find('input[same=\"layuiTreeCheck\"]')[0].checked = true;\r\n };\r\n that.renderForm('checkbox');\r\n \r\n // 修改\r\n } else if(type == 'update') {\r\n var text = elemMain.children('.'+ ELEM_TEXT).html();\r\n elemMain.children('.'+ ELEM_TEXT).html('');\r\n // 添加输入框,覆盖在文字上方\r\n elemMain.append('');\r\n // 获取焦点\r\n elemMain.children('.layui-tree-editInput').val(util.unescape(text)).focus();\r\n // 嵌入文字移除输入框\r\n var getVal = function(input){\r\n var textNew = input.val().trim();\r\n textNew = textNew ? textNew : options.text.defaultNodeName;\r\n input.remove();\r\n elemMain.children('.'+ ELEM_TEXT).html(textNew);\r\n \r\n // 同步数据\r\n returnObj.data[customName.title] = textNew;\r\n \r\n // 节点修改的回调\r\n options.operate && options.operate(returnObj);\r\n };\r\n // 失去焦点\r\n elemMain.children('.layui-tree-editInput').blur(function(){\r\n getVal($(this));\r\n });\r\n // 回车\r\n elemMain.children('.layui-tree-editInput').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getVal($(this));\r\n };\r\n });\r\n\r\n // 删除\r\n } else {\r\n layer.confirm('确认删除该节点 \"'+ (item[customName.title] || '') +'\" 吗?', function(index){\r\n options.operate && options.operate(returnObj); // 节点删除的回调\r\n returnObj.status = 'remove'; // 标注节点删除\r\n \r\n layer.close(index);\r\n \r\n // 若删除最后一个,显示空数据提示\r\n if(!elem.prev('.'+ELEM_SET)[0] && !elem.next('.'+ELEM_SET)[0] && !elem.parent('.'+ELEM_PACK)[0]){\r\n elem.remove();\r\n that.elem.append(that.elemNone);\r\n return;\r\n };\r\n // 若有兄弟节点\r\n if(elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY)[0]){\r\n // 若开启复选框\r\n if(options.showCheckbox){\r\n // 若开启复选框,进行下步操作\r\n var elemDel = function(elem){\r\n // 若无父结点,则不执行\r\n if(!elem.parents('.'+ELEM_SET)[0]) return;\r\n var siblingTree = elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY);\r\n var parentTree = elem.parent('.'+ELEM_PACK).prev();\r\n var checkState = parentTree.find('input[same=\"layuiTreeCheck\"]')[0];\r\n var state = 1;\r\n var num = 0;\r\n\r\n // 若父节点未勾选\r\n if(checkState.checked == false){\r\n // 遍历兄弟节点\r\n siblingTree.each(function(i, item1){\r\n var input = $(item1).find('input[same=\"layuiTreeCheck\"]')[0]\r\n if(input.checked == false && !input.disabled){\r\n state = 0;\r\n };\r\n // 判断是否全为不可勾选框\r\n if(!input.disabled){\r\n num = 1;\r\n };\r\n });\r\n // 若有可勾选选择框并且已勾选\r\n if(state == 1 && num == 1){\r\n // 勾选父节点\r\n checkState.checked = true;\r\n that.renderForm('checkbox');\r\n // 向上遍历祖先节点\r\n elemDel(parentTree.parent('.'+ELEM_SET));\r\n };\r\n };\r\n };\r\n elemDel(elem);\r\n };\r\n // 若开启连接线\r\n if(options.showLine){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET);\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 父级去除延伸线,因为此时子节点里没有空节点\r\n parentPack.removeClass(ELEM_EXTEND);\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最后一个节点\r\n if(!elem.next()[0]){\r\n elem.prev().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n }else{\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最外层最后一个节点,去除前一个结点的连接线\r\n if(!elem.next()[0] && !elem.parents('.'+ELEM_SET)[1] && !elem.parents('.'+ELEM_SET).eq(0).next()[0]){\r\n elem.prev('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n }else{\r\n // 若为最后一个节点且有延伸线\r\n if(!elem.next()[0] && elem.hasClass(ELEM_LINE_SHORT)){\r\n elem.prev().addClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n \r\n } else {\r\n // 若无兄弟节点\r\n var prevDiv = elem.parent('.'+ELEM_PACK).prev();\r\n // 若开启了连接线\r\n if(options.showLine){\r\n prevDiv.find('.'+ICON_CLICK).removeClass('layui-tree-icon');\r\n prevDiv.find('.'+ICON_CLICK).children('.layui-icon').removeClass(ICON_SUB).addClass('layui-icon-file');\r\n // 父节点所在层添加延伸线\r\n var pare = prevDiv.parents('.'+ELEM_PACK).eq(0);\r\n pare.addClass(ELEM_EXTEND);\r\n\r\n // 兄弟节点最后子节点添加延伸线\r\n pare.children('.'+ELEM_SET).each(function(){\r\n $(this).children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n }else{\r\n // 父节点隐藏箭头\r\n prevDiv.find('.layui-tree-iconArrow').addClass(HIDE);\r\n };\r\n // 移除展开属性\r\n elem.parents('.'+ELEM_SET).eq(0).removeClass(ELEM_SPREAD);\r\n // 移除节点容器\r\n elem.parent('.'+ELEM_PACK).remove();\r\n };\r\n\r\n elem.remove();\r\n });\r\n \r\n };\r\n });\r\n };\r\n\r\n // 部分事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkWarp = that.elem.find('.layui-tree-checkedFirst');\r\n \r\n // 初始选中\r\n that.setChecked(that.checkids);\r\n \r\n // 搜索\r\n that.elem.find('.layui-tree-search').on('keyup', function(){\r\n var input = $(this);\r\n var val = input.val();\r\n var pack = input.nextAll();\r\n var arr = [];\r\n\r\n // 遍历所有的值\r\n pack.find('.'+ ELEM_TEXT).each(function(){\r\n var entry = $(this).parents('.'+ELEM_ENTRY);\r\n // 若值匹配,加一个类以作标识\r\n if($(this).html().indexOf(val) != -1){\r\n arr.push($(this).parent());\r\n \r\n var select = function(div){\r\n div.addClass('layui-tree-searchShow');\r\n // 向上父节点渲染\r\n if(div.parent('.'+ELEM_PACK)[0]){\r\n select(div.parent('.'+ELEM_PACK).parent('.'+ELEM_SET));\r\n };\r\n };\r\n select(entry.parent('.'+ELEM_SET));\r\n };\r\n });\r\n\r\n // 根据标志剔除\r\n pack.find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n if(!parent.hasClass('layui-tree-searchShow')){\r\n parent.addClass(HIDE);\r\n };\r\n });\r\n if(pack.find('.layui-tree-searchShow').length == 0){\r\n that.elem.append(that.elemNone);\r\n };\r\n\r\n // 节点过滤的回调\r\n options.onsearch && options.onsearch({\r\n elem: arr\r\n });\r\n });\r\n\r\n // 还原搜索初始状态\r\n that.elem.find('.layui-tree-search').on('keydown', function(){\r\n $(this).nextAll().find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n parent.removeClass('layui-tree-searchShow '+ HIDE);\r\n });\r\n if($('.layui-tree-emptyText')[0]) $('.layui-tree-emptyText').remove();\r\n });\r\n };\r\n\r\n // 得到选中节点\r\n Class.prototype.getChecked = function(){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checkId = [];\r\n var checkData = [];\r\n \r\n // 遍历节点找到选中索引\r\n that.elem.find('.layui-form-checked').each(function(){\r\n checkId.push($(this).prev()[0].value);\r\n });\r\n \r\n // 遍历节点\r\n var eachNodes = function(data, checkNode){\r\n layui.each(data, function(index, item){\r\n layui.each(checkId, function(index2, item2){\r\n if(item[customName.id] == item2){\r\n that.updateFieldValue(item, 'checked', true);\r\n\r\n var cloneItem = $.extend({}, item);\r\n delete cloneItem[customName.children];\r\n\r\n checkNode.push(cloneItem);\r\n \r\n if(item[customName.children]){\r\n cloneItem[customName.children] = [];\r\n eachNodes(item[customName.children], cloneItem[customName.children]);\r\n }\r\n return true\r\n }\r\n });\r\n });\r\n };\r\n\r\n eachNodes($.extend({}, options.data), checkData);\r\n \r\n return checkData;\r\n };\r\n\r\n // 设置选中节点\r\n Class.prototype.setChecked = function(checkedId){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始选中\r\n that.elem.find('.'+ELEM_SET).each(function(i, item){\r\n var thisId = $(this).data('id');\r\n var input = $(item).children('.'+ELEM_ENTRY).find('input[same=\"layuiTreeCheck\"]');\r\n var reInput = input.next();\r\n \r\n // 若返回数字\r\n if(typeof checkedId === 'number'){\r\n if(thisId.toString() == checkedId.toString()){\r\n if(!input[0].checked){\r\n reInput.click();\r\n };\r\n return false;\r\n };\r\n } \r\n // 若返回数组\r\n else if(typeof checkedId === 'object'){\r\n layui.each(checkedId, function(index, value){\r\n if(value.toString() == thisId.toString() && !input[0].checked){\r\n reInput.click();\r\n return true;\r\n }\r\n });\r\n };\r\n });\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n tree.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的节点数据\r\n tree.getChecked = function(id){\r\n var that = thisModule.that[id];\r\n return that.getChecked();\r\n };\r\n \r\n // 设置选中节点\r\n tree.setChecked = function(id, checkedId){\r\n var that = thisModule.that[id];\r\n return that.setChecked(checkedId);\r\n };\r\n \r\n // 核心入口\r\n tree.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, tree);\r\n})","/**\r\n * transfer 穿梭框组件\r\n */\r\n\r\nlayui.define(['laytpl', 'form'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var form = layui.form;\r\n \r\n // 模块名\r\n var MOD_NAME = 'transfer';\r\n\r\n // 外部接口\r\n var transfer = {\r\n config: {},\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n // 获取右侧数据\r\n getData: function(){\r\n return that.getData.call(that);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n };\r\n\r\n // 字符常量\r\n var ELEM = 'layui-transfer';\r\n var HIDE = 'layui-hide'; \r\n var DISABLED = 'layui-btn-disabled';\r\n var NONE = 'layui-none';\r\n var ELEM_BOX = 'layui-transfer-box';\r\n var ELEM_HEADER = 'layui-transfer-header';\r\n var ELEM_SEARCH = 'layui-transfer-search';\r\n var ELEM_ACTIVE = 'layui-transfer-active';\r\n var ELEM_DATA = 'layui-transfer-data';\r\n \r\n // 穿梭框模板\r\n var TPL_BOX = function(obj){\r\n obj = obj || {};\r\n return ['
                          ',\r\n '
                          ',\r\n '',\r\n '
                          ',\r\n '{{# if(d.data.showSearch){ }}',\r\n '
                          ',\r\n '',\r\n '',\r\n '
                          ',\r\n '{{# } }}',\r\n '
                            ',\r\n '
                            '].join('');\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                            ',\r\n TPL_BOX({\r\n index: 0,\r\n checkAllName: 'layTransferLeftCheckAll'\r\n }),\r\n '
                            ',\r\n '',\r\n '',\r\n '
                            ',\r\n TPL_BOX({\r\n index: 1,\r\n checkAllName: 'layTransferRightCheckAll'\r\n }),\r\n '
                            '].join('');\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++transfer.index;\r\n that.config = $.extend({}, that.config, transfer.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n title: ['列表一', '列表二'],\r\n width: 200,\r\n height: 360,\r\n data: [], // 数据源\r\n value: [], // 选中的数据\r\n showSearch: false, // 是否开启搜索\r\n id: '', // 唯一索引,默认自增 index\r\n text: {\r\n none: '无数据',\r\n searchNone: '无匹配数据'\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 解析模板\r\n var thisElem = that.elem = $(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index // 索引\r\n }));\r\n \r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n \r\n // 初始化属性\r\n options.data = options.data || [];\r\n options.value = options.value || [];\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n that.key = options.id;\r\n \r\n // 插入组件结构\r\n othis.html(that.elem);\r\n \r\n // 各级容器\r\n that.layBox = that.elem.find('.'+ ELEM_BOX)\r\n that.layHeader = that.elem.find('.'+ ELEM_HEADER)\r\n that.laySearch = that.elem.find('.'+ ELEM_SEARCH)\r\n that.layData = thisElem.find('.'+ ELEM_DATA);\r\n that.layBtn = thisElem.find('.'+ ELEM_ACTIVE + ' .layui-btn');\r\n \r\n // 初始化尺寸\r\n that.layBox.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n that.layData.css({\r\n height: function(){\r\n var height = options.height - that.layHeader.outerHeight();\r\n if(options.showSearch){\r\n height -= that.laySearch.outerHeight();\r\n }\r\n return height - 2;\r\n }()\r\n });\r\n \r\n that.renderData(); // 渲染数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染数据\r\n Class.prototype.renderData = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右穿梭框差异数据\r\n var arr = [{\r\n checkName: 'layTransferLeftCheck',\r\n views: []\r\n }, {\r\n checkName: 'layTransferRightCheck',\r\n views: []\r\n }];\r\n \r\n // 解析格式\r\n that.parseData(function(item){ \r\n // 标注为 selected 的为右边的数据\r\n var _index = item.selected ? 1 : 0\r\n var listElem = ['
                          • ',\r\n '',\r\n '
                          • '].join('');\r\n // 按照 options.value 顺序排列右侧数据\r\n if(_index){\r\n layui.each(options.value, function(i, v){\r\n if(v == item.value && item.selected){\r\n arr[_index].views[i] = listElem;\r\n }\r\n });\r\n } else {\r\n arr[_index].views.push(listElem);\r\n }\r\n delete item.selected;\r\n });\r\n \r\n that.layData.eq(0).html(arr[0].views.join(''));\r\n that.layData.eq(1).html(arr[1].views.join(''));\r\n \r\n that.renderCheckBtn();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-transfer-'+ this.index);\r\n };\r\n \r\n // 同步复选框和按钮状态\r\n Class.prototype.renderCheckBtn = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n obj = obj || {};\r\n \r\n that.layBox.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n var allElemCheckbox = othis.find('.'+ ELEM_HEADER).find('input[type=\"checkbox\"]');\r\n var listElemCheckbox = thisDataElem.find('input[type=\"checkbox\"]');\r\n \r\n // 同步复选框和按钮状态\r\n var nums = 0;\r\n var haveChecked = false;\r\n\r\n listElemCheckbox.each(function(){\r\n var isHide = $(this).data('hide');\r\n if(this.checked || this.disabled || isHide){\r\n nums++;\r\n }\r\n if(this.checked && !isHide){\r\n haveChecked = true;\r\n }\r\n });\r\n \r\n allElemCheckbox.prop('checked', haveChecked && nums === listElemCheckbox.length); // 全选复选框状态\r\n that.layBtn.eq(_index)[haveChecked ? 'removeClass' : 'addClass'](DISABLED); // 对应的按钮状态\r\n \r\n // 无数据视图\r\n if(!obj.stopNone){\r\n var isNone = thisDataElem.children('li:not(.'+ HIDE +')').length\r\n that.noneView(thisDataElem, isNone ? '' : options.text.none);\r\n }\r\n });\r\n \r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 无数据视图\r\n Class.prototype.noneView = function(thisDataElem, text){\r\n var createNoneElem = $('

                            '+ (text || '') +'

                            ');\r\n if(thisDataElem.find('.'+ NONE)[0]){\r\n thisDataElem.find('.'+ NONE).remove();\r\n }\r\n text.replace(/\\s/g, '') && thisDataElem.append(createNoneElem);\r\n };\r\n \r\n // 同步 value 属性值\r\n Class.prototype.setValue = function(){\r\n var that = this;\r\n var options = that.config;\r\n var arr = [];\r\n\r\n that.layBox.eq(1).find('.'+ ELEM_DATA +' input[type=\"checkbox\"]').each(function(){\r\n var isHide = $(this).data('hide');\r\n isHide || arr.push(this.value);\r\n });\r\n options.value = arr;\r\n \r\n return that;\r\n };\r\n\r\n // 解析数据\r\n Class.prototype.parseData = function(callback){\r\n var that = this;\r\n var options = that.config;\r\n var newData = [];\r\n \r\n layui.each(options.data, function(index, item){\r\n // 解析格式\r\n item = (typeof options.parseData === 'function' \r\n ? options.parseData(item) \r\n : item) || item;\r\n \r\n newData.push(item = $.extend({}, item))\r\n \r\n layui.each(options.value, function(index2, item2){\r\n if(item2 == item.value){\r\n item.selected = true;\r\n }\r\n });\r\n callback && callback(item);\r\n });\r\n \r\n options.data = newData;\r\n return that;\r\n };\r\n \r\n // 获得右侧面板数据\r\n Class.prototype.getData = function(value){\r\n var that = this;\r\n var options = that.config;\r\n var selectedData = [];\r\n \r\n that.setValue();\r\n \r\n layui.each(value || options.value, function(index, item){\r\n layui.each(options.data, function(index2, item2){\r\n delete item2.selected;\r\n if(item == item2.value){\r\n selectedData.push(item2);\r\n };\r\n });\r\n });\r\n return selectedData;\r\n };\r\n\r\n // 执行穿梭\r\n Class.prototype.transfer = function (_index, elem) {\r\n var that = this;\r\n var options = that.config;\r\n var thisBoxElem = that.layBox.eq(_index);\r\n var arr = [];\r\n\r\n if (!elem) {\r\n // 通过按钮触发找到选中的进行移动\r\n thisBoxElem.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n\r\n thisDataElem.children('li').each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var isHide = thisElemCheckbox.data('hide');\r\n\r\n if(thisElemCheckbox[0].checked && !isHide){\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n }\r\n\r\n that.setValue();\r\n });\r\n });\r\n } else {\r\n // 双击单条记录移动\r\n var thisList = elem;\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n\r\n that.setValue();\r\n }\r\n\r\n that.renderCheckBtn();\r\n\r\n // 穿梭时,如果另外一个框正在搜索,则触发匹配\r\n var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')\r\n siblingInput.val() === '' || siblingInput.trigger('keyup');\r\n\r\n // 穿梭时的回调\r\n options.onchange && options.onchange(that.getData(arr), _index);\r\n }\r\n\r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右复选框\r\n that.elem.on('click', 'input[lay-filter=\"layTransferCheckbox\"]+', function(){ \r\n var thisElemCheckbox = $(this).prev();\r\n var checked = thisElemCheckbox[0].checked;\r\n var thisDataElem = thisElemCheckbox.parents('.'+ ELEM_BOX).eq(0).find('.'+ ELEM_DATA);\r\n \r\n if(thisElemCheckbox[0].disabled) return;\r\n \r\n // 判断是否全选\r\n if(thisElemCheckbox.attr('lay-type') === 'all'){\r\n thisDataElem.find('input[type=\"checkbox\"]').each(function(){\r\n if(this.disabled) return;\r\n this.checked = checked;\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.renderCheckBtn({stopNone: true});\r\n }, 0)\r\n });\r\n\r\n // 双击穿梭\r\n that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){\r\n var elemThis = $(this);\r\n var thisElemCheckbox = elemThis.children('input[type=\"checkbox\"]');\r\n var thisDataElem = elemThis.parent();\r\n var thisBoxElem = thisDataElem.parent();\r\n var index = thisBoxElem.data('index');\r\n\r\n if(thisElemCheckbox[0].disabled) return;\r\n\r\n // 根据 dblclick 回调函数返回值决定是否执行穿梭 --- 2.9.3+\r\n var ret = typeof options.dblclick === 'function' ? options.dblclick({\r\n elem: elemThis,\r\n data: that.getData([thisElemCheckbox[0].value])[0],\r\n index: index\r\n }) : null;\r\n\r\n if(ret === false) return;\r\n\r\n that.transfer(index, elemThis);\r\n })\r\n\r\n // 穿梭按钮事件\r\n that.layBtn.on('click', function(){\r\n var othis = $(this);\r\n var _index = othis.data('index');\r\n\r\n if(othis.hasClass(DISABLED)) return;\r\n that.transfer(_index);\r\n });\r\n \r\n // 搜索\r\n that.laySearch.find('input').on('keyup', function(){\r\n var value = this.value;\r\n var thisDataElem = $(this).parents('.'+ ELEM_SEARCH).eq(0).siblings('.'+ ELEM_DATA);\r\n var thisListElem = thisDataElem.children('li');\r\n\r\n thisListElem.each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var title = thisElemCheckbox[0].title;\r\n\r\n // 是否区分大小写\r\n if(options.showSearch !== 'cs'){\r\n title = title.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n\r\n var isMatch = title.indexOf(value) !== -1;\r\n\r\n thisList[isMatch ? 'removeClass': 'addClass'](HIDE);\r\n thisElemCheckbox.data('hide', isMatch ? false : true);\r\n });\r\n\r\n that.renderCheckBtn();\r\n \r\n // 无匹配数据视图\r\n var isNone = thisListElem.length === thisDataElem.children('li.'+ HIDE).length;\r\n that.noneView(thisDataElem, isNone ? options.text.searchNone : '');\r\n });\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n transfer.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的数据(右侧面板)\r\n transfer.getData = function(id){\r\n var that = thisModule.that[id];\r\n return that.getData();\r\n };\r\n\r\n // 核心入口\r\n transfer.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, transfer);\r\n});\r\n","/**\r\n * carousel 轮播模块\r\n * MIT Licensed \r\n */\r\n \r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // 外部接口\r\n var carousel = {\r\n config: {}, // 全局配置项\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 字符常量\r\n var MOD_NAME = 'carousel';\r\n var ELEM = '.layui-carousel';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled'\r\n \r\n var ELEM_ITEM = '>*[carousel-item]>*';\r\n var ELEM_LEFT = 'layui-carousel-left';\r\n var ELEM_RIGHT = 'layui-carousel-right';\r\n var ELEM_PREV = 'layui-carousel-prev';\r\n var ELEM_NEXT = 'layui-carousel-next';\r\n var ELEM_ARROW = 'layui-carousel-arrow';\r\n var ELEM_IND = 'layui-carousel-ind';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, carousel.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n width: '600px',\r\n height: '280px',\r\n full: false, // 是否全屏\r\n arrow: 'hover', // 切换箭头默认显示状态:hover/always/none\r\n indicator: 'inside', // 指示器位置:inside/outside/none\r\n autoplay: true, // 是否自动切换\r\n interval: 3000, // 自动切换的时间间隔,不能低于800ms\r\n anim: '', // 动画类型:default/updown/fade\r\n trigger: 'click', // 指示器的触发方式:click/hover\r\n index: 0 // 初始开始的索引\r\n };\r\n \r\n // 轮播渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n carousel.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n options.elem = $(options.elem);\r\n if(!options.elem[0]) return;\r\n that.elemItem = options.elem.find(ELEM_ITEM);\r\n \r\n if(options.index < 0) options.index = 0;\r\n if(options.index >= that.elemItem.length) options.index = that.elemItem.length - 1;\r\n if(options.interval < 800) options.interval = 800;\r\n\r\n // 是否全屏模式\r\n if(options.full){\r\n options.elem.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 9999\r\n });\r\n } else {\r\n options.elem.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n }\r\n \r\n options.elem.attr('lay-anim', options.anim);\r\n \r\n // 初始焦点状态\r\n that.elemItem.eq(options.index).addClass(THIS);\r\n\r\n // 指示器等动作\r\n if(that.elemItem.length <= 1) return;\r\n\r\n that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n that.events();\r\n };\r\n \r\n // 重置轮播\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n clearInterval(that.timer);\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n \r\n // 获取上一个等待条目的索引\r\n Class.prototype.prevIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevIndex = options.index - 1;\r\n\r\n if(prevIndex < 0){\r\n prevIndex = that.elemItem.length - 1;\r\n }\r\n\r\n return prevIndex;\r\n };\r\n \r\n // 获取下一个等待条目的索引\r\n Class.prototype.nextIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var nextIndex = options.index + 1;\r\n\r\n if(nextIndex >= that.elemItem.length){\r\n nextIndex = 0;\r\n }\r\n\r\n return nextIndex;\r\n };\r\n \r\n // 索引递增\r\n Class.prototype.addIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index + num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index >= that.elemItem.length){\r\n options.index = 0;\r\n }\r\n };\r\n \r\n // 索引递减\r\n Class.prototype.subIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index - num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index < 0){\r\n options.index = that.elemItem.length - 1;\r\n }\r\n };\r\n \r\n // 自动轮播\r\n Class.prototype.autoplay = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n };\r\n \r\n // 箭头\r\n Class.prototype.arrow = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplArrow = $([\r\n '',\r\n ''\r\n ].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-arrow', options.arrow);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_ARROW)[0]){\r\n options.elem.find('.'+ELEM_ARROW).remove();\r\n }\r\n options.elem.append(tplArrow);\r\n \r\n // 事件\r\n tplArrow.on('click', function(){\r\n var othis = $(this);\r\n var type = othis.attr('lay-type')\r\n that.slide(type);\r\n });\r\n };\r\n\r\n // 跳转到特定下标\r\n Class.prototype.goto = function(index){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(index > options.index){\r\n that.slide('add', index - options.index);\r\n } else if(index < options.index){\r\n that.slide('sub', options.index - index);\r\n }\r\n }\r\n \r\n // 指示器\r\n Class.prototype.indicator = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplInd = that.elemInd = $(['
                              ',\r\n function(){\r\n var li = [];\r\n layui.each(that.elemItem, function(index){\r\n li.push('');\r\n });\r\n return li.join('');\r\n }(),\r\n '
                            '].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-indicator', options.indicator);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_IND)[0]){\r\n options.elem.find('.'+ELEM_IND).remove();\r\n }\r\n options.elem.append(tplInd);\r\n \r\n if(options.anim === 'updown'){\r\n tplInd.css('margin-top', -(tplInd.height()/2));\r\n }\r\n \r\n // 事件\r\n tplInd.find('li').on(options.trigger === 'hover' ? 'mouseover' : options.trigger, function(){\r\n that.goto($(this).index());\r\n });\r\n };\r\n \r\n // 滑动切换\r\n Class.prototype.slide = function(type, num){\r\n var that = this;\r\n var elemItem = that.elemItem;\r\n var options = that.config;\r\n var thisIndex = options.index;\r\n var filter = options.elem.attr('lay-filter');\r\n \r\n if(that.haveSlide) return;\r\n \r\n // 滑动方向\r\n if(type === 'sub'){\r\n that.subIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_PREV);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(ELEM_RIGHT);\r\n }, 50);\r\n } else { // 默认递增滑\r\n that.addIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_NEXT);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_LEFT);\r\n elemItem.eq(options.index).addClass(ELEM_LEFT);\r\n }, 50); \r\n }\r\n \r\n // 移除过渡类\r\n setTimeout(function(){\r\n elemItem.removeClass(THIS + ' ' + ELEM_PREV + ' ' + ELEM_NEXT + ' ' + ELEM_LEFT + ' ' + ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(THIS);\r\n that.haveSlide = false; // 解锁\r\n }, 350);\r\n \r\n // 指示器焦点\r\n that.elemInd.find('li').eq(options.index).addClass(THIS)\r\n .siblings().removeClass(THIS);\r\n \r\n that.haveSlide = true;\r\n \r\n // 回调返回的参数\r\n var params = {\r\n index: options.index,\r\n prevIndex: thisIndex,\r\n item: elemItem.eq(options.index)\r\n };\r\n \r\n typeof options.change === 'function' && options.change(params);\r\n layui.event.call(this, MOD_NAME, 'change('+ filter +')', params);\r\n };\r\n \r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(options.elem.data('haveEvents')) return;\r\n \r\n // 移入移出容器\r\n options.elem.on('mouseenter touchstart', function(){\r\n if (that.config.autoplay === 'always') return;\r\n clearInterval(that.timer);\r\n }).on('mouseleave touchend', function(){\r\n if (that.config.autoplay === 'always') return;\r\n that.autoplay();\r\n });\r\n\r\n var touchEl = options.elem;\r\n var isVertical = options.anim === 'updown';\r\n lay.touchSwipe(touchEl, {\r\n onTouchEnd: function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var distance = isVertical ? state.distanceY : state.distanceX;\r\n var speed = distance / duration;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(distance) > touchEl[isVertical ? 'height' : 'width']() / 3;\r\n if(shouldSwipe){\r\n that.slide(distance > 0 ? '' : 'sub');\r\n }\r\n }\r\n })\r\n \r\n options.elem.data('haveEvents', true);\r\n };\r\n \r\n // 核心入口\r\n carousel.render = function(options){\r\n return new Class(options);\r\n };\r\n \r\n exports(MOD_NAME, carousel);\r\n});\r\n\r\n \r\n","/**\r\n * rate 评分评星组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'],function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.jquery;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var rate = {\r\n config: {},\r\n index: layui.rate ? (layui.rate.index + 10000) : 0,\r\n\r\n //设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n //事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n }\r\n\r\n // 操作当前实例\r\n var thisRate = function () {\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setvalue: function (value) {\r\n that.setvalue.call(that, value);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n //字符常量\r\n var MOD_NAME = 'rate';\r\n var ELEM_VIEW = 'layui-rate';\r\n var ICON_RATE = 'layui-icon-rate';\r\n var ICON_RATE_SOLID = 'layui-icon-rate-solid';\r\n var ICON_RATE_HALF = 'layui-icon-rate-half';\r\n var ICON_SOLID_HALF = 'layui-icon-rate-solid layui-icon-rate-half';\r\n var ICON_SOLID_RATE = 'layui-icon-rate-solid layui-icon-rate';\r\n var ICON_HALF_RATE = 'layui-icon-rate layui-icon-rate-half';\r\n\r\n //构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++rate.index;\r\n that.config = $.extend({}, that.config, rate.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n length: 5, //初始长度\r\n text: false, //是否显示评分等级\r\n readonly: false, //是否只读\r\n half: false, //是否可以半星\r\n value: 0, //星星选中个数\r\n theme: '' //主题颜色\r\n };\r\n\r\n //评分渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n rate.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 自定义主题\r\n var style = options.theme ? ('style=\"color: '+ options.theme + ';\"') : '';\r\n\r\n options.elem = $(options.elem);\r\n\r\n //最大值不能大于总长度\r\n if(options.value > options.length){\r\n options.value = options.length;\r\n }\r\n\r\n //如果没有选择半星的属性,却给了小数的数值,统一向上或向下取整\r\n if(parseInt(options.value) !== options.value){\r\n if(!options.half){\r\n options.value = (Math.ceil(options.value) - options.value) < 0.5 ? Math.ceil(options.value): Math.floor(options.value)\r\n }\r\n }\r\n\r\n //组件模板\r\n var temp = '
                              ';\r\n for(var i = 1;i <= options.length;i++){\r\n var item = '
                            • Math.floor(options.value)?ICON_RATE:ICON_RATE_SOLID)\r\n + '\" '+ style +'>
                            • ';\r\n\r\n if(options.half&&parseInt(options.value) !== options.value&&i == Math.ceil(options.value)){\r\n temp = temp + '
                            • ';\r\n }else{\r\n temp = temp +item;\r\n }\r\n }\r\n temp += '
                            ' + (options.text ? (''+ options.value + '星') : '') + '';\r\n\r\n //开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n\r\n that.elemTemp = $(temp);\r\n\r\n options.span = that.elemTemp.next('span');\r\n\r\n options.setText && options.setText(options.value);\r\n\r\n othis.html(that.elemTemp);\r\n\r\n othis.addClass(\"layui-inline\");\r\n\r\n //如果不是只读,那么进行触控事件\r\n if(!options.readonly) that.action();\r\n\r\n };\r\n\r\n //评分重置\r\n Class.prototype.setvalue = function(value){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.value = value ;\r\n that.render();\r\n };\r\n\r\n //li触控事件\r\n Class.prototype.action = function(){\r\n var that = this;\r\n var options = that.config;\r\n var _ul = that.elemTemp;\r\n var wide = _ul.find(\"i\").width();\r\n var liElems = _ul.children(\"li\");\r\n\r\n liElems.each(function(index){\r\n var ind = index + 1;\r\n var othis = $(this);\r\n\r\n //点击\r\n othis.on('click', function(e){\r\n //将当前点击li的索引值赋给value\r\n options.value = ind;\r\n if(options.half){\r\n //获取鼠标在li上的位置\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n options.value = options.value - 0.5;\r\n }\r\n }\r\n\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n });\r\n\r\n //移入\r\n othis.on('mousemove', function(e){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + ind + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n // 如果设置可选半星,那么判断鼠标相对li的位置\r\n if(options.half){\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n othis.children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID)\r\n }\r\n }\r\n })\r\n\r\n //移出\r\n othis.on('mouseleave', function(){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + Math.floor(options.value) + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n //如果设置可选半星,根据分数判断是否有半星\r\n if(options.half){\r\n if(parseInt(options.value) !== options.value){\r\n _ul.children(\"li:eq(\" + Math.floor(options.value) + \")\").children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_SOLID_RATE)\r\n }\r\n }\r\n })\r\n\r\n })\r\n\r\n lay.touchSwipe(_ul, {\r\n onTouchMove: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n var pageX = e.touches[0].pageX;\r\n var rateElemWidth = _ul.width();\r\n var itemElemWidth = rateElemWidth / options.length; // 单颗星的宽度\r\n var offsetX = pageX - _ul.offset().left;\r\n var num = offsetX / itemElemWidth; // 原始值\r\n var remainder = num % 1;\r\n var integer = num - remainder;\r\n\r\n // 最终值\r\n var score = remainder <= 0.5 && options.half ? integer + 0.5 : Math.ceil(num);\r\n if(score > options.length) score = options.length;\r\n if(score < 0) score = 0;\r\n\r\n liElems.each(function(index){\r\n var iconElem = $(this).children('i');\r\n var isActiveIcon = (Math.ceil(score) - index === 1);\r\n var needSelect = Math.ceil(score) > index;\r\n var shouldHalfIcon = (score - index === 0.5);\r\n\r\n if(needSelect){\r\n // 设置选中样式\r\n iconElem.addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE);\r\n if(options.half && shouldHalfIcon){\r\n iconElem.addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID);\r\n }\r\n }else{\r\n // 恢复初始样式\r\n iconElem.addClass(ICON_RATE).removeClass(ICON_SOLID_HALF);\r\n }\r\n\r\n // 设置缩放样式\r\n iconElem.toggleClass('layui-rate-hover', isActiveIcon);\r\n });\r\n\r\n // 更新最终值\r\n options.value = score;\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n options.setText && options.setText(options.value);\r\n },\r\n onTouchEnd: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n _ul.find('i').removeClass('layui-rate-hover');\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n }\r\n });\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function () {\r\n var that = this;\r\n //var options = that.config;\r\n };\r\n\r\n //核心入口\r\n rate.render = function(options){\r\n var inst = new Class(options);\r\n return thisRate.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, rate);\r\n})\r\n","/**\r\n * flow 流加载组件\r\n */\r\n\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$, Flow = function(options){}\r\n ,ELEM_MORE = 'layui-flow-more'\r\n ,ELEM_LOAD = '';\r\n\r\n //主方法\r\n Flow.prototype.load = function(options){\r\n var that = this, page = 0, lock, isOver, lazyimg, timer;\r\n options = options || {};\r\n\r\n var elem = $(options.elem); if(!elem[0]) return;\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var mb = options.mb || 50; //与底部的临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; //是否自动滚动加载\r\n var end = options.end || '没有更多了'; //“末页”显示文案\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '加载更多'\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem.append(more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n html = $(html);\r\n more.before(html);\r\n over = over == 0 ? true : null;\r\n over ? more.html(end) : more.find('a').html(ELEM_TEXT);\r\n isOver = over;\r\n lock = null;\r\n lazyimg && lazyimg();\r\n };\r\n\r\n //触发请求\r\n var done = function(){\r\n lock = true;\r\n more.find('a').html(ELEM_LOAD);\r\n typeof options.done === 'function' && options.done(++page, next);\r\n };\r\n\r\n done();\r\n\r\n //不自动滚动加载\r\n more.find('a').on('click', function(){\r\n var othis = $(this);\r\n if(isOver) return;\r\n lock || done();\r\n });\r\n\r\n //如果允许图片懒加载\r\n if(options.isLazyimg){\r\n lazyimg = that.lazyimg({\r\n elem: options.elem + ' img'\r\n ,scrollElem: options.scrollElem\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this), top = othis.scrollTop();\r\n\r\n if(timer) clearTimeout(timer);\r\n if(isOver || !elem.width()) return; //如果已经结束,或者元素处于隐藏状态,则不执行滚动加载\r\n\r\n timer = setTimeout(function(){\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? othis.height() : $(window).height();\r\n\r\n //计算滚动所在容器的实际高度\r\n var scrollHeight = notDocument\r\n ? othis.prop('scrollHeight')\r\n : document.documentElement.scrollHeight;\r\n\r\n //临界点\r\n if(scrollHeight - top - height <= mb){\r\n lock || done();\r\n }\r\n }, 100);\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //图片懒加载\r\n Flow.prototype.lazyimg = function(options){\r\n var that = this, index = 0, haveScroll;\r\n options = options || {};\r\n\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var elem = options.elem || 'img';\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //显示图片\r\n var show = function(item, height){\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n var elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n /* 始终只加载在当前屏范围内的图片 */\r\n if(elemTop >= start && elemTop <= end){\r\n if(item.attr('lay-src')){\r\n var src = item.attr('lay-src');\r\n layui.img(src, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.attr('src', src).removeAttr('lay-src');\r\n\r\n /* 当前图片加载就绪后,检测下一个图片是否在当前屏 */\r\n next[0] && render(next);\r\n index++;\r\n }, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.removeAttr('lay-src');\r\n });\r\n }\r\n }\r\n }, render = function(othis, scroll){\r\n\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? (scroll||scrollElem).height() : $(window).height();\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n\r\n that.lazyimg.elem = $(elem);\r\n\r\n if(othis){\r\n show(othis, height);\r\n } else {\r\n //计算未加载过的图片\r\n for(var i = 0; i < that.lazyimg.elem.length; i++){\r\n var item = that.lazyimg.elem.eq(i), elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n show(item, height);\r\n index = i;\r\n\r\n //如果图片的top坐标,超出了当前屏,则终止后续图片的遍历\r\n if(elemTop > end) break;\r\n }\r\n }\r\n };\r\n\r\n render();\r\n\r\n if(!haveScroll){\r\n var timer;\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this);\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(function(){\r\n render(null, othis);\r\n }, 50);\r\n });\r\n haveScroll = true;\r\n }\r\n return render;\r\n };\r\n\r\n //暴露接口\r\n exports('flow', new Flow());\r\n});\r\n","/**\r\n * code\r\n * Code 预览组件\r\n */\r\n\r\nlayui.define(['lay', 'util', 'element', 'form'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var util = layui.util;\r\n var element = layui.element;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var hint = layui.hint();\r\n\r\n // 常量\r\n var CONST = {\r\n ELEM_VIEW: 'layui-code-view',\r\n ELEM_TAB: 'layui-tab',\r\n ELEM_HEADER: 'layui-code-header',\r\n ELEM_FULL: 'layui-code-full',\r\n ELEM_PREVIEW: 'layui-code-preview',\r\n ELEM_ITEM: 'layui-code-item',\r\n ELEM_SHOW: 'layui-show',\r\n ELEM_LINE: 'layui-code-line',\r\n ELEM_LINE_NUM: 'layui-code-line-number',\r\n ELEM_LN_MODE: 'layui-code-ln-mode',\r\n CDDE_DATA_CLASS: 'LayuiCodeDataClass',\r\n LINE_RAW_WIDTH: 45, // 行号初始宽度,需与 css 保持一致\r\n };\r\n\r\n // 默认参数项\r\n var config = {\r\n elem: '', // 元素选择器\r\n about: '', // 代码栏右上角信息\r\n ln: true, // 代码区域是否显示行号\r\n header: false, // 是否显示代码栏头部区域\r\n encode: true, // 是否对 code 进行编码(若开启预览,则强制开启)\r\n copy: true, // 是否开启代码区域复制功能图标\r\n // 默认文本\r\n text: {\r\n code: util.escape(''),\r\n preview: 'Preview',\r\n },\r\n wordWrap: true, // 是否自动换行\r\n lang: 'text', // 指定语言类型\r\n highlighter: false, // 是否开启语法高亮,'hljs','prism','shiki'\r\n langMarker: false, // 代码区域是否显示语言类型标记\r\n };\r\n\r\n // 初始索引\r\n var codeIndex = layui.code ? (layui.code.index + 10000) : 0;\r\n\r\n // 去除尾部空格\r\n var trimEnd = function(str){\r\n return String(str).replace(/\\s+$/, '');\r\n }\r\n // 保留首行缩进\r\n var trim = function(str){\r\n return trimEnd(str).replace(/^\\n|\\n$/, '');\r\n };\r\n\r\n // export api\r\n exports('code', function(options, mode){\r\n options = $.extend(true, {}, config, options);\r\n\r\n // 返回对象\r\n var ret = {\r\n config: options,\r\n reload: function(opts) { // 重载\r\n layui.code(this.updateOptions(opts));\r\n },\r\n updateOptions: function(opts) { // 更新属性(选项)\r\n opts = opts || {};\r\n delete opts.elem;\r\n return $.extend(true, options, opts);\r\n },\r\n reloadCode: function(opts) { // 仅重载 code\r\n layui.code(this.updateOptions(opts), 'reloadCode');\r\n }\r\n };\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n // 是否正向渲染\r\n layui.each(options.obverse ? elem : elem.get().reverse(), function(){\r\n layui.code($.extend({}, options, {\r\n elem: this\r\n }), mode);\r\n });\r\n return ret;\r\n }\r\n\r\n // 目标元素是否存在\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return ret;\r\n\r\n // 合并属性上的参数,并兼容旧版本属性写法 lay-*\r\n $.extend(true, options, lay.options(othis[0]), function(obj){\r\n var attrs = ['title', 'height', 'encode', 'skin', 'about'];\r\n layui.each(attrs, function(i, attr){\r\n var value = othis.attr('lay-'+ attr);\r\n if(typeof value === 'string'){\r\n obj[attr] = value;\r\n }\r\n })\r\n return obj;\r\n }({}));\r\n\r\n // codeRender 需要关闭编码\r\n // 未使用 codeRender 时若开启了预览,则强制开启编码\r\n options.encode = (options.encode || options.preview) && !options.codeRender;\r\n\r\n // 获得初始 code\r\n options.code = options.code || function(){\r\n var arr = [];\r\n var textarea = othis.children('textarea');\r\n\r\n // 若内容放置在 textarea 中\r\n textarea.each(function(){\r\n arr.push(trim(this.value));\r\n });\r\n\r\n // 内容直接放置在元素外层\r\n if(arr.length === 0){\r\n arr.push(trim(othis.html()));\r\n }\r\n\r\n return arr.join('');\r\n }();\r\n\r\n // 创建 code 行结构\r\n var createCode = function(html) {\r\n // codeRender\r\n if(typeof options.codeRender === 'function') {\r\n html = options.codeRender(String(html), options);\r\n }\r\n\r\n // code 行\r\n var lines = String(html).split(/\\r?\\n/g);\r\n\r\n // 包裹 code 行结构\r\n html = $.map(lines, function(line, num) {\r\n return [\r\n '
                            ',\r\n (\r\n options.ln ? [\r\n '
                            ',\r\n (util.digit(num + 1) + '.'),\r\n '
                            ',\r\n ].join('') : ''\r\n ),\r\n '
                            ',\r\n (line || ' '),\r\n '
                            ',\r\n '
                            '\r\n ].join('');\r\n });\r\n\r\n return {\r\n lines: lines,\r\n html: html\r\n };\r\n };\r\n\r\n // 原始 code\r\n var rawCode = options.code;\r\n\r\n // 最终 code\r\n var finalCode = function(code) {\r\n return typeof options.codeParse === 'function' ?\r\n options.codeParse(code, options) :\r\n code;\r\n };\r\n\r\n // 仅重载 code\r\n if (mode === 'reloadCode') {\r\n return othis.children('.layui-code-wrap').html(\r\n createCode(finalCode(rawCode)).html\r\n ), ret;\r\n }\r\n\r\n // 自增索引\r\n var index = layui.code.index = ++codeIndex;\r\n othis.attr('lay-code-index', index);\r\n\r\n // 初始化 className\r\n var hasDataClass = CONST.CDDE_DATA_CLASS in othis.data();\r\n if (hasDataClass) {\r\n othis.attr('class', othis.data(CONST.CDDE_DATA_CLASS) || '');\r\n }\r\n\r\n // 记录初始 className\r\n if (!hasDataClass) {\r\n othis.data(CONST.CDDE_DATA_CLASS, othis.attr('class'));\r\n }\r\n\r\n // 工具栏\r\n var tools = {\r\n copy: {\r\n className: 'file-b',\r\n title: ['复制代码'],\r\n event: function(obj){\r\n var code = util.unescape(finalCode(options.code));\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\r\n\r\n typeof options.onCopy === 'function' && options.onCopy(code);\r\n }\r\n }\r\n };\r\n\r\n // 移除包裹结构\r\n var unwrap = (function fn() {\r\n var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);\r\n var elemTabHas = elemViewHas.children('.'+ CONST.ELEM_TAB);\r\n var elemPreviewViewHas = elemViewHas.children('.' + CONST.ELEM_ITEM +'-preview');\r\n\r\n // 移除旧结构\r\n elemTabHas.remove(); // 移除 tab\r\n elemPreviewViewHas.remove(); // 移除预览区域\r\n if (elemViewHas[0]) othis.unwrap(); // 移除外层容器\r\n\r\n return fn;\r\n })();\r\n\r\n // 是否开启预览\r\n if(options.preview){\r\n var FILTER_VALUE = 'LAY-CODE-DF-'+ index;\r\n var layout = options.layout || ['code', 'preview'];\r\n var isIframePreview = options.preview === 'iframe';\r\n\r\n // 追加 Tab 组件\r\n var elemView = $('
                            ');\r\n var elemTabView = $('
                            ');\r\n var elemHeaderView = $('
                            ');\r\n var elemPreviewView = $('
                            ');\r\n var elemToolbar = $('
                            ');\r\n\r\n\r\n if(options.id) elemView.attr('id', options.id);\r\n elemView.addClass(options.className);\r\n elemTabView.attr('lay-filter', FILTER_VALUE);\r\n\r\n // 标签头\r\n layui.each(layout, function(i, v){\r\n var li = $('
                          • ');\r\n if(i === 0) li.addClass('layui-this');\r\n li.html(options.text[v]);\r\n elemHeaderView.append(li);\r\n });\r\n\r\n // 工具栏\r\n $.extend(tools, {\r\n 'full': {\r\n className: 'screen-full',\r\n title: ['最大化显示', '还原显示'],\r\n event: function(obj){\r\n var el = obj.elem;\r\n var elemView = el.closest('.'+ CONST.ELEM_PREVIEW);\r\n var classNameFull = 'layui-icon-'+ this.className;\r\n var classNameRestore = 'layui-icon-screen-restore';\r\n var title = this.title;\r\n var htmlElem = $('html,body');\r\n var ELEM_SCROLLBAR_HIDE = 'layui-scrollbar-hide';\r\n\r\n if(el.hasClass(classNameFull)){\r\n elemView.addClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameFull).addClass(classNameRestore);\r\n el.attr('title', title[1]);\r\n htmlElem.addClass(ELEM_SCROLLBAR_HIDE);\r\n } else {\r\n elemView.removeClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameRestore).addClass(classNameFull);\r\n el.attr('title', title[0]);\r\n htmlElem.removeClass(ELEM_SCROLLBAR_HIDE);\r\n }\r\n }\r\n },\r\n 'window': {\r\n className: 'release',\r\n title: ['在新窗口预览'],\r\n event: function(obj){\r\n util.openWin({\r\n content: finalCode(options.code)\r\n });\r\n }\r\n }\r\n });\r\n\r\n // copy\r\n if(options.copy){\r\n if(layui.type(options.tools) === 'array'){\r\n // 若 copy 未存在于 tools 中,则追加到最前\r\n if(options.tools.indexOf('copy') === -1){\r\n options.tools.unshift('copy');\r\n }\r\n } else {\r\n options.tools = ['copy'];\r\n }\r\n }\r\n\r\n // 工具栏事件\r\n elemToolbar.on('click', '>i', function(){\r\n var oi = $(this);\r\n var type = oi.data('type');\r\n var parameters = {\r\n elem: oi,\r\n type: type,\r\n options: options, // 当前属性选项\r\n rawCode: options.code, // 原始 code\r\n finalCode: util.unescape(finalCode(options.code)) // 最终 code\r\n };\r\n\r\n // 内部 tools event\r\n tools[type] && typeof tools[type].event === 'function' && tools[type].event(parameters);\r\n\r\n // 外部 tools event\r\n typeof options.toolsEvent === 'function' && options.toolsEvent(parameters);\r\n });\r\n\r\n // 增加工具栏\r\n if (options.addTools && options.tools) {\r\n options.tools = [].concat(options.tools, options.addTools);\r\n }\r\n\r\n // 渲染工具栏\r\n layui.each(options.tools, function(i, v){\r\n var viso = typeof v === 'object'; // 若为 object 值,则可自定义更多属性\r\n var tool = viso ? v : (\r\n tools[v] || {\r\n className: v,\r\n title: [v]\r\n }\r\n );\r\n\r\n var className = tool.className || tool.type;\r\n var title = tool.title || [''];\r\n var type = viso ? ( tool.type || className ) : v;\r\n\r\n if (!type) return;\r\n\r\n // 若非内置 tool,则合并到 tools 中\r\n if (!tools[type]) {\r\n var obj = {};\r\n obj[type] = tool;\r\n $.extend(tools, obj);\r\n }\r\n\r\n elemToolbar.append(\r\n ''\r\n );\r\n });\r\n\r\n othis.addClass(CONST.ELEM_ITEM).wrap(elemView); // 包裹外层容器\r\n elemTabView.append(elemHeaderView); // 追加标签头\r\n options.tools && elemTabView.append(elemToolbar); // 追加工具栏\r\n othis.before(elemTabView); // 追加标签结构\r\n\r\n // 追加预览\r\n if(isIframePreview){\r\n elemPreviewView.html('');\r\n }\r\n\r\n // 执行预览\r\n var runPreview = function(thisItemBody){\r\n var iframe = thisItemBody.children('iframe')[0];\r\n\r\n // 是否 iframe 方式预览\r\n if(isIframePreview && iframe){\r\n iframe.srcdoc = finalCode(options.code);\r\n } else {\r\n thisItemBody.html(options.code);\r\n }\r\n\r\n // 当前实例预览完毕后的回调\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({\r\n container: thisItemBody,\r\n options: options,\r\n render: function(){\r\n form.render(thisItemBody.find('.layui-form'));\r\n element.render();\r\n }\r\n });\r\n },3);\r\n };\r\n\r\n if(layout[0] === 'preview'){\r\n elemPreviewView.addClass(CONST.ELEM_SHOW);\r\n othis.before(elemPreviewView);\r\n runPreview(elemPreviewView);\r\n } else {\r\n othis.addClass(CONST.ELEM_SHOW).after(elemPreviewView);\r\n }\r\n\r\n // 内容项初始化样式\r\n options.previewStyle = [options.style, options.previewStyle].join('');\r\n elemPreviewView.attr('style', options.previewStyle);\r\n\r\n // tab change\r\n element.on('tab('+ FILTER_VALUE +')', function(data){\r\n var $this = $(this);\r\n var thisElem = $(data.elem).closest('.'+ CONST.ELEM_PREVIEW);\r\n var elemItemBody = thisElem.find('.'+ CONST.ELEM_ITEM);\r\n var thisItemBody = elemItemBody.eq(data.index);\r\n\r\n elemItemBody.removeClass(CONST.ELEM_SHOW);\r\n thisItemBody.addClass(CONST.ELEM_SHOW);\r\n\r\n if($this.attr('lay-id') === 'preview'){\r\n runPreview(thisItemBody);\r\n }\r\n\r\n setCodeLayout();\r\n });\r\n }\r\n\r\n // 创建 code 容器\r\n var codeElem = $(''); // 此处的闭合标签是为了兼容 IE8\r\n\r\n // 添加主容器 className\r\n othis.addClass(function(arr) {\r\n if (!options.wordWrap) arr.push('layui-code-nowrap');\r\n return arr.join(' ')\r\n }(['layui-code-view layui-border-box']));\r\n\r\n // code 主题风格\r\n var theme = options.theme || options.skin;\r\n if (theme) {\r\n othis.removeClass('layui-code-theme-dark layui-code-theme-light');\r\n othis.addClass('layui-code-theme-'+ theme);\r\n }\r\n\r\n // 添加高亮必要的 className\r\n if (options.highlighter) {\r\n othis.addClass([\r\n options.highlighter,\r\n 'language-' + options.lang,\r\n 'layui-code-hl'\r\n ].join(' '));\r\n }\r\n\r\n // 获取 code 行结构\r\n var createCodeRst = createCode(\r\n options.encode ? util.escape(finalCode(rawCode)) : rawCode // 是否编码\r\n );\r\n var lines = createCodeRst.lines;\r\n\r\n // 插入 code\r\n othis.html(codeElem.html(createCodeRst.html));\r\n\r\n // 插入行号边栏\r\n if (options.ln) {\r\n othis.append('
                            ');\r\n }\r\n\r\n // 兼容旧版本 height 属性\r\n if (options.height) {\r\n codeElem.css('max-height', options.height);\r\n }\r\n\r\n // code 区域样式\r\n options.codeStyle = [options.style, options.codeStyle].join('');\r\n if (options.codeStyle) {\r\n codeElem.attr('style', function(i, val) {\r\n return (val || '') + options.codeStyle;\r\n });\r\n }\r\n\r\n // 动态设置样式\r\n var cssRules = [\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line{}',\r\n setValue: function(item, value) {\r\n item.style['padding-left'] = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line>.layui-code-line-number{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-ln-side{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n }\r\n ];\r\n\r\n // 生成初始 style 元素\r\n var styleElem = lay.style({\r\n target: othis[0],\r\n id: 'DF-code-'+ index,\r\n text: $.map($.map(cssRules, function(val){\r\n return val.selector;\r\n }), function(val, i) {\r\n return ['.layui-code-view[lay-code-index=\"'+ index + '\"]', val].join(' ');\r\n }).join('')\r\n })\r\n\r\n // 动态设置 code 布局\r\n var setCodeLayout = (function fn() {\r\n if (options.ln) {\r\n var multiLine = Math.floor(lines.length / 100);\r\n var lineElem = codeElem.children('.'+ CONST.ELEM_LINE);\r\n var width = lineElem.last().children('.'+ CONST.ELEM_LINE_NUM).outerWidth();\r\n\r\n othis.addClass(CONST.ELEM_LN_MODE);\r\n\r\n // 若超出 100 行\r\n if (multiLine && width > CONST.LINE_RAW_WIDTH) {\r\n lay.getStyleRules(styleElem, function(item, i) {\r\n try {\r\n cssRules[i].setValue(item, width);\r\n } catch(e) { }\r\n });\r\n }\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n // 创建 code header\r\n if (options.header) {\r\n var headerElem = $('
                            ');\r\n headerElem.html(options.title || options.text.code);\r\n othis.prepend(headerElem);\r\n }\r\n\r\n // 创建 code 区域固定条\r\n var elemFixbar = $('
                            ');\r\n\r\n // 若开启复制,且未开启预览,则单独生成复制图标\r\n if(options.copy && !options.preview){\r\n var copyElem = $(['',\r\n '',\r\n ''].join(''));\r\n\r\n // 点击复制\r\n copyElem.on('click', function(){\r\n tools.copy.event();\r\n });\r\n\r\n elemFixbar.append(copyElem);\r\n }\r\n\r\n // 创建 language marker\r\n if (options.langMarker) {\r\n elemFixbar.append('' + options.lang + '');\r\n }\r\n\r\n // 创建 about 自定义内容\r\n if (options.about) {\r\n elemFixbar.append(options.about);\r\n }\r\n\r\n // 生成 code fixbar\r\n othis.append(elemFixbar);\r\n\r\n // code 渲染完毕后的回调\r\n if (!options.preview) {\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({});\r\n },3);\r\n }\r\n\r\n // 所有实例渲染完毕后的回调\r\n if(options.elem.length === index + 1){\r\n typeof options.allDone === 'function' && options.allDone();\r\n }\r\n\r\n return ret;\r\n });\r\n});\r\n\r\n// 若为源码版,则自动加载该组件依赖的 css 文件\r\nif(!layui['layui.all']){\r\n layui.addcss('modules/code.css?v=6', 'skincodecss');\r\n}\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 39c90057..f83cb049 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "layui", - "version": "2.9.3", + "version": "2.9.4", "description": "Classic modular Front-End UI library", "keywords": [ "layui", diff --git a/src/layui.js b/src/layui.js index a6228ffb..5a0c5114 100644 --- a/src/layui.js +++ b/src/layui.js @@ -16,7 +16,7 @@ }; var Layui = function(){ - this.v = '2.9.3'; // Layui 版本号 + this.v = '2.9.4'; // Layui 版本号 }; // 识别预先可能定义的指定全局对象