From 7dfb66b94ea4b1188baa4364d9503c1367f44c80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?= <3277200+sentsim@users.noreply.github.com> Date: Wed, 19 Feb 2025 23:48:50 +0800 Subject: [PATCH] release: v2.9.23 --- dist/css/layui.css | 2 +- dist/css/layui.css.map | 2 +- dist/font/iconfont.eot | Bin 54172 -> 54764 bytes dist/font/iconfont.svg | 14 +++++++++----- dist/font/iconfont.ttf | Bin 53996 -> 54588 bytes dist/font/iconfont.woff | Bin 34624 -> 34928 bytes dist/font/iconfont.woff2 | Bin 29736 -> 30004 bytes dist/layui.js | 2 +- dist/layui.js.map | 2 +- docs/versions.md | 18 +++++++++++++++++- package.json | 2 +- src/layui.js | 2 +- 12 files changed, 32 insertions(+), 12 deletions(-) diff --git a/dist/css/layui.css b/dist/css/layui.css index cc694d21..feb2e739 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,h5,h6{font-weight:700}h5,h6{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;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;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.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{margin:32px 0;font-size:32px}.layui-text h2{margin:24px 0;font-size:24px}.layui-text h3{margin:16px 0;font-size:18px}.layui-text h4{margin:11px 0;font-size:16px}.layui-text h5{margin:11px 0;font-size:14px}.layui-text h6{margin:11px 0;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){margin:15px 0;padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){display:block;padding:15px;font-family:"Courier New",Consolas,"Lucida Console",monospace}.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-panel-wrap{position:absolute;z-index:99999999}.layui-select-panel-wrap dl{position:relative;display:block;top:0}.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-form-checkbox[lay-skin=none] *,.layui-form-radio[lay-skin=none] *{box-sizing:border-box}.layui-form-checkbox[lay-skin=none],.layui-form-radio[lay-skin=none]{position:relative;min-height:20px;margin:0;padding:0;height:auto;line-height:normal}.layui-form-checkbox[lay-skin=none]>div,.layui-form-radio[lay-skin=none]>div{position:relative;top:0;left:0;cursor:pointer;z-index:10;color:inherit;background-color:inherit}.layui-form-checkbox[lay-skin=none]>i,.layui-form-radio[lay-skin=none]>i{display:none}.layui-form-checkbox[lay-skin=none].layui-checkbox-disabled>div,.layui-form-radio[lay-skin=none].layui-radio-disabled>div{cursor:not-allowed}.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-disabled-transition *,.layui-table-disabled-transition :after,.layui-table-disabled-transition :before{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.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;position:relative;border-right:none}.layui-table-view:after{content:"";position:absolute;top:0;right:0;width:1px;height:100%;background-color:#eee;z-index:101}.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;right:0;bottom:0;margin:0;z-index:199;transition:opacity .1s;user-select:none}.layui-table-loading-icon{position:absolute;width:100%\0;left:50%;left:auto\0;top:50%;margin-top:-15px\0;transform:translate(-50%,-50%);transform:none\0;text-align:center}.layui-table-loading-icon .layui-icon{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-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:0;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;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title:after{content:"";border-bottom-color:#eee;border-bottom-width:1px;border-style:none none solid;bottom:0;left:0;right:auto;top:auto;pointer-events:none;position:absolute;width:100%;z-index:8}.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:40px;border-width:1px;border-bottom-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none;z-index:9}.layui-tab-bar{box-sizing:border-box;position:absolute;right:0;top:0;z-index:10;width:30px;height:40px;line-height:40px;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-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",monospace;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;overflow:hidden}.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:0;right:100%;cursor:pointer;transform:translate(-50%,-50%)}.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;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:168px;height:30px;color:#5f5f5f;padding-left:5px}.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",monospace}.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=workdays]: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}.laydate-time-list{display:table}.layui-laydate .laydate-time-list>li{display:table-cell;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 .laydate-time-list-hide-1 ol li{padding-left:53px}.layui-laydate .laydate-time-list-hide-2 ol li{padding-left:117px}.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-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-header{border-left-style:dashed}.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:#cffae9;transition:all .3s}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#cffae9!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;transition:all .3s}.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:0 0!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:#16b777!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 .layui-this.laydate-disabled,.layui-laydate .layui-this.laydate-disabled>div{background-color:#eee!important}.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-this,.laydate-theme-molv .layui-this>div{background-color:#16baaa!important}.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}.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left:49px}.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left:107px}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{opacity:0;transition:opacity .35s cubic-bezier(.34,.69,.1,1);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-load{background:url(data:image/gif;base64,R0lGODlhJQAlAJECAL3L2AYrTv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgACACwAAAAAJQAlAAACi5SPqcvtDyGYIFpF690i8xUw3qJBwUlSadmcLqYmGQu6KDIeM13beGzYWWy3DlB4IYaMk+Dso2RWkFCfLPcRvFbZxFLUDTt21BW56TyjRep1e20+i+eYMR145W2eefj+6VFmgTQi+ECVY8iGxcg35phGo/iDFwlTyXWphwlm1imGRdcnuqhHeop6UAAAIfkEBQoAAgAsEAACAAQACwAAAgWMj6nLXAAh+QQFCgACACwVAAUACgALAAACFZQvgRi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwXABEADAADAAACBYyPqcsFACH5BAUKAAIALBUAFQAKAAsAAAITlGKZwWoMHYxqtmplxlNT7ixGAQAh+QQFCgACACwQABgABAALAAACBYyPqctcACH5BAUKAAIALAUAFQAKAAsAAAIVlC+BGL3Z3IlxUmUuhtR2LzHhsiEFACH5BAUKAAIALAEAEQAMAAMAAAIFjI+pywUAIfkEBQoAAgAsBQAFAAoACwAAAhOUYJnAagwdjGq2amXGU1PuLEYBACH5BAUKAAIALBAAAgAEAAsAAAIFhI+py1wAIfkEBQoAAgAsFQAFAAoACwAAAhWUL4AIvdnciXFSZS6G1HYvMeGyIQUAIfkEBQoAAgAsFwARAAwAAwAAAgWEj6nLBQAh+QQFCgACACwVABUACgALAAACE5RgmcBqDB2MarZqZcZTU+4sRgEAIfkEBQoAAgAsEAAYAAQACwAAAgWEj6nLXAAh+QQFCgACACwFABUACgALAAACFZQvgAi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwBABEADAADAAACBYSPqcsFADs=) #fff center center no-repeat}.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-btn-is-loading{opacity:.5!important;cursor:not-allowed!important;cursor:wait!important;overflow:hidden;white-space:nowrap;-webkit-user-select:none;-ms-user-select:none;user-select:none}.layui-layer-btn-is-loading .layui-layer-btn-loading-icon{margin-right:8px;font-size:14px}.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,h5,h6{font-weight:700}h5,h6{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=293);src:url(../font/iconfont.eot?v=293#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=293) format('woff2'),url(../font/iconfont.woff?v=293) format('woff'),url(../font/iconfont.ttf?v=293) format('truetype'),url(../font/iconfont.svg?v=293#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-sound:before{content:"\e69d"}.layui-icon-bot:before{content:"\e7d6"}.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;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;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.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{margin:32px 0;font-size:32px}.layui-text h2{margin:24px 0;font-size:24px}.layui-text h3{margin:16px 0;font-size:18px}.layui-text h4{margin:11px 0;font-size:16px}.layui-text h5{margin:11px 0;font-size:14px}.layui-text h6{margin:11px 0;font-size:13px}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text hr{margin:15px 0}.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 ol ul>li,.layui-text ul ul>li{list-style-type:disc}.layui-text ol li>p:first-child,.layui-text ul li>p:first-child{margin-top:0;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){margin:15px 0;padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){display:block;padding:15px;font-family:"Courier New",Consolas,"Lucida Console",monospace}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.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-panel-wrap{position:absolute;z-index:99999999}.layui-select-panel-wrap dl{position:relative;display:block;top:0}.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-form-checkbox[lay-skin=none] *,.layui-form-radio[lay-skin=none] *{box-sizing:border-box}.layui-form-checkbox[lay-skin=none],.layui-form-radio[lay-skin=none]{position:relative;min-height:20px;margin:0;padding:0;height:auto;line-height:normal}.layui-form-checkbox[lay-skin=none]>div,.layui-form-radio[lay-skin=none]>div{position:relative;top:0;left:0;cursor:pointer;z-index:10;color:inherit;background-color:inherit}.layui-form-checkbox[lay-skin=none]>i,.layui-form-radio[lay-skin=none]>i{display:none}.layui-form-checkbox[lay-skin=none].layui-checkbox-disabled>div,.layui-form-radio[lay-skin=none].layui-radio-disabled>div{cursor:not-allowed}.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-disabled-transition *,.layui-table-disabled-transition :after,.layui-table-disabled-transition :before{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.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;position:relative;border-right:none}.layui-table-view:after{content:"";position:absolute;top:0;right:0;width:1px;height:100%;background-color:#eee;z-index:101}.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;right:0;bottom:0;margin:0;z-index:199;transition:opacity .1s;user-select:none}.layui-table-loading-icon{position:absolute;width:100%\0;left:50%;left:auto\0;top:50%;margin-top:-15px\0;transform:translate(-50%,-50%);transform:none\0;text-align:center}.layui-table-loading-icon .layui-icon{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-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:0;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;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title:after{content:"";border-bottom-color:#eee;border-bottom-width:1px;border-style:none none solid;bottom:0;left:0;right:auto;top:auto;pointer-events:none;position:absolute;width:100%;z-index:8}.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:40px;border-width:1px;border-bottom-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none;z-index:9}.layui-tab-bar{box-sizing:border-box;position:absolute;right:0;top:0;z-index:10;width:30px;height:40px;line-height:40px;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-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",monospace;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;overflow:hidden}.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:0;right:100%;cursor:pointer;transform:translate(-50%,-50%)}.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;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:168px;height:30px;color:#5f5f5f;padding-left:5px}.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",monospace}.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=workdays]: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}.laydate-time-list{display:table}.layui-laydate .laydate-time-list>li{display:table-cell;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 .laydate-time-list-hide-1 ol li{padding-left:53px}.layui-laydate .laydate-time-list-hide-2 ol li{padding-left:117px}.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-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-header{border-left-style:dashed}.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:#cffae9;transition:all .3s}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#cffae9!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;transition:all .3s}.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:0 0!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:#16b777!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 .layui-this.laydate-disabled,.layui-laydate .layui-this.laydate-disabled>div{background-color:#eee!important}.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-this,.laydate-theme-molv .layui-this>div{background-color:#16baaa!important}.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}.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left:49px}.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left:107px}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{opacity:0;transition:opacity .35s cubic-bezier(.34,.69,.1,1);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-load{background:url(data:image/gif;base64,R0lGODlhJQAlAJECAL3L2AYrTv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgACACwAAAAAJQAlAAACi5SPqcvtDyGYIFpF690i8xUw3qJBwUlSadmcLqYmGQu6KDIeM13beGzYWWy3DlB4IYaMk+Dso2RWkFCfLPcRvFbZxFLUDTt21BW56TyjRep1e20+i+eYMR145W2eefj+6VFmgTQi+ECVY8iGxcg35phGo/iDFwlTyXWphwlm1imGRdcnuqhHeop6UAAAIfkEBQoAAgAsEAACAAQACwAAAgWMj6nLXAAh+QQFCgACACwVAAUACgALAAACFZQvgRi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwXABEADAADAAACBYyPqcsFACH5BAUKAAIALBUAFQAKAAsAAAITlGKZwWoMHYxqtmplxlNT7ixGAQAh+QQFCgACACwQABgABAALAAACBYyPqctcACH5BAUKAAIALAUAFQAKAAsAAAIVlC+BGL3Z3IlxUmUuhtR2LzHhsiEFACH5BAUKAAIALAEAEQAMAAMAAAIFjI+pywUAIfkEBQoAAgAsBQAFAAoACwAAAhOUYJnAagwdjGq2amXGU1PuLEYBACH5BAUKAAIALBAAAgAEAAsAAAIFhI+py1wAIfkEBQoAAgAsFQAFAAoACwAAAhWUL4AIvdnciXFSZS6G1HYvMeGyIQUAIfkEBQoAAgAsFwARAAwAAwAAAgWEj6nLBQAh+QQFCgACACwVABUACgALAAACE5RgmcBqDB2MarZqZcZTU+4sRgEAIfkEBQoAAgAsEAAYAAQACwAAAgWEj6nLXAAh+QQFCgACACwFABUACgALAAACFZQvgAi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwBABEADAADAAACBYSPqcsFADs=) #fff center center no-repeat}.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-btn-is-loading{opacity:.5!important;cursor:not-allowed!important;cursor:wait!important;overflow:hidden;white-space:nowrap;-webkit-user-select:none;-ms-user-select:none;user-select:none}.layui-layer-btn-is-loading .layui-layer-btn-loading-icon{margin-right:8px;font-size:14px}.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 6b0c11f9..2c42b6b8 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,GAAG,GAAG,YAAa,IAC/B,GAAG,GAAG,UAAW,KACjB,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,MAAO,KAAM,WAAY,WAGnG,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,WAAY,iBAAkB,KAAM,oBAAqB,KAAM,gBAAiB,KAAM,YAAa,KACvO,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,eAAe,OAAQ,KAAK,EAAG,UAAW,KAC1C,eAAe,OAAQ,KAAK,EAAG,UAAW,KAC1C,eAAe,OAAQ,KAAK,EAAG,UAAW,KAC1C,eAAe,OAAQ,KAAK,EAAG,UAAW,KAC1C,eAAe,OAAQ,KAAK,EAAG,UAAW,KAC1C,eAAe,OAAQ,KAAK,EAAG,UAAW,KAE1C,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,OAAQ,KAAK,EAAG,QAAS,IAAI,KAAM,YAAa,IAAI,MAAM,KACxG,sCAAwC,QAAS,MAAO,QAAS,KAAM,YAAa,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAE,UAG7H,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,KAC7D,yBAA0B,SAAU,SAAU,QAAS,SACvD,4BAA4B,SAAU,SAAU,QAAS,MAAO,IAAI,EAEpE,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,eAGtE,sCACA,mCAAqC,WAAY,WACjD,oCACA,iCAAoC,SAAU,SAAU,WAAY,KAAM,OAAQ,EAAG,QAAS,EAAG,OAAQ,KAAM,YAAa,OAC5H,wCACA,qCAAuC,SAAU,SAAU,IAAK,EAAG,KAAM,EAAG,OAAQ,QAAS,QAAS,GAAI,MAAO,QAAS,iBAAkB,QAC5I,sCACA,mCAAqC,QAAS,KAC9C,gEACA,0DAA4D,OAAQ,YAEpE,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,QACzD,mCAEA,wCADA,yCACyC,mBAAmB,eAAe,gBAAgB,eAAe,cAAc,eAAe,eAAe,eAAe,WAAW,eAIhL,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,KAAK,SAAU,SAAU,aAAc,KAChE,wBAAyB,QAAS,GAAI,SAAU,SAAU,IAAK,EAAG,MAAO,EAAG,MAAO,IAAK,OAAQ,KAAM,iBAAkB,KAAM,QAAS,IACvI,+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,EAAG,OAAQ,EAAG,OAAQ,EAAG,QAAS,IAAK,WAAY,QAAQ,IAAK,YAAa,KAC3I,0BAA0B,SAAU,SAAU,MAAO,OAAQ,KAAM,IAAK,KAAK,OAAQ,IAAK,IAAK,WAAY,QAAS,UAAW,qBAAuB,UAAW,OAAQ,WAAY,OACrL,sCAAsC,UAAW,KAAM,MAAO,QAC9D,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,cAAe,KACrE,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,EAAK,aAAc,EAAG,kBAAmB,IAAK,WAAY,KAAK,EAAE,IAAI,gBAC7G,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,EAAI,WAAY,IAAI,IAAK,mBAAoB,IAAI,IACxJ,kCAAkC,QAAS,GAAI,oBAAqB,KAAM,oBAAqB,IAAK,aAAc,KAAK,KAAK,MAAO,OAAQ,EAAG,KAAM,EAAG,MAAO,KAAM,IAAK,KAAM,eAAgB,KAAM,SAAU,SAAU,MAAO,KAAM,QAAS,EAC/O,+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,oBAAqB,IAAK,aAAc,MAAO,oBAAqB,KAAM,cAAe,IAAI,IAAI,EAAE,EAAG,WAAY,WAAY,eAAgB,KAAM,QAAS,EAC9R,eAAe,WAAY,WAAY,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,QACxP,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,QAEnG,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,gBAAgB,CAAE,UAAW,UAAW,KAGnP,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,SAAU,SAAU,OACnF,+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,EAAI,MAAO,KAAM,OAAQ,QAAS,UAAW,qBAC7K,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,UAAW,KACvE,gDAAgD,MAAO,MAAO,OAAQ,KAAM,MAAO,QAAS,aAAc,IAG1G,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,kBAAmB,iBAAkB,UAAW,iBAAkB,MAAO,KAAM,WAAY,KAAM,cAAe,IAAK,OAAQ,KAAM,YAAa,KAAM,QAAS,EAAE,KAC3P,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,cCttD3E,2BAA2B,QAAS,KAAM,SAAU,SAAU,MAAO,OAGrE,iBAAiB,UAAW,KAAM,YAAa,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAE,UAGxF,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,4CAA8C,QAAQ,QAAS,MAAO,QACtE,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,EAC/D,mBAAmB,QAAS,MAC5B,qCAAqC,QAAS,WAAY,OAAQ,KAAM,OAAQ,EAAG,YAAa,OAAQ,OAAQ,QAChH,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,QACpI,+CAA+C,aAAc,KAC7D,+CAA+C,aAAc,MAG7D,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,KAE1K,uFADA,sFACuF,kBAAmB,OAI1G,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,QAAS,WAAY,IAAI,IACjH,mDAAmD,iBAAkB,kBAErE,iDADA,sCACiD,QAAS,KAC1D,oCACA,6BACA,iCAAiC,iBAAkB,KAAM,MAAO,KAAM,WAAY,IAAI,IACtF,yBAAyB,OAAQ,EAAG,QAAS,EAAG,OAAQ,IAAI,MAAM,QAAS,kBAAmB,EAC9F,qCAAqC,kBAAmB,IACxD,4BAA4B,WAAY,IAExC,yCADA,yCACyC,MAAO,QAEhD,8DADA,8DAC8D,WAAY,cAC1E,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,4CAA4C,gDAAgD,iBAAkB,eAC9G,8BAA8B,QAAS,IAAI,EAAG,OAAQ,KAGtD,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,gCAAiC,oCAAoC,iBAAkB,kBACvF,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,KACrD,yDAAyD,aAAc,KACvE,yDAAyD,aAAc,MC5LvE,qBAAqB,QAAS,KAAM,SAAU,SAAU,MAAO,OAG3C,aAApB,mBAAiC,SAAS,MAAO,UAAU,SAAU,eAAgB,KACrF,mBAAmB,QAAS,EAAG,WAAY,QAAQ,KAAK,2BAAkC,IAAI,EAAG,KAAK,EAAG,MAAM,KAAM,OAAO,KAAM,QAAQ,4CAC1I,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,eACzG,kBAAkB,WAAW,o8BAAs8B,KAAK,OAAO,OAAO,UAEt/B,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,OAC/B,4BAA4B,QAAQ,aAAgB,OAAO,sBAAwB,OAAO,eAAiB,SAAS,OAAQ,YAAY,OAAQ,oBAAqB,KAAM,gBAAiB,KAAK,YAAa,KAC9M,0DAA0D,aAAc,IAAK,UAAW,KAGxF,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,h5,h6{font-weight: 700;}\r\nh5,h6{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; 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; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;}\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{margin: 32px 0; font-size: 32px;}\r\n.layui-text h2{margin: 24px 0; font-size: 24px;}\r\n.layui-text h3{margin: 16px 0; font-size: 18px;}\r\n.layui-text h4{margin: 11px 0; font-size: 16px;}\r\n.layui-text h5{margin: 11px 0; font-size: 14px;}\r\n.layui-text h6{margin: 11px 0; 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){margin: 15px 0; padding: 5px 15px; border-left: 5px solid #eee;}\r\n.layui-text pre > code:not(.layui-code){display: block; padding: 15px; font-family: \"Courier New\",Consolas,\"Lucida Console\", monospace;}\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.layui-select-panel-wrap {position: absolute; z-index: 99999999;}\r\n.layui-select-panel-wrap dl{position: relative; display: block; top:0;}\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/* 无样式风格-根据模板自定义样式*/\r\n.layui-form-checkbox[lay-skin=\"none\"] *,\r\n.layui-form-radio[lay-skin=\"none\"] *{box-sizing: border-box;}\r\n.layui-form-checkbox[lay-skin=\"none\"],\r\n.layui-form-radio[lay-skin=\"none\"] {position: relative; min-height: 20px; margin: 0; padding: 0; height: auto; line-height: normal;}\r\n.layui-form-checkbox[lay-skin=\"none\"]>div,\r\n.layui-form-radio[lay-skin=\"none\"]>div{position: relative; top: 0; left: 0; cursor: pointer; z-index: 10; color: inherit; background-color: inherit;}\r\n.layui-form-checkbox[lay-skin=\"none\"]>i,\r\n.layui-form-radio[lay-skin=\"none\"]>i{display: none;}\r\n.layui-form-checkbox[lay-skin=\"none\"].layui-checkbox-disabled>div,\r\n.layui-form-radio[lay-skin=\"none\"].layui-radio-disabled>div{cursor: not-allowed;}\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.layui-table-disabled-transition *,\r\n.layui-table-disabled-transition *:before,\r\n.layui-table-disabled-transition *:after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\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;position: relative; border-right: none;}\r\n.layui-table-view:after {content: \"\"; position: absolute; top: 0; right: 0; width: 1px; height: 100%; background-color: #eee; z-index: 101;}\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; right: 0; bottom: 0; margin: 0; z-index: 199; transition: opacity .1s; user-select: none;}\r\n.layui-table-loading-icon{position: absolute; width: 100%\\0; left: 50%; left:auto\\0; top: 50%; margin-top: -15px\\0; transform: translate(-50%, -50%); transform: none\\0; text-align: center;}\r\n.layui-table-loading-icon .layui-icon{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-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: 0px; 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; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab .layui-tab-title:after{content: \"\"; border-bottom-color: #eee; border-bottom-width: 1px; border-style: none none solid; bottom: 0; left: 0; right: auto; top: auto; pointer-events: none; position: absolute; width: 100%; z-index: 8;}\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: 40px; border-width: 1px; border-bottom-width: 1px; border-style: solid; border-bottom-color: #fff; border-radius: 2px 2px 0 0; box-sizing: border-box; pointer-events: none; z-index: 9;}\r\n.layui-tab-bar{box-sizing: border-box; position: absolute; right: 0; top: 0; z-index: 10; width: 30px; height: 40px; line-height: 40px; 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\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\", monospace; 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; overflow: hidden;}\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: 0%; right: 100%; cursor: pointer; transform: translate(-50%,-50%);}\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; font-size: 14px;}\r\n.layui-colorpicker-main-input input.layui-input{width: 168px; height: 30px; color: #5F5F5F; padding-left: 5px;}\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\", monospace;}\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=\"workdays\"]: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{display: table;}\r\n.layui-laydate .laydate-time-list>li{display: table-cell; 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.layui-laydate .laydate-time-list-hide-1 ol li{padding-left: 53px;}\r\n.layui-laydate .laydate-time-list-hide-2 ol li{padding-left: 117px;}\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.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-header,\r\n.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-content{border-left-style: dashed;}\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: #cffae9; transition: all .3s;}\r\n.layui-laydate-linkage .laydate-selected:hover>div{background-color: #cffae9 !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; transition: all .3s;}\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: none !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: #16b777 !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 .layui-this.laydate-disabled,.layui-laydate .layui-this.laydate-disabled>div{background-color: #eee !important}\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-this, .laydate-theme-molv .layui-this>div{background-color: #16baaa !important;}\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.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left: 49px;}\r\n.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left: 107px;}\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{opacity: 0; transition: opacity .35s cubic-bezier(0.34, 0.69, 0.1, 1); 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-load{background:url(\"data:image/gif;base64,R0lGODlhJQAlAJECAL3L2AYrTv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgACACwAAAAAJQAlAAACi5SPqcvtDyGYIFpF690i8xUw3qJBwUlSadmcLqYmGQu6KDIeM13beGzYWWy3DlB4IYaMk+Dso2RWkFCfLPcRvFbZxFLUDTt21BW56TyjRep1e20+i+eYMR145W2eefj+6VFmgTQi+ECVY8iGxcg35phGo/iDFwlTyXWphwlm1imGRdcnuqhHeop6UAAAIfkEBQoAAgAsEAACAAQACwAAAgWMj6nLXAAh+QQFCgACACwVAAUACgALAAACFZQvgRi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwXABEADAADAAACBYyPqcsFACH5BAUKAAIALBUAFQAKAAsAAAITlGKZwWoMHYxqtmplxlNT7ixGAQAh+QQFCgACACwQABgABAALAAACBYyPqctcACH5BAUKAAIALAUAFQAKAAsAAAIVlC+BGL3Z3IlxUmUuhtR2LzHhsiEFACH5BAUKAAIALAEAEQAMAAMAAAIFjI+pywUAIfkEBQoAAgAsBQAFAAoACwAAAhOUYJnAagwdjGq2amXGU1PuLEYBACH5BAUKAAIALBAAAgAEAAsAAAIFhI+py1wAIfkEBQoAAgAsFQAFAAoACwAAAhWUL4AIvdnciXFSZS6G1HYvMeGyIQUAIfkEBQoAAgAsFwARAAwAAwAAAgWEj6nLBQAh+QQFCgACACwVABUACgALAAACE5RgmcBqDB2MarZqZcZTU+4sRgEAIfkEBQoAAgAsEAAYAAQACwAAAgWEj6nLXAAh+QQFCgACACwFABUACgALAAACFZQvgAi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwBABEADAADAAACBYSPqcsFADs=\") #fff center center no-repeat;}\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.layui-layer-btn-is-loading{opacity:0.5 !important; cursor:not-allowed !important; cursor:wait !important; overflow:hidden; white-space:nowrap; -webkit-user-select: none; -ms-user-select: none;user-select: none;}\r\n.layui-layer-btn-is-loading .layui-layer-btn-loading-icon{margin-right: 8px; font-size: 14px;}\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,h5,h6{font-weight: 700;}\r\nh5,h6{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=293');\r\n src: url('../font/iconfont.eot?v=293#iefix') format('embedded-opentype'),\r\n url('../font/iconfont.woff2?v=293') format('woff2'),\r\n url('../font/iconfont.woff?v=293') format('woff'),\r\n url('../font/iconfont.ttf?v=293') format('truetype'),\r\n url('../font/iconfont.svg?v=293#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-sound:before{content: \"\\e69d\";}\r\n.layui-icon-bot:before{content: \"\\e7d6\";}\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; 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; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;}\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{margin: 32px 0; font-size: 32px;}\r\n.layui-text h2{margin: 24px 0; font-size: 24px;}\r\n.layui-text h3{margin: 16px 0; font-size: 18px;}\r\n.layui-text h4{margin: 11px 0; font-size: 16px;}\r\n.layui-text h5{margin: 11px 0; font-size: 14px;}\r\n.layui-text h6{margin: 11px 0; font-size: 13px;}\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 hr{margin: 15px 0;}\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 ul ul > li,\r\n.layui-text ol ul > li{list-style-type: disc;}\r\n.layui-text ul li > p:first-child,\r\n.layui-text ol li > p:first-child{margin-top: 0; 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){margin: 15px 0; padding: 5px 15px; border-left: 5px solid #eee;}\r\n.layui-text pre > code:not(.layui-code){display: block; padding: 15px; font-family: \"Courier New\",Consolas,\"Lucida Console\", monospace;}\r\n\r\n/* 文本区域辅助 */\r\n.layui-text-em,\r\n.layui-word-aux{color: #999 !important; padding-left: 5px !important; padding-right: 5px !important;}\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.layui-select-panel-wrap {position: absolute; z-index: 99999999;}\r\n.layui-select-panel-wrap dl{position: relative; display: block; top:0;}\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/* 无样式风格-根据模板自定义样式*/\r\n.layui-form-checkbox[lay-skin=\"none\"] *,\r\n.layui-form-radio[lay-skin=\"none\"] *{box-sizing: border-box;}\r\n.layui-form-checkbox[lay-skin=\"none\"],\r\n.layui-form-radio[lay-skin=\"none\"] {position: relative; min-height: 20px; margin: 0; padding: 0; height: auto; line-height: normal;}\r\n.layui-form-checkbox[lay-skin=\"none\"]>div,\r\n.layui-form-radio[lay-skin=\"none\"]>div{position: relative; top: 0; left: 0; cursor: pointer; z-index: 10; color: inherit; background-color: inherit;}\r\n.layui-form-checkbox[lay-skin=\"none\"]>i,\r\n.layui-form-radio[lay-skin=\"none\"]>i{display: none;}\r\n.layui-form-checkbox[lay-skin=\"none\"].layui-checkbox-disabled>div,\r\n.layui-form-radio[lay-skin=\"none\"].layui-radio-disabled>div{cursor: not-allowed;}\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.layui-table-disabled-transition *,\r\n.layui-table-disabled-transition *:before,\r\n.layui-table-disabled-transition *:after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\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;position: relative; border-right: none;}\r\n.layui-table-view:after {content: \"\"; position: absolute; top: 0; right: 0; width: 1px; height: 100%; background-color: #eee; z-index: 101;}\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; right: 0; bottom: 0; margin: 0; z-index: 199; transition: opacity .1s; user-select: none;}\r\n.layui-table-loading-icon{position: absolute; width: 100%\\0; left: 50%; left:auto\\0; top: 50%; margin-top: -15px\\0; transform: translate(-50%, -50%); transform: none\\0; text-align: center;}\r\n.layui-table-loading-icon .layui-icon{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-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: 0px; 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; transition: all .2s; -webkit-transition: all .2s;}\r\n.layui-tab .layui-tab-title:after{content: \"\"; border-bottom-color: #eee; border-bottom-width: 1px; border-style: none none solid; bottom: 0; left: 0; right: auto; top: auto; pointer-events: none; position: absolute; width: 100%; z-index: 8;}\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: 40px; border-width: 1px; border-bottom-width: 1px; border-style: solid; border-bottom-color: #fff; border-radius: 2px 2px 0 0; box-sizing: border-box; pointer-events: none; z-index: 9;}\r\n.layui-tab-bar{box-sizing: border-box; position: absolute; right: 0; top: 0; z-index: 10; width: 30px; height: 40px; line-height: 40px; 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\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\", monospace; 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; overflow: hidden;}\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: 0%; right: 100%; cursor: pointer; transform: translate(-50%,-50%);}\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; font-size: 14px;}\r\n.layui-colorpicker-main-input input.layui-input{width: 168px; height: 30px; color: #5F5F5F; padding-left: 5px;}\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\", monospace;}\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=\"workdays\"]: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{display: table;}\r\n.layui-laydate .laydate-time-list>li{display: table-cell; 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.layui-laydate .laydate-time-list-hide-1 ol li{padding-left: 53px;}\r\n.layui-laydate .laydate-time-list-hide-2 ol li{padding-left: 117px;}\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.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-header,\r\n.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .layui-laydate-content{border-left-style: dashed;}\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: #cffae9; transition: all .3s;}\r\n.layui-laydate-linkage .laydate-selected:hover>div{background-color: #cffae9 !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; transition: all .3s;}\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: none !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: #16b777 !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 .layui-this.laydate-disabled,.layui-laydate .layui-this.laydate-disabled>div{background-color: #eee !important}\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-this, .laydate-theme-molv .layui-this>div{background-color: #16baaa !important;}\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.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left: 49px;}\r\n.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left: 107px;}\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{opacity: 0; transition: opacity .35s cubic-bezier(0.34, 0.69, 0.1, 1); 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-load{background:url(\"data:image/gif;base64,R0lGODlhJQAlAJECAL3L2AYrTv///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgACACwAAAAAJQAlAAACi5SPqcvtDyGYIFpF690i8xUw3qJBwUlSadmcLqYmGQu6KDIeM13beGzYWWy3DlB4IYaMk+Dso2RWkFCfLPcRvFbZxFLUDTt21BW56TyjRep1e20+i+eYMR145W2eefj+6VFmgTQi+ECVY8iGxcg35phGo/iDFwlTyXWphwlm1imGRdcnuqhHeop6UAAAIfkEBQoAAgAsEAACAAQACwAAAgWMj6nLXAAh+QQFCgACACwVAAUACgALAAACFZQvgRi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwXABEADAADAAACBYyPqcsFACH5BAUKAAIALBUAFQAKAAsAAAITlGKZwWoMHYxqtmplxlNT7ixGAQAh+QQFCgACACwQABgABAALAAACBYyPqctcACH5BAUKAAIALAUAFQAKAAsAAAIVlC+BGL3Z3IlxUmUuhtR2LzHhsiEFACH5BAUKAAIALAEAEQAMAAMAAAIFjI+pywUAIfkEBQoAAgAsBQAFAAoACwAAAhOUYJnAagwdjGq2amXGU1PuLEYBACH5BAUKAAIALBAAAgAEAAsAAAIFhI+py1wAIfkEBQoAAgAsFQAFAAoACwAAAhWUL4AIvdnciXFSZS6G1HYvMeGyIQUAIfkEBQoAAgAsFwARAAwAAwAAAgWEj6nLBQAh+QQFCgACACwVABUACgALAAACE5RgmcBqDB2MarZqZcZTU+4sRgEAIfkEBQoAAgAsEAAYAAQACwAAAgWEj6nLXAAh+QQFCgACACwFABUACgALAAACFZQvgAi92dyJcVJlLobUdi8x4bIhBQAh+QQFCgACACwBABEADAADAAACBYSPqcsFADs=\") #fff center center no-repeat;}\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.layui-layer-btn-is-loading{opacity:0.5 !important; cursor:not-allowed !important; cursor:wait !important; overflow:hidden; white-space:nowrap; -webkit-user-select: none; -ms-user-select: none;user-select: none;}\r\n.layui-layer-btn-is-loading .layui-layer-btn-loading-icon{margin-right: 8px; font-size: 14px;}\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/font/iconfont.eot b/dist/font/iconfont.eot index 3f5e98bb584b80ae0ce0d39b598fb37423ea8220..3164c9f78997256462cc4295ece63026888aac4a 100644 GIT binary patch delta 4693 zcmaKvdvH|edB&f!XYZ0$D`~a5-=&q1goLEk3UosfLdYN!AxlVHA}$6(3>ev#0Xq$g z3BGWN18j^FVq;>vwrd<>2a-6%b{s-Ht_OG08QYy?It+0;uPAZqnL6!wIuh#h>5V<@ zKi%c`y=Ra1e0$FKzTfk_JoTde$vNBo$%jDuhbP=IXY|qh&rWomjo;rj^Jl<04J1#0 zZRZ2q*4Bm`K*k~9=M&qvZrW1oxOx-7brRdo6TVc}pLqNRDc`E4+<2@fKI^7x*PE z;dT5RKf_D7fQ$Gkeu754h9Bcq{0Qe!jaM)a=kRhV{thqV1^g|Z$8$J~Cj1cd@hoal zhHv9>Jc@57T0KSaGk6B~;9fk2V>p7NIE+W|03OCcd<%yV$2V{Q`|&q;5D#Gz_hS|A z!`&Fd*RUO%@O9jUJFx|0ScA0~#s~(n5(8L<73fAkmZJx^VF8w+0~6TB1?fZ|TG57f zEW{$j;%LDRG@uUUsK8D{P=sQXA{TkshkO)p#S4**JCKPi)F1;%NJA=uNX9y(AOH{6 zbEUobDwbfJ*;$QIG{c7y?7?0*(TfeJ$3}bwn-RuVM6nAY+>RV3zY?ic*p0u))^#2VZ}j03TqFNsjvzmVTJVw$x>LE5bkCJYZQ{B zuv#Ix3SMT6=W!scU`W2gT80!TtZGQ1!up03DXerzvBH{%lqfjMSgLRzK*|*E2uQiY zy#c9E;@l>Xh{6p6sZ_XiAXN%C5yU(N;dX+UCnelikQxQwWHi?ke23Be2*Gj2It3>f z>lK`2TwwCQfL}`RLxY0vGMbbSJi%z5f`B398yqh_W#5DKxl-JM-*Bj_af+QrMATDx|PC!4y~9fQ^h{=AQ%DuwaTmZeZ(zDQ+(Vn;1;-ZVhZ_Fg2#IvB4B~ zi-9c;rdS^aHanO)udwaG)Grk_K$!YSVJn2G>k2BF{~KNfRg7E>0~;m$+sg`DCfs~W zF&*&DUn^{*@F(sBgK4PvdeHJ)PdN%5+Z^xObd-nrGN^$qVl( z@9%uczK{G1{Es9#lj8f6!^w9i{~@I_dMx!~ur+ultu}3E+8gQF=_fPR zXG~@s%lJI>YGyEVF!R5|(eT>v>F_&QwOLoPU&*;QcVX`HdBb_9^WFJF`DY581rr6= z3ilVjU6fsPytudcNQu96xD4g5R5VtckF-YiMQ&BDul!wAU)2Zm(&O_UuXa?QscEmd zF~55LyLI>0eNgYNA6u|(!KsE|!$8B4hW8r%jpv(snkJgwixx*;h+d6OH{aWQE%r(a zTE<%bbz$qm$%XGM@-O=L*1K9iXq#-i-agQNsr@e<$sNyj-01A>JlXmB;)%uo)m7WI zr|YfmZQWOUHZLh$vS-Q7-b+hMm&VWcRrhuEO)qwL<|MC7a{pXhtE`MW1>546@ z!mCcMx;a!l)HihYjw8buJ~{Hp$j7S-SD#ruJ-T`Hjj_}AGxgvqt*j_3jWnl4V{KMNtg+BaB-f|bSJqiA zomMnb8Hu&Tni{hTt&rQ}t}Hd@W6{5!4QGWjL!N-;*qi9A&#O7-_a(c$6_JW^uPfQ- zPfwaxQ(NO-@A0JgT{&4Uf57eWr#tftU1^1hZ`2pY+uYuQr04_jz0u@+uRFE<=o7~} zQV-bfyp-79=9D~_o$TxBU(xHMSaAE#PTAM&acX55o46&EtM#V*tw!F0+ml(sm=bHY4#(_b(C^0TWk9CDXNqA~tK z53Jd|ieSKM3WP#|nNc(HI9OpVojK-Qb*&C08|H8u0;4_(eCGaCo1jFY};K3GfUe&EaF zUNhqt|Cn4#{Ono#y1kh_ceha(E0Gl{vLcC=P(|FNtuoRQX(_Z@8W&rgR@meASXS#p zJ@;%F?P@D2D(fDu>#8YDOYvD&VSU}o!SS8r#XV&a%d!gW((10E+m`KI)OUYx)1C7? z^{aF89QRoz^)=fU#p=r2GOOKIVMh1Jrp7g^Y>(e>SuQ)btlX+B?`mDq*H<^(Gg_YH z4EoT8MBlw}PAgX`z5Eb^tK_*PsVsi_G1QY~+GTg%4bqoe;=mDn+|wYxnS z^rriq-t+%Jxzx+DVniw+Et0h z@IvciVn;YP-Q~6)^f;%VaJt=2dxz8Gcq#E@IO3YIKj+sjhYwpf5(8Pam8U#ZWUBP+ zGfeSDYI^_N&gJ$Dws3ZcUrZ9hm`NJ1_Pp7gPuQe>6jz zKakhhQ+Dg3KaexOwfL|vU>tb%!btY37pyB6+*c1-sn!+iw{YFJ`~JJP*qe7xUO4)G InwyXDKN-G4@&Et; delta 4110 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 CU+mHV diff --git a/dist/font/iconfont.svg b/dist/font/iconfont.svg index 4f1920de..67e85a78 100644 --- a/dist/font/iconfont.svg +++ b/dist/font/iconfont.svg @@ -14,15 +14,19 @@ /> - + - + - + - + - + + + + + diff --git a/dist/font/iconfont.ttf b/dist/font/iconfont.ttf index 6e84a89e031247509801ae5d65cc8d20323cb766..8f49efb999c4f2437134766e3c58f02459518545 100644 GIT binary patch delta 4676 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 delta 4093 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�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%0Ab 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 z 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 delta 34341 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 P$t;rXwVD4100000_UEKA literal 29736 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.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(o,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},o.prototype.disuse=function(t){var n=this;return t=n.isArray(t)?t:[t],n.each(t,function(t,e){m.status[e],delete n[e],delete N[e],delete n.modules[e],delete m.status[e],delete m.modules[e]}),n},o.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t.getPropertyValue?t.getPropertyValue(e):t.getAttribute(e.replace(/-(\w)/g,function(t,e){return e?e.toUpperCase():""}))},o.prototype.link=function(n,o,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof o?o:t)||n).replace(/\.|\//g,""),u="creating",l=0;return i.href=n+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof o&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(n+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):o()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},o.prototype.addcss=function(t,e,n){return layui.link(m.dir+"css/"+t,e,n)},m.callback={},o.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},o.prototype.img=function(t,e,n){var o=new Image;if(o.src=t,o.complete)return e(o);o.onload=function(){o.onload=null,"function"==typeof e&&e(o)},o.onerror=function(t){o.onerror=null,"function"==typeof n&&n(t)}},o.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},o.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),o.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},o.prototype.router=o.prototype.hash=function(t){var n={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),n.search[e[0]]=e[1]):n.path.push(e)})),n},o.prototype.url=function(t){var r,e,n=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("&"),n.each(e,function(t,e){var n=e.indexOf("="),o=n<0?e.substr(0,e.length):0!==n&&e.substr(0,n);o&&(r[o]=0(d.innerHeight||h.documentElement.clientHeight)},p.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},p.style=function(t){t=t||{};var e=p.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=p.style.index||0,p.style.index++,"DF-"+n)),i&&((t=p(i).find("#"+e.id))[0]&&t.remove(),p(i).append(e)),e},p.position=function(t,e,n){var i,r,o,c,a,u,s,f,l;e&&(n=n||{},t!==h&&t!==p("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||d.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),u=e.offsetWidth,s=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,l=i.left,a=i.bottom,"center"===n.align?l-=(u-t.offsetWidth)/2:"right"===n.align&&(l=l-u+t.offsetWidth),(l=l+u+c>o("width")?o("width")-u-c:l)o()&&(i.top>s+c&&i.top<=o()?a=i.top-s-2*c:n.allowBottomOut||(a=o()-s-2*c)<0&&(a=0)),(u=n.position)&&(e.style.position=u),s=n.offset?n.offset[0]:0,f=n.offset?n.offset[1]:0,e.style.left=l+("fixed"===u?0:r(1))+s+"px",e.style.top=a+("fixed"===u?0:r())+f+"px",p.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){p.position(t,e,n)},50))))},p.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=p(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"),{}}},p.isTopElem=function(n){var t=[h,p("body")[0]],i=!1;return p.each(t,function(t,e){if(e===n)return i=!0}),i},p.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()}},p.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});d.addEventListener("test",null,e),d.removeEventListener("test",null,e)}catch(n){}return t}(),p.touchEventsSupported=function(){return"ontouchstart"in d},p.touchSwipe=function(t,e){var n,i,r,o=e,c=p(t)[0];c&&p.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,!!p.passiveSupported&&{passive:!1}),c.addEventListener("touchend",r),c.addEventListener("touchcancel",r),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",o.onTouchStart)&&o.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:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",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:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[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,D){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){T.path&&i.lay&&lay.layui&&lay.layui.link(T.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="lay-"+a+"-id",T={v:"5.6.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="+T.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}},M="layui-this",C="laydate-disabled",h=[100,2e5],v="layui-laydate-static",b="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",E=".laydate-btns-confirm",L="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",w="layui-laydate-shade",k=function(e){var t,a=this,n=(a.index=++T.index,a.config=lay.extend({},a.config,T.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},k.prototype.markerOfChineseFestivals={"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"},k.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},k.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(u).test(t)?"\\d{"+(new RegExp(u).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),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(),"function"==typeof o.formatToDisplay&&(r.isInput(o.elem[0])?r.formatToDisplay(o.elem[0],o.formatToDisplay):(t=r.rangeElem)&&(r.formatToDisplay(t[0][0],o.formatToDisplay),r.formatToDisplay(t[1][0],o.formatToDisplay))),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},k.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?" "+v:"",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=[],u=r.elemHeader=[],c=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"}),p=(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)&&p.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+""))}),p.push('"),p.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("."+I).removeClass(C));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(M),"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")),f=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),f.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)&&f.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&&f.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),f.length&&(f=f.join(""),"styleSheet"in p?(p.setAttribute("type","text/css"),p.styleSheet.cssText=f):p.innerHTML=f,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(p)),r.remove(k.thisElemDate),T.thisId=o.id,s?o.elem.append(y):(D.body.appendChild(y),r.position()),o.shade?'
    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),k.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},k.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(v)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete T.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+w).remove()),t},k.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},k.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))},k.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)},c=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},k.prototype.markRender=function(e,a,t){var n;"object"==typeof t?lay.each(t||{},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])}):"string"==typeof t&&(n=t||a[2]),n&&e.find("div").html(''+n+"")},k.prototype.mark=function(t,a){var n=this,e=n.config,i=function(e){n.markRender(t,a,e)};return e.calendar&&"cn"===e.lang&&i(n.markerOfChineseFestivals),"function"==typeof e.mark?e.mark({year:a[0],month:a[1],date:a[2]},i):"object"==typeof e.mark&&i(e.mark),n},k.prototype.holidaysRender=function(r,o,e){var d=["holidays","workdays"],s=function(e,t,a){e.find("div").html(["",a,""].join(""))};"array"===layui.type(e)?lay.each(e,function(l,e){lay.each(e,function(e,t){var a,n,i;t=t,a=r.attr("lay-ymd"),n=t.split("-"),i=a.split("-"),lay.each(n,function(e,t){n[e]=parseInt(t,10)}),lay.each(i,function(e,t){i[e]=parseInt(t,10)}),n.join("-")===i.join("-")&&s(r,d[l],o[2])})}):"string"==typeof e&&-1!==d.indexOf(e)&&s(r,e,o[2])},k.prototype.holidays=function(t,a){var n=this,e=n.config,i=function(e){n.holidaysRender(t,a,e)};return"function"==typeof e.holidays?e.holidays({year:a[0],month:a[1],date:a[2]},i):"array"===layui.type(e.holidays)&&i(e.holidays),n},k.prototype.cellRender=function(t,e,a){var n=this.config;return"function"==typeof n.cellRender&&n.cellRender(e,function(e){"string"==typeof e?lay(t).html(e):"object"==typeof e&&lay(t).html("").append(lay(e)[0])},{originElem:t,type:a}),this},k.prototype.startOfYear=function(e){e=new Date(e);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e},k.prototype.endOfYear=function(e){var e=new Date(e),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e},k.prototype.startOfMonth=function(e){e=new Date(e);return e.setDate(1),e.setHours(0,0,0,0),e},k.prototype.endOfMonth=function(e){var e=new Date(e),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e},k.prototype.addDays=function(e,t){e=new Date(e);return t&&e.setDate(e.getDate()+t),e},k.prototype.isDisabledYearOrMonth=function(e,t,a){for(var n=this,i=n.config,l="year"===t?n.startOfYear(e):n.startOfMonth(e),t="year"===t?n.endOfYear(e):n.endOfMonth(e),r=Math.floor((t.getTime()-l.getTime())/864e5)+1,o=0,d=0;d(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]&&(s.year=h[1],d.hint(y.invalidDate)),d.firstDate||(d.firstDate=lay.extend({},s)),n.setFullYear(s.year,s.month,1),l=(n.getDay()+(7-a.weekStart))%7,r=T.getEndDate(s.month||12,s.year),o=T.getEndDate(s.month+1,s.year),lay.each(u,function(e,t){var a,n=[s.year,s.month];(t=lay(t)).removeAttr("class"),e"+n[2]+""),d.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e,rangeType:i,disabledType:"date"}),d.cellRender(t,{year:n[0],month:n[1],date:n[2]},"date")}),lay(c[0]).attr("lay-ym",s.year+"-"+(s.month+1)),lay(c[1]).attr("lay-ym",s.year+"-"+(s.month+1)),d.panelYM||(d.panelYM={}),d.panelYM[i]={year:s.year,month:s.month},"cn"===a.lang?(lay(c[0]).attr("lay-type","year").html(s.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(s.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[s.month]),lay(c[1]).attr("lay-type","year").html(s.year)),m&&(a.range?!e&&"init"===t||(d.listYM=[[(d.startDate||a.dateTime).year,(d.startDate||a.dateTime).month+1],[d.endDate.year,d.endDate.month+1]],d.list(a.type,0).list(a.type,1),"time"===a.type?d.setBtnStatus("\u65f6\u95f4",lay.extend({},d.systemDate(),d.startTime),lay.extend({},d.systemDate(),d.endTime)):d.setBtnStatus(!0)):(d.listYM=[[s.year,s.month+1]],d.list(a.type,0))),a.range&&"init"===t&&(d.rangeLinked?(n=d.getAsYM(s.year,s.month,i?"sub":null),d.calendar(lay.extend({},s,{year:n[0],month:n[1]}),1-i)):d.calendar(null,1-i)),a.range||(u=["hours","minutes","seconds"],d.limit({elem:lay(d.footer).find(".laydate-btns-now"),date:d.systemDate(/^(datetime|time)$/.test(a.type)?new Date:null),index:0,time:u,disabledType:"datetime"}),d.limit({elem:lay(d.footer).find(E),index:0,time:u,disabledType:"datetime"})),d.setBtnStatus(),lay(d.shortcut).find("li."+M).removeClass(M),a.range&&!m&&"init"!==t&&d.stampRange(),d},k.prototype.list=function(n,i){var l,r,e,a,o,d,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],u=s.lang(),c=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":b+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),p=s.elemHeader[i],f=lay(p[2]).find("span"),g=s.elemCont[i||0],D=lay(g).find("."+b)[0],T="cn"===y.lang,v=T?"\u5e74":"",x=s.listYM[i]||{},w=["hours","minutes","seconds"],k=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[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==x[0]&&lay(t).addClass(M),t.innerHTML=l+v,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:l,month:1,date:1},"year"),l++}),lay(f[T?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+v+" - "+(l-1)+v)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(M),t.innerHTML=u.month[e]+(T?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:x[0],month:e+1,date:1},"month")}),lay(f[T?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+v)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[k].hours,minutes:e},{hours:s[k].hours,minutes:s[k].minutes,seconds:e}][a],index:i,rangeType:i,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(E),date:s[k],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},y.range?s[k]||(s[k]="startTime"===k?m:s.endDate):s[k]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

    "+u.time[t]+"

      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
    ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),f=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,o=0,lay.each([e,f,t],function(e,t){t||(a[e].className+=" layui-hide",o++)}),h.className+=" laydate-time-list-hide-"+o),D&&g.removeChild(D),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e,t,a=0|lay(this).attr("lay-ym");lay(this).hasClass(C)||(s.rangeLinked?lay.extend(m,{year:"year"===n?a:x[0],month:"year"===n?x[1]-1:a}):m[n]=a,e=-1!==["year","month"].indexOf(y.type),t="year"===n&&-1!==["date","datetime"].indexOf(y.type),e||t?(lay(h).find("."+M).removeClass(M),lay(this).addClass(M),("month"===y.type&&"year"===n||t)&&(s.listYM[i][0]=a,c&&((i?s.endDate:m).year=a),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(C))})):(f=lay.elem("span",{"class":L}),d=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[k][w[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(C))return a.scrollTop=30*(e-2),!0})})},t=lay(p[2]).find("."+L),d(),f.innerHTML=y.range?[u.startTime,u.endTime][i]:u.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),p[2].appendChild(f),(D=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(C)||(y.range?s[k][w[t]]=e:m[w[t]]=e,lay(a).find("."+M).removeClass(M),lay(this).addClass(M),r(),d(),!s.endDate&&"time"!==y.type&&"datetime"!==y.type||s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&D.css({overflowY:"auto",touchAction:"pan-y"})),s},k.prototype.listYM=[],k.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+b).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+L).remove()},k.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(E),o="datetime"===i.type||"time"===i.type?["hours","minutes","seconds"]:undefined;i.range&&(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,disabledType:"datetime",time:o,rangeType:0})||n.limit({date:a,disabledType:"datetime",time:o,rangeType:1})?r.addClass(C):r[i?"addClass":"removeClass"](C),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},k.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=T.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},k.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)},k.prototype.getDateTime=function(e){return this.newDate(e).getTime()},k.prototype.formatToDisplay=function(e,t){var a=this,n=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");Object.defineProperty(e,"value",lay.extend({},n,{get:function(){return this.getAttribute("lay-date")},set:function(e){n.set.call(this,t.call(a,e)),this.setAttribute("lay-date",e)}}))},k.prototype.setValue=function(e){var t,a=this,n=a.config,i=n.elem[0];return"static"!==n.position&&(e=e||"",a.isInput(i)?lay(i).val(e):(t=a.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+a.rangeStr+" ")),t[0].val(e[0]||""),t[1].val(e[1]||"")):(0===lay(i).find("*").length&&(t="function"==typeof n.formatToDisplay?n.formatToDisplay(e):e,lay(i).html(t)),lay(i).attr("lay-date",e))),a},k.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),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))},k.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},k.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(E).addClass(C),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+" "+M),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:M),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.rangeLinked?n.startDate:n.thisDateTime(1-a),disabledType:"date"})&&(((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=n.checkPanelDate(l,t),o=lay.extend({},l),d=r||e&&e.needFullRender?"init":null,e=e?e.index:t,n.calendar(o,e,d)):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"))},k.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(C)||(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(C))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(C))return("time"===n.type?a.startTime&&a.endTime&&a.newDate(a.startTime)>a.newDate(a.endTime):a.startDate&&a.endDate&&a.newDate(lay.extend({},a.startDate,a.startTime||{}))>a.newDate(lay.extend({},a.endDate,a.endTime||{})))?a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout):a.hint(i.invalidDate)}else if(lay(t).hasClass(C))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},k.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(E),date:{year:s[0]},disabledType:"datetime"})),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(){var e,t;i.rangeLinked?(t=i.panelYM[0],t=i.getAsYM(t.year,t.month,"sub"),e=lay.extend({},l.dateTime,i.panelYM[0],{year:t[0],month:t[1]}),i.checkDate("limit").calendar(e,null,"init")):(t=i.getAsYM(r.year,r.month,"sub"),lay.extend(r,{year:t[0],month:t[1]}),i.checkDate("limit").calendar(null,null,"init"),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){var e,t;i.rangeLinked?(t=i.panelYM[0],t=i.getAsYM(t.year,t.month),e=lay.extend({},l.dateTime,i.panelYM[0],{year:t[0],month:t[1]}),i.checkDate("limit").calendar(e,null,"init")):(t=i.getAsYM(r.year,r.month),lay.extend(r,{year:t[0],month:t[1]}),i.checkDate("limit").calendar(null,null,"init"),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")))}}},k.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("."+I).addClass(C))}),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)})},k.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},k.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){T.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(D).on("mousedown",function(e){var t,a;T.thisId&&(t=s.getThis(T.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;T.thisId&&(t=s.getThis(T.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===k.thisElemDate&&(e.preventDefault(),n(t.footer).find(E)[0].click())}),n(i).on("resize",function(){if(T.thisId){var e=s.getThis(T.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},T.render=function(e){e=new k(e);return s.call(e)},T.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},T.getInst=function(e){e=s.getThis(e);if(e)return e.inst},T.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},T.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},T.close=function(e){e=s.getThis(e||T.thisId);if(e)return e.remove()},T.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("")},T.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?(T.ready(),layui.define("lay",function(e){T.path=layui.cache.dir,l.run(lay),e(a,T)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),T}):(T.ready(),l.run(i.lay),i.laydate=T)}(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=[],r&&(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,h('
    ')),this},t.pt.creat=function(){var e,t,i,n,a=this,o=a.config,s=a.index,r="object"==typeof(d=o.content),l=h("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){h(this).removeClass(t)}))};if(o.id&&h("."+u[0]).find("#"+o.id)[0])e=h("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=h("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:f.btn[0],v.closeAll("dialog");break;case 2:var d=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.type?h("body").append(e[1]):d.parents("."+u[0])[0]||(d.data("display",d.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),h("#"+u[0]+s).find("."+u[5]).before(t)):l.append(e[1]),h("#"+u.MOVE)[0]||l.append(f.moveElem=i),a.layero=h("#"+u[0]+s),a.shadeo=h("#"+u.SHADE+s),o.scrollbar||f.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",d[0]),4==o.type?a.tips():(a.offset(),parseInt(f.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||f.events.resize[a.index]||(f.events.resize[a.index]=function(){a.resize()},g.on("resize",f.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},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=h("#"+u[0]+e),n=((""===t.area[0]||"auto"===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]||"auto"===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=g.height()&&(n[1]=g.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=(g.height()-n[1])/2,e.offsetLeft=(g.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=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.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=h(e.follow),a={width:(n=n[0]?n:h("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(){0'):e.removeClass("layui-layer-btn-is-loading").removeAttr("disabled").find(".layui-layer-btn-loading-icon").remove()},t.pt.callback=function(){var n=this,a=n.layero,o=n.config;n.openLayer(),o.success&&(2==o.type?a.find("iframe").on("load",function(){o.success(a,n.index,n)}):o.success(a,n.index,n)),6==v.ie&&n.IE6(a),a.find("."+u[6]).children("a").on("click",function(){var e,t=h(this),i=t.index();t.attr("disabled")||(o.btnAsync?(e=0===i?o.yes||o.btn1:o["btn"+(i+1)],n.loading=function(e){n.btnLoading(t,e)},e?f.promiseLikeResolve(e.call(o,n.index,a,n)).then(function(e){!1!==e&&v.close(n.index)},function(e){e!==m&&p.console&&p.console.error("layer error hint: "+e)}):v.close(n.index)):0===i?o.yes?o.yes(n.index,a,n):o.btn1?o.btn1(n.index,a,n):v.close(n.index):!1!==(o["btn"+(i+1)]&&o["btn"+(i+1)](n.index,a,n))&&v.close(n.index))}),a.find("."+u[7]).on("click",function(){!1!==(o.cancel&&o.cancel(n.index,a,n))&&v.close(n.index)}),o.shadeClose&&n.shadeo.on("click",function(){v.close(n.index)}),a.find(".layui-layer-min").on("click",function(){!1!==(o.min&&o.min(a,n.index,n))&&v.min(n.index,o)}),a.find(".layui-layer-max").on("click",function(){h(this).hasClass("layui-layer-maxmin")?(v.restore(n.index),o.restore&&o.restore(a,n.index,n)):(v.full(n.index,o),setTimeout(function(){o.full&&o.full(a,n.index,n)},100))}),o.end&&(f.end[n.index]=o.end),o.beforeEnd&&(f.beforeEnd[n.index]=h.proxy(o.beforeEnd,o,a,n.index,n))},f.reselect=function(){h.each(h("select"),function(e,t){var i=h(this);i.parents("."+u[0])[0]||1==i.attr("layer")&&h("."+u[0]).length<1&&i.removeAttr("layer").show()})},t.pt.IE6=function(e){h("select").each(function(e,t){var i=h(this);i.parents("."+u[0])[0]||"none"!==i.css("display")&&i.attr({layer:"1"}).hide()})},t.pt.openLayer=function(){v.zIndex=this.config.zIndex,v.setTop=function(e){return v.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",function(){v.zIndex++,e.css("z-index",v.zIndex+1)}),v.zIndex}},f.record=function(e){if(!e[0])return p.console&&console.error("index error");var t=e.attr("type"),i=e.find(".layui-layer-content"),t=t===f.type[2]?i.children("iframe"):i,n=[e[0].style.width||f.getStyle(e[0],"width"),e[0].style.height||f.getStyle(e[0],"height"),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:n}),i.data(l,f.getStyle(t[0],"height"))},f.setScrollbar=function(e){u.html.css("overflow","hidden").attr("layer-full",e)},f.restScrollbar=function(e){u.html.attr("layer-full")==e&&(u.html[0].style[u.html[0].style.removeProperty?"removeProperty":"removeAttribute"]("overflow"),u.html.removeAttr("layer-full"))},f.promiseLikeResolve=function(e){var t=h.Deferred();return e&&"function"==typeof e.then?e.then(t.resolve,t.reject):t.resolve(e),t.promise()},(p.layer=v).getChildFrame=function(e,t){return t=t||h("."+u[4]).attr("times"),h("#"+u[0]+t).find("iframe").contents().find(e)},v.getFrameIndex=function(e){return h("#"+e).parents("."+u[4]).attr("times")},v.iframeAuto=function(e){var t,i,n;e&&(t=v.getChildFrame("html",e).outerHeight(),i=(e=h("#"+u[0]+e)).find(u[1]).outerHeight()||0,n=e.find("."+u[6]).outerHeight()||0,e.css({height:t+i+n}),e.find("iframe").css({height:t}))},v.iframeSrc=function(e,t){h("#"+u[0]+e).find("iframe").attr("src",t)},v.style=function(e,t,i){var e=h("#"+u[0]+e),n=e.find(".layui-layer-content"),a=e.attr("type"),o=e.find(u[1]).outerHeight()||0,s=e.find("."+u[6]).outerHeight()||0;e.attr("minLeft");a!==f.type[3]&&a!==f.type[4]&&(i||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-o-s<=64&&(t.height=64+o+s)),e.css(t),s=e.find("."+u[6]).outerHeight()||0,a===f.type[2]?e.find("iframe").css({height:("number"==typeof t.height?t.height:e.height())-o-s}):n.css({height:("number"==typeof t.height?t.height:e.height())-o-s-parseFloat(n.css("padding-top"))-parseFloat(n.css("padding-bottom"))}))},v.min=function(e,t){var i,n,a,o,s,r,l=h("#"+u[0]+e),c=l.data("maxminStatus");"min"!==c&&("max"===c&&v.restore(e),l.data("maxminStatus","min"),t=t||l.data("config")||{},c=h("#"+u.SHADE+e),i=l.find(".layui-layer-min"),n=l.find(u[1]).outerHeight()||0,o=(a="string"==typeof(o=l.attr("minLeft")))?o:181*f.minStackIndex+"px",s=l.css("position"),r={width:180,height:n,position:"fixed",overflow:"hidden"},f.record(l),0g.width()&&(o=g.width()-180-(f.minStackArr.edgeIndex=f.minStackArr.edgeIndex||0,f.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||f.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),f.restScrollbar(e),c.hide())},v.restore=function(e){var t=h("#"+u[0]+e),i=h("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?f.restScrollbar(e):f.setScrollbar(e),r!==m&&(n.removeData(l),(o===f.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=h("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.restore(t),i.data("maxminStatus","max"),f.record(i),u.html.attr("layer-full")||f.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){h("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(s,r){var e,t,l=(e=h("."+u[0]).children("#"+s).closest("."+u[0]))[0]?(s=e.attr("times"),e):h("#"+u[0]+s),c=l.attr("type"),i=l.data("config")||{},d=i.id&&i.hideOnClose;l[0]&&(t=function(){var o={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[i.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(d)return l.removeClass("layer-anim "+o),l.hide();if(c===f.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===f.type[2])try{var n=h("#"+u[4]+s)[0];n.contentWindow.document.write(""),n.contentWindow.close(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof f.end[s]&&f.end[s](),delete f.end[s],"function"==typeof r&&r(),f.events.resize[s]&&(g.off("resize",f.events.resize[s]),delete f.events.resize[s])},t=h("#"+u.SHADE+s);v.ie&&v.ie<10||!i.isOutAnim?t[d?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[d?"hide":"remove"]()},350)),i.isOutAnim&&l.addClass("layer-anim "+o),6==v.ie&&f.reselect(),f.restScrollbar(s),"string"==typeof l.attr("minLeft")&&(f.minStackIndex--,f.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!i.isOutAnim?e():setTimeout(function(){e()},200)},d||"function"!=typeof f.beforeEnd[s]?(delete f.beforeEnd[s],t()):f.promiseLikeResolve(f.beforeEnd[s]()).then(function(e){!1!==e&&(delete f.beforeEnd[s],t())},function(e){e!==m&&p.console&&p.console.error("layer error hint: "+e)}))},v.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=h("."+u[0]);h.each(o,function(e){var t=h(this),i=n?t.attr("type")===n:1;i&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=h.isArray(i);h("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=h(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(h.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.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)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(h.extend({type:1,skin:"layui-layer-tab"+x("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=h(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))},v.photos=function(n,e,a){var s={};if((n=h.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof h),i=t?n.photos:{},o=i.data||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}else{var c=h(n.photos),d=function(){o=[],c.find(n.img).each(function(e){var t=h(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(d(),0===o.length)return;if(e||c.on("click",n.img,function(){d();var e=h(this).attr("layer-index");v.photos(h.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&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.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)}),h(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=h(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":v.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))},h.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=v.load(1,{shade:!("shade"in n)&&[.9,m,"unset"],scrollbar:!1});var t=o[r].src,f=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.open(h.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[h(p).width()-100,h(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[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,h(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
    \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],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,T=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};T.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1,closeOnClick:!0},T.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},T.prototype.init=function(e,i){var t=this,n=t.config,a=c(n.elem);return 1",(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},t=['
      ',"
      "].join(""),n=d.content||(n=c('
        '),0\u6682\u65e0\u6570\u636e'),n),a=g.findMainElem(d.id);"reloadData"===e&&a.length?(i=l.mainElem=a).html(n):((i=l.mainElem=c(t)).append(n),i.addClass(d.className),i.attr("style",d.style),l.remove(h.thisId),d.target.append(i),d.elem.data(f,!0),e=d.shade?'
        ':"",i.before(e),"mouseenter"===d.trigger&&i.on("mouseenter",function(){clearTimeout(g.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),h.thisId=d.id,i.find(".layui-menu").on(o,function(e){layui.stope(e)}),i.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("."+E);i.removeClass(x),i.css("margin-top",0)}),h.close=function(e){e=g.getThis(e);return e?(e.remove(),g.call(e)):this},h.open=function(e){e=g.getThis(e);return e?(e.render(),g.call(e)):this},h.reload=function(e,i,t){e=g.getThis(e);return e?(e.reload(i,t),g.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 T(e);return g.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var x=layui.$,b=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=x.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",T="layui-slider-bar",w="layui-slider-wrap",M="layui-slider-wrap-btn",L="layui-slider-tips",E="layui-slider-input-txt",Y="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=x.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.precision=function(){var e=this.config,e=x.map([e.min,e.max,e.step],function(e,t){e=String(e).split(".");return e[1]?e[1].length:0});return Math.max.apply(null,e)},t.prototype.render=function(){var n=this,a=n.config,e=x(a.elem);if(1a.max&&(a.value=a.max),l=(a.value-a.min)/(a.max-a.min)*100+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
        '+(a.tips?'
        ":"")+'
        '+(a.range?'
        ':"")+"
        ",l=x(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=x(i),a.range?(n.elemTemp.find("."+w).eq(0).data("value",a.value[0]),n.elemTemp.find("."+w).eq(1).data("value",a.value[1])):n.elemTemp.find("."+w).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 c=100*u/o;c<100&&(r+='
        ')}n.elemTemp.append(r)}function d(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+L).html(e)}function p(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+w);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function v(e){"vertical"===a.type?n.elemTemp.find("."+L).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+L).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=x('
        '),l.css("position","relative"),l.append(e),l.find("."+E).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("."+M).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(d(s=n.elemTemp.find("."+M)),v(p(s))):n.elemTemp.find("."+M).on("mouseover",function(){d(x(this));var e=p(x(this));clearTimeout(t),t=setTimeout(function(){v(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+L).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,c=u.config,d=u.elemTemp,p=function(){return"vertical"===c.type?c.height:d[0].offsetWidth},v=d.find("."+w),o=d.next(".layui-slider-input"),r=o.children("."+E).children("input").val(),m=100/((c.max-c.min)/c.step),f=u.precision(),h=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=c.range?n:l,c.change&&c.change(u.value),"done"===i&&c.done&&c.done(u.value)},y=function(e){var t=e/p()*100/m,i=Math.round(t)*m;return i=e==p()?Math.ceil(t)*m:i},g=x(['
        p()?p():t)/p()*100/m;h(t,o),r.addClass(Y),d.find("."+L).show(),e.preventDefault()},n=function(e){r.removeClass(Y),c.tipsAlways||setTimeout(function(){d.find("."+L).hide()},e)},a=function(){n&&n(b.touchEventsSupported()?1e3:0),g.remove(),c.done&&c.done(u.value),b.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},x("#LAY-slider-moving")[0]||x("body").append(g),g.on("mousemove",i),g.on("mouseup",a).on("mouseleave",a),b.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),d.on("click",function(e){var t=x("."+M),i=x(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===c.type?p()-e.clientY+i.offset().top-x(window).scrollTop():e.clientX-i.offset().left-x(window).scrollLeft())<0?0:t)>p()?p():t)/p()*100/m,t=c.range?"vertical"===c.type?Math.abs(t-parseInt(x(v[0]).css("bottom")))>Math.abs(t-parseInt(x(v[1]).css("bottom")))?1:0:Math.abs(t-v[0].offsetLeft)>Math.abs(t-v[1].offsetLeft)?1:0:0,h(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){x(this).on("click",function(){r=o.children("."+E).children("input").val();var e=((r=1==t?r-c.stepc.max?c.max:Number(r)+c.step)-c.min)/(c.max-c.min)*100/m;h(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)c.max?c.max:e,((this.value=e)-c.min)/(c.max-c.min)*100/m);h(e,0,"done")};o.children("."+E).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=x(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("."+T)[0].style.background,e.events()},s.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],n=e.elemPicker=x(['
        ','
        ','
        ','
        ','
        ','
        ',"
        ",'
        ','
        ',"
        ","
        ",'
        ','
        ','
        ',"
        ","
        ",i.predefine?(o=['
        '],layui.each(i.colors,function(e,i){o.push(['
        ','
        ',"
        "].join(""))}),o.push("
        "),o.join("")):"",'
        ','
        ','',"
        ",'
        ','','',"","
        "].join(""));e.elemColorBox.find("."+T)[0];x(c)[0]&&x(c).data("index")==e.index?e.removePicker(s.thisElemInd):(e.removePicker(s.thisElemInd),x("body").append(n)),r.thisId=i.id,s.thisElemInd=e.index,s.thisColor=t.style.background,e.position(),e.pickerEvents()},s.prototype.removePicker=function(e){var i=this.config,e=x("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete r.thisId,"function"==typeof i.close)&&i.close(this.color),this},s.prototype.position=function(){var e=this,i=e.config;return P.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},s.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+T)),t=i.elemPicker.find("."+X),n=o[0].style.backgroundColor;n?(e=j(L(n)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(n):"rgba"===o?(o=L(n),3===(n.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+Y).css("left",280)):(t.find("input").val(n),n=280*n.slice(n.lastIndexOf(",")+1,n.length-1),i.elemPicker.find("."+Y).css("left",n)),i.elemPicker.find("."+D)[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("#"+H(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+Y).css("left",280))},s.prototype.side=function(){var r=this,l=r.config,c=r.elemColorBox.find("."+T),a=c.attr("lay-type"),s=r.elemPicker.find(".layui-colorpicker-side"),o=r.elemPicker.find("."+I),d=r.elemPicker.find("."+E),t=r.elemPicker.find("."+M),u=r.elemPicker.find("."+D),f=r.elemPicker.find("."+Y),p=o[0].offsetTop/180*360,h=100-t[0].offsetTop/180*100,g=t[0].offsetLeft/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,m=r.elemColorBox.find("."+B),e=r.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,t){r.select(e,i,o);var n=F({h:e,s:i,b:o}),e=H({h:e,s:i,b:o}),i=r.elemPicker.find("."+X).find("input");m.addClass(C).removeClass(w),c[0].style.background="rgb("+n.r+", "+n.g+", "+n.b+")","torgb"===a?i.val("rgb("+n.r+", "+n.g+", "+n.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+n.r+", "+n.g+", "+n.b+", "+t+")"),c[0].style.background="rgba("+n.r+", "+n.g+", "+n.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+n.r+", "+n.g+", "+n.b+", 0), rgb("+n.r+", "+n.g+", "+n.b+"))"):i.val("#"+e),l.change&&l.change(x.trim(r.elemPicker.find("."+X).find("input").val()))},i=x(['
        '].join("")),b=function(e){x("#LAY-colorpicker-moving")[0]||x("body").append(i),i.on("mousemove",e),i.on("mouseup",function(){i.remove()}).on("mouseleave",function(){i.remove()})},n=!0,k=!0;o.on("mousedown",function(e,i){var t=this.offsetTop,n=(e.clientY===undefined?i:e).clientY;k&&layui.stope(e),b(function(e){var i=t+(e.clientY-n),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("mousedown",function(e){var i=e.clientY-x(this).offset().top+W.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(p=i,g,h,v),e.preventDefault(),n&&o.trigger("mousedown",e)}),t.on("mousedown",function(e,i){var r=this.offsetTop,l=this.offsetLeft,c=(e.clientY===undefined?i:e).clientY,a=(e.clientX===undefined?i:e).clientX;k&&layui.stope(e),b(function(e){var i=r+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight,n=d[0].offsetWidth,n=(o=n<(o=o<0?0:o)?n:o)/260*100,o=100-(i=t<(i=i<0?0:i)?t:i)/180*100;y(p,g=n,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-x(this).offset().top+W.scrollTop(),o=e.clientX-x(this).offset().left+W.scrollLeft(),o=((i=i<0?0:i)>this.offsetHeight&&(i=this.offsetHeight),(o=(o=o<0?0:o)>this.offsetWidth?this.offsetWidth:o)/260*100),i=100-i/180*100;y(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),n&&t.trigger("mousedown",e)}),f.on("mousedown",function(e,i){var t=this.offsetLeft,n=(e.clientX===undefined?i:e).clientX;k&&layui.stope(e),b(function(e){var i=t+(e.clientX-n),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("mousedown",function(e){var i=e.clientX-x(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(p,g,h,v=i),e.preventDefault(),n&&f.trigger("mousedown",e)}),e.each(function(){x(this).on("click",function(){x(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=j(L(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,y(i.h,i.s,i.b,o)})}),P.touchEventsSupported()&&layui.each([{elem:s,eventType:"mousedown"},{elem:u,eventType:"mousedown"},{elem:d,eventType:"mousedown"}],function(e,t){P.touchSwipe(t.elem,{onTouchStart:function(){k=n=!1},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)},onTouchEnd:function(){i.remove(),k=n=!0}})})},s.prototype.select=function(e,i,o,t){this.config;var n=H({h:e,s:100,b:100}),e=(H({h:e,s:i,b:o}),e/360*180),o=180-o/100*180,i=i/100*260,r=this.elemPicker.find("."+E)[0];this.elemPicker.find("."+I).css("top",e),r.style.background="#"+n,this.elemPicker.find("."+M).css({top:o/r.offsetHeight*100+"%",left:i/r.offsetWidth*100+"%"})},s.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+T),d=c.elemPicker.find("."+X+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+B).removeClass(C).addClass(w),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,n,r,l=x.trim(d.val());-1>16,g:(65280&n)>>8,b:255&n},t=j(r),s[0].style.background=o="#"+H(t),c.elemColorBox.find("."+B).removeClass(w).addClass(C)),"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=x(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=x(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},s.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),x(c)[0]&&(e.val(),e.side())})},a.on(i,function(e){var i,o,t;r.thisId&&(i=n.getThis(r.thisId))&&(o=i.config,t=i.elemColorBox.find("."+T),x(e.target).hasClass(l)||x(e.target).parents("."+l)[0]||x(e.target).hasClass(c.replace(/\./g,""))||x(e.target).parents(c)[0]||i.elemPicker&&(i.color?(e=j(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+B).removeClass(C).addClass(w),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),W.on("resize",function(){if(r.thisId){var e=n.getThis(r.thisId);if(e)return!(!e.elemPicker||!x(c)[0])&&void e.position()}}),n.that={},n.getThis=function(e){var i=n.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},r.render=function(e){e=new s(e);return n.call(e)},e(t,r)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),r="element",y="layui-this",f="layui-show",c=".layui-tab-title",i=function(){this.config={}},h=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,r,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(c),n=l.children(".layui-tab-bar"),s=e.children(".layui-tab-content"),o=""+(i.title||"unnaming")+"";return n[0]?n.before(o):l.append(o),s.append('
        "+(i.content||"")+"
        "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),w.tabAuto(i.change?"change":null,e),this},i.prototype.tabDelete=function(t,i,a){t=u(".layui-tab[lay-filter="+t+"]").children(c).find('>li[lay-id="'+i+'"]');return w.tabDelete.call(t[0],{liElem:t,force:a}),this},i.prototype.tabChange=function(t,i,a){t=u(".layui-tab[lay-filter="+t+"]").children(c).find('>li[lay-id="'+i+'"]');return w.tabClick.call(t[0],{liElem:t,force:a}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(a.headerElem).index(u(this));w.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"),p="layui-nav-item",b="layui-nav-bar",v="layui-nav-tree",m="layui-nav-child",g="layui-nav-more",C="layui-anim layui-anim-upbit",w={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"),o=a.attr("lay-id"),c="index"in t?t.index:a.parent().children("li").index(a);if(!t.force){var t=a.siblings("."+y);if(!1===layui.event.call(this,r,"tabBeforeChange("+s+")",{elem:e,from:{index:a.parent().children("li").index(t),id:t.attr("lay-id")},to:{index:c,id:o}}))return}l||n||(a.addClass(y).siblings().removeClass(y),(o?t=(t=i.filter('[lay-id="'+o+'"]')).length?t:i.eq(c):i.eq(c)).addClass(f).siblings().removeClass(f)),layui.event.call(this,r,"tab("+s+")",{elem:e,index:c,id:o})},tabDelete:function(t){var i=(t=t||{}).liElem||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"),s=i.attr("lay-id");if(!t.force&&!1===layui.event.call(i[0],r,"tabBeforeDelete("+n+")",{elem:e,index:a,id:s}))return;i.hasClass(y)&&(i.next()[0]&&i.next().is("li")?w.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&w.tabClick.call(i.prev()[0],null,a-1)),i.remove(),(s?t=(t=l.filter('[lay-id="'+s+'"]')).length?t:l.eq(a):l.eq(a)).remove(),setTimeout(function(){w.tabAuto(null,e)},50),layui.event.call(this,r,"tabDelete("+n+")",{elem:e,index:a,id:s})},tabAuto:function(l,t){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;(t||u(".layui-tab")).each(function(){var t=u(this),a=t.children(".layui-tab-title"),i=(t.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),i=u(''),e=(c===window&&d.ie,t.attr("lay-allowclose"));e&&"false"!==e&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||"false"===i.attr("lay-allowclose")||((t=u('')).on("click",function(t){w.tabDelete.call(this,{e:t})}),i.append(t))}),"string"!=typeof t.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(e=a.find("li").eq(0).height())+e/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(i),t.attr("overflow",""),i.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),t.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(h),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+m),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+y).removeClass(y),e.addClass(y)),i.hasClass(v)){var n=p+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+b).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(C),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("."+m).show().stop().slideUp(200,o)))}layui.event.call(this,r,"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("."+f)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(f)),a[n?"addClass":"removeClass"](f),i.html(n?"":""),layui.event.call(this,r,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a="string"==typeof i&&i?'[lay-filter="'+i+'"]':"",e={tab:function(t){t=t||u(".layui-tab"+a);w.tabAuto.call({},null,t)},nav:function(t){var s={},o={},c={},r="layui-nav-title";(t||u(h+a)).each(function(t){var i=u(this),a=u(''),e=i.find("."+p),l=i.find("."+b);l[0]&&l.remove(),i.append(a),(i.hasClass(v)?e.find("dd,>."+r):e).off("mouseenter.lay_nav").on("mouseenter.lay_nav",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+m);i.hasClass(v)?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(C),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(f),l.find("."+g).addClass(g+"d")},300))}.call(this,a,i,t)}).off("mouseleave.lay_nav").on("mouseleave.lay_nav",function(){i.hasClass(v)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+m).removeClass(f),i.find("."+g).removeClass(g+"d")},300))}),i.off("mouseleave.lay_nav").on("mouseleave.lay_nav",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(v)||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("."+m)[0]&&!t.children("."+g)[0]&&t.append(''),t.off("click",w.clickThis).on("click",w.clickThis)})})},breadcrumb:function(t){(t||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(t){var e="layui-progress";(t||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(t){(t||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",w.collapse).on("click",w.collapse)})})}};return t&&"object"==typeof i&&i instanceof u?e[t](i):e[t]?e[t]():layui.each(e,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",w.tabClick),u(window).on("resize",w.tabAuto),t(r,a)});layui.define(["lay","layer"],function(e){"use strict";var F=layui.$,a=layui.lay,t=layui.layer,R=layui.device(),i="upload",s="layui_"+i+"_index",w={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=F.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},o=function(){var t=this,e=t.config.id;return{upload:function(e){t.upload.call(t,e)},reload:function(e){t.reload.call(t,e)},config:(o.that[e]=t).config}},r="layui-upload-file",l="layui-upload-form",E="layui-upload-iframe",L="layui-upload-choose",T="UPLOADING",D=function(e){var t=this;t.index=++w.index,t.config=F.extend({},t.config,w.config,e),t.render()};D.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}},D.prototype.reload=function(e){var t=this;t.config=F.extend({},t.config,e),t.render(!0)},D.prototype.render=function(e){var t=this,i=t.config,n=F(i.elem);return 1"].join("")),n=t.elem.next();(n.hasClass(r)||n.hasClass(l))&&n.remove(),R.ie&&R.ie<10&&t.elem.wrap('
        '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(i),R.ie&&R.ie<10&&e.initIE()},D.prototype.initIE=function(){var i,e=this.config,t=F(''),n=F(['
        ',"
        "].join(""));F("#"+E)[0]||F("body").append(t),e.elem.next().hasClass(l)||(this.elemFile.wrap(n),e.elem.next("."+l).append((i=[],layui.each(e.data,function(e,t){t="function"==typeof t?t():t,i.push('')}),i.join(""))))},D.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},D.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},D.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,t){var i=new FileReader;i.readAsDataURL(t),i.onload=function(){n&&n(e,t,this.result)}})},D.prototype.upload=function(e,t){var i,n,a,o,r,u=this,f=u.config,s=f.text||{},l=u.elemFile[0],c=function(){return e||u.files||u.chooseFiles||l.files},d=function(){var a=0,o=0,r=c(),l=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},i=function(i){var n=new FormData,t=function(e){i.unified?layui.each(r,function(e,t){delete t[T]}):delete e[T]};if(layui.each(f.data,function(e,t){t="function"==typeof t?i.unified?t():t(i.index,i.file):t,n.append(e,t)}),i.unified)layui.each(r,function(e,t){t[T]||(t[T]=!0,n.append(f.field,t))});else{if(i.file[T])return;n.append(f.field,i.file),i.file[T]=!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++,m(i.index,e),l(i.index),t(i.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(s.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
        ")),g(i.index,e.responseText,e),l(i.index),t(i.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=F.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var t;e.lengthComputable&&(t=Math.floor(e.loaded/e.total*100),f.progress(t,(f.item||f.elem)[0],e,i.index))}),e}),F.ajax(e)};f.unified?i({unified:!0,index:0}):layui.each(r,function(e,t){i({index:e,file:t})})},p=function(){var n=F("#"+E);u.elemFile.parent().submit(),clearInterval(D.timer),D.timer=setInterval(function(){var e,t=n.contents().find("body");try{e=t.text()}catch(i){u.msg(s["cross-domain"]),clearInterval(D.timer),g()}e&&(clearInterval(D.timer),t.html(""),m(0,e))},30)},h=function(e){if("json"===f.force&&"object"!=typeof e)try{return{status:"CONVERTED",data:JSON.parse(e)}}catch(t){return u.msg(s["data-format-error"]),{status:"FORMAT_ERROR",data:{}}}return{status:"DO_NOTHING",data:{}}},m=function(e,t){u.elemFile.next("."+L).remove(),l.value="";var i=h(t);switch(i.status){case"CONVERTED":t=i.data;break;case"FORMAT_ERROR":return}"function"==typeof f.done&&f.done(t,e||0,function(e){u.upload(e)})},g=function(e,t,i){f.auto&&(l.value="");var n=h(t);switch(n.status){case"CONVERTED":t=n.data;break;case"FORMAT_ERROR":return}"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)},t,i)},v=f.exts,y=(n=[],layui.each(e||u.chooseFiles,function(e,t){n.push(t.name)}),n),x={preview:function(e){u.preview(e)},upload:function(e,t){var i={};i[e]=t,u.upload(i)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,t){u.files[e]=t}),u.files},resetFile:function(e,t,i){t=new File([t],i);u.files=u.files||{},u.files[e]=t},getChooseFiles:function(){return u.chooseFiles}},b={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",y=0===y.length?l.value.match(/[^\/\\]+\..+/g)||[]:y;if(0!==y.length){switch(f.accept){case"file":layui.each(y,function(e,t){if(v&&!RegExp(".\\.("+v+")$","i").test(escape(t)))return i=!0});break;case"video":layui.each(y,function(e,t){if(!RegExp(".\\.("+(v||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(t)))return i=!0});break;case"audio":layui.each(y,function(e,t){if(!RegExp(".\\.("+(v||"mp3|wav|mid")+")$","i").test(escape(t)))return i=!0});break;default:layui.each(y,function(e,t){if(!RegExp(".\\.("+(v||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(t)))return i=!0})}if(i)return u.msg(s["check-error"]||"\u9009\u62e9\u7684"+b+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==t&&!f.auto||(f.choose&&f.choose(x),"choose"!==t)){if(u.fileLength=(a=0,b=c(),layui.each(b,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof s["limit-number"]?s["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&&(t=1<=(t=f.size/1024)?t.toFixed(2)+"MB":f.size+"KB",l.value="",o=t)}),o)return u.msg("function"==typeof s["limit-size"]?s["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);r=function(){if(R.ie)return(9'+e+"")},l=function(i){var n=!0;return layui.each(a.files,function(e,t){if(!(n=!(t.name===i.name)))return!0}),n},u=function(e){var i=function(e){e.ext=e.name.substr(e.name.lastIndexOf(".")+1).toLowerCase(),e.sizes=w.util.parseSize(e.size)};return e instanceof FileList?layui.each(e,function(e,t){i(t)}):i(e),e},f=function(e){var i;return(e=e||[]).length?a.files?(i=[],layui.each(e,function(e,t){l(t)&&i.push(u(t))}),i):u(e):[]};n.elem.off("upload.start").on("upload.start",function(){var e=F(this);a.config.item=e,a.elemFile[0].click()}),R.ie&&R.ie<10||n.elem.off("upload.over").on("upload.over",function(){F(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){F(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,t){var i=F(this),t=f(t.originalEvent.dataTransfer.files);i.removeAttr("lay-over"),o(t),n.auto?a.upload():r(t)}),a.elemFile.on("change",function(){var e=f(this.files);0!==e.length&&(o(e),n.auto?a.upload():r(e))}),n.bindAction.off("upload.action").on("upload.action",function(){a.upload()}),n.elem.data(s)||(n.elem.on("click",function(){a.isFile()||F(this).trigger("upload.start")}),n.drag&&n.elem.on("dragover",function(e){e.preventDefault(),F(this).trigger("upload.over")}).on("dragleave",function(e){F(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),F(this).trigger("upload.drop",e)}),n.bindAction.on("click",function(){F(this).trigger("upload.action")}),n.elem.data(s,n.id))},w.util={parseSize:function(e,t){var i,n;return t=t||2,null!=e&&e?(i="string"==typeof e?parseFloat(e):e,n=Math.floor(Math.log(i)/Math.log(1024)),(e=(e=i/Math.pow(1024,n))%1==0?e:parseFloat(e.toFixed(t)))+["Bytes","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"][n]):"0"},promiseLikeResolve:function(e){var t=F.Deferred();return e&&"function"==typeof e.then?e.then(t.resolve,t.reject):t.resolve(e),t.promise()}},o.that={},o.getThis=function(e){var t=o.that[e];return t||hint.error(e?i+" instance with ID '"+e+"' not found":"ID argument required"),t},w.render=function(e){e=new D(e);return o.call(e)},e(i,w)});layui.define(["lay","layer","util"],function(e){"use strict";var _=layui.$,f=layui.layer,A=layui.util,l=layui.hint(),d=(layui.device(),lay.ie&&8===parseFloat(lay.ie)),N="form",h=".layui-form",$="layui-this",j="layui-hide",O="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e)||e===undefined||null===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 _.extend(!0,this.config,e),this},t.prototype.verify=function(e){return _.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return _(h+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,N,e,t)},t.prototype.val=function(e,s){return this.getFormElem(e).each(function(e,t){var i,a=_(this);for(i in s)if(lay.hasOwn(s,i)){var n,l=s[i],r=a.find('[name="'+i+'"]');if(!r[0])return;"checkbox"===(n=r[0].type)?r[0].checked=l:"radio"===n?r.each(function(){this.checked=this.value==l+""}):r.val(l)}}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var n={},l={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i,a=_(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],n[i]=0|n[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+n[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(l[i||t.name]="SELECT"===this.tagName&&"string"==typeof this.getAttribute("multiple")?a.val()||[]:this.value))}),l},t.prototype.render=function(e,t){var u=this,i=u.config,a=_(h+(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=!!_(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),0===s?a=parseInt(a):0'),e=layui.isArray(i.value)?i.value:[i.value],e=_((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");_(this).hasClass(O)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,N,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},h={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(_(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 f="\u8bf7\u9009\u62e9",C="layui-form-select",w="layui-select-none",T="layui-select-create-option",p="layui-select-panel-elem-data",e=e||a.find("select"),y=function(n,e,t,i,u,a){var l,d,r,s,o,c,h,f,p,y=_(this),v=e,m=v.find("input"),g=n.find("dl"),b=(g.children("dd"),g.children("dt")),k=this.selectedIndex,x="";t||(d="cs"===y.attr("lay-search")?{caseSensitive:!0}:lay.options(y,{attr:"lay-search"}),r=y.attr("lay-append-to")||"body",s=y.attr("lay-append-position"),o=!(!lay.ie||"10"!==lay.ie&&"11"!==lay.ie||!m.attr("placeholder")),c=function(){a&&(n.appendTo(r).css({width:v.width()+"px"}),(e=function(){lay.position(v[0],n[0],{position:s,allowBottomOut:!0,offset:[0,5]})})(),_(window).on("resize.lay_select_resize",e));var e=n.offset().top+n.outerHeight()+5-S.scrollTop(),t=g.outerHeight(),i=g.children("dd");k=y[0].selectedIndex,v.parent().addClass(C+"ed"),i.removeClass(j),b.removeClass(j),i.removeClass($),0<=k&&i.eq(k).addClass($),e+t>S.height()&&t<=e&&n.addClass(C+"up"),f(),o&&g.off("mousedown.lay_select_ieph").on("mousedown.lay_select_ieph",function(){m[0].__ieph=!0,setTimeout(function(){m[0].__ieph=!1},60)}),l=lay.onClickOutside((a?n:g)[0],function(){h(),x&&m.val(x)},{ignore:v})},h=function(e){v.parent().removeClass(C+"ed "+C+"up"),m.blur(),u&&g.children("."+T).remove(),l&&l(),a&&(n.detach(),_(window).off("resize.lay_select_resize")),e||p(m.val(),function(e){var t=y[0].selectedIndex;e&&(x=_(y[0].options[t]).html(),0===t&&x===m.attr("placeholder")&&(x=""),m.val(x||""))})},f=function(){var e,t,i=g.children("dd."+$);i[0]&&(e=i.position().top,t=g.height(),i=i.height(),t").addClass(T).attr("lay-value",n).html(A.escape(n)),a=(i=g.children().eq(0)).hasClass("layui-select-tips"),i[a?"after":"before"](t)):e?g.find("."+w)[0]||g.append('

        \u65e0\u5339\u914d\u9879

        '):g.find("."+w).remove()},"keyup"),""===n&&(y.val(""),g.find("."+$).removeClass($),(y[0].options[0]||{}).value||g.children("dd:eq(0)").addClass($),g.find("."+w).remove(),u)&&g.children("."+T).remove(),void f()))},50)).on("blur",function(e){var t=y[0].selectedIndex;x=_(y[0].options[t]).text(),0===t&&x===m.attr("placeholder")&&(x=""),setTimeout(function(){p(m.val(),function(e){x||m.val("")},"blur")},200)}),g.on("click","dd",function(){var e,t=_(this),i=t.attr("lay-value"),a=y.attr("lay-filter");return t.hasClass(O)||(t.hasClass("layui-select-tips")?m.val(""):(m.val(t.text()),t.addClass($)),u&&t.hasClass(T)&&(g.append(t.removeClass(T)),e=_("
        "].join(""));i.after(l),function(t,i){var a=_(this),e=a.attr("lay-skin")||"primary",n="switch"===e,e="primary"===e;t.on("click",function(){var e=a.attr("lay-filter");a[0].disabled||(a[0].indeterminate&&(a[0].indeterminate=!1),a[0].checked=!a[0].checked,layui.event.call(a[0],N,i[2]+"("+e+")",{elem:a[0],value:a[0].value,othis:t}))}),u.syncAppearanceOnPropChanged(this,"checked",function(){var e;n&&(e=(t.next("*[lay-checkbox]")[0]?t.next().html():a.attr("title")||"").split("|"),t.children("div").html(!this.checked&&e[1]||e[0])),t.toggleClass(i[1],this.checked)}),e&&u.syncAppearanceOnPropChanged(this,"indeterminate",function(){this.indeterminate?t.children(".layui-icon-ok").removeClass("layui-icon-ok").addClass(c.SUBTRA):t.children("."+c.SUBTRA).removeClass(c.SUBTRA).addClass("layui-icon-ok")})}.call(this,l,r)})},radio:function(e){var o="layui-form-radio",c=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=_(this),a=i.next("."+o),n=this.disabled,l=i.attr("lay-skin");if("string"==typeof i.attr("lay-ignore"))return i.show();d&&p.call(t,"lay-form-sync-checked",t.checked),a[0]&&a.remove();var a=A.escape(t.title||""),r=[],s=(i.next("[lay-radio]")[0]&&(a=(s=i.next()).html()||"",1",'',"
        "+a+"
        ","
        "].join("")));i.after(s),function(i){var a=_(this),n="layui-anim-scaleSpring";i.on("click",function(){var e=a.attr("lay-filter");a[0].disabled||(a[0].checked=!0,layui.event.call(a[0],N,"radio("+e+")",{elem:a[0],value:a[0].value,othis:i}))}),u.syncAppearanceOnPropChanged(this,"checked",function(){var e,t=this;t.checked?(i.addClass(o+"ed"),i.children(".layui-icon").addClass(n+" "+c[0]),e=a.parents(h).find("input[name="+t.name.replace(/(\.|#|\[|\])/g,"\\$1")+"]"),layui.each(e,function(){t!==this&&(this.checked=!1)})):(i.removeClass(o+"ed"),i.children(".layui-icon").removeClass(n+" "+c[0]).addClass(c[1]))})}.call(this,s)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?_(e).is(h)?(a=_(e),t()):e.each(function(e,t){var i=_(t);i.closest(h).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(),u},t.prototype.syncAppearanceOnPropChanged=d?function(e,t,i){var a=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,t);Object.defineProperty(e,t,lay.extend({},a,{get:function(){return"string"==typeof this.getAttribute("lay-form-sync-"+t)},set:function(e){p.call(this,"lay-form-sync-"+t,e),i.call(this)}}))}:function(e,t,i){var a=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,t);Object.defineProperty(e,t,lay.extend({},a,{get:function(){return a.get.call(this)},set:function(e){a.set.call(this,e),i.call(this)}}))},t.prototype.validate=function(e){var u,d=this.config.verify,h="layui-form-danger";return!(e=_(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=_(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c="string"==typeof(c=s.val())?_.trim(c):c;if(s.removeClass(h),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?f.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?f.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&f.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(h),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=_(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(h).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,N,"submit("+e+")",l))});function p(e,t){var i=!!t,t=2===arguments.length&&!t;return null!==this.getAttribute(e)?i||(this.removeAttribute(e),!1):!t&&(this.setAttribute(e,""),!0)}var r=new t,t=_(document),S=_(window);_(function(){r.render()}),t.on("reset",h,function(){var e=_(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",h,i).on("click","*[lay-submit]",i),e(N,r)});layui.define(["lay","laytpl","laypage","form","util"],function(s){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,p=layui.laypage,g=layui.layer,i=layui.form,v=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",initIndexName:"LAY_INDEX_INIT",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,R,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=v.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},R="table",N="lay-"+R+"-id",t=".layui-table",W="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",I=".layui-table-fixed-r",P=".layui-table-pageview",E=".layui-table-sort",A="layui-table-checked",M="layui-table-edit",_="layui-table-hover",u="laytable-cell-group",F="layui-table-col-special",S="layui-table-tool-panel",H="layui-table-expanded",O="layui-table-disabled-transition",j="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(""),B=[,"{{# if(d.data.toolbar){ }}",'
        ','
        ','
        ',"
        ","{{# } }}",'
        ',"{{# if(d.data.loading){ }}",'
        ','
        ','{{# if(typeof d.data.loading === "string"){ }}',"{{- d.data.loading}}","{{# } else{ }}",'',"{{# } }}","
        ","
        ","{{# } }}","{{# 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),z=f(document),n=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(n.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:[]},n.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(((l={"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))})[N]=a.id,l)).html(m(B,{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(I),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.setColsWidth({isInit:!0}),t.pullData(t.page),t.events()},n.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])},n.prototype.setInit=function(e){var n,a,d=this,r=d.config;if(r.clientWidth=r.width||(n=function(e){var t,a;e=e||r.elem.parent(),t=d.getContentWidth(e);try{a="none"===e.css("display")}catch(l){}var i=e.parent();return e[0]&&i&&i[0]&&(!t||a)?n(i):t})(),"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})},n.prototype.renderToolbar=function(){var l,o=this,e=o.config,d=e.elem.attr("lay-filter"),t=['
        ','
        ','
        '].join(""),a=o.layTool.find(".layui-table-tool-temp"),n=("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",onClick:function(e){var a,n=e.config;(0,e.openPanel)({list:(a=[],o.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(){i.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=o.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,o.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](W),l!=i.hide&&o.setParentCol(!t,e),o.resize(),layui.event.call(this,R,"colToggled("+d+")",{col:i,config:n}))})}})}},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export",onClick:function(e){var t=e.data,a=e.config,i=e.openPanel,e=e.elem;if(!t.length)return g.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",e,{tips:3});x.ie?g.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",e,{tips:3}):i({list:['
      • \u5bfc\u51fa CSV \u6587\u4ef6
      • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(o,a.id,null,e)})}})}},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print",onClick:function(e){var t=e.data,e=(e.config,e.elem);if(!t.length)return g.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",e,{tips:3});var t=window.open("about:blank","_blank"),e=[""].join(""),a=f(o.layHeader.html());a.append(o.layMain.find("table").html()),a.append(o.layTotal.find("table").html()),a.find("th.layui-table-patch").remove(),a.find("thead>tr>th."+F).filter(function(e,t){return!f(t).children("."+u).length}).remove(),a.find("tbody>tr>td."+F).remove(),t.document.write(e+a.prop("outerHTML")),t.document.close(),layui.device("edg").edg?(t.onafterprint=t.close,t.print()):(t.print(),t.close())}}});"object"==typeof e.defaultToolbar&&(l=[],e.defaultToolbar=f.map(e.defaultToolbar,function(e,t){var a="string"==typeof e,i=a?n[e]:e;return i&&(!(i=i.name&&n[i.name]?f.extend({},n[i.name],i):i).name&&a&&(i.name=e),l.push('
        ')),i}),o.layTool.find(".layui-table-tool-self").html(l.join("")))},n.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))},n.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"](W),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},n.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)})})},n.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+u)).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(W)||0o.layMain.prop("clientHeight")&&(e.style.width=parseFloat(e.style.width)-i+"px")}),!p&&h?y.width(o.getContentWidth(l)):y.width("auto"),o.setGroupWidth()},n.prototype.resize=function(){var e=this;e.layMain&&("isConnected"in e.layMain[0]?e.layMain[0].isConnected:f.contains(document.body,e.layMain[0]))&&(e.fullSize(),e.setColsWidth(),e.scrollPatch())},n.prototype.reload=function(e,t,a){var i=this;e=e||{},delete i.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete i.config[e]}),i.config=f.extend(t,{},i.config,e),"reloadData"!==a&&(layui.each(i.config.cols,function(e,t){layui.each(t,function(e,t){delete t.colspan2})}),delete i.config.HAS_SET_COLS_PATCH),i.render(a)},n.prototype.errorView=function(e){var t=this,a=t.layMain.find("."+h),e=f('
        '+(e||"Error")+"
        ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(W),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},n.prototype.page=1,n.prototype.pullData=function(i,l){var e,t,n=this,o=n.config,a=(o.HAS_SET_COLS_PATCH||n.setColsPatch(),o.HAS_SET_COLS_PATCH=!0,o.request),d=o.response,r=function(){"object"==typeof o.initSort&&n.sort({field:o.initSort.field,type:o.initSort.type,reloadType:l.type})},c=function(e,t){n.setColsWidth(),n.loading(!1),"function"==typeof o.done&&o.done(e,i,e[d.countName],t)};l=l||{},"function"==typeof o.before&&o.before(o),n.startTime=(new Date).getTime(),l.renderData?((e={})[d.dataName]=k.cache[n.key],e[d.countName]=o.url?"object"===layui.type(o.page)?o.page.count:e[d.dataName].length:o.data.length,"object"==typeof o.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),n.renderData({res:e,curr:i,count:e[d.countName],type:l.type,sort:!0}),c(e,"renderData")):o.url?(t={},o.page&&(t[a.pageName]=i,t[a.limitName]=o.limit),a=f.extend(t,o.where),o.contentType&&0==o.contentType.indexOf("application/json")&&(a=JSON.stringify(a)),n.loading(!0),f.ajax({type:o.method||"get",url:o.url,contentType:o.contentType,data:a,dataType:o.dataType||"json",jsonpCallback:o.jsonpCallback,headers:o.headers||{},complete:"function"==typeof o.complete?o.complete:undefined,success:function(e){var t,a;(e="function"==typeof o.parseData?o.parseData(e)||e:e)[d.statusName]!=d.statusCode?n.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):(t=e[d.countName],(a=Math.ceil(t/o.limit)||1)','
        "+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)},n.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,g.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"](W),a.layPage.find(P)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(W),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(W),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,p.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},n.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 e=t.field||e,a=o&&o[t.field],i="totalRowDecimals"in t?t.totalRowDecimals:2,i=s[e]?parseFloat(s[e]||0).toFixed(i):"",i=(n=t.totalRowText||"",(l={LAY_COL:t})[e]=i,l=t.totalRow&&T.call(r,{item3:t,content:i,tplData:l})||n,a||l),l="string"==typeof(n=t.totalRow||c.totalRow)?m(n).render(f.extend({TOTAL_NUMS:a||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):i,n=(t.field&&r.dataTotal.push({field:t.field,total:f("
        "+l+"
        ").text()}),['','
        "+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:"")+""))},n.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},n.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");i.render(e,t)},n.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){i.render(a.find(t))})},n.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}))},n.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)},n.prototype.setRowChecked=function(i){var a,e,l,t,n,o,d,r=this,c=r.config,s="all"===i.index,u="array"===layui.type(i.index),y=s||u;y&&(r.layBox.addClass(O),"radio"===i.type)||(u&&(a={},layui.each(i.index,function(e,t){a[t]=!0}),i.index=a),e=r.layBody.children(".layui-table").children("tbody"),d=y?"tr":'tr[data-index="'+i.index+'"]',d=e.children(d),e=s?d:d.filter(u?function(){var e=f(this).data("index");return i.index[e]}:'[data-index="'+i.index+'"]'),i=f.extend({type:"checkbox"},i),l=k.cache[r.key],t="checked"in i,n=function(e){return"radio"===i.type||(t?i.checked:!e)},e.each(function(){var e=f(this),t=e.attr("data-index"),a=l[t];t&&"array"!==layui.type(a)&&!a[c.disabledName]&&(a=a[c.checkName]=n(e.hasClass(A)),e.toggleClass(A,!!a),"radio"===i.type)&&(o=t,e.siblings().removeClass(A))}),o&&layui.each(l,function(e,t){Number(o)!==Number(e)&&delete t[c.checkName]}),d=(u=(s=e.children("td").children(".layui-table-cell").children('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')).last()).closest(I),("radio"===i.type&&d.hasClass(W)?s.first():s).prop("checked",n(u.prop("checked"))),r.syncCheckAll(),y&&setTimeout(function(){r.layBox.removeClass(O)},100))},n.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.initIndexName,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,R,"sort("+n+")",f.extend({config:i},i.initSort)))},n.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(W,!e)},n.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})},n.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("."+S)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};layui.stope(e),z.trigger("table.tool.panel.remove"),g.close(c.tipsIndex),layui.each(s.defaultToolbar,function(e,t){if(t.layEvent===a)return"function"==typeof t.onClick&&t.onClick({data:l,config:s,openPanel:n,elem:i}),!0}),layui.event.call(this,R,"toolbar("+o+")",f.extend({event:a,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,R,"colTool("+o+")",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,R,"pagebar("+o+")",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||(r.allowResize=t.width()-e<=10,d.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,d.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(j,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(j)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr(N),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),g.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr(N),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},d.css("cursor",""),a.scrollPatch(),t.removeData(j),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],R,"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)}),t=(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],R,"checkbox("+o+")",y.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],R,"radio("+o+")",y.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(_)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(_)}).on("click","tr",function(e){t.call(this,"row",e)}).on("dblclick","tr",function(e){t.call(this,"rowDouble",e)}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),t.call(this,"rowContextmenu",e)}),function(e,t){var a=f(this);if(!a.data("off")){if("rowContextmenu"!==e){var i=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");if(f(t.target).is(i)||f(t.target).closest(i)[0])return}layui.event.call(this,R,e+"("+o+")",y.call(a.children("td")[0],{e:t}))}}),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(u),(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("."+M)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+M,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=y.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],R,"edit("+o+")",l)}).on("blur","."+M,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),"layui-table-grid-down"),a=function(e){var t=f(this),a=t.children(u);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||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(u),i="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=g.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(){g.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&&(u[t.field]=!0)}),c.push(n.join(","))}),o&&layui.each(o.dataTotal,function(e,t){u[t.field]||s.push('"'+(t.total||"")+'"')}),r.join(",")+"\r\n"+c.join("\r\n")+"\r\n"+s.join(","))),d.download=(a.title||l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(d),d.click(),document.body.removeChild(d)},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"](W),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"](W),n.setParentCol(i,t))})})),f("."+S).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 n(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.initIndexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),s(R,k)});layui.define(["table"],function(e){"use strict";var A=layui.$,h=layui.form,P=layui.table,y=layui.hint(),B={config:{},on:P.on,eachCols:P.eachCols,index:P.index,set:function(e){var t=this;return t.config=A.extend({},t.config,e),t},resize:P.resize,getOptions:P.getOptions,hideCol:P.hideCol,renderData:P.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){B.reloadData(n,e,t)}}},j=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="lay-table-id",L="layui-hide",s=".layui-table-body",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",m="layui-table-tree",z="LAY_DATA_INDEX",b="LAY_DATA_INDEX_HISTORY",p="LAY_PARENT_INDEX",g="LAY_CHECKBOX_HALF",H="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,f=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++B.index,t.config=A.extend(!0,{},t.config,B.config,e),t.init(),t.render()},x=function(n,i,e){var l=P.cache[n];layui.each(e||l,function(e,t){var a=t[z]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&x(n,i,t[i])})},d=function(d,a,e){var r=j(d),o=("reloadData"!==e&&(r.status={expand:{}}),A.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,P.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):a.data!==undefined&&(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),x(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=B.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&B.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(f,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),P.render(A.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.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}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:'':""},a.prototype.getOptions=function(){return this.tableIns?P.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||P.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=A.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.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=A.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[z],getParentNode:function(){return n.getNodeByIndex(e[p])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.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[z],getParentNode:function(){return n.getNodeByIndex(i[p])},update:function(e){return B.updateNode(a,t,e)},remove:function(){return B.removeNode(a,t)},expand:function(e){return B.expandNode(a,A.extend({},e,{index:t}))},setChecked:function(e){return B.setRowChecked(a,A.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=B.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[z],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=P.cache[n],l=n[e];if("delete"!==a&&l)return A.extend(l,a),t?A.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
        '),N=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[z]),J(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=A.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)),O=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,_=m.headers||o.headers,k=m.parseData||o.parseData,w=m.response||o.response,A.ajax({type:O||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:_||{},success:function(e){(e="function"==typeof k?k.call(o,e)||e:e)[w.statusName]!=w.statusCode?(y[V]="error",y[H]=!1,g.html('')):N(e[w.dataName])},error:function(e,t){y[V]="error",y[H]=!1,"function"==typeof o.error&&o.error(e,t)}})),h;y[X]=!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,P.config.indexName,null,!0)),c.initData(y[s.children],y[z]),O=P.getTrHtml(r,v,null,null,e),S={trs:A(O.trs.join("")),trs_fixed:A(O.trs_fixed.join("")),trs_fixed_r:A(O.trs_fixed_r.join(""))},E=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed_r.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z])}),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,E),n)&&!p&&layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').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[z]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))).addClass(L);U("resize-"+r,function(){B.resize(r)},0)(),l&&"loading"!==y[V]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},v=(B.expandNode=function(e,t){var a,n,i,e=j(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},B.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=j(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=B.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(c=!1)}),!c)return void layui.each(B.getData(a),function(e,t){B.expandNode(a,{index:t[z],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])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(L),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[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return B.sort(a);var s,n=P.getTrHtml(a,e),f={trs:A(n.trs.join("")),trs_fixed:A(n.trs_fixed.join("")),trs_fixed_r:A(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[z].split("-").length-1;s={"data-index":t[z],"lay-data-index":t[z],"data-level":a},f.trs.eq(e).attr(s).data("index",t[z]),f.trs_fixed.eq(e).attr(s).data("index",t[z]),f.trs_fixed_r.eq(e).attr(s).data("index",t[z])}),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(L),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);B.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(m)||d.addClass(m),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=n.data.length,y=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(P.cache[i],function(e,t){f&&(t[z]=String(e));t=t[z];d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t)})),null),p=c.name,x=o.indent||14;if(layui.each(e.find('td[data-field="'+p+'"]'),function(e,t){var a,n,i=(t=A(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((y=y||{})[n]=!0),a[g]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+p+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
        ',a[H]?o.flexIconOpen:o.flexIconClose,"
        ",o.showIcon?'
        '+(l.normalizedIcon(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),J({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return B.expandAll(i,!0);(!1!==a&&y?(layui.each(y,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}),U("renderTreeTable2-"+i,function(){h.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0)):U("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),h.render(A(".layui-table-tree["+F+'="'+i+'"]'))},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(P.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[z]).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))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=P["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,A.extend(!0,{},t.config)),t.config=t.tableIns.config},a.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=A.extend(t,{},n.config,e),n.render(a)},B.reloadData=function(){var e=A.extend(!0,[],arguments);return e[3]="reloadData",B.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):A.extend(t,a),l.push(A.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||P.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return P.cache[e.id]},B.updateStatus=function(e,t,a){var e=j(e),n=e.getOptions();return a=a||(n.url?P.cache[n.id]:n.data),e.updateStatus(a,t)},B.sort=function(e){var t,a,i,l,n,d=j(e);d&&(n=(t=d.getOptions()).tree,a=B.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,P.config.indexName,null),P.cache[e]=a,d.initData(a),B.renderData(e))},function(n){var t=n.config.id,i=j(t),a=n.data=B.getNodeDataByIndex(t,n.index),l=a[z],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(A.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(){B.removeNode(t,a)},n.setRowChecked=function(e){B.setRowChecked(t,{index:a,checked:e})}}),u=(B.updateNode=function(e,a,t){var n,i,l,d,r,o=j(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=P.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(A(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},B.removeNode=function(e,t,a){var n=j(e);if(n){var i,l=n.getOptions(),d=l.tree,r=d.customName.isParent,o=d.customName.children,c=l.elem.next(),u=[],s=P.cache[e],t=n.getNodeDataByIndex("string"===layui.type(t)?t:t[z],!1,"delete"),f=n.getNodeDataByIndex(t[p]),d=(n.updateCheckStatus(f),n.treeToFlat([t],t[d.customName.pid],t[p])),t=(layui.each(d,function(e,t){t=t[z];u.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete s[t]}),c.find(u.join(",")).remove(),n.initData());for(i in s)-1!==i.indexOf("-")&&i!==s[i][z]&&delete s[i];layui.each(n.treeToFlat(t),function(e,t){t[b]&&t[b]!==t[z]&&c.find('tr[lay-data-index="'+t[b]+'"]').attr({"data-index":t[z],"lay-data-index":t[z]}).data("index",t[z])}),layui.each(s,function(e,t){c.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),l.hasNumberCol&&v(n),f&&(d=c.find('tr[lay-data-index="'+f[z]+'"]'),a||(f[r]=!(!f[o]||!f[o].length)),n.updateNodeIcon({scopeEl:d,isExpand:f[H],isParent:f[r]})),B.resize(e)}},B.addNodes=function(e,t){var a=j(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=P.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=A.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[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=P.cache[e].splice(-1===o?P.cache[e].length:o);if(P.cache[e]=P.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(P.cache[e]))):n.data=P.cache[e]),a.initData(),l.find(".layui-none").length)return P.renderData(e),c;var x,f=P.getTrHtml(e,c),h={trs:A(f.trs.join("")),trs_fixed:A(f.trs_fixed.join("")),trs_fixed_r:A(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[z],"lay-data-index":t[z],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[z]),h.trs_fixed.eq(e).attr(x).data("index",t[z]),h.trs_fixed_r.eq(e).attr(x).data("index",t[z])}),parseInt(c[0][z])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(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)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(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][b],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(P.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[z]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[H],isParent:u[s]})),B.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][z]+'"]').get(0).scrollIntoViewIfNeeded(),c}},B.checkStatus=function(e,n){var i,t,a,l=j(e);if(l)return l=l.getOptions().tree,i=P.config.checkName,t=B.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[g]}),a=!0,layui.each("all"===l.data.cascade?P.cache[e]:B.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},B.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(m)&&B.sort(e)}),B.on("row",function(e){e.config.elem.next().hasClass(m)&&o(e)}),B.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),(t.tree||{}).view.dblClickExpand)&&J({trElem:e.tr.first()},null,null,null,!0)}),B.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),B.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),B.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),B.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(m)&&(a=j(t),o(e),u.call(a,e.tr,e.checked))}),a.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=A(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.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=P.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[z]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),h.render(a.prop({checked:n,indeterminate:t[g]}))})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?P.cache[n]:B.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[g])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,h.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=P.config.checkName,t=t.customName.children,d=[];return!(a[g]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[g]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[g])return a[g]=!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[g]=!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=f.escape(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 o=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=o.extend({},n.config,e),n},on:function(e,n){return layui.onevent.call(this,r,e,n)}}),r="carousel",s="layui-this",u="layui-carousel-left",c="layui-carousel-right",m="layui-carousel-prev",h="layui-carousel-next",a="layui-carousel-arrow",d="layui-carousel-ind",n=function(e){var n=this;n.config=o.extend({},n.config,t.config,e),n.render()};n.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},n.prototype.render=function(){var e=this,n=e.config,i=o(n.elem);if(1*[carousel-item]>*"),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(s),e.indicator(),e.arrow(),e.autoplay(),1=this.elemItem.length?0:e},n.prototype.addIndex=function(e){var n=this.config;n.index=n.index+(e=e||1),n.index>=this.elemItem.length&&(n.index=0)},n.prototype.subIndex=function(e){var n=this.config;n.index=n.index-(e=e||1),n.index<0&&(n.index=this.elemItem.length-1)},n.prototype.autoplay=function(){var e=this,n=e.config,i=e.elemItem.length;n.autoplay&&(clearInterval(e.timer),1',''].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+a)[0]&&e.elem.find("."+a).remove(),1i.index?n.slide("add",e-i.index):e
            ',(n=[],layui.each(e.elemItem,function(e){n.push("")}),n.join("")),"
          "].join(""));i.elem.attr("lay-indicator",i.indicator),i.elem.find("."+d)[0]&&i.elem.find("."+d).remove(),1t[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(o){"use strict";var w=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,t,a,f,s,u,p,d,y,g=this,h=0,v=w((o=o||{}).elem);if(v[0])return c=w(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,t=o.moreText||"\u52a0\u8f7d\u66f4\u591a",a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),g._cleanup(v,c),s=o.scrollElem&&o.scrollElem!==document,p=w('"),v.find(".layui-flow-more")[0]||v[f?"prepend":"append"](p),d=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=w(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1'),"function"==typeof o.done&&o.done(++h,d)})(),p.find("a").on("click.flow",function(){w(this);n||i||y()}),o.isLazyimg&&(r=g.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=w(this),t=e.scrollTop();l&&clearTimeout(l),!n&&v.width()&&(l=setTimeout(function(){var o=(s?e:w(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&y()},100))}),g},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=w((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:w(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=w(s),o)p(o,e);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)),a="function"==typeof l.onCopy;lay.clipboard.writeText({text:t,done:function(){if(a&&!1===l.onCopy(t,!0))return;N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){if(a&&!1===l.onCopy(t,!1))return;N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}})}}},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.23 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},o=function(){this.v="2.9.23"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript&&"SCRIPT"===h.currentScript.tagName.toUpperCase()?h.currentScript.src:function(){for(var t,e=h.getElementsByTagName("script"),n=e.length-1,o=n;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(o,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},o.prototype.disuse=function(t){var n=this;return t=n.isArray(t)?t:[t],n.each(t,function(t,e){m.status[e],delete n[e],delete N[e],delete n.modules[e],delete m.status[e],delete m.modules[e]}),n},o.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t.getPropertyValue?t.getPropertyValue(e):t.getAttribute(e.replace(/-(\w)/g,function(t,e){return e?e.toUpperCase():""}))},o.prototype.link=function(n,o,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof o?o:t)||n).replace(/\.|\//g,""),u="creating",l=0;return i.href=n+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof o&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(n+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):o()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},o.prototype.addcss=function(t,e,n){return layui.link(m.dir+"css/"+t,e,n)},m.callback={},o.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},o.prototype.img=function(t,e,n){var o=new Image;if(o.src=t,o.complete)return e(o);o.onload=function(){o.onload=null,"function"==typeof e&&e(o)},o.onerror=function(t){o.onerror=null,"function"==typeof n&&n(t)}},o.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},o.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),o.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},o.prototype.router=o.prototype.hash=function(t){var n={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),n.search[e[0]]=e[1]):n.path.push(e)})),n},o.prototype.url=function(t){var r,e,n=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("&"),n.each(e,function(t,e){var n=e.indexOf("="),o=n<0?e.substr(0,e.length):0!==n&&e.substr(0,n);o&&(r[o]=0(d.innerHeight||h.documentElement.clientHeight)},p.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},p.style=function(t){t=t||{};var e=p.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=p.style.index||0,p.style.index++,"DF-"+n)),i&&((t=p(i).find("#"+e.id))[0]&&t.remove(),p(i).append(e)),e},p.position=function(t,e,n){var i,r,o,c,a,u,s,f,l;e&&(n=n||{},t!==h&&t!==p("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||d.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),u=e.offsetWidth,s=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,l=i.left,a=i.bottom,"center"===n.align?l-=(u-t.offsetWidth)/2:"right"===n.align&&(l=l-u+t.offsetWidth),(l=l+u+c>o("width")?o("width")-u-c:l)o()&&(i.top>s+c&&i.top<=o()?a=i.top-s-2*c:n.allowBottomOut||(a=o()-s-2*c)<0&&(a=0)),(u=n.position)&&(e.style.position=u),s=n.offset?n.offset[0]:0,f=n.offset?n.offset[1]:0,e.style.left=l+("fixed"===u?0:r(1))+s+"px",e.style.top=a+("fixed"===u?0:r())+f+"px",p.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){p.position(t,e,n)},50))))},p.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=p(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"),{}}},p.isTopElem=function(n){var t=[h,p("body")[0]],i=!1;return p.each(t,function(t,e){if(e===n)return i=!0}),i},p.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()}},p.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});d.addEventListener("test",null,e),d.removeEventListener("test",null,e)}catch(n){}return t}(),p.touchEventsSupported=function(){return"ontouchstart"in d},p.touchSwipe=function(t,e){var n,i,r,o=e,c=p(t)[0];c&&p.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,!!p.passiveSupported&&{passive:!1}),c.addEventListener("touchend",r),c.addEventListener("touchcancel",r),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",o.onTouchStart)&&o.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:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",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:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[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,D){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){T.path&&i.lay&&lay.layui&&lay.layui.link(T.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="lay-"+a+"-id",T={v:"5.6.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="+T.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}},M="layui-this",C="laydate-disabled",h=[100,2e5],v="layui-laydate-static",b="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",E=".laydate-btns-confirm",L="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",w="layui-laydate-shade",k=function(e){var t,a=this,n=(a.index=++T.index,a.config=lay.extend({},a.config,T.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},k.prototype.markerOfChineseFestivals={"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"},k.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},k.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(u).test(t)?"\\d{"+(new RegExp(u).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),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(),"function"==typeof o.formatToDisplay&&(r.isInput(o.elem[0])?r.formatToDisplay(o.elem[0],o.formatToDisplay):(t=r.rangeElem)&&(r.formatToDisplay(t[0][0],o.formatToDisplay),r.formatToDisplay(t[1][0],o.formatToDisplay))),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},k.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?" "+v:"",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=[],u=r.elemHeader=[],c=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"}),p=(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)&&p.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+""))}),p.push('"),p.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("."+I).removeClass(C));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(M),"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")),f=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),f.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)&&f.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&&f.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),f.length&&(f=f.join(""),"styleSheet"in p?(p.setAttribute("type","text/css"),p.styleSheet.cssText=f):p.innerHTML=f,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(p)),r.remove(k.thisElemDate),T.thisId=o.id,s?o.elem.append(y):(D.body.appendChild(y),r.position()),o.shade?'
          ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),k.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},k.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(v)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete T.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+w).remove()),t},k.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},k.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))},k.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)},c=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},k.prototype.markRender=function(e,a,t){var n;"object"==typeof t?lay.each(t||{},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])}):"string"==typeof t&&(n=t||a[2]),n&&e.find("div").html(''+n+"")},k.prototype.mark=function(t,a){var n=this,e=n.config,i=function(e){n.markRender(t,a,e)};return e.calendar&&"cn"===e.lang&&i(n.markerOfChineseFestivals),"function"==typeof e.mark?e.mark({year:a[0],month:a[1],date:a[2]},i):"object"==typeof e.mark&&i(e.mark),n},k.prototype.holidaysRender=function(r,o,e){var d=["holidays","workdays"],s=function(e,t,a){e.find("div").html(["",a,""].join(""))};"array"===layui.type(e)?lay.each(e,function(l,e){lay.each(e,function(e,t){var a,n,i;t=t,a=r.attr("lay-ymd"),n=t.split("-"),i=a.split("-"),lay.each(n,function(e,t){n[e]=parseInt(t,10)}),lay.each(i,function(e,t){i[e]=parseInt(t,10)}),n.join("-")===i.join("-")&&s(r,d[l],o[2])})}):"string"==typeof e&&-1!==d.indexOf(e)&&s(r,e,o[2])},k.prototype.holidays=function(t,a){var n=this,e=n.config,i=function(e){n.holidaysRender(t,a,e)};return"function"==typeof e.holidays?e.holidays({year:a[0],month:a[1],date:a[2]},i):"array"===layui.type(e.holidays)&&i(e.holidays),n},k.prototype.cellRender=function(t,e,a){var n=this.config;return"function"==typeof n.cellRender&&n.cellRender(e,function(e){"string"==typeof e?lay(t).html(e):"object"==typeof e&&lay(t).html("").append(lay(e)[0])},{originElem:t,type:a}),this},k.prototype.startOfYear=function(e){e=new Date(e);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e},k.prototype.endOfYear=function(e){var e=new Date(e),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e},k.prototype.startOfMonth=function(e){e=new Date(e);return e.setDate(1),e.setHours(0,0,0,0),e},k.prototype.endOfMonth=function(e){var e=new Date(e),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e},k.prototype.addDays=function(e,t){e=new Date(e);return t&&e.setDate(e.getDate()+t),e},k.prototype.isDisabledYearOrMonth=function(e,t,a){for(var n=this,i=n.config,l="year"===t?n.startOfYear(e):n.startOfMonth(e),t="year"===t?n.endOfYear(e):n.endOfMonth(e),r=Math.floor((t.getTime()-l.getTime())/864e5)+1,o=0,d=0;d(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]&&(s.year=h[1],d.hint(y.invalidDate)),d.firstDate||(d.firstDate=lay.extend({},s)),n.setFullYear(s.year,s.month,1),l=(n.getDay()+(7-a.weekStart))%7,r=T.getEndDate(s.month||12,s.year),o=T.getEndDate(s.month+1,s.year),lay.each(u,function(e,t){var a,n=[s.year,s.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
          "),d.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e,rangeType:i,disabledType:"date"}),d.cellRender(t,{year:n[0],month:n[1],date:n[2]},"date")}),lay(c[0]).attr("lay-ym",s.year+"-"+(s.month+1)),lay(c[1]).attr("lay-ym",s.year+"-"+(s.month+1)),d.panelYM||(d.panelYM={}),d.panelYM[i]={year:s.year,month:s.month},"cn"===a.lang?(lay(c[0]).attr("lay-type","year").html(s.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(s.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[s.month]),lay(c[1]).attr("lay-type","year").html(s.year)),m&&(a.range?!e&&"init"===t||(d.listYM=[[(d.startDate||a.dateTime).year,(d.startDate||a.dateTime).month+1],[d.endDate.year,d.endDate.month+1]],d.list(a.type,0).list(a.type,1),"time"===a.type?d.setBtnStatus("\u65f6\u95f4",lay.extend({},d.systemDate(),d.startTime),lay.extend({},d.systemDate(),d.endTime)):d.setBtnStatus(!0)):(d.listYM=[[s.year,s.month+1]],d.list(a.type,0))),a.range&&"init"===t&&(d.rangeLinked?(n=d.getAsYM(s.year,s.month,i?"sub":null),d.calendar(lay.extend({},s,{year:n[0],month:n[1]}),1-i)):d.calendar(null,1-i)),a.range||(u=["hours","minutes","seconds"],d.limit({elem:lay(d.footer).find(".laydate-btns-now"),date:d.systemDate(/^(datetime|time)$/.test(a.type)?new Date:null),index:0,time:u,disabledType:"datetime"}),d.limit({elem:lay(d.footer).find(E),index:0,time:u,disabledType:"datetime"})),d.setBtnStatus(),lay(d.shortcut).find("li."+M).removeClass(M),a.range&&!m&&"init"!==t&&d.stampRange(),d},k.prototype.list=function(n,i){var l,r,e,a,o,d,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],u=s.lang(),c=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":b+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),p=s.elemHeader[i],f=lay(p[2]).find("span"),g=s.elemCont[i||0],D=lay(g).find("."+b)[0],T="cn"===y.lang,v=T?"\u5e74":"",x=s.listYM[i]||{},w=["hours","minutes","seconds"],k=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[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==x[0]&&lay(t).addClass(M),t.innerHTML=l+v,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:l,month:1,date:1},"year"),l++}),lay(f[T?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+v+" - "+(l-1)+v)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(M),t.innerHTML=u.month[e]+(T?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:x[0],month:e+1,date:1},"month")}),lay(f[T?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+v)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[k].hours,minutes:e},{hours:s[k].hours,minutes:s[k].minutes,seconds:e}][a],index:i,rangeType:i,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(E),date:s[k],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},y.range?s[k]||(s[k]="startTime"===k?m:s.endDate):s[k]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

          "+u.time[t]+"

            "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
          ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),f=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,o=0,lay.each([e,f,t],function(e,t){t||(a[e].className+=" layui-hide",o++)}),h.className+=" laydate-time-list-hide-"+o),D&&g.removeChild(D),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e,t,a=0|lay(this).attr("lay-ym");lay(this).hasClass(C)||(s.rangeLinked?lay.extend(m,{year:"year"===n?a:x[0],month:"year"===n?x[1]-1:a}):m[n]=a,e=-1!==["year","month"].indexOf(y.type),t="year"===n&&-1!==["date","datetime"].indexOf(y.type),e||t?(lay(h).find("."+M).removeClass(M),lay(this).addClass(M),("month"===y.type&&"year"===n||t)&&(s.listYM[i][0]=a,c&&((i?s.endDate:m).year=a),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(C))})):(f=lay.elem("span",{"class":L}),d=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[k][w[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(C))return a.scrollTop=30*(e-2),!0})})},t=lay(p[2]).find("."+L),d(),f.innerHTML=y.range?[u.startTime,u.endTime][i]:u.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),p[2].appendChild(f),(D=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(C)||(y.range?s[k][w[t]]=e:m[w[t]]=e,lay(a).find("."+M).removeClass(M),lay(this).addClass(M),r(),d(),!s.endDate&&"time"!==y.type&&"datetime"!==y.type||s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&D.css({overflowY:"auto",touchAction:"pan-y"})),s},k.prototype.listYM=[],k.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+b).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+L).remove()},k.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(E),o="datetime"===i.type||"time"===i.type?["hours","minutes","seconds"]:undefined;i.range&&(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,disabledType:"datetime",time:o,rangeType:0})||n.limit({date:a,disabledType:"datetime",time:o,rangeType:1})?r.addClass(C):r[i?"addClass":"removeClass"](C),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},k.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=T.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},k.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)},k.prototype.getDateTime=function(e){return this.newDate(e).getTime()},k.prototype.formatToDisplay=function(e,t){var a=this,n=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");Object.defineProperty(e,"value",lay.extend({},n,{get:function(){return this.getAttribute("lay-date")},set:function(e){n.set.call(this,t.call(a,e)),this.setAttribute("lay-date",e)}}))},k.prototype.setValue=function(e){var t,a=this,n=a.config,i=n.elem[0];return"static"!==n.position&&(e=e||"",a.isInput(i)?lay(i).val(e):(t=a.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+a.rangeStr+" ")),t[0].val(e[0]||""),t[1].val(e[1]||"")):(0===lay(i).find("*").length&&(t="function"==typeof n.formatToDisplay?n.formatToDisplay(e):e,lay(i).html(t)),lay(i).attr("lay-date",e))),a},k.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),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))},k.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},k.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(E).addClass(C),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+" "+M),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:M),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.rangeLinked?n.startDate:n.thisDateTime(1-a),disabledType:"date"})&&(((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=n.checkPanelDate(l,t),o=lay.extend({},l),d=r||e&&e.needFullRender?"init":null,e=e?e.index:t,n.calendar(o,e,d)):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"))},k.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(C)||(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(C))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(C))return("time"===n.type?a.startTime&&a.endTime&&a.newDate(a.startTime)>a.newDate(a.endTime):a.startDate&&a.endDate&&a.newDate(lay.extend({},a.startDate,a.startTime||{}))>a.newDate(lay.extend({},a.endDate,a.endTime||{})))?a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout):a.hint(i.invalidDate)}else if(lay(t).hasClass(C))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},k.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(E),date:{year:s[0]},disabledType:"datetime"})),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(){var e,t;i.rangeLinked?(t=i.panelYM[0],t=i.getAsYM(t.year,t.month,"sub"),e=lay.extend({},l.dateTime,i.panelYM[0],{year:t[0],month:t[1]}),i.checkDate("limit").calendar(e,null,"init")):(t=i.getAsYM(r.year,r.month,"sub"),lay.extend(r,{year:t[0],month:t[1]}),i.checkDate("limit").calendar(null,null,"init"),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){var e,t;i.rangeLinked?(t=i.panelYM[0],t=i.getAsYM(t.year,t.month),e=lay.extend({},l.dateTime,i.panelYM[0],{year:t[0],month:t[1]}),i.checkDate("limit").calendar(e,null,"init")):(t=i.getAsYM(r.year,r.month),lay.extend(r,{year:t[0],month:t[1]}),i.checkDate("limit").calendar(null,null,"init"),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")))}}},k.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("."+I).addClass(C))}),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)})},k.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},k.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){T.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(D).on("mousedown",function(e){var t,a;T.thisId&&(t=s.getThis(T.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;T.thisId&&(t=s.getThis(T.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===k.thisElemDate&&(e.preventDefault(),n(t.footer).find(E)[0].click())}),n(i).on("resize",function(){if(T.thisId){var e=s.getThis(T.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},T.render=function(e){e=new k(e);return s.call(e)},T.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},T.getInst=function(e){e=s.getThis(e);if(e)return e.inst},T.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},T.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},T.close=function(e){e=s.getThis(e||T.thisId);if(e)return e.remove()},T.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("")},T.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?(T.ready(),layui.define("lay",function(e){T.path=layui.cache.dir,l.run(lay),e(a,T)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),T}):(T.ready(),l.run(i.lay),i.laydate=T)}(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=[],r&&(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,h('
          ')),this},t.pt.creat=function(){var e,t,i,n,a=this,o=a.config,s=a.index,r="object"==typeof(d=o.content),l=h("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){h(this).removeClass(t)}))};if(o.id&&h("."+u[0]).find("#"+o.id)[0])e=h("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=h("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:f.btn[0],v.closeAll("dialog");break;case 2:var d=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.type?h("body").append(e[1]):d.parents("."+u[0])[0]||(d.data("display",d.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),h("#"+u[0]+s).find("."+u[5]).before(t)):l.append(e[1]),h("#"+u.MOVE)[0]||l.append(f.moveElem=i),a.layero=h("#"+u[0]+s),a.shadeo=h("#"+u.SHADE+s),o.scrollbar||f.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",d[0]),4==o.type?a.tips():(a.offset(),parseInt(f.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||f.events.resize[a.index]||(f.events.resize[a.index]=function(){a.resize()},g.on("resize",f.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},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=h("#"+u[0]+e),n=((""===t.area[0]||"auto"===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]||"auto"===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=g.height()&&(n[1]=g.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=(g.height()-n[1])/2,e.offsetLeft=(g.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=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.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=h(e.follow),a={width:(n=n[0]?n:h("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(){0'):e.removeClass("layui-layer-btn-is-loading").removeAttr("disabled").find(".layui-layer-btn-loading-icon").remove()},t.pt.callback=function(){var n=this,a=n.layero,o=n.config;n.openLayer(),o.success&&(2==o.type?a.find("iframe").on("load",function(){o.success(a,n.index,n)}):o.success(a,n.index,n)),6==v.ie&&n.IE6(a),a.find("."+u[6]).children("a").on("click",function(){var e,t=h(this),i=t.index();t.attr("disabled")||(o.btnAsync?(e=0===i?o.yes||o.btn1:o["btn"+(i+1)],n.loading=function(e){n.btnLoading(t,e)},e?f.promiseLikeResolve(e.call(o,n.index,a,n)).then(function(e){!1!==e&&v.close(n.index)},function(e){e!==m&&p.console&&p.console.error("layer error hint: "+e)}):v.close(n.index)):0===i?o.yes?o.yes(n.index,a,n):o.btn1?o.btn1(n.index,a,n):v.close(n.index):!1!==(o["btn"+(i+1)]&&o["btn"+(i+1)](n.index,a,n))&&v.close(n.index))}),a.find("."+u[7]).on("click",function(){!1!==(o.cancel&&o.cancel(n.index,a,n))&&v.close(n.index)}),o.shadeClose&&n.shadeo.on("click",function(){v.close(n.index)}),a.find(".layui-layer-min").on("click",function(){!1!==(o.min&&o.min(a,n.index,n))&&v.min(n.index,o)}),a.find(".layui-layer-max").on("click",function(){h(this).hasClass("layui-layer-maxmin")?(v.restore(n.index),o.restore&&o.restore(a,n.index,n)):(v.full(n.index,o),setTimeout(function(){o.full&&o.full(a,n.index,n)},100))}),o.end&&(f.end[n.index]=o.end),o.beforeEnd&&(f.beforeEnd[n.index]=h.proxy(o.beforeEnd,o,a,n.index,n))},f.reselect=function(){h.each(h("select"),function(e,t){var i=h(this);i.parents("."+u[0])[0]||1==i.attr("layer")&&h("."+u[0]).length<1&&i.removeAttr("layer").show()})},t.pt.IE6=function(e){h("select").each(function(e,t){var i=h(this);i.parents("."+u[0])[0]||"none"!==i.css("display")&&i.attr({layer:"1"}).hide()})},t.pt.openLayer=function(){v.zIndex=this.config.zIndex,v.setTop=function(e){return v.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",function(){v.zIndex++,e.css("z-index",v.zIndex+1)}),v.zIndex}},f.record=function(e){if(!e[0])return p.console&&console.error("index error");var t=e.attr("type"),i=e.find(".layui-layer-content"),t=t===f.type[2]?i.children("iframe"):i,n=[e[0].style.width||f.getStyle(e[0],"width"),e[0].style.height||f.getStyle(e[0],"height"),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:n}),i.data(l,f.getStyle(t[0],"height"))},f.setScrollbar=function(e){u.html.css("overflow","hidden").attr("layer-full",e)},f.restScrollbar=function(e){u.html.attr("layer-full")==e&&(u.html[0].style[u.html[0].style.removeProperty?"removeProperty":"removeAttribute"]("overflow"),u.html.removeAttr("layer-full"))},f.promiseLikeResolve=function(e){var t=h.Deferred();return e&&"function"==typeof e.then?e.then(t.resolve,t.reject):t.resolve(e),t.promise()},(p.layer=v).getChildFrame=function(e,t){return t=t||h("."+u[4]).attr("times"),h("#"+u[0]+t).find("iframe").contents().find(e)},v.getFrameIndex=function(e){return h("#"+e).parents("."+u[4]).attr("times")},v.iframeAuto=function(e){var t,i,n;e&&(t=v.getChildFrame("html",e).outerHeight(),i=(e=h("#"+u[0]+e)).find(u[1]).outerHeight()||0,n=e.find("."+u[6]).outerHeight()||0,e.css({height:t+i+n}),e.find("iframe").css({height:t}))},v.iframeSrc=function(e,t){h("#"+u[0]+e).find("iframe").attr("src",t)},v.style=function(e,t,i){var e=h("#"+u[0]+e),n=e.find(".layui-layer-content"),a=e.attr("type"),o=e.find(u[1]).outerHeight()||0,s=e.find("."+u[6]).outerHeight()||0;e.attr("minLeft");a!==f.type[3]&&a!==f.type[4]&&(i||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-o-s<=64&&(t.height=64+o+s)),e.css(t),s=e.find("."+u[6]).outerHeight()||0,a===f.type[2]?e.find("iframe").css({height:("number"==typeof t.height?t.height:e.height())-o-s}):n.css({height:("number"==typeof t.height?t.height:e.height())-o-s-parseFloat(n.css("padding-top"))-parseFloat(n.css("padding-bottom"))}))},v.min=function(e,t){var i,n,a,o,s,r,l=h("#"+u[0]+e),c=l.data("maxminStatus");"min"!==c&&("max"===c&&v.restore(e),l.data("maxminStatus","min"),t=t||l.data("config")||{},c=h("#"+u.SHADE+e),i=l.find(".layui-layer-min"),n=l.find(u[1]).outerHeight()||0,o=(a="string"==typeof(o=l.attr("minLeft")))?o:181*f.minStackIndex+"px",s=l.css("position"),r={width:180,height:n,position:"fixed",overflow:"hidden"},f.record(l),0g.width()&&(o=g.width()-180-(f.minStackArr.edgeIndex=f.minStackArr.edgeIndex||0,f.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||f.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),f.restScrollbar(e),c.hide())},v.restore=function(e){var t=h("#"+u[0]+e),i=h("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?f.restScrollbar(e):f.setScrollbar(e),r!==m&&(n.removeData(l),(o===f.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=h("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.restore(t),i.data("maxminStatus","max"),f.record(i),u.html.attr("layer-full")||f.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){h("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(s,r){var e,t,l=(e=h("."+u[0]).children("#"+s).closest("."+u[0]))[0]?(s=e.attr("times"),e):h("#"+u[0]+s),c=l.attr("type"),i=l.data("config")||{},d=i.id&&i.hideOnClose;l[0]&&(t=function(){var o={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[i.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(d)return l.removeClass("layer-anim "+o),l.hide();if(c===f.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===f.type[2])try{var n=h("#"+u[4]+s)[0];n.contentWindow.document.write(""),n.contentWindow.close(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof f.end[s]&&f.end[s](),delete f.end[s],"function"==typeof r&&r(),f.events.resize[s]&&(g.off("resize",f.events.resize[s]),delete f.events.resize[s])},t=h("#"+u.SHADE+s);v.ie&&v.ie<10||!i.isOutAnim?t[d?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[d?"hide":"remove"]()},350)),i.isOutAnim&&l.addClass("layer-anim "+o),6==v.ie&&f.reselect(),f.restScrollbar(s),"string"==typeof l.attr("minLeft")&&(f.minStackIndex--,f.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!i.isOutAnim?e():setTimeout(function(){e()},200)},d||"function"!=typeof f.beforeEnd[s]?(delete f.beforeEnd[s],t()):f.promiseLikeResolve(f.beforeEnd[s]()).then(function(e){!1!==e&&(delete f.beforeEnd[s],t())},function(e){e!==m&&p.console&&p.console.error("layer error hint: "+e)}))},v.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=h("."+u[0]);h.each(o,function(e){var t=h(this),i=n?t.attr("type")===n:1;i&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=h.isArray(i);h("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=h(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(h.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.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)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(h.extend({type:1,skin:"layui-layer-tab"+x("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=h(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))},v.photos=function(n,e,a){var s={};if((n=h.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof h),i=t?n.photos:{},o=i.data||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}else{var c=h(n.photos),d=function(){o=[],c.find(n.img).each(function(e){var t=h(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(d(),0===o.length)return;if(e||c.on("click",n.img,function(){d();var e=h(this).attr("layer-index");v.photos(h.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&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.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)}),h(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=h(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":v.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))},h.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=v.load(1,{shade:!("shade"in n)&&[.9,m,"unset"],scrollbar:!1});var t=o[r].src,f=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.open(h.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[h(p).width()-100,h(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[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,h(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
          \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],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,T=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};T.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1,closeOnClick:!0},T.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},T.prototype.init=function(e,i){var t=this,n=t.config,a=c(n.elem);return 1",(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},t=['
            ',"
            "].join(""),n=d.content||(n=c('
              '),0\u6682\u65e0\u6570\u636e'),n),a=g.findMainElem(d.id);"reloadData"===e&&a.length?(i=l.mainElem=a).html(n):((i=l.mainElem=c(t)).append(n),i.addClass(d.className),i.attr("style",d.style),l.remove(h.thisId),d.target.append(i),d.elem.data(f,!0),e=d.shade?'
              ':"",i.before(e),"mouseenter"===d.trigger&&i.on("mouseenter",function(){clearTimeout(g.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),h.thisId=d.id,i.find(".layui-menu").on(o,function(e){layui.stope(e)}),i.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("."+E);i.removeClass(x),i.css("margin-top",0)}),h.close=function(e){e=g.getThis(e);return e?(e.remove(),g.call(e)):this},h.open=function(e){e=g.getThis(e);return e?(e.render(),g.call(e)):this},h.reload=function(e,i,t){e=g.getThis(e);return e?(e.reload(i,t),g.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 T(e);return g.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var x=layui.$,b=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=x.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",T="layui-slider-bar",w="layui-slider-wrap",M="layui-slider-wrap-btn",L="layui-slider-tips",E="layui-slider-input-txt",Y="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=x.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.precision=function(){var e=this.config,e=x.map([e.min,e.max,e.step],function(e,t){e=String(e).split(".");return e[1]?e[1].length:0});return Math.max.apply(null,e)},t.prototype.render=function(){var n=this,a=n.config,e=x(a.elem);if(1a.max&&(a.value=a.max),l=(a.value-a.min)/(a.max-a.min)*100+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
              '+(a.tips?'
              ":"")+'
              '+(a.range?'
              ':"")+"
              ",l=x(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=x(i),a.range?(n.elemTemp.find("."+w).eq(0).data("value",a.value[0]),n.elemTemp.find("."+w).eq(1).data("value",a.value[1])):n.elemTemp.find("."+w).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 c=100*u/o;c<100&&(r+='
              ')}n.elemTemp.append(r)}function d(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+L).html(e)}function p(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+w);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function v(e){"vertical"===a.type?n.elemTemp.find("."+L).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+L).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=x('
              '),l.css("position","relative"),l.append(e),l.find("."+E).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("."+M).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(d(s=n.elemTemp.find("."+M)),v(p(s))):n.elemTemp.find("."+M).on("mouseover",function(){d(x(this));var e=p(x(this));clearTimeout(t),t=setTimeout(function(){v(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+L).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,c=u.config,d=u.elemTemp,p=function(){return"vertical"===c.type?c.height:d[0].offsetWidth},v=d.find("."+w),o=d.next(".layui-slider-input"),r=o.children("."+E).children("input").val(),m=100/((c.max-c.min)/c.step),f=u.precision(),h=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=c.range?n:l,c.change&&c.change(u.value),"done"===i&&c.done&&c.done(u.value)},y=function(e){var t=e/p()*100/m,i=Math.round(t)*m;return i=e==p()?Math.ceil(t)*m:i},g=x(['
              p()?p():t)/p()*100/m;h(t,o),r.addClass(Y),d.find("."+L).show(),e.preventDefault()},n=function(e){r.removeClass(Y),c.tipsAlways||setTimeout(function(){d.find("."+L).hide()},e)},a=function(){n&&n(b.touchEventsSupported()?1e3:0),g.remove(),c.done&&c.done(u.value),b.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},x("#LAY-slider-moving")[0]||x("body").append(g),g.on("mousemove",i),g.on("mouseup",a).on("mouseleave",a),b.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),d.on("click",function(e){var t=x("."+M),i=x(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===c.type?p()-e.clientY+i.offset().top-x(window).scrollTop():e.clientX-i.offset().left-x(window).scrollLeft())<0?0:t)>p()?p():t)/p()*100/m,t=c.range?"vertical"===c.type?Math.abs(t-parseInt(x(v[0]).css("bottom")))>Math.abs(t-parseInt(x(v[1]).css("bottom")))?1:0:Math.abs(t-v[0].offsetLeft)>Math.abs(t-v[1].offsetLeft)?1:0:0,h(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){x(this).on("click",function(){r=o.children("."+E).children("input").val();var e=((r=1==t?r-c.stepc.max?c.max:Number(r)+c.step)-c.min)/(c.max-c.min)*100/m;h(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)c.max?c.max:e,((this.value=e)-c.min)/(c.max-c.min)*100/m);h(e,0,"done")};o.children("."+E).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=x(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("."+T)[0].style.background,e.events()},s.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],n=e.elemPicker=x(['
              ','
              ','
              ','
              ','
              ','
              ',"
              ",'
              ','
              ',"
              ","
              ",'
              ','
              ','
              ',"
              ","
              ",i.predefine?(o=['
              '],layui.each(i.colors,function(e,i){o.push(['
              ','
              ',"
              "].join(""))}),o.push("
              "),o.join("")):"",'
              ','
              ','',"
              ",'
              ','','',"","
              "].join(""));e.elemColorBox.find("."+T)[0];x(c)[0]&&x(c).data("index")==e.index?e.removePicker(s.thisElemInd):(e.removePicker(s.thisElemInd),x("body").append(n)),r.thisId=i.id,s.thisElemInd=e.index,s.thisColor=t.style.background,e.position(),e.pickerEvents()},s.prototype.removePicker=function(e){var i=this.config,e=x("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete r.thisId,"function"==typeof i.close)&&i.close(this.color),this},s.prototype.position=function(){var e=this,i=e.config;return P.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},s.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+T)),t=i.elemPicker.find("."+X),n=o[0].style.backgroundColor;n?(e=j(L(n)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(n):"rgba"===o?(o=L(n),3===(n.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+Y).css("left",280)):(t.find("input").val(n),n=280*n.slice(n.lastIndexOf(",")+1,n.length-1),i.elemPicker.find("."+Y).css("left",n)),i.elemPicker.find("."+D)[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("#"+H(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+Y).css("left",280))},s.prototype.side=function(){var r=this,l=r.config,c=r.elemColorBox.find("."+T),a=c.attr("lay-type"),s=r.elemPicker.find(".layui-colorpicker-side"),o=r.elemPicker.find("."+I),d=r.elemPicker.find("."+E),t=r.elemPicker.find("."+M),u=r.elemPicker.find("."+D),f=r.elemPicker.find("."+Y),p=o[0].offsetTop/180*360,h=100-t[0].offsetTop/180*100,g=t[0].offsetLeft/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,m=r.elemColorBox.find("."+B),e=r.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,t){r.select(e,i,o);var n=F({h:e,s:i,b:o}),e=H({h:e,s:i,b:o}),i=r.elemPicker.find("."+X).find("input");m.addClass(C).removeClass(w),c[0].style.background="rgb("+n.r+", "+n.g+", "+n.b+")","torgb"===a?i.val("rgb("+n.r+", "+n.g+", "+n.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+n.r+", "+n.g+", "+n.b+", "+t+")"),c[0].style.background="rgba("+n.r+", "+n.g+", "+n.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+n.r+", "+n.g+", "+n.b+", 0), rgb("+n.r+", "+n.g+", "+n.b+"))"):i.val("#"+e),l.change&&l.change(x.trim(r.elemPicker.find("."+X).find("input").val()))},i=x(['
              '].join("")),b=function(e){x("#LAY-colorpicker-moving")[0]||x("body").append(i),i.on("mousemove",e),i.on("mouseup",function(){i.remove()}).on("mouseleave",function(){i.remove()})},n=!0,k=!0;o.on("mousedown",function(e,i){var t=this.offsetTop,n=(e.clientY===undefined?i:e).clientY;k&&layui.stope(e),b(function(e){var i=t+(e.clientY-n),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("mousedown",function(e){var i=e.clientY-x(this).offset().top+W.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(p=i,g,h,v),e.preventDefault(),n&&o.trigger("mousedown",e)}),t.on("mousedown",function(e,i){var r=this.offsetTop,l=this.offsetLeft,c=(e.clientY===undefined?i:e).clientY,a=(e.clientX===undefined?i:e).clientX;k&&layui.stope(e),b(function(e){var i=r+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight,n=d[0].offsetWidth,n=(o=n<(o=o<0?0:o)?n:o)/260*100,o=100-(i=t<(i=i<0?0:i)?t:i)/180*100;y(p,g=n,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-x(this).offset().top+W.scrollTop(),o=e.clientX-x(this).offset().left+W.scrollLeft(),o=((i=i<0?0:i)>this.offsetHeight&&(i=this.offsetHeight),(o=(o=o<0?0:o)>this.offsetWidth?this.offsetWidth:o)/260*100),i=100-i/180*100;y(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),n&&t.trigger("mousedown",e)}),f.on("mousedown",function(e,i){var t=this.offsetLeft,n=(e.clientX===undefined?i:e).clientX;k&&layui.stope(e),b(function(e){var i=t+(e.clientX-n),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("mousedown",function(e){var i=e.clientX-x(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(p,g,h,v=i),e.preventDefault(),n&&f.trigger("mousedown",e)}),e.each(function(){x(this).on("click",function(){x(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=j(L(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,y(i.h,i.s,i.b,o)})}),P.touchEventsSupported()&&layui.each([{elem:s,eventType:"mousedown"},{elem:u,eventType:"mousedown"},{elem:d,eventType:"mousedown"}],function(e,t){P.touchSwipe(t.elem,{onTouchStart:function(){k=n=!1},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)},onTouchEnd:function(){i.remove(),k=n=!0}})})},s.prototype.select=function(e,i,o,t){this.config;var n=H({h:e,s:100,b:100}),e=(H({h:e,s:i,b:o}),e/360*180),o=180-o/100*180,i=i/100*260,r=this.elemPicker.find("."+E)[0];this.elemPicker.find("."+I).css("top",e),r.style.background="#"+n,this.elemPicker.find("."+M).css({top:o/r.offsetHeight*100+"%",left:i/r.offsetWidth*100+"%"})},s.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+T),d=c.elemPicker.find("."+X+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+B).removeClass(C).addClass(w),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,n,r,l=x.trim(d.val());-1>16,g:(65280&n)>>8,b:255&n},t=j(r),s[0].style.background=o="#"+H(t),c.elemColorBox.find("."+B).removeClass(w).addClass(C)),"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=x(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=x(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},s.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),x(c)[0]&&(e.val(),e.side())})},a.on(i,function(e){var i,o,t;r.thisId&&(i=n.getThis(r.thisId))&&(o=i.config,t=i.elemColorBox.find("."+T),x(e.target).hasClass(l)||x(e.target).parents("."+l)[0]||x(e.target).hasClass(c.replace(/\./g,""))||x(e.target).parents(c)[0]||i.elemPicker&&(i.color?(e=j(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+B).removeClass(C).addClass(w),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),W.on("resize",function(){if(r.thisId){var e=n.getThis(r.thisId);if(e)return!(!e.elemPicker||!x(c)[0])&&void e.position()}}),n.that={},n.getThis=function(e){var i=n.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},r.render=function(e){e=new s(e);return n.call(e)},e(t,r)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),r="element",y="layui-this",f="layui-show",c=".layui-tab-title",i=function(){this.config={}},h=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,r,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(c),n=l.children(".layui-tab-bar"),s=e.children(".layui-tab-content"),o=""+(i.title||"unnaming")+"";return n[0]?n.before(o):l.append(o),s.append('
              "+(i.content||"")+"
              "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),w.tabAuto(i.change?"change":null,e),this},i.prototype.tabDelete=function(t,i,a){t=u(".layui-tab[lay-filter="+t+"]").children(c).find('>li[lay-id="'+i+'"]');return w.tabDelete.call(t[0],{liElem:t,force:a}),this},i.prototype.tabChange=function(t,i,a){t=u(".layui-tab[lay-filter="+t+"]").children(c).find('>li[lay-id="'+i+'"]');return w.tabClick.call(t[0],{liElem:t,force:a}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(a.headerElem).index(u(this));w.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"),p="layui-nav-item",b="layui-nav-bar",v="layui-nav-tree",m="layui-nav-child",g="layui-nav-more",C="layui-anim layui-anim-upbit",w={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"),o=a.attr("lay-id"),c="index"in t?t.index:a.parent().children("li").index(a);if(!t.force){var t=a.siblings("."+y);if(!1===layui.event.call(this,r,"tabBeforeChange("+s+")",{elem:e,from:{index:a.parent().children("li").index(t),id:t.attr("lay-id")},to:{index:c,id:o}}))return}l||n||(a.addClass(y).siblings().removeClass(y),(o?t=(t=i.filter('[lay-id="'+o+'"]')).length?t:i.eq(c):i.eq(c)).addClass(f).siblings().removeClass(f)),layui.event.call(this,r,"tab("+s+")",{elem:e,index:c,id:o})},tabDelete:function(t){var i=(t=t||{}).liElem||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"),s=i.attr("lay-id");if(!t.force&&!1===layui.event.call(i[0],r,"tabBeforeDelete("+n+")",{elem:e,index:a,id:s}))return;i.hasClass(y)&&(i.next()[0]&&i.next().is("li")?w.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&w.tabClick.call(i.prev()[0],null,a-1)),i.remove(),(s?t=(t=l.filter('[lay-id="'+s+'"]')).length?t:l.eq(a):l.eq(a)).remove(),setTimeout(function(){w.tabAuto(null,e)},50),layui.event.call(this,r,"tabDelete("+n+")",{elem:e,index:a,id:s})},tabAuto:function(l,t){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;(t||u(".layui-tab")).each(function(){var t=u(this),a=t.children(".layui-tab-title"),i=(t.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),i=u(''),e=(c===window&&d.ie,t.attr("lay-allowclose"));e&&"false"!==e&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||"false"===i.attr("lay-allowclose")||((t=u('')).on("click",function(t){w.tabDelete.call(this,{e:t})}),i.append(t))}),"string"!=typeof t.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(e=a.find("li").eq(0).height())+e/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(i),t.attr("overflow",""),i.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),t.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(h),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+m),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+y).removeClass(y),e.addClass(y)),i.hasClass(v)){var n=p+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+b).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(C),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("."+m).show().stop().slideUp(200,o)))}layui.event.call(this,r,"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("."+f)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(f)),a[n?"addClass":"removeClass"](f),i.html(n?"":""),layui.event.call(this,r,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a="string"==typeof i&&i?'[lay-filter="'+i+'"]':"",e={tab:function(t){t=t||u(".layui-tab"+a);w.tabAuto.call({},null,t)},nav:function(t){var s={},o={},c={},r="layui-nav-title";(t||u(h+a)).each(function(t){var i=u(this),a=u(''),e=i.find("."+p),l=i.find("."+b);l[0]&&l.remove(),i.append(a),(i.hasClass(v)?e.find("dd,>."+r):e).off("mouseenter.lay_nav").on("mouseenter.lay_nav",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+m);i.hasClass(v)?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(C),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(f),l.find("."+g).addClass(g+"d")},300))}.call(this,a,i,t)}).off("mouseleave.lay_nav").on("mouseleave.lay_nav",function(){i.hasClass(v)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+m).removeClass(f),i.find("."+g).removeClass(g+"d")},300))}),i.off("mouseleave.lay_nav").on("mouseleave.lay_nav",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(v)||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("."+m)[0]&&!t.children("."+g)[0]&&t.append(''),t.off("click",w.clickThis).on("click",w.clickThis)})})},breadcrumb:function(t){(t||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(t){var e="layui-progress";(t||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(t){(t||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",w.collapse).on("click",w.collapse)})})}};return t&&"object"==typeof i&&i instanceof u?e[t](i):e[t]?e[t]():layui.each(e,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",w.tabClick),u(window).on("resize",w.tabAuto),t(r,a)});layui.define(["lay","layer"],function(e){"use strict";var F=layui.$,a=layui.lay,t=layui.layer,R=layui.device(),i="upload",s="layui_"+i+"_index",w={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=F.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},o=function(){var t=this,e=t.config.id;return{upload:function(e){t.upload.call(t,e)},reload:function(e){t.reload.call(t,e)},config:(o.that[e]=t).config}},r="layui-upload-file",l="layui-upload-form",E="layui-upload-iframe",L="layui-upload-choose",T="UPLOADING",D=function(e){var t=this;t.index=++w.index,t.config=F.extend({},t.config,w.config,e),t.render()};D.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}},D.prototype.reload=function(e){var t=this;t.config=F.extend({},t.config,e),t.render(!0)},D.prototype.render=function(e){var t=this,i=t.config,n=F(i.elem);return 1"].join("")),n=t.elem.next();(n.hasClass(r)||n.hasClass(l))&&n.remove(),R.ie&&R.ie<10&&t.elem.wrap('
              '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(i),R.ie&&R.ie<10&&e.initIE()},D.prototype.initIE=function(){var i,e=this.config,t=F(''),n=F(['
              ',"
              "].join(""));F("#"+E)[0]||F("body").append(t),e.elem.next().hasClass(l)||(this.elemFile.wrap(n),e.elem.next("."+l).append((i=[],layui.each(e.data,function(e,t){t="function"==typeof t?t():t,i.push('')}),i.join(""))))},D.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},D.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},D.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,t){var i=new FileReader;i.readAsDataURL(t),i.onload=function(){n&&n(e,t,this.result)}})},D.prototype.upload=function(e,t){var i,n,a,o,r,u=this,f=u.config,s=f.text||{},l=u.elemFile[0],c=function(){return e||u.files||u.chooseFiles||l.files},d=function(){var a=0,o=0,r=c(),l=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},i=function(i){var n=new FormData,t=function(e){i.unified?layui.each(r,function(e,t){delete t[T]}):delete e[T]};if(layui.each(f.data,function(e,t){t="function"==typeof t?i.unified?t():t(i.index,i.file):t,n.append(e,t)}),i.unified)layui.each(r,function(e,t){t[T]||(t[T]=!0,n.append(f.field,t))});else{if(i.file[T])return;n.append(f.field,i.file),i.file[T]=!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++,m(i.index,e),l(i.index),t(i.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(s.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
              ")),g(i.index,e.responseText,e),l(i.index),t(i.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=F.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var t;e.lengthComputable&&(t=Math.floor(e.loaded/e.total*100),f.progress(t,(f.item||f.elem)[0],e,i.index))}),e}),F.ajax(e)};f.unified?i({unified:!0,index:0}):layui.each(r,function(e,t){i({index:e,file:t})})},p=function(){var n=F("#"+E);u.elemFile.parent().submit(),clearInterval(D.timer),D.timer=setInterval(function(){var e,t=n.contents().find("body");try{e=t.text()}catch(i){u.msg(s["cross-domain"]),clearInterval(D.timer),g()}e&&(clearInterval(D.timer),t.html(""),m(0,e))},30)},h=function(e){if("json"===f.force&&"object"!=typeof e)try{return{status:"CONVERTED",data:JSON.parse(e)}}catch(t){return u.msg(s["data-format-error"]),{status:"FORMAT_ERROR",data:{}}}return{status:"DO_NOTHING",data:{}}},m=function(e,t){u.elemFile.next("."+L).remove(),l.value="";var i=h(t);switch(i.status){case"CONVERTED":t=i.data;break;case"FORMAT_ERROR":return}"function"==typeof f.done&&f.done(t,e||0,function(e){u.upload(e)})},g=function(e,t,i){f.auto&&(l.value="");var n=h(t);switch(n.status){case"CONVERTED":t=n.data;break;case"FORMAT_ERROR":return}"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)},t,i)},v=f.exts,y=(n=[],layui.each(e||u.chooseFiles,function(e,t){n.push(t.name)}),n),x={preview:function(e){u.preview(e)},upload:function(e,t){var i={};i[e]=t,u.upload(i)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,t){u.files[e]=t}),u.files},resetFile:function(e,t,i){t=new File([t],i);u.files=u.files||{},u.files[e]=t},getChooseFiles:function(){return u.chooseFiles}},b={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",y=0===y.length?l.value.match(/[^\/\\]+\..+/g)||[]:y;if(0!==y.length){switch(f.accept){case"file":layui.each(y,function(e,t){if(v&&!RegExp(".\\.("+v+")$","i").test(escape(t)))return i=!0});break;case"video":layui.each(y,function(e,t){if(!RegExp(".\\.("+(v||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(t)))return i=!0});break;case"audio":layui.each(y,function(e,t){if(!RegExp(".\\.("+(v||"mp3|wav|mid")+")$","i").test(escape(t)))return i=!0});break;default:layui.each(y,function(e,t){if(!RegExp(".\\.("+(v||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(t)))return i=!0})}if(i)return u.msg(s["check-error"]||"\u9009\u62e9\u7684"+b+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==t&&!f.auto||(f.choose&&f.choose(x),"choose"!==t)){if(u.fileLength=(a=0,b=c(),layui.each(b,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof s["limit-number"]?s["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&&(t=1<=(t=f.size/1024)?t.toFixed(2)+"MB":f.size+"KB",l.value="",o=t)}),o)return u.msg("function"==typeof s["limit-size"]?s["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);r=function(){if(R.ie)return(9'+e+"")},l=function(i){var n=!0;return layui.each(a.files,function(e,t){if(!(n=!(t.name===i.name)))return!0}),n},u=function(e){var i=function(e){e.ext=e.name.substr(e.name.lastIndexOf(".")+1).toLowerCase(),e.sizes=w.util.parseSize(e.size)};return e instanceof FileList?layui.each(e,function(e,t){i(t)}):i(e),e},f=function(e){var i;return(e=e||[]).length?a.files?(i=[],layui.each(e,function(e,t){l(t)&&i.push(u(t))}),i):u(e):[]};n.elem.off("upload.start").on("upload.start",function(){var e=F(this);a.config.item=e,a.elemFile[0].click()}),R.ie&&R.ie<10||n.elem.off("upload.over").on("upload.over",function(){F(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){F(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,t){var i=F(this),t=f(t.originalEvent.dataTransfer.files);i.removeAttr("lay-over"),o(t),n.auto?a.upload():r(t)}),a.elemFile.on("change",function(){var e=f(this.files);0!==e.length&&(o(e),n.auto?a.upload():r(e))}),n.bindAction.off("upload.action").on("upload.action",function(){a.upload()}),n.elem.data(s)||(n.elem.on("click",function(){a.isFile()||F(this).trigger("upload.start")}),n.drag&&n.elem.on("dragover",function(e){e.preventDefault(),F(this).trigger("upload.over")}).on("dragleave",function(e){F(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),F(this).trigger("upload.drop",e)}),n.bindAction.on("click",function(){F(this).trigger("upload.action")}),n.elem.data(s,n.id))},w.util={parseSize:function(e,t){var i,n;return t=t||2,null!=e&&e?(i="string"==typeof e?parseFloat(e):e,n=Math.floor(Math.log(i)/Math.log(1024)),(e=(e=i/Math.pow(1024,n))%1==0?e:parseFloat(e.toFixed(t)))+["Bytes","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"][n]):"0"},promiseLikeResolve:function(e){var t=F.Deferred();return e&&"function"==typeof e.then?e.then(t.resolve,t.reject):t.resolve(e),t.promise()}},o.that={},o.getThis=function(e){var t=o.that[e];return t||hint.error(e?i+" instance with ID '"+e+"' not found":"ID argument required"),t},w.render=function(e){e=new D(e);return o.call(e)},e(i,w)});layui.define(["lay","layer","util"],function(e){"use strict";var _=layui.$,f=layui.layer,A=layui.util,l=layui.hint(),d=(layui.device(),lay.ie&&8===parseFloat(lay.ie)),N="form",h=".layui-form",$="layui-this",j="layui-hide",O="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e)||e===undefined||null===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 _.extend(!0,this.config,e),this},t.prototype.verify=function(e){return _.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return _(h+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,N,e,t)},t.prototype.val=function(e,s){return this.getFormElem(e).each(function(e,t){var i,a,n,l,r=_(this);for(i in s)lay.hasOwn(s,i)&&(n=s[i],(l=r.find('[name="'+i+'"]'))[0])&&("checkbox"===(a=l[0].type)?l[0].checked=n:"radio"===a?l.each(function(){this.checked=this.value==n+""}):l.val(n))}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var n={},l={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i,a=_(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],n[i]=0|n[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+n[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(l[i||t.name]="SELECT"===this.tagName&&"string"==typeof this.getAttribute("multiple")?a.val()||[]:this.value))}),l},t.prototype.render=function(e,t){var u=this,i=u.config,a=_(h+(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=!!_(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),0===s?a=parseInt(a):0'),e=layui.isArray(i.value)?i.value:[i.value],e=_((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");_(this).hasClass(O)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,N,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},h={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(_(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 f="\u8bf7\u9009\u62e9",C="layui-form-select",w="layui-select-none",T="layui-select-create-option",p="layui-select-panel-elem-data",e=e||a.find("select"),y=function(n,e,t,i,u,a){var l,d,r,s,o,c,h,f,p,y=_(this),v=e,m=v.find("input"),g=n.find("dl"),b=(g.children("dd"),g.children("dt")),k=this.selectedIndex,x="";t||(d="cs"===y.attr("lay-search")?{caseSensitive:!0}:lay.options(y,{attr:"lay-search"}),r=y.attr("lay-append-to")||"body",s=y.attr("lay-append-position"),o=!(!lay.ie||"10"!==lay.ie&&"11"!==lay.ie||!m.attr("placeholder")),c=function(){a&&(n.appendTo(r).css({width:v.width()+"px"}),(e=function(){lay.position(v[0],n[0],{position:s,allowBottomOut:!0,offset:[0,5]})})(),_(window).on("resize.lay_select_resize",e));var e=n.offset().top+n.outerHeight()+5-S.scrollTop(),t=g.outerHeight(),i=g.children("dd");k=y[0].selectedIndex,v.parent().addClass(C+"ed"),i.removeClass(j),b.removeClass(j),i.removeClass($),0<=k&&i.eq(k).addClass($),e+t>S.height()&&t<=e&&n.addClass(C+"up"),f(),o&&g.off("mousedown.lay_select_ieph").on("mousedown.lay_select_ieph",function(){m[0].__ieph=!0,setTimeout(function(){m[0].__ieph=!1},60)}),l=lay.onClickOutside((a?n:g)[0],function(){h(),x&&m.val(x)},{ignore:v})},h=function(e){v.parent().removeClass(C+"ed "+C+"up"),m.blur(),u&&g.children("."+T).remove(),l&&l(),a&&(n.detach(),_(window).off("resize.lay_select_resize")),e||p(m.val(),function(e){var t=y[0].selectedIndex;e&&(x=_(y[0].options[t]).html(),0===t&&x===m.attr("placeholder")&&(x=""),m.val(x||""))})},f=function(){var e,t,i=g.children("dd."+$);i[0]&&(e=i.position().top,t=g.height(),i=i.height(),t").addClass(T).attr("lay-value",n).html(A.escape(n)),a=(i=g.children().eq(0)).hasClass("layui-select-tips"),i[a?"after":"before"](t)):e?g.find("."+w)[0]||g.append('

              \u65e0\u5339\u914d\u9879

              '):g.find("."+w).remove()},"keyup"),""===n&&(y.val(""),g.find("."+$).removeClass($),(y[0].options[0]||{}).value||g.children("dd:eq(0)").addClass($),g.find("."+w).remove(),u)&&g.children("."+T).remove(),void f()))},50)).on("blur",function(e){var t=y[0].selectedIndex;x=_(y[0].options[t]).text(),0===t&&x===m.attr("placeholder")&&(x=""),setTimeout(function(){p(m.val(),function(e){x||m.val("")},"blur")},200)}),g.on("click","dd",function(){var e,t=_(this),i=t.attr("lay-value"),a=y.attr("lay-filter");return t.hasClass(O)||(t.hasClass("layui-select-tips")?m.val(""):(m.val(t.text()),t.addClass($)),u&&t.hasClass(T)&&(g.append(t.removeClass(T)),e=_("
              "].join(""));i.after(l),function(t,i){var a=_(this),e=a.attr("lay-skin")||"primary",n="switch"===e,e="primary"===e;t.on("click",function(){var e=a.attr("lay-filter");a[0].disabled||(a[0].indeterminate&&(a[0].indeterminate=!1),a[0].checked=!a[0].checked,layui.event.call(a[0],N,i[2]+"("+e+")",{elem:a[0],value:a[0].value,othis:t}))}),u.syncAppearanceOnPropChanged(this,"checked",function(){var e;n&&(e=(t.next("*[lay-checkbox]")[0]?t.next().html():a.attr("title")||"").split("|"),t.children("div").html(!this.checked&&e[1]||e[0])),t.toggleClass(i[1],this.checked)}),e&&u.syncAppearanceOnPropChanged(this,"indeterminate",function(){this.indeterminate?t.children(".layui-icon-ok").removeClass("layui-icon-ok").addClass(c.SUBTRA):t.children("."+c.SUBTRA).removeClass(c.SUBTRA).addClass("layui-icon-ok")})}.call(this,l,r)})},radio:function(e){var o="layui-form-radio",c=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=_(this),a=i.next("."+o),n=this.disabled,l=i.attr("lay-skin");if("string"==typeof i.attr("lay-ignore"))return i.show();d&&p.call(t,"lay-form-sync-checked",t.checked),a[0]&&a.remove();var a=A.escape(t.title||""),r=[],s=(i.next("[lay-radio]")[0]&&(a=(s=i.next()).html()||"",1",'',"
              "+a+"
              ","
              "].join("")));i.after(s),function(i){var a=_(this),n="layui-anim-scaleSpring";i.on("click",function(){var e=a.attr("lay-filter");a[0].disabled||(a[0].checked=!0,layui.event.call(a[0],N,"radio("+e+")",{elem:a[0],value:a[0].value,othis:i}))}),u.syncAppearanceOnPropChanged(this,"checked",function(){var e,t=this;t.checked?(i.addClass(o+"ed"),i.children(".layui-icon").addClass(n+" "+c[0]),e=a.parents(h).find("input[name="+t.name.replace(/(\.|#|\[|\])/g,"\\$1")+"]"),layui.each(e,function(){t!==this&&(this.checked=!1)})):(i.removeClass(o+"ed"),i.children(".layui-icon").removeClass(n+" "+c[0]).addClass(c[1]))})}.call(this,s)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?_(e).is(h)?(a=_(e),t()):e.each(function(e,t){var i=_(t);i.closest(h).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(),u},t.prototype.syncAppearanceOnPropChanged=d?function(e,t,i){var a=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,t);Object.defineProperty(e,t,lay.extend({},a,{get:function(){return"string"==typeof this.getAttribute("lay-form-sync-"+t)},set:function(e){p.call(this,"lay-form-sync-"+t,e),i.call(this)}}))}:function(e,t,i){var a=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,t);Object.defineProperty(e,t,lay.extend({},a,{get:function(){return a.get.call(this)},set:function(e){a.set.call(this,e),i.call(this)}}))},t.prototype.validate=function(e){var u,d=this.config.verify,h="layui-form-danger";return!(e=_(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=_(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c="string"==typeof(c=s.val())?_.trim(c):c;if(s.removeClass(h),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?f.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?f.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&f.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(h),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=_(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(h).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,N,"submit("+e+")",l))});function p(e,t){var i=!!t,t=2===arguments.length&&!t;return null!==this.getAttribute(e)?i||(this.removeAttribute(e),!1):!t&&(this.setAttribute(e,""),!0)}var r=new t,t=_(document),S=_(window);_(function(){r.render()}),t.on("reset",h,function(){var e=_(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",h,i).on("click","*[lay-submit]",i),e(N,r)});layui.define(["lay","laytpl","laypage","form","util"],function(s){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,p=layui.laypage,g=layui.layer,i=layui.form,v=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",initIndexName:"LAY_INDEX_INIT",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,R,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=v.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},R="table",N="lay-"+R+"-id",t=".layui-table",W="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",I=".layui-table-fixed-r",P=".layui-table-pageview",E=".layui-table-sort",A="layui-table-checked",M="layui-table-edit",_="layui-table-hover",u="laytable-cell-group",F="layui-table-col-special",S="layui-table-tool-panel",H="layui-table-expanded",O="layui-table-disabled-transition",j="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(""),B=[,"{{# if(d.data.toolbar){ }}",'
              ','
              ','
              ',"
              ","{{# } }}",'
              ',"{{# if(d.data.loading){ }}",'
              ','
              ','{{# if(typeof d.data.loading === "string"){ }}',"{{- d.data.loading}}","{{# } else{ }}",'',"{{# } }}","
              ","
              ","{{# } }}","{{# 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),z=f(document),n=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(n.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:[]},n.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(((l={"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))})[N]=a.id,l)).html(m(B,{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(I),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.setColsWidth({isInit:!0}),t.pullData(t.page),t.events()},n.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])},n.prototype.setInit=function(e){var n,a,d=this,r=d.config;if(r.clientWidth=r.width||(n=function(e){var t,a;e=e||r.elem.parent(),t=d.getContentWidth(e);try{a="none"===e.css("display")}catch(l){}var i=e.parent();return e[0]&&i&&i[0]&&(!t||a)?n(i):t})(),"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})},n.prototype.renderToolbar=function(){var l,o=this,e=o.config,d=e.elem.attr("lay-filter"),t=['
              ','
              ','
              '].join(""),a=o.layTool.find(".layui-table-tool-temp"),n=("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",onClick:function(e){var a,n=e.config;(0,e.openPanel)({list:(a=[],o.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(){i.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=o.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,o.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](W),l!=i.hide&&o.setParentCol(!t,e),o.resize(),layui.event.call(this,R,"colToggled("+d+")",{col:i,config:n}))})}})}},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export",onClick:function(e){var t=e.data,a=e.config,i=e.openPanel,e=e.elem;if(!t.length)return g.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",e,{tips:3});x.ie?g.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",e,{tips:3}):i({list:['
            • \u5bfc\u51fa CSV \u6587\u4ef6
            • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(o,a.id,null,e)})}})}},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print",onClick:function(e){var t=e.data,e=(e.config,e.elem);if(!t.length)return g.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",e,{tips:3});var t=window.open("about:blank","_blank"),e=[""].join(""),a=f(o.layHeader.html());a.append(o.layMain.find("table").html()),a.append(o.layTotal.find("table").html()),a.find("th.layui-table-patch").remove(),a.find("thead>tr>th."+F).filter(function(e,t){return!f(t).children("."+u).length}).remove(),a.find("tbody>tr>td."+F).remove(),t.document.write(e+a.prop("outerHTML")),t.document.close(),layui.device("edg").edg?(t.onafterprint=t.close,t.print()):(t.print(),t.close())}}});"object"==typeof e.defaultToolbar&&(l=[],e.defaultToolbar=f.map(e.defaultToolbar,function(e,t){var a="string"==typeof e,i=a?n[e]:e;return i&&(!(i=i.name&&n[i.name]?f.extend({},n[i.name],i):i).name&&a&&(i.name=e),l.push('
              ')),i}),o.layTool.find(".layui-table-tool-self").html(l.join("")))},n.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))},n.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"](W),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},n.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)})})},n.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+u)).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(W)||0o.layMain.prop("clientHeight")&&(e.style.width=parseFloat(e.style.width)-i+"px")}),!p&&h?y.width(o.getContentWidth(l)):y.width("auto"),o.setGroupWidth()},n.prototype.resize=function(){var e=this;e.layMain&&("isConnected"in e.layMain[0]?e.layMain[0].isConnected:f.contains(document.body,e.layMain[0]))&&(e.fullSize(),e.setColsWidth(),e.scrollPatch())},n.prototype.reload=function(e,t,a){var i=this;e=e||{},delete i.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete i.config[e]}),i.config=f.extend(t,{},i.config,e),"reloadData"!==a&&(layui.each(i.config.cols,function(e,t){layui.each(t,function(e,t){delete t.colspan2})}),delete i.config.HAS_SET_COLS_PATCH),i.render(a)},n.prototype.errorView=function(e){var t=this,a=t.layMain.find("."+h),e=f('
              '+(e||"Error")+"
              ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(W),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},n.prototype.page=1,n.prototype.pullData=function(i,l){var e,t,n=this,o=n.config,a=(o.HAS_SET_COLS_PATCH||n.setColsPatch(),o.HAS_SET_COLS_PATCH=!0,o.request),d=o.response,r=function(){"object"==typeof o.initSort&&n.sort({field:o.initSort.field,type:o.initSort.type,reloadType:l.type})},c=function(e,t){n.setColsWidth(),n.loading(!1),"function"==typeof o.done&&o.done(e,i,e[d.countName],t)};l=l||{},"function"==typeof o.before&&o.before(o),n.startTime=(new Date).getTime(),l.renderData?((e={})[d.dataName]=k.cache[n.key],e[d.countName]=o.url?"object"===layui.type(o.page)?o.page.count:e[d.dataName].length:o.data.length,"object"==typeof o.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),n.renderData({res:e,curr:i,count:e[d.countName],type:l.type,sort:!0}),c(e,"renderData")):o.url?(t={},o.page&&(t[a.pageName]=i,t[a.limitName]=o.limit),a=f.extend(t,o.where),o.contentType&&0==o.contentType.indexOf("application/json")&&(a=JSON.stringify(a)),n.loading(!0),f.ajax({type:o.method||"get",url:o.url,contentType:o.contentType,data:a,dataType:o.dataType||"json",jsonpCallback:o.jsonpCallback,headers:o.headers||{},complete:"function"==typeof o.complete?o.complete:undefined,success:function(e){var t,a;(e="function"==typeof o.parseData?o.parseData(e)||e:e)[d.statusName]!=d.statusCode?n.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):(t=e[d.countName],(a=Math.ceil(t/o.limit)||1)','
              "+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)},n.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,g.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"](W),a.layPage.find(P)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(W),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(W),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,p.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},n.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 e=t.field||e,a=o&&o[t.field],i="totalRowDecimals"in t?t.totalRowDecimals:2,i=s[e]?parseFloat(s[e]||0).toFixed(i):"",i=(n=t.totalRowText||"",(l={LAY_COL:t})[e]=i,l=t.totalRow&&T.call(r,{item3:t,content:i,tplData:l})||n,a||l),l="string"==typeof(n=t.totalRow||c.totalRow)?m(n).render(f.extend({TOTAL_NUMS:a||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):i,n=(t.field&&r.dataTotal.push({field:t.field,total:f("
              "+l+"
              ").text()}),['','
              "+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:"")+""))},n.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},n.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");i.render(e,t)},n.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){i.render(a.find(t))})},n.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}))},n.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)},n.prototype.setRowChecked=function(i){var a,e,l,t,n,o,d,r=this,c=r.config,s="all"===i.index,u="array"===layui.type(i.index),y=s||u;y&&(r.layBox.addClass(O),"radio"===i.type)||(u&&(a={},layui.each(i.index,function(e,t){a[t]=!0}),i.index=a),e=r.layBody.children(".layui-table").children("tbody"),d=y?"tr":'tr[data-index="'+i.index+'"]',d=e.children(d),e=s?d:d.filter(u?function(){var e=f(this).data("index");return i.index[e]}:'[data-index="'+i.index+'"]'),i=f.extend({type:"checkbox"},i),l=k.cache[r.key],t="checked"in i,n=function(e){return"radio"===i.type||(t?i.checked:!e)},e.each(function(){var e=f(this),t=e.attr("data-index"),a=l[t];t&&"array"!==layui.type(a)&&!a[c.disabledName]&&(a=a[c.checkName]=n(e.hasClass(A)),e.toggleClass(A,!!a),"radio"===i.type)&&(o=t,e.siblings().removeClass(A))}),o&&layui.each(l,function(e,t){Number(o)!==Number(e)&&delete t[c.checkName]}),d=(u=(s=e.children("td").children(".layui-table-cell").children('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')).last()).closest(I),("radio"===i.type&&d.hasClass(W)?s.first():s).prop("checked",n(u.prop("checked"))),r.syncCheckAll(),y&&setTimeout(function(){r.layBox.removeClass(O)},100))},n.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.initIndexName,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,R,"sort("+n+")",f.extend({config:i},i.initSort)))},n.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(W,!e)},n.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})},n.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("."+S)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};layui.stope(e),z.trigger("table.tool.panel.remove"),g.close(c.tipsIndex),layui.each(s.defaultToolbar,function(e,t){if(t.layEvent===a)return"function"==typeof t.onClick&&t.onClick({data:l,config:s,openPanel:n,elem:i}),!0}),layui.event.call(this,R,"toolbar("+o+")",f.extend({event:a,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,R,"colTool("+o+")",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,R,"pagebar("+o+")",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||(r.allowResize=t.width()-e<=10,d.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,d.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(j,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(j)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr(N),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),g.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr(N),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},d.css("cursor",""),a.scrollPatch(),t.removeData(j),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],R,"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)}),t=(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],R,"checkbox("+o+")",y.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],R,"radio("+o+")",y.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(_)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(_)}).on("click","tr",function(e){t.call(this,"row",e)}).on("dblclick","tr",function(e){t.call(this,"rowDouble",e)}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),t.call(this,"rowContextmenu",e)}),function(e,t){var a=f(this);if(!a.data("off")){if("rowContextmenu"!==e){var i=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");if(f(t.target).is(i)||f(t.target).closest(i)[0])return}layui.event.call(this,R,e+"("+o+")",y.call(a.children("td")[0],{e:t}))}}),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(u),(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("."+M)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+M,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=y.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],R,"edit("+o+")",l)}).on("blur","."+M,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),"layui-table-grid-down"),a=function(e){var t=f(this),a=t.children(u);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||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(u),i="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=g.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(){g.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&&(u[t.field]=!0)}),c.push(n.join(","))}),o&&layui.each(o.dataTotal,function(e,t){u[t.field]||s.push('"'+(t.total||"")+'"')}),r.join(",")+"\r\n"+c.join("\r\n")+"\r\n"+s.join(","))),d.download=(a.title||l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(d),d.click(),document.body.removeChild(d)},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"](W),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"](W),n.setParentCol(i,t))})})),f("."+S).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 n(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.initIndexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),s(R,k)});layui.define(["table"],function(e){"use strict";var A=layui.$,h=layui.form,P=layui.table,y=layui.hint(),B={config:{},on:P.on,eachCols:P.eachCols,index:P.index,set:function(e){var t=this;return t.config=A.extend({},t.config,e),t},resize:P.resize,getOptions:P.getOptions,hideCol:P.hideCol,renderData:P.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){B.reloadData(n,e,t)}}},j=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="lay-table-id",L="layui-hide",s=".layui-table-body",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",m="layui-table-tree",z="LAY_DATA_INDEX",b="LAY_DATA_INDEX_HISTORY",p="LAY_PARENT_INDEX",g="LAY_CHECKBOX_HALF",H="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,f=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++B.index,t.config=A.extend(!0,{},t.config,B.config,e),t.init(),t.render()},x=function(n,i,e){var l=P.cache[n];layui.each(e||l,function(e,t){var a=t[z]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&x(n,i,t[i])})},d=function(d,a,e){var r=j(d),o=("reloadData"!==e&&(r.status={expand:{}}),A.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,P.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):a.data!==undefined&&(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),x(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=B.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&B.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(f,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),P.render(A.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.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}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:'':""},a.prototype.getOptions=function(){return this.tableIns?P.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||P.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=A.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.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=A.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[z],getParentNode:function(){return n.getNodeByIndex(e[p])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.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[z],getParentNode:function(){return n.getNodeByIndex(i[p])},update:function(e){return B.updateNode(a,t,e)},remove:function(){return B.removeNode(a,t)},expand:function(e){return B.expandNode(a,A.extend({},e,{index:t}))},setChecked:function(e){return B.setRowChecked(a,A.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=B.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[z],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=P.cache[n],l=n[e];if("delete"!==a&&l)return A.extend(l,a),t?A.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
              '),N=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[z]),J(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=A.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)),O=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,_=m.headers||o.headers,k=m.parseData||o.parseData,w=m.response||o.response,A.ajax({type:O||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:_||{},success:function(e){(e="function"==typeof k?k.call(o,e)||e:e)[w.statusName]!=w.statusCode?(y[V]="error",y[H]=!1,g.html('')):N(e[w.dataName])},error:function(e,t){y[V]="error",y[H]=!1,"function"==typeof o.error&&o.error(e,t)}})),h;y[X]=!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,P.config.indexName,null,!0)),c.initData(y[s.children],y[z]),O=P.getTrHtml(r,v,null,null,e),S={trs:A(O.trs.join("")),trs_fixed:A(O.trs_fixed.join("")),trs_fixed_r:A(O.trs_fixed_r.join(""))},E=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed_r.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z])}),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,E),n)&&!p&&layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').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[z]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))).addClass(L);U("resize-"+r,function(){B.resize(r)},0)(),l&&"loading"!==y[V]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},v=(B.expandNode=function(e,t){var a,n,i,e=j(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},B.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=j(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=B.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(c=!1)}),!c)return void layui.each(B.getData(a),function(e,t){B.expandNode(a,{index:t[z],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])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(L),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[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return B.sort(a);var s,n=P.getTrHtml(a,e),f={trs:A(n.trs.join("")),trs_fixed:A(n.trs_fixed.join("")),trs_fixed_r:A(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[z].split("-").length-1;s={"data-index":t[z],"lay-data-index":t[z],"data-level":a},f.trs.eq(e).attr(s).data("index",t[z]),f.trs_fixed.eq(e).attr(s).data("index",t[z]),f.trs_fixed_r.eq(e).attr(s).data("index",t[z])}),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(L),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);B.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(m)||d.addClass(m),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=n.data.length,y=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(P.cache[i],function(e,t){f&&(t[z]=String(e));t=t[z];d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t)})),null),p=c.name,x=o.indent||14;if(layui.each(e.find('td[data-field="'+p+'"]'),function(e,t){var a,n,i=(t=A(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((y=y||{})[n]=!0),a[g]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+p+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
              ',a[H]?o.flexIconOpen:o.flexIconClose,"
              ",o.showIcon?'
              '+(l.normalizedIcon(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),J({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return B.expandAll(i,!0);(!1!==a&&y?(layui.each(y,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}),U("renderTreeTable2-"+i,function(){h.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0)):U("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),h.render(A(".layui-table-tree["+F+'="'+i+'"]'))},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(P.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[z]).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))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=P["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,A.extend(!0,{},t.config)),t.config=t.tableIns.config},a.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=A.extend(t,{},n.config,e),n.render(a)},B.reloadData=function(){var e=A.extend(!0,[],arguments);return e[3]="reloadData",B.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):A.extend(t,a),l.push(A.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||P.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return P.cache[e.id]},B.updateStatus=function(e,t,a){var e=j(e),n=e.getOptions();return a=a||(n.url?P.cache[n.id]:n.data),e.updateStatus(a,t)},B.sort=function(e){var t,a,i,l,n,d=j(e);d&&(n=(t=d.getOptions()).tree,a=B.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,P.config.indexName,null),P.cache[e]=a,d.initData(a),B.renderData(e))},function(n){var t=n.config.id,i=j(t),a=n.data=B.getNodeDataByIndex(t,n.index),l=a[z],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(A.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(){B.removeNode(t,a)},n.setRowChecked=function(e){B.setRowChecked(t,{index:a,checked:e})}}),u=(B.updateNode=function(e,a,t){var n,i,l,d,r,o=j(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=P.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(A(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},B.removeNode=function(e,t,a){var n=j(e);if(n){var i,l=n.getOptions(),d=l.tree,r=d.customName.isParent,o=d.customName.children,c=l.elem.next(),u=[],s=P.cache[e],t=n.getNodeDataByIndex("string"===layui.type(t)?t:t[z],!1,"delete"),f=n.getNodeDataByIndex(t[p]),d=(n.updateCheckStatus(f),n.treeToFlat([t],t[d.customName.pid],t[p])),t=(layui.each(d,function(e,t){t=t[z];u.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete s[t]}),c.find(u.join(",")).remove(),n.initData());for(i in s)-1!==i.indexOf("-")&&i!==s[i][z]&&delete s[i];layui.each(n.treeToFlat(t),function(e,t){t[b]&&t[b]!==t[z]&&c.find('tr[lay-data-index="'+t[b]+'"]').attr({"data-index":t[z],"lay-data-index":t[z]}).data("index",t[z])}),layui.each(s,function(e,t){c.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),l.hasNumberCol&&v(n),f&&(d=c.find('tr[lay-data-index="'+f[z]+'"]'),a||(f[r]=!(!f[o]||!f[o].length)),n.updateNodeIcon({scopeEl:d,isExpand:f[H],isParent:f[r]})),B.resize(e)}},B.addNodes=function(e,t){var a=j(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=P.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=A.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[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=P.cache[e].splice(-1===o?P.cache[e].length:o);if(P.cache[e]=P.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(P.cache[e]))):n.data=P.cache[e]),a.initData(),l.find(".layui-none").length)return P.renderData(e),c;var x,f=P.getTrHtml(e,c),h={trs:A(f.trs.join("")),trs_fixed:A(f.trs_fixed.join("")),trs_fixed_r:A(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[z],"lay-data-index":t[z],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[z]),h.trs_fixed.eq(e).attr(x).data("index",t[z]),h.trs_fixed_r.eq(e).attr(x).data("index",t[z])}),parseInt(c[0][z])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(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)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(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][b],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(P.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[z]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[H],isParent:u[s]})),B.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][z]+'"]').get(0).scrollIntoViewIfNeeded(),c}},B.checkStatus=function(e,n){var i,t,a,l=j(e);if(l)return l=l.getOptions().tree,i=P.config.checkName,t=B.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[g]}),a=!0,layui.each("all"===l.data.cascade?P.cache[e]:B.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},B.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(m)&&B.sort(e)}),B.on("row",function(e){e.config.elem.next().hasClass(m)&&o(e)}),B.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),(t.tree||{}).view.dblClickExpand)&&J({trElem:e.tr.first()},null,null,null,!0)}),B.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),B.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),B.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),B.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(m)&&(a=j(t),o(e),u.call(a,e.tr,e.checked))}),a.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=A(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.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=P.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[z]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),h.render(a.prop({checked:n,indeterminate:t[g]}))})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?P.cache[n]:B.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[g])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,h.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=P.config.checkName,t=t.customName.children,d=[];return!(a[g]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[g]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[g])return a[g]=!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[g]=!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=f.escape(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 o=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=o.extend({},n.config,e),n},on:function(e,n){return layui.onevent.call(this,r,e,n)}}),r="carousel",s="layui-this",u="layui-carousel-left",c="layui-carousel-right",m="layui-carousel-prev",h="layui-carousel-next",a="layui-carousel-arrow",d="layui-carousel-ind",n=function(e){var n=this;n.config=o.extend({},n.config,t.config,e),n.render()};n.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},n.prototype.render=function(){var e=this,n=e.config,i=o(n.elem);if(1*[carousel-item]>*"),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(s),e.indicator(),e.arrow(),e.autoplay(),1=this.elemItem.length?0:e},n.prototype.addIndex=function(e){var n=this.config;n.index=n.index+(e=e||1),n.index>=this.elemItem.length&&(n.index=0)},n.prototype.subIndex=function(e){var n=this.config;n.index=n.index-(e=e||1),n.index<0&&(n.index=this.elemItem.length-1)},n.prototype.autoplay=function(){var e=this,n=e.config,i=e.elemItem.length;n.autoplay&&(clearInterval(e.timer),1',''].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+a)[0]&&e.elem.find("."+a).remove(),1i.index?n.slide("add",e-i.index):e
                  ',(n=[],layui.each(e.elemItem,function(e){n.push("")}),n.join("")),"
                "].join(""));i.elem.attr("lay-indicator",i.indicator),i.elem.find("."+d)[0]&&i.elem.find("."+d).remove(),1t[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(o){"use strict";var w=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,t,a,f,s,u,p,d,y,g=this,h=0,v=w((o=o||{}).elem);if(v[0])return c=w(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,t=o.moreText||"\u52a0\u8f7d\u66f4\u591a",a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),g._cleanup(v,c),s=o.scrollElem&&o.scrollElem!==document,p=w('"),v.find(".layui-flow-more")[0]||v[f?"prepend":"append"](p),d=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=w(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1'),"function"==typeof o.done&&o.done(++h,d)})(),p.find("a").on("click.flow",function(){w(this);n||i||y()}),o.isLazyimg&&(r=g.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=w(this),t=e.scrollTop();l&&clearTimeout(l),!n&&v.width()&&(l=setTimeout(function(){var o=(s?e:w(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&y()},100))}),g},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=w((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:w(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=w(s),o)p(o,e);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)),a="function"==typeof l.onCopy;lay.clipboard.writeText({text:t,done:function(){if(a&&!1===l.onCopy(t,!0))return;N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){if(a&&!1===l.onCopy(t,!1))return;N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}})}}},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 acaf7746..8166f1e6 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","tagName","toUpperCase","src","js","getElementsByTagName","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","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","getAttribute","_","c","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","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","hasOwnProperty","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","top","offsetX","offsetY","rect1","clickType","rect","left","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","offset","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_","addEvent","eventsCacheName","listener","include","_rawFn","removeEvent","newEvents","detachEvent","onClickOutside","handler","eventType","scopeTarget","scope","ignore","useCapture","capture","el","eventTarget","eventPath","composedPath","undefined","concat","getParents","memo","parentNode","shouldIgnore","targetElements","j","targetEl","hasOwn","prop","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","thisKey","thisValue","width","height","removeAttr","html","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","markerOfChineseFestivals","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","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","formatToDisplay","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","divContent","thead","theadTr","tr","insertRow","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","markRender","tdElem","YMD","markers","markText","keys","td","holidaysRender","insertHtml","idx","dayStr","ymdStr2","ymd1","ymd2","ymdStr1","cellRender","dateObj","panelMode","originElem","startOfYear","setFullYear","setHours","endOfYear","startOfMonth","setDate","endOfMonth","addDays","amount","isDisabledYearOrMonth","startDay","endDay","numOfDays","disabledCount","disabledDate","isDisabledDate","rangeType","disabledType","normalizedDate","isDisabledTime","isDisabledItem","disabledTime","compareVal","rangeFn","rangeFnParam","isDisabledDateTime","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","getDay","index_","st","panelYM","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","showHour","liElem","hideCount","scroll","haveSpan","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","showMinute","showSecond","isShow","isYearOrMonth","isChangeMonth","ym","closeList","choose","span","scrollTop","olElem","overflowY","touchAction","tips","elemBtn","displayValueCallback","props","getOwnPropertyDescriptor","HTMLInputElement","displayValue","elemPreview","color","thisTime","param","checkPanelDate","panelMonth","startPanel","firstRenderIndex","needFullRender","panelIndex","isChange","dateTimeTemp","renderMode","checkState","panelIdx","active","addSubYear","isYear","isMonth","prevYear","prevMonth","YM","nextMonth","nextYear","header","layYM","layType","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","getInst","one","amd","global","module","w","Error","noGlobal","deletedIds","class2type","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","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","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","adjustCSS","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","scripts","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","onlyHandlers","ontype","bubbleType","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","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","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","beforeEnd","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","SHADE_KEY","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","RECORD_HEIGHT_KEY","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","setAnim","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","transition","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","btnLoading","btnElem","isLoading","openLayer","IE6","btnCallback","btnAsync","loading","promiseLikeResolve","reason","shadeClose","full","reselect","sthis","setTop","record","contentElem","contentRecordHeightElem","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","contentRecordHeight","isfix","executor","closeAnim","WRAP","domsElem","closeLast","layerIndexMax","layerIndexList","isArrayType","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","attrSelector","DATANAME","dataCache","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX_OPENED","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","closeOnClick","rerender","mainElem","eachItemView","elemUl","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","mainElemExisted","findMainElem","delayRemove","isClickAllScope","clickScope","elemGroup","spread","normalizedDelay","isMouseEnter","thisEventElem","opened","isAccordion","needSpread","groupSibs","isCtxMenu","isTriggerTarget","isPanelTarget","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","tipsAlways","precision","precisions","decimalArr","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","toFixed","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","needTrigger","needStopPropagation","triggerEvent","oldtop","oldy","maxh","maxw","simulatedEvent","pointer","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","sidetop","basisElem","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","contElem","tabChange","tabAuto","tabDelete","layid","force","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","hasId","liThis","MORE","BAR","CLOSE","STOPE","allowclose","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","hasBarElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","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","forceConvert","convert","thisFile","pushFile","resetFile","filename","newFile","File","getChooseFiles","typeName","images","video","audio","setChooseFile","setChooseText","checkFile","extendInfo","extInfo","ext","sizes","parseSize","FileList","dataTransfer","formatSize","log","needCheckboxFallback","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","TIPS","NONE","CREATE_OPTION","PANEL_ELEM_DATA","selects","reElem","titleElem","isSearch","isCreatable","isAppendTo","removeClickOutsideEvent","laySearch","appendTarget","appendPosition","needPlaceholderPatch","showDown","hideDown","followScroll","notOption","dl","dts","initValue","caseSensitive","updatePosition","dlHeight","dds","__ieph","none","posTop","thisDd","ddHeight","setThisDd","prevNext","lastIndex","allDisplayedElem","nextIndex","origin","fuzzyMatchRE","hasEquals","fuzzy","keyword","wordMap","regexPattern","wordArr","isCreateOption","thisDds","firstOptionELem","hasTips","createOptionElem","ddElem","optionElem","optionsFirst","contentWrapElem","triggerElem","panelWrapElem","switch","SUBTRA","checks","RE_CLASS","titleTplAttrs","titleTplElem","toggleAttribute","indeterminate","isSwitch","isPrimary","syncAppearanceOnPropChanged","ICON","radios","ANIM","sameRadios","radioEl","renderItem","itemType","originProps","newValue","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","forceOn","forceOff","$dom","checkName","indexName","initIndexName","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","DISABLED_TRANSITION","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","customHeightFunc","lay-filter","renderStyle","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","getContentWidth","parentElem","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","iconElem","leftDefaultTemp","elemToolTemp","defaultConfig","toolbarHtml","layEvent","onClick","lis","openPanel","eachCols","fieldTitle","setParentCol","panel","exportFile","print","printWin","thElem","edg","onafterprint","itemIsName","thisItem","pagebarHtml","layPagebar","pagebar","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","lastSpreadCol","colNums","autoColNums","autoWidth","countWidth","cntrWidth","borderWidth","headerTableElem","mainTableElem","isEmptyTable","getAutoWidth","getScrollWidth","back","pixelsForLastCol","i3","newWidth","isConnected","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","tdContent","TOTAL_ROW","patchElem","getColElem","renderFormByElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","makeMap","thisData","existChecked","getChecked","radioCheckedIndex","fixRElem","isCheckAll","isCheckMult","isCheckAllOrMult","dataIndex","checkedSameElem","checkedElem","_field","elemSort","fromEvent","selectorText","headerMain","thIndex","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","updateRow","ELEM_CELL","row","cell","_BODY","commonMember","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","rAF","requestAnimationFrame","cb","getElementSize","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginBottom","errorTips","tdIndex","attrData","tableData","trElem","itemData","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","invalidNum","getData","textType","csv","xls","alink","dataTitle","dataMain","fieldsIsHide","isTreeTable","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","HTML_TAG_RE","ICON_PROPS","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","scrollTopCache","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","renderType","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","iconProp","normalizedIcon","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","iconStr","pIdKey","idTemp","pidTemp","rootNodes","tableId","flatArr","tempObj","treeToFlat","parentId","parentIndex","flat","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","updateNodeIcon","scopeEl","isExpand","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","nodeIconElem","nodeIcon","level","treeOptionsView","existsData","dataExpand","layDataIndex","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","rowIndex","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","_keepParent","delNode","nodeP","delNodesFlat","updateCheckStatus","delNodeDataIndex","i4","item4","trEl","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","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","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","nums","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","addIndex","subIndex","itemsCount","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","isAuto","moreText","isTop","notDocument","more","mb","_cleanup","over","scrollHeightStart","scrollTopStart","scrollHeightEnd","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","hasOnCopy","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemView","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.22'; // Layui 版本号\n };\n\n // 识别预先可能定义的指定全局对象\n var GLOBAL = win.LAYUI_GLOBAL || {};\n\n // 获取 layui 所在目录\n var getPath = function(){\n var jsPath = (doc.currentScript && doc.currentScript.tagName.toUpperCase() === 'SCRIPT') ? doc.currentScript.src : function(){\n var js = doc.getElementsByTagName('script');\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 // currentStyle.getAttribute 参数为 camelCase 形式的字符串\n Layui.prototype.getStyle = function(node, name){\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\n return style.getPropertyValue\n ? style.getPropertyValue(name)\n : style.getAttribute(name.replace(/-(\\w)/g, function(_, c){ return c ? c.toUpperCase() : '';}));\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});","\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 * @param {[offsetX:number, offsetY:number]} [opts.offset] - 相对于触发元素的额外偏移量[x,y]\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 var offsetX = opts.offset ? opts.offset[0] : 0;\r\n var offsetY = opts.offset ? opts.offset[1] : 0;\r\n\r\n // 设置坐标\r\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + offsetX + 'px';\r\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + offsetY + '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 /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | AddEventListenerOptions) => any}*/\r\n lay.addEvent = function(){\r\n if(document.addEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.addEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var listener = function(e){\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }\r\n listener._rawFn = fn;\r\n if(!elem[eventsCacheName]){\r\n elem[eventsCacheName] = [];\r\n }\r\n var include = false;\r\n lay.each(elem[eventsCacheName], function(_, listener){\r\n if(listener._rawFn === fn){\r\n include = true;\r\n return true;\r\n }\r\n })\r\n if(!include){\r\n elem[eventsCacheName].push(listener);\r\n elem.attachEvent('on' + eventName, listener);\r\n }\r\n }\r\n }\r\n }();\r\n\r\n /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | EventListenerOptions) => any}*/\r\n lay.removeEvent = function(){\r\n if(document.removeEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.removeEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var events = elem[eventsCacheName];\r\n if(layui.isArray(events)){\r\n var newEvents = [];\r\n lay.each(events, function(_, listener){\r\n if(listener._rawFn === fn){\r\n elem.detachEvent('on'+ eventName, listener);\r\n }else{\r\n newEvents.push(listener);\r\n }\r\n })\r\n elem[eventsCacheName] = newEvents;\r\n } \r\n } \r\n }\r\n }();\r\n\r\n /**\r\n * 监听指定元素外部的点击\r\n * @param {HTMLElement} target - 被监听的元素\r\n * @param {(e: Event) => void} handler - 事件触发时执行的函数\r\n * @param {object} [options] - 选项\r\n * @param {string} [options.event=\"pointerdown\"] - 监听的事件类型\r\n * @param {HTMLElement | Window} [options.scope=document] - 监听范围\r\n * @param {Array} [options.ignore] - 忽略监听的元素或选择器字符串\r\n * @param {boolean} [options.capture=true] - 对内部事件侦听器使用捕获阶段\r\n * @returns {() => void} - 返回一个停止事件监听的函数\r\n */\r\n lay.onClickOutside = function(target, handler, options){\r\n options = options || {};\r\n var eventType = options.event || ('onpointerdown' in window ? 'pointerdown' : 'mousedown');\r\n var scopeTarget = options.scope || document;\r\n var ignore = options.ignore || [];\r\n var useCapture = 'capture' in options ? options.capture : true;\r\n\r\n var listener = function(event){\r\n var el = target;\r\n var eventTarget = event.target || event.srcElement;\r\n var eventPath = getEventPath(event);\r\n\r\n if (!el || el === eventTarget || eventPath.indexOf(el) !== -1){\r\n return;\r\n }\r\n if(shouldIgnore(event, eventPath)){\r\n return;\r\n }\r\n\r\n handler(event);\r\n };\r\n\r\n function shouldIgnore(event, eventPath){\r\n var eventTarget = event.target || event.srcElement;\r\n for(var i = 0; i < ignore.length; i++){\r\n var target = ignore[i];\r\n if(typeof target === 'string'){\r\n var targetElements = document.querySelectorAll(target);\r\n for(var j = 0; j < targetElements.length; j++){\r\n var targetEl = targetElements[i];\r\n if(targetEl === eventTarget || eventPath.indexOf(targetEl) !== -1){\r\n return true;\r\n }\r\n }\r\n }else{\r\n if(target && (target === eventTarget || eventPath.indexOf(target) !== -1)){\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getEventPath(event){\r\n var path = (event.composedPath && event.composedPath()) || event.path;\r\n var eventTarget = event.target || event.srcElement;\r\n\r\n if (path !== null && path !== undefined){\r\n return path;\r\n }\r\n\r\n function getParents(node, memo){\r\n memo = memo || [];\r\n var parentNode = node.parentNode;\r\n\r\n return parentNode\r\n ? getParents(parentNode, memo.concat([parentNode]))\r\n : memo;\r\n }\r\n\r\n return [eventTarget].concat(getParents(eventTarget));\r\n }\r\n\r\n function bindEventListener(elem, eventName, handler, opts){\r\n elem.addEventListener\r\n ? elem.addEventListener(eventName, handler, opts)\r\n : elem.attachEvent('on' + eventName, handler);\r\n\r\n return function(){\r\n elem.removeEventListener\r\n ? elem.removeEventListener(eventName, handler, opts)\r\n : elem.detachEvent('on' + eventName, handler);\r\n }\r\n }\r\n\r\n return bindEventListener(\r\n scopeTarget, \r\n eventType, \r\n listener, \r\n lay.passiveSupported ? { passive: true, capture: useCapture } : useCapture\r\n );\r\n }\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n lay.hasOwn = function(obj, prop){\r\n return hasOwnProperty.call(obj, prop);\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, options){\r\n return this.each(function(index, item){\r\n lay.addEvent(item, eventName, fn, options)\r\n });\r\n };\r\n\r\n // 解除事件\r\n Class.fn.off = function(eventName, fn, options){\r\n return this.each(function(index, item){\r\n lay.removeEvent(item, eventName, fn, options)\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// @ts-expect-error\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define;\r\n var ready = {\r\n getPath: window.lay && lay.getPath ? lay.getPath : '',\r\n\r\n // 载入 CSS 依赖\r\n link: function (href, fn, cssname) {\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 = 'lay-' + MOD_NAME + '-id'; // 已渲染过的索引标记名\r\n\r\n // 外部调用\r\n var laydate = {\r\n v: '5.6.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 Class.prototype.markerOfChineseFestivals = {\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 }\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 //获取限制内日期\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 // 重定义 input 元素的 get set\r\n if(typeof options.formatToDisplay === 'function'){\r\n if(that.isInput(options.elem[0])){\r\n that.formatToDisplay(options.elem[0], options.formatToDisplay);\r\n } else {\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n that.formatToDisplay(rangeElem[0][0], options.formatToDisplay);\r\n that.formatToDisplay(rangeElem[1][0], options.formatToDisplay);\r\n }\r\n }\r\n }\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 });\r\n elem.appendChild(lay.elem('span'));\r\n elem.appendChild(lay.elem('span'));\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 * 渲染备注\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {object | string} markers 备注信息\r\n */\r\n Class.prototype.markRender = function(tdElem, YMD, markers){\r\n var markText;\r\n\r\n if(typeof markers === 'object'){\r\n lay.each(markers || {}, 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 markText = title || YMD[2];\r\n }\r\n });\r\n }else if(typeof markers === 'string'){\r\n markText = markers || YMD[2];\r\n }\r\n\r\n markText && tdElem.find('div').html(''+ markText +'');\r\n }\r\n\r\n /**\r\n * 公历重要日期与自定义备注\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.markRender(td, YMD, markers);\r\n }\r\n\r\n if(options.calendar && options.lang === 'cn'){\r\n render(that.markerOfChineseFestivals);\r\n } \r\n\r\n if(typeof options.mark === 'function'){\r\n options.mark({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(typeof options.mark === 'object'){\r\n render(options.mark);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 渲染法定节假日或补假上班标记\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {[Array, Array] | string} markers 标记信息\r\n */\r\n Class.prototype.holidaysRender = function(tdElem, YMD, markers){\r\n var type = ['holidays', 'workdays'];\r\n\r\n var isEquals = function(ymdStr1, ymdStr2){\r\n var ymd1 = ymdStr1.split('-');\r\n var ymd2 = ymdStr2.split('-');\r\n\r\n lay.each(ymd1, function(i,v){\r\n ymd1[i] = parseInt(v, 10);\r\n })\r\n lay.each(ymd2, function(i,v){\r\n ymd2[i] = parseInt(v, 10);\r\n })\r\n \r\n return ymd1.join('-') === ymd2.join('-');\r\n }\r\n\r\n var insertHtml = function(el, type, text){\r\n el.find('div').html([\r\n '',\r\n text,\r\n ''\r\n ].join(''));\r\n }\r\n \r\n if(layui.type(markers) === 'array'){\r\n lay.each(markers, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(isEquals(dayStr, tdElem.attr('lay-ymd'))){\r\n insertHtml(tdElem, type[idx], YMD[2])\r\n }\r\n });\r\n });\r\n }else if(typeof markers === 'string'){\r\n if(type.indexOf(markers) !== -1){\r\n insertHtml(tdElem, markers, YMD[2])\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 标注法定节假日或补假上班\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.holidaysRender(td, YMD, markers);\r\n }\r\n\r\n if(typeof options.holidays === 'function'){\r\n options.holidays({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(layui.type(options.holidays) === 'array'){\r\n render(options.holidays);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 自定义单元格\r\n * @param {HTMLElement|Array} el - 单元格元素\r\n * @param {{year:number, month:number, date:number}} dateObj - 当前单元格对应的日期信息\r\n * @param {'year' | 'month' | 'date'} panelMode - 面板模式\r\n * @returns \r\n */\r\n Class.prototype.cellRender = function(el, dateObj, panelMode){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(typeof options.cellRender === 'function'){\r\n var render = function(content){\r\n if(typeof content === 'string'){\r\n lay(el).html(content);\r\n }else if(typeof content === 'object'){\r\n lay(el).html('').append(lay(content)[0]);\r\n }\r\n }\r\n options.cellRender(dateObj, render, {originElem: el, type: panelMode})\r\n }\r\n\r\n return that;\r\n }\r\n\r\n /**\r\n * 给定年份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfYear = function(date){\r\n var newDate = new Date(date);\r\n newDate.setFullYear(newDate.getFullYear(), 0, 1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定年份的结束日期\r\n * @param {Date} date\r\n */\r\n Class.prototype.endOfYear = function(date){\r\n var newDate = new Date(date);\r\n var year = newDate.getFullYear();\r\n newDate.setFullYear(year + 1, 0, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfMonth = function(date){\r\n var newDate = new Date(date);\r\n newDate.setDate(1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的结束日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.endOfMonth = function(date){\r\n var newDate = new Date(date);\r\n var month = newDate.getMonth();\r\n newDate.setFullYear(newDate.getFullYear(), month + 1, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 将指定的天数添加到给定日期\r\n * @param {Date} date 要更改的日期\r\n * @param {number} amount 天数\r\n */\r\n Class.prototype.addDays = function(date, amount){\r\n var newDate = new Date(date);\r\n if(!amount) return newDate;\r\n newDate.setDate(newDate.getDate() + amount);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 不可选取的年或月。年或月中的所有日期都禁用时,才判定为不可选取。\r\n * @param {Date} date 要检测的年或月\r\n * @param {'year' | 'month'} type 面板类型\r\n * @param {'start' | 'end'} position 面板位置\r\n */\r\n Class.prototype.isDisabledYearOrMonth = function(date, type, position){\r\n var that = this;\r\n var options = that.config;\r\n var millisecondsInDay = 24 * 60 * 60 * 1000;\r\n\r\n var startDay = type === 'year' ? that.startOfYear(date) : that.startOfMonth(date);\r\n var endDay = type === 'year' ? that.endOfYear(date) : that.endOfMonth(date);\r\n var numOfDays = Math.floor((endDay.getTime() - startDay.getTime()) / millisecondsInDay) + 1;\r\n var disabledCount = 0;\r\n \r\n for(var i = 0; i < numOfDays; i++){\r\n var day = that.addDays(startDay, i);\r\n if(options.disabledDate.call(options, day, position)){\r\n disabledCount++;\r\n }\r\n }\r\n\r\n return disabledCount === numOfDays;\r\n }\r\n\r\n /**\r\n * @typedef limitOptions\r\n * @prop {JQuery} [elem] - 检测的元素, 例如面板中年月日时分秒元素,“现在”,“确认” 按钮等\r\n * @prop {number} [index] - 元素集合中,当前检测元素的索引,years:0,month:0,date:0-41,hms:0\r\n * @prop {['hours', 'minutes', 'seconds'] | ['hours', 'minutes'] | ['hours']} [time] - 是否比较时分秒\r\n * @prop {'year'|'month'|string} [type] - 面板类型?\r\n * @prop {0 | 1} [rangeType] - 面板索引, 0 表示 start, 1 表示 end\r\n * @prop {Partial<{year:number,month: number,date:number,hours:number,minutes:number,seconds:number}>} [date] - 检测的日期时间对象\r\n * @prop {'date' | 'time' | 'datetime'} disabledType - 禁用类型,按钮应使用 datetime\r\n */\r\n /**\r\n * 不可选取的日期\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledDate = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledDate) return false;\r\n if(options.type === 'time') return false;\r\n if(!(opts.disabledType === 'date' || opts.disabledType === 'datetime')) return false;\r\n\r\n // 不需要时分秒\r\n var normalizedDate = new Date(date);\r\n normalizedDate.setHours(0, 0, 0, 0);\r\n \r\n return opts.type === 'year' || opts.type === 'month'\r\n ? that.isDisabledYearOrMonth(normalizedDate, opts.type, position)\r\n : options.disabledDate.call(options, normalizedDate, position);\r\n }\r\n\r\n /**\r\n * 不可选取的时间\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledTime = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledTime) return false;\r\n if(!(options.type === \"time\" || options.type === \"datetime\")) return false;\r\n if(!(opts.disabledType === 'time' || opts.disabledType === 'datetime')) return false;\r\n\r\n var isDisabledItem = function(compareVal, rangeFn, rangeFnParam){\r\n return function(){\r\n return (typeof rangeFn === 'function' && rangeFn.apply(options, rangeFnParam) || []).indexOf(compareVal) !== -1;\r\n } \r\n }\r\n\r\n var dateObj = that.systemDate(new Date(date));\r\n var disabledTime = options.disabledTime.call(options, that.newDate(dateObj), position) || {};\r\n\r\n // 面板中的时分秒 HTML 元素需要分别检测是否禁用\r\n // 按钮检测任意一项是否禁用即可\r\n return opts.disabledType === 'datetime'\r\n ? isDisabledItem(dateObj.hours, disabledTime.hours)()\r\n || isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours])()\r\n || isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])()\r\n : [isDisabledItem(dateObj.hours, disabledTime.hours),\r\n isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours]),\r\n isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])][opts.time.length - 1]();\r\n }\r\n\r\n /**\r\n * 不可选取的日期时间\r\n * @param {number} timestamp 当前检测的日期的时间戳\r\n * @param {limitOptions} opts \r\n * @returns \r\n */\r\n Class.prototype.isDisabledDateTime = function(timestamp, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n\r\n return that.isDisabledDate(timestamp, opts) || that.isDisabledTime(timestamp, opts);\r\n }\r\n\r\n\r\n /**\r\n * 无效日期范围的标记\r\n * @param {limitOptions} opts \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 || that.isDisabledDateTime(timestamp.now, opts);\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 rangeType: index,\r\n disabledType: 'date' // 日面板,检测当前日期是否禁用\r\n });\r\n that.cellRender(item, {year: YMD[0], month: YMD[1], date: YMD[2]}, 'date');\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 if(!that.panelYM) that.panelYM = {};\r\n that.panelYM[index] = {year: dateTime.year, month: dateTime.month};\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 disabledType: 'datetime' // 按钮,检测日期和时间\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 disabledType: 'datetime' // 按钮,检测日期和时间\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 rangeType: index,\r\n disabledType: 'date' // 年面板,检测当前年份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: yearNum, month: 1, date: 1}, 'year');\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 rangeType: index,\r\n disabledType: 'date' // 月面板,检测当前月份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: listYM[0], month: i + 1, date: 1}, 'month');\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 rangeType: index,\r\n disabledType: 'time', // 时间面板,分别检测时分秒列表是否禁用\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 disabledType: 'datetime' // 确认按钮,检测时分秒列表任意一项是否禁用\r\n });\r\n }\r\n };\r\n\r\n var setTimeListVisibility = function(){\r\n var showHour = options.format.indexOf('H') !== -1;\r\n var showMinute = options.format.indexOf('m') !== -1;\r\n var showSecond = options.format.indexOf('s') !== -1;\r\n var liElem = ul.children;\r\n var hideCount = 0;\r\n\r\n lay.each([showHour, showMinute, showSecond], function(i, isShow){\r\n if(!isShow){\r\n liElem[i].className += ' layui-hide';\r\n hideCount++;\r\n }\r\n })\r\n ul.className += (' laydate-time-list-hide-' + hideCount);\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 setTimeListVisibility();\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 = ['year', 'month'].indexOf(options.type) !== -1;\r\n var isChangeMonth = type === 'year' && ['date', 'datetime'].indexOf(options.type) !== -1;\r\n if (isYearOrMonth || isChangeMonth) {\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') || isChangeMonth) {\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') && 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\r\n ,elemBtn = lay(that.footer).find(ELEM_CONFIRM)\r\n ,timeParams = options.type === 'datetime' || options.type === 'time' ? ['hours', 'minutes', 'seconds'] : undefined;\r\n if(options.range){\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 disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 0\r\n }) || that.limit({\r\n date: end,\r\n disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 1\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 * 格式化输入框显示值\r\n * @param {HTMLInputElement} elem HTML input 元素\r\n * @param {(value: string) => string} displayValueCallback \r\n */\r\n Class.prototype.formatToDisplay = function (elem, displayValueCallback) {\r\n var that = this;\r\n var props = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value');\r\n \r\n Object.defineProperty(\r\n elem,\r\n 'value',\r\n lay.extend({}, props, {\r\n get: function () {\r\n return this.getAttribute('lay-date');\r\n },\r\n set: function (value) {\r\n props.set.call(this, displayValueCallback.call(that, value));\r\n this.setAttribute('lay-date', value);\r\n },\r\n })\r\n );\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 var displayValue = typeof options.formatToDisplay === 'function' ? options.formatToDisplay(value) : value;\r\n lay(elem).html(displayValue);\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 * 判断日期是否存在面板,用于处理日期范围选择的一些边缘情况\r\n * @param {object} datetime 日期时间对象\r\n * @param {number} index - 面板索引\r\n * @returns \r\n */\r\n Class.prototype.checkPanelDate = function(datetime, index){\r\n var that = this;\r\n var options = that.config;\r\n // 年月范围选择不需要处理\r\n if(options.type !== 'date' && options.type !== 'datetime') return;\r\n\r\n var startPanel = index === 0;\r\n var month = datetime.month + 1; // 点击的日期所在月份\r\n var panelMonth = that.panelYM[index].month + 1; // 当前面板头部月份\r\n\r\n // 边缘日期的处理\r\n var firstRenderIndex = that.endState\r\n // 二次点击(一般为结束日期)任意一侧面板时:\r\n // 1. 左侧面板中,点击的月份属于下一个月时,应渲染右侧面板而不是左侧面板;\r\n // 2. 左侧面板中,点击的月份属于上一个月时,应将两个面板都重新渲染(等效点击 prevMonth);\r\n // 3. 右侧面板同理。\r\n ? function() {\r\n return (startPanel && month > panelMonth) || (!startPanel && month < panelMonth)\r\n ? 1 - index\r\n : index;\r\n }()\r\n // 初次点击(一般为开始日期)任意一侧面板时:\r\n // 1. 让该面板自行切换,以保持日期的「选中状态」在该侧;\r\n // 2. 另一侧面板则根据点击的面板进行响应式切换,以保持左右面板始终为连续月份。\r\n : index;\r\n\r\n // 为简化实现,只要点击的月份不等于当前面板顶部显示的月份时,就重新渲染两侧面板\r\n return {\r\n needFullRender: month !== panelMonth,\r\n index: firstRenderIndex\r\n }\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 // 此处为范围选择的日期面板点击选中处理,所以 disabledType 为 date\r\n if (that.endState && !that.limit({date: that.rangeLinked ? that.startDate : that.thisDateTime(1 - index), disabledType:'date'})) {\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 // 处理日期范围选择的一些边缘情况\r\n var checkState = that.checkPanelDate(dateTime, panelIndex);\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n var renderMode = (isChange || (checkState && checkState.needFullRender)) ? 'init' : null;\r\n var panelIdx = checkState ? checkState.index : panelIndex;\r\n that.calendar(dateTimeTemp, panelIdx, renderMode);\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)){\r\n var isTimeout = options.type === 'time'\r\n ? that.startTime && that.endTime && that.newDate(that.startTime) > that.newDate(that.endTime)\r\n : that.startDate && that.endDate && that.newDate(lay.extend({},that.startDate, that.startTime || {})) > that.newDate(lay.extend({},that.endDate, that.endTime || {}));\r\n\r\n return isTimeout \r\n ? that.hint(options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout)\r\n : that.hint(lang.invalidDate);\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 disabledType: 'datetime' // 按钮,检测日期和时间\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 // rangeLinked 模式非实时选择日期,不需要同步 options.dateTime,应根据面板显示日期切换\r\n if(that.rangeLinked){\r\n var panelYM = that.panelYM[0];\r\n var YM = that.getAsYM(panelYM.year, panelYM.month, 'sub');\r\n var dateTimeTemp = lay.extend({}, options.dateTime, that.panelYM[0], {year: YM[0], month: YM[1]});\r\n that.checkDate('limit').calendar(dateTimeTemp, null, 'init');\r\n }else{\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 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 var panelYM = that.panelYM[0];\r\n var YM = that.getAsYM(panelYM.year, panelYM.month);\r\n var dateTimeTemp = lay.extend({}, options.dateTime, that.panelYM[0], {year: YM[0],month: YM[1]});\r\n that.checkDate('limit').calendar(dateTimeTemp, null, 'init');\r\n }else{\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 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 * 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 ,'transition': config.shade[2] || ''\r\n });\r\n that.shadeo.data(SHADE_KEY, config.shade[0] || config.shade);\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 setAnim(that.layero);\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.area[0] === 'auto') && 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] === '' || config.area[1] === 'auto'){\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.btnLoading = function(btnElem, isLoading){\r\n if(isLoading){\r\n var loadingTpl = '';\r\n if(btnElem.find('.layui-layer-btn-loading-icon')[0]) return;\r\n btnElem.addClass('layui-layer-btn-is-loading').attr({disabled: ''}).prepend(loadingTpl);\r\n }else{\r\n btnElem.removeClass('layui-layer-btn-is-loading').removeAttr('disabled').find('.layui-layer-btn-loading-icon').remove();\r\n }\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 btnElem = $(this);\r\n var index = btnElem.index();\r\n if(btnElem.attr('disabled')) return;\r\n\r\n // 若为异步按钮\r\n if(config.btnAsync){\r\n var btnCallback = index === 0 ? (config.yes || config['btn1']) : config['btn'+(index+1)];\r\n that.loading = function(isLoading){\r\n that.btnLoading(btnElem, isLoading);\r\n }\r\n\r\n if(btnCallback){\r\n ready.promiseLikeResolve(btnCallback.call(config, that.index, layero, that))\r\n .then(function(result){\r\n if(result !== false){\r\n layer.close(that.index)\r\n }\r\n }, function(reason){\r\n reason !== undefined && window.console && window.console.error('layer error hint: ' + reason);\r\n });\r\n }else{\r\n layer.close(that.index);\r\n }\r\n } else { // 普通按钮\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 // 取消\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 config.beforeEnd && (ready.beforeEnd[that.index] = $.proxy(config.beforeEnd, config, layero, that.index, that));\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 type = layero.attr('type');\r\n var contentElem = layero.find('.layui-layer-content');\r\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\r\n var area = [\r\n layero[0].style.width || ready.getStyle(layero[0], 'width'),\r\n layero[0].style.height || ready.getStyle(layero[0], '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 contentElem.data(RECORD_HEIGHT_KEY, ready.getStyle(contentRecordHeightElem[0], 'height'));\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// 类似 Promise.resolve\r\nready.promiseLikeResolve = function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\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 contentElem = 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 contentElem.css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n - parseFloat(contentElem.css('padding-top'))\r\n - parseFloat(contentElem.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 contentElem = layero.find('.layui-layer-content');\r\n var area = layero.attr('area').split(',');\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var contentRecordHeight = contentElem.data(RECORD_HEIGHT_KEY);\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 // #1604\r\n if(contentRecordHeight !== undefined){\r\n contentElem.removeData(RECORD_HEIGHT_KEY);\r\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\r\n contentRecordHeightElem.css({height: contentRecordHeight});\r\n }\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 var executor = function(){\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 shadeo = $('#'+ doms.SHADE + index);\r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n shadeo[hideOnClose ? 'hide' : 'remove']();\r\n }else{\r\n shadeo.css({opacity: 0});\r\n setTimeout(function(){\r\n shadeo[hideOnClose ? 'hide' : 'remove']();\r\n }, 350);\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 if(!hideOnClose && typeof ready.beforeEnd[index] === 'function'){\r\n ready.promiseLikeResolve(ready.beforeEnd[index]())\r\n .then(function(result){\r\n if(result !== false){\r\n delete ready.beforeEnd[index];\r\n executor();\r\n }\r\n }, function(reason){\r\n reason !== undefined && window.console && window.console.error('layer error hint: ' + reason);\r\n });\r\n }else{\r\n delete ready.beforeEnd[index];\r\n executor();\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 var layerIndexList = [];\r\n var isArrayType = $.isArray(type);\r\n $(typeof type === 'string' ? '.layui-layer-' + type : '.layui-layer').each(function(i, el){\r\n var layero = $(el);\r\n var shouldSkip = (isArrayType && type.indexOf(layero.attr('type')) === -1) || layero.css('display') === 'none';\r\n if(shouldSkip) return true;\r\n layerIndexList.push(Number(layero.attr('times')));\r\n });\r\n if(layerIndexList.length > 0){\r\n var layerIndexMax = Math.max.apply(null, layerIndexList);\r\n layer.close(layerIndexMax, callback);\r\n }\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, undefined, 'unset'],\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, undefined, 'unset'],\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","/**\n * util 工具组件\n */\n\nlayui.define('jquery', function(exports){\n \"use strict\";\n\n var $ = layui.$;\n var hint = layui.hint();\n\n // 外部接口\n var util = {\n // 固定块\n fixbar: function(options){\n var ELEM = 'layui-fixbar';\n var $doc = $(document);\n\n // 默认可选项\n options = $.extend(true, {\n target: 'body', // fixbar 的插入目标选择器\n bars: [], // bar 信息\n \"default\": true, // 是否显示默认 bar\n margin: 160, // 出现 top bar 的滚动条高度临界值\n duration: 320 // top bar 等动画时长(毫秒)\n }, options);\n\n // 目标元素对象\n var $target = $(options.target);\n\n // 滚动条所在元素对象\n var $scroll = options.scroll\n ? $(options.scroll)\n : $(options.target === 'body' ? $doc : $target)\n\n // 是否提供默认图标\n if(options['default']){\n // 兼容旧版本的一些属性\n if(options.bar1){\n options.bars.push({\n type: 'bar1',\n icon: 'layui-icon-chat'\n });\n }\n if(options.bar2){\n options.bars.push({\n type: 'bar2',\n icon: 'layui-icon-help'\n });\n }\n // 默认 top bar\n options.bars.push({\n type: 'top',\n icon: 'layui-icon-top'\n });\n }\n\n var elem = $('
                  ').addClass(ELEM);\n var elemTopBar;\n\n // 遍历生成 bars 节点\n layui.each(options.bars, function(i, item){\n var elemBar = $('
                • ');\n\n // 设置 bar 相关属性\n elemBar.addClass(item.icon).attr({\n 'lay-type': item.type,\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\n }).html(item.content);\n\n // bar 点击事件\n elemBar.on('click', function(){\n var type = $(this).attr('lay-type');\n if(type === 'top'){\n (\n options.target === 'body'\n ? $('html,body')\n : $scroll\n ).animate({\n scrollTop : 0\n }, options.duration);\n }\n typeof options.click === 'function' && options.click.call(this, type);\n });\n\n // 自定义任意事件\n if(layui.type(options.on) === 'object'){\n layui.each(options.on, function(eventName, callback){\n elemBar.on(eventName, function(){\n var type = $(this).attr('lay-type');\n typeof callback === 'function' && callback.call(this, type);\n });\n })\n }\n\n // 获得 top bar 节点\n if(item.type === 'top'){\n elemBar.addClass('layui-fixbar-top');\n elemTopBar = elemBar;\n }\n\n elem.append(elemBar); // 插入 bar 节点\n });\n\n // 若目标元素已存在 fixbar,则移除旧的节点\n $target.find('.'+ ELEM).remove();\n\n // 向目标元素插入 fixbar 节点\n typeof options.css === 'object' && elem.css(options.css);\n $target.append(elem);\n\n // top bar 的显示隐藏\n if(elemTopBar){\n var lock;\n var setTopBar = (function setTopBar(){\n var top = $scroll.scrollTop();\n if(top >= options.margin){\n lock || (elemTopBar.show(), lock = 1);\n } else {\n lock && (elemTopBar.hide(), lock = 0);\n }\n return setTopBar;\n })();\n }\n\n // 根据 scrollbar 设置 fixbar 相关状态\n var timer;\n $scroll.on('scroll', function(){\n if(!setTopBar) return;\n clearTimeout(timer);\n timer = setTimeout(function(){\n setTopBar();\n }, 100);\n });\n },\n\n // 倒计时\n countdown: function(options){\n var that = this;\n\n // 默认可选项\n options = $.extend(true, {\n date: new Date(),\n now: new Date()\n }, options);\n\n // 兼容旧版参数\n var args = arguments;\n if(args.length > 1){\n options.date = new Date(args[0]);\n options.now = new Date(args[1]);\n options.clock = args[2];\n }\n\n // 实例对象\n var inst = {\n options: options,\n clear: function(){ // 清除计时器\n clearTimeout(inst.timer);\n },\n reload: function(opts){ // 重置倒计时\n this.clear();\n $.extend(true, this.options, {\n now: new Date()\n }, opts);\n count();\n }\n };\n\n typeof options.ready === 'function' && options.ready();\n\n // 计算倒计时\n var count = (function fn(){\n var date = new Date(options.date);\n var now = new Date(options.now);\n var countTime = function(time){\n return time > 0 ? time : 0;\n }(date.getTime() - now.getTime());\n var result = {\n d: Math.floor(countTime/(1000*60*60*24)), // 天\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\n m: Math.floor(countTime/(1000*60)) % 60, // 分\n s: Math.floor(countTime/1000) % 60 // 秒\n };\n var next = function(){\n now.setTime(now.getTime() + 1000);\n options.now = now;\n count();\n };\n\n // 兼容旧版返回值\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\n\n // 计时 - 以秒间隔\n inst.timer = setTimeout(next, 1000);\n typeof options.clock === 'function' && options.clock(result, inst);\n\n // 计时完成\n if(countTime <= 0){\n clearTimeout(inst.timer);\n typeof options.done === 'function' && options.done(result, inst);\n }\n\n return fn;\n })();\n\n return inst;\n },\n\n // 某个时间在当前时间的多久前\n timeAgo: function(time, onlyDate){\n var that = this;\n var arr = [[], []];\n var stamp = new Date().getTime() - new Date(time).getTime();\n\n // 返回具体日期\n if(stamp > 1000*60*60*24*31){\n stamp = new Date(time);\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\n arr[0][1] = that.digit(stamp.getMonth() + 1);\n arr[0][2] = that.digit(stamp.getDate());\n\n // 是否输出时间\n if(!onlyDate){\n arr[1][0] = that.digit(stamp.getHours());\n arr[1][1] = that.digit(stamp.getMinutes());\n arr[1][2] = that.digit(stamp.getSeconds());\n }\n return arr[0].join('-') + ' ' + arr[1].join(':');\n }\n\n // 30 天以内,返回「多久前」\n if(stamp >= 1000*60*60*24){\n return ((stamp/1000/60/60/24)|0) + ' 天前';\n } else if(stamp >= 1000*60*60){\n return ((stamp/1000/60/60)|0) + ' 小时前';\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\n return ((stamp/1000/60)|0) + ' 分钟前';\n } else if(stamp < 0){\n return '未来';\n } else {\n return '刚刚';\n }\n },\n\n // 数字前置补零\n digit: function(num, length){\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|0) : num;\n },\n\n // 转化为日期格式字符\n toDateString: function(time, format, options){\n // 若 null 或空字符,则返回空字符\n if(time === null || time === '') return '';\n\n // 引用自 dayjs\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\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;\n var that = this;\n var date = new Date(function(){\n if(!time) return;\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\n }() || new Date())\n\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\n\n var years = date.getFullYear();\n var month = date.getMonth();\n var days = date.getDate();\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var seconds = date.getSeconds();\n var milliseconds = date.getMilliseconds();\n\n var defaultMeridiem = function(hours, minutes){\n var hm = hours * 100 + minutes;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1100) {\n return '上午';\n } else if (hm < 1300) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n }\n return '晚上';\n };\n\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\n\n var matches = {\n yy: function(){return String(years).slice(-2);},\n yyyy: function(){return that.digit(years, 4);},\n M: function(){return String(month + 1);},\n MM: function(){return that.digit(month + 1);},\n d: function(){return String(days);},\n dd: function(){return that.digit(days);},\n H: function(){return String(hours);},\n HH: function(){return that.digit(hours);},\n h: function(){return String(hours % 12 || 12);},\n hh: function(){return that.digit(hours % 12 || 12);},\n A: function(){return meridiem(hours, minutes);},\n m: function(){return String(minutes);},\n mm: function(){return that.digit(minutes);},\n s: function(){return String(seconds);},\n ss: function(){return that.digit(seconds);},\n SSS: function(){return that.digit(milliseconds, 3);}\n }\n\n format = format || 'yyyy-MM-dd HH:mm:ss';\n\n return format.replace(REGEX_FORMAT, function(match, $1) {\n return $1 || (matches[match] && matches[match]()) || match;\n });\n },\n\n // 转义 html\n escape: function(html){\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\n if(html === undefined || html === null) return '';\n\n html += '';\n if(!exp.test(html)) return html;\n\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\n .replace(//g, '>')\n .replace(/'/g, ''').replace(/\"/g, '"');\n },\n\n // 还原转义的 html\n unescape: function(html){\n if(html === undefined || html === null) html = '';\n html += '';\n\n return html.replace(/\\&/g, '&')\n .replace(/\\</g, '<').replace(/\\>/g, '>')\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\n },\n\n // 打开新窗口\n openWin: function(options){\n var win;\n options = options || {};\n win = options.window || window.open((options.url || ''), options.target, options.specs);\n if(options.url) return;\n win.document.open('text/html', 'replace');\n win.document.write(options.content || '');\n win.document.close();\n },\n\n // 让指定的元素保持在可视区域\n toVisibleArea: function(options){\n options = $.extend({\n margin: 160, // 触发动作的边界值\n duration: 200, // 动画持续毫秒数\n type: 'y' // 触发方向,x 水平、y 垂直\n }, options);\n\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\n\n var scrollElem = options.scrollElem // 滚动元素\n var thisElem = options.thisElem // 目标元素\n var vertical = options.type === 'y' // 是否垂直方向\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\n var obj = {};\n\n // 边界满足条件\n if(thisOffset > size - options.margin || thisOffset < options.margin){\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\n scrollElem.animate(obj, options.duration);\n }\n },\n\n /**\n * 批量事件\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\n * @param {Object.} events - 事件集合\n * @param {Object} [options] - 参数的更多选项\n * @param {(string|HTMLElement|JQuery)} [options.elem=\"body\"] - 触发事件的委托元素\n * @param {string} [options.trigger=\"click\"] - 事件触发的方式\n * @returns {Object} 返回当前 events 参数设置的事件集合\n */\n on: function(attr, events, options) {\n // 若参数一为 object 类型,则为事件集,且省略 attr\n if (typeof attr === 'object') {\n options = events || {};\n events = attr;\n attr = options.attr || 'lay-on'; // 默认属性名\n }\n\n // 更多选项\n options = $.extend({\n elem: 'body',\n trigger: 'click'\n }, typeof options === 'object' ? options : {\n trigger: options // 兼容旧版\n });\n\n var elem = options.elem = $(options.elem);\n var attrSelector = '['+ attr +']';\n var DATANAME = 'UTIL_ON_DATA'; // 缓存在委托元素上的 data-* 属性名\n\n if (!elem[0]) return; // 若委托元素不存在\n\n // 初始化 data 默认值,以委托元素为存储单元\n if (!elem.data(DATANAME)) {\n elem.data(DATANAME, {\n events: {}\n });\n }\n\n // 读取 data 缓存\n var dataCache = elem.data(DATANAME);\n\n // 根据 attr 和 trigger 的组合作为 key\n var key = attr + '_' + options.trigger;\n\n // 根据 key 记录事件集合\n events = dataCache.events[key] = $.extend(true, dataCache.events[key], events);\n\n\n // 清除事件委托,避免重复绑定\n var trigger = options.trigger + '.lay_util_on';\n elem.off(trigger, attrSelector);\n\n // 绑定事件委托\n elem.on(trigger, attrSelector, function(e) {\n var othis = $(this);\n var attrValue = othis.attr(attr);\n typeof events[attrValue] === 'function' && events[attrValue].call(this, othis, e);\n });\n\n return events;\n }\n };\n\n // 兼容旧版\n util.event = util.on;\n\n // 输出接口\n exports('util', util);\n});\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 var MOD_INDEX_OPENED = MOD_INDEX + '_opened';\r\n var MOD_ID = 'lay-' + MOD_NAME + '-id';\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 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 open: function () {\r\n that.render()\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 closeOnClick: true // 面板打开后,再次点击目标元素时是否关闭面板。行为取决于所使用的触发事件类型\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.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.target = $('body'); // 后续考虑开放 target 元素\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 thisModule.that[options.id] = that; // 记录当前实例对象\r\n elem.attr(MOD_ID, options.id); // 目标元素已渲染过的标记\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n // 若传入 hover,则解析为 mouseenter\r\n if (options.trigger === 'hover') {\r\n options.trigger = 'mouseenter';\r\n }\r\n\r\n // 初始即显示或者面板弹出之后执行了刷新数据\r\n if(options.show || (type === 'reloadData' && that.mainElem && options.target.find(that.mainElem.get(0)).length)) that.render(type);\r\n\r\n // 事件\r\n that.events();\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 var customName = options.customName;\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('
                  • 暂无数据
                  • ');\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 '
                      ',\r\n '
                      '\r\n ].join('');\r\n\r\n // 重载或插入面板内容\r\n var content = options.content || getDefaultView();\r\n var mainElemExisted = thisModule.findMainElem(options.id);\r\n if (type === 'reloadData' && mainElemExisted.length) { // 是否仅重载数据\r\n var mainElem = that.mainElem = mainElemExisted;\r\n mainElemExisted.html(content);\r\n } else { // 常规渲染\r\n var mainElem = that.mainElem = $(TPL_MAIN);\r\n mainElem.append(content);\r\n\r\n // 初始化某些属性\r\n mainElem.addClass(options.className);\r\n mainElem.attr('style', options.style);\r\n\r\n // 辞旧迎新\r\n that.remove(dropdown.thisId);\r\n options.target.append(mainElem);\r\n options.elem.data(MOD_INDEX_OPENED, true); // 面板已打开的标记\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                      ') : '';\r\n mainElem.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n mainElem.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 that.position(); // 定位坐标\r\n dropdown.thisId = options.id; // 当前打开的面板 id\r\n\r\n // 阻止全局事件\r\n mainElem.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n mainElem.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, e) \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 mainElem.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(mainElem, options.elem);\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.mainElem[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(id) {\r\n id = id || this.config.id;\r\n var that = thisModule.getThis(id); // 根据 id 查找对应的实例\r\n if (!that) return;\r\n\r\n var options = that.config;\r\n var mainElem = thisModule.findMainElem(id);\r\n\r\n // 若存在已打开的面板元素,则移除\r\n if (mainElem[0]) {\r\n mainElem.prev('.' + STR_ELEM_SHADE).remove(); // 先移除遮罩\r\n mainElem.remove();\r\n options.elem.removeData(MOD_INDEX_OPENED);\r\n delete dropdown.thisId;\r\n typeof options.close === 'function' && options.close(options.elem);\r\n }\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 // 是否鼠标移入时触发\r\n var isMouseEnter = options.trigger === 'mouseenter';\r\n var trigger = options.trigger + '.lay_dropdown_render';\r\n\r\n // 始终先解除上一个触发元素的事件(如重载时改变 elem 的情况)\r\n if (that.thisEventElem) that.thisEventElem.off(trigger);\r\n that.thisEventElem = options.elem;\r\n\r\n // 触发元素事件\r\n options.elem.off(trigger).on(trigger, function(e) {\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n\r\n // 主面板是否已打开\r\n var opened = options.elem.data(MOD_INDEX_OPENED);\r\n\r\n // 若为鼠标移入事件,则延迟触发\r\n if (isMouseEnter) {\r\n if (!opened) {\r\n thisModule.timer = setTimeout(function(){\r\n that.render();\r\n }, that.normalizedDelay().show);\r\n }\r\n } else {\r\n // 若为 click 事件,则根据主面板状态,自动切换打开与关闭\r\n if (options.closeOnClick && opened && options.trigger === 'click') {\r\n that.remove();\r\n } else {\r\n that.render();\r\n }\r\n }\r\n\r\n e.preventDefault();\r\n });\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 if (id === undefined) {\r\n throw new Error('ID argument required');\r\n }\r\n return thisModule.that[id];\r\n };\r\n\r\n // 根据 id 从页面查找组件主面板元素\r\n thisModule.findMainElem = function(id) {\r\n return $('.' + STR_ELEM + '[' + MOD_ID + '=\"' + id + '\"]');\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.mainElem && !that.mainElem[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 lay(_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 var isTopElem = lay.isTopElem(options.elem[0]);\r\n var isCtxMenu = options.trigger === 'contextmenu';\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素是 body document,或者是鼠标右键事件时,忽略绑定元素\r\n var isTriggerTarget = !(isTopElem || isCtxMenu) && (options.elem[0] === e.target || options.elem.find(e.target)[0]);\r\n var isPanelTarget = that.mainElem && (e.target === that.mainElem[0] || that.mainElem.find(e.target)[0]);\r\n if(isTriggerTarget || isPanelTarget) return;\r\n // 处理移动端点击穿透问题\r\n if(e.type === 'touchstart' && options.elem.data(MOD_INDEX_OPENED)){\r\n $(e.target).hasClass(STR_ELEM_SHADE) && e.preventDefault();\r\n }\r\n\r\n // 点击 dropdown 外部时的回调\r\n if(typeof options.onClickOutside === 'function'){\r\n var shouldClose = options.onClickOutside(e);\r\n if(shouldClose === false) return;\r\n }\r\n \r\n that.remove();\r\n }, {passive: false});\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.open = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.render();\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.precision = function(){\r\n var that = this;\r\n var options = that.config;\r\n var precisions = $.map([options.min, options.max, options.step], function(v, i){\r\n var decimalArr = String(v).split('.');\r\n return decimalArr[1] ? decimalArr[1].length : 0;\r\n })\r\n return Math.max.apply(null, precisions);\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 //间隔值不能小于等于 0\r\n if(options.step <= 0) 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 = (options.value[0] - options.min) / (options.max - options.min) * 100;\r\n var scaleSec = (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 = (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) / options.step);\r\n var precision = that.precision();\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 + (options.max - options.min) * offsetValue / 100;\r\n selfValue = Number(parseFloat(selfValue).toFixed(precision));\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)/180*100\r\n ,_s = (choose[0].offsetLeft)/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 // 1. 不触发游标上绑定的事件,以提高性能,使滑动更流畅\r\n // 2. 游标上的事件需要冒泡到颜色拾取区域,用来模拟拖动游标的效果\r\n var needTrigger = true;\r\n var needStopPropagation = true;\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : 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 needStopPropagation && layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('mousedown', 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 needTrigger && slider.trigger('mousedown', e);\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldleft = this.offsetLeft;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : e.clientY;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : 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\r\n ,maxw = basis[0].offsetWidth;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var s = left/260*100\r\n ,b = 100 - top/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 needStopPropagation && 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 + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left + $win.scrollLeft()\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight)top = this.offsetHeight;\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var s = left/260*100\r\n ,b = 100 - top/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 needTrigger && choose.trigger('mousedown', e);\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e, triggerEvent){\r\n var oldleft = this.offsetLeft;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : 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 needStopPropagation && layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('mousedown', 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 needTrigger && alphaslider.trigger('mousedown', e);\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: 'mousedown'},\r\n {elem: alphacolor, eventType: 'mousedown'},\r\n {elem: basis, eventType: 'mousedown'}\r\n ], function(i, obj){\r\n lay.touchSwipe(obj.elem, {\r\n onTouchStart: function(){\r\n needTrigger = false;\r\n needStopPropagation = false;\r\n },\r\n onTouchMove: function(e){\r\n touchHandler(e, obj.eventType)\r\n },\r\n onTouchEnd: function(){\r\n elemMove.remove();\r\n needTrigger = true;\r\n needStopPropagation = true;\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;\r\n var left = s/100*260;\r\n var basisElem = that.elemPicker.find('.' + PICKER_BASIS)[0];\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n basisElem.style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top / basisElem.offsetHeight * 100 + '%',\r\n \"left\": left / basisElem.offsetWidth * 100 + '%' \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, tabElem);\r\n return this;\r\n };\r\n \r\n /**\r\n * 外部 Tab 删除\r\n * @param {string} filter - 标签主容器 lay-filter 值\r\n * @param {string} layid - 标签头 lay-id 值\r\n * @param {boolean} force - 是否强制删除\r\n * @returns {this}\r\n */\r\n Element.prototype.tabDelete = function(filter, layid, force){\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.call(liElem[0], {\r\n liElem: liElem,\r\n force: force\r\n });\r\n return this;\r\n };\r\n \r\n /**\r\n * 外部 Tab 切换\r\n * @param {string} filter - 标签主容器 lay-filter 值\r\n * @param {string} layid - 标签头 lay-id 值\r\n * @param {boolean} force - 是否强制切换\r\n * @returns {this}\r\n */\r\n Element.prototype.tabChange = function(filter, layid, force){\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 force: force\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 = $(options.headerElem).index($(this));\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 var hasId = othis.attr('lay-id');\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 // 若非强制切换,则根据 tabBeforeChange 事件的返回结果决定是否切换\r\n if (!obj.force) {\r\n var liThis = othis.siblings('.' + THIS);\r\n var shouldChange = layui.event.call(this, MOD_NAME, 'tabBeforeChange('+ filter +')', {\r\n elem: parents,\r\n from: {\r\n index: othis.parent().children('li').index(liThis),\r\n id: liThis.attr('lay-id')\r\n },\r\n to: {\r\n index: index,\r\n id: hasId\r\n },\r\n });\r\n if(shouldChange === false) return;\r\n }\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index);\r\n contentElem.addClass(SHOW).siblings().removeClass(SHOW);\r\n }else{\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index,\r\n id: hasId\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(obj){\r\n obj = obj || {};\r\n\r\n var li = obj.liElem || $(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 var hasId = li.attr('lay-id');\r\n\r\n // 若非强制删除,则根据 tabBeforeDelete 事件的返回结果决定是否删除\r\n if (!obj.force) {\r\n var shouldClose = layui.event.call(li[0], MOD_NAME, 'tabBeforeDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index,\r\n id: hasId\r\n });\r\n if(shouldClose === false) return;\r\n }\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 if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index)\r\n contentElem.remove()\r\n }else{\r\n item.eq(index).remove();\r\n }\r\n setTimeout(function(){\r\n call.tabAuto(null, tabElem);\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 id: hasId\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread, elem){\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 var targetElem = elem || $('.layui-tab');\r\n \r\n targetElem.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 var allowclose = othis.attr('lay-allowclose');\r\n if(allowclose && allowclose !== 'false'){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0] && li.attr('lay-allowclose') !== 'false'){\r\n var close = $('');\r\n close.on('click', function(e) {\r\n call.tabDelete.call(this, {\r\n e: e\r\n });\r\n });\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 (typeof filter === 'string' && filter) ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(elem){\r\n var TAB_ELEM = '.layui-tab';\r\n var targetElem = elem || $(TAB_ELEM + elemFilter);\r\n call.tabAuto.call({}, null, targetElem);\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(elem){\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 var targetElem = elem || $(NAV_ELEM + elemFilter);\r\n targetElem.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 var hasBarElem = othis.find('.'+NAV_BAR);\r\n if (hasBarElem[0]) hasBarElem.remove();\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).off('mouseenter.lay_nav').on('mouseenter.lay_nav', function() {\r\n follow.call(this, bar, othis, index);\r\n }).off('mouseleave.lay_nav').on('mouseleave.lay_nav', 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.off('mouseleave.lay_nav').on('mouseleave.lay_nav', 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 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(elem){\r\n var ELEM = '.layui-breadcrumb';\r\n var targetElem = elem || $(ELEM + elemFilter);\r\n\r\n targetElem.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(elem){\r\n var ELEM = 'layui-progress';\r\n var targetElem = elem || $('.' + ELEM + elemFilter);\r\n\r\n targetElem.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(elem){\r\n var ELEM = 'layui-collapse';\r\n var targetElem = elem || $('.' + ELEM + elemFilter);\r\n \r\n targetElem.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 if(type && typeof filter === 'object' && filter instanceof $){\r\n var targetElem = filter;\r\n return items[type](targetElem);\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, e.responseText, e);\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 forceConvert = function(src) {\r\n if(options.force === 'json'){\r\n if(typeof src !== 'object'){\r\n try {\r\n return {\r\n status: \"CONVERTED\",\r\n data: JSON.parse(src)\r\n };\r\n } catch(e){\r\n that.msg(text['data-format-error']);\r\n return {\r\n status: \"FORMAT_ERROR\",\r\n data: {}\r\n };\r\n }\r\n }\r\n }\r\n return { status: \"DO_NOTHING\", data: {} }\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 var convert = forceConvert(res);\r\n\r\n switch(convert.status) {\r\n case \"CONVERTED\":\r\n res = convert.data;\r\n break;\r\n case \"FORMAT_ERROR\":\r\n return;\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, res, xhr){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n\r\n var convert = forceConvert(res);\r\n\r\n switch(convert.status) {\r\n case \"CONVERTED\":\r\n res = convert.data;\r\n break;\r\n case \"FORMAT_ERROR\":\r\n return;\r\n }\r\n\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n }, res, xhr);\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 getChooseFiles: function(){\r\n return that.chooseFiles;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n var ready = function(){\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n ajaxSend();\r\n }\r\n // 上传前的回调 - 如果回调函数明确返回 false 或 Promise.reject,则停止上传\r\n if(typeof options.before === 'function'){\r\n upload.util.promiseLikeResolve(options.before(args))\r\n .then(function(result){\r\n if(result !== false){\r\n ready();\r\n } else {\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n }\r\n }, function(error){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n error !== undefined && layui.hint().error(error);\r\n })\r\n }else{\r\n ready();\r\n }\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|webp') +')$', '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 * 判断文件是否加入排队\r\n * @param {File} file\r\n * @return {boolean}\r\n */\r\n var checkFile = function (file) {\r\n var result = true;\r\n layui.each(that.files, function (index, item) {\r\n result = !(item.name === file.name);\r\n if(!result) return true;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * 扩展文件信息\r\n * @template {File | FileList} T\r\n * @param {T} obj\r\n * @return {T}\r\n */\r\n var extendInfo = function (obj) {\r\n\r\n var extInfo = function (file) {\r\n //文件扩展名\r\n file.ext = file.name.substr(file.name.lastIndexOf('.') + 1).toLowerCase();\r\n // 文件大小\r\n file.sizes = upload.util.parseSize(file.size);\r\n // 可以继续扩展\r\n }\r\n\r\n //FileList对象\r\n if (obj instanceof FileList) {\r\n layui.each(obj, function (index, item) {\r\n extInfo(item);\r\n });\r\n } else {\r\n extInfo(obj);\r\n }\r\n\r\n return obj;\r\n }\r\n \r\n /**\r\n * 检查获取文件\r\n * @param {FileList} files\r\n * @return {Array|FileList}\r\n */\r\n var getFiles = function (files) {\r\n files = files || [];\r\n if (!files.length) return [];\r\n if (!that.files) return extendInfo(files);\r\n var result = [];\r\n layui.each(files, function (index, item) {\r\n if (checkFile(item)) {\r\n result.push(extendInfo(item));\r\n }\r\n });\r\n return result;\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 = getFiles(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 = getFiles(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 * 上传组件辅助方法\r\n */\r\n upload.util = {\r\n /**\r\n * 文件大小处理\r\n * @param {number | string} size -文件大小\r\n * @param {number} [precision] - 数值精度\r\n * @return {string}\r\n */\r\n parseSize: function (size, precision) {\r\n precision = precision || 2;\r\n if (null == size || !size) {\r\n return '0';\r\n }\r\n var unitArr = [\"Bytes\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"];\r\n var index;\r\n var formatSize = typeof size === 'string' ? parseFloat(size) : size;\r\n index = Math.floor(Math.log(formatSize) / Math.log(1024));\r\n size = formatSize / Math.pow(1024, index);\r\n size = size % 1 === 0 ? size : parseFloat(size.toFixed(precision));//保留的小数位数\r\n return size + unitArr[index];\r\n },\r\n /**\r\n * 将给定的值转换为一个 JQueryDeferred 对象\r\n */\r\n promiseLikeResolve:function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\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 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 var needCheckboxFallback = lay.ie && parseFloat(lay.ie) === 8;\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) || value === undefined || value === null) {\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 for(var key in object){\r\n if(!lay.hasOwn(object, key)) continue;\r\n\r\n var type;\r\n var value = object[key];\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]');\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 // select 多选用 jQuery 方式取值,未选中 option 时,\r\n // jQuery v2.2.4 及以下版本返回 null,以上(3.x) 返回 []。\r\n // 统一规范化为 [],参考 https://github.com/jquery/jquery/issues/2562\r\n field[init_name || item.name] = (this.tagName === 'SELECT' && typeof this.getAttribute('multiple') === 'string') \r\n ? othis.val() || []\r\n : this.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 // 赋值\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 // 若 `lay-precision` 为 0, 则表示只保留整数\r\n if (precision === 0) {\r\n value = parseInt(value);\r\n } else if(precision > 0) { // 小数位精度\r\n value = value.toFixed(precision);\r\n }\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 CREATE_OPTION = 'layui-select-create-option';\r\n var PANEL_WRAP = 'layui-select-panel-wrap'\r\n var PANEL_ELEM_DATA = 'layui-select-panel-elem-data';\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 各种事件\r\n var events = function(reElem, titleElem, disabled, isSearch, isCreatable, isAppendTo){\r\n var select = $(this);\r\n var title = titleElem;\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 initValue = '';\r\n var removeClickOutsideEvent;\r\n \r\n if(disabled) return;\r\n\r\n /**\r\n * 搜索项 \r\n * @typedef searchOption\r\n * @prop {boolean} [caseSensitive=false] 是否区分大小写\r\n * @prop {boolean} [fuzzy=false] 是否开启模糊匹配,开启后将会忽略模式出现在字符串中的位置。\r\n */\r\n /** @type {searchOption} */\r\n var laySearch = select.attr('lay-search') === 'cs' ? {caseSensitive:true} : lay.options(select, {attr:'lay-search'});\r\n // 目前只支持 body\r\n var appendTarget = select.attr('lay-append-to') || 'body';\r\n var appendPosition = select.attr('lay-append-position');\r\n\r\n // #1449\r\n // IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件\r\n // 当鼠标按下时,根据 input 元素上的 __ieph 标识忽略 input 事件\r\n var needPlaceholderPatch = !!(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder'));\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n if(isAppendTo){\r\n // 如果追加面板元素后出现滚动条,触发元素宽度可能会有变化,所以先追加面板元素\r\n reElem.appendTo(appendTarget).css({width: title.width() + 'px'});\r\n\r\n var updatePosition = function(){\r\n lay.position(title[0], reElem[0], {\r\n position: appendPosition,\r\n allowBottomOut: true,\r\n offset: [0, 5]\r\n });\r\n }\r\n\r\n updatePosition();\r\n $(window).on('resize.lay_select_resize', updatePosition);\r\n }\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n var dds = dl.children('dd');\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n title.parent().addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\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 if(needPlaceholderPatch){\r\n dl.off('mousedown.lay_select_ieph').on('mousedown.lay_select_ieph', function(){\r\n input[0].__ieph = true;\r\n setTimeout(function(){\r\n input[0].__ieph = false;\r\n }, 60)\r\n });\r\n }\r\n\r\n removeClickOutsideEvent = lay.onClickOutside(\r\n isAppendTo ? reElem[0] : dl[0],\r\n function(){\r\n hideDown();\r\n initValue && input.val(initValue);\r\n },\r\n {ignore: title}\r\n );\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n title.parent().removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n removeClickOutsideEvent && removeClickOutsideEvent();\r\n if(isAppendTo){\r\n reElem.detach();\r\n $(window).off('resize.lay_select_resize');\r\n }\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 title.parent().hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\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){\r\n e.preventDefault();\r\n var allDisplayedElem = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')');\r\n if(!allDisplayedElem.length) return;\r\n var firstIndex = 0;\r\n var lastIndex = allDisplayedElem.length - 1;\r\n var selectedIndex = -1;\r\n\r\n layui.each(allDisplayedElem, function(index, el){\r\n if($(el).hasClass(THIS)){\r\n selectedIndex = index;\r\n return true;\r\n }\r\n })\r\n \r\n var nextIndex = prevNext === 'prev'\r\n ? (selectedIndex - 1 < firstIndex ? lastIndex : selectedIndex - 1)\r\n : (selectedIndex + 1 > lastIndex ? firstIndex : selectedIndex + 1)\r\n\r\n var selectedElem = allDisplayedElem.eq(nextIndex);\r\n selectedElem.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 var dds = dl.children('dd');\r\n var hasEquals = false;\r\n var rawValue = value;\r\n var fuzzyMatchRE;\r\n if(!laySearch.caseSensitive){\r\n value = value.toLowerCase();\r\n }\r\n if(laySearch.fuzzy){\r\n fuzzyMatchRE = fuzzyMatchRegExp(value, laySearch.caseSensitive);\r\n }\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n var isCreateOption = isCreatable && othis.hasClass(CREATE_OPTION);\r\n\r\n // 需要区分大小写\r\n if(isCreatable && !isCreateOption && text === rawValue){\r\n hasEquals = true;\r\n }\r\n\r\n // 是否区分大小写\r\n if(!laySearch.caseSensitive){\r\n text = text.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = laySearch.fuzzy ? !fuzzyMatchRE.test(text) : text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[(isCreatable ? (not && !isCreateOption) : not) ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this);\r\n var thisDds = othis.nextUntil('dt').filter('dd'); // 当前分组下的dd元素\r\n if(isCreatable) thisDds = thisDds.not('.' + CREATE_OPTION);\r\n var 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, hasEquals), 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 if(needPlaceholderPatch && e.target.__ieph){\r\n e.target.__ieph = false;\r\n return false;\r\n }\r\n \r\n notOption(value, function(none, hasEquals){\r\n if(isCreatable){\r\n if(hasEquals){\r\n dl.children('.' + CREATE_OPTION).remove();\r\n }else{\r\n var createOptionElem = dl.children('.' + CREATE_OPTION);\r\n if(createOptionElem[0]){\r\n createOptionElem.attr('lay-value', value).html(util.escape(value));\r\n }else{\r\n // 临时显示在顶部\r\n var ddElem = $('
                      ').addClass(CREATE_OPTION).attr('lay-value', value).html(util.escape(value));\r\n var firstOptionELem = dl.children().eq(0);\r\n var hasTips = firstOptionELem.hasClass('layui-select-tips');\r\n firstOptionELem[hasTips ? 'after' : 'before'](ddElem);\r\n }\r\n }\r\n }else{\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 }\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 isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n input.on('input propertychange', layui.debounce(search, 50)).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \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 dl.on('click', 'dd', 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 // 将新增的 option 元素添加到末尾\r\n if(isCreatable && othis.hasClass(CREATE_OPTION)){\r\n dl.append(othis.removeClass(CREATE_OPTION));\r\n var optionElem = $('
                    '\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 ,'{{# if(typeof d.data.loading === \"string\"){ }}'\r\n ,'{{- d.data.loading}}'\r\n ,'{{# } else{ }}'\r\n ,''\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(function(){\r\n var obj = {\r\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\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 }\r\n obj[MOD_ID] = options.id;\r\n return obj;\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 that.setColsWidth({isInit: true});\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;\r\n var isNone;\r\n parent = parent || options.elem.parent();\r\n\r\n width = that.getContentWidth(parent);\r\n\r\n try {\r\n isNone = parent.css('display') === 'none';\r\n } catch(e){}\r\n var parentElem = parent.parent();\r\n if(parent[0] && parentElem && parentElem[0] && (!width || isNone)) return getWidth(parentElem);\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 var filter = options.elem.attr('lay-filter');\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 defaultConfig = {\r\n filter: {\r\n title: '筛选列',\r\n layEvent: 'LAYTABLE_COLS',\r\n icon: 'layui-icon-cols',\r\n onClick: function(obj) {\r\n var options = obj.config;\r\n var openPanel = obj.openPanel;\r\n\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 }\r\n },\r\n exports: {\r\n title: '导出',\r\n layEvent: 'LAYTABLE_EXPORT',\r\n icon: 'layui-icon-export',\r\n onClick: function(obj) { // 自带导出\r\n var data = obj.data;\r\n var options = obj.config;\r\n var openPanel = obj.openPanel;\r\n var elem = obj.elem;\r\n\r\n if (!data.length) return layer.tips('当前表格无数据', elem, {tips: 3});\r\n if(device.ie){\r\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', elem, {\r\n tips: 3\r\n });\r\n } else {\r\n openPanel({\r\n list: function(){\r\n return [\r\n '
                  • 导出 CSV 文件
                  • '\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 }\r\n },\r\n print: {\r\n title: '打印',\r\n layEvent: 'LAYTABLE_PRINT',\r\n icon: 'layui-icon-print',\r\n onClick: function(obj) {\r\n var data = obj.data;\r\n var options = obj.config;\r\n var elem = obj.elem;\r\n\r\n if (!data.length) return layer.tips('当前表格无数据', elem, {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 }\r\n }\r\n };\r\n\r\n // 若开启 defaultToolbar\r\n if (typeof options.defaultToolbar === 'object') {\r\n var iconElem = [];\r\n options.defaultToolbar = $.map(options.defaultToolbar, function(item, i) {\r\n var itemIsName = typeof item === 'string';\r\n var thisItem = itemIsName ? defaultConfig[item] : item;\r\n if (thisItem) {\r\n // 根据 name 匹配默认工具并合并\r\n if (thisItem.name && defaultConfig[thisItem.name]) {\r\n thisItem = $.extend({}, defaultConfig[thisItem.name], thisItem);\r\n }\r\n // 初始化默认工具 name\r\n if (!thisItem.name && itemIsName) {\r\n thisItem.name = item;\r\n }\r\n // 图标列表\r\n iconElem.push(\r\n '
                    '\r\n +''\r\n +'
                    '\r\n );\r\n }\r\n return thisItem;\r\n });\r\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\r\n }\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(opt){\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 var borderWidth = parseFloat(layui.getStyle(that.elem[0], 'border-left-width'));\r\n var lastSpreadCol;\r\n var headerTableElem = that.layHeader.first().children('table');\r\n var mainTableElem = that.layMain.find('table');\r\n var isEmptyTable = that.layMain.find('tbody').is(\":empty\");\r\n var isInit = opt && opt.isInit;\r\n\r\n // 统计列个数和最后一个分配宽度的列\r\n that.eachCols(function(i, item){\r\n if(!item.hide){\r\n colNums++;\r\n if(!(item.width || item.type !== 'normal')){\r\n lastSpreadCol = item;\r\n }\r\n }\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 }() * borderWidth - that.getScrollWidth(that.layMain[0]);\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 = (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 var pixelsForLastCol = cntrWidth;\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 || (lastSpreadCol && lastSpreadCol.key === item3.key)) return;\r\n\r\n // 给未分配宽的列平均分配宽\r\n if(item3.width === 0){\r\n that.cssRules(item3.key, function(item){\r\n var newWidth = Math.round(function(){\r\n if(autoWidth < minWidth) return minWidth;\r\n if(autoWidth > maxWidth) return maxWidth;\r\n return autoWidth;\r\n }());\r\n item.style.width = newWidth + 'px';\r\n pixelsForLastCol = pixelsForLastCol - newWidth;\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.round((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 pixelsForLastCol = pixelsForLastCol - width;\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 pixelsForLastCol = pixelsForLastCol - item3.width;\r\n });\r\n }\r\n });\r\n // 最后一列获取剩余的空间,避免舍入导致的布局问题\r\n if(lastSpreadCol){\r\n that.cssRules(lastSpreadCol.key, function(item){\r\n var minWidth = lastSpreadCol.minWidth || options.cellMinWidth;\r\n var maxWidth = lastSpreadCol.maxWidth || options.cellMaxWidth;\r\n var newWidth = Math.max(Math.min(pixelsForLastCol, maxWidth), minWidth);\r\n item.style.width = newWidth + 'px';\r\n\r\n if (!isInit && isEmptyTable){\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n mainTableElem.width(that.getContentWidth(headerTableElem));\r\n }\r\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\r\n // 不同屏幕分辨率、缩放水平以及浏览器渲染差异,可能会触发这个问题 \r\n if(that.layMain.prop('offsetHeight') > that.layMain.prop('clientHeight')){\r\n item.style.width = (parseFloat(item.style.width) - borderWidth) + 'px';\r\n }\r\n });\r\n }\r\n\r\n if (!isInit && isEmptyTable) {\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n mainTableElem.width(that.getContentWidth(headerTableElem));\r\n } else {\r\n mainTableElem.width('auto');\r\n }\r\n\r\n that.setGroupWidth();\r\n\r\n };\r\n\r\n // 重置表格尺寸/结构\r\n Class.prototype.resize = function(){\r\n var that = this;\r\n\r\n var tableElemIsConnected = that.layMain && ('isConnected' in that.layMain[0]\r\n ? that.layMain[0].isConnected \r\n : $.contains(document.body, that.layMain[0]));\r\n\r\n if(!tableElemIsConnected) 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 that.loading(false);\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 that.loading(false);\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(true);\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 // 当前页不能超过总页数\r\n var count = res[response.countName];\r\n var pages = Math.ceil(count / options.limit) || 1;\r\n if(curr > pages){\r\n curr = pages;\r\n }\r\n that.totalRow = res[response.totalRowName];\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: count,\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, opts.type);\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, opts.type);\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 item1[table.config.indexName] = i1;\r\n if(!sort) item1[table.config.initIndexName] = 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\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 // 合计内容\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 // td 显示内容\r\n var tdContent = 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\r\n return content;\r\n }();\r\n\r\n // 合计原始结果\r\n item3.field && that.dataTotal.push({\r\n field: item3.field,\r\n total: $('
                    '+ tdContent +'
                    ').text()\r\n });\r\n\r\n // td 容器\r\n var td = ['',\r\n '
                    ' + tdContent,\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 };\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 var isCheckAllOrMult = isCheckAll || isCheckMult; // 是否全选或多选\r\n\r\n // 全选或多选时\r\n if (isCheckAllOrMult) {\r\n that.layBox.addClass(DISABLED_TRANSITION); // 减少回流\r\n if (opts.type === 'radio') return; // radio 不允许全选或多选\r\n }\r\n\r\n if(isCheckMult){\r\n var makeMap = {}\r\n layui.each(opts.index, function(i,v){\r\n makeMap[v] = true;\r\n })\r\n opts.index = makeMap;\r\n }\r\n\r\n // 匹配行元素\r\n var tbody = that.layBody.children('.layui-table').children('tbody');\r\n var selector = isCheckAllOrMult ? 'tr' : 'tr[data-index=\"'+ opts.index +'\"]';\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[dataIndex];\r\n } : '[data-index=\"'+ opts.index +'\"]');\r\n }(tbody.children(selector));\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 var radioCheckedIndex;\r\n\r\n // 给匹配行设置选中状态\r\n tr.each(function() {\r\n var el = $(this);\r\n var i = el.attr('data-index');\r\n var item = thisData[i];\r\n\r\n if (!i) return; // 此时 el 通常为静态表格嵌套时的原始模板\r\n\r\n // 绕过空项和禁用项\r\n if (layui.type(item) === 'array' || item[options.disabledName]) {\r\n return;\r\n }\r\n\r\n // 标记数据选中状态\r\n var checked = item[options.checkName] = getChecked(el.hasClass(ELEM_CHECKED));\r\n\r\n // 标记当前行背景色\r\n el.toggleClass(ELEM_CHECKED, !!checked);\r\n\r\n // 若为 radio 类型,则取消其他行选中背景色\r\n if (opts.type === 'radio') {\r\n radioCheckedIndex = i;\r\n el.siblings().removeClass(ELEM_CHECKED);\r\n }\r\n });\r\n\r\n // 若为 radio 类型,移除其他行数据选中状态\r\n if (radioCheckedIndex) {\r\n layui.each(thisData, function(i, item) {\r\n if (Number(radioCheckedIndex) !== Number(i)) {\r\n delete item[options.checkName];\r\n }\r\n });\r\n }\r\n\r\n // 若存在复选框或单选框,则标注选中状态样式\r\n var td = tr.children('td').children('.layui-table-cell');\r\n var checkedElem = td.children('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\r\n if(isCheckAllOrMult){\r\n setTimeout(function(){\r\n that.layBox.removeClass(DISABLED_TRANSITION);\r\n },100)\r\n }\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.initIndexName, 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(show){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.loading){\r\n that.layBox.find(ELEM_INIT).toggleClass(HIDE, !show); \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 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);\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\r\n // 弹出工具下拉面板\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 // 头部工具栏右侧图标\r\n layui.each(options.defaultToolbar, function(index, item) {\r\n if (item.layEvent === events) {\r\n typeof item.onClick === 'function' && item.onClick({\r\n data: data,\r\n config: options,\r\n openPanel: openPanel,\r\n elem: othis\r\n });\r\n return true;\r\n }\r\n });\r\n\r\n // table toolbar 事件\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 dict.allowResize = false;\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(MOD_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(MOD_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 }\r\n\r\n layui.stope(e);\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 setRowEvent.call(this, 'row', e);\r\n }).on('dblclick', 'tr', function(e){ // 双击行\r\n setRowEvent.call(this, 'rowDouble', e);\r\n }).on('contextmenu', 'tr', function(e){ // 菜单\r\n if (!options.defaultContextmenu) e.preventDefault();\r\n setRowEvent.call(this, 'rowContextmenu', e);\r\n });\r\n\r\n // 创建行单击、双击、菜单事件\r\n var setRowEvent = function(eventType, e){\r\n var othis = $(this);\r\n if(othis.data('off')) return; // 不触发事件\r\n\r\n // 不触发「行单/双击事件」的子元素\r\n if (eventType !== 'rowContextmenu') {\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\r\n if($(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\r\n return;\r\n }\r\n }\r\n\r\n layui.event.call(\r\n this,\r\n MOD_NAME, eventType + '('+ filter +')',\r\n commonMember.call(othis.children('td')[0], {\r\n e: e\r\n })\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.prop('clientWidth') ||\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 var rAF = window.requestAnimationFrame || function(fn){return setTimeout(fn, 1000 / 60)};\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 = 100;\r\n var rAFStep = 10;\r\n\r\n e.preventDefault();\r\n var cb = function(){\r\n if(step > 0){\r\n step -= rAFStep;\r\n scrollTop += (delta > 0 ? -rAFStep : rAFStep);\r\n that.layMain.scrollTop(scrollTop);\r\n rAF(cb);\r\n }\r\n }\r\n rAF(cb);\r\n });\r\n }\r\n\r\n /**\r\n * 获取元素的大小\r\n * @param {HTMLElement} elem - HTML 元素\r\n */\r\n Class.prototype.getElementSize = function(elem){\r\n if(!window.getComputedStyle) return;\r\n\r\n var style = window.getComputedStyle(elem, null);\r\n return {\r\n height: parseFloat(style.height || '0'),\r\n width: parseFloat(style.width || '0'),\r\n borderTopWidth: parseFloat(style.borderTopWidth || '0'),\r\n borderRightWidth: parseFloat(style.borderRightWidth || '0'),\r\n borderBottomWidth: parseFloat(style.borderBottomWidth || '0'),\r\n borderLeftWidth: parseFloat(style.borderLeftWidth || '0'),\r\n paddingTop: parseFloat(style.paddingTop || '0'),\r\n paddingRight: parseFloat(style.paddingRight || '0'),\r\n paddingBottom: parseFloat(style.paddingBottom || '0'),\r\n paddingLeft: parseFloat(style.paddingLeft || '0'),\r\n marginTop: parseFloat(style.marginTop || '0'),\r\n marginRight: parseFloat(style.marginRight || '0'),\r\n marginBottom: parseFloat(style.marginBottom || '0'),\r\n marginLeft: parseFloat(style.marginLeft || '0'),\r\n boxSizing: style.boxSizing\r\n }\r\n }\r\n\r\n /**\r\n * 获取元素 content 区域宽度值\r\n * \r\n * layui 内置 jQuery v1.12.4 中的 jQuery.fn.width 始终对值四舍五入(3.x 已修复),\r\n * 在支持 subpixel Rendering 的浏览器中渲染表格,由于列宽分配时计算值精度不足,\r\n * 可能会导致一些小问题(#1726)\r\n * \r\n * 这个方法使用 getComputedStyle 获取精确的宽度值进行计算,为了尽可能和以前的行为\r\n * 保持一致(主要是隐藏元素内渲染 table 递归获取父元素宽度 https://github.com/layui/layui/discussions/2398),\r\n * 任何非预期的值,都回退到 jQuery.fn.width。未来的版本使用 ResizeObserver 时,可以直接获取表格视图元素的宽度,\r\n * 并移除兼容性代码\r\n * \r\n * @param {JQuery} elem - 元素的 jQuery 对象\r\n * \r\n * @see {@link https://learn.microsoft.com/zh-cn/archive/blogs/ie_cn/css-3}\r\n */\r\n Class.prototype.getContentWidth = function(elem){\r\n var that = this;\r\n\r\n if(\r\n // document\r\n elem[0].nodeType === 9 ||\r\n // IE 中 border-box 盒模型,getComputedStyle 得到的 width/height 是按照 content-box 计算出来的\r\n (lay.ie && elem.css('box-sizing') === 'border-box') ||\r\n elem.css('display') === 'none'\r\n ){\r\n return elem.width();\r\n }\r\n\r\n var size = that.getElementSize(elem[0]);\r\n\r\n // display: none|inline 元素,getComputedStyle 无法得到准确的 width/height\r\n if(typeof size === 'undefined' || !size.width){\r\n return elem.width();\r\n }else{\r\n return size.boxSizing === 'border-box'\r\n ? size.width - size.paddingLeft - size.paddingRight - size.borderLeftWidth - size.borderRightWidth\r\n : size.width\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 invalidNum = 0;\r\n var arr = [];\r\n var dataCache = [];\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 arr.push(table.clearCacheKey(item));\r\n dataCache.push(item);\r\n }\r\n });\r\n\r\n return {\r\n data: arr, // 选中的数据\r\n dataCache: dataCache, // 选中的原始缓存数据,包含内部特定字段\r\n isAll: (data.length && arr.length) ? (arr.length === (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 var isTreeTable = config.tree && config.tree.view;\r\n if (isTreeTable) {\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 if (isTreeTable) i1 = item1['LAY_DATA_INDEX']; // 兼容 treeTable 索引\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.initIndexName];\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 * 获取当前实例\r\n * @param {string} id 表格id\r\n * @returns {Class}\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 MOD_ID = 'lay-table-id';\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 var HTML_TAG_RE = /<[^>]+?>/;\r\n var ICON_PROPS = ['flexIconClose', 'flexIconOpen', 'iconClose', 'iconOpen', 'iconLeaf', 'icon']\r\n\r\n /**\r\n * 构造器\r\n * @class\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 // treeTable重载数据时,会先加载显示顶层节点,然后根据重载数据前的子节点展开状态,展开相应的子节点,\r\n // 那么如果重载数据前有滚动条滚动在某个位子,重新加载时顶层节点如果比较少,只显示顶层节点时没有滚动条的情况下,\r\n // 自动展开子节点后,滚动条就会显示在顶部,无法保持在重载数据之前的位置。\r\n // 处理保持滚动条的问题,重载数据前记录滚动条的位置\r\n if(reload === 'reloadData' && thatOptionsTemp.scrollPos === 'fixed'){\r\n that.scrollTopCache = that.config.elem.next().find(ELEM_BODY).scrollTop();\r\n }\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 if(options.data !== undefined){\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\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 // undefined: 初始 render 或 reload,两者本质没有区别可以不做区分\r\n // 'reloadData': 重载数据\r\n // 'renderData': 重新渲染数据\r\n var renderType = args[3];\r\n var isRenderData = renderType === '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 // 恢复滚动条位置\r\n if(renderType === 'reloadData' && doneThat.scrollPos === 'fixed'){\r\n tableView.find(ELEM_BODY).scrollTop(that.scrollTopCache);\r\n }\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 if(options && options.tree && options.tree.view){\r\n layui.each(ICON_PROPS, function(i, iconProp){\r\n if(options.tree.view[iconProp] !== undefined){\r\n options.tree.view[iconProp] = that.normalizedIcon(options.tree.view[iconProp]);\r\n }\r\n })\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.normalizedIcon = function(iconStr){\r\n return iconStr\r\n ? HTML_TAG_RE.test(iconStr) ? iconStr : ''\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 // 创建一个空的 map 对象,用于保存所有的节点\r\n var map = {};\r\n var rootNodes = [];\r\n\r\n var idTemp = '';\r\n var pidTemp = '';\r\n layui.each(flatArr, function(index, item){\r\n idTemp = idKey + item[idKey];\r\n pidTemp = idKey + item[pIdKey];\r\n\r\n // 将节点存入 map 对象\r\n if(!map[idTemp]){\r\n map[idTemp] = {};\r\n map[idTemp][childrenKey] = [];\r\n }\r\n\r\n // 合并节点\r\n var tempObj = {};\r\n tempObj[childrenKey] = map[idTemp][childrenKey];\r\n map[idTemp] = $.extend({}, item, tempObj);\r\n\r\n var isRootNode = (rootPid ? map[idTemp][pIdKey] === rootPid : !map[idTemp][pIdKey]);\r\n if(isRootNode){\r\n rootNodes.push(map[idTemp]);\r\n }else{\r\n if(!map[pidTemp]){\r\n map[pidTemp] = {};\r\n map[pidTemp][childrenKey] = [];\r\n }\r\n map[pidTemp][childrenKey].push(map[idTemp]);\r\n }\r\n });\r\n\r\n return rootNodes;\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 var update = function(data, parentIndex){\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 update(item1[childrenKey] || [], dataIndex);\r\n });\r\n }\r\n\r\n update(data, parentIndex);\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(MOD_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 var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n treeTableThat.updateNodeIcon({\r\n scopeEl: trsElem,\r\n isExpand: trExpand,\r\n isParent: trData[isParentKey]\r\n });\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] || trData[LAY_ASYNC_STATUS] === 'error')) {\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 trData[LAY_EXPAND] = false;\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 trData[LAY_EXPAND] = false;\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 }).data('index', childItem[LAY_DATA_INDEX]);\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 }).data('index', childItem[LAY_DATA_INDEX]);\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 }).data('index', childItem[LAY_DATA_INDEX]);\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).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\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 /**\r\n * @typedef updateNodeIconOptions\r\n * @prop {JQuery} scopeEl - tr 元素\r\n * @prop {boolean} isExpand - 是否是展开图标\r\n * @prop {boolean} isParent - 是否是父节点图标\r\n */\r\n /**\r\n * 更新节点图标\r\n * @param {updateNodeIconOptions} opts\r\n */\r\n Class.prototype.updateNodeIcon = function(opts){\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree || {};\r\n var scopeEl = opts.scopeEl;\r\n var isExpand = opts.isExpand;\r\n var isParent = opts.isParent;\r\n\r\n // 处理折叠按钮图标\r\n var flexIconElem = scopeEl.find('.layui-table-tree-flexIcon');\r\n\r\n flexIconElem\r\n .css('visibility', isParent || treeOptions.view.showFlexIconIfNotParent ? 'visible' : 'hidden')\r\n .html(isExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose);\r\n // 处理节点图标\r\n if(treeOptions.view.showIcon){\r\n var nodeIconElem = scopeEl.find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)');\r\n var nodeIcon = isParent \r\n ? (isExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose)\r\n : treeOptions.view.iconLeaf;\r\n\r\n nodeIconElem\r\n .toggleClass('layui-table-tree-iconLeaf', !isParent)\r\n .html(nodeIcon);\r\n }\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 existsData = options.data.length; // 是否直接赋值 data\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 // fix: 修正直接赋值 data 时顶层节点 LAY_DATA_INDEX 值的异常问题\r\n if (existsData) {\r\n dataItem[LAY_DATA_INDEX] = String(dataIndex);\r\n }\r\n var layDataIndex = dataItem[LAY_DATA_INDEX];\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', layDataIndex);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', layDataIndex);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', layDataIndex);\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 (that.normalizedIcon(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[' + MOD_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[' + MOD_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 var treeOptions = options.tree;\r\n\r\n var tableData = treeTable.getData(id);\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n\r\n // 只和同级节点排序\r\n var sort = function(data, field, type){\r\n layui.sort(data, field, type, true);\r\n layui.each(data, function(rowIndex, trData){\r\n sort(trData[childrenKey] || [], field, type);\r\n })\r\n }\r\n\r\n if (options.autoSort) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n sort(tableData, initSort.field, initSort.type === 'desc');\r\n } else {\r\n // 恢复默认\r\n sort(tableData, table.config.indexName, null);\r\n }\r\n // 更新缓存中数据的顺序\r\n table.cache[id] = tableData;\r\n // 重新初始化缓存数据\r\n that.initData(tableData);\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 }).data('index', trIndex));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n // _keepParent 暂时为私有参数,仅供内部使用\r\n treeTable.removeNode = function (id, node, _keepParent) {\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 isParentKey = treeOptions.customName.isParent;\r\n var childrenKey = treeOptions.customName.children;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n var tableCache = table.cache[id];\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, delNode) {\r\n var delNodeDataIndex = delNode[LAY_DATA_INDEX];\r\n indexArr.push('tr[lay-data-index=\"' + delNodeDataIndex + '\"]');\r\n // 删除临时 key\r\n if(delNodeDataIndex.indexOf('-') !== -1){\r\n delete tableCache[delNodeDataIndex]; \r\n }\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n\r\n var deleteCacheKey = function(){\r\n for (var key in tableCache) {\r\n // 根节点 getNodeDataByIndex 内部已处理\r\n if(key.indexOf('-') !== -1){\r\n // L93 updateCache() 中,cacheKey 取自 rowData 中的 LAY_DATA_INDEX,\r\n // 两者不同说明当前 cacheKey 引用的 rowData 已被更新\r\n if(key !== tableCache[key][LAY_DATA_INDEX]){\r\n delete tableCache[key]\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n deleteCacheKey();\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 }).data('index', item3[LAY_DATA_INDEX]);\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(tableCache, function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]')\r\n .attr('data-index', i4)\r\n .data('index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n // 更新父节点状态\r\n if(nodeP){\r\n var trEl = tableView.find('tr[lay-data-index=\"' + nodeP[LAY_DATA_INDEX] + '\"]');\r\n\r\n if(!_keepParent){\r\n nodeP[isParentKey] = !!(nodeP[childrenKey] && nodeP[childrenKey].length);\r\n }\r\n\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: nodeP[LAY_EXPAND],\r\n isParent: nodeP[isParentKey],\r\n }); \r\n }\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).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\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 var hasTr = tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]')[0];\r\n if(hasTr){\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 tableViewElemMAIN.find('tbody').prepend(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').prepend(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').prepend(newNodesHtmlObj.trs_fixed_r);\r\n }\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] + '\"]')\r\n .attr('data-index', i4)\r\n .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 // 更新父节点图标状态\r\n if(parentNode){\r\n var trEl = tableViewElem.find('tr[lay-data-index=\"' + parentNode[LAY_DATA_INDEX] + '\"]');\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: parentNode[LAY_EXPAND],\r\n isParent: parentNode[isParentKey],\r\n }); \r\n }\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\r\n if(data.length > 0){\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 }else{\r\n isAll = false;\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], true);\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 = util.escape(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","/**\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 that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n\r\n if (that.elemItem.length > 1) {\r\n that.events();\r\n }\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 var itemsCount = that.elemItem.length;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n if (itemsCount > 1) {\r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n }\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 var itemsCount = that.elemItem.length;\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 itemsCount > 1 ? options.elem.append(tplArrow) : tplArrow.remove();\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 var itemsCount = that.elemItem.length;\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\r\n itemsCount > 1 ? options.elem.append(tplInd) : tplInd.remove();\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 itemsCount = elemItem.length;\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 || itemsCount <= 1) 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 // 移入移出容器\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 threshold = 'mb' in options ? options.mb : 50; // 临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; // 否自动滚动加载\r\n var moreText = options.moreText || \"加载更多\"; // 手动加载时,加载更多按钮文案\r\n var end = options.end || '没有更多了'; // “末页”显示文案\r\n var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\r\n\r\n // 重复执行时清理旧的事件绑定\r\n that._cleanup(elem, scrollElem);\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '' + moreText + ''\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem[isTop ? 'prepend' : 'append'](more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n var scrollHeightStart = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n var scrollTopStart = scrollElem.scrollTop();\r\n html = $(html);\r\n more[isTop ? 'after' : '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 if(isTop){\r\n var scrollHeightEnd = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n if(page === 1){\r\n // 首次渲染后滑动到底部\r\n scrollElem.scrollTop(scrollHeightEnd);\r\n }else if(page > 1){\r\n var nextElementHeight = scrollHeightEnd - scrollHeightStart;\r\n scrollElem.scrollTop(scrollTopStart + nextElementHeight);\r\n }\r\n }\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.flow', 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 ,direction: options.direction\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll.flow', 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(!isTop ? scrollHeight - top - height <= threshold : top <= threshold){\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 var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\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((isTop ? elemTop + item.height() : 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.lazyimg' , 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 Flow.prototype._cleanup = function(elem, scrollElem){\r\n scrollElem.off('scroll.flow').off('scroll.lazyimg');\r\n elem.find('.layui-flow-more').find('a').off('click.flow');\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 var hasOnCopy = typeof options.onCopy === 'function';\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n if(hasOnCopy){\r\n var ret = options.onCopy(code, true);\r\n if(ret === false) return;\r\n }\r\n\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n if(hasOnCopy){\r\n var ret = options.onCopy(code, false);\r\n if(ret === false) return;\r\n }\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\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","tagName","toUpperCase","src","js","getElementsByTagName","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","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","getAttribute","_","c","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","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","hasOwnProperty","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","top","offsetX","offsetY","rect1","clickType","rect","left","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","offset","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_","addEvent","eventsCacheName","listener","include","_rawFn","removeEvent","newEvents","detachEvent","onClickOutside","handler","eventType","scopeTarget","scope","ignore","useCapture","capture","el","eventTarget","eventPath","composedPath","undefined","concat","getParents","memo","parentNode","shouldIgnore","targetElements","j","targetEl","hasOwn","prop","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","thisKey","thisValue","width","height","removeAttr","html","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","markerOfChineseFestivals","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","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","formatToDisplay","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","divContent","thead","theadTr","tr","insertRow","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","markRender","tdElem","YMD","markers","markText","keys","td","holidaysRender","insertHtml","idx","dayStr","ymdStr2","ymd1","ymd2","ymdStr1","cellRender","dateObj","panelMode","originElem","startOfYear","setFullYear","setHours","endOfYear","startOfMonth","setDate","endOfMonth","addDays","amount","isDisabledYearOrMonth","startDay","endDay","numOfDays","disabledCount","disabledDate","isDisabledDate","rangeType","disabledType","normalizedDate","isDisabledTime","isDisabledItem","disabledTime","compareVal","rangeFn","rangeFnParam","isDisabledDateTime","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","getDay","index_","st","panelYM","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","showHour","liElem","hideCount","scroll","haveSpan","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","showMinute","showSecond","isShow","isYearOrMonth","isChangeMonth","ym","closeList","choose","span","scrollTop","olElem","overflowY","touchAction","tips","elemBtn","displayValueCallback","props","getOwnPropertyDescriptor","HTMLInputElement","displayValue","elemPreview","color","thisTime","param","checkPanelDate","panelMonth","startPanel","firstRenderIndex","needFullRender","panelIndex","isChange","dateTimeTemp","renderMode","checkState","panelIdx","active","addSubYear","isYear","isMonth","prevYear","prevMonth","YM","nextMonth","nextYear","header","layYM","layType","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","getInst","one","amd","global","module","w","Error","noGlobal","deletedIds","class2type","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","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","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","adjustCSS","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","scripts","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","onlyHandlers","ontype","bubbleType","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","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","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","beforeEnd","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","SHADE_KEY","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","RECORD_HEIGHT_KEY","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","setAnim","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","transition","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","btnLoading","btnElem","isLoading","openLayer","IE6","btnCallback","btnAsync","loading","promiseLikeResolve","reason","shadeClose","full","reselect","sthis","setTop","record","contentElem","contentRecordHeightElem","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","contentRecordHeight","isfix","executor","closeAnim","WRAP","domsElem","closeLast","layerIndexMax","layerIndexList","isArrayType","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","attrSelector","DATANAME","dataCache","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX_OPENED","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","closeOnClick","rerender","mainElem","eachItemView","elemUl","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","mainElemExisted","findMainElem","delayRemove","isClickAllScope","clickScope","elemGroup","spread","normalizedDelay","isMouseEnter","thisEventElem","opened","isAccordion","needSpread","groupSibs","isCtxMenu","isTriggerTarget","isPanelTarget","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","tipsAlways","precision","precisions","decimalArr","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","toFixed","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","needTrigger","needStopPropagation","triggerEvent","oldtop","oldy","maxh","maxw","simulatedEvent","pointer","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","sidetop","basisElem","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","contElem","tabChange","tabAuto","tabDelete","layid","force","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","hasId","liThis","MORE","BAR","CLOSE","STOPE","allowclose","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","hasBarElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","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","forceConvert","convert","thisFile","pushFile","resetFile","filename","newFile","File","getChooseFiles","typeName","images","video","audio","setChooseFile","setChooseText","checkFile","extendInfo","extInfo","ext","sizes","parseSize","FileList","dataTransfer","formatSize","log","needCheckboxFallback","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","TIPS","NONE","CREATE_OPTION","PANEL_ELEM_DATA","selects","reElem","titleElem","isSearch","isCreatable","isAppendTo","removeClickOutsideEvent","laySearch","appendTarget","appendPosition","needPlaceholderPatch","showDown","hideDown","followScroll","notOption","dl","dts","initValue","caseSensitive","updatePosition","dlHeight","dds","__ieph","none","posTop","thisDd","ddHeight","setThisDd","prevNext","lastIndex","allDisplayedElem","nextIndex","origin","fuzzyMatchRE","hasEquals","fuzzy","keyword","wordMap","regexPattern","wordArr","isCreateOption","thisDds","firstOptionELem","hasTips","createOptionElem","ddElem","optionElem","optionsFirst","contentWrapElem","triggerElem","panelWrapElem","switch","SUBTRA","checks","RE_CLASS","titleTplAttrs","titleTplElem","toggleAttribute","indeterminate","isSwitch","isPrimary","syncAppearanceOnPropChanged","ICON","radios","ANIM","sameRadios","radioEl","renderItem","itemType","originProps","newValue","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","forceOn","forceOff","$dom","checkName","indexName","initIndexName","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","DISABLED_TRANSITION","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","customHeightFunc","lay-filter","renderStyle","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","getContentWidth","parentElem","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","iconElem","leftDefaultTemp","elemToolTemp","defaultConfig","toolbarHtml","layEvent","onClick","lis","openPanel","eachCols","fieldTitle","setParentCol","panel","exportFile","print","printWin","thElem","edg","onafterprint","itemIsName","thisItem","pagebarHtml","layPagebar","pagebar","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","lastSpreadCol","colNums","autoColNums","autoWidth","countWidth","cntrWidth","borderWidth","headerTableElem","mainTableElem","isEmptyTable","getAutoWidth","getScrollWidth","back","pixelsForLastCol","i3","newWidth","isConnected","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","tdContent","TOTAL_ROW","patchElem","getColElem","renderFormByElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","makeMap","thisData","existChecked","getChecked","radioCheckedIndex","fixRElem","isCheckAll","isCheckMult","isCheckAllOrMult","dataIndex","checkedSameElem","checkedElem","_field","elemSort","fromEvent","selectorText","headerMain","thIndex","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","updateRow","ELEM_CELL","row","cell","_BODY","commonMember","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","rAF","requestAnimationFrame","cb","getElementSize","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginBottom","errorTips","tdIndex","attrData","tableData","trElem","itemData","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","invalidNum","getData","textType","csv","xls","alink","dataTitle","dataMain","fieldsIsHide","isTreeTable","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","HTML_TAG_RE","ICON_PROPS","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","scrollTopCache","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","renderType","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","iconProp","normalizedIcon","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","iconStr","pIdKey","idTemp","pidTemp","rootNodes","tableId","flatArr","tempObj","treeToFlat","parentId","parentIndex","flat","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","updateNodeIcon","scopeEl","isExpand","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","nodeIconElem","nodeIcon","level","treeOptionsView","existsData","dataExpand","layDataIndex","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","rowIndex","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","_keepParent","delNode","nodeP","delNodesFlat","updateCheckStatus","delNodeDataIndex","i4","item4","trEl","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","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","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","nums","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","addIndex","subIndex","itemsCount","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","isAuto","moreText","isTop","notDocument","more","mb","_cleanup","over","scrollHeightStart","scrollTopStart","scrollHeightEnd","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","hasOnCopy","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemView","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.23'; // Layui 版本号\n };\n\n // 识别预先可能定义的指定全局对象\n var GLOBAL = win.LAYUI_GLOBAL || {};\n\n // 获取 layui 所在目录\n var getPath = function(){\n var jsPath = (doc.currentScript && doc.currentScript.tagName.toUpperCase() === 'SCRIPT') ? doc.currentScript.src : function(){\n var js = doc.getElementsByTagName('script');\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 // currentStyle.getAttribute 参数为 camelCase 形式的字符串\n Layui.prototype.getStyle = function(node, name){\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\n return style.getPropertyValue\n ? style.getPropertyValue(name)\n : style.getAttribute(name.replace(/-(\\w)/g, function(_, c){ return c ? c.toUpperCase() : '';}));\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});","\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 * @param {[offsetX:number, offsetY:number]} [opts.offset] - 相对于触发元素的额外偏移量[x,y]\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 var offsetX = opts.offset ? opts.offset[0] : 0;\r\n var offsetY = opts.offset ? opts.offset[1] : 0;\r\n\r\n // 设置坐标\r\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + offsetX + 'px';\r\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + offsetY + '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 /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | AddEventListenerOptions) => any}*/\r\n lay.addEvent = function(){\r\n if(document.addEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.addEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var listener = function(e){\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }\r\n listener._rawFn = fn;\r\n if(!elem[eventsCacheName]){\r\n elem[eventsCacheName] = [];\r\n }\r\n var include = false;\r\n lay.each(elem[eventsCacheName], function(_, listener){\r\n if(listener._rawFn === fn){\r\n include = true;\r\n return true;\r\n }\r\n })\r\n if(!include){\r\n elem[eventsCacheName].push(listener);\r\n elem.attachEvent('on' + eventName, listener);\r\n }\r\n }\r\n }\r\n }();\r\n\r\n /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | EventListenerOptions) => any}*/\r\n lay.removeEvent = function(){\r\n if(document.removeEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.removeEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var events = elem[eventsCacheName];\r\n if(layui.isArray(events)){\r\n var newEvents = [];\r\n lay.each(events, function(_, listener){\r\n if(listener._rawFn === fn){\r\n elem.detachEvent('on'+ eventName, listener);\r\n }else{\r\n newEvents.push(listener);\r\n }\r\n })\r\n elem[eventsCacheName] = newEvents;\r\n } \r\n } \r\n }\r\n }();\r\n\r\n /**\r\n * 监听指定元素外部的点击\r\n * @param {HTMLElement} target - 被监听的元素\r\n * @param {(e: Event) => void} handler - 事件触发时执行的函数\r\n * @param {object} [options] - 选项\r\n * @param {string} [options.event=\"pointerdown\"] - 监听的事件类型\r\n * @param {HTMLElement | Window} [options.scope=document] - 监听范围\r\n * @param {Array} [options.ignore] - 忽略监听的元素或选择器字符串\r\n * @param {boolean} [options.capture=true] - 对内部事件侦听器使用捕获阶段\r\n * @returns {() => void} - 返回一个停止事件监听的函数\r\n */\r\n lay.onClickOutside = function(target, handler, options){\r\n options = options || {};\r\n var eventType = options.event || ('onpointerdown' in window ? 'pointerdown' : 'mousedown');\r\n var scopeTarget = options.scope || document;\r\n var ignore = options.ignore || [];\r\n var useCapture = 'capture' in options ? options.capture : true;\r\n\r\n var listener = function(event){\r\n var el = target;\r\n var eventTarget = event.target || event.srcElement;\r\n var eventPath = getEventPath(event);\r\n\r\n if (!el || el === eventTarget || eventPath.indexOf(el) !== -1){\r\n return;\r\n }\r\n if(shouldIgnore(event, eventPath)){\r\n return;\r\n }\r\n\r\n handler(event);\r\n };\r\n\r\n function shouldIgnore(event, eventPath){\r\n var eventTarget = event.target || event.srcElement;\r\n for(var i = 0; i < ignore.length; i++){\r\n var target = ignore[i];\r\n if(typeof target === 'string'){\r\n var targetElements = document.querySelectorAll(target);\r\n for(var j = 0; j < targetElements.length; j++){\r\n var targetEl = targetElements[i];\r\n if(targetEl === eventTarget || eventPath.indexOf(targetEl) !== -1){\r\n return true;\r\n }\r\n }\r\n }else{\r\n if(target && (target === eventTarget || eventPath.indexOf(target) !== -1)){\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getEventPath(event){\r\n var path = (event.composedPath && event.composedPath()) || event.path;\r\n var eventTarget = event.target || event.srcElement;\r\n\r\n if (path !== null && path !== undefined){\r\n return path;\r\n }\r\n\r\n function getParents(node, memo){\r\n memo = memo || [];\r\n var parentNode = node.parentNode;\r\n\r\n return parentNode\r\n ? getParents(parentNode, memo.concat([parentNode]))\r\n : memo;\r\n }\r\n\r\n return [eventTarget].concat(getParents(eventTarget));\r\n }\r\n\r\n function bindEventListener(elem, eventName, handler, opts){\r\n elem.addEventListener\r\n ? elem.addEventListener(eventName, handler, opts)\r\n : elem.attachEvent('on' + eventName, handler);\r\n\r\n return function(){\r\n elem.removeEventListener\r\n ? elem.removeEventListener(eventName, handler, opts)\r\n : elem.detachEvent('on' + eventName, handler);\r\n }\r\n }\r\n\r\n return bindEventListener(\r\n scopeTarget, \r\n eventType, \r\n listener, \r\n lay.passiveSupported ? { passive: true, capture: useCapture } : useCapture\r\n );\r\n }\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n lay.hasOwn = function(obj, prop){\r\n return hasOwnProperty.call(obj, prop);\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, options){\r\n return this.each(function(index, item){\r\n lay.addEvent(item, eventName, fn, options)\r\n });\r\n };\r\n\r\n // 解除事件\r\n Class.fn.off = function(eventName, fn, options){\r\n return this.each(function(index, item){\r\n lay.removeEvent(item, eventName, fn, options)\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// @ts-expect-error\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define;\r\n var ready = {\r\n getPath: window.lay && lay.getPath ? lay.getPath : '',\r\n\r\n // 载入 CSS 依赖\r\n link: function (href, fn, cssname) {\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 = 'lay-' + MOD_NAME + '-id'; // 已渲染过的索引标记名\r\n\r\n // 外部调用\r\n var laydate = {\r\n v: '5.6.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 Class.prototype.markerOfChineseFestivals = {\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 }\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 //获取限制内日期\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 // 重定义 input 元素的 get set\r\n if(typeof options.formatToDisplay === 'function'){\r\n if(that.isInput(options.elem[0])){\r\n that.formatToDisplay(options.elem[0], options.formatToDisplay);\r\n } else {\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n that.formatToDisplay(rangeElem[0][0], options.formatToDisplay);\r\n that.formatToDisplay(rangeElem[1][0], options.formatToDisplay);\r\n }\r\n }\r\n }\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 });\r\n elem.appendChild(lay.elem('span'));\r\n elem.appendChild(lay.elem('span'));\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 * 渲染备注\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {object | string} markers 备注信息\r\n */\r\n Class.prototype.markRender = function(tdElem, YMD, markers){\r\n var markText;\r\n\r\n if(typeof markers === 'object'){\r\n lay.each(markers || {}, 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 markText = title || YMD[2];\r\n }\r\n });\r\n }else if(typeof markers === 'string'){\r\n markText = markers || YMD[2];\r\n }\r\n\r\n markText && tdElem.find('div').html(''+ markText +'');\r\n }\r\n\r\n /**\r\n * 公历重要日期与自定义备注\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.markRender(td, YMD, markers);\r\n }\r\n\r\n if(options.calendar && options.lang === 'cn'){\r\n render(that.markerOfChineseFestivals);\r\n } \r\n\r\n if(typeof options.mark === 'function'){\r\n options.mark({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(typeof options.mark === 'object'){\r\n render(options.mark);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 渲染法定节假日或补假上班标记\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {[Array, Array] | string} markers 标记信息\r\n */\r\n Class.prototype.holidaysRender = function(tdElem, YMD, markers){\r\n var type = ['holidays', 'workdays'];\r\n\r\n var isEquals = function(ymdStr1, ymdStr2){\r\n var ymd1 = ymdStr1.split('-');\r\n var ymd2 = ymdStr2.split('-');\r\n\r\n lay.each(ymd1, function(i,v){\r\n ymd1[i] = parseInt(v, 10);\r\n })\r\n lay.each(ymd2, function(i,v){\r\n ymd2[i] = parseInt(v, 10);\r\n })\r\n \r\n return ymd1.join('-') === ymd2.join('-');\r\n }\r\n\r\n var insertHtml = function(el, type, text){\r\n el.find('div').html([\r\n '',\r\n text,\r\n ''\r\n ].join(''));\r\n }\r\n \r\n if(layui.type(markers) === 'array'){\r\n lay.each(markers, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(isEquals(dayStr, tdElem.attr('lay-ymd'))){\r\n insertHtml(tdElem, type[idx], YMD[2])\r\n }\r\n });\r\n });\r\n }else if(typeof markers === 'string'){\r\n if(type.indexOf(markers) !== -1){\r\n insertHtml(tdElem, markers, YMD[2])\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 标注法定节假日或补假上班\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.holidaysRender(td, YMD, markers);\r\n }\r\n\r\n if(typeof options.holidays === 'function'){\r\n options.holidays({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(layui.type(options.holidays) === 'array'){\r\n render(options.holidays);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 自定义单元格\r\n * @param {HTMLElement|Array} el - 单元格元素\r\n * @param {{year:number, month:number, date:number}} dateObj - 当前单元格对应的日期信息\r\n * @param {'year' | 'month' | 'date'} panelMode - 面板模式\r\n * @returns \r\n */\r\n Class.prototype.cellRender = function(el, dateObj, panelMode){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(typeof options.cellRender === 'function'){\r\n var render = function(content){\r\n if(typeof content === 'string'){\r\n lay(el).html(content);\r\n }else if(typeof content === 'object'){\r\n lay(el).html('').append(lay(content)[0]);\r\n }\r\n }\r\n options.cellRender(dateObj, render, {originElem: el, type: panelMode})\r\n }\r\n\r\n return that;\r\n }\r\n\r\n /**\r\n * 给定年份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfYear = function(date){\r\n var newDate = new Date(date);\r\n newDate.setFullYear(newDate.getFullYear(), 0, 1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定年份的结束日期\r\n * @param {Date} date\r\n */\r\n Class.prototype.endOfYear = function(date){\r\n var newDate = new Date(date);\r\n var year = newDate.getFullYear();\r\n newDate.setFullYear(year + 1, 0, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfMonth = function(date){\r\n var newDate = new Date(date);\r\n newDate.setDate(1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的结束日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.endOfMonth = function(date){\r\n var newDate = new Date(date);\r\n var month = newDate.getMonth();\r\n newDate.setFullYear(newDate.getFullYear(), month + 1, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 将指定的天数添加到给定日期\r\n * @param {Date} date 要更改的日期\r\n * @param {number} amount 天数\r\n */\r\n Class.prototype.addDays = function(date, amount){\r\n var newDate = new Date(date);\r\n if(!amount) return newDate;\r\n newDate.setDate(newDate.getDate() + amount);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 不可选取的年或月。年或月中的所有日期都禁用时,才判定为不可选取。\r\n * @param {Date} date 要检测的年或月\r\n * @param {'year' | 'month'} type 面板类型\r\n * @param {'start' | 'end'} position 面板位置\r\n */\r\n Class.prototype.isDisabledYearOrMonth = function(date, type, position){\r\n var that = this;\r\n var options = that.config;\r\n var millisecondsInDay = 24 * 60 * 60 * 1000;\r\n\r\n var startDay = type === 'year' ? that.startOfYear(date) : that.startOfMonth(date);\r\n var endDay = type === 'year' ? that.endOfYear(date) : that.endOfMonth(date);\r\n var numOfDays = Math.floor((endDay.getTime() - startDay.getTime()) / millisecondsInDay) + 1;\r\n var disabledCount = 0;\r\n \r\n for(var i = 0; i < numOfDays; i++){\r\n var day = that.addDays(startDay, i);\r\n if(options.disabledDate.call(options, day, position)){\r\n disabledCount++;\r\n }\r\n }\r\n\r\n return disabledCount === numOfDays;\r\n }\r\n\r\n /**\r\n * @typedef limitOptions\r\n * @prop {JQuery} [elem] - 检测的元素, 例如面板中年月日时分秒元素,“现在”,“确认” 按钮等\r\n * @prop {number} [index] - 元素集合中,当前检测元素的索引,years:0,month:0,date:0-41,hms:0\r\n * @prop {['hours', 'minutes', 'seconds'] | ['hours', 'minutes'] | ['hours']} [time] - 是否比较时分秒\r\n * @prop {'year'|'month'|string} [type] - 面板类型?\r\n * @prop {0 | 1} [rangeType] - 面板索引, 0 表示 start, 1 表示 end\r\n * @prop {Partial<{year:number,month: number,date:number,hours:number,minutes:number,seconds:number}>} [date] - 检测的日期时间对象\r\n * @prop {'date' | 'time' | 'datetime'} disabledType - 禁用类型,按钮应使用 datetime\r\n */\r\n /**\r\n * 不可选取的日期\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledDate = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledDate) return false;\r\n if(options.type === 'time') return false;\r\n if(!(opts.disabledType === 'date' || opts.disabledType === 'datetime')) return false;\r\n\r\n // 不需要时分秒\r\n var normalizedDate = new Date(date);\r\n normalizedDate.setHours(0, 0, 0, 0);\r\n \r\n return opts.type === 'year' || opts.type === 'month'\r\n ? that.isDisabledYearOrMonth(normalizedDate, opts.type, position)\r\n : options.disabledDate.call(options, normalizedDate, position);\r\n }\r\n\r\n /**\r\n * 不可选取的时间\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledTime = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledTime) return false;\r\n if(!(options.type === \"time\" || options.type === \"datetime\")) return false;\r\n if(!(opts.disabledType === 'time' || opts.disabledType === 'datetime')) return false;\r\n\r\n var isDisabledItem = function(compareVal, rangeFn, rangeFnParam){\r\n return function(){\r\n return (typeof rangeFn === 'function' && rangeFn.apply(options, rangeFnParam) || []).indexOf(compareVal) !== -1;\r\n } \r\n }\r\n\r\n var dateObj = that.systemDate(new Date(date));\r\n var disabledTime = options.disabledTime.call(options, that.newDate(dateObj), position) || {};\r\n\r\n // 面板中的时分秒 HTML 元素需要分别检测是否禁用\r\n // 按钮检测任意一项是否禁用即可\r\n return opts.disabledType === 'datetime'\r\n ? isDisabledItem(dateObj.hours, disabledTime.hours)()\r\n || isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours])()\r\n || isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])()\r\n : [isDisabledItem(dateObj.hours, disabledTime.hours),\r\n isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours]),\r\n isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])][opts.time.length - 1]();\r\n }\r\n\r\n /**\r\n * 不可选取的日期时间\r\n * @param {number} timestamp 当前检测的日期的时间戳\r\n * @param {limitOptions} opts \r\n * @returns \r\n */\r\n Class.prototype.isDisabledDateTime = function(timestamp, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n\r\n return that.isDisabledDate(timestamp, opts) || that.isDisabledTime(timestamp, opts);\r\n }\r\n\r\n\r\n /**\r\n * 无效日期范围的标记\r\n * @param {limitOptions} opts \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 || that.isDisabledDateTime(timestamp.now, opts);\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 rangeType: index,\r\n disabledType: 'date' // 日面板,检测当前日期是否禁用\r\n });\r\n that.cellRender(item, {year: YMD[0], month: YMD[1], date: YMD[2]}, 'date');\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 if(!that.panelYM) that.panelYM = {};\r\n that.panelYM[index] = {year: dateTime.year, month: dateTime.month};\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 disabledType: 'datetime' // 按钮,检测日期和时间\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 disabledType: 'datetime' // 按钮,检测日期和时间\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 rangeType: index,\r\n disabledType: 'date' // 年面板,检测当前年份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: yearNum, month: 1, date: 1}, 'year');\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 rangeType: index,\r\n disabledType: 'date' // 月面板,检测当前月份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: listYM[0], month: i + 1, date: 1}, 'month');\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 rangeType: index,\r\n disabledType: 'time', // 时间面板,分别检测时分秒列表是否禁用\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 disabledType: 'datetime' // 确认按钮,检测时分秒列表任意一项是否禁用\r\n });\r\n }\r\n };\r\n\r\n var setTimeListVisibility = function(){\r\n var showHour = options.format.indexOf('H') !== -1;\r\n var showMinute = options.format.indexOf('m') !== -1;\r\n var showSecond = options.format.indexOf('s') !== -1;\r\n var liElem = ul.children;\r\n var hideCount = 0;\r\n\r\n lay.each([showHour, showMinute, showSecond], function(i, isShow){\r\n if(!isShow){\r\n liElem[i].className += ' layui-hide';\r\n hideCount++;\r\n }\r\n })\r\n ul.className += (' laydate-time-list-hide-' + hideCount);\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 setTimeListVisibility();\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 = ['year', 'month'].indexOf(options.type) !== -1;\r\n var isChangeMonth = type === 'year' && ['date', 'datetime'].indexOf(options.type) !== -1;\r\n if (isYearOrMonth || isChangeMonth) {\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') || isChangeMonth) {\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') && 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\r\n ,elemBtn = lay(that.footer).find(ELEM_CONFIRM)\r\n ,timeParams = options.type === 'datetime' || options.type === 'time' ? ['hours', 'minutes', 'seconds'] : undefined;\r\n if(options.range){\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 disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 0\r\n }) || that.limit({\r\n date: end,\r\n disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 1\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 * 格式化输入框显示值\r\n * @param {HTMLInputElement} elem HTML input 元素\r\n * @param {(value: string) => string} displayValueCallback \r\n */\r\n Class.prototype.formatToDisplay = function (elem, displayValueCallback) {\r\n var that = this;\r\n var props = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value');\r\n \r\n Object.defineProperty(\r\n elem,\r\n 'value',\r\n lay.extend({}, props, {\r\n get: function () {\r\n return this.getAttribute('lay-date');\r\n },\r\n set: function (value) {\r\n props.set.call(this, displayValueCallback.call(that, value));\r\n this.setAttribute('lay-date', value);\r\n },\r\n })\r\n );\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 var displayValue = typeof options.formatToDisplay === 'function' ? options.formatToDisplay(value) : value;\r\n lay(elem).html(displayValue);\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 * 判断日期是否存在面板,用于处理日期范围选择的一些边缘情况\r\n * @param {object} datetime 日期时间对象\r\n * @param {number} index - 面板索引\r\n * @returns \r\n */\r\n Class.prototype.checkPanelDate = function(datetime, index){\r\n var that = this;\r\n var options = that.config;\r\n // 年月范围选择不需要处理\r\n if(options.type !== 'date' && options.type !== 'datetime') return;\r\n\r\n var startPanel = index === 0;\r\n var month = datetime.month + 1; // 点击的日期所在月份\r\n var panelMonth = that.panelYM[index].month + 1; // 当前面板头部月份\r\n\r\n // 边缘日期的处理\r\n var firstRenderIndex = that.endState\r\n // 二次点击(一般为结束日期)任意一侧面板时:\r\n // 1. 左侧面板中,点击的月份属于下一个月时,应渲染右侧面板而不是左侧面板;\r\n // 2. 左侧面板中,点击的月份属于上一个月时,应将两个面板都重新渲染(等效点击 prevMonth);\r\n // 3. 右侧面板同理。\r\n ? function() {\r\n return (startPanel && month > panelMonth) || (!startPanel && month < panelMonth)\r\n ? 1 - index\r\n : index;\r\n }()\r\n // 初次点击(一般为开始日期)任意一侧面板时:\r\n // 1. 让该面板自行切换,以保持日期的「选中状态」在该侧;\r\n // 2. 另一侧面板则根据点击的面板进行响应式切换,以保持左右面板始终为连续月份。\r\n : index;\r\n\r\n // 为简化实现,只要点击的月份不等于当前面板顶部显示的月份时,就重新渲染两侧面板\r\n return {\r\n needFullRender: month !== panelMonth,\r\n index: firstRenderIndex\r\n }\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 // 此处为范围选择的日期面板点击选中处理,所以 disabledType 为 date\r\n if (that.endState && !that.limit({date: that.rangeLinked ? that.startDate : that.thisDateTime(1 - index), disabledType:'date'})) {\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 // 处理日期范围选择的一些边缘情况\r\n var checkState = that.checkPanelDate(dateTime, panelIndex);\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n var renderMode = (isChange || (checkState && checkState.needFullRender)) ? 'init' : null;\r\n var panelIdx = checkState ? checkState.index : panelIndex;\r\n that.calendar(dateTimeTemp, panelIdx, renderMode);\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)){\r\n var isTimeout = options.type === 'time'\r\n ? that.startTime && that.endTime && that.newDate(that.startTime) > that.newDate(that.endTime)\r\n : that.startDate && that.endDate && that.newDate(lay.extend({},that.startDate, that.startTime || {})) > that.newDate(lay.extend({},that.endDate, that.endTime || {}));\r\n\r\n return isTimeout \r\n ? that.hint(options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout)\r\n : that.hint(lang.invalidDate);\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 disabledType: 'datetime' // 按钮,检测日期和时间\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 // rangeLinked 模式非实时选择日期,不需要同步 options.dateTime,应根据面板显示日期切换\r\n if(that.rangeLinked){\r\n var panelYM = that.panelYM[0];\r\n var YM = that.getAsYM(panelYM.year, panelYM.month, 'sub');\r\n var dateTimeTemp = lay.extend({}, options.dateTime, that.panelYM[0], {year: YM[0], month: YM[1]});\r\n that.checkDate('limit').calendar(dateTimeTemp, null, 'init');\r\n }else{\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 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 var panelYM = that.panelYM[0];\r\n var YM = that.getAsYM(panelYM.year, panelYM.month);\r\n var dateTimeTemp = lay.extend({}, options.dateTime, that.panelYM[0], {year: YM[0],month: YM[1]});\r\n that.checkDate('limit').calendar(dateTimeTemp, null, 'init');\r\n }else{\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 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 * 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 ,'transition': config.shade[2] || ''\r\n });\r\n that.shadeo.data(SHADE_KEY, config.shade[0] || config.shade);\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 setAnim(that.layero);\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.area[0] === 'auto') && 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] === '' || config.area[1] === 'auto'){\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.btnLoading = function(btnElem, isLoading){\r\n if(isLoading){\r\n var loadingTpl = '';\r\n if(btnElem.find('.layui-layer-btn-loading-icon')[0]) return;\r\n btnElem.addClass('layui-layer-btn-is-loading').attr({disabled: ''}).prepend(loadingTpl);\r\n }else{\r\n btnElem.removeClass('layui-layer-btn-is-loading').removeAttr('disabled').find('.layui-layer-btn-loading-icon').remove();\r\n }\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 btnElem = $(this);\r\n var index = btnElem.index();\r\n if(btnElem.attr('disabled')) return;\r\n\r\n // 若为异步按钮\r\n if(config.btnAsync){\r\n var btnCallback = index === 0 ? (config.yes || config['btn1']) : config['btn'+(index+1)];\r\n that.loading = function(isLoading){\r\n that.btnLoading(btnElem, isLoading);\r\n }\r\n\r\n if(btnCallback){\r\n ready.promiseLikeResolve(btnCallback.call(config, that.index, layero, that))\r\n .then(function(result){\r\n if(result !== false){\r\n layer.close(that.index)\r\n }\r\n }, function(reason){\r\n reason !== undefined && window.console && window.console.error('layer error hint: ' + reason);\r\n });\r\n }else{\r\n layer.close(that.index);\r\n }\r\n } else { // 普通按钮\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 // 取消\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 config.beforeEnd && (ready.beforeEnd[that.index] = $.proxy(config.beforeEnd, config, layero, that.index, that));\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 type = layero.attr('type');\r\n var contentElem = layero.find('.layui-layer-content');\r\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\r\n var area = [\r\n layero[0].style.width || ready.getStyle(layero[0], 'width'),\r\n layero[0].style.height || ready.getStyle(layero[0], '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 contentElem.data(RECORD_HEIGHT_KEY, ready.getStyle(contentRecordHeightElem[0], 'height'));\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// 类似 Promise.resolve\r\nready.promiseLikeResolve = function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\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 contentElem = 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 contentElem.css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n - parseFloat(contentElem.css('padding-top'))\r\n - parseFloat(contentElem.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 contentElem = layero.find('.layui-layer-content');\r\n var area = layero.attr('area').split(',');\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var contentRecordHeight = contentElem.data(RECORD_HEIGHT_KEY);\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 // #1604\r\n if(contentRecordHeight !== undefined){\r\n contentElem.removeData(RECORD_HEIGHT_KEY);\r\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\r\n contentRecordHeightElem.css({height: contentRecordHeight});\r\n }\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 var executor = function(){\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 shadeo = $('#'+ doms.SHADE + index);\r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n shadeo[hideOnClose ? 'hide' : 'remove']();\r\n }else{\r\n shadeo.css({opacity: 0});\r\n setTimeout(function(){\r\n shadeo[hideOnClose ? 'hide' : 'remove']();\r\n }, 350);\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 if(!hideOnClose && typeof ready.beforeEnd[index] === 'function'){\r\n ready.promiseLikeResolve(ready.beforeEnd[index]())\r\n .then(function(result){\r\n if(result !== false){\r\n delete ready.beforeEnd[index];\r\n executor();\r\n }\r\n }, function(reason){\r\n reason !== undefined && window.console && window.console.error('layer error hint: ' + reason);\r\n });\r\n }else{\r\n delete ready.beforeEnd[index];\r\n executor();\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 var layerIndexList = [];\r\n var isArrayType = $.isArray(type);\r\n $(typeof type === 'string' ? '.layui-layer-' + type : '.layui-layer').each(function(i, el){\r\n var layero = $(el);\r\n var shouldSkip = (isArrayType && type.indexOf(layero.attr('type')) === -1) || layero.css('display') === 'none';\r\n if(shouldSkip) return true;\r\n layerIndexList.push(Number(layero.attr('times')));\r\n });\r\n if(layerIndexList.length > 0){\r\n var layerIndexMax = Math.max.apply(null, layerIndexList);\r\n layer.close(layerIndexMax, callback);\r\n }\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, undefined, 'unset'],\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, undefined, 'unset'],\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","/**\n * util 工具组件\n */\n\nlayui.define('jquery', function(exports){\n \"use strict\";\n\n var $ = layui.$;\n var hint = layui.hint();\n\n // 外部接口\n var util = {\n // 固定块\n fixbar: function(options){\n var ELEM = 'layui-fixbar';\n var $doc = $(document);\n\n // 默认可选项\n options = $.extend(true, {\n target: 'body', // fixbar 的插入目标选择器\n bars: [], // bar 信息\n \"default\": true, // 是否显示默认 bar\n margin: 160, // 出现 top bar 的滚动条高度临界值\n duration: 320 // top bar 等动画时长(毫秒)\n }, options);\n\n // 目标元素对象\n var $target = $(options.target);\n\n // 滚动条所在元素对象\n var $scroll = options.scroll\n ? $(options.scroll)\n : $(options.target === 'body' ? $doc : $target)\n\n // 是否提供默认图标\n if(options['default']){\n // 兼容旧版本的一些属性\n if(options.bar1){\n options.bars.push({\n type: 'bar1',\n icon: 'layui-icon-chat'\n });\n }\n if(options.bar2){\n options.bars.push({\n type: 'bar2',\n icon: 'layui-icon-help'\n });\n }\n // 默认 top bar\n options.bars.push({\n type: 'top',\n icon: 'layui-icon-top'\n });\n }\n\n var elem = $('
                          ').addClass(ELEM);\n var elemTopBar;\n\n // 遍历生成 bars 节点\n layui.each(options.bars, function(i, item){\n var elemBar = $('
                        • ');\n\n // 设置 bar 相关属性\n elemBar.addClass(item.icon).attr({\n 'lay-type': item.type,\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\n }).html(item.content);\n\n // bar 点击事件\n elemBar.on('click', function(){\n var type = $(this).attr('lay-type');\n if(type === 'top'){\n (\n options.target === 'body'\n ? $('html,body')\n : $scroll\n ).animate({\n scrollTop : 0\n }, options.duration);\n }\n typeof options.click === 'function' && options.click.call(this, type);\n });\n\n // 自定义任意事件\n if(layui.type(options.on) === 'object'){\n layui.each(options.on, function(eventName, callback){\n elemBar.on(eventName, function(){\n var type = $(this).attr('lay-type');\n typeof callback === 'function' && callback.call(this, type);\n });\n })\n }\n\n // 获得 top bar 节点\n if(item.type === 'top'){\n elemBar.addClass('layui-fixbar-top');\n elemTopBar = elemBar;\n }\n\n elem.append(elemBar); // 插入 bar 节点\n });\n\n // 若目标元素已存在 fixbar,则移除旧的节点\n $target.find('.'+ ELEM).remove();\n\n // 向目标元素插入 fixbar 节点\n typeof options.css === 'object' && elem.css(options.css);\n $target.append(elem);\n\n // top bar 的显示隐藏\n if(elemTopBar){\n var lock;\n var setTopBar = (function setTopBar(){\n var top = $scroll.scrollTop();\n if(top >= options.margin){\n lock || (elemTopBar.show(), lock = 1);\n } else {\n lock && (elemTopBar.hide(), lock = 0);\n }\n return setTopBar;\n })();\n }\n\n // 根据 scrollbar 设置 fixbar 相关状态\n var timer;\n $scroll.on('scroll', function(){\n if(!setTopBar) return;\n clearTimeout(timer);\n timer = setTimeout(function(){\n setTopBar();\n }, 100);\n });\n },\n\n // 倒计时\n countdown: function(options){\n var that = this;\n\n // 默认可选项\n options = $.extend(true, {\n date: new Date(),\n now: new Date()\n }, options);\n\n // 兼容旧版参数\n var args = arguments;\n if(args.length > 1){\n options.date = new Date(args[0]);\n options.now = new Date(args[1]);\n options.clock = args[2];\n }\n\n // 实例对象\n var inst = {\n options: options,\n clear: function(){ // 清除计时器\n clearTimeout(inst.timer);\n },\n reload: function(opts){ // 重置倒计时\n this.clear();\n $.extend(true, this.options, {\n now: new Date()\n }, opts);\n count();\n }\n };\n\n typeof options.ready === 'function' && options.ready();\n\n // 计算倒计时\n var count = (function fn(){\n var date = new Date(options.date);\n var now = new Date(options.now);\n var countTime = function(time){\n return time > 0 ? time : 0;\n }(date.getTime() - now.getTime());\n var result = {\n d: Math.floor(countTime/(1000*60*60*24)), // 天\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\n m: Math.floor(countTime/(1000*60)) % 60, // 分\n s: Math.floor(countTime/1000) % 60 // 秒\n };\n var next = function(){\n now.setTime(now.getTime() + 1000);\n options.now = now;\n count();\n };\n\n // 兼容旧版返回值\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\n\n // 计时 - 以秒间隔\n inst.timer = setTimeout(next, 1000);\n typeof options.clock === 'function' && options.clock(result, inst);\n\n // 计时完成\n if(countTime <= 0){\n clearTimeout(inst.timer);\n typeof options.done === 'function' && options.done(result, inst);\n }\n\n return fn;\n })();\n\n return inst;\n },\n\n // 某个时间在当前时间的多久前\n timeAgo: function(time, onlyDate){\n var that = this;\n var arr = [[], []];\n var stamp = new Date().getTime() - new Date(time).getTime();\n\n // 返回具体日期\n if(stamp > 1000*60*60*24*31){\n stamp = new Date(time);\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\n arr[0][1] = that.digit(stamp.getMonth() + 1);\n arr[0][2] = that.digit(stamp.getDate());\n\n // 是否输出时间\n if(!onlyDate){\n arr[1][0] = that.digit(stamp.getHours());\n arr[1][1] = that.digit(stamp.getMinutes());\n arr[1][2] = that.digit(stamp.getSeconds());\n }\n return arr[0].join('-') + ' ' + arr[1].join(':');\n }\n\n // 30 天以内,返回「多久前」\n if(stamp >= 1000*60*60*24){\n return ((stamp/1000/60/60/24)|0) + ' 天前';\n } else if(stamp >= 1000*60*60){\n return ((stamp/1000/60/60)|0) + ' 小时前';\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\n return ((stamp/1000/60)|0) + ' 分钟前';\n } else if(stamp < 0){\n return '未来';\n } else {\n return '刚刚';\n }\n },\n\n // 数字前置补零\n digit: function(num, length){\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|0) : num;\n },\n\n // 转化为日期格式字符\n toDateString: function(time, format, options){\n // 若 null 或空字符,则返回空字符\n if(time === null || time === '') return '';\n\n // 引用自 dayjs\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\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;\n var that = this;\n var date = new Date(function(){\n if(!time) return;\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\n }() || new Date())\n\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\n\n var years = date.getFullYear();\n var month = date.getMonth();\n var days = date.getDate();\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var seconds = date.getSeconds();\n var milliseconds = date.getMilliseconds();\n\n var defaultMeridiem = function(hours, minutes){\n var hm = hours * 100 + minutes;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1100) {\n return '上午';\n } else if (hm < 1300) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n }\n return '晚上';\n };\n\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\n\n var matches = {\n yy: function(){return String(years).slice(-2);},\n yyyy: function(){return that.digit(years, 4);},\n M: function(){return String(month + 1);},\n MM: function(){return that.digit(month + 1);},\n d: function(){return String(days);},\n dd: function(){return that.digit(days);},\n H: function(){return String(hours);},\n HH: function(){return that.digit(hours);},\n h: function(){return String(hours % 12 || 12);},\n hh: function(){return that.digit(hours % 12 || 12);},\n A: function(){return meridiem(hours, minutes);},\n m: function(){return String(minutes);},\n mm: function(){return that.digit(minutes);},\n s: function(){return String(seconds);},\n ss: function(){return that.digit(seconds);},\n SSS: function(){return that.digit(milliseconds, 3);}\n }\n\n format = format || 'yyyy-MM-dd HH:mm:ss';\n\n return format.replace(REGEX_FORMAT, function(match, $1) {\n return $1 || (matches[match] && matches[match]()) || match;\n });\n },\n\n // 转义 html\n escape: function(html){\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\n if(html === undefined || html === null) return '';\n\n html += '';\n if(!exp.test(html)) return html;\n\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\n .replace(//g, '>')\n .replace(/'/g, ''').replace(/\"/g, '"');\n },\n\n // 还原转义的 html\n unescape: function(html){\n if(html === undefined || html === null) html = '';\n html += '';\n\n return html.replace(/\\&/g, '&')\n .replace(/\\</g, '<').replace(/\\>/g, '>')\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\n },\n\n // 打开新窗口\n openWin: function(options){\n var win;\n options = options || {};\n win = options.window || window.open((options.url || ''), options.target, options.specs);\n if(options.url) return;\n win.document.open('text/html', 'replace');\n win.document.write(options.content || '');\n win.document.close();\n },\n\n // 让指定的元素保持在可视区域\n toVisibleArea: function(options){\n options = $.extend({\n margin: 160, // 触发动作的边界值\n duration: 200, // 动画持续毫秒数\n type: 'y' // 触发方向,x 水平、y 垂直\n }, options);\n\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\n\n var scrollElem = options.scrollElem // 滚动元素\n var thisElem = options.thisElem // 目标元素\n var vertical = options.type === 'y' // 是否垂直方向\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\n var obj = {};\n\n // 边界满足条件\n if(thisOffset > size - options.margin || thisOffset < options.margin){\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\n scrollElem.animate(obj, options.duration);\n }\n },\n\n /**\n * 批量事件\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\n * @param {Object.} events - 事件集合\n * @param {Object} [options] - 参数的更多选项\n * @param {(string|HTMLElement|JQuery)} [options.elem=\"body\"] - 触发事件的委托元素\n * @param {string} [options.trigger=\"click\"] - 事件触发的方式\n * @returns {Object} 返回当前 events 参数设置的事件集合\n */\n on: function(attr, events, options) {\n // 若参数一为 object 类型,则为事件集,且省略 attr\n if (typeof attr === 'object') {\n options = events || {};\n events = attr;\n attr = options.attr || 'lay-on'; // 默认属性名\n }\n\n // 更多选项\n options = $.extend({\n elem: 'body',\n trigger: 'click'\n }, typeof options === 'object' ? options : {\n trigger: options // 兼容旧版\n });\n\n var elem = options.elem = $(options.elem);\n var attrSelector = '['+ attr +']';\n var DATANAME = 'UTIL_ON_DATA'; // 缓存在委托元素上的 data-* 属性名\n\n if (!elem[0]) return; // 若委托元素不存在\n\n // 初始化 data 默认值,以委托元素为存储单元\n if (!elem.data(DATANAME)) {\n elem.data(DATANAME, {\n events: {}\n });\n }\n\n // 读取 data 缓存\n var dataCache = elem.data(DATANAME);\n\n // 根据 attr 和 trigger 的组合作为 key\n var key = attr + '_' + options.trigger;\n\n // 根据 key 记录事件集合\n events = dataCache.events[key] = $.extend(true, dataCache.events[key], events);\n\n\n // 清除事件委托,避免重复绑定\n var trigger = options.trigger + '.lay_util_on';\n elem.off(trigger, attrSelector);\n\n // 绑定事件委托\n elem.on(trigger, attrSelector, function(e) {\n var othis = $(this);\n var attrValue = othis.attr(attr);\n typeof events[attrValue] === 'function' && events[attrValue].call(this, othis, e);\n });\n\n return events;\n }\n };\n\n // 兼容旧版\n util.event = util.on;\n\n // 输出接口\n exports('util', util);\n});\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 var MOD_INDEX_OPENED = MOD_INDEX + '_opened';\r\n var MOD_ID = 'lay-' + MOD_NAME + '-id';\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 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 open: function () {\r\n that.render()\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 closeOnClick: true // 面板打开后,再次点击目标元素时是否关闭面板。行为取决于所使用的触发事件类型\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.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.target = $('body'); // 后续考虑开放 target 元素\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 thisModule.that[options.id] = that; // 记录当前实例对象\r\n elem.attr(MOD_ID, options.id); // 目标元素已渲染过的标记\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n // 若传入 hover,则解析为 mouseenter\r\n if (options.trigger === 'hover') {\r\n options.trigger = 'mouseenter';\r\n }\r\n\r\n // 初始即显示或者面板弹出之后执行了刷新数据\r\n if(options.show || (type === 'reloadData' && that.mainElem && options.target.find(that.mainElem.get(0)).length)) that.render(type);\r\n\r\n // 事件\r\n that.events();\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 var customName = options.customName;\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('
                          • 暂无数据
                          • ');\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 '
                              ',\r\n '
                              '\r\n ].join('');\r\n\r\n // 重载或插入面板内容\r\n var content = options.content || getDefaultView();\r\n var mainElemExisted = thisModule.findMainElem(options.id);\r\n if (type === 'reloadData' && mainElemExisted.length) { // 是否仅重载数据\r\n var mainElem = that.mainElem = mainElemExisted;\r\n mainElemExisted.html(content);\r\n } else { // 常规渲染\r\n var mainElem = that.mainElem = $(TPL_MAIN);\r\n mainElem.append(content);\r\n\r\n // 初始化某些属性\r\n mainElem.addClass(options.className);\r\n mainElem.attr('style', options.style);\r\n\r\n // 辞旧迎新\r\n that.remove(dropdown.thisId);\r\n options.target.append(mainElem);\r\n options.elem.data(MOD_INDEX_OPENED, true); // 面板已打开的标记\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                              ') : '';\r\n mainElem.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n mainElem.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 that.position(); // 定位坐标\r\n dropdown.thisId = options.id; // 当前打开的面板 id\r\n\r\n // 阻止全局事件\r\n mainElem.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n mainElem.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, e) \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 mainElem.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(mainElem, options.elem);\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.mainElem[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(id) {\r\n id = id || this.config.id;\r\n var that = thisModule.getThis(id); // 根据 id 查找对应的实例\r\n if (!that) return;\r\n\r\n var options = that.config;\r\n var mainElem = thisModule.findMainElem(id);\r\n\r\n // 若存在已打开的面板元素,则移除\r\n if (mainElem[0]) {\r\n mainElem.prev('.' + STR_ELEM_SHADE).remove(); // 先移除遮罩\r\n mainElem.remove();\r\n options.elem.removeData(MOD_INDEX_OPENED);\r\n delete dropdown.thisId;\r\n typeof options.close === 'function' && options.close(options.elem);\r\n }\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 // 是否鼠标移入时触发\r\n var isMouseEnter = options.trigger === 'mouseenter';\r\n var trigger = options.trigger + '.lay_dropdown_render';\r\n\r\n // 始终先解除上一个触发元素的事件(如重载时改变 elem 的情况)\r\n if (that.thisEventElem) that.thisEventElem.off(trigger);\r\n that.thisEventElem = options.elem;\r\n\r\n // 触发元素事件\r\n options.elem.off(trigger).on(trigger, function(e) {\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n\r\n // 主面板是否已打开\r\n var opened = options.elem.data(MOD_INDEX_OPENED);\r\n\r\n // 若为鼠标移入事件,则延迟触发\r\n if (isMouseEnter) {\r\n if (!opened) {\r\n thisModule.timer = setTimeout(function(){\r\n that.render();\r\n }, that.normalizedDelay().show);\r\n }\r\n } else {\r\n // 若为 click 事件,则根据主面板状态,自动切换打开与关闭\r\n if (options.closeOnClick && opened && options.trigger === 'click') {\r\n that.remove();\r\n } else {\r\n that.render();\r\n }\r\n }\r\n\r\n e.preventDefault();\r\n });\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 if (id === undefined) {\r\n throw new Error('ID argument required');\r\n }\r\n return thisModule.that[id];\r\n };\r\n\r\n // 根据 id 从页面查找组件主面板元素\r\n thisModule.findMainElem = function(id) {\r\n return $('.' + STR_ELEM + '[' + MOD_ID + '=\"' + id + '\"]');\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.mainElem && !that.mainElem[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 lay(_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 var isTopElem = lay.isTopElem(options.elem[0]);\r\n var isCtxMenu = options.trigger === 'contextmenu';\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素是 body document,或者是鼠标右键事件时,忽略绑定元素\r\n var isTriggerTarget = !(isTopElem || isCtxMenu) && (options.elem[0] === e.target || options.elem.find(e.target)[0]);\r\n var isPanelTarget = that.mainElem && (e.target === that.mainElem[0] || that.mainElem.find(e.target)[0]);\r\n if(isTriggerTarget || isPanelTarget) return;\r\n // 处理移动端点击穿透问题\r\n if(e.type === 'touchstart' && options.elem.data(MOD_INDEX_OPENED)){\r\n $(e.target).hasClass(STR_ELEM_SHADE) && e.preventDefault();\r\n }\r\n\r\n // 点击 dropdown 外部时的回调\r\n if(typeof options.onClickOutside === 'function'){\r\n var shouldClose = options.onClickOutside(e);\r\n if(shouldClose === false) return;\r\n }\r\n \r\n that.remove();\r\n }, {passive: false});\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.open = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.render();\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.precision = function(){\r\n var that = this;\r\n var options = that.config;\r\n var precisions = $.map([options.min, options.max, options.step], function(v, i){\r\n var decimalArr = String(v).split('.');\r\n return decimalArr[1] ? decimalArr[1].length : 0;\r\n })\r\n return Math.max.apply(null, precisions);\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 //间隔值不能小于等于 0\r\n if(options.step <= 0) 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 = (options.value[0] - options.min) / (options.max - options.min) * 100;\r\n var scaleSec = (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 = (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) / options.step);\r\n var precision = that.precision();\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 + (options.max - options.min) * offsetValue / 100;\r\n selfValue = Number(parseFloat(selfValue).toFixed(precision));\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)/180*100\r\n ,_s = (choose[0].offsetLeft)/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 // 1. 不触发游标上绑定的事件,以提高性能,使滑动更流畅\r\n // 2. 游标上的事件需要冒泡到颜色拾取区域,用来模拟拖动游标的效果\r\n var needTrigger = true;\r\n var needStopPropagation = true;\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : 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 needStopPropagation && layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('mousedown', 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 needTrigger && slider.trigger('mousedown', e);\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldleft = this.offsetLeft;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : e.clientY;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : 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\r\n ,maxw = basis[0].offsetWidth;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var s = left/260*100\r\n ,b = 100 - top/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 needStopPropagation && 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 + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left + $win.scrollLeft()\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight)top = this.offsetHeight;\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var s = left/260*100\r\n ,b = 100 - top/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 needTrigger && choose.trigger('mousedown', e);\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e, triggerEvent){\r\n var oldleft = this.offsetLeft;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : 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 needStopPropagation && layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('mousedown', 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 needTrigger && alphaslider.trigger('mousedown', e);\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: 'mousedown'},\r\n {elem: alphacolor, eventType: 'mousedown'},\r\n {elem: basis, eventType: 'mousedown'}\r\n ], function(i, obj){\r\n lay.touchSwipe(obj.elem, {\r\n onTouchStart: function(){\r\n needTrigger = false;\r\n needStopPropagation = false;\r\n },\r\n onTouchMove: function(e){\r\n touchHandler(e, obj.eventType)\r\n },\r\n onTouchEnd: function(){\r\n elemMove.remove();\r\n needTrigger = true;\r\n needStopPropagation = true;\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;\r\n var left = s/100*260;\r\n var basisElem = that.elemPicker.find('.' + PICKER_BASIS)[0];\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n basisElem.style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top / basisElem.offsetHeight * 100 + '%',\r\n \"left\": left / basisElem.offsetWidth * 100 + '%' \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, tabElem);\r\n return this;\r\n };\r\n \r\n /**\r\n * 外部 Tab 删除\r\n * @param {string} filter - 标签主容器 lay-filter 值\r\n * @param {string} layid - 标签头 lay-id 值\r\n * @param {boolean} force - 是否强制删除\r\n * @returns {this}\r\n */\r\n Element.prototype.tabDelete = function(filter, layid, force){\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.call(liElem[0], {\r\n liElem: liElem,\r\n force: force\r\n });\r\n return this;\r\n };\r\n \r\n /**\r\n * 外部 Tab 切换\r\n * @param {string} filter - 标签主容器 lay-filter 值\r\n * @param {string} layid - 标签头 lay-id 值\r\n * @param {boolean} force - 是否强制切换\r\n * @returns {this}\r\n */\r\n Element.prototype.tabChange = function(filter, layid, force){\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 force: force\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 = $(options.headerElem).index($(this));\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 var hasId = othis.attr('lay-id');\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 // 若非强制切换,则根据 tabBeforeChange 事件的返回结果决定是否切换\r\n if (!obj.force) {\r\n var liThis = othis.siblings('.' + THIS);\r\n var shouldChange = layui.event.call(this, MOD_NAME, 'tabBeforeChange('+ filter +')', {\r\n elem: parents,\r\n from: {\r\n index: othis.parent().children('li').index(liThis),\r\n id: liThis.attr('lay-id')\r\n },\r\n to: {\r\n index: index,\r\n id: hasId\r\n },\r\n });\r\n if(shouldChange === false) return;\r\n }\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index);\r\n contentElem.addClass(SHOW).siblings().removeClass(SHOW);\r\n }else{\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index,\r\n id: hasId\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(obj){\r\n obj = obj || {};\r\n\r\n var li = obj.liElem || $(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 var hasId = li.attr('lay-id');\r\n\r\n // 若非强制删除,则根据 tabBeforeDelete 事件的返回结果决定是否删除\r\n if (!obj.force) {\r\n var shouldClose = layui.event.call(li[0], MOD_NAME, 'tabBeforeDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index,\r\n id: hasId\r\n });\r\n if(shouldClose === false) return;\r\n }\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 if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index)\r\n contentElem.remove()\r\n }else{\r\n item.eq(index).remove();\r\n }\r\n setTimeout(function(){\r\n call.tabAuto(null, tabElem);\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 id: hasId\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread, elem){\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 var targetElem = elem || $('.layui-tab');\r\n \r\n targetElem.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 var allowclose = othis.attr('lay-allowclose');\r\n if(allowclose && allowclose !== 'false'){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0] && li.attr('lay-allowclose') !== 'false'){\r\n var close = $('');\r\n close.on('click', function(e) {\r\n call.tabDelete.call(this, {\r\n e: e\r\n });\r\n });\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 (typeof filter === 'string' && filter) ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(elem){\r\n var TAB_ELEM = '.layui-tab';\r\n var targetElem = elem || $(TAB_ELEM + elemFilter);\r\n call.tabAuto.call({}, null, targetElem);\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(elem){\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 var targetElem = elem || $(NAV_ELEM + elemFilter);\r\n targetElem.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 var hasBarElem = othis.find('.'+NAV_BAR);\r\n if (hasBarElem[0]) hasBarElem.remove();\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).off('mouseenter.lay_nav').on('mouseenter.lay_nav', function() {\r\n follow.call(this, bar, othis, index);\r\n }).off('mouseleave.lay_nav').on('mouseleave.lay_nav', 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.off('mouseleave.lay_nav').on('mouseleave.lay_nav', 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 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(elem){\r\n var ELEM = '.layui-breadcrumb';\r\n var targetElem = elem || $(ELEM + elemFilter);\r\n\r\n targetElem.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(elem){\r\n var ELEM = 'layui-progress';\r\n var targetElem = elem || $('.' + ELEM + elemFilter);\r\n\r\n targetElem.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(elem){\r\n var ELEM = 'layui-collapse';\r\n var targetElem = elem || $('.' + ELEM + elemFilter);\r\n \r\n targetElem.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 if(type && typeof filter === 'object' && filter instanceof $){\r\n var targetElem = filter;\r\n return items[type](targetElem);\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, e.responseText, e);\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 forceConvert = function(src) {\r\n if(options.force === 'json'){\r\n if(typeof src !== 'object'){\r\n try {\r\n return {\r\n status: \"CONVERTED\",\r\n data: JSON.parse(src)\r\n };\r\n } catch(e){\r\n that.msg(text['data-format-error']);\r\n return {\r\n status: \"FORMAT_ERROR\",\r\n data: {}\r\n };\r\n }\r\n }\r\n }\r\n return { status: \"DO_NOTHING\", data: {} }\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 var convert = forceConvert(res);\r\n\r\n switch(convert.status) {\r\n case \"CONVERTED\":\r\n res = convert.data;\r\n break;\r\n case \"FORMAT_ERROR\":\r\n return;\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, res, xhr){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n\r\n var convert = forceConvert(res);\r\n\r\n switch(convert.status) {\r\n case \"CONVERTED\":\r\n res = convert.data;\r\n break;\r\n case \"FORMAT_ERROR\":\r\n return;\r\n }\r\n\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n }, res, xhr);\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 getChooseFiles: function(){\r\n return that.chooseFiles;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n var ready = function(){\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n ajaxSend();\r\n }\r\n // 上传前的回调 - 如果回调函数明确返回 false 或 Promise.reject,则停止上传\r\n if(typeof options.before === 'function'){\r\n upload.util.promiseLikeResolve(options.before(args))\r\n .then(function(result){\r\n if(result !== false){\r\n ready();\r\n } else {\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n }\r\n }, function(error){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n error !== undefined && layui.hint().error(error);\r\n })\r\n }else{\r\n ready();\r\n }\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|webp') +')$', '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 * 判断文件是否加入排队\r\n * @param {File} file\r\n * @return {boolean}\r\n */\r\n var checkFile = function (file) {\r\n var result = true;\r\n layui.each(that.files, function (index, item) {\r\n result = !(item.name === file.name);\r\n if(!result) return true;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * 扩展文件信息\r\n * @template {File | FileList} T\r\n * @param {T} obj\r\n * @return {T}\r\n */\r\n var extendInfo = function (obj) {\r\n\r\n var extInfo = function (file) {\r\n //文件扩展名\r\n file.ext = file.name.substr(file.name.lastIndexOf('.') + 1).toLowerCase();\r\n // 文件大小\r\n file.sizes = upload.util.parseSize(file.size);\r\n // 可以继续扩展\r\n }\r\n\r\n //FileList对象\r\n if (obj instanceof FileList) {\r\n layui.each(obj, function (index, item) {\r\n extInfo(item);\r\n });\r\n } else {\r\n extInfo(obj);\r\n }\r\n\r\n return obj;\r\n }\r\n \r\n /**\r\n * 检查获取文件\r\n * @param {FileList} files\r\n * @return {Array|FileList}\r\n */\r\n var getFiles = function (files) {\r\n files = files || [];\r\n if (!files.length) return [];\r\n if (!that.files) return extendInfo(files);\r\n var result = [];\r\n layui.each(files, function (index, item) {\r\n if (checkFile(item)) {\r\n result.push(extendInfo(item));\r\n }\r\n });\r\n return result;\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 = getFiles(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 = getFiles(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 * 上传组件辅助方法\r\n */\r\n upload.util = {\r\n /**\r\n * 文件大小处理\r\n * @param {number | string} size -文件大小\r\n * @param {number} [precision] - 数值精度\r\n * @return {string}\r\n */\r\n parseSize: function (size, precision) {\r\n precision = precision || 2;\r\n if (null == size || !size) {\r\n return '0';\r\n }\r\n var unitArr = [\"Bytes\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"];\r\n var index;\r\n var formatSize = typeof size === 'string' ? parseFloat(size) : size;\r\n index = Math.floor(Math.log(formatSize) / Math.log(1024));\r\n size = formatSize / Math.pow(1024, index);\r\n size = size % 1 === 0 ? size : parseFloat(size.toFixed(precision));//保留的小数位数\r\n return size + unitArr[index];\r\n },\r\n /**\r\n * 将给定的值转换为一个 JQueryDeferred 对象\r\n */\r\n promiseLikeResolve:function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\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 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 var needCheckboxFallback = lay.ie && parseFloat(lay.ie) === 8;\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) || value === undefined || value === null) {\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 for(var key in object){\r\n if(!lay.hasOwn(object, key)) continue;\r\n\r\n var type;\r\n var value = object[key];\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]');\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) continue;\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 // select 多选用 jQuery 方式取值,未选中 option 时,\r\n // jQuery v2.2.4 及以下版本返回 null,以上(3.x) 返回 []。\r\n // 统一规范化为 [],参考 https://github.com/jquery/jquery/issues/2562\r\n field[init_name || item.name] = (this.tagName === 'SELECT' && typeof this.getAttribute('multiple') === 'string') \r\n ? othis.val() || []\r\n : this.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 // 赋值\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 // 若 `lay-precision` 为 0, 则表示只保留整数\r\n if (precision === 0) {\r\n value = parseInt(value);\r\n } else if(precision > 0) { // 小数位精度\r\n value = value.toFixed(precision);\r\n }\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 CREATE_OPTION = 'layui-select-create-option';\r\n var PANEL_WRAP = 'layui-select-panel-wrap'\r\n var PANEL_ELEM_DATA = 'layui-select-panel-elem-data';\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 各种事件\r\n var events = function(reElem, titleElem, disabled, isSearch, isCreatable, isAppendTo){\r\n var select = $(this);\r\n var title = titleElem;\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 initValue = '';\r\n var removeClickOutsideEvent;\r\n \r\n if(disabled) return;\r\n\r\n /**\r\n * 搜索项 \r\n * @typedef searchOption\r\n * @prop {boolean} [caseSensitive=false] 是否区分大小写\r\n * @prop {boolean} [fuzzy=false] 是否开启模糊匹配,开启后将会忽略模式出现在字符串中的位置。\r\n */\r\n /** @type {searchOption} */\r\n var laySearch = select.attr('lay-search') === 'cs' ? {caseSensitive:true} : lay.options(select, {attr:'lay-search'});\r\n // 目前只支持 body\r\n var appendTarget = select.attr('lay-append-to') || 'body';\r\n var appendPosition = select.attr('lay-append-position');\r\n\r\n // #1449\r\n // IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件\r\n // 当鼠标按下时,根据 input 元素上的 __ieph 标识忽略 input 事件\r\n var needPlaceholderPatch = !!(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder'));\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n if(isAppendTo){\r\n // 如果追加面板元素后出现滚动条,触发元素宽度可能会有变化,所以先追加面板元素\r\n reElem.appendTo(appendTarget).css({width: title.width() + 'px'});\r\n\r\n var updatePosition = function(){\r\n lay.position(title[0], reElem[0], {\r\n position: appendPosition,\r\n allowBottomOut: true,\r\n offset: [0, 5]\r\n });\r\n }\r\n\r\n updatePosition();\r\n $(window).on('resize.lay_select_resize', updatePosition);\r\n }\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n var dds = dl.children('dd');\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n title.parent().addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\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 if(needPlaceholderPatch){\r\n dl.off('mousedown.lay_select_ieph').on('mousedown.lay_select_ieph', function(){\r\n input[0].__ieph = true;\r\n setTimeout(function(){\r\n input[0].__ieph = false;\r\n }, 60)\r\n });\r\n }\r\n\r\n removeClickOutsideEvent = lay.onClickOutside(\r\n isAppendTo ? reElem[0] : dl[0],\r\n function(){\r\n hideDown();\r\n initValue && input.val(initValue);\r\n },\r\n {ignore: title}\r\n );\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n title.parent().removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n removeClickOutsideEvent && removeClickOutsideEvent();\r\n if(isAppendTo){\r\n reElem.detach();\r\n $(window).off('resize.lay_select_resize');\r\n }\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 title.parent().hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\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){\r\n e.preventDefault();\r\n var allDisplayedElem = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')');\r\n if(!allDisplayedElem.length) return;\r\n var firstIndex = 0;\r\n var lastIndex = allDisplayedElem.length - 1;\r\n var selectedIndex = -1;\r\n\r\n layui.each(allDisplayedElem, function(index, el){\r\n if($(el).hasClass(THIS)){\r\n selectedIndex = index;\r\n return true;\r\n }\r\n })\r\n \r\n var nextIndex = prevNext === 'prev'\r\n ? (selectedIndex - 1 < firstIndex ? lastIndex : selectedIndex - 1)\r\n : (selectedIndex + 1 > lastIndex ? firstIndex : selectedIndex + 1)\r\n\r\n var selectedElem = allDisplayedElem.eq(nextIndex);\r\n selectedElem.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 var dds = dl.children('dd');\r\n var hasEquals = false;\r\n var rawValue = value;\r\n var fuzzyMatchRE;\r\n if(!laySearch.caseSensitive){\r\n value = value.toLowerCase();\r\n }\r\n if(laySearch.fuzzy){\r\n fuzzyMatchRE = fuzzyMatchRegExp(value, laySearch.caseSensitive);\r\n }\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n var isCreateOption = isCreatable && othis.hasClass(CREATE_OPTION);\r\n\r\n // 需要区分大小写\r\n if(isCreatable && !isCreateOption && text === rawValue){\r\n hasEquals = true;\r\n }\r\n\r\n // 是否区分大小写\r\n if(!laySearch.caseSensitive){\r\n text = text.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = laySearch.fuzzy ? !fuzzyMatchRE.test(text) : text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[(isCreatable ? (not && !isCreateOption) : not) ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this);\r\n var thisDds = othis.nextUntil('dt').filter('dd'); // 当前分组下的dd元素\r\n if(isCreatable) thisDds = thisDds.not('.' + CREATE_OPTION);\r\n var 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, hasEquals), 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 if(needPlaceholderPatch && e.target.__ieph){\r\n e.target.__ieph = false;\r\n return false;\r\n }\r\n \r\n notOption(value, function(none, hasEquals){\r\n if(isCreatable){\r\n if(hasEquals){\r\n dl.children('.' + CREATE_OPTION).remove();\r\n }else{\r\n var createOptionElem = dl.children('.' + CREATE_OPTION);\r\n if(createOptionElem[0]){\r\n createOptionElem.attr('lay-value', value).html(util.escape(value));\r\n }else{\r\n // 临时显示在顶部\r\n var ddElem = $('
                              ').addClass(CREATE_OPTION).attr('lay-value', value).html(util.escape(value));\r\n var firstOptionELem = dl.children().eq(0);\r\n var hasTips = firstOptionELem.hasClass('layui-select-tips');\r\n firstOptionELem[hasTips ? 'after' : 'before'](ddElem);\r\n }\r\n }\r\n }else{\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 }\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 isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n input.on('input propertychange', layui.debounce(search, 50)).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \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 dl.on('click', 'dd', 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 // 将新增的 option 元素添加到末尾\r\n if(isCreatable && othis.hasClass(CREATE_OPTION)){\r\n dl.append(othis.removeClass(CREATE_OPTION));\r\n var optionElem = $('
                            '\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 ,'{{# if(typeof d.data.loading === \"string\"){ }}'\r\n ,'{{- d.data.loading}}'\r\n ,'{{# } else{ }}'\r\n ,''\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(function(){\r\n var obj = {\r\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\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 }\r\n obj[MOD_ID] = options.id;\r\n return obj;\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 that.setColsWidth({isInit: true});\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;\r\n var isNone;\r\n parent = parent || options.elem.parent();\r\n\r\n width = that.getContentWidth(parent);\r\n\r\n try {\r\n isNone = parent.css('display') === 'none';\r\n } catch(e){}\r\n var parentElem = parent.parent();\r\n if(parent[0] && parentElem && parentElem[0] && (!width || isNone)) return getWidth(parentElem);\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 var filter = options.elem.attr('lay-filter');\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 defaultConfig = {\r\n filter: {\r\n title: '筛选列',\r\n layEvent: 'LAYTABLE_COLS',\r\n icon: 'layui-icon-cols',\r\n onClick: function(obj) {\r\n var options = obj.config;\r\n var openPanel = obj.openPanel;\r\n\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 }\r\n },\r\n exports: {\r\n title: '导出',\r\n layEvent: 'LAYTABLE_EXPORT',\r\n icon: 'layui-icon-export',\r\n onClick: function(obj) { // 自带导出\r\n var data = obj.data;\r\n var options = obj.config;\r\n var openPanel = obj.openPanel;\r\n var elem = obj.elem;\r\n\r\n if (!data.length) return layer.tips('当前表格无数据', elem, {tips: 3});\r\n if(device.ie){\r\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', elem, {\r\n tips: 3\r\n });\r\n } else {\r\n openPanel({\r\n list: function(){\r\n return [\r\n '
                          • 导出 CSV 文件
                          • '\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 }\r\n },\r\n print: {\r\n title: '打印',\r\n layEvent: 'LAYTABLE_PRINT',\r\n icon: 'layui-icon-print',\r\n onClick: function(obj) {\r\n var data = obj.data;\r\n var options = obj.config;\r\n var elem = obj.elem;\r\n\r\n if (!data.length) return layer.tips('当前表格无数据', elem, {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 }\r\n }\r\n };\r\n\r\n // 若开启 defaultToolbar\r\n if (typeof options.defaultToolbar === 'object') {\r\n var iconElem = [];\r\n options.defaultToolbar = $.map(options.defaultToolbar, function(item, i) {\r\n var itemIsName = typeof item === 'string';\r\n var thisItem = itemIsName ? defaultConfig[item] : item;\r\n if (thisItem) {\r\n // 根据 name 匹配默认工具并合并\r\n if (thisItem.name && defaultConfig[thisItem.name]) {\r\n thisItem = $.extend({}, defaultConfig[thisItem.name], thisItem);\r\n }\r\n // 初始化默认工具 name\r\n if (!thisItem.name && itemIsName) {\r\n thisItem.name = item;\r\n }\r\n // 图标列表\r\n iconElem.push(\r\n '
                            '\r\n +''\r\n +'
                            '\r\n );\r\n }\r\n return thisItem;\r\n });\r\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\r\n }\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(opt){\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 var borderWidth = parseFloat(layui.getStyle(that.elem[0], 'border-left-width'));\r\n var lastSpreadCol;\r\n var headerTableElem = that.layHeader.first().children('table');\r\n var mainTableElem = that.layMain.find('table');\r\n var isEmptyTable = that.layMain.find('tbody').is(\":empty\");\r\n var isInit = opt && opt.isInit;\r\n\r\n // 统计列个数和最后一个分配宽度的列\r\n that.eachCols(function(i, item){\r\n if(!item.hide){\r\n colNums++;\r\n if(!(item.width || item.type !== 'normal')){\r\n lastSpreadCol = item;\r\n }\r\n }\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 }() * borderWidth - that.getScrollWidth(that.layMain[0]);\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 = (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 var pixelsForLastCol = cntrWidth;\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 || (lastSpreadCol && lastSpreadCol.key === item3.key)) return;\r\n\r\n // 给未分配宽的列平均分配宽\r\n if(item3.width === 0){\r\n that.cssRules(item3.key, function(item){\r\n var newWidth = Math.round(function(){\r\n if(autoWidth < minWidth) return minWidth;\r\n if(autoWidth > maxWidth) return maxWidth;\r\n return autoWidth;\r\n }());\r\n item.style.width = newWidth + 'px';\r\n pixelsForLastCol = pixelsForLastCol - newWidth;\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.round((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 pixelsForLastCol = pixelsForLastCol - width;\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 pixelsForLastCol = pixelsForLastCol - item3.width;\r\n });\r\n }\r\n });\r\n // 最后一列获取剩余的空间,避免舍入导致的布局问题\r\n if(lastSpreadCol){\r\n that.cssRules(lastSpreadCol.key, function(item){\r\n var minWidth = lastSpreadCol.minWidth || options.cellMinWidth;\r\n var maxWidth = lastSpreadCol.maxWidth || options.cellMaxWidth;\r\n var newWidth = Math.max(Math.min(pixelsForLastCol, maxWidth), minWidth);\r\n item.style.width = newWidth + 'px';\r\n\r\n if (!isInit && isEmptyTable){\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n mainTableElem.width(that.getContentWidth(headerTableElem));\r\n }\r\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\r\n // 不同屏幕分辨率、缩放水平以及浏览器渲染差异,可能会触发这个问题 \r\n if(that.layMain.prop('offsetHeight') > that.layMain.prop('clientHeight')){\r\n item.style.width = (parseFloat(item.style.width) - borderWidth) + 'px';\r\n }\r\n });\r\n }\r\n\r\n if (!isInit && isEmptyTable) {\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n mainTableElem.width(that.getContentWidth(headerTableElem));\r\n } else {\r\n mainTableElem.width('auto');\r\n }\r\n\r\n that.setGroupWidth();\r\n\r\n };\r\n\r\n // 重置表格尺寸/结构\r\n Class.prototype.resize = function(){\r\n var that = this;\r\n\r\n var tableElemIsConnected = that.layMain && ('isConnected' in that.layMain[0]\r\n ? that.layMain[0].isConnected \r\n : $.contains(document.body, that.layMain[0]));\r\n\r\n if(!tableElemIsConnected) 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 that.loading(false);\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 that.loading(false);\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(true);\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 // 当前页不能超过总页数\r\n var count = res[response.countName];\r\n var pages = Math.ceil(count / options.limit) || 1;\r\n if(curr > pages){\r\n curr = pages;\r\n }\r\n that.totalRow = res[response.totalRowName];\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: count,\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, opts.type);\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, opts.type);\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 item1[table.config.indexName] = i1;\r\n if(!sort) item1[table.config.initIndexName] = 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\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 // 合计内容\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 // td 显示内容\r\n var tdContent = 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\r\n return content;\r\n }();\r\n\r\n // 合计原始结果\r\n item3.field && that.dataTotal.push({\r\n field: item3.field,\r\n total: $('
                            '+ tdContent +'
                            ').text()\r\n });\r\n\r\n // td 容器\r\n var td = ['',\r\n '
                            ' + tdContent,\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 };\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 var isCheckAllOrMult = isCheckAll || isCheckMult; // 是否全选或多选\r\n\r\n // 全选或多选时\r\n if (isCheckAllOrMult) {\r\n that.layBox.addClass(DISABLED_TRANSITION); // 减少回流\r\n if (opts.type === 'radio') return; // radio 不允许全选或多选\r\n }\r\n\r\n if(isCheckMult){\r\n var makeMap = {}\r\n layui.each(opts.index, function(i,v){\r\n makeMap[v] = true;\r\n })\r\n opts.index = makeMap;\r\n }\r\n\r\n // 匹配行元素\r\n var tbody = that.layBody.children('.layui-table').children('tbody');\r\n var selector = isCheckAllOrMult ? 'tr' : 'tr[data-index=\"'+ opts.index +'\"]';\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[dataIndex];\r\n } : '[data-index=\"'+ opts.index +'\"]');\r\n }(tbody.children(selector));\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 var radioCheckedIndex;\r\n\r\n // 给匹配行设置选中状态\r\n tr.each(function() {\r\n var el = $(this);\r\n var i = el.attr('data-index');\r\n var item = thisData[i];\r\n\r\n if (!i) return; // 此时 el 通常为静态表格嵌套时的原始模板\r\n\r\n // 绕过空项和禁用项\r\n if (layui.type(item) === 'array' || item[options.disabledName]) {\r\n return;\r\n }\r\n\r\n // 标记数据选中状态\r\n var checked = item[options.checkName] = getChecked(el.hasClass(ELEM_CHECKED));\r\n\r\n // 标记当前行背景色\r\n el.toggleClass(ELEM_CHECKED, !!checked);\r\n\r\n // 若为 radio 类型,则取消其他行选中背景色\r\n if (opts.type === 'radio') {\r\n radioCheckedIndex = i;\r\n el.siblings().removeClass(ELEM_CHECKED);\r\n }\r\n });\r\n\r\n // 若为 radio 类型,移除其他行数据选中状态\r\n if (radioCheckedIndex) {\r\n layui.each(thisData, function(i, item) {\r\n if (Number(radioCheckedIndex) !== Number(i)) {\r\n delete item[options.checkName];\r\n }\r\n });\r\n }\r\n\r\n // 若存在复选框或单选框,则标注选中状态样式\r\n var td = tr.children('td').children('.layui-table-cell');\r\n var checkedElem = td.children('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\r\n if(isCheckAllOrMult){\r\n setTimeout(function(){\r\n that.layBox.removeClass(DISABLED_TRANSITION);\r\n },100)\r\n }\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.initIndexName, 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(show){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.loading){\r\n that.layBox.find(ELEM_INIT).toggleClass(HIDE, !show); \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 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);\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\r\n // 弹出工具下拉面板\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 // 头部工具栏右侧图标\r\n layui.each(options.defaultToolbar, function(index, item) {\r\n if (item.layEvent === events) {\r\n typeof item.onClick === 'function' && item.onClick({\r\n data: data,\r\n config: options,\r\n openPanel: openPanel,\r\n elem: othis\r\n });\r\n return true;\r\n }\r\n });\r\n\r\n // table toolbar 事件\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 dict.allowResize = false;\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(MOD_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(MOD_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 }\r\n\r\n layui.stope(e);\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 setRowEvent.call(this, 'row', e);\r\n }).on('dblclick', 'tr', function(e){ // 双击行\r\n setRowEvent.call(this, 'rowDouble', e);\r\n }).on('contextmenu', 'tr', function(e){ // 菜单\r\n if (!options.defaultContextmenu) e.preventDefault();\r\n setRowEvent.call(this, 'rowContextmenu', e);\r\n });\r\n\r\n // 创建行单击、双击、菜单事件\r\n var setRowEvent = function(eventType, e){\r\n var othis = $(this);\r\n if(othis.data('off')) return; // 不触发事件\r\n\r\n // 不触发「行单/双击事件」的子元素\r\n if (eventType !== 'rowContextmenu') {\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\r\n if($(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\r\n return;\r\n }\r\n }\r\n\r\n layui.event.call(\r\n this,\r\n MOD_NAME, eventType + '('+ filter +')',\r\n commonMember.call(othis.children('td')[0], {\r\n e: e\r\n })\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.prop('clientWidth') ||\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 var rAF = window.requestAnimationFrame || function(fn){return setTimeout(fn, 1000 / 60)};\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 = 100;\r\n var rAFStep = 10;\r\n\r\n e.preventDefault();\r\n var cb = function(){\r\n if(step > 0){\r\n step -= rAFStep;\r\n scrollTop += (delta > 0 ? -rAFStep : rAFStep);\r\n that.layMain.scrollTop(scrollTop);\r\n rAF(cb);\r\n }\r\n }\r\n rAF(cb);\r\n });\r\n }\r\n\r\n /**\r\n * 获取元素的大小\r\n * @param {HTMLElement} elem - HTML 元素\r\n */\r\n Class.prototype.getElementSize = function(elem){\r\n if(!window.getComputedStyle) return;\r\n\r\n var style = window.getComputedStyle(elem, null);\r\n return {\r\n height: parseFloat(style.height || '0'),\r\n width: parseFloat(style.width || '0'),\r\n borderTopWidth: parseFloat(style.borderTopWidth || '0'),\r\n borderRightWidth: parseFloat(style.borderRightWidth || '0'),\r\n borderBottomWidth: parseFloat(style.borderBottomWidth || '0'),\r\n borderLeftWidth: parseFloat(style.borderLeftWidth || '0'),\r\n paddingTop: parseFloat(style.paddingTop || '0'),\r\n paddingRight: parseFloat(style.paddingRight || '0'),\r\n paddingBottom: parseFloat(style.paddingBottom || '0'),\r\n paddingLeft: parseFloat(style.paddingLeft || '0'),\r\n marginTop: parseFloat(style.marginTop || '0'),\r\n marginRight: parseFloat(style.marginRight || '0'),\r\n marginBottom: parseFloat(style.marginBottom || '0'),\r\n marginLeft: parseFloat(style.marginLeft || '0'),\r\n boxSizing: style.boxSizing\r\n }\r\n }\r\n\r\n /**\r\n * 获取元素 content 区域宽度值\r\n * \r\n * layui 内置 jQuery v1.12.4 中的 jQuery.fn.width 始终对值四舍五入(3.x 已修复),\r\n * 在支持 subpixel Rendering 的浏览器中渲染表格,由于列宽分配时计算值精度不足,\r\n * 可能会导致一些小问题(#1726)\r\n * \r\n * 这个方法使用 getComputedStyle 获取精确的宽度值进行计算,为了尽可能和以前的行为\r\n * 保持一致(主要是隐藏元素内渲染 table 递归获取父元素宽度 https://github.com/layui/layui/discussions/2398),\r\n * 任何非预期的值,都回退到 jQuery.fn.width。未来的版本使用 ResizeObserver 时,可以直接获取表格视图元素的宽度,\r\n * 并移除兼容性代码\r\n * \r\n * @param {JQuery} elem - 元素的 jQuery 对象\r\n * \r\n * @see {@link https://learn.microsoft.com/zh-cn/archive/blogs/ie_cn/css-3}\r\n */\r\n Class.prototype.getContentWidth = function(elem){\r\n var that = this;\r\n\r\n if(\r\n // document\r\n elem[0].nodeType === 9 ||\r\n // IE 中 border-box 盒模型,getComputedStyle 得到的 width/height 是按照 content-box 计算出来的\r\n (lay.ie && elem.css('box-sizing') === 'border-box') ||\r\n elem.css('display') === 'none'\r\n ){\r\n return elem.width();\r\n }\r\n\r\n var size = that.getElementSize(elem[0]);\r\n\r\n // display: none|inline 元素,getComputedStyle 无法得到准确的 width/height\r\n if(typeof size === 'undefined' || !size.width){\r\n return elem.width();\r\n }else{\r\n return size.boxSizing === 'border-box'\r\n ? size.width - size.paddingLeft - size.paddingRight - size.borderLeftWidth - size.borderRightWidth\r\n : size.width\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 invalidNum = 0;\r\n var arr = [];\r\n var dataCache = [];\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 arr.push(table.clearCacheKey(item));\r\n dataCache.push(item);\r\n }\r\n });\r\n\r\n return {\r\n data: arr, // 选中的数据\r\n dataCache: dataCache, // 选中的原始缓存数据,包含内部特定字段\r\n isAll: (data.length && arr.length) ? (arr.length === (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 var isTreeTable = config.tree && config.tree.view;\r\n if (isTreeTable) {\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 if (isTreeTable) i1 = item1['LAY_DATA_INDEX']; // 兼容 treeTable 索引\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.initIndexName];\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 * 获取当前实例\r\n * @param {string} id 表格id\r\n * @returns {Class}\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 MOD_ID = 'lay-table-id';\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 var HTML_TAG_RE = /<[^>]+?>/;\r\n var ICON_PROPS = ['flexIconClose', 'flexIconOpen', 'iconClose', 'iconOpen', 'iconLeaf', 'icon']\r\n\r\n /**\r\n * 构造器\r\n * @class\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 // treeTable重载数据时,会先加载显示顶层节点,然后根据重载数据前的子节点展开状态,展开相应的子节点,\r\n // 那么如果重载数据前有滚动条滚动在某个位子,重新加载时顶层节点如果比较少,只显示顶层节点时没有滚动条的情况下,\r\n // 自动展开子节点后,滚动条就会显示在顶部,无法保持在重载数据之前的位置。\r\n // 处理保持滚动条的问题,重载数据前记录滚动条的位置\r\n if(reload === 'reloadData' && thatOptionsTemp.scrollPos === 'fixed'){\r\n that.scrollTopCache = that.config.elem.next().find(ELEM_BODY).scrollTop();\r\n }\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 if(options.data !== undefined){\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\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 // undefined: 初始 render 或 reload,两者本质没有区别可以不做区分\r\n // 'reloadData': 重载数据\r\n // 'renderData': 重新渲染数据\r\n var renderType = args[3];\r\n var isRenderData = renderType === '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 // 恢复滚动条位置\r\n if(renderType === 'reloadData' && doneThat.scrollPos === 'fixed'){\r\n tableView.find(ELEM_BODY).scrollTop(that.scrollTopCache);\r\n }\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 if(options && options.tree && options.tree.view){\r\n layui.each(ICON_PROPS, function(i, iconProp){\r\n if(options.tree.view[iconProp] !== undefined){\r\n options.tree.view[iconProp] = that.normalizedIcon(options.tree.view[iconProp]);\r\n }\r\n })\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.normalizedIcon = function(iconStr){\r\n return iconStr\r\n ? HTML_TAG_RE.test(iconStr) ? iconStr : ''\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 // 创建一个空的 map 对象,用于保存所有的节点\r\n var map = {};\r\n var rootNodes = [];\r\n\r\n var idTemp = '';\r\n var pidTemp = '';\r\n layui.each(flatArr, function(index, item){\r\n idTemp = idKey + item[idKey];\r\n pidTemp = idKey + item[pIdKey];\r\n\r\n // 将节点存入 map 对象\r\n if(!map[idTemp]){\r\n map[idTemp] = {};\r\n map[idTemp][childrenKey] = [];\r\n }\r\n\r\n // 合并节点\r\n var tempObj = {};\r\n tempObj[childrenKey] = map[idTemp][childrenKey];\r\n map[idTemp] = $.extend({}, item, tempObj);\r\n\r\n var isRootNode = (rootPid ? map[idTemp][pIdKey] === rootPid : !map[idTemp][pIdKey]);\r\n if(isRootNode){\r\n rootNodes.push(map[idTemp]);\r\n }else{\r\n if(!map[pidTemp]){\r\n map[pidTemp] = {};\r\n map[pidTemp][childrenKey] = [];\r\n }\r\n map[pidTemp][childrenKey].push(map[idTemp]);\r\n }\r\n });\r\n\r\n return rootNodes;\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 var update = function(data, parentIndex){\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 update(item1[childrenKey] || [], dataIndex);\r\n });\r\n }\r\n\r\n update(data, parentIndex);\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(MOD_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 var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n treeTableThat.updateNodeIcon({\r\n scopeEl: trsElem,\r\n isExpand: trExpand,\r\n isParent: trData[isParentKey]\r\n });\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] || trData[LAY_ASYNC_STATUS] === 'error')) {\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 trData[LAY_EXPAND] = false;\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 trData[LAY_EXPAND] = false;\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 }).data('index', childItem[LAY_DATA_INDEX]);\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 }).data('index', childItem[LAY_DATA_INDEX]);\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 }).data('index', childItem[LAY_DATA_INDEX]);\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).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\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 /**\r\n * @typedef updateNodeIconOptions\r\n * @prop {JQuery} scopeEl - tr 元素\r\n * @prop {boolean} isExpand - 是否是展开图标\r\n * @prop {boolean} isParent - 是否是父节点图标\r\n */\r\n /**\r\n * 更新节点图标\r\n * @param {updateNodeIconOptions} opts\r\n */\r\n Class.prototype.updateNodeIcon = function(opts){\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree || {};\r\n var scopeEl = opts.scopeEl;\r\n var isExpand = opts.isExpand;\r\n var isParent = opts.isParent;\r\n\r\n // 处理折叠按钮图标\r\n var flexIconElem = scopeEl.find('.layui-table-tree-flexIcon');\r\n\r\n flexIconElem\r\n .css('visibility', isParent || treeOptions.view.showFlexIconIfNotParent ? 'visible' : 'hidden')\r\n .html(isExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose);\r\n // 处理节点图标\r\n if(treeOptions.view.showIcon){\r\n var nodeIconElem = scopeEl.find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)');\r\n var nodeIcon = isParent \r\n ? (isExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose)\r\n : treeOptions.view.iconLeaf;\r\n\r\n nodeIconElem\r\n .toggleClass('layui-table-tree-iconLeaf', !isParent)\r\n .html(nodeIcon);\r\n }\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 existsData = options.data.length; // 是否直接赋值 data\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 // fix: 修正直接赋值 data 时顶层节点 LAY_DATA_INDEX 值的异常问题\r\n if (existsData) {\r\n dataItem[LAY_DATA_INDEX] = String(dataIndex);\r\n }\r\n var layDataIndex = dataItem[LAY_DATA_INDEX];\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', layDataIndex);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', layDataIndex);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', layDataIndex);\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 (that.normalizedIcon(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[' + MOD_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[' + MOD_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 var treeOptions = options.tree;\r\n\r\n var tableData = treeTable.getData(id);\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n\r\n // 只和同级节点排序\r\n var sort = function(data, field, type){\r\n layui.sort(data, field, type, true);\r\n layui.each(data, function(rowIndex, trData){\r\n sort(trData[childrenKey] || [], field, type);\r\n })\r\n }\r\n\r\n if (options.autoSort) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n sort(tableData, initSort.field, initSort.type === 'desc');\r\n } else {\r\n // 恢复默认\r\n sort(tableData, table.config.indexName, null);\r\n }\r\n // 更新缓存中数据的顺序\r\n table.cache[id] = tableData;\r\n // 重新初始化缓存数据\r\n that.initData(tableData);\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 }).data('index', trIndex));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n // _keepParent 暂时为私有参数,仅供内部使用\r\n treeTable.removeNode = function (id, node, _keepParent) {\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 isParentKey = treeOptions.customName.isParent;\r\n var childrenKey = treeOptions.customName.children;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n var tableCache = table.cache[id];\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, delNode) {\r\n var delNodeDataIndex = delNode[LAY_DATA_INDEX];\r\n indexArr.push('tr[lay-data-index=\"' + delNodeDataIndex + '\"]');\r\n // 删除临时 key\r\n if(delNodeDataIndex.indexOf('-') !== -1){\r\n delete tableCache[delNodeDataIndex]; \r\n }\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n\r\n var deleteCacheKey = function(){\r\n for (var key in tableCache) {\r\n // 根节点 getNodeDataByIndex 内部已处理\r\n if(key.indexOf('-') !== -1){\r\n // L93 updateCache() 中,cacheKey 取自 rowData 中的 LAY_DATA_INDEX,\r\n // 两者不同说明当前 cacheKey 引用的 rowData 已被更新\r\n if(key !== tableCache[key][LAY_DATA_INDEX]){\r\n delete tableCache[key]\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n deleteCacheKey();\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 }).data('index', item3[LAY_DATA_INDEX]);\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(tableCache, function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]')\r\n .attr('data-index', i4)\r\n .data('index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n // 更新父节点状态\r\n if(nodeP){\r\n var trEl = tableView.find('tr[lay-data-index=\"' + nodeP[LAY_DATA_INDEX] + '\"]');\r\n\r\n if(!_keepParent){\r\n nodeP[isParentKey] = !!(nodeP[childrenKey] && nodeP[childrenKey].length);\r\n }\r\n\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: nodeP[LAY_EXPAND],\r\n isParent: nodeP[isParentKey],\r\n }); \r\n }\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).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\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 var hasTr = tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]')[0];\r\n if(hasTr){\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 tableViewElemMAIN.find('tbody').prepend(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').prepend(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').prepend(newNodesHtmlObj.trs_fixed_r);\r\n }\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] + '\"]')\r\n .attr('data-index', i4)\r\n .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 // 更新父节点图标状态\r\n if(parentNode){\r\n var trEl = tableViewElem.find('tr[lay-data-index=\"' + parentNode[LAY_DATA_INDEX] + '\"]');\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: parentNode[LAY_EXPAND],\r\n isParent: parentNode[isParentKey],\r\n }); \r\n }\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\r\n if(data.length > 0){\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 }else{\r\n isAll = false;\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], true);\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 = util.escape(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","/**\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 that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n\r\n if (that.elemItem.length > 1) {\r\n that.events();\r\n }\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 var itemsCount = that.elemItem.length;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n if (itemsCount > 1) {\r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n }\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 var itemsCount = that.elemItem.length;\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 itemsCount > 1 ? options.elem.append(tplArrow) : tplArrow.remove();\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 var itemsCount = that.elemItem.length;\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\r\n itemsCount > 1 ? options.elem.append(tplInd) : tplInd.remove();\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 itemsCount = elemItem.length;\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 || itemsCount <= 1) 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 // 移入移出容器\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 threshold = 'mb' in options ? options.mb : 50; // 临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; // 否自动滚动加载\r\n var moreText = options.moreText || \"加载更多\"; // 手动加载时,加载更多按钮文案\r\n var end = options.end || '没有更多了'; // “末页”显示文案\r\n var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\r\n\r\n // 重复执行时清理旧的事件绑定\r\n that._cleanup(elem, scrollElem);\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '' + moreText + ''\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem[isTop ? 'prepend' : 'append'](more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n var scrollHeightStart = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n var scrollTopStart = scrollElem.scrollTop();\r\n html = $(html);\r\n more[isTop ? 'after' : '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 if(isTop){\r\n var scrollHeightEnd = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n if(page === 1){\r\n // 首次渲染后滑动到底部\r\n scrollElem.scrollTop(scrollHeightEnd);\r\n }else if(page > 1){\r\n var nextElementHeight = scrollHeightEnd - scrollHeightStart;\r\n scrollElem.scrollTop(scrollTopStart + nextElementHeight);\r\n }\r\n }\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.flow', 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 ,direction: options.direction\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll.flow', 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(!isTop ? scrollHeight - top - height <= threshold : top <= threshold){\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 var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\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((isTop ? elemTop + item.height() : 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.lazyimg' , 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 Flow.prototype._cleanup = function(elem, scrollElem){\r\n scrollElem.off('scroll.flow').off('scroll.lazyimg');\r\n elem.find('.layui-flow-more').find('a').off('click.flow');\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 var hasOnCopy = typeof options.onCopy === 'function';\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n if(hasOnCopy){\r\n var ret = options.onCopy(code, true);\r\n if(ret === false) return;\r\n }\r\n\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n if(hasOnCopy){\r\n var ret = options.onCopy(code, false);\r\n if(ret === false) return;\r\n }\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\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/docs/versions.md b/docs/versions.md index cda90835..db029364 100644 --- a/docs/versions.md +++ b/docs/versions.md @@ -9,9 +9,25 @@ toc: true

                                +

                                + v2.9.23 + 2025-02-19 + 稳定版 +

                                + +- #### 基础 + - 新增 6 个图标 #2511 @sentsim +- #### form + - 修复 `form.val()` 某些情况下赋值失效问题 #2503 @Sight-wcg +- #### 公共类 + - 优化 `layui-text` 在混合列表下的显示问题 #2510 @sentsim + +### 下载: [layui-v2.9.23.zip](https://gitee.com/layui/layui/attach_files/2060356/download) + +--- +

                                v2.9.22 - 稳定版 2025-02-14

                                diff --git a/package.json b/package.json index b54205a6..a23df471 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "layui", - "version": "2.9.22", + "version": "2.9.23", "description": "Classic modular Front-End UI library", "keywords": [ "layui", diff --git a/src/layui.js b/src/layui.js index 0ebc276f..d6dcfba9 100644 --- a/src/layui.js +++ b/src/layui.js @@ -16,7 +16,7 @@ }; var Layui = function(){ - this.v = '2.9.22'; // Layui 版本号 + this.v = '2.9.23'; // Layui 版本号 }; // 识别预先可能定义的指定全局对象