diff --git a/.gitee/ISSUE_TEMPLATE.zh-CN.md b/.gitee/ISSUE_TEMPLATE.zh-CN.md index 13b30eeb..ee038b38 100644 --- a/.gitee/ISSUE_TEMPLATE.zh-CN.md +++ b/.gitee/ISSUE_TEMPLATE.zh-CN.md @@ -1,11 +1,11 @@ ### 说明 -- 版本:在此处填写您所使用的 Layui 版本号(必填) -- 描述:在此处填写尽可能详细的问题描述和具体操作步骤等信息(必填) +- 版本: 在此处填写您所使用的 Layui 版本号(必填) +- 描述: 在此处填写详细的问题描述和具体的操作步骤(必填) ### 代码 -在此处填写与问题对应的业务代码(可选) +在此处填写与本次 Issue 相关的业务代码(可选) ### 补充 diff --git a/.gitignore b/.gitignore index 18da638f..da073467 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,6 @@ node_modules/ _site/ .git/ -/release/ -/v/ +release/ +v/ package-lock.json \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d9b8938..96d691f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# ChangeLog -# 更新日志 - https://github.com/layui/layui/releases +- [更新日志](https://layui.dev/docs/versions.html) + +## 发布日志 +- [Github](https://github.com/layui/layui/releases) +- [Gitee](https://gitee.com/layui/layui/releases) \ No newline at end of file diff --git a/README.md b/README.md index 77cd4e77..ee4294a6 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,7 @@ --- -Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,极易上手,拿来即用。其风格简约轻盈,而内在雅致丰盈,甚至包括文档在内的每一处细节都经过精心雕琢,非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架,却并非逆道而行,而是信奉返璞归真之道。确切地说,它更多是面向于追求简单的务实主义者,即无需涉足各类构建工具,只需面向浏览器本身,便可将页面所需呈现的元素与交互信手拈来。 - +Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 `HTML/CSS/JavaScript` 开发模式,极易上手,拿来即用。其风格简约轻盈,而内在雅致丰盈,甚至包括文档在内的每一处细节都经过精心雕琢,非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架,却并非逆道而行,而是信奉返璞归真之道。确切地说,它更多是面向于追求简单的务实主义者,即无需涉足各类构建工具,只需面向浏览器本身,便可将页面所需呈现的元素与交互信手拈来。 ## 快速上手 @@ -38,21 +37,18 @@ Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范 - 开始使用 Layui + Quick Start - Layui - - + @@ -60,16 +56,23 @@ Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范 ``` ## 使用文档 -[**最新文档**](https://layui.github.io) + +[**最新文档**](https://layui.dev) ## 项目参与 + [项目参与者](https://github.com/layui/layui/graphs/contributors) ## 破旧立新 🌱 -Layui 原官网已于2021年10月13日下线。详见: -> 1. Layui 原官网下线公告 2. Layui 原官网为什么要下线? ---- +2016年10月14日,Layui 发布了 `1.0.0` 首版,此后多年被广泛应用在不计其数的 Web 平台。 -鉴于 Layui 相对庞大的受众群体,从此 Github 和 Gitee 平台将支撑起 Layui 的后续。
-**Layui 将继续陪伴着所有为之热爱的人们,共同去探索和论证「Layui 开发模式的可行性」** +2021年10月13日,Layui 发布了原官网下线的公告(导读),并将文档站点切换到了 Gitee Pages,社区及日常维护亦全面转移到了 Gitee 和 Github 平台,并顺带呼吁大家拥抱其他更好的主流框架,导致大家误以为 Layui 停更了。事实上,自那以后,Layui 仍然在 Github 和 Gitee 保持活跃,并不存在所谓的停止更新,从当时的 `2.6.8` 一直连续迭代到如今的最新版本。 + +2023年4月24日,Layui 发布了 `2.8.0` 正式版,并上线了[新的文档站点](https://layui.dev),这是一次朴实的回归,更是情怀的延续。 但我们仍然坚持两年前那则公告中的观点, _即仍然推荐大家去拥抱主流,始终保持对前沿技术的无限热爱,是开发者们都应具备的思维属性_。 **而 Layui 所做的,是为填补主流之外的那些略显狭小的空隙**。Layui 虽不是前端主流,但也早已不是作者个人的 Layui,而是所有仍在坚持使用它的人的 Layui,它仍然支撑着许多项目,也代表着许多人的工作。作为开源创作者,应该要为这些坚持者而守望。 + +未来,Layui 会持续陪伴着所有为之热爱的人们,共同去探索和论证 Layui 开发模式的可行性。 + +## 开源许可 + +Layui 采用 [MIT](https://opensource.org/licenses/MIT) 许可发布。其他相关协议亦可参考《[免责声明](https://gitee.com/layui/layui/blob/main/DISCLAIMER.md)》。 \ No newline at end of file diff --git a/dist/css/layui.css b/dist/css/layui.css index 59777625..12bfcb1a 100644 --- a/dist/css/layui.css +++ b/dist/css/layui.css @@ -1 +1 @@ -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{font-weight:700}h4,h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;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=280);src:url(../font/iconfont.eot?v=280#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=280) format('woff2'),url(../font/iconfont.woff?v=280) format('woff'),url(../font/iconfont.ttf?v=280) format('truetype'),url(../font/iconfont.svg?v=280#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-15px}.layui-col-space32>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scollbar-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}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:Courier New,Lucida Console,Consolas;background-color:#fafafa}.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}.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:#eee!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.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}.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:focus+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-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-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox *{display:inline-block;vertical-align:middle}.layui-form-checkbox span{padding:0 10px;height:100%;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:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;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}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked span,.layui-form-checked:hover span{background-color:#16b777}.layui-form-checked i,.layui-form-checked:hover i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.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:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{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:16px;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] span{background:0 0!important;color:#c2c2c2!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]:hover i.layui-icon-subtraction,.layui-form-checkbox[lay-skin=primary]>i.layui-icon-subtraction{color:#a9a9a9}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;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 em{position:relative;top:0;width:25px;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 em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled span{background-color:#eee!important}.layui-checkbox-disabled i{border-color:#eee!important}.layui-checkbox-disabled em{color:#d2d2d2!important}.layui-checkbox-disabled:hover i{color:#fff!important}[lay-radio]{display:none}.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-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 td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{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}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.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:26px;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}.layui-table-grid-down:hover{background-color:#fbfbfb}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{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 a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:1px 0;width:calc(100% + 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:25px}.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: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:0;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;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:0;top:0;font-size:14px}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:-1px}.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;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,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.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:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray{padding:6px 0}.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-itemed>.layui-nav-child{padding-left:11px;background:0 0!important}.layui-nav-tree.layui-bg-gray .layui-nav-item>a{padding-top:0;padding-bottom:0}.layui-nav-tree.layui-bg-gray .layui-nav-item>a .layui-nav-more{padding:0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New,Lucida Console,Consolas;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{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.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}.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:20px;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:12px;line-height:12px;width:12px;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 3px;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-view{display:block;position:relative;margin:11px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New;font-size:13px}.layui-code-title{position:relative;padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee;font-size:12px}.layui-code-title>.layui-code-about{position:absolute;right:10px;top:0;color:#b7b7b7}.layui-code-about>a{padding-left:10px}.layui-code-view>.layui-code-ol,.layui-code-view>.layui-code-ul{max-height:100%;padding:0!important;position:relative;overflow:auto}.layui-code-view>.layui-code-ol>li{position:relative;margin-top:0!important;margin-left:45px!important;line-height:20px;padding:0 10px!important;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view>.layui-code-ol>li:first-child,.layui-code-view>.layui-code-ul>li:first-child{padding-top:10px!important}.layui-code-view>.layui-code-ol>li:last-child,.layui-code-view>.layui-code-ul>li:last-child{padding-bottom:10px!important}.layui-code-view>.layui-code-ul>li{position:relative;line-height:20px;padding:0 10px!important;list-style-type:none;*list-style-type:none;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-dark{border:1px solid #0c0c0c;border-left-color:#3f3f3f;background-color:#0c0c0c;color:#c2be9e}.layui-code-dark>.layui-code-title{border-bottom:none}.layui-code-dark>.layui-code-ol>li,.layui-code-dark>.layui-code-ul>li{background-color:#3f3f3f;border-left:none}.layui-code-dark>.layui-code-ul>li{margin-left:6px}.layui-code textarea{display:none}.layui-code-preview>.layui-code{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-bottom:none}.layui-code-preview>.layui-code>.layui-code-title{display:none}.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:3px}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.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-ol,.layui-code-full .layui-code-ul{height:calc(100vh - 51px)!important;box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.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}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;height:1px;left:50%;top:50%;margin:-.5px 0 0 -6px;background-color:#2e2d3c;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:18px;height:18px;font-size:18px;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:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1e9fff;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;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;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{padding:8px 11px}.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-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:18px;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;float:left;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:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgnext,.layui-layer-imgprev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-imgprev{left:32px}.layui-layer-imgnext{right:32px}.layui-layer-imgnext:hover,.layui-layer-imgprev:hover{color:#959595}.layui-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:40px;line-height:40px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(2,0,0,.35);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;padding:0 5px;font-size:12px;color:#fff}.layui-layer-imgtit h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:300}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit 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}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;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=280);src:url(../font/iconfont.eot?v=280#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=280) format('woff2'),url(../font/iconfont.woff?v=280) format('woff'),url(../font/iconfont.ttf?v=280) format('truetype'),url(../font/iconfont.svg?v=280#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-15px}.layui-col-space32>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scollbar-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}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:Courier New,Lucida Console,Consolas;background-color:#fafafa}.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}.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:#eee!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.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}.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:focus+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-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-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox *{display:inline-block;vertical-align:middle}.layui-form-checkbox span{padding:0 10px;height:100%;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:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;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}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked span,.layui-form-checked:hover span{background-color:#16b777}.layui-form-checked i,.layui-form-checked:hover i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.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:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{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:16px;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] span{background:0 0!important;color:#c2c2c2!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:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#d2d2d2}.layui-form-checkbox[lay-skin=primary]:hover .layui-icon-indeterminate:before{background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;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 em{position:relative;top:0;width:25px;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 em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled span{background-color:#eee!important}.layui-checkbox-disabled i{border-color:#eee!important}.layui-checkbox-disabled em{color:#d2d2d2!important}.layui-checkbox-disabled:hover i{color:#fff!important}[lay-radio]{display:none}.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-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 td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{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}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.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:26px;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}.layui-table-grid-down:hover{background-color:#fbfbfb}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{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 a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:1px 0;width:calc(100% + 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:25px}.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: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:0;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;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:0;top:0;font-size:14px}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:-1px}.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;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,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.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:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray{padding:6px 0}.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-itemed>.layui-nav-child{padding-left:11px;background:0 0!important}.layui-nav-tree.layui-bg-gray .layui-nav-item>a{padding-top:0;padding-bottom:0}.layui-nav-tree.layui-bg-gray .layui-nav-item>a .layui-nav-more{padding:0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New,Lucida Console,Consolas;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{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.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}.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:20px;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:12px;line-height:12px;width:12px;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 3px;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-view{display:block;position:relative;margin:11px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New;font-size:13px}.layui-code-title{position:relative;padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee;font-size:12px}.layui-code-title>.layui-code-about{position:absolute;right:10px;top:0;color:#b7b7b7}.layui-code-about>a{padding-left:10px}.layui-code-view>.layui-code-ol,.layui-code-view>.layui-code-ul{max-height:100%;padding:0!important;position:relative;overflow:auto}.layui-code-view>.layui-code-ol>li{position:relative;margin-top:0!important;margin-left:45px!important;line-height:20px;padding:0 10px!important;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view>.layui-code-ol>li:first-child,.layui-code-view>.layui-code-ul>li:first-child{padding-top:10px!important}.layui-code-view>.layui-code-ol>li:last-child,.layui-code-view>.layui-code-ul>li:last-child{padding-bottom:10px!important}.layui-code-view>.layui-code-ul>li{position:relative;line-height:20px;padding:0 10px!important;list-style-type:none;*list-style-type:none;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-dark{border:1px solid #0c0c0c;border-left-color:#3f3f3f;background-color:#0c0c0c;color:#c2be9e}.layui-code-dark>.layui-code-title{border-bottom:none}.layui-code-dark>.layui-code-ol>li,.layui-code-dark>.layui-code-ul>li{background-color:#3f3f3f;border-left:none}.layui-code-dark>.layui-code-ul>li{margin-left:6px}.layui-code textarea{display:none}.layui-code-preview>.layui-code{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-bottom:none}.layui-code-preview>.layui-code>.layui-code-title{display:none}.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:3px}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.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-ol,.layui-code-full .layui-code-ul{height:calc(100vh - 51px)!important;box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.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}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;height:1px;left:50%;top:50%;margin:-.5px 0 0 -6px;background-color:#2e2d3c;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:18px;height:18px;font-size:18px;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:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1e9fff;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;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;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{padding:8px 11px}.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-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:18px;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;float:left;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:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgnext,.layui-layer-imgprev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-imgprev{left:32px}.layui-layer-imgnext{right:32px}.layui-layer-imgnext:hover,.layui-layer-imgprev:hover{color:#959595}.layui-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:40px;line-height:40px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(2,0,0,.35);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;padding:0 5px;font-size:12px;color:#fff}.layui-layer-imgtit h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:300}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit 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}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file diff --git a/dist/layui.js b/dist/layui.js index cbda2d21..c0bfe902 100644 --- a/dist/layui.js +++ b/dist/layui.js @@ -1 +1 @@ -/** v2.8.0-rc.16 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.8.0-rc.16"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,r=e.length-1,n=r;01e3*m.timeout/4?g(u+" is not a valid module","error"):void(m.status[u]?c():setTimeout(n,4))}())}function c(){e.push(layui[u]),11e3*m.timeout/4?g(u+" is not a valid module","error"):void("string"==typeof m.modules[u]&&m.status[u]?c():setTimeout(f,4))}():((p=h.createElement("script"))["async"]=!0,p.charset="utf-8",p.src=y+((i=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+i:""),a.appendChild(p),!p.attachEvent||p.attachEvent.toString&&p.attachEvent.toString().indexOf("[native code")<0||b?p.addEventListener("load",function(t){s(t,y)},!1):p.attachEvent("onreadystatechange",function(t){s(t,y)}),m.modules[u]=y),o},n.prototype.disuse=function(t){var r=this;return t=r.isArray(t)?t:[t],r.each(t,function(t,e){m.status[e],delete r[e],delete N[e],delete r.modules[e],delete m.status[e],delete m.modules[e]}),r},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(r,n,t){var o=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),t=((t="string"==typeof n?n:t)||r).replace(/\.|\//g,""),a=i.id="layuicss-"+t,u="creating",l=0;return i.rel="stylesheet",i.href=r+(m.debug?"?v="+(new Date).getTime():""),i.media="all",h.getElementById(a)||e.appendChild(i),"function"!=typeof n||function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(r+" timeout"):void(1989===parseInt(o.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),o},n.prototype.addcss=function(t,e,r){return layui.link(m.dir+"css/"+t,e,r)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,r){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof r&&r(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var r={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),r.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),r.search[e[0]]=e[1]):r.path.push(e)})),r},n.prototype.url=function(t){var o,e,r=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(o={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),r.each(e,function(t,e){var r=e.indexOf("="),n=r<0?e.substr(0,e.length):0!==r&&e.substr(0,r);n&&(o[n]=0(l.innerHeight||f.documentElement.clientHeight)},h.position=function(t,e,n){var o,r,i,c,u,a,s;e&&(n=n||{},t!==f&&t!==h("body")[0]||(n.clickType="right"),u="right"===n.clickType?{left:(u=n.e||l.event||{}).clientX,top:u.clientY,right:u.clientX,bottom:u.clientY}:t.getBoundingClientRect(),a=e.offsetWidth,s=e.offsetHeight,o=function(t){return f.body[t=t?"scrollLeft":"scrollTop"]|f.documentElement[t]},i=u.left,c=u.bottom,"center"===n.align?i-=(a-t.offsetWidth)/2:"right"===n.align&&(i=i-a+t.offsetWidth),(i=i+a+5>(r=function(t){return f.documentElement[t?"clientWidth":"clientHeight"]})("width")?r("width")-a-5:i)<5&&(i=5),c+s+5>r()&&(u.top>s+5?c=u.top-s-10:"right"===n.clickType?(c=r()-s-10)<0&&(c=0):c=5),(a=n.position)&&(e.style.position=a),e.style.left=i+("fixed"===a?0:o(1))+"px",e.style.top=c+("fixed"===a?0:o())+"px",h.hasScrollbar()||(s=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&s.bottom+5>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){h.position(t,e,n)},50))))},h.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===f)return{};var t=h(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(o){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+o].join("\n"),"error"),{}}},h.isTopElem=function(n){var t=[f,h("body")[0]],o=!1;return h.each(t,function(t,e){if(e===n)return o=!0}),o},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),h.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),h.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.prototype.find=function(o){var r=this,i=0,c=[],u="object"==typeof o;return this.each(function(t,e){for(var n=u?e.contains(o):e.querySelectorAll(o||null);i]|&(?=#[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 t,i,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r&&e.push(''+(n.last||n.pages)+"")),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(t=['"),refresh:['','',""].join(""),skip:['到第','','页',""].join("")};return['
',(i=[],layui.each(n.layout,function(e,a){l[a]&&i.push(l[a])}),i.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,p){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){v.path&&i.lay&&lay.layui&&lay.layui.link(v.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",v={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+v.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}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],D="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",T="layui-laydate-preview",E="layui-laydate-main",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++v.index,a.config=lay.extend({},a.config,v.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
\u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
","
\u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uff1a
","
It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart&&(o.weekStart=0)),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(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),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value)))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+D:"",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"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
  • '+t.text+"
  • ")}),i.join(""))).find("li").on("click",function(e){var t=(o.shortcuts[this.dataset.index]||{}).value||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&!o.range&&o.autoConfirm&&("date"===n?r.choose(lay(y).find("td.layui-this")):"year"!==n&&"month"!==n||lay(m[0]).find("."+E+" li."+x+":not(.laydate-disabled)")[0]&&r.setValue(r.parse()).done().remove())})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),g=[],t=(lay.each(o.theme,function(e,t){/^#/.test(t)&&(l=!0,g.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;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t)))}),o.shortcuts&&o.range&&g.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),g.length&&(g=g.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=g):f.innerHTML=g,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),v.thisId=o.id,s?o.elem.append(y):(p.body.appendChild(y),r.position()),o.shade?'
    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(D)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete v.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t&&(e.date=t,o=!0))},r=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)?(n=s.dateTime=lay.extend({},s.max),u=!0):d.getDateTime(n)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),u=!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)),u&&l&&(d.setValue(d.parse()),d.hint("value "+a.invalidDate+a.formatError[1])),d.startDate=d.startDate||l&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e(),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"!==layui.type(e.holidays)||lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowl.max,t.elem&&t.elem[a?"addClass":"removeClass"](k),a},I.prototype.thisDateTime=function(e){var t=this.config;return e?this.endDate:t.dateTime},I.prototype.calendar=function(e,t,a){var i,l,r,o=this,n=o.config,t=t?1:0,d=e||o.thisDateTime(t),s=new Date,y=o.lang(),m="date"!==n.type&&"datetime"!==n.type,u=lay(o.table[t]).find("td"),c=lay(o.elemHeader[t][2]).find("span");return d.yearh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=v.getEndDate(d.month||12,d.year),r=v.getEndDate(d.month+1,d.year),lay.each(u,function(e,t){var a=[d.year,d.month],n=0;(t=lay(t)).removeAttr("class"),e"+a[2]+""),o.mark(t,a).holidays(t,a).limit({elem:t,date:{year:a[0],month:a[1]-1,date:a[2]},index:e})}),lay(c[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(c[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(c[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[d.month]),lay(c[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(u=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(),index:0,time:u}),o.limit({elem:lay(o.footer).find(C),index:0,time:u})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,u=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],c=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],g="cn"===s.lang,p=g?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+p,u.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(c[g?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+p+" - "+(l-1)+p)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(g?"\u6708":""),u.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(c[g?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+p)):"time"===n&&(r=function(){lay(u).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

    "+m.time[t]+"

      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
    ",u.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(u),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(u).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(u).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(u).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},c=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),c[0]&&c.remove(),a[2].appendChild(e),lay(u).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout))},I.prototype.parse=function(e,t){var a=this,n=a.config,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},a.rangeLinked?a.startDate:n.dateTime,a.startTime):n.dateTime),t=v.parse(t,a.format,1);return n.range&&e===undefined?t+" "+a.rangeStr+" "+a.parse("end"):t},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"===a.position||(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+T),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html()&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300)))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o)),r&&(i.dateTime=lay.extend({},n.startDate))),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){v.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(p).on("mousedown",function(e){var t,a;!v.thisId||(t=s.getThis(v.thisId))&&(a=t.config,e.target!==a.elem[0]&&e.target!==a.eventElem[0]&&e.target!==n(a.closeStop)[0]&&t.remove())}).on("keydown",function(e){var t;!v.thisId||(t=s.getThis(v.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(v.thisId){var e=s.getThis(v.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},v.render=function(e){e=new I(e);return s.call(e)},v.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},v.getInst=function(e){e=s.getThis(e);if(e)return e.inst},v.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},v.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},v.close=function(e){e=s.getThis(e||v.thisId);if(e)return e.remove()},v.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("")},v.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?(v.ready(),layui.define("lay",function(e){v.path=layui.cache.dir,l.run(lay),e(a,v)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),v}):(v.ready(),l.run(i.lay),i.laydate=v)}(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){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(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=w(n,!0))&&(t=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)return this;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]);return this}if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}return this.context=g,this.selector=e,this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
    a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:y.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
    t
    ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight)),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o&&(i.left=o)),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
    a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined||(this.value=e))})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"":"";return a.zIndex=o,t([a.shade?'
    ':"",'
    '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
    ':''):"")+((1!=a.type||!e)&&a.content||"")+'
    '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
    "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t=0,i=a.btn.length;t'+a.btn[t]+"";return'
    '+e+"
    "}():"")+(a.resize?'':"")+""],s,m('
    ')),this},t.pt.creat=function(){var e,n=this,a=n.config,o=n.index,s="object"==typeof(r=a.content),l=m("body");if(!a.id||!m("."+d[0]).find("#"+a.id)[0]){switch(a.removeFocus&&document.activeElement.blur(),"string"==typeof a.area&&(a.area="auto"===a.area?["",""]:[a.area,""]),a.shift&&(a.anim=a.shift),6==h.ie&&(a.fixed=!1),a.type){case 0:a.btn="btn"in a?a.btn:f.btn[0],h.closeAll("dialog");break;case 2:var r=a.content=s?a.content:[a.content||"","auto"];a.content='';break;case 3:delete a.title,delete a.closeBtn,-1===a.icon&&a.icon,h.closeAll("loading");break;case 4:s||(a.content=[a.content,"body"]),a.follow=a.content[1],a.content=a.content[0]+'',delete a.title,a.tips="object"==typeof a.tips?a.tips:[a.tips,!0],a.tipsMore||h.closeAll("tips")}n.vessel(s,function(e,t,i){l.append(e[0]),s?2==a.type||4==a.type?m("body").append(e[1]):r.parents("."+d[0])[0]||(r.data("display",r.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+d[0]+o).find("."+d[5]).before(t)):l.append(e[1]),m("#"+d.MOVE)[0]||l.append(f.moveElem=i),n.layero=m("#"+d[0]+o),n.shadeo=m("#"+d.SHADE+o),a.scrollbar||d.html.css("overflow","hidden").attr("layer-full",o)}).auto(o),n.shadeo.css({"background-color":a.shade[1]||"#000",opacity:a.shade[0]||a.shade}),2==a.type&&6==h.ie&&n.layero.find("iframe").attr("src",r[0]),4==a.type?n.tips():(n.offset(),parseInt(f.getStyle(document.getElementById(d.MOVE),"z-index"))||(n.layero.css("visibility","hidden"),h.ready(function(){n.offset(),n.layero.css("visibility","visible")}))),!a.fixed||f.events.resize[n.index]||(f.events.resize[n.index]=function(){n.resize()},c.on("resize",f.events.resize[n.index])),a.time<=0||setTimeout(function(){h.close(n.index)},a.time),n.move().callback(),d.anim[a.anim]&&(e="layer-anim "+d.anim[a.anim],n.layero.addClass(e).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(e)})),a.isOutAnim&&n.layero.data({isOutAnim:!0,anim:a.anim})}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+d[0]+e),n=(""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth)),[i.innerWidth(),i.innerHeight()]),a=i.find(d[1]).outerHeight()||0,o=i.find("."+d[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+d[5])):t.fixed&&n[1]>=c.height()&&(n[1]=c.height(),e("."+d[5])):e("."+d[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=(c.height()-n[1])/2,e.offsetLeft=(c.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=c.width()-n[0]:"b"===t.offset?e.offsetTop=c.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=c.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=c.width()-n[0]):"rb"===t.offset?(e.offsetTop=c.height()-n[1],e.offsetLeft=c.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?c.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?c.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=c.scrollTop(),e.offsetLeft+=c.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=c.height()-(i.find(d[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0c.width()&&(a=c.width()-180-(f.minStackArr.edgeIndex=f.minStackArr.edgeIndex||0,f.minStackArr.edgeIndex+=3))<0&&(a=0),t.minStack&&(s.left=a,s.top=c.height()-i,n||f.minStackIndex++,l.attr("minLeft",a)),l.attr("position",o),h.style(e,s,!0),l.find(".layui-layer-min").hide(),"page"===l.attr("type")&&l.find(d[4]).hide(),f.rescollbar(e),r.hide())},h.restore=function(e){var t=m("#"+d[0]+e),i=m("#"+d.SHADE+e),n=t.attr("area").split(","),a=t.attr("type");t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(d[4]).show(),f.rescollbar(e),i.show()},h.full=function(t){var i=m("#"+d[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),f.record(i),d.html.attr("layer-full")||d.html.css("overflow","hidden").attr("layer-full",t),clearTimeout(void 0),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:c.scrollTop(),left:e?0:c.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+d[0]+(t||h.index)).find(d[1]).html(e)},h.close=function(a,o){var s,e,l=(t=m("."+d[0]).find("#"+a).closest("."+d[0]))[0]?(a=t.attr("times"),t):m("#"+d[0]+a),r=l.attr("type"),t=l.data()||{},i={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close";l[0]&&(s="layui-layer-wrap",e=function(){if(r===f.type[1]&&"object"===l.attr("conType")){l.children(":not(."+d[5]+")").remove();for(var e=l.find("."+s),t=0;t<2;t++)e.unwrap();e.css("display",e.data("display")).removeClass(s)}else{if(r===f.type[2])try{var i=m("#"+d[4]+a)[0];i.contentWindow.document.write(""),i.contentWindow.close(),l.find("."+d[5])[0].removeChild(i)}catch(n){}l[0].innerHTML="",l.remove()}"function"==typeof f.end[a]&&f.end[a](),delete f.end[a],"function"==typeof o&&o(),f.events.resize[a]&&(c.off("resize",f.events.resize[a]),delete f.events.resize[a])},t.isOutAnim&&l.addClass("layer-anim "+i),m("#layui-layer-moves, #"+d.SHADE+a).remove(),6==h.ie&&f.reselect(),f.rescollbar(a),"string"==typeof l.attr("minLeft")&&(f.minStackIndex--,f.minStackArr.push(l.attr("minLeft"))),h.ie&&h.ie<10||!l.data("isOutAnim")?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+d[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:c.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)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
      '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
    ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=n||{}).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=(o.imgIndex=1+(0|l),n.img=n.img||"img",n.success);if(delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.event=function(){o.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup)},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(e[0]>t[0]||e[1]>t[1])&&((t=[e[0]/t[0],e[1]/t[1]])[1]'+i+''+(t=['
    '],1','','',"
    "].join("")),n.hideFooter||t.push(['
    ','
    ',"

    "+i+"

    ",""+o.imgIndex+" / "+s.length+"",'\u67e5\u770b\u539f\u56fe',"
    ","
    "].join("")),t.push(""),t.join(""))+"",success:function(e,t){o.bigimg=e.find(".layui-layer-phimg"),o.imgsee=e.find(".layui-layer-imgbar"),o.event(e),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(a));layui.each(i.bars,function(e,t){var n=s('
  • ');n.addClass(t.icon).attr({"lay-type":t.type,style:t.style||"background-color: "+i.bgcolor}).html(t.content),n.on("click",function(){var e=s(this).attr("lay-type");"top"===e&&("body"===i.target?s("html,body"):c).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,e)}),"object"===layui.type(i.on)&&layui.each(i.on,function(e,t){n.on(e,function(){var e=s(this).attr("lay-type");"function"==typeof t&&t.call(this,e)})}),"top"===t.type&&(n.addClass("layui-fixbar-top"),o=n),u.append(n)}),l.find("."+a).remove(),"object"==typeof i.css&&u.css(i.css),l.append(u),o&&(t=function t(){return c.scrollTop()>=i.margin?e||(o.show(),e=1):e&&(o.hide(),e=0),t}()),c.on("scroll",function(){t&&(clearTimeout(n),n=setTimeout(function(){t()},100))})},countdown:function(e,t,n){var i=this,o="function"==typeof t,a=new Date(e).getTime(),r=new Date(!t||o?(new Date).getTime():t).getTime(),a=a-r,l=[Math.floor(a/864e5),Math.floor(a/36e5)%24,Math.floor(a/6e4)%60,Math.floor(a/1e3)%60],o=(o&&(n=t),setTimeout(function(){i.countdown(e,r+1e3,n)},1e3));return n&&n(0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e},unescape:function(e){return e!==undefined&&null!==e||(e=""),(e+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(e){var t=(e=e||{}).window||window.open(e.url||"",e.target,e.specs);e.url||(t.document.open("text/html","replace"),t.document.write(e.content||""),t.document.close())},toVisibleArea:function(e){var t,n,i,o,a,r,l,c;(e=s.extend({margin:160,duration:200,type:"y"},e)).scrollElem[0]&&e.thisElem[0]&&(t=e.scrollElem,l=e.thisElem,i=(a="y"===e.type)?"top":"left",o=t[n=a?"scrollTop":"scrollLeft"](),a=t[a?"height":"width"](),r=t.offset()[i],c={},((l=l.offset()[i]-r)>a-e.margin||l."+h,k=function(e){var i=this;i.index=++p.index,i.config=s.extend({},i.config,p.config,e),i.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0},k.prototype.reload=function(e,i){var t=this;t.config=s.extend({},t.config,e),t.init(!0,i)},k.prototype.init=function(e,i){var t,n=this,a=n.config,l=s(a.elem);return 1');return 0no menu
  • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i.child&&0",(t="href"in i?''+l+"":l,n?'
    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
    ":'
    '+t+"
    "),""].join(""))).data("item",i),n&&(a=s('
    '),t=s("
      "),"parent"===o?(a.append(u(t,i.child)),l.append(a)):l.append(u(t,i.child))),r.append(l))}),r},a=['
      ',"
      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(c+"_opened")||(l.elemView=s("."+f+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=s(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),p.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(c+"_opened",!0),e=d.shade?'
      ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(y.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(y.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=s(this),t=i.data("item")||{},n=t.child&&0n.width()&&(t.addClass(V),(i=t[0].getBoundingClientRect()).left<0&&t.removeClass(V)),i.bottom>n.height()&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5)))}).on("mouseleave",t,function(e){var i=s(this).children("."+C);i.removeClass(V),i.css("margin-top",0)}),p.close=function(e){e=y.getThis(e);return e?(e.remove(),y.call(e)):this},p.reload=function(e,i,t){e=y.getThis(e);return e?(e.reload(i,t),y.call(e)):this},p.reloadData=function(){var t=s.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]}),p.reload.apply(null,t)},p.render=function(e){e=new k(e);return y.call(e)},e(r,p)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.min?e:n.min,n.value[1]=i>n.min?i:n.min,n.value[0]=n.value[0]>n.max?n.max:n.value[0],n.value[1]=n.value[1]>n.max?n.max:n.value[1],i=Math.floor((n.value[0]-n.min)/(n.max-n.min)*100),t=(s=Math.floor((n.value[1]-n.min)/(n.max-n.min)*100))-i+"%",i+="%",s+="%"):("object"==typeof n.value&&(n.value=Math.min.apply(null,n.value)),n.valuen.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
      '+(n.tips?'
      ':"")+'
      '+(n.range?'
      ':"")+"
      ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
      ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
      '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,u=o.elemTemp,d=function(){return"vertical"===r.type?r.height:u[0].offsetWidth},c=u.find("."+b),m=u.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/d()*100/p,t=Math.round(i)*p;return t=e==d()?Math.ceil(i)*p:t},y=g(['
      d()?d():i)/d()*100/p;f(i,l),s.addClass(L),u.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),u.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),u.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?d()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>d()?d():i)/d()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
      "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",i.predefine?(o=['
      '],layui.each(i.colors,function(e,i){o.push(['
      ','
      ',"
      "].join(""))}),o.push("
      "),o.join("")):"",'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close&&i.close(this.color)),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+T),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o&&r.find("input").val(t),"rgba"===o&&(e=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+e.r+", "+e.g+", "+e.b+", 1)"),i.elemPicker.find("."+E).css("left",280)):(r.find("input").val(t),o=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+E).css("left",o)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+e.r+", "+e.g+", "+e.b+", 0), rgb("+e.r+", "+e.g+", "+e.b+"))")):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+E).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+M),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+E),g=e[0].offsetTop/180*360,h=100-(r[0].offsetTop+3)/180*100,p=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+T).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+T).find("input").val())},o=m(['
      '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,p,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top,i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,p,h,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,p=t,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,p=o,h=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,p,h,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,p,h,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,p=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)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+M).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+T+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();if(-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i)return c.select(r.h,r.s,r.b,i),void(a.change&&a.change(o));c.color=l,a.done&&a.done(l),c.removePicker()}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;!n.thisId||(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),o="element",c="layui-this",y="layui-show",s=".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,o,t,i)},i.prototype.tabAdd=function(t,i){var a,t=u(".layui-tab[lay-filter="+t+"]"),e=t.children(s),l=e.children(".layui-tab-bar"),t=t.children(".layui-tab-content"),n=""+(i.title||"unnaming")+"";return l[0]?l.before(n):e.append(n),t.append('
      '+(i.content||"")+"
      "),C.hideTabMore(!0),C.tabAuto(),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(s).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(s).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",l="layui-nav-bar",p="layui-nav-tree",b="layui-nav-child",v="layui-nav-more",m="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(c).siblings().removeClass(c),i.eq(t).addClass(y).siblings().removeClass(y)),layui.event.call(this,o,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.index(),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(c)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,o,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(){var e="layui-tab-bar",l="layui-tab-close",n=this;u(".layui-tab").each(function(){var t=u(this),i=t.children(".layui-tab-title"),a=(t.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),a=u('');n===window&&8!=d.ie&&C.hideTabMore(!0),t.attr("lay-allowclose")&&i.find("li").each(function(){var t,i=u(this);i.find("."+l)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof t.attr("lay-unauto")&&(i.prop("scrollWidth")>i.outerWidth()+1?i.find("."+e)[0]||(i.append(a),t.attr("overflow",""),a.on("click",function(t){i[this.title?"removeClass":"addClass"]("layui-tab-more"),this.title=this.title?"":"\u6536\u7f29"})):(i.find("."+e).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.parents(h),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+b),n="string"==typeof e.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+c).removeClass(c),e.addClass(c)),i.hasClass(p)&&(l.removeClass(m),l[0]&&(e["none"===l.css("display")?"addClass":"removeClass"](f+"ed"),"all"===i.attr("lay-shrink")&&e.siblings().removeClass(f+"ed"))),layui.event.call(this,o,"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("."+y)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(y)),a[n?"addClass":"removeClass"](y),i.html(n?"":""),layui.event.call(this,o,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(h+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+l)[0]||(i.append(a),(i.hasClass(p)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+b);i.hasClass(p)?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(m),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(y),l.find("."+v).addClass(v+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(p)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+b).removeClass(y),i.find("."+v).removeClass(v+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(p)||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("."+b)[0]&&!t.children("."+v)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),e.on("click",C.hideTabMore),u(window).on("resize",C.tabAuto),t(o,a)});layui.define(["lay","layer"],function(e){"use strict";var y=layui.$,t=layui.layer,F=layui.device(),i={config:{},set:function(e){var t=this;return t.config=y.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,n,e,t)}},n="upload",a="layui-upload-file",o="layui-upload-form",b="layui-upload-iframe",x="layui-upload-choose",w=function(e){var t=this;t.config=y.extend({},t.config,i.config,e),t.render()};w.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},w.prototype.render=function(e){var t=this;(e=t.config).elem=y(e.elem),e.bindAction=y(e.bindAction),t.file(),t.events()},w.prototype.file=function(){var e=this,t=e.config,i=e.elemFile=y(['"].join("")),n=t.elem.next();(n.hasClass(a)||n.hasClass(o))&&n.remove(),F.ie&&F.ie<10&&t.elem.wrap('
      '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(i),F.ie&&F.ie<10&&e.initIE()},w.prototype.initIE=function(){var i,e=this.config,t=y(''),n=y(['
      ',"
      "].join(""));y("#"+b)[0]||y("body").append(t),e.elem.next().hasClass(o)||(this.elemFile.wrap(n),e.elem.next("."+o).append((i=[],layui.each(e.data,function(e,t){t="function"==typeof t?t():t,i.push('')}),i.join(""))))},w.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},w.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},w.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)}})},w.prototype.upload=function(e,t){var i,n,a,o,l=this,r=l.config,u=l.elemFile[0],c=function(){return e||l.files||l.chooseFiles||u.files},s=function(){var t=0,a=0,e=c(),o=function(){r.multiple&&t+a===l.fileLength&&"function"==typeof r.allDone&&r.allDone({total:l.fileLength,successful:t,failed:a})};layui.each(e,function(i,e){var n=new FormData,e=(layui.each(r.data,function(e,t){t="function"==typeof t?t():t,n.append(e,t)}),n.append(r.field,e),{url:r.url,type:"post",data:n,contentType:!1,processData:!1,dataType:"json",headers:r.headers||{},success:function(e){t++,p(i,e),o()},error:function(e){a++,l.msg("Request URL is abnormal: "+(e.statusText||"error")),d(i),o()}});"function"==typeof r.progress&&(e.xhr=function(){var e=y.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var t;e.lengthComputable&&(t=Math.floor(e.loaded/e.total*100),r.progress(t,(r.item||r.elem)[0],e,i))}),e}),y.ajax(e)})},f=function(){var n=y("#"+b);l.elemFile.parent().submit(),clearInterval(w.timer),w.timer=setInterval(function(){var e,t=n.contents().find("body");try{e=t.text()}catch(i){l.msg("Cross-domain requests are not supported"),clearInterval(w.timer),d()}e&&(clearInterval(w.timer),t.html(""),p(0,e))},30)},p=function(e,t){if(l.elemFile.next("."+x).remove(),u.value="","json"===r.force&&"object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},l.msg("Please return JSON data format")}"function"==typeof r.done&&r.done(t,e||0,function(e){l.upload(e)})},d=function(e){r.auto&&(u.value=""),"function"==typeof r.error&&r.error(e||0,function(e){l.upload(e)})},m=r.exts,h=(n=[],layui.each(e||l.chooseFiles,function(e,t){n.push(t.name)}),n),g={preview:function(e){l.preview(e)},upload:function(e,t){var i={};i[e]=t,l.upload(i)},pushFile:function(){return l.files=l.files||{},layui.each(l.chooseFiles,function(e,t){l.files[e]=t}),l.files},resetFile:function(e,t,i){t=new File([t],i);l.files=l.files||{},l.files[e]=t}},v={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[r.accept]||"\u6587\u4ef6",h=0===h.length?u.value.match(/[^\/\\]+\..+/g)||[]||"":h;if(0!==h.length){switch(r.accept){case"file":layui.each(h,function(e,t){if(m&&!RegExp(".\\.("+m+")$","i").test(escape(t)))return i=!0});break;case"video":layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(t)))return i=!0});break;case"audio":layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"mp3|wav|mid")+")$","i").test(escape(t)))return i=!0});break;default:layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"jpg|png|gif|bmp|jpeg")+")$","i").test(escape(t)))return i=!0})}if(i)return l.msg("\u9009\u62e9\u7684"+v+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),u.value="";if("choose"!==t&&!r.auto||(r.choose&&r.choose(g),"choose"!==t)){if(l.fileLength=(a=0,v=c(),layui.each(v,function(){a++}),a),r.number&&l.fileLength>r.number)return l.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+r.number+" \u4e2a\u6587\u4ef6
      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+l.fileLength+" \u4e2a\u6587\u4ef6");if(01024*r.size&&(t=1<=(t=r.size/1024)?t.toFixed(2)+"MB":r.size+"KB",u.value="",o=t)}),o)return l.msg("\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!r.before||!1!==r.before(g))F.ie?(9'+e+"")},r=function(){var e=y(this);(e.attr("lay-data")||e.attr("lay-options"))&&(n.config=y.extend({},a,lay.options(this,{attr:e.attr("lay-data")?"lay-data":null})))};a.elem.off("upload.start").on("upload.start",function(){var e=y(this);r.call(this),n.config.item=e,n.elemFile[0].click()}),F.ie&&F.ie<10||a.elem.off("upload.over").on("upload.over",function(){y(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){y(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,t){var i=y(this),t=t.originalEvent.dataTransfer.files||[];i.removeAttr("lay-over"),r.call(this),o(t),a.auto?n.upload():l(t)}),n.elemFile.off("upload.change").on("upload.change",function(){var e=this.files||[];r.call(this),o(e),a.auto?n.upload():l(e)}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data("haveEvents")||(n.elemFile.on("change",function(){y(this).trigger("upload.change")}),a.elem.on("click",function(){n.isFile()||y(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),y(this).trigger("upload.over")}).on("dragleave",function(e){y(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),y(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){y(this).trigger("upload.action")}),a.elem.data("haveEvents",!0))},i.render=function(e){e=new w(e);return function(){var t=this;return{upload:function(e){t.upload.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}}.call(e)},e(n,i)});layui.define(["lay","layer","util"],function(e){"use strict";var b=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",T="layui-this",$="layui-hide",F="layui-disabled",t=function(){this.config={verify:{required:[/[\S]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(!e||isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]},autocomplete:null}},i=(t.prototype.set=function(e){return b.extend(!0,this.config,e),this},t.prototype.verify=function(e){return b.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return b(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=b(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;b(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=b(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){e=e||a.find("input,textarea");i.autocomplete&&e.attr("autocomplete",i.autocomplete),a.find("input[lay-affix],textarea[lay-affix]").each(function(){var l=b(this),r=l.attr("lay-affix"),s="layui-input-suffix",o="layui-input-affix",e=l.is("[disabled]")||l.is("[readonly]"),c=function(e,t){(e=b(e))[0]&&e[b.trim(t)?"removeClass":"addClass"]($)},n=function(t){t=b.extend({},u[r]||{value:r},t,lay.options(l[0]));var i=b('
      '),e=b(''),a=(i.append(e),t.split&&i.addClass("layui-input-split"),l.next("."+o)),n=(a[0]&&a.remove(),l.next("."+s));n[0]?((a=n.find("."+o))[0]&&a.remove(),n.prepend(i),l.css("padding-right",function(){return(l.closest(".layui-input-group")[0]?0:n.outerWidth())+i.outerWidth()})):(i.addClass(s),l.after(i)),"auto"===t.show&&c(i,l.val()),l.on("input propertychange",function(){var e=this.value;"auto"===t.show&&c(i,e)}),e.on("click",function(){var e=l.attr("lay-filter");b(this).hasClass(F)||("function"==typeof t.click&&t.click.call(this,l,t),layui.event.call(this,w,"input-affix("+e+")",{elem:l[0],affix:r,options:t}))})},u={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(),c(b(this).parent(),null)},show:"auto",disabled:e}};n()})},select:function(e){var v,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",k="",e=e||a.find("select"),C=function(e,t){b(e.target).parent().hasClass(g)&&!t||(b("."+m).removeClass(m+"ed "+m+"up"),v&&k&&v.val(k)),v=null},u=function(a,e,t){var s,r,i,n,o,l,c=b(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),p=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-q.scrollTop(),t=f.outerHeight();p=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass($),y.removeClass($),s=null,h.removeClass(T),0<=p&&h.eq(p).addClass(T),e+t>q.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(k=b(c[0].options[t]).html(),0===t&&k===d.attr("placeholder")&&(k=""),d.val(k||""))})},o=function(){var e,t,i=f.children("dd."+T);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

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

        '+(t||"")+"

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

        "+m.time[t]+"

          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
        ",u.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(u),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(u).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(u).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(u).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},c=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),c[0]&&c.remove(),a[2].appendChild(e),lay(u).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout))},I.prototype.parse=function(e,t){var a=this,n=a.config,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},a.rangeLinked?a.startDate:n.dateTime,a.startTime):n.dateTime),t=v.parse(t,a.format,1);return n.range&&e===undefined?t+" "+a.rangeStr+" "+a.parse("end"):t},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"===a.position||(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+T),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html()&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300)))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o)),r&&(i.dateTime=lay.extend({},n.startDate))),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){v.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(p).on("mousedown",function(e){var t,a;!v.thisId||(t=s.getThis(v.thisId))&&(a=t.config,e.target!==a.elem[0]&&e.target!==a.eventElem[0]&&e.target!==n(a.closeStop)[0]&&t.remove())}).on("keydown",function(e){var t;!v.thisId||(t=s.getThis(v.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(v.thisId){var e=s.getThis(v.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},v.render=function(e){e=new I(e);return s.call(e)},v.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},v.getInst=function(e){e=s.getThis(e);if(e)return e.inst},v.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},v.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},v.close=function(e){e=s.getThis(e||v.thisId);if(e)return e.remove()},v.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("")},v.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?(v.ready(),layui.define("lay",function(e){v.path=layui.cache.dir,l.run(lay),e(a,v)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),v}):(v.ready(),l.run(i.lay),i.laydate=v)}(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){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(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=w(n,!0))&&(t=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)return this;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]);return this}if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}return this.context=g,this.selector=e,this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
        a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
        ","
        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
        "],tr:[2,"","
        "],col:[2,"","
        "],td:[3,"","
        "],_default:y.htmlSerialize?[0,"",""]:[1,"X
        ","
        "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
        t
        ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight)),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o&&(i.left=o)),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
        a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined||(this.value=e))})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
        ":"";return a.zIndex=o,t([a.shade?'
        ':"",'
        '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
        ':''):"")+((1!=a.type||!e)&&a.content||"")+'
        '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
        "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t=0,i=a.btn.length;t'+a.btn[t]+"";return'
        '+e+"
        "}():"")+(a.resize?'':"")+"
        "],s,m('
        ')),this},t.pt.creat=function(){var e,n=this,a=n.config,o=n.index,s="object"==typeof(r=a.content),l=m("body");if(!a.id||!m("."+d[0]).find("#"+a.id)[0]){switch(a.removeFocus&&document.activeElement.blur(),"string"==typeof a.area&&(a.area="auto"===a.area?["",""]:[a.area,""]),a.shift&&(a.anim=a.shift),6==h.ie&&(a.fixed=!1),a.type){case 0:a.btn="btn"in a?a.btn:f.btn[0],h.closeAll("dialog");break;case 2:var r=a.content=s?a.content:[a.content||"","auto"];a.content='';break;case 3:delete a.title,delete a.closeBtn,-1===a.icon&&a.icon,h.closeAll("loading");break;case 4:s||(a.content=[a.content,"body"]),a.follow=a.content[1],a.content=a.content[0]+'',delete a.title,a.tips="object"==typeof a.tips?a.tips:[a.tips,!0],a.tipsMore||h.closeAll("tips")}n.vessel(s,function(e,t,i){l.append(e[0]),s?2==a.type||4==a.type?m("body").append(e[1]):r.parents("."+d[0])[0]||(r.data("display",r.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+d[0]+o).find("."+d[5]).before(t)):l.append(e[1]),m("#"+d.MOVE)[0]||l.append(f.moveElem=i),n.layero=m("#"+d[0]+o),n.shadeo=m("#"+d.SHADE+o),a.scrollbar||d.html.css("overflow","hidden").attr("layer-full",o)}).auto(o),n.shadeo.css({"background-color":a.shade[1]||"#000",opacity:a.shade[0]||a.shade}),2==a.type&&6==h.ie&&n.layero.find("iframe").attr("src",r[0]),4==a.type?n.tips():(n.offset(),parseInt(f.getStyle(document.getElementById(d.MOVE),"z-index"))||(n.layero.css("visibility","hidden"),h.ready(function(){n.offset(),n.layero.css("visibility","visible")}))),!a.fixed||f.events.resize[n.index]||(f.events.resize[n.index]=function(){n.resize()},c.on("resize",f.events.resize[n.index])),a.time<=0||setTimeout(function(){h.close(n.index)},a.time),n.move().callback(),d.anim[a.anim]&&(e="layer-anim "+d.anim[a.anim],n.layero.addClass(e).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(e)})),a.isOutAnim&&n.layero.data({isOutAnim:!0,anim:a.anim})}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+d[0]+e),n=(""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth)),[i.innerWidth(),i.innerHeight()]),a=i.find(d[1]).outerHeight()||0,o=i.find("."+d[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+d[5])):t.fixed&&n[1]>=c.height()&&(n[1]=c.height(),e("."+d[5])):e("."+d[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=(c.height()-n[1])/2,e.offsetLeft=(c.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=c.width()-n[0]:"b"===t.offset?e.offsetTop=c.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=c.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=c.width()-n[0]):"rb"===t.offset?(e.offsetTop=c.height()-n[1],e.offsetLeft=c.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?c.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?c.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=c.scrollTop(),e.offsetLeft+=c.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=c.height()-(i.find(d[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0c.width()&&(a=c.width()-180-(f.minStackArr.edgeIndex=f.minStackArr.edgeIndex||0,f.minStackArr.edgeIndex+=3))<0&&(a=0),t.minStack&&(s.left=a,s.top=c.height()-i,n||f.minStackIndex++,l.attr("minLeft",a)),l.attr("position",o),h.style(e,s,!0),l.find(".layui-layer-min").hide(),"page"===l.attr("type")&&l.find(d[4]).hide(),f.rescollbar(e),r.hide())},h.restore=function(e){var t=m("#"+d[0]+e),i=m("#"+d.SHADE+e),n=t.attr("area").split(","),a=t.attr("type");t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(d[4]).show(),f.rescollbar(e),i.show()},h.full=function(t){var i=m("#"+d[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),f.record(i),d.html.attr("layer-full")||d.html.css("overflow","hidden").attr("layer-full",t),clearTimeout(void 0),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:c.scrollTop(),left:e?0:c.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+d[0]+(t||h.index)).find(d[1]).html(e)},h.close=function(a,o){var s,e,l=(t=m("."+d[0]).find("#"+a).closest("."+d[0]))[0]?(a=t.attr("times"),t):m("#"+d[0]+a),r=l.attr("type"),t=l.data()||{},i={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close";l[0]&&(s="layui-layer-wrap",e=function(){if(r===f.type[1]&&"object"===l.attr("conType")){l.children(":not(."+d[5]+")").remove();for(var e=l.find("."+s),t=0;t<2;t++)e.unwrap();e.css("display",e.data("display")).removeClass(s)}else{if(r===f.type[2])try{var i=m("#"+d[4]+a)[0];i.contentWindow.document.write(""),i.contentWindow.close(),l.find("."+d[5])[0].removeChild(i)}catch(n){}l[0].innerHTML="",l.remove()}"function"==typeof f.end[a]&&f.end[a](),delete f.end[a],"function"==typeof o&&o(),f.events.resize[a]&&(c.off("resize",f.events.resize[a]),delete f.events.resize[a])},t.isOutAnim&&l.addClass("layer-anim "+i),m("#layui-layer-moves, #"+d.SHADE+a).remove(),6==h.ie&&f.reselect(),f.rescollbar(a),"string"==typeof l.attr("minLeft")&&(f.minStackIndex--,f.minStackArr.push(l.attr("minLeft"))),h.ie&&h.ie<10||!l.data("isOutAnim")?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+d[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:c.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)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
          '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
        ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=n||{}).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=(o.imgIndex=1+(0|l),n.img=n.img||"img",n.success);if(delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.event=function(){o.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup)},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(e[0]>t[0]||e[1]>t[1])&&((t=[e[0]/t[0],e[1]/t[1]])[1]'+i+''+(t=['
        '],1','','',"
        "].join("")),n.hideFooter||t.push(['
        ','
        ',"

        "+i+"

        ",""+o.imgIndex+" / "+s.length+"",'\u67e5\u770b\u539f\u56fe',"
        ","
        "].join("")),t.push("
        "),t.join(""))+"",success:function(e,t){o.bigimg=e.find(".layui-layer-phimg"),o.imgsee=e.find(".layui-layer-imgbar"),o.event(e),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
        是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(a));layui.each(i.bars,function(e,t){var n=s('
      • ');n.addClass(t.icon).attr({"lay-type":t.type,style:t.style||"background-color: "+i.bgcolor}).html(t.content),n.on("click",function(){var e=s(this).attr("lay-type");"top"===e&&("body"===i.target?s("html,body"):c).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,e)}),"object"===layui.type(i.on)&&layui.each(i.on,function(e,t){n.on(e,function(){var e=s(this).attr("lay-type");"function"==typeof t&&t.call(this,e)})}),"top"===t.type&&(n.addClass("layui-fixbar-top"),o=n),u.append(n)}),l.find("."+a).remove(),"object"==typeof i.css&&u.css(i.css),l.append(u),o&&(t=function t(){return c.scrollTop()>=i.margin?e||(o.show(),e=1):e&&(o.hide(),e=0),t}()),c.on("scroll",function(){t&&(clearTimeout(n),n=setTimeout(function(){t()},100))})},countdown:function(e,t,n){var i=this,o="function"==typeof t,a=new Date(e).getTime(),r=new Date(!t||o?(new Date).getTime():t).getTime(),a=a-r,l=[Math.floor(a/864e5),Math.floor(a/36e5)%24,Math.floor(a/6e4)%60,Math.floor(a/1e3)%60],o=(o&&(n=t),setTimeout(function(){i.countdown(e,r+1e3,n)},1e3));return n&&n(0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e},unescape:function(e){return e!==undefined&&null!==e||(e=""),(e+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(e){var t=(e=e||{}).window||window.open(e.url||"",e.target,e.specs);e.url||(t.document.open("text/html","replace"),t.document.write(e.content||""),t.document.close())},toVisibleArea:function(e){var t,n,i,o,a,r,l,c;(e=s.extend({margin:160,duration:200,type:"y"},e)).scrollElem[0]&&e.thisElem[0]&&(t=e.scrollElem,l=e.thisElem,i=(a="y"===e.type)?"top":"left",o=t[n=a?"scrollTop":"scrollLeft"](),a=t[a?"height":"width"](),r=t.offset()[i],c={},((l=l.offset()[i]-r)>a-e.margin||l."+h,k=function(e){var i=this;i.index=++p.index,i.config=s.extend({},i.config,p.config,e),i.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0},k.prototype.reload=function(e,i){var t=this;t.config=s.extend({},t.config,e),t.init(!0,i)},k.prototype.init=function(e,i){var t,n=this,a=n.config,l=s(a.elem);return 1');return 0No data
      • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i.child&&0",(t="href"in i?''+l+"":l,n?'
        '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
        ":'
        '+t+"
        "),""].join(""))).data("item",i),n&&(a=s('
        '),t=s("
          "),"parent"===o?(a.append(u(t,i.child)),l.append(a)):l.append(u(t,i.child))),r.append(l))}),r},a=['
          ',"
          "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(m+"_opened")||(l.elemView=s("."+f+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=s(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),p.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(m+"_opened",!0),e=d.shade?'
          ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(y.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(y.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=s(this),t=i.data("item")||{},n=t.child&&0n.width()&&(t.addClass(V),(i=t[0].getBoundingClientRect()).left<0&&t.removeClass(V)),i.bottom>n.height()&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5)))}).on("mouseleave",t,function(e){var i=s(this).children("."+C);i.removeClass(V),i.css("margin-top",0)}),p.close=function(e){e=y.getThis(e);return e?(e.remove(),y.call(e)):this},p.reload=function(e,i,t){e=y.getThis(e);return e?(e.reload(i,t),y.call(e)):this},p.reloadData=function(){var t=s.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]}),p.reload.apply(null,t)},p.render=function(e){e=new k(e);return y.call(e)},e(r,p)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.min?e:n.min,n.value[1]=i>n.min?i:n.min,n.value[0]=n.value[0]>n.max?n.max:n.value[0],n.value[1]=n.value[1]>n.max?n.max:n.value[1],i=Math.floor((n.value[0]-n.min)/(n.max-n.min)*100),t=(s=Math.floor((n.value[1]-n.min)/(n.max-n.min)*100))-i+"%",i+="%",s+="%"):("object"==typeof n.value&&(n.value=Math.min.apply(null,n.value)),n.valuen.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
          '+(n.tips?'
          ':"")+'
          '+(n.range?'
          ':"")+"
          ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
          ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
          '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,u=o.elemTemp,d=function(){return"vertical"===r.type?r.height:u[0].offsetWidth},c=u.find("."+b),m=u.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/d()*100/p,t=Math.round(i)*p;return t=e==d()?Math.ceil(i)*p:t},y=g(['
          d()?d():i)/d()*100/p;f(i,l),s.addClass(L),u.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),u.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),u.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?d()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>d()?d():i)/d()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
          "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
          ','
          ','
          ','
          ','
          ','
          ',"
          ",'
          ','
          ',"
          ","
          ",'
          ','
          ','
          ',"
          ","
          ",i.predefine?(o=['
          '],layui.each(i.colors,function(e,i){o.push(['
          ','
          ',"
          "].join(""))}),o.push("
          "),o.join("")):"",'
          ','
          ','',"
          ",'
          ','','',"","
          "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close&&i.close(this.color)),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+T),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+E).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+E).css("left",t)),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+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+E).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+M),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+E),g=e[0].offsetTop/180*360,h=100-(r[0].offsetTop+3)/180*100,p=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+T).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+T).find("input").val())},o=m(['
          '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,p,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top,i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,p,h,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,p=t,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,p=o,h=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,p,h,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,p,h,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,p=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)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+M).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+T+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();if(-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i)return c.select(r.h,r.s,r.b,i),void(a.change&&a.change(o));c.color=l,a.done&&a.done(l),c.removePicker()}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;!n.thisId||(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),o="element",c="layui-this",y="layui-show",s=".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,o,t,i)},i.prototype.tabAdd=function(t,i){var a,t=u(".layui-tab[lay-filter="+t+"]"),e=t.children(s),l=e.children(".layui-tab-bar"),t=t.children(".layui-tab-content"),n=""+(i.title||"unnaming")+"";return l[0]?l.before(n):e.append(n),t.append('
          '+(i.content||"")+"
          "),C.hideTabMore(!0),C.tabAuto(),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(s).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(s).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",l="layui-nav-bar",p="layui-nav-tree",b="layui-nav-child",v="layui-nav-more",m="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(c).siblings().removeClass(c),i.eq(t).addClass(y).siblings().removeClass(y)),layui.event.call(this,o,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.index(),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(c)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,o,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(){var e="layui-tab-bar",l="layui-tab-close",n=this;u(".layui-tab").each(function(){var t=u(this),i=t.children(".layui-tab-title"),a=(t.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),a=u('');n===window&&8!=d.ie&&C.hideTabMore(!0),t.attr("lay-allowclose")&&i.find("li").each(function(){var t,i=u(this);i.find("."+l)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof t.attr("lay-unauto")&&(i.prop("scrollWidth")>i.outerWidth()+1?i.find("."+e)[0]||(i.append(a),t.attr("overflow",""),a.on("click",function(t){i[this.title?"removeClass":"addClass"]("layui-tab-more"),this.title=this.title?"":"\u6536\u7f29"})):(i.find("."+e).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.parents(h),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+b),n="string"==typeof e.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+c).removeClass(c),e.addClass(c)),i.hasClass(p)&&(l.removeClass(m),l[0]&&(e["none"===l.css("display")?"addClass":"removeClass"](f+"ed"),"all"===i.attr("lay-shrink")&&e.siblings().removeClass(f+"ed"))),layui.event.call(this,o,"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("."+y)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(y)),a[n?"addClass":"removeClass"](y),i.html(n?"":""),layui.event.call(this,o,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(h+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+l)[0]||(i.append(a),(i.hasClass(p)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+b);i.hasClass(p)?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(m),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(y),l.find("."+v).addClass(v+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(p)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+b).removeClass(y),i.find("."+v).removeClass(v+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(p)||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("."+b)[0]&&!t.children("."+v)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),e.on("click",C.hideTabMore),u(window).on("resize",C.tabAuto),t(o,a)});layui.define(["lay","layer"],function(e){"use strict";var y=layui.$,t=layui.layer,F=layui.device(),i={config:{},set:function(e){var t=this;return t.config=y.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,n,e,t)}},n="upload",a="layui-upload-file",o="layui-upload-form",b="layui-upload-iframe",x="layui-upload-choose",w=function(e){var t=this;t.config=y.extend({},t.config,i.config,e),t.render()};w.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},w.prototype.render=function(e){var t=this;(e=t.config).elem=y(e.elem),e.bindAction=y(e.bindAction),t.file(),t.events()},w.prototype.file=function(){var e=this,t=e.config,i=e.elemFile=y(['"].join("")),n=t.elem.next();(n.hasClass(a)||n.hasClass(o))&&n.remove(),F.ie&&F.ie<10&&t.elem.wrap('
          '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(i),F.ie&&F.ie<10&&e.initIE()},w.prototype.initIE=function(){var i,e=this.config,t=y(''),n=y(['
          ',"
          "].join(""));y("#"+b)[0]||y("body").append(t),e.elem.next().hasClass(o)||(this.elemFile.wrap(n),e.elem.next("."+o).append((i=[],layui.each(e.data,function(e,t){t="function"==typeof t?t():t,i.push('')}),i.join(""))))},w.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},w.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},w.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)}})},w.prototype.upload=function(e,t){var i,n,a,o,l=this,r=l.config,u=l.elemFile[0],c=function(){return e||l.files||l.chooseFiles||u.files},s=function(){var t=0,a=0,e=c(),o=function(){r.multiple&&t+a===l.fileLength&&"function"==typeof r.allDone&&r.allDone({total:l.fileLength,successful:t,failed:a})};layui.each(e,function(i,e){var n=new FormData,e=(layui.each(r.data,function(e,t){t="function"==typeof t?t():t,n.append(e,t)}),n.append(r.field,e),{url:r.url,type:"post",data:n,contentType:!1,processData:!1,dataType:"json",headers:r.headers||{},success:function(e){t++,p(i,e),o()},error:function(e){a++,l.msg("Request URL is abnormal: "+(e.statusText||"error")),d(i),o()}});"function"==typeof r.progress&&(e.xhr=function(){var e=y.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var t;e.lengthComputable&&(t=Math.floor(e.loaded/e.total*100),r.progress(t,(r.item||r.elem)[0],e,i))}),e}),y.ajax(e)})},f=function(){var n=y("#"+b);l.elemFile.parent().submit(),clearInterval(w.timer),w.timer=setInterval(function(){var e,t=n.contents().find("body");try{e=t.text()}catch(i){l.msg("Cross-domain requests are not supported"),clearInterval(w.timer),d()}e&&(clearInterval(w.timer),t.html(""),p(0,e))},30)},p=function(e,t){if(l.elemFile.next("."+x).remove(),u.value="","json"===r.force&&"object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},l.msg("Please return JSON data format")}"function"==typeof r.done&&r.done(t,e||0,function(e){l.upload(e)})},d=function(e){r.auto&&(u.value=""),"function"==typeof r.error&&r.error(e||0,function(e){l.upload(e)})},m=r.exts,h=(n=[],layui.each(e||l.chooseFiles,function(e,t){n.push(t.name)}),n),g={preview:function(e){l.preview(e)},upload:function(e,t){var i={};i[e]=t,l.upload(i)},pushFile:function(){return l.files=l.files||{},layui.each(l.chooseFiles,function(e,t){l.files[e]=t}),l.files},resetFile:function(e,t,i){t=new File([t],i);l.files=l.files||{},l.files[e]=t}},v={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[r.accept]||"\u6587\u4ef6",h=0===h.length?u.value.match(/[^\/\\]+\..+/g)||[]||"":h;if(0!==h.length){switch(r.accept){case"file":layui.each(h,function(e,t){if(m&&!RegExp(".\\.("+m+")$","i").test(escape(t)))return i=!0});break;case"video":layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(t)))return i=!0});break;case"audio":layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"mp3|wav|mid")+")$","i").test(escape(t)))return i=!0});break;default:layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"jpg|png|gif|bmp|jpeg")+")$","i").test(escape(t)))return i=!0})}if(i)return l.msg("\u9009\u62e9\u7684"+v+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),u.value="";if("choose"!==t&&!r.auto||(r.choose&&r.choose(g),"choose"!==t)){if(l.fileLength=(a=0,v=c(),layui.each(v,function(){a++}),a),r.number&&l.fileLength>r.number)return l.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+r.number+" \u4e2a\u6587\u4ef6
          \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+l.fileLength+" \u4e2a\u6587\u4ef6");if(01024*r.size&&(t=1<=(t=r.size/1024)?t.toFixed(2)+"MB":r.size+"KB",u.value="",o=t)}),o)return l.msg("\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!r.before||!1!==r.before(g))F.ie?(9'+e+"")},r=function(){var e=y(this);(e.attr("lay-data")||e.attr("lay-options"))&&(n.config=y.extend({},a,lay.options(this,{attr:e.attr("lay-data")?"lay-data":null})))};a.elem.off("upload.start").on("upload.start",function(){var e=y(this);r.call(this),n.config.item=e,n.elemFile[0].click()}),F.ie&&F.ie<10||a.elem.off("upload.over").on("upload.over",function(){y(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){y(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,t){var i=y(this),t=t.originalEvent.dataTransfer.files||[];i.removeAttr("lay-over"),r.call(this),o(t),a.auto?n.upload():l(t)}),n.elemFile.off("upload.change").on("upload.change",function(){var e=this.files||[];r.call(this),o(e),a.auto?n.upload():l(e)}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data("haveEvents")||(n.elemFile.on("change",function(){y(this).trigger("upload.change")}),a.elem.on("click",function(){n.isFile()||y(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),y(this).trigger("upload.over")}).on("dragleave",function(e){y(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),y(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){y(this).trigger("upload.action")}),a.elem.data("haveEvents",!0))},i.render=function(e){e=new w(e);return function(){var t=this;return{upload:function(e){t.upload.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}}.call(e)},e(n,i)});layui.define(["lay","layer","util"],function(e){"use strict";var b=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",T="layui-this",$="layui-hide",F="layui-disabled",t=function(){this.config={verify:{required:[/[\S]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(!e||isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]},autocomplete:null}},i=(t.prototype.set=function(e){return b.extend(!0,this.config,e),this},t.prototype.verify=function(e){return b.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return b(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=b(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;b(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=b(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){e=e||a.find("input,textarea");i.autocomplete&&e.attr("autocomplete",i.autocomplete),a.find("input[lay-affix],textarea[lay-affix]").each(function(){var l=b(this),r=l.attr("lay-affix"),s="layui-input-suffix",o="layui-input-affix",e=l.is("[disabled]")||l.is("[readonly]"),c=function(e,t){(e=b(e))[0]&&e[b.trim(t)?"removeClass":"addClass"]($)},n=function(t){t=b.extend({},u[r]||{value:r},t,lay.options(l[0]));var i=b('
          '),e=b(''),a=(i.append(e),t.split&&i.addClass("layui-input-split"),l.next("."+o)),n=(a[0]&&a.remove(),l.next("."+s));n[0]?((a=n.find("."+o))[0]&&a.remove(),n.prepend(i),l.css("padding-right",function(){return(l.closest(".layui-input-group")[0]?0:n.outerWidth())+i.outerWidth()})):(i.addClass(s),l.after(i)),"auto"===t.show&&c(i,l.val()),l.on("input propertychange",function(){var e=this.value;"auto"===t.show&&c(i,e)}),e.on("click",function(){var e=l.attr("lay-filter");b(this).hasClass(F)||("function"==typeof t.click&&t.click.call(this,l,t),layui.event.call(this,w,"input-affix("+e+")",{elem:l[0],affix:r,options:t}))})},u={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(),c(b(this).parent(),null)},show:"auto",disabled:e}};n()})},select:function(e){var v,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",k="",e=e||a.find("select"),C=function(e,t){b(e.target).parent().hasClass(g)&&!t||(b("."+m).removeClass(m+"ed "+m+"up"),v&&k&&v.val(k)),v=null},u=function(a,e,t){var s,r,i,n,o,l,c=b(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),p=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-q.scrollTop(),t=f.outerHeight();p=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass($),y.removeClass($),s=null,h.removeClass(T),0<=p&&h.eq(p).addClass(T),e+t>q.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(k=b(c[0].options[t]).html(),0===t&&k===d.attr("placeholder")&&(k=""),d.val(k||""))})},o=function(){var e,t,i=f.children("dd."+T);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

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

            '+(t||"")+"

            ");e.find("."+r)[0]&&e.find("."+r).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),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.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("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),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("."+c).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();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
              ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},300),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.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)),'
              "),t=1;t<=a.length;t++){var o='
            • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
            • ":n+=o}n+="
            "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),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 i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){this.config},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,n,e,r,o,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,o=!("isAuto"in l)||l.isAuto,a=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",c=l.scrollElem&&l.scrollElem!==document,m="\u52a0\u8f7d\u66f4\u591a",s=g('"),h.find(".layui-flow-more")[0]||h.append(s),u=function(l,e){l=g(l),s.before(l),(e=0==e||null)?s.html(a):s.find("a").html(m),i=e,t=null,y&&y()},f=function(){t=!0,s.find("a").html(''),"function"==typeof l.done&&l.done(++p,u)},f(),s.find("a").on("click",function(){g(this);i||t||f()}),l.isLazyimg&&(y=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),o&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(c?e:g(window)).height();(c?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||f())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"}},I=function(e){return M.trim(e).replace(/^\n|\n$/,"")};e("code",function(e){var L=e=M.extend(!0,{},a,e);e.elem=M(e.elem),e.elem[0]&&layui.each(e.elem.get().reverse(),function(e,a){var i,l,t,s,o,n,d,c,r,u,E=M(a),y=M.extend(!0,{},L,lay.options(a),(i={},layui.each(["title","height","encode","skin","about"],function(e,a){var l=E.attr("lay-"+a);"string"==typeof l&&(i[a]=l)}),i)),v=E.data("code")||(l=[],E.children("textarea").each(function(){l.push(I(this.value))}),0===l.length&&l.push(I(E.html())),l),f=(E.data("code",v),y.preview&&(a="LAY-CODE-DF-"+e,t=y.layout||["code","preview"],s="iframe"===y.preview,h=M('
            '),u=M('
            '),o=M('
            '),n=M('
            '),d=M('
            '),m=E.parent("."+b.ELEM_PREVIEW),f=E.prev("."+b.ELEM_TAB),p=E.next("."+b.ELEM_ITEM+"-preview"),y.id&&h.attr("id",y.id),h.addClass(y.className),u.attr("lay-filter",a),layui.each(t,function(e,a){var l=M('
          • ');0===e&&l.addClass("layui-this"),l.html(y.text[a]),o.append(l)}),c={full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e,a){var l=e.closest("."+b.ELEM_PREVIEW),i="layui-icon-"+this.className,t="layui-icon-screen-restore",s=this.title,o=M("html,body"),n="layui-scollbar-hide";e.hasClass(i)?(l.addClass(b.ELEM_FULL),e.removeClass(i).addClass(t),e.attr("title",s[1]),o.addClass(n)):(l.removeClass(b.ELEM_FULL),e.removeClass(t).addClass(i),e.attr("title",s[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e,a){_.openWin({content:v.join("")})}}},d.on("click",">i",function(){var e=M(this),a=e.data("type");"function"==typeof c[a].event&&c[a].event(e,a),"function"==typeof y.toolsEvent&&y.toolsEvent(e,a)}),layui.each(y.tools,function(e,a){var l=c[a]&&c[a].className||a,i=c[a].title||[""];d.append('')}),f[0]&&f.remove(),p[0]&&p.remove(),m[0]&&E.unwrap(),u.append(o),y.tools&&u.append(d),E.wrap(h).addClass(b.ELEM_ITEM).before(u),s&&n.html(""),r=function(e){var a=e.children("iframe")[0],l=(s&&a?a.srcdoc=v.join(""):e.html(v.join("")),{container:e,render:function(){C.render(e.find(".layui-form")),w.render()}});setTimeout(function(){"function"==typeof y.done&&y.done(l)},3)},"preview"===t[0]?(n.addClass(b.ELEM_SHOW),E.before(n),r(n)):E.addClass(b.ELEM_SHOW).after(n),y.codeStyle=[y.style,y.codeStyle].join(""),y.previewStyle=[y.style,y.previewStyle].join(""),n.attr("style",y.previewStyle),w.on("tab("+a+")",function(e){var a=M(this),l=M(e.elem).closest("."+b.ELEM_PREVIEW).find("."+b.ELEM_ITEM),e=l.eq(e.index);l.removeClass(b.ELEM_SHOW),e.addClass(b.ELEM_SHOW),"preview"===a.attr("lay-id")&&r(e)})),y.ln?"ol":"ul"),p=M("<"+f+' class="layui-code-'+f+'">'),m=M('
            '),h=(E.addClass("layui-code-view layui-box"),y.skin&&("notepad"===y.skin&&(y.skin="dark"),E.removeClass("layui-code-dark layui-code-light"),E.addClass("layui-code-"+y.skin)),_.escape(v.join(""))),h=(h=y.encode?_.escape(h):h).replace(/[\r\t\n]+/g,"
          • ");E.html(p.html("
          • "+h+"
          • ")),y.header&&!E.children("."+b.ELEM_TITLE)[0]&&(m.html(y.title+(y.about?'
            '+y.about+"
            ":"")),E.prepend(m)),y.elem.length===e+1&&"function"==typeof y.allDone&&y.allDone(),0<(u=Math.floor(p.find("li").length/100))&&p.css("margin-left",u+"px"),y.height&&p.css("max-height",y.height),p.attr("style",y.codeStyle)})})}),layui["layui.all"]||layui.addcss("modules/code.css?v=3","skincodecss"); \ No newline at end of file diff --git a/docs/.layui/DOCS_TEMPLATE.md b/docs/.layui/DOCS_TEMPLATE.md new file mode 100644 index 00000000..cc913bd9 --- /dev/null +++ b/docs/.layui/DOCS_TEMPLATE.md @@ -0,0 +1,34 @@ +--- +title: 某某组件 MOD_NAME +toc: true +--- + +# 某某组件 + +> 某某组件 `MOD_NAME` + +

            示例

            + +
            +{{- d.include("docs/MOD_NAME/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var MOD_NAME = layui.MOD_NAME | 获得 `MOD_NAME` 模块。 | +| [MOD_NAME.render(options)](#render) | MOD_NAME 组件渲染,核心方法。 | +| …… | …… | + +

            渲染

            + +`MOD_NAME.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +

            属性

            + +
            +{{- d.include("docs/MOD_NAME/detail/options.md") }} +
            \ No newline at end of file diff --git a/docs/.layui/DOCS_TEMPLATE_DEMO.md b/docs/.layui/DOCS_TEMPLATE_DEMO.md new file mode 100644 index 00000000..7422e072 --- /dev/null +++ b/docs/.layui/DOCS_TEMPLATE_DEMO.md @@ -0,0 +1,27 @@ +
            +  
            +
            + +

            示例标题

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/.layui/DOCS_TEMPLATE_OPTIONS.md b/docs/.layui/DOCS_TEMPLATE_OPTIONS.md new file mode 100644 index 00000000..2ccee5ab --- /dev/null +++ b/docs/.layui/DOCS_TEMPLATE_OPTIONS.md @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            AAA + + + +CCC + + + +
            \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 3e4a9376..ab7ba5a0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,4 @@ - # Docs -- https://layui.github.io -- https://layui.gitee.io/v2 \ No newline at end of file +- [最新文档](https://layui.dev) +- [2.7 文档](https://layui.dev/2.7/) \ No newline at end of file diff --git a/docs/anim/index.md b/docs/anim/index.md new file mode 100644 index 00000000..43d2de98 --- /dev/null +++ b/docs/anim/index.md @@ -0,0 +1,136 @@ +--- +title: 动画 +toc: true +--- + + + +# 动画 + +> Layui 内置了几种常见的 `CSS3` 动画。 + +

            示例

            + +
            +  
            +
            + +对需要动画的标签添加 `class="layui-anim"` 基础类,再追加其他不同的动画类,即可让元素产生动画。 + +

            动画列表

            + +点击下述绿色圆体,即可预览不同类名的动画效果。 + +
            +  
            +
            + + diff --git a/docs/auxiliar/index.md b/docs/auxiliar/index.md new file mode 100644 index 00000000..4b9963d1 --- /dev/null +++ b/docs/auxiliar/index.md @@ -0,0 +1,70 @@ +--- +title: 辅助元素 blockquote,fieldset,hr +toc: true +--- + +# 辅助元素 + +> 辅助元素是指对 `blockquote,fieldset,hr` 等标签的美化,主要是静态展示作用。 + +

            引用

            + +
            +  
            +
            + +

            字段集

            + +
            +  
            +
            + + +

            水平线

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/badge/index.md b/docs/badge/index.md new file mode 100644 index 00000000..9798e390 --- /dev/null +++ b/docs/badge/index.md @@ -0,0 +1,88 @@ +--- +title: 徽章 badge +toc: true +--- + +# 徽章 + +> 徽章 `badge` 通常作为修饰用途而存在,它们本身细小而并不显眼,但掺杂在其它元素中就显得尤为突出了。 + + +

            普通徽章

            + +
            +  
            +
            + + +

            小圆点

            + +
            +  
            +
            + + +

            徽章的搭配

            + +
            +  
            +
            + +徽章还可以自由佩戴在其他更多元素中,此处不做逐一列举。 + diff --git a/docs/base.md b/docs/base.md new file mode 100644 index 00000000..6d0a96bc --- /dev/null +++ b/docs/base.md @@ -0,0 +1,165 @@ +--- +title: 底层方法 +toc: true +--- + +# 底层方法 + +> Layui 提供了一系列基础 API,以更好地辅助组件的使用。 + +

            全局配置

            + +`layui.config(options);` + +您可以在 Layui 模块使用之前,采用该方法进行一些全局化的基础配置,其支持的属性如下: + +``` +layui.config({ + base: '' // 设定 Layui 扩展模块的所在目录,一般与 extend 方法搭配使用 + version: false, // 用于更新模块缓存,默认 false。若设为 true,即让浏览器不缓存。也可设为一个任意数值 + dir: 'layui/', // layui 基础目录,用于动态导入 src/layui.js 时的内置模块的加载。一般无需设置 + debug: false, // 用于开启调试模式,默认 false。若设为 true,则模块的引入节点会保留在页面 +}); +``` + + + + +

            链接解析

            + +`var url = layui.url(href);` + +参数 `href` 可选,默认自动读取当前页面 URL(`location.href`)。该方法用于将一段 URL 链接中的 `pathname、search、hash` 等属性进行对象化处理, 以下是对一个 URL 解析后的返回结果: + +``` +// 假设当前页面 url 为: https://domain.com/docs/base.html?a=1&c=3#/user/set/id=123/ +var url = layui.url(); + +// url 返回结果为: +{ + "pathname": ["docs","base.html"], // 路径 + "search": {"a":"1","c":"3"}, // 参数 + "hash": { // hash 解析 + "path": ["user","set",""], // hash 中的路径 + "search": {"id":"123"}, // hash 中的参数 + "hash": "", // hash 中的 hash + "href": "/user/set/id=123/" // hash 中的完整链接 + } +} +``` + +该方法通常可搭配 `location.hash` 和 `hashchange ` 事件,或 `history.pushState()` 和 `popstate` 事件使用,从而实现*单页面应用开发*。 Layui 的 AdminUI 主题模板则正是基于该方法完成的路由系统。 + + +

            本地存储

            + +本地存储是对 localStorage 和 sessionStorage 的友好封装,可更方便地管理本地数据。方法如下: + +- `layui.data(table, settings);` 即 localStorage,数据在浏览器中的持久化存储,除非物理删除。 +- `layui.sessionData(table, settings);` 即 sessionStorage ,数据在浏览器中的会话性存储,页面关闭后即失效。 + +两者使用方式完全一致。其中参数 `table` 为表名,`settings` 是一个对象,用于设置 `key/value`。下面以 `layui.data()` 方法为例: + +``` +// 【增】:向 test 表插入一个 nickname 字段,如果该表不存在,则自动建立。 +layui.data('test', { + key: 'nickname', + value: '张三' +}); + +// 【删】:删除 test 表的 nickname 字段 +layui.data('test', { + key: 'nickname', + remove: true +}); +layui.data('test', null); // 删除 test 表 + +// 【改】:同【增】,会覆盖已经存储的数据 + +// 【查】:向 test 表读取全部的数据 +var localTest = layui.data('test'); +console.log(localTest.nickname); // 获得“张三” +``` + +

            浏览器信息

            + +`var device = layui.device(key);` + +参数 `key` 可选。可利用该方法对不同的设备进行差异化处理,`device` 即为不同设备下返回的不同信息,如下: + +``` +{ + os: "windows", // 当前浏览器所在的底层操作系统,如:Windows、Linux、Mac 等 + ie: false, // 当前浏览器是否为 ie6-11 的版本,如果不是 ie 浏览器,则为 false + weixin: false, // 当前浏览器是否为微信 App 环境 + android: false, // 当前浏览器是否为安卓系统环境 + ios: false, // 当前浏览器是否为 IOS 系统环境 + mobile: false // 当前浏览器是否为移动设备环境(v2.5.7 新增) +} +``` + +有时,你的 App 可能会对 userAgent 插入一段特定标识,如: + +``` +Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 MYAPP/1.8.6 Safari/537.36 +``` + +要验证当前页面是否在你的 App 环境中,即可通过上述 `MYAPP`(即 Native 给 Webview 插入的标识,可自由定义)来判断。 + +``` +var device = layui.device('MYAPP'); +if(device.MYAPP){ + alert('在 MYAPP 环境中'); +} +``` + +

            API 列表

            + +前面我们特别介绍了几个相对特殊的基础方法,而以下是 Layui 提供的全部基础 API: + +| API | 描述 | +| --- | --- | +| layui.cache | 获得 UI 的一些配置及临时缓存信息 | +| layui.config(options) | 基础配置。[#用法](#config) | +| layui.define([modules], callback) | 定义模块。[#用法](modules.html#define) | +| layui.use([modules], callback) | 加载模块。[#用法](modules.html#use) | +| layui.extend(obj) | 扩展模块。[#用法](modules.html#extend) | +| layui.disuse([modules]) 2.7+ | 弃用模块,以便重新扩展新的同名模块。参数支持数组,即可同时弃用多个模块。 如:`layui.disuse(['table'])` | +| layui.link(href) | 加载 CSS,`href` 即为 css 路径。一般用于动态加载你的外部 CSS 文件 | +| layui.getStyle(node, name) | 获得一个原始 DOM 节点的 style 属性值,如:
            `layui.getStyle(document.body, 'font-size')` | +| layui.img(src, callback, error) | 图片预加载 | +| layui.each(obj, callback) | 对象(Array、Object、DOM 对象等)遍历,可用于取代 for 语句 | +| layui.type(operand) 2.6.7+ | 获取基本数据类型和各类常见引用类型,如:
            `layui.type([]); // array`
            `layui.type({}); //object`
            `layui.type(new Date()); // date` | +| layui.isArray(obj) 2.7+ | 对象是否为泛数组结构。如 Array、NodeList、jQuery 对象等
            `layui.isArray([1,6]); // true`
            `layui.isArray($('div')); // true` | +| layui.sort(obj, key, desc) | 将数组中的对象按某个成员重新对该数组排序,如:`layui.sort([{a: 3},{a: 1},{a: 5}], 'a'); // 返回:[{"a":1},{"a":3},{"a":5}]` | +| layui.url(href) | 链接解析。[#用法](#url) | +| layui.data(table, settings) | 持久化存储。[#用法](#data) | +| layui.sessionData(table, settings) | 会话性存储。[#用法](#data) | +| layui.device(key) | 获取浏览器信息。[#用法](#device) | +| layui.hint() | 向控制台打印一些异常信息,目前只返回了 error 方法,如:
            `var hint = layui.hint();`
            `hint.error('出错啦');` | +| layui.stope(e) | 阻止事件冒泡 | +| layui.onevent(modName, events, callback) | 增加自定义模块事件,一般在内置组件中使用。 | +| layui.event(modName, events, params) | 执行自定义模块事件,搭配 onevent 使用。注2.8+:当 events 参数中未设定 filter 时则可重复执行该事件,否则只会执行一次最新添加的事件。 | +| layui.off(events, modName) 2.5.7+ | 用于移除模块相关事件,如:`layui.off('select(filter)', 'form')`,那么`form.on('select(filter)', callback)`事件将会被移除 | +| layui.factory(modName) | 用于获取模块对应的 `layui.define()` 的回调函数 | +| var lay = layui.lay | 基础模块,提供了更多基础 API,一般供 Layui 内置组件中使用 | + +> 基础 API 是整个 UI 的有力支撑,我们在组件的使用过程中也经常会用到。 + + diff --git a/docs/button/index.md b/docs/button/index.md new file mode 100644 index 00000000..ebd39b14 --- /dev/null +++ b/docs/button/index.md @@ -0,0 +1,213 @@ +--- +title: 按钮 +toc: true +--- + +# 按钮 + +> 向任意 `HTML` 标签设定`class="layui-btn"` 建立一个基础按钮。通过追加格式为`layui-btn-{type}`的 `class` 来定义其它按钮风格。内置的按钮 `class` 可以进行任意组合,从而形成更多种按钮风格。 + +

            按钮主题

            + +
            +  
            +
            + +

            按钮尺寸

            + +
            +  
            +
            + +

            按钮圆角

            + +
            +  
            +
            + +

            按钮图标

            + +
            +  
            +
            + +

            按钮混搭

            + +
            +  
            +
            + +

            按钮组合

            + +
            +  
            +
            + +

            按钮容器

            + +
            +  
            +
            + +
            + +## 小贴士 + +> 按钮的主题、尺寸、图标、圆角的交叉组合,可以形成丰富多样的按钮种类。其中颜色也可以根据使用场景自主更改。 \ No newline at end of file diff --git a/docs/carousel/detail/demo.md b/docs/carousel/detail/demo.md new file mode 100644 index 00000000..88ddf988 --- /dev/null +++ b/docs/carousel/detail/demo.md @@ -0,0 +1,215 @@ +

            常规用法

            + +
            +  
            +
            + +- 在元素外层设置 `class="layui-carousel"` 来定义一个轮播容器 +- 在元素内层设置属性 `carousel-item` 用来定义条目容器 + +

            属性配置预览

            + +
            +  
            +
            + +

            填充图片轮播

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/carousel/detail/options.md b/docs/carousel/detail/options.md new file mode 100644 index 00000000..cc2dd333 --- /dev/null +++ b/docs/carousel/detail/options.md @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
            width + +设定轮播容器宽度,值支持:*像素*、*auto*、*百分比*。 + +string + +`600px` + +
            height + +设定轮播容器高度,值支持的类型同 `width` 属性 + +string + +`280px` + +
            full + +是否全屏轮播 + +boolean + +`false` + +
            anim + +轮播切换动画方式。可选值有: + +- `default` 左右切换 +- `updown` 上下切换 +- `fade` 渐隐渐显切换 + +boolean + +`default` + +
            autoplay + +是否自动切换,可选值有: + +- `true` 自动滚动,鼠标移入会暂停、移出重新恢复 +- `false` 不自动滚动 +- `alway` 始终自动滚动,不受鼠标移入移出影响 2.7+ + + +boolean
            string
            + +`true` + +
            interval + +自动切换的时间间隔,单位: ms (毫秒),不能低于 800 + +number + +`3000` + +
            index + +初始开始的条目下标 + +number + +`0` + +
            arrow + +切换箭头默认显示状态,可选值有: + +- `hover` 鼠标悬停显示 +- `always` 始终显示 +- `none` 始终不显示 + +string + +`hover` + +
            indicator + +指示器位置,可选值有: + +- `inside` 显示在容器内部 +- `outside` 显示在容器外部 +- `none` 不显示 + +注 : 若设定了 `anim: 'updown'` ,则 `outside` 值无效 + +string + +`inside` + +
            trigger + +指示器的触发事件 + +string + +`click` + +
            + + +
            + +[回调函数](#options.callback) + +
            + +
            change 2.7+ + +
            +轮播切换后的回调函数,返回一个对象参数。 +
            + +``` +carousel.render({ + elem: '#id', + change: function(obj){ + console.log(obj.index); // 当前条目的索引 + console.log(obj.prevIndex); // 上一个条目的索引 + console.log(obj.item); // 当前条目的元素对象 + } +}); +``` + +注:在 `2.7` 之前的版本,需通过 carousel 的 `change` 事件来实现,如: + +``` +var carousel = layui.carousel; + +// 轮播渲染 +carousel.render(options); + +// 触发轮播切换事件 +carousel.on('change(filter)', function(obj){ // filter 对应轮播容器的 lay-filter 属性值 + console.log(obj); +}); +``` + +
            + +### 贴士 + +> 若轮播的填充内容为图片,且 `width` 或 `height` 为自适应,那么需动态获取父容器宽高,从而适配父容器。 当浏览器窗口尺寸发生变化时,可在窗口 `resize` 事件中通过轮播重载来重设宽高值。 \ No newline at end of file diff --git a/docs/carousel/index.md b/docs/carousel/index.md new file mode 100644 index 00000000..25a13d1e --- /dev/null +++ b/docs/carousel/index.md @@ -0,0 +1,79 @@ +--- +title: 轮播组件 carousel +toc: true +--- + +# 轮播组件 + +> 轮播组件 `carousel` 主要适用于跑马灯/轮播等交互场景。它并非单纯地为焦点图而生,准确地说,它可以满足任何内容的轮播式切换操作,亦可胜任 `fullpage`(全屏上下轮播)的需求。 + +

            示例

            + + + +
            +{{- d.include("docs/carousel/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var carousel = layui.carousel | 获得 `carousel` 模块。 | +| [var inst = carousel.render(options)](#render) | carousel 组件渲染,核心方法。 | +| [inst.reload(options)](#reload) | 轮播实例重载 | +| [inst.goto(index)](#goto) 2.8+ | 轮播切换到特定下标 | + +

            渲染

            + +`carousel.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法返回一个实例对象,包含操作当前实例的相关方法成员。 + +``` +var inst = carousel.render(options); +console.log(inst); // 得到当前实例对象 +``` + +

            重载

            + +`inst.reload(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +通过渲染返回的实例对象,可获得重载方法,用于实现对实例的属性重载。 + +``` +var inst = carousel.render(options); // 轮播初始渲染 +inst.reload(options); // 轮播重载 +``` + +详细用法可参考:[#示例](#demo) + +

            属性

            + +
            +{{- d.include("docs/carousel/detail/options.md") }} +
            + + +

            切换

            + +`inst.goto(index);` + +- 参数 `index` : 轮播下标,从 `0` 开始计算 + +通过渲染返回的实例对象,可获得切换方法,用于实现对轮播的手动定向切换。 + +``` +var inst = carousel.render(options); // 轮播初始渲染 +inst.goto(0); // 轮播切换到第一项 +inst.goto(1); // 轮播切换到第二项 +``` diff --git a/docs/class/index.md b/docs/class/index.md new file mode 100644 index 00000000..ef9ed6c1 --- /dev/null +++ b/docs/class/index.md @@ -0,0 +1,170 @@ +--- +title: 公共类 class +toc: true +--- + +# 公共类 + +> 公共类是 `layui.css` 中并不以组件形式存在的公共 `class` 选择器,而又能用于任何地方。 + +

            普通类

            + +| className | 描述 | +| --- | --- | +| layui-main | 设置一个固定宽度为 `1160px` 的水平居中块 | +| layui-border-box | 设置元素及其所有子元素均为 `box-sizing: content-box` 模型的容器 | +| layui-clear | 清除前面的同级元素产生的浮动 | +| layui-clear-space 2.8+ | 清除容器内的空白符 | +| layui-inline | 设置元素为内联块状结构 | +| layui-elip | 设置单行文本溢出并显示省略号 | +| layui-unselect | 屏蔽选中 | +| layui-disabled | 设置元素为不可点击状态 | +| layui-circle | 设置元素为圆形。需确保 `width` 和 `height` 相同 | + +

            显示隐藏

            + +| className | 描述 | +| --- | --- | +| layui-show | 设置元素为 `display: block` 可见状态 | +| layui-hide | 设置元素为 `display: none` 隐藏状态,且不占用空间 | +| layui-show-v | 设置元素为 `visibility: visible` 可见状态 | +| layui-hide-v | 设置元素为 `visibility: hidden` 不可见状态,且依旧占用空间 | + + +

            三角实体

            + +| className | 描述 | +| --- | --- | +| layui-edge | 定义一个三角形基础类 | +| layui-edge-top | 设置向上三角 | +| layui-edge-right | 设置向右三角 | +| layui-edge-bottom | 设置向下三角 | +| layui-edge-left | 设置向左三角 | + +示例 + +
            +  
            +
            + + +

            背景颜色

            + +| className | 背景色 | 预览 | +| --- | --- | --- | +| layui-bg-red | 红 |
             
            | +| layui-bg-orange | 橙 |
             
            | +| layui-bg-green | 绿 |
             
            | +| layui-bg-blue | 蓝 |
             
            | +| layui-bg-purple | 紫 |
             
            | +| layui-bg-black | 深 |
             
            | +| layui-bg-gray | 浅 |
             
            | + +

            文字大小

            + +| className | 文字大小和预览 | +| --- | --- | +| layui-font-12 | 12px | +| layui-font-13 2.8+ | 13px | +| layui-font-14 | 14px | +| layui-font-16 | 16px | +| layui-font-18 | 18px | +| layui-font-20 | 20px | +| layui-font-22 2.8+ | 22px | +| layui-font-24 2.8+ | 24px | +| layui-font-26 2.8+ | 26px | +| layui-font-28 2.8+ | 28px | +| layui-font-30 2.8+ | 30px | +| layui-font-32 2.8+ | 32px | + +

            文字颜色

            + +| className | 文字颜色和预览 | +| --- | --- | +| layui-font-red | | +| layui-font-orange | | +| layui-font-green | 绿 | +| layui-font-blue | | +| layui-font-purple | | +| layui-font-black | | +| layui-font-gray | | + +

            文档容器

            + +通过设置 `class="layui-text"` 定义一段包含标题、段落、列表、链接等组合的文档区域。 + +
            +  
            +
            \ No newline at end of file diff --git a/docs/code/detail/options.md b/docs/code/detail/options.md new file mode 100644 index 00000000..043945fd --- /dev/null +++ b/docs/code/detail/options.md @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
            preview 2.8+ + +是否开启 Code 预览功能,可选值有: + +- `true` 开启 Code 的普通预览 +- `false` 关闭 Code 预览(默认) +- `"iframe"` 开启 Code 在 iframe 模式中预览 + +当开启该属性时,`elem` 指定的元素需要设置成以下结构: + +``` +
            +  
            +
            +``` + +
            boolean
            string
            + +`false` + +
            layout 2.8+ + +开启预览后的面板布局方式,值为一个数组,数组的可选成员有: + +- `code` 代码区域 +- `preview` 预览区域 + +面板将根据数组的排列顺序来显示,如: + +``` +layout: ['code', 'preview'] +``` + +array-
            style 2.8+ + +设置 Code 和预览区域的公共样式 + +string-
            codeStyle 2.8+ + +设置 Code 区域的局部样式,优先级高于 `style` 属性 + +string-
            previewStyle 2.8+ + +设置预览区域的局部样式,优先级高于 `style` 属性 + +string-
            id 2.8+ + +设置实例的唯一索引,以便用于其他操作 + +string-
            className 2.8+ + +追加实例面板的 `className`,以便对其自定义样式 + +string-
            tools 2.8+ + +用于开启 `preview` 属性后的面板头部右侧区域工具栏图标,值为一个数组,内置成员: + +- `full` 最大化显示 +- `window` 在新窗口预览。一般当 `layout: 'iframe'` 时开启,且 code 中须包含完整的 HTML 方可在新窗口正常预览。 + +工具图标将根据数组的排列顺序来显示,如: + +``` +tools: ['full', 'window'] +``` + +亦可自定义值,值对应[图标](../icon/) `className` 的 `layui-icon-` 后的名称,并通过 `toolsEvent` 回调函数中处理事件。 + +array-
            toolsEvent 2.8+ + +点击工具栏的回调函数,函数返回 `tools` 设置的名称,如: + +``` +toolsEvent: function(othis, type){ + console.log(othis); // 当前图标元素对象 + console.log(type); // tools 中设置的对应值 +} +``` + +通过该函数与 `tools` 属性的搭配,可实现对工具栏的扩展。 + +function-
            text 2.8+ + +自定义默认文本,值为一个对象,可选成员有: + +``` +text: { + code: '代码栏标题', // 默认: + preview: '预览栏标题' // 默认: Preview +} +``` + +object-
            header 2.8+ + +是否开启 Code 栏头部区域 + +boolean + +`false` + +
            about + +设置 Code 栏头部右上角信息。必须开启 `header` 属性后有效。 + +string-
            ln + +是否显示 Code 区域的行号 + +boolean + +`true` + +
            skin + +Code 容器的风格,可选值有: + +- `light` 浅色模式(默认) +- `dark` 深色模式 + +string-
            encode + +是否对 Code 区域自动转义 html 标签 + +boolean + +`false` + +
            + +[done](#options.done) 2.8+ + + + +
            +组件渲染完毕的回调函数,函数返回一个 object 类型参数 +
            + +``` +done: function(obj){ + var container = obj.container; // 当前面板的容器对象 + obj.render(); // 对预览中的 `element,form` 等组件进行渲染 +} +``` + +
            \ No newline at end of file diff --git a/docs/code/index.md b/docs/code/index.md new file mode 100644 index 00000000..13d3bd4d --- /dev/null +++ b/docs/code/index.md @@ -0,0 +1,42 @@ +--- +title: Code 预览组件 code +toc: true +--- + +# Code 预览组件 + +> 代码预览组件 `code` 主要用于对代码区块的修饰和对应的效果预览,如 Layui 各组件文档中的示例演示。 + + +

            方法

            + +`layui.code(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options)。 + +属性除了在该方法中传递,也可以直接写在元素的 `lay-options` 属性上,如: + +
            +  
            +
            + +

            属性

            + +
            +{{- d.include("docs/code/detail/options.md") }} +
            \ No newline at end of file diff --git a/docs/color/index.md b/docs/color/index.md new file mode 100644 index 00000000..91fccd5b --- /dev/null +++ b/docs/color/index.md @@ -0,0 +1,139 @@ +--- +title: 颜色 +toc: true +--- + +# 颜色 + +> Layui 试图在清新与深沉之间寻求某种柔和,以不过分刺激大脑皮层的神经介质,反馈出经久耐看的微妙视图。您可以在我们精心调配的如下色系中合理搭配,减少不必要的违和感,从而使您的 Web 页面看上去尽可能融洽。 + +

            基色调

            + +
            +
            +
            +

            #16baaa

            +

            蓝绿色

            +
            +
            +
            +
            +

            #16b777

            +

            清新绿

            +
            +
            +
            +
            +

            #1e9fff

            +

            经典蓝

            +
            +
            +
            + +Layui 选取以象征清新与包容的「蓝绿色」作为主色调,它介于蓝与绿之间,亦可称之为「青色」,所谓青者,取之于蓝而深于绿,此间包罗万象,跨越时空。这也是我们对技术创作与人生哲学之间的一点思考。 + + +

            辅色调

            + +
            +
            +
            +

            #ff5722

            +

            错误 - Danger

            +
            +
            +
            +
            +

            #ffb800

            +

            警示 - Warning

            +
            +
            + +
            +
            +

            #16b777

            +

            成功 - Success

            +
            +
            +
            +
            +

            #31bdec

            +

            引导 - Info

            +
            +
            +
            + +页面中同样也少不了辅助色彩的点缀,以对不同含义的内容加以区分。Layui 从暖色系(红/橙)和冷色系(绿/蓝)中,各自调取了我们认为最具代表性的颜色值,它们通常在不同的场景中发挥着不同的作用。 + +

            中色调

            + +
            +
            +
            +

            #fafafa

            +

            +
            +
            +

            #f7f7f7

            +
            +
            +

            #eeeeee

            +
            +
            +

            #e2e2e2

            +
            +
            +

            #dddddd

            +
            +
            +

            #d2d2d2

            +
            +
            +

            #cccccc

            +
            +
            +

            #c2c2c2

            +
            +
            +

            #2f363c

            +
            +
            +

            #23292e

            +
            +
            + +中性的颜色是页面中的重要组成部分,也被称之为无彩色系,一般用于文本、背景和边框等。它能对由彩色进行视觉冲淡,以达到和谐自然的效果。Layui 认为恰当的灰度调配代表着极简,这是一种神奇的色系,是视觉疲劳的栖息,低调而优雅,且永不过时。 + +

            七色调

            + +
            +
            + #ff5722 - 红 +
            +
            + #ffb800 - 橙 +
            +
            + #16baaa - 绿 +
            +
            + #1e9fff - 蓝 +
            +
            + #a233c6 - 紫 +
            +
            + #2f363c - 深 +
            +
            + #fafafa - 浅 +
            +
            + +Layui 的色调基础,除了前面提到的主辅中色之外,还建立在以上罗列的七种颜色之上。你同样也可以遵循我们提供的色调方案去扩展你的页面元素,使得能与 Layui 的主题风格无缝融合。 + +
            + +## 标语 + +> 不热衷于视觉设计的开发者不是一个好作家。 —— 贤心 \ No newline at end of file diff --git a/docs/colorpicker/detail/demo.md b/docs/colorpicker/detail/demo.md new file mode 100644 index 00000000..a91901da --- /dev/null +++ b/docs/colorpicker/detail/demo.md @@ -0,0 +1,240 @@ +
            +  
            +
            + +

            将颜色值赋给表单

            + +
            +  
            +
            + +

            设置 RGB / RGBA

            + +
            +  
            +
            + +

            开启透明度

            + +
            +  
            +
            + +

            预定义颜色项

            + +
            +  
            +
            + +

            全功能和回调的使用

            + +
            +  
            +
            + +

            颜色框尺寸

            + +
            +  
            +
            + +

            同时绑定多个元素

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/colorpicker/detail/options.md b/docs/colorpicker/detail/options.md new file mode 100644 index 00000000..2909382b --- /dev/null +++ b/docs/colorpicker/detail/options.md @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
            color + +默认颜色值,值的格式跟随 `format` 属性的设定。 + +string-
            format + +颜色显示/输入格式,支持 `hex` `rgb` 。 若同时开启 `alpha` 属性,则颜色值自动变为 `rgba`。 + +string + +`hex` + +
            alpha + +是否开启透明度。当同时开启 `format: 'rga'` 时,`color` 值将采用 `rgba` 格式。 + +boolean + +`false` + +
            predefine + +是否开启预定义颜色栏 + +boolean + +`false` + +
            colors + +设置可选的颜色列表,需开启 `predefine: true` 有效。 +
            用法详见:[#预定义颜色项](#demo-predefine) + +
            array-
            size + +颜色框的尺寸,可选值: `lg` `sm` `xs` + +string + +`sm` + +
            + + +
            + +[回调函数](#options.callback) + +
            + +
            change + +颜色被改变的回调函数。用法详见:[#示例](#demo-all) + +``` +change: function(value){ + console.log(value); // 当前颜色值 +} +``` + +
            done + +颜色选择完毕的回调函数。点击“确认”和“清除”按钮均会触发 + +``` +done: function(value){ + console.log(value); // 当前选中的颜色值 +} +``` + +用法详见:[#示例](#demo-all) + +
            cancel 2.8+ + +取消颜色选择的回调函数,一般点击非颜色选择面板区域触发。 + +``` +cancel: function(value){ + console.log(value); // 当前颜色值 +} +``` + +用法详见:[#示例](#demo-all) + +
            close 2.8+ + +颜色选择面板被关闭后即触发。 + +``` +close: function(value){ + console.log(value); // 当前颜色值 +} +``` + +
            \ No newline at end of file diff --git a/docs/colorpicker/index.md b/docs/colorpicker/index.md new file mode 100644 index 00000000..ebd47163 --- /dev/null +++ b/docs/colorpicker/index.md @@ -0,0 +1,61 @@ +--- +title: 颜色选择器 colorpicker +toc: true +--- + +# 颜色选择器 + +> 颜色选择器 `colorpicker` 用于对颜色的快捷选择,支持 `hex,rgb,rgba` 三种颜色类型。 + +

            示例

            + +
            +{{- d.include("docs/colorpicker/detail/demo.md") }} +
            + +

            + +

            API

            + +| API | 描述 | +| --- | --- | +| var colorpicker = layui.colorpicker | 获得 `colorpicker` 模块。 | +| [colorpicker.render(options)](#render) | colorpicker 组件渲染,核心方法。 | + + +

            渲染

            + +`colorpicker.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +
            2.7+ : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 + +``` +
            +
            +
            + + +``` + +

            属性

            + +
            +{{- d.include("docs/colorpicker/detail/options.md") }} +
            + +## 兼容性 + +> colorpicker 组件支持 `Chrome,Edge,Firefox` 等所有高级浏览器,不支持 IE10 低版本浏览器。 \ No newline at end of file diff --git a/docs/dropdown/detail/demo.md b/docs/dropdown/detail/demo.md new file mode 100644 index 00000000..08cb32b0 --- /dev/null +++ b/docs/dropdown/detail/demo.md @@ -0,0 +1,57 @@ +

            基础用法

            + +
            +  
            +
            + +

            复杂结构

            + +
            +  
            +
            + +

            在表格中应用

            + +
            +  
            +
            + +

            自定义事件

            + +
            +  
            +
            + +

            右键菜单

            + +
            +  
            +
            + +

            水平对齐方式

            + +
            +  
            +
            + +

            自定义内容

            + +如下以弹出一个 `tab` 为例 + +
            +  
            +
            \ No newline at end of file diff --git a/docs/dropdown/detail/options.data.md b/docs/dropdown/detail/options.data.md new file mode 100644 index 00000000..256b88f0 --- /dev/null +++ b/docs/dropdown/detail/options.data.md @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            title + +菜单标题 + +string-
            id + +菜单 ID。用户菜单项唯一索引 + + +number/string-
            type + +菜单项的类型,支持的可选值如下: + +- `normal` 普通菜单项(默认) +- `group` 纵向组合收缩菜单 +- `parent` 横向父级菜单 +- `-` 分割线 + +string + +`normal` + +
            href + +菜单项的 url 地址。若填写,点击菜单将直接发生跳转。 + +string-
            target + +菜单 url 打开方式,需设置 `href` 属性后才生效。 一般可设为 `_blank` 或 `_self` 等 + +string + +`_self` + +
            disabled 2.8+ + +菜单项是否禁用状态 + +boolean + +`false` + +
            templet + +自定义当前菜单项模板,优先级高于基础属性 `templet` + +string/function-
            child + +子级菜单数据集合。参数同父级,可无限嵌套。 + +array-
            \ No newline at end of file diff --git a/docs/dropdown/detail/options.md b/docs/dropdown/detail/options.md new file mode 100644 index 00000000..406ec566 --- /dev/null +++ b/docs/dropdown/detail/options.md @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
            + +[data](#options.data) + + + +下拉菜单的数据源。格式详见:[#data 格式](#options.data) + +array-
            trigger + +触发组件的事件类型。支持所有事件,如: `click,hover,mousedown,contextmenu` 等 + +string + +`click` + +
            show + +是否渲染即显示组件面板。该属性一般在重载方法中传递。 + +boolean + +`false` + +
            align + +下拉面板相对绑定元素的水平对齐方式。支持以下可选值: + +- `left` 左对齐(默认) +- `center` 居中对齐 +- `right` 右对齐 + +string + +`left` + +
            isAllowSpread + +是否允许菜单组展开收缩 + +boolean + +`true` + +
            isSpreadItem + +是否初始展开子菜单 + +boolean + +`true` + +
            delay + +延迟关闭的毫秒数。当 `trigger: 'hover'` 时才生效 + +number + +`300` + +
            className + +自定义组件主容器的样式类名,从而在外部重新定义样式。 + +string-
            style + +设置组件主容器的 `CSS` 样式。 + +string-
            shade 2.8+ + +设置弹出时的遮罩。支持以下方式赋值: + +- 若值为 `number` 类型,则表示为遮罩透明度,如: +
            `shade: 0.3` +- 若值为 `array` 类型,则可同时设置透明度和背景色,如: +
            `shade: [0.3, '#000']` + +
            number
            array
            + +`0` + +
            templet + +全局定义菜单的列表模板,可添加任意 `html` 字符,且支持 [laytpl](../laytpl/) 模板语法。用法详见:[#示例](#demo-complex) + +注 2.8+ : 模板亦可采用函数写法: + +``` +templet: function(d){ + return ' ' + d.title; +} +``` + +string
            function
            -
            content + + 自定义组件内容,从而替代默认的菜单结构。用法详见:[#示例](#demo-content) + +string-
            clickScope 2.8+ + +设置触发点击事件的菜单范围。 支持以下可选值: + +- `all` : 即代表父子菜单均可触发事件 + +默认无需设置,即父级菜单不触发事件 + +string-
            + + +
            + +[回调函数](#options.callback) + +
            + +
            ready + +组件成功弹出后的回调函数。返回的参数如下: + +``` +ready: function(elemPanel, elem){ + console.log(elemPanel); // 组件面板元素对象 + console.log(elem); // 当前组件绑定的目标元素对象 +} +``` + +
            + +[click](#options.click) + + + +
            +菜单项被点击时的回调函数。返回的参数如下: +
            + +``` +click: function(data, othis){ + console.log(data); // 当前所点击的菜单项对应的数据 + console.log(othis); // 当前所点击的菜单项元素对象 + console.log(this.elem); // 当前组件绑定的目标元素对象,批量绑定中常用 + + // 若返回 false,则点击选项可不关闭面板 --- 2.8+ + /* + return false; + */ +``` + +用法详见:[#示例](#examples) + +
            \ No newline at end of file diff --git a/docs/dropdown/examples/align.md b/docs/dropdown/examples/align.md new file mode 100644 index 00000000..ef6910f1 --- /dev/null +++ b/docs/dropdown/examples/align.md @@ -0,0 +1,37 @@ +
            + + + +
            + + \ No newline at end of file diff --git a/docs/dropdown/examples/base.md b/docs/dropdown/examples/base.md new file mode 100644 index 00000000..20bf7d37 --- /dev/null +++ b/docs/dropdown/examples/base.md @@ -0,0 +1,120 @@ +
            + + +
            + +
            + +
            +
            + 可以绑定任意元素, + + 比如这段文字 + + +
            + + \ No newline at end of file diff --git a/docs/dropdown/examples/complex.md b/docs/dropdown/examples/complex.md new file mode 100644 index 00000000..1782a86a --- /dev/null +++ b/docs/dropdown/examples/complex.md @@ -0,0 +1,128 @@ + + + \ No newline at end of file diff --git a/docs/dropdown/examples/content.md b/docs/dropdown/examples/content.md new file mode 100644 index 00000000..9c74fda1 --- /dev/null +++ b/docs/dropdown/examples/content.md @@ -0,0 +1,39 @@ + + + + + \ No newline at end of file diff --git a/docs/dropdown/examples/contextmenu.md b/docs/dropdown/examples/contextmenu.md new file mode 100644 index 00000000..4f3e4d54 --- /dev/null +++ b/docs/dropdown/examples/contextmenu.md @@ -0,0 +1,88 @@ +
            + 在此区域单击鼠标右键 +
            + + + + \ No newline at end of file diff --git a/docs/dropdown/examples/on.md b/docs/dropdown/examples/on.md new file mode 100644 index 00000000..489fca0b --- /dev/null +++ b/docs/dropdown/examples/on.md @@ -0,0 +1,37 @@ +
            + + + +
            + + \ No newline at end of file diff --git a/docs/dropdown/examples/reload.md b/docs/dropdown/examples/reload.md new file mode 100644 index 00000000..97c424dc --- /dev/null +++ b/docs/dropdown/examples/reload.md @@ -0,0 +1,39 @@ + + + \ No newline at end of file diff --git a/docs/dropdown/examples/reloadData.md b/docs/dropdown/examples/reloadData.md new file mode 100644 index 00000000..67a0e0c9 --- /dev/null +++ b/docs/dropdown/examples/reloadData.md @@ -0,0 +1,57 @@ +
            +
            + +
            + +
            +
            +
            + + \ No newline at end of file diff --git a/docs/dropdown/examples/table.md b/docs/dropdown/examples/table.md new file mode 100644 index 00000000..546ef5b0 --- /dev/null +++ b/docs/dropdown/examples/table.md @@ -0,0 +1,76 @@ +
            + + + + \ No newline at end of file diff --git a/docs/dropdown/index.md b/docs/dropdown/index.md new file mode 100644 index 00000000..1c43ccc4 --- /dev/null +++ b/docs/dropdown/index.md @@ -0,0 +1,135 @@ +--- +title: 下拉菜单 dropdown +toc: true +--- + +# 下拉菜单 2.6+ + +> 下拉菜单 `dropdown` 是基于基础菜单结构衍生的多功能通用下拉菜单组件,它将原本静态呈现的菜单,通过各种事件的形式触发,从而以独立面板的形式弹出。不仅可用作常见的*下拉菜单*,更可用于*右键菜单*来实现更多的交互可能。 + +

            示例

            + +
            +{{- d.include("docs/dropdown/detail/demo.md") }} +
            + +在 `content` 属性中传入任意的 html 内容,可替代默认的下拉菜单结构,从而实现更丰富的弹出内容。 + +

            API

            + +| API | 描述 | +| --- | --- | +| var dropdown = layui.dropdown | 获得 `dropdown` 模块。 | +| [dropdown.render(options)](#render) | dropdown 组件渲染,核心方法。 | +| [dropdown.reload(id, options)](#reload) | 完整重载 | +| [dropdown.reloadData(id, options)](#reload) 2.8+ | 仅重载数据或内容 | +| [dropdown.close(id)](#close) | 关闭对应的组件面板 | + +

            渲染

            + +`dropdown.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +
            2.8+ : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 + +``` + + + + + +``` + +

            属性

            + +
            +{{- d.include("docs/dropdown/detail/options.md") }} +
            + +

            data 格式

            + +
            +{{- d.include("docs/dropdown/detail/options.data.md") }} +
            + + +

            重载

            + +即对一段已经渲染好的下拉菜单重新设置相关属性并渲染,可分为以下几种重载方式: + +| 重载方式 | API | +| --- | --- | +| [完整重载](#dropdown.reload) | [dropdown.reload(id, options, deep)](#dropdown.reload) | +| [仅数据或内容重载](#dropdown.reloadData) 2.8+ | [dropdown.reloadData(id, options, deep)](#dropdown.reloadData) | + + +两者重载的使用方式完全相同,区别只是在于参与重载时的属性差异及其对应的效果差异。一般按照实际需求选择使用。 + + + +`dropdown.reload(id, options);` + +- 参数 `id` : 组件渲染时定义的 `id` 属性值 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法用于对下拉菜单进行完整重载,所有属性均可参与到重载中。 + +
            +  
            +
            + + + +`dropdown.reloadData(id, options);` + +- 参数同 `dropdown.reload(id, options)` 参数 + +使用该方法时,与数据无关的属性不会参与到重载中。因此若只是更新数据或内容,该方法可大幅提升体验。 + +
            +  
            +
            + + +

            关闭面板 2.8+

            + +`dropdown.close(id);` + +- 参数 `id` : 组件渲染时定义的 `id` 属性值 + +该方法用于关闭对应的 `dropdown` 组件面板。 + +``` +var dropdown = layui.dropdown; + +// 渲染 +dropdown.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id + // 其他属性 … +}); +// 关闭对应的组件面板 +dropdown.close('test'); +``` \ No newline at end of file diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 00000000..5457e78a Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/fixbar/detail/demo.md b/docs/fixbar/detail/demo.md new file mode 100644 index 00000000..97a686be --- /dev/null +++ b/docs/fixbar/detail/demo.md @@ -0,0 +1,69 @@ +
            +  
            +
            \ No newline at end of file diff --git a/docs/fixbar/detail/options.md b/docs/fixbar/detail/options.md new file mode 100644 index 00000000..debfbc30 --- /dev/null +++ b/docs/fixbar/detail/options.md @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            bars 2.8+ + +设置固定工具条列表。可支持定义以下子属性: + +``` +bars: [ + { + type: '', // bar 类型名,用于事件区分 + icon: '', // bar 图标的 className + content: '', // bar 任意内容 + style: '' // bar 任意样式 + }, + // … +] +``` + +该属性比较灵活,具体用法可参考:[#示例](#examples) + +array + + + +
            default 2.8+ + +是否显示默认的固定条 ,如 `top` (点击可让滚动条置顶)等 + +boolean + +`true` + +
            bgcolor + +固定条的默认背景色 + +string-
            css + +工具条外层容器的任意 css 属性。如设置工具条的坐标: + +``` +css: {right: 32, bottom: 32} +``` + +object-
            target 2.8+ + +插入固定条的目标元素选择器 + +object + +`body` + +
            scroll 2.8+ + +固定条最外层容器滚动条所在的元素,若不设置则默认取 `target` 属性值 + +object + +`body` + +
            margin 2.8+ + +用于设置默认 `TOP` 条出现滚动条的高度临界值 + +number + +`200` + +
            duration 2.8+ + +用于默认 `TOP` 条等动画时长 + +number + +`200` + +
            on 2.8+ + +用于定义固定条列表的任意事件,触发事件时的回调将返回 `bars` 属性的 `type` 值。 + +``` +on: { + // 点击事件 + click: function(type){ + // bars 对属性应的 type 值 + console.log(type); + }, + // … +} +``` + +该属性一般与 `bars` 属性搭配使用,具体用法可参考:[#示例](#examples) + +object-
            + + +### 贴士 + +> 灵活运用 `bars` 属性的 `content,style` 子属性,可实现更多丰富多样的固定条。 \ No newline at end of file diff --git a/docs/fixbar/index.md b/docs/fixbar/index.md new file mode 100644 index 00000000..3362d140 --- /dev/null +++ b/docs/fixbar/index.md @@ -0,0 +1,33 @@ +--- +title: 固定条组件 fixbar +toc: true +--- + +# 固定条组件 + +> 固定条组件 `fixbar` 是指当滚动条滑动时,始终固定在页面一侧的工具条元素,除了内置的 `TOP` 条功能外,还可以灵活地扩展任意自定义的工具条。在 `2.x` 版本中,`fixbar` 属于 `util` 模块的子集。 + +

            示例

            + +
            +{{- d.include("docs/fixbar/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var util = layui.util | 获得 `util` 模块。 | +| [util.fixbar(options)](#fixbar) | fixbar 组件渲染,核心方法。 | + +

            渲染

            + +`util.fixbar(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +

            属性

            + +
            +{{- d.include("docs/fixbar/detail/options.md") }} +
            \ No newline at end of file diff --git a/docs/flow/detail/demo.md b/docs/flow/detail/demo.md new file mode 100644 index 00000000..02cc034e --- /dev/null +++ b/docs/flow/detail/demo.md @@ -0,0 +1,61 @@ +

            滚动加载

            + +
            +  
            +
            + +

            手动加载

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/flow/detail/options.md b/docs/flow/detail/options.md new file mode 100644 index 00000000..f55adf04 --- /dev/null +++ b/docs/flow/detail/options.md @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定元素选择器或 DOM 对象 + +string-
            scrollElem + +指定触发流加载的滚动条所在元素选择器。 + +string + +`document` + +
            isAuto + +是否自动加载。 若设为 `false`,则会在列表底部生成一个「加载更多」的按钮,那么可点击该按钮加载下一页数据。 + +boolean + +`true` + +
            end + +设置加载完毕后的最尾部的内容,可传入任意 HTML 字符。 + +string + +没有更多了 + +
            isLazyimg + +是否开启信息流中的图片懒加载。若设为 `true` ,则只会对在可视区域的图片进行按需加载。但同时,在拼接列表字符的时候,您不能给列表中的 `` 标签赋值 `src`,必须要用 `lay-src` 属性取代,如: + +``` +layui.each(data, function(index, item){ + lis.push('
          • '); +}); +``` + +
            boolean + +`false` + +
            mb + +与底部的临界距离。 即当滚动条与底部产生该距离时,触发加载。 必须 `isAuto:true` 时有效。 + +*小贴士*: 此处 `mb` 属性名是 css 中 `margin-bottom` 的简写,可并非国粹之语 😅 + +number + +`50` + +
            done + +
            +滚动条到达临界点触发加载的回调函数。函数返回的参数如下: +
            + +``` +done: function(page, next){ + console.log(page) // 获得当前页 + + // 执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页 + // 只有当前页小于总页数的情况下,才会继续出现加载更多 + next('列表 HTML 片段', page < res.pages); +} +``` + +详细用法可参考:[#示例](#examples) + +
            \ No newline at end of file diff --git a/docs/flow/index.md b/docs/flow/index.md new file mode 100644 index 00000000..be1ea987 --- /dev/null +++ b/docs/flow/index.md @@ -0,0 +1,90 @@ +--- +title: 流加载 flow +toc: true +--- + +# 流加载 + +> 流加载 `flow` 是用于在*信息流*和*图片列表*场景中的滚动按需加载,对前后端的体验和性能优化具有一定帮助。 + +

            示例

            + + + +
            +{{- d.include("docs/flow/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var flow = layui.flow | 获得 `flow` 模块。 | +| [flow.load(options)](#load) | 信息流加载,核心方法。 | +| [flow.lazyimg(options)](#lazyimg) | 图片懒加载。 | + +

            信息流

            + +`flow.load(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +信息流是分页的另一种表现形式,新加载的内容不替换原有的内容,而是随着滚动条滚动而追加显示。[#详见示例](#examples) + +

            属性

            + +
            +{{- d.include("docs/flow/detail/options.md") }} +
            + +

            图片懒加载

            + +`flow.lazyimg(options);` + +- 参数 `options` : 属性配置项。可选项见下表。 + +| 属性名 | 描述 | +| --- | --- | +| elem | 绑定容器中需进行懒加载的图片元素选择器 | +| scrollElem | 滚动条所在元素选择器,默认 `document` 。 | + +
            +  
            +
            + +无论滚动条上滑还是下滑,都会始终加载当前屏的图片。 + diff --git a/docs/form/checkbox.md b/docs/form/checkbox.md new file mode 100644 index 00000000..98c57a68 --- /dev/null +++ b/docs/form/checkbox.md @@ -0,0 +1,119 @@ +--- +title: 复选框 +toc: true +--- + +# 复选框 + +> 复选框组件是对 `` 元素的美化替代,在原有的特性基础上,对 UI 进行了加强。 + + +

            默认风格

            + +
            +  
            +
            + +- 属性 `title` 可设置复选框标题 +- 属性 `checked` 可设置默认选中 +- 属性 `disabled` 可设置禁用状态 +- 属性 `value` 可设置值,否则选中时返回的默认值为 `on`(浏览器默认机制) +- 属性 `lay-skin` 可设置复选框风格,可选值:`tag`2.8+,`switch`,默认风格可不填 + +特别地,当表单提交时,只有选中状态的复选框才能获取到 `value`,这点和浏览器原有的复选框机制相同。 + +注 2.8+: `lay-skin` 属性在之前版本默认为标签风格,新版本调整为默认原始风格(`lay-skin="primary"`)。 + +

            标签风格

            + +
            +  
            +
            + + +

            开关风格

            + +
            +  
            +
            + +在 `title` 属性中通过 `|` 分隔符可设置两种状态下的不同标题 + + +

            复选框事件

            + +`form.on('checkbox(filter)', callback);` + +- `checkbox` 为复选框事件固定名称 +- `filter` 为复选框元素对应的 `lay-filter` 属性值 + +该事件在复选框选中或取消选中时触发。 + +
            +  
            +
            \ No newline at end of file diff --git a/docs/form/examples/form.demo.md b/docs/form/examples/form.demo.md new file mode 100644 index 00000000..2f84b569 --- /dev/null +++ b/docs/form/examples/form.demo.md @@ -0,0 +1,256 @@ +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            6 到 12 位字符
            +
            +
            +
            + +
            + +
            +
            -
            +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            + +
            +
            + +
            +
            + +
            +
            +
            + +
            + + + +
            +
            +
            + +
            + + + +
            +
            +
            + +
            + +
            +
            +
            + +
            + + + +
            +
            +
            + +
            + <textarea placeholder="请输入内容" class="layui-textarea"></textarea> +
            +
            +
            +
            + + +
            +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.grid.md b/docs/form/examples/form.grid.md new file mode 100644 index 00000000..731ddb81 --- /dev/null +++ b/docs/form/examples/form.grid.md @@ -0,0 +1,108 @@ +
            +
            + +
            +
            +
            + +
            +
            +
            + +
            +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            + +
            +
            +
            +
            + + +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.login.md b/docs/form/examples/form.login.md new file mode 100644 index 00000000..39610aae --- /dev/null +++ b/docs/form/examples/form.login.md @@ -0,0 +1,79 @@ + +
            + +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.pane.md b/docs/form/examples/form.pane.md new file mode 100644 index 00000000..fac32f12 --- /dev/null +++ b/docs/form/examples/form.pane.md @@ -0,0 +1,101 @@ + +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            请务必填写用户名
            +
            +
            +
            + +
            + +
            +
            -
            +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + + + +
            +
            +
            + +
            + <textarea placeholder="请输入内容" class="layui-textarea"></textarea> +
            +
            +
            + + +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.reg.md b/docs/form/examples/form.reg.md new file mode 100644 index 00000000..f4af24b0 --- /dev/null +++ b/docs/form/examples/form.reg.md @@ -0,0 +1,130 @@ + +
            +
            +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            +
            +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            + +
            + +
            +
            + + + + + + + 登录已有帐号 +
            +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.val.md b/docs/form/examples/form.val.md new file mode 100644 index 00000000..41ba84f5 --- /dev/null +++ b/docs/form/examples/form.val.md @@ -0,0 +1,112 @@ +
            +
            + + +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + + + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + + +
            +
            + +
            + +
            + <textarea placeholder="请输入" class="layui-textarea" name="desc"></textarea> +
            +
            + +
            +
            + + +
            +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.validate.md b/docs/form/examples/form.validate.md new file mode 100644 index 00000000..ed3ff895 --- /dev/null +++ b/docs/form/examples/form.validate.md @@ -0,0 +1,56 @@ +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            + +
            +
            +
            +
            + +
            +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/form.verify.md b/docs/form/examples/form.verify.md new file mode 100644 index 00000000..62cfdee6 --- /dev/null +++ b/docs/form/examples/form.verify.md @@ -0,0 +1,50 @@ +
            + +
            + +
            + +
            + + \ No newline at end of file diff --git a/docs/form/examples/input.affix.custom.md b/docs/form/examples/input.affix.custom.md new file mode 100644 index 00000000..01f29066 --- /dev/null +++ b/docs/form/examples/input.affix.custom.md @@ -0,0 +1,39 @@ +
            +
            + +
            +
            +
            + +
            +
            + + \ No newline at end of file diff --git a/docs/form/examples/input.group.md b/docs/form/examples/input.group.md new file mode 100644 index 00000000..6ef3d65a --- /dev/null +++ b/docs/form/examples/input.group.md @@ -0,0 +1,82 @@ +
            +
            +
            +
            + 身高 +
            + +
            + cm +
            +
            +
            +
            +
            +
            + 手机号 +
            + +
            + +
            +
            +
            +
            +
            +
            + 用户名 +
            + +
            +
            + +
            +
            + +
            + +
            +
            +
            +
            +
            +
            + 搜索 +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + 身高 +
            + +
            + cm +
            +
            +
            +
            +
            +
            + 昵称 +
            + +
            +
            +
            +
            + +
            + 任意后置内容 +
            +
            +
            +
            \ No newline at end of file diff --git a/docs/form/examples/input.pre.suf.md b/docs/form/examples/input.pre.suf.md new file mode 100644 index 00000000..76d14cdb --- /dev/null +++ b/docs/form/examples/input.pre.suf.md @@ -0,0 +1,94 @@ +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            + +
            +
            +
            +
            +
            +
            + +
            + +
            +
            +
            +
            \ No newline at end of file diff --git a/docs/form/index.md b/docs/form/index.md new file mode 100644 index 00000000..1c85b2d6 --- /dev/null +++ b/docs/form/index.md @@ -0,0 +1,396 @@ +--- +title: 表单组件 form +toc: true +--- + +# 表单组件 🔥 + +> 表单组件`form`是包含输入框、选择框、复选框、开关、单选框等表单项组件的集合,主要用于对表单域进行各类动态化渲染和相关的交互操作。`form`是 Layui 最常用的组件之一。 + +

            示例

            + +

            综合演示

            + +
            +  
            +
            + +

            方框风格

            + +
            +  
            +
            + +

            登录模板 2.8+

            + +
            +  
            +
            + +

            注册模板 2.8+

            + +
            +  
            +
            + +更多其他表单模板均可自由布局实现,为了避免影响文档其他重要版面的阅读,我们就不做过多演示了。 + + +

            表单布局

            + +### 🌕 普通布局 + +在上文的「[综合演示](#examples)」示例中,我们用的是 form 组件自身的普通布局。其要点为: + +- 通过 `class="layui-form"` 定义一个表单域,通常设置在`
            `标签上, 或普通`
            ` 标签亦可。 +- 通过 `class="layui-form-item"` 定义一个块级元素的表单项容器 +- 通过 `class="layui-form-label"` 定义标签 +- 通过 `class="layui-form-block"` 定义表单项父容器为块级元素 +- 通过 `class="layui-form-inline"` 或 `class="layui-inline"` 定义表单项父容器为行内块元素 + +即必须按照规定的层级定义相应的 `class`。 + +### 🌕 栅格布局 + +form 还可以借助*栅格*实现更灵活的响应式布局。 + +
            +  
            +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var form = layui.form | 获得 `form` 模块。 | +| [form.render(type, filter)](#render) | 表单域组件渲染,核心方法。[#用法](#render) | +| [form.verify(obj)](#verify) | 自定义表单验证的规则。[#用法](#verify) | +| [form.validate(elem)](#validate) 2.7+ | 主动触发执行验证。[#用法](#validate) | +| [form.val(filter, obj)](#val) | 表单赋值或取值。 [#用法](#val) | +| [form.submit(filter, callback)](#submit) 2.7+ | 用于主动执行指定表单的提交。[#用法](#submit) | +| [form.on(\'event(filter)\', callback)](#on) | 事件。[#用法](#on) | +| form.config | 获取 form 组件全局配置项。 | +| form.set(options) | 设置 form 组件全局配置项。 | + +

            属性

            + +在表单域中,有时还需要定义一些特定属性来配合组件的使用,它们一般以 `lay-*` 为命名格式,如: + +``` + + + + + + +``` + +以下为 `form` 组件的特定属性列表: + +| 属性 | 值 | 描述 | +| --- | --- | --- | +| title | 自定义 | 设置表单元素标题,一般用于 `checkbox,radio` 元素 | +| lay-filter | 自定义 | 设置表单元素的过滤器,以便用于执行相关方法时的参数匹配 | +| lay-verify | `required`必填项
            `phone`手机号
            `email`邮箱
            `url`网址
            `number`数字
            `date`日期
            `identity`身份证
            `自定义规则值` | 设置表单项的验证规则,支持单条或多条规则(多条用`\|`分隔),如:
            `lay-verify="required"`
            `lay-verify="required\|email"`
            `lay-verify="其他自定义规则值"`
            自定义规则的用法:[#详见](#verify) | +| lay-vertype | `tips`吸附层
            `alert` 对话框
            `msg` 默认 | 设置验证异常时的提示层模式 | +| lay-reqtext | 自定义 | 设置*必填项*(`lay-verify="required"`)的默认提示文本 | +| lay-affix | [#详见](input.html#affix) | 输入框动态点缀,``元素 **私有属性** | +| lay-skin | [#详见](checkbox.html#default) | 设置 UI 风格。 `` 元素 **私有属性** | +| lay-search | 默认不区分大小写;
            设置`cs`区分大小写 | 给 `select` 组件开启搜索功能。` + + + +
            + + +``` + +### **忽略渲染** + +若表单域中的部分表单不需要 Layui 来渲染,那么可通过 `lay-ignore` 属性让其保留系统原始 UI 风格。 + +
            +  
            +
            + + +

            验证

            + +Layui 对表单做了相对巧妙的支持,只需在表单元素上设置 `lay-verify=""` 属性值即可指定验证规则,如: + +``` +
            + + + + +
            +``` + +其中,`lay-verify` 属性的内置规则值可参考上文的:[#属性介绍](#attr)。 当表单提交时,会自动触发验证。 + +

            自定义验证规则

            + +`form.verify(obj);` + +- 参数 `obj` 是一个对象,用于定义验证规则的集合。 + +当内置的验证规则无法满足业务需求时,我们可以通过该方法自定义验证规则。如: + +
            +  
            +
            + +更多「自定义验证规则」示例参考: + +> - 将 form 提示语显示在表单项旁边,并在提交时批量触发验证 +> - 重置 form 内置验证规则,让其:当非空值才进行验证;加了 required 时才验证非空 + + +

            主动触发验证 2.7+

            + +`form.validate(elem);` + +- 参数 `elem` 为元素选择器或 jQuery 对象; 若验证通过,该方法将返回 true,否则返回 false + +
            +  
            +
            + + +

            赋值/取值

            + +`form.val(filter, obj);` + +- 参数 `filter` 为表单域容器(`class="layui-form"`)的 `lay-filter` 属性值 +- 参数 `obj` 可选。若参数存在,则对表单域进行赋值;若参数不存在,则为对表单域进行取值。 + +
            +  
            +
            + + +

            提交

            + +表单的提交可以通过事件触发或方法触发 + +### **提交事件** + +在表单域中,对指定按钮设置 `lay-submit` 属性,即意味着点击该按钮时,将触发提交事件。如: + +
            +  
            +
            + +### **提交方法** 2.7+ + +`form.submit(filter, callback);` + +- 参数 `filter` 为表单域容器的 `lay-filter` 属性值 +- 参数 `callback` 为执行提交事件后的回调函数 + +使用该方法可以实现在任意位置对指定表单的主动提交,相比上述的提交事件更加灵活。 + +
            +  
            +
            + +

            事件

            + +`form.on('event(filter)', callback);` + +- 参数 `event(filter)` 是一个特定结构。`event` 为事件名,支持:`select,checkbox,switch,radio,submit`;`filter` 为元素属性 `lay-filter` 对应的值,若不填,则指向所有同类组件的事件。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个包含各种值的 `object` 类型的参数。 + +如下以 `select` 事件为例: +``` +// 指向所有 select 组件的选择事件 +form.on('select', function(data){ + console.log(data); +}); + +// 指向元素为 `` 的选择事件 +form.on('select(test)', function(data){ + console.log(data); +}); +``` \ No newline at end of file diff --git a/docs/form/input.md b/docs/form/input.md new file mode 100644 index 00000000..46e7b5a7 --- /dev/null +++ b/docs/form/input.md @@ -0,0 +1,199 @@ +--- +title: 输入框 / 文本域 +toc: true +--- + +# 输入框 + +> 输入框组件是对文本框``和多行文本框` + + + +

            输入框点缀 2.8+

            + +输入框点缀是指给普通输入框附加其他元素来进行动静态修饰,其结构包含:*容器、前缀、输入框、后缀*。 + +``` +
            +
            + +
            +
            +``` + +- 容器类: + - 前置和后置结构:`class="layui-input-group"` + - 前缀和后缀结构:`class="layui-input-wrap"` +- 前缀类:`class="layui-input-prefix"` +- 后缀类:`class="layui-input-suffix"` +- 前缀显示分隔框:`class="layui-input-prefix layui-input-split"` +- 后缀显示分隔框:`class="layui-input-suffix layui-input-split"` + +通过在不同层级中设置规定的 CSS 类来实现点缀布局,再按照不同需求,在前缀和后缀中放置图标等任意内容。 + + +

            前置和后置

            + +前置和后置结构是*输入框的自适应结构*,可以很灵活地控制前后置内容与输入框的宽度比例。 + +- 结构: + +``` +
            +
            前置内容
            + +
            后缀内容
            +
            +``` + +- 示例: + +
            +  
            +
            + + +

            前缀和后缀

            + +输入框前缀和后缀是*输入框的纯修饰结构*,前缀和后缀宽度固定且其元素不可触及,即只能触及输入框本身。 + +- 结构: + +``` +
            +
            前缀图标
            + +
            后缀图标
            +
            +``` + +- 示例: + +
            +  
            +
            + +注意「前置和后置」与「前缀和后缀」 二者使用时切勿混淆。 + + +

            动态点缀 2.8+

            + +该功能允许对输入框内容进行相关动态操作。通过对输入框元素设置 `lay-affix` 属性来开启动态点缀,且输入框元素必须放置在一个具有输入框点缀结构的容器中(上文有讲解)。如: + +``` +input 放在前后置容器中: +
            + +
            + +input 放在前后缀容器中: +
            + +
            +``` + +`lay-affix` 属性支持设置内置属性值和自定义值 + +| 值 | 描述 | +| --- | --- | +| `lay-affix="eye"` | 密码框显隐 | +| `lay-affix="clear"` | 内容清除 | +| `lay-affix="自定义图标值"` | 值对应图标类`layui-icon-`后面的名称([#详见图标列表](../icon/#list))。
            可通过「[点缀事件](#affix-event)」完成自定义操作 | + + +

            密码显隐

            + +
            +  
            +
            + +

            内容清除

            + +
            +  
            +
            + +

            自定义动态点缀

            + +我们还可以对 `lay-affix` 属性设置任意图标值,从而实现自定义动态点缀功能。 + +
            +  
            +
            + +输入框的自定义动态点缀功能,让原本单一的输入框有了更多的想象空间。 + + +

            点缀事件

            + +`form.on('input-affix(filter)', callback);` + +- `input-affix` 为输入框动态点缀事件固定名称 +- `filter` 为输入框对应的 `lay-filter` 属性值 + +该事件在点击输入框的点缀图标时触发,通过该事件可以完成一些自定义操作。 + +``` +form.on('input-affix(filter)', function(data){ + var elem = data.elem; // 获取输入框 DOM 对象 + var affix = data.affix; // 获取输入框 lay-affix 属性值 +}); +``` + + + + diff --git a/docs/form/radio.md b/docs/form/radio.md new file mode 100644 index 00000000..64d43f56 --- /dev/null +++ b/docs/form/radio.md @@ -0,0 +1,103 @@ +--- +title: 单选框 +toc: true +--- + +# 单选框 + +> 单选框组件是对 `` 元素的美化替代。 + +

            普通单选框

            + +
            +  
            +
            + +- 属性 `title` 可设置单选框标题 +- 属性 `checked` 可设置默认选中 +- 属性 `disabled` 可设置禁用状态 +- 属性 `value` 可设置值,否则选中时返回的默认值为 `on`(浏览器默认机制)。同组单选框一般设置相同值。 + +

            自定义标题模板

            + +在 `radio` 元素后的相邻元素设置特定属性 `lay-radio`,可以与 `radio` 标题进行绑定。 + +
            +  
            +
            + +

            单选框事件

            + +`form.on('radio(filter)', callback);` + +- `radio` 为单选框事件固定名称 +- `filter` 为单选框元素对应的 `lay-filter` 属性值 + +该事件在单选框被点击或选中时触发。 + +
            +  
            +
            diff --git a/docs/form/select.md b/docs/form/select.md
            new file mode 100644
            index 00000000..e79641cd
            --- /dev/null
            +++ b/docs/form/select.md
            @@ -0,0 +1,203 @@
            +---
            +title: 选择框
            +toc: true
            +---
            + 
            +# 选择框
            +
            +> 选择框组件是对 `
            +
            + +- 若第一项 `value` 为空,通常只作为选择框提示性引导;若第一项 `value` 不为空,则作为默认选中项。 +- 通过给选项添加 `selected` 属性优先设置默认选中项。 +- 通过给 `` 标签上同样支持设置表单的其他公共属性([#详见](./#attr))。 + +

            分组选择框

            + +通过 `` 标签给选择框分组 + +
            +  
            +
            + + + + +在 ` + + + +

            选择框事件

            + +`form.on('select(filter)', callback);` + +- `select` 为选择框事件固定名称 +- `filter` 为选择框元素对应的 `lay-filter` 属性值 + +该事件在选择框选项选中后触发。 + +
            +  
            +
            diff --git a/docs/icon/index.md b/docs/icon/index.md new file mode 100644 index 00000000..3e3a852e --- /dev/null +++ b/docs/icon/index.md @@ -0,0 +1,1174 @@ +--- +title: 图标 +toc: true +--- + +# 图标 + +> Layui 图标采用字体形式,取材于阿里巴巴矢量图标库 `iconfont`,因此可以把一个 `icon` 看作是一个普通的文本,直接通过 `css` 即可设定其样式。图标支持 `font-class` 或 `unicode` 两种格式。 + +

            示例

            + +
            +  
            +
            + +通过对一个内联元素(如 ``标签)添加基础类 `class="layui-icon"` 来定义一个图标,然后对元素加上图标对应的 `font-class`,即可显示出你想要的图标,如上所示。 + + +

            图标列表(186 个)

            + +
            +
            + +
            Github
            +
            &#xe6a7;
            +
            layui-icon-github
            +
            +
            + +
            月亮
            +
            &#xe6c2;
            +
            layui-icon-moon
            +
            +
            + +
            错误
            +
            &#xe693;
            +
            layui-icon-error
            +
            +
            + +
            成功
            +
            &#xe697;
            +
            layui-icon-success
            +
            +
            + +
            问号
            +
            &#xe699;
            +
            layui-icon-question
            +
            +
            + +
            锁定
            +
            &#xe69a;
            +
            layui-icon-lock
            +
            + +
            + +
            显示
            +
            &#xe695;
            +
            layui-icon-eye
            +
            +
            + +
            隐藏
            +
            &#xe696;
            +
            layui-icon-eye-invisible
            +
            +
            + +
            清空/删除
            +
            &#xe788;
            +
            layui-icon-clear
            +
            +
            + +
            退格
            +
            &#xe694;
            +
            layui-icon-backspace
            +
            +
            + +
            禁用
            +
            &#xe6cc;
            +
            layui-icon-disabled
            +
            +
            + +
            感叹号/提示
            +
            &#xeb2e;
            +
            layui-icon-tips-fill
            +
            + +
            + +
            测试/K线图
            +
            &#xe692;
            +
            layui-icon-test
            +
            +
            + +
            音乐/音符
            +
            &#xe690;
            +
            layui-icon-music
            +
            +
            + +
            Chrome
            +
            &#xe68a;
            +
            layui-icon-chrome
            +
            +
            + +
            Firefox
            +
            &#xe686;
            +
            layui-icon-firefox
            +
            +
            + +
            Edge
            +
            &#xe68b;
            +
            layui-icon-edge
            +
            +
            + +
            IE
            +
            &#xe7bb;
            +
            layui-icon-ie
            +
            + +
            + +
            实心
            +
            &#xe68f;
            +
            layui-icon-heart-fill
            +
            +
            + +
            空心
            +
            &#xe68c;
            +
            layui-icon-heart
            +
            +
            + +
            太阳/明亮
            +
            &#xe748;
            +
            layui-icon-light
            +
            +
            + +
            时间/历史
            +
            &#xe68d;
            +
            layui-icon-time
            +
            + +
            + +
            蓝牙
            +
            &#xe689;
            +
            layui-icon-bluetooth
            +
            +
            + +
            @艾特
            +
            &#xe687;
            +
            layui-icon-at
            +
            +
            + +
            静音
            +
            &#xe685;
            +
            layui-icon-mute
            +
            +
            + +
            录音/麦克风
            +
            &#xe6dc;
            +
            layui-icon-mike
            +
            +
            + +
            密钥/钥匙
            +
            &#xe683;
            +
            layui-icon-key
            +
            +
            + +
            礼物/活动
            +
            &#xe627;
            +
            layui-icon-gift
            +
            +
            + +
            邮箱
            +
            &#xe618;
            +
            layui-icon-email
            +
            +
            + +
            RSS
            +
            &#xe808;
            +
            layui-icon-rss
            +
            +
            + +
            WiFi
            +
            &#xe7e0;
            +
            layui-icon-wifi
            +
            +
            + +
            退出/注销
            +
            &#xe682;
            +
            layui-icon-logout
            +
            +
            + +
            Android 安卓
            +
            &#xe684;
            +
            layui-icon-android
            +
            +
            + +
            Apple IOS 苹果
            +
            &#xe680;
            +
            layui-icon-ios
            +
            +
            + +
            Windows
            +
            &#xe67f;
            +
            layui-icon-windows
            +
            +
            + +
            穿梭框
            +
            &#xe691;
            +
            layui-icon-transfer
            +
            +
            + +
            客服
            +
            &#xe626;
            +
            layui-icon-service
            +
            +
            + +
            +
            &#xe67e;
            +
            layui-icon-subtraction
            +
            +
            + +
            +
            &#xe624;
            +
            layui-icon-addition
            +
            +
            + +
            滑块
            +
            &#xe714;
            +
            layui-icon-slider
            +
            +
            + +
            打印
            +
            &#xe66d;
            +
            layui-icon-print
            +
            +
            + +
            导出
            +
            &#xe67d;
            +
            layui-icon-export
            +
            +
            + +
            +
            &#xe610;
            +
            layui-icon-cols
            +
            +
            + +
            退出全屏
            +
            &#xe758;
            +
            layui-icon-screen-restore
            +
            +
            + +
            全屏
            +
            &#xe622;
            +
            layui-icon-screen-full
            +
            + +
            + +
            半星
            +
            &#xe6c9;
            +
            layui-icon-rate-half
            +
            +
            + +
            星星-空心
            +
            &#xe67b;
            +
            layui-icon-rate
            +
            +
            + +
            星星-实心
            +
            &#xe67a;
            +
            layui-icon-rate-solid
            +
            +
            + +
            手机
            +
            &#xe678;
            +
            layui-icon-cellphone
            +
            +
            + +
            验证码
            +
            &#xe679;
            +
            layui-icon-vercode
            +
            +
            + +
            微信
            +
            &#xe677;
            +
            layui-icon-login-wechat
            +
            +
            + +
            QQ
            +
            &#xe676;
            +
            layui-icon-login-qq
            +
            + +
            + +
            微博
            +
            &#xe675;
            +
            layui-icon-login-weibo
            +
            +
            + +
            密码
            +
            &#xe673;
            +
            layui-icon-password
            +
            +
            + +
            用户名
            +
            &#xe66f;
            +
            layui-icon-username
            +
            +
            + +
            刷新-粗
            +
            &#xe9aa;
            +
            layui-icon-refresh-3
            +
            +
            + +
            授权
            +
            &#xe672;
            +
            layui-icon-auz
            +
            +
            + +
            左向右伸缩菜单
            +
            &#xe66b;
            +
            layui-icon-spread-left
            +
            +
            + +
            右向左伸缩菜单
            +
            &#xe668;
            +
            layui-icon-shrink-right
            +
            + +
            + +
            雪花
            +
            &#xe6b1;
            +
            layui-icon-snowflake
            +
            +
            + +
            提示说明
            +
            &#xe702;
            +
            layui-icon-tips
            +
            +
            + +
            便签
            +
            &#xe66e;
            +
            layui-icon-note
            +
            +
            + +
            主页
            +
            &#xe68e;
            +
            layui-icon-home
            +
            +
            + +
            高级
            +
            &#xe674;
            +
            layui-icon-senior
            +
            +
            + +
            刷新
            +
            &#xe669;
            +
            layui-icon-refresh
            +
            +
            + +
            刷新
            +
            &#xe666;
            +
            layui-icon-refresh-1
            +
            + +
            + +
            旗帜
            +
            &#xe66c;
            +
            layui-icon-flag
            +
            +
            + +
            主题
            +
            &#xe66a;
            +
            layui-icon-theme
            +
            +
            + +
            消息-通知
            +
            &#xe667;
            +
            layui-icon-notice
            +
            +
            + +
            网站
            +
            &#xe7ae;
            +
            layui-icon-website
            +
            +
            + +
            控制台
            +
            &#xe665;
            +
            layui-icon-console
            +
            +
            + +
            表情-惊讶
            +
            &#xe664;
            +
            layui-icon-face-surprised
            +
            +
            + +
            设置-空心
            +
            &#xe716;
            +
            layui-icon-set
            +
            + +
            + +
            模板
            +
            &#xe656;
            +
            layui-icon-template-1
            +
            +
            + +
            应用
            +
            &#xe653;
            +
            layui-icon-app
            +
            +
            + +
            模板
            +
            &#xe663;
            +
            layui-icon-template
            +
            +
            + +
            +
            &#xe6c6;
            +
            layui-icon-praise
            +
            +
            + +
            +
            &#xe6c5;
            +
            layui-icon-tread
            +
            +
            + +
            +
            &#xe662;
            +
            layui-icon-male
            +
            + +
            + +
            +
            &#xe661;
            +
            layui-icon-female
            +
            +
            + +
            相机-空心
            +
            &#xe660;
            +
            layui-icon-camera
            +
            +
            + +
            相机-实心
            +
            &#xe65d;
            +
            layui-icon-camera-fill
            +
            +
            + +
            菜单-水平
            +
            &#xe65f;
            +
            layui-icon-more
            +
            +
            + +
            菜单-垂直
            +
            &#xe671;
            +
            layui-icon-more-vertical
            +
            +
            + +
            金额-人民币
            +
            &#xe65e;
            +
            layui-icon-rmb
            +
            +
            + +
            金额-美元
            +
            &#xe659;
            +
            layui-icon-dollar
            +
            +
            + +
            钻石-等级
            +
            &#xe735;
            +
            layui-icon-diamond
            +
            + +
            + +
            +
            &#xe756;
            +
            layui-icon-fire
            +
            +
            + +
            返回
            +
            &#xe65c;
            +
            layui-icon-return
            +
            +
            + +
            位置-地图
            +
            &#xe715;
            +
            layui-icon-location
            +
            +
            + +
            办公-阅读
            +
            &#xe705;
            +
            layui-icon-read
            +
            +
            + +
            调查
            +
            &#xe6b2;
            +
            layui-icon-survey
            +
            +
            + +
            表情-微笑
            +
            &#xe6af;
            +
            layui-icon-face-smile
            +
            +
            + +
            表情-哭泣
            +
            &#xe69c;
            +
            layui-icon-face-cry
            +
            + +
            + +
            购物车
            +
            &#xe698;
            +
            layui-icon-cart-simple
            +
            +
            + +
            购物车
            +
            &#xe657;
            +
            layui-icon-cart
            +
            +
            + +
            下一页
            +
            &#xe65b;
            +
            layui-icon-next
            +
            +
            + +
            上一页
            +
            &#xe65a;
            +
            layui-icon-prev
            +
            +
            + +
            上传-空心-拖拽
            +
            &#xe681;
            +
            layui-icon-upload-drag
            +
            +
            + +
            上传-实心
            +
            &#xe67c;
            +
            layui-icon-upload
            +
            +
            + +
            下载-圆圈
            +
            &#xe601;
            +
            layui-icon-download-circle
            +
            + +
            + +
            组件
            +
            &#xe857;
            +
            layui-icon-component
            +
            +
            + +
            文件-粗
            +
            &#xe655;
            +
            layui-icon-file-b
            +
            +
            + +
            用户
            +
            &#xe770;
            +
            layui-icon-user
            +
            +
            + +
            发现-实心
            +
            &#xe670;
            +
            layui-icon-find-fill
            +
            +
            + +
            loading
            +
            &#xe63d;
            +
            layui-icon-loading
            +
            +
            + +
            loading
            +
            &#xe63e;
            +
            layui-icon-loading-1
            +
            +
            + +
            添加
            +
            &#xe654;
            +
            layui-icon-add-1
            +
            + +
            + +
            播放
            +
            &#xe652;
            +
            layui-icon-play
            +
            +
            + +
            暂停
            +
            &#xe651;
            +
            layui-icon-pause
            +
            +
            + +
            音频-耳机
            +
            &#xe6fc;
            +
            layui-icon-headset
            +
            +
            + +
            视频
            +
            &#xe6ed;
            +
            layui-icon-video
            +
            +
            + +
            语音-声音
            +
            &#xe688;
            +
            layui-icon-voice
            +
            +
            + +
            消息-通知-喇叭
            +
            &#xe645;
            +
            layui-icon-speaker
            +
            +
            + +
            删除线
            +
            &#xe64f;
            +
            layui-icon-fonts-del
            +
            + +
            + +
            代码
            +
            &#xe64e;
            +
            layui-icon-fonts-code
            +
            +
            + +
            HTML
            +
            &#xe64b;
            +
            layui-icon-fonts-html
            +
            +
            + +
            字体加粗
            +
            &#xe62b;
            +
            layui-icon-fonts-strong
            +
            +
            + +
            删除链接
            +
            &#xe64d;
            +
            layui-icon-unlink
            +
            +
            + +
            图片
            +
            &#xe64a;
            +
            layui-icon-picture
            +
            +
            + +
            链接
            +
            &#xe64c;
            +
            layui-icon-link
            +
            +
            + +
            表情-笑-粗
            +
            &#xe650;
            +
            layui-icon-face-smile-b
            +
            + +
            + +
            左对齐
            +
            &#xe649;
            +
            layui-icon-align-left
            +
            +
            + +
            右对齐
            +
            &#xe648;
            +
            layui-icon-align-right
            +
            +
            + +
            居中对齐
            +
            &#xe647;
            +
            layui-icon-align-center
            +
            +
            + +
            字体-下划线
            +
            &#xe646;
            +
            layui-icon-fonts-u
            +
            +
            + +
            字体-斜体
            +
            &#xe644;
            +
            layui-icon-fonts-i
            +
            +
            + +
            Tabs 选项卡
            +
            &#xe62a;
            +
            layui-icon-tabs
            +
            +
            + +
            单选框-选中
            +
            &#xe643;
            +
            layui-icon-radio
            +
            + +
            + +
            单选框-候选
            +
            &#xe63f;
            +
            layui-icon-circle
            +
            +
            + +
            编辑
            +
            &#xe642;
            +
            layui-icon-edit
            +
            +
            + +
            分享
            +
            &#xe641;
            +
            layui-icon-share
            +
            +
            + +
            删除
            +
            &#xe640;
            +
            layui-icon-delete
            +
            +
            + +
            表单
            +
            &#xe63c;
            +
            layui-icon-form
            +
            +
            + +
            手机-细体
            +
            &#xe63b;
            +
            layui-icon-cellphone-fine
            +
            +
            + +
            聊天 对话 沟通
            +
            &#xe63a;
            +
            layui-icon-dialogue
            +
            + +
            + +
            文字格式化
            +
            &#xe639;
            +
            layui-icon-fonts-clear
            +
            +
            + +
            窗口
            +
            &#xe638;
            +
            layui-icon-layer
            +
            +
            + +
            日期
            +
            &#xe637;
            +
            layui-icon-date
            +
            +
            + +
            水 下雨
            +
            &#xe636;
            +
            layui-icon-water
            +
            +
            + +
            代码-圆圈
            +
            &#xe635;
            +
            layui-icon-code-circle
            +
            +
            + +
            轮播组图
            +
            &#xe634;
            +
            layui-icon-carousel
            +
            +
            + +
            翻页
            +
            &#xe633;
            +
            layui-icon-prev-circle
            +
            + +
            + +
            布局
            +
            &#xe632;
            +
            layui-icon-layouts
            +
            +
            + +
            工具
            +
            &#xe631;
            +
            layui-icon-util
            +
            +
            + +
            选择模板
            +
            &#xe630;
            +
            layui-icon-templeate-1
            +
            +
            + +
            上传-圆圈
            +
            &#xe62f;
            +
            layui-icon-upload-circle
            +
            +
            + +
            +
            &#xe62e;
            +
            layui-icon-tree
            +
            +
            + +
            表格
            +
            &#xe62d;
            +
            layui-icon-table
            +
            +
            + +
            图表
            +
            &#xe62c;
            +
            layui-icon-chart
            +
            + +
            + +
            图标 报表 屏幕
            +
            &#xe629;
            +
            layui-icon-chart-screen
            +
            +
            + +
            引擎
            +
            &#xe628;
            +
            layui-icon-engine
            +
            +
            + +
            下三角
            +
            &#xe625;
            +
            layui-icon-triangle-d
            +
            +
            + +
            右三角
            +
            &#xe623;
            +
            layui-icon-triangle-r
            +
            +
            + +
            文件
            +
            &#xe621;
            +
            layui-icon-file
            +
            +
            + +
            设置-小型
            +
            &#xe620;
            +
            layui-icon-set-sm
            +
            +
            + +
            减少-圆圈
            +
            &#xe616;
            +
            layui-icon-reduce-circle
            +
            +
            + +
            添加-圆圈
            +
            &#xe61f;
            +
            layui-icon-add-circle
            +
            + + +
            + +
            404
            +
            &#xe61c;
            +
            layui-icon-404
            +
            +
            + +
            关于
            +
            &#xe60b;
            +
            layui-icon-about
            +
            +
            + +
            箭头 向上
            +
            &#xe619;
            +
            layui-icon-up
            +
            +
            + +
            箭头 向下
            +
            &#xe61a;
            +
            layui-icon-down
            +
            +
            + +
            箭头 向左
            +
            &#xe603;
            +
            layui-icon-left
            +
            +
            + +
            箭头 向右
            +
            &#xe602;
            +
            layui-icon-right
            +
            +
            + +
            圆点
            +
            &#xe617;
            +
            layui-icon-circle-dot
            +
            + +
            + +
            搜索
            +
            &#xe615;
            +
            layui-icon-search
            +
            +
            + +
            设置-实心
            +
            &#xe614;
            +
            layui-icon-set-fill
            +
            +
            + +
            群组
            +
            &#xe613;
            +
            layui-icon-group
            +
            +
            + +
            好友
            +
            &#xe612;
            +
            layui-icon-friends
            +
            +
            + +
            回复 评论 实心
            +
            &#xe611;
            +
            layui-icon-reply-fill
            +
            +
            + +
            菜单 隐身 实心
            +
            &#xe60f;
            +
            layui-icon-menu-fill
            +
            +
            + +
            记录
            +
            &#xe60e;
            +
            layui-icon-log
            +
            + +
            + +
            图片-细体
            +
            &#xe60d;
            +
            layui-icon-picture-fine
            +
            +
            + +
            表情-笑-细体
            +
            &#xe60c;
            +
            layui-icon-face-smile-fine
            +
            +
            + +
            列表
            +
            &#xe60a;
            +
            layui-icon-list
            +
            +
            + +
            发布 纸飞机
            +
            &#xe609;
            +
            layui-icon-release
            +
            +
            + +
            对 OK
            +
            &#xe605;
            +
            layui-icon-ok
            +
            +
            + +
            帮助
            +
            &#xe607;
            +
            layui-icon-help
            +
            +
            + +
            客服
            +
            &#xe606;
            +
            layui-icon-chat
            +
            + +
            + +
            top 置顶
            +
            &#xe604;
            +
            layui-icon-top
            +
            +
            + +
            收藏-空心
            +
            &#xe600;
            +
            layui-icon-star
            +
            +
            + +
            收藏-实心
            +
            &#xe658;
            +
            layui-icon-star-fill
            +
            +
            + +
            关闭-实心
            +
            &#x1007;
            +
            layui-icon-close-fill
            +
            +
            + +
            关闭-空心
            +
            &#x1006;
            +
            layui-icon-close
            +
            +
            + +
            正确
            +
            &#x1005;
            +
            layui-icon-ok-circle
            +
            +
            + +
            添加-圆圈-细体
            +
            &#xe608;
            +
            layui-icon-add-circle-fine
            +
            +
            + + +

            跨域处理

            + +由于浏览器存在同源策略,若 Layui 文件地址与你当前的页面地址*不在同一个域下*,即会出现图标跨域问题。因此,要么将 Layui 文件与网站放在同一服务器,要么对 Layui 文件所在的静态资源服务器的 `Response Headers` 添加:`Access-Control-Allow-Origin: *` 或对跨资源共享指定域名,即可解决图标跨域问题。 \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..758dbfd2 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,119 @@ +--- +title: 开始使用 +toc: true +--- + +

            开始使用

            + +> Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,极易上手,拿来即用。其风格简约轻盈,而内在雅致丰盈,甚至包括文档在内的每一处细节都经过精心雕琢,非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架,却并非逆道而行,而是信奉返璞归真之道。确切地说,它更多是面向于追求简单的务实主义者,即无需涉足各类构建工具,只需面向浏览器本身,便可将页面所需呈现的元素与交互信手拈来。 + +

            + Layui +

            + + + + + + + + + + + + +
            谐音:类 UI用途:用于更简单快速地构建网页界面
            环境:全部主流 Web 浏览器(IE8 以下除外)特性:原生态开发 / 轻量级模块化 / 外简内丰 / 开箱即用
            + +

            下载引用

            + +您可以通过以下任意一种方式获得 Layui : + +### 🌕 官网下载 + +您可以在我们的 [官网首页](/) 下载到 Layui 当前版本,它经过了自动化构建,更适合用于生产环境。目录结构如下: + +``` +layui/ + ├─css + │ └─layui.css # 核心样式库 + └─layui.js # 核心模块库 +``` + +### 🌕 Git 下载 + +> 您也可以通过 [GitHub](https://github.com/layui/layui/releases) 或 [Gitee](https://gitee.com/layui/layui/releases) 的 releases 列表下载,或直接下载整个仓库。 + +

            + + +

            +
            + GitHub + Gitee +
            + +### 🌕 npm 下载 + +``` +npm i layui +``` + +### 🌕 第三方 CDN 方式引入: + +> UNPKG 和 CDNJS 均为第三方免费 CDN,资源通过 NPM/GitHub 进行同步。另外还可以采用国内的 [Staticfile CDN](https://www.staticfile.org/)。 + +
            + UNPKG + CDNJS +
            + + +``` + + + + + + + + + + + +点击上方 `Preview` 标签可进行效果预览。 + +

            其他帮助

            + +- 在线测试:https://codepen.io/layui/pen/bGxZXrd +- 深色主题:https://github.com/Sight-wcg/layui-theme-dark + + +## 初识寄语 + +> 愿 Layui 从此成为您得心应手的 Web 界面解决方案,化作您方寸屏幕前的亿万字节! \ No newline at end of file diff --git a/docs/laydate/detail/demo.md b/docs/laydate/detail/demo.md new file mode 100644 index 00000000..494d905c --- /dev/null +++ b/docs/laydate/detail/demo.md @@ -0,0 +1,97 @@ +

            常规用法

            + +
            +  
            +
            + +

            多类型选择器

            + +默认为日期选择器,即上文「常规用法」示例中的效果。以下主要呈现其他类型选择器: + +
            +  
            +
            + +

            范围选择

            + +
            +  
            +
            + +

            配置快捷选项 2.8+

            + +
            +  
            +
            + + +

            自定义格式

            + +
            +  
            +
            + + +

            节日及标注

            + +
            +  
            +
            + + +

            限制可选日期

            + +
            +  
            +
            + + +

            批量绑定元素

            + +
            +  
            +
            + + +

            更多功能示例

            + +
            +  
            +
            + + +

            自定义主题

            + +
            +  
            +
            + +

            直接静态显示

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/laydate/detail/options.md b/docs/laydate/detail/options.md new file mode 100644 index 00000000..1acb4b28 --- /dev/null +++ b/docs/laydate/detail/options.md @@ -0,0 +1,679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
            + +[type](#options.type) + + + +
            + 组件面板选择类型。支持以下可选值: +
            + +- `year` 年选择器,只提供年列表选择 +- `month` 年月选择器,只提供年、月选择 +- `date` 日期选择器(默认),可选择:年、月、日选择 +- `time` 时间选择器,只提供时、分、秒选择 +- `datetime` 日期时间选择器,可选择:年月日、时分秒 + +效果详见: [#示例](#demo-type) + +
            string + +`date` + +
            + +[range](#options.range) + + + +
            + +开启左右面板的范围选择,将会根据 `type` 类型呈现对应的范围选择面板。该属性值支持以下类型: + +
            + +- 若为 `boolean` 类型,即表示是否开启范围选择,若设为 `true`,则开始日期与结束日期默认采用 `-` 连接符 +- 若为 `string` 类型,则表示开启范围选择,且自定义开始日期与结束日期的连接符。如: `range: '~'` +- 若为 `boolean` 类型,即表示开启范围选,且开始日期和结束日期分别赋值在两个目标选择器中,如: + +``` +range: ['#start', '#end'] +``` + +详细用法可参考: [#示例](#demo-range) + + +
            boolean
            string
            array
            + +`false` + +
            rangeLinked 2.8+ + +是否开启日期范围选择时的区间联动标注模式,该必须开启 `range` 属性后生效。日期范围默认采用的是*左右面板独立选择模式*,设置该属性后,将采用*左右面板联动选择模式*。 +
            效果详见: [#示例](#demo-range) + +
            boolean + +`false` + +
            fullPanel 2.8+ + +是否开启全面板,即日期和时间显示在同一面板。 当 `type: 'datetime'` 且未设置 `range` 属性时生效。 +
            效果详见: [#示例](#demo-type) + +
            boolean + +`false` + +
            + +[format](#options.format) + + + +
            + +自定义日期和时间值的返回格式,默认值: `yyyy-MM-dd`。 其格式符规则如下: + +
            + + +| 格式符 | 描述 | +| --- | --- | +| yyyy | 年份,输出四个字符。若不足四位,则前置补零 | +| y | 年份,允许一位 | +| MM | 月份,输出两个字符。若不足两位,则前置补零 | +| M | 月份,允许一位 | +| dd | 日期,输出两个字符。若不足两位,则前置补零 | +| d | 日期,允许一位 | +| HH | 小时,输出两个字符。若不足两位,则前面补零 | +| H | 小时,允许一位 | +| mm | 分钟,输出两个字符。若不足两位,则前面补零 | +| m | 分钟,允许一位 | +| ss | 秒数,输出两个字符。若不足两位,则前面补零 | +| s | 秒数,允许一位 | + +通过上述格式符组成日期时间字符串,如下所示: + +``` +// 返回值示例: 2008-08-08 20:08:08 +format: 'yyyy-MM-dd HH:mm:ss' + +// 返回值示例: 北京时间 6 点 30 分 +format: '北京时间 H 点 m 分' +``` + +相关用法可参考: [#示例](#demo-format) + +
            + +[value](#options.value) + + + +
            +初始值。值支持以下类型: +
            + +- 若为 `string` 类型,则必须和 `format` 属性的格式对应。 + +``` +value: '2018-08-18' +``` + +- 若为 `date` 对象类型,则赋值 `new Date()` 的实例即可。 + +``` +value: new Date(1534766888000) // 参数即为:2018-08-20 20:08:08 的毫秒数 +``` + +
            string
            date
            + +`new Date()` + +
            isInitValue + +是否将初始值填充在目标元素中,一般配合 `value` 属性使用 + +boolean + +`false` + +
            + +[shortcuts](#options.shortcuts) 2.8+ + + + +
            +用于开启面板左侧的快捷选择栏。其值配置规则如下: +
            + +``` +shortcuts: [ + { + text: "快捷选项文本", + value: '快捷选项值' + }, + // 更多选项 … +] +``` + +其中 `value` 支持以下类型: + +- 若为 `string` 类型,必须和 `format` 设置的格式对应; +- 若为 `date` 对象类型,则可通过操作 `new Date()` 来对选项值进行相应的返回计算; +- 若为 `array` 类型,则数组成员可填写开始日期和结束日期。 + +详细用法可参考: [#示例](#demo-shortcut) + +
            string
            date
            array
            -
            weekStart 2.7+ + +设置起始周。 支持 0-6 的数字,`0` 即代表从周日开始。 + +``` +weekStart: 1 // 设置周一为起始周 +``` + +number + +`0` + +
            isPreview + +用于是否在面板左下角显示当前结果的预览。当 `type:datetime` 时强制为 `false`。 + +boolean + +`true` + +
            + +[min / max](#options.minmax) + + + +
            + +限制可供选择的最小或最大日期时间值。默认值: + +- `min: '1900-1-1'` +- `max: '2099-12-31'` + +
            + +属性值支持以下可选类型: + +- 若值为字符类型,则:年月日必须用 `-` 连接,且时分秒必须用 `:` 连接。 此处无需遵循 `format` 设定的格式; +- 若值为整数类型,且数字 < 86400000,则数字代表天数,如: `min: -7` 即代表最小日期在 7 天前,正数代表若干天后; +- 若值为整数类型,且数字 ≥ 86400000,则数字代表毫秒数,如:`max: 4073558400000` 即代表最大日期在公元 3000年1月1日。 + +示例: + +``` +min: '2017-1-1 00:00:00' // 最小日期时间值 +min: -7 // 最小日期为 7 天前 +max: 7 // 最大日期为 7 天后 +``` + +相关效果可参考: [#示例](#demo-limit) + +
            trigger + +自定义弹出组件面板的事件 + +string + +`click` + +
            show + +是否在渲染时默认显示组件面板。组件在执行渲染时,默认需通过触发目标元素的事件,方可显示组件面板,而该属性可跳过目标元素的事件,直接显示组件面板。 + +boolean + +`false` + +
            position + +设置组件面板的定位方式。支持以下可选值: + +- `absolute` 绝对定位,始终吸附在绑定元素周围。 +- `fixed` 固定定位,初始吸附在绑定元素周围,不随浏览器滚动条所左右。一般用于在固定定位的弹层中使用。 +- `static` 静态定位,控件将直接嵌套显示在指定容器中。用法详见:[#示例](#demo-static) + +string + +`absolute` + +
            zIndex + +设置组件面板的层叠顺序。一般用于解决与其它元素的互相被遮掩的问题。若 `positio: 'tatic'` 时,则该属性无效。 + +number + +`99999999` + +
            + +[shade](#options.shade) 2.8+ + +
            +用于开启弹出日期面板时的遮罩。值支持以下可选类型: +
            + +- 若为 `number` 类型,则表示遮罩透明度。如: + +``` +shade: 0.5 +``` + +- 若为 `array` 类型,则可设置遮罩颜色和透明度,如: + +``` +shade: [0.5, '#000'] // 遮罩的透明度和背景色 +``` + +效果详见: [#示例](#demo-more) + +
            number
            array
            -
            showBottom + +是否显示组件面板的底部栏 + +boolean + +`true` + +
            btns + +自定义排版组件面板底部栏中的按钮,按钮将按照数组顺序排列。内置按钮名称:`clear,now,confirm` 。 + +``` + // 显示清空、确认按钮 +btns: ['clear', 'confirm'] +``` + +array-
            autoConfirm 2.8+ + +是否在选中目标值时即自动确认。 + +boolean + +`true` + +
            lang + +设置组件的语言版本。可选值如下: + +- `cn` 中文版 +- `en` 英文版 + +string + +`cn` + +
            + +[theme](#options.theme) + + + +
            + +设置组件面板主题。除了默认主题,还内置主题: `molv` `grid` ,且支持直接传入自定义的主题色。 + +
            + +``` +theme: '#FF5722' +``` + +注 2.8+ : 多个主题可用数组格式,如: + +``` +theme: ['grid', '#FF5722'] +``` + +效果及用法详见: [#示例](#demo-theme) + +
            string
            array
            -
            calendar + +是否显示我国常见的公历节日。当 `lang: 'en'` 时无效。 + +boolean + +`true` + +
            + +[mark](#options.mark) + + + +
            +自定义日期标记。该属性是对 `calendar` 属性的进一步延伸,灵活度更高。属性可批量设置多个日期标记,如: +
            + +``` +mark: { + '0-10-14': '生日', //每年每月的某一天 + '0-0-10': '工资', // 每月 10 号 + '2008-8-8': '开幕', // 指定的日期 +} +``` + +前缀 `0-` 即代表每年,`0-0-` 即代表每年每月。 + +效果详见: [#示例](#demo-mark) + + +
            object-
            + +[holidays](#options.holidays) 2.7+ + + + +
            +用于标注节假日及补班日。值是一个二维数组,如: +
            + +``` +holidays: [ + // 2023 年的节假日 + ['2023-1-1','2023-1-2','2023-1-3'], + // 2023 年的补班日 + ['2023-1-28','2023-1-29'] +] +``` + +相关日期值可详细参考国家每年公布的法定节假日安排 + +效果详见: [#示例](#demo-mark) + +
            array-
            + + +
            + +[回调函数](#options.callback) + +
            + +
            + +[ready](#options.ready) + + + +
            +组件面板初始打开的回调函数。返回的参数如下: +
            + +``` +ready: function(date){ + /* 得到初始的日期时间对象,date 参数格式如下: + { + year: 2017, // 年 + month: 8, // 月 + date: 18, // 日 + hours: 0, // 时 + minutes: 0, // 分 + seconds: 0 // 秒 + } + */ + console.log(date); +} +``` + +
            + +[change](#options.change) + + + +
            +日期时间被切换后的回调函数。返回的参数如下: +
            + +``` +change: function(value, date, endDate){ + console.log(value); // 日期字符,如: 2017-08-18 + console.log(date); // 包含年月日时分秒各项值的对象 + console.log(endDate); // 结束日期时间对象,当设置 range 时才会返回。对象成员同上。 +} +``` + +
            + +[done](#options.done) + + + +
            +日期时间选择完毕的回调函数,点击清空、现在、确定也均会触发。返回的参数如下: +
            + +``` +done: function(value, date, endDate){ + console.log(value); // 日期字符,如: 2017-08-18 + console.log(date); // 包含年月日时分秒各项值的对象 + console.log(endDate); // 结束日期时间对象,当设置 range 时才会返回。对象成员同上。 +} +``` + +
            onConfirm 2.8+ + +点击底部栏「确定」按钮时的回调函数。返回的参数同 `done`。 + +
            onNow 2.8+ + +点击底部栏「现在」按钮时的回调函数。返回的参数同 `done`。 + +
            onClear 2.8+ + +点击底部栏「清空」按钮时的回调函数。返回的参数同 `done`。 + +
            close 2.7+ + +组件面板被关闭(移除)后的回调函数。无返回参数。 + +
            \ No newline at end of file diff --git a/docs/laydate/examples/elem.md b/docs/laydate/examples/elem.md new file mode 100644 index 00000000..a57bc1c6 --- /dev/null +++ b/docs/laydate/examples/elem.md @@ -0,0 +1,24 @@ +
            +
            +
            + +
            +
            + +
            +
            + +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/format.md b/docs/laydate/examples/format.md new file mode 100644 index 00000000..9c8eb68a --- /dev/null +++ b/docs/laydate/examples/format.md @@ -0,0 +1,77 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/limit.md b/docs/laydate/examples/limit.md new file mode 100644 index 00000000..961edd66 --- /dev/null +++ b/docs/laydate/examples/limit.md @@ -0,0 +1,57 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            + 这里以控制在 9:30-17:30 为例 +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/mark.md b/docs/laydate/examples/mark.md new file mode 100644 index 00000000..1a97c9f5 --- /dev/null +++ b/docs/laydate/examples/mark.md @@ -0,0 +1,66 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/more.md b/docs/laydate/examples/more.md new file mode 100644 index 00000000..4456d551 --- /dev/null +++ b/docs/laydate/examples/more.md @@ -0,0 +1,198 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            + 2.8+ +
            +
            +
            +
            +
            + 覆盖实例与解除实例 2.8+ : +
            +
            +
            +
            +
            + +
            +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/normal.md b/docs/laydate/examples/normal.md new file mode 100644 index 00000000..0cacaf03 --- /dev/null +++ b/docs/laydate/examples/normal.md @@ -0,0 +1,32 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/range.md b/docs/laydate/examples/range.md new file mode 100644 index 00000000..8b408b3e --- /dev/null +++ b/docs/laydate/examples/range.md @@ -0,0 +1,110 @@ +
            +
            + 左右面板独立选择模式(默认) : +
            +
            +
            + +
            +
            + +
            +
            -
            +
            + +
            +
            +
            +
            +
            + 左右面板联动选择模式 2.8+ : +
            +
            +
            + +
            +
            + +
            +
            -
            +
            + +
            +
            +
            +
            +
            其他类型的范围选择 :
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/shortcut.md b/docs/laydate/examples/shortcut.md new file mode 100644 index 00000000..81ccfd6f --- /dev/null +++ b/docs/laydate/examples/shortcut.md @@ -0,0 +1,548 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + +
            + +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/static.md b/docs/laydate/examples/static.md new file mode 100644 index 00000000..82862105 --- /dev/null +++ b/docs/laydate/examples/static.md @@ -0,0 +1,33 @@ +
            +
            +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/theme.md b/docs/laydate/examples/theme.md new file mode 100644 index 00000000..3c4b48a5 --- /dev/null +++ b/docs/laydate/examples/theme.md @@ -0,0 +1,58 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/examples/type.md b/docs/laydate/examples/type.md new file mode 100644 index 00000000..aadd5c66 --- /dev/null +++ b/docs/laydate/examples/type.md @@ -0,0 +1,77 @@ +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            +
            +
            + 同时显示日期和时间选择器(全面板) 2.8+ : +
            +
            +
            + +
            + +
            +
            +
            +
            + + \ No newline at end of file diff --git a/docs/laydate/index.md b/docs/laydate/index.md new file mode 100644 index 00000000..4086fd70 --- /dev/null +++ b/docs/laydate/index.md @@ -0,0 +1,184 @@ +--- +title: 日期与时间选择器 laydate +toc: true +--- + +# 日期与时间选择器 + +> 日期与时间选择器 `laydate` 提供了年、月、日、时、分、秒的多类型选择面板,也是 Layui 的常用组件之一。 + +

            示例

            + + + +
            +{{- d.include("docs/laydate/detail/demo.md") }} +
            + +

            + +

            API

            + +| API | 描述 | +| --- | --- | +| var laydate = layui.laydate | 获得 `laydate` 模块。 | +| [laydate.render(options)](#render) | laydate 组件渲染,核心方法。 | +| [laydate.hint(id, opts)](#hint) 2.8+ | 在对应的 laydate 组件面板上弹出提示层。 | +| [laydate.getInst(id)](#getInst) 2.8+ | 获取组件对应的渲染实例。 | +| [laydate.unbind(id)](#close) 2.8+ | 对目标元素解除当前实例的绑定。 | +| [laydate.close(id)](#close) 2.7+ | 关闭日期面板。 | +| [laydate.getEndDate(month, year)](#getEndDate) | 获取某月的最后一天 | + +

            渲染

            + +`laydate.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +
            2.8+ : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 + +``` + + + + + +``` + +

            属性

            + +
            +{{- d.include("docs/laydate/detail/options.md") }} +
            + +

            弹出提示 2.8+

            + +`laydate.hint(id, opts);` + +- 参数 `id` : 组件渲染时定义的 `id` 属性值 +- 参数 `opts` : 该方法支持的属性可选项,详见下表 + +| opts | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| content | 提示内容 | string | - | +| ms | 提示层自动消失所需的毫秒数 | number | 3000 | + +该方法用于在指定的日期面板弹出一个提示层。 + +``` +var laydate = layui.laydate; +// 渲染 +laydate.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id + // 其他属性 … +}); +// 弹出提示 +laydate.hint('test', { + content: '提示内容' +}); +``` + +

            获取实例 2.8+

            + +`laydate.getInst(id);` + +- 参数 `id` : 组件渲染时定义的 `id` 属性值 + +该方法用于在获取 laydate 对应 id 的渲染实例,以获得该实例对应的成员属性。 + +``` +var laydate = layui.laydate; +// 渲染 +laydate.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id + // 其他属性 … +}); +// 获取对应的实例 +var inst = laydate.getInst('test'); +console.log(inst); // 实例对象 +``` + + +

            解除实例绑定 2.8+

            + +`laydate.unbind(id);` + +- 参数 `id` : 组件渲染时定义的 `id` 属性值 + +该方法用于对目标元素对应的实例的完全解除,即触发元素事件时,不再执行组件渲染。 + +``` +var laydate = layui.laydate; +// 渲染 +laydate.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id + // 其他属性 … +}); +// 解除对应的实例绑定 +laydate.unbind('test'); +``` + + +

            关闭日期面板 2.7+

            + +`laydate.close(id);` + +- 参数 `id` : 组件渲染时定义的 `id` 属性值。 若 `id` 参数不填,则关闭当前打开的日期面板 + +该方法用于关闭对应的日期面板 + +``` +var laydate = layui.laydate; +// 渲染 +laydate.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id + // 其他属性 … +}); +// 关闭对应的日期面板 +laydate.cllose('test'); +``` + +

            获取某月的最后一天

            + +`laydate.getEndDate(month, year);` + +- 参数 `month` : 月份,默认为当前月。 +- 参数 `year` : 年份,默认为今年。 + +该方法用于获取某个月份的最后一天 + +``` +var days1 = laydate.getEndDate(10); // 获得 10 月的最后一天为 31 号 +var days2 = laydate.getEndDate(2, 2080); // 获得 2080 年 2 月的最后一天为 29 号 +``` + +## 贴士 + +> laydate 曾经可作为单独组件使用,鉴于维护成本的考量,目前 laydate 组件已完全集成到 Layui 中,而单独版本已不做同步维护。 +因此,建议直接使用 layui 中 laydate 即可。 + + diff --git a/docs/layer/detail/demo.md b/docs/layer/detail/demo.md new file mode 100644 index 00000000..09bc6f06 --- /dev/null +++ b/docs/layer/detail/demo.md @@ -0,0 +1,99 @@ +

            在线测试

            + +
            +  
            +
            + +

            弹层类型

            + +
            +  
            +
            + +

            信息框

            + +
            +  
            +
            + +

            页面层

            + +
            +  
            +
            + +

            iframe 层

            + +
            +  
            +
            + +

            加载层

            + +为了不影响继续体验,以下每个 loading 示例均会在 3 秒后自动模拟关闭 + +
            +  
            +
            + +

            Tips 层

            + +
            +  
            +
            + +

            其他层

            + +
            +  
            +
            + +

            更多演示

            + +
            +  
            +
            + +
            +  
            +
            + +
            +  
            +
            + + +

            主题风格

            + +
            +  
            +
            + +### 小贴士 + +> 事实上 layer 丰富的基础属性,可足够让您的弹出层变得千变万化,为了避免占用太多篇幅,就不做过多演示了。 \ No newline at end of file diff --git a/docs/layer/detail/options.md b/docs/layer/detail/options.md new file mode 100644 index 00000000..ff197ebe --- /dev/null +++ b/docs/layer/detail/options.md @@ -0,0 +1,868 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            type + +弹层类型。 可选值有: + +- `0` dialog 信息框 +- `1` page 页面层 +- `2` iframe 内联框架层 +- `3` loading 加载层 +- `4` tips 贴士层 + +`layer` 弹层由以上 5 种类型构成。 不同的类型代表不同的弹出形态,`layer` 提供的所有的弹出方式均由此衍生。 + +number + +`0` + +
            title + +弹层标题。其值支持以下可选类型: + +- 若为 `string` 类型 : 则表示为弹层的标题文本,如: + +``` +title: '标题' +``` + +- 若为 `array` 类型 : 则可设置标题文本和标题栏 CSS 样式: + +``` + title: ['标题', 'font-size: 18px;'] +``` + +- 若为 `boolean` 类型 : 则可设为 `false` 不显示标题栏。 + +``` +title: false // 不显示标题栏 +``` + +string
            array
            boolean
            + +`信息` + +
            + +[content](#options.content) + + + +
            + +弹层内容。 可传入的值比较灵活,支持以下使用场景: + +- 若 `type: 1`(页面层): 则 `content` 可传入值如下: + +``` +// 普通字符 +layer.open({ + type: 1, + content: '传入任意文本或 HTML' +}); +// 捕获页面已存在的 DOM 元素或 jQuery 对象 +layer.open({ + type: 1, + content: $('#id') // 捕获层 +}); +``` + +注意: 若采用捕获层,则捕获的元素必须存放在 `` 根节点下,否则可能被父级容器的相对定位所影响。 + +
            + +- 若 `type: 2`(iframe 层): 则 `content` 可传入值如下: + +``` +// iframe URL +layer.open({ + type: 2, + content: 'http://cn.bing.com' // URL +}); +// 是否屏蔽 iframe 滚动条 +layer.open({ + type: 2, + // 数组第二个成员设为 no,即屏蔽 iframe 滚动条 + content: ['http://cn.bing.com', 'yes'] +}); +``` + +- 若为其他弹层类型,传入普通字符即可。 + +相关效果可参考:[#示例](#demo-page) + +
            + +[area](#options.area) + + + +
            +设置弹层的宽高,其值支持以下可选类型: +
            + +- 若为 `array` 类型,则可同时设置宽高 + - `area: ['520px', '320px']` 固定宽度和高度 + - `area: ['auto', '320px']` 宽度自动,高度固定 + - `area: ['520px', 'auto']` 宽度固定,高度自动 +- 若为 `string` 类型,则可定义宽度和宽高均自适应: + - `area: '520px'` 宽度固定,高度自适应 + - `area: 'auto'` 宽度和高度均自适应 + +
            array
            string
            + +`auto` + +
            maxWidth + +弹层的最大宽度。当 `area` 属性值为默认的 `auto'` 时有效。 + +number + +`360` + +
            maxHeight + +弹层的最大高度。当 `area` 属设置高度自适应时有效。 + +number-
            + +[offset](#options.offset) + + + +
            +弹层的偏移坐标。 支持以下可选值: +
            + +- `offset: 'auto'` 坐标始终垂直水平居中 +- `offset: '16px'` 只设置垂直坐标,水平保持居中 +- `offset: ['16px', '16px']` 设置垂直和水平坐标 +- `offset: 't'` 上边缘 +- `offset: 'r'` 右边缘 +- `offset: 'b'` 下边缘 +- `offset: 'l'` 左边缘 +- `offset: 'rt'` 右上角 +- `offset: 'rb'` 右下角 +- `offset: 'lt'` 左上角 +- `offset: 'lb'` 左下角 + +当设置边缘坐标时,可配合 `anim` 属性实现抽屉弹出效果。 + +
            string
            array
            + +`auto` + +
            + +[anim](#options.anim) + + + +
            +弹层的出场动画。支持以下可选值: +
            + +- `anim: 0` 平滑放大。默认 +- `anim: 1` 从上掉落 +- `anim: 2` 从最底部往上滑入 +- `anim: 3` 从左滑入 +- `anim: 4` 从左翻滚 +- `anim: 5` 渐显 +- `anim: 6` 抖动 + +边缘抽屉动画 2.8+: + +- `anim: 'slideDown'` 从上边缘往下 +- `anim: 'slideLeft'` 从右边缘往左 +- `anim: 'slideUp'` 从下边缘往上 +- `anim: 'slideRight'` 从左边缘往右 + +抽屉动画一般配合 `offset` 属性实现边缘弹出。[#详见示例](#demo-more) + + +
            number
            string
            + +`0` + +
            isOutAnim + +是否开启弹层关闭时的动画。 + +boolean + +`true` + +
            maxmin + +是否开启标题栏的最大化和最小化图标。 + +array + +`false` + +
            + +[closeBtn](#options.closeBtn) + + + +
            +是否开启标题栏的关闭图标,或设置关闭图标风格。 +
            + +- `closeBtn: 0` 不显示关闭图标 +- `closeBtn: 1` 关闭图标默认风格 +- `closeBtn: 2` 关闭图标风格二 + +
            number + +`1` + +
            + +[icon](#options.icon) + + + +
            +提示图标。 信息框和加载层的私有参数。 +
            + +- 若为信息框,支持传入 `0-6` 的可选值。
            默认为 `-1`,即不显示图标。 +- 若为加载层,支持传入 `0-2` 的可选值 + +``` +// eg1 +layer.alert('成功提示', {icon: 1}); + +// eg2 +layer.msg('开心表情', {icon: 6}); + +// eg3 +layer.load(1); // 加载层风格一 +``` + +
            number + +`-1` + +
            + +[btn](#options.btn) + + + +
            +自定义按钮。 页面层默认不开启。 按钮可无限数量,每一个按钮均会按照数组顺序生成对应的回调函数,如: +
            + +``` +// eg1 +layer.confirm('询问框?', { + btn: ['按钮1', '按钮2', '按钮3'] +}); +// eg2 +layer.open({ + content: 'test', + btn: ['按钮1', '按钮2', '按钮3'], + // 按钮1 的回调 + btn1: function(index, layero, that){}, + btn2: function(index, layero, that){ + // 按钮2 的回调 + // return false // 点击该按钮后不关闭弹层 + }, + btn3: function(index, layero, that){ + // 按钮3 的回调 + // return false // 点击该按钮后不关闭弹层 + } +}); +``` + +
            string-
            + +[btnAlign](#options.btnAlign) + + + +
            +按钮水平对其方式。支持以下可选值: +
            + +- `btnAlign: 'l'` 按钮左对齐 +- `btnAlign: 'c'` 按钮水平居中对齐 +- `btnAlign: 'r'` 按钮右对齐。默认值,不用设置 + + +
            string + +`r` + +
            + +[skin](#options.skin) + + + +
            +弹层的主题风格。通过赋值对应的 className,实现对主题样式的定制。除了默认主题风格,还支持以下可选主题: +
            + +- `layui-layer-molv` 墨绿主题 +- `layui-layer-lan` 深蓝主题 +- `layui-layer-win10` Windows 10 主题 2.8+ + +还可传入其他任意 className 来自定义主题。 参考:[#示例](#demo-skin) + + +
            string-
            + +[shade](#options.shade) + + + +
            +弹层的遮罩。 支持以下写法: +
            + +- `shade: 0.3` 设置遮罩深色背景的透明度 +- `shade: [0.3, '#FFF']` 设置遮罩透明度和颜色值 +- `shade: 0` 不显示遮罩 + +
            number
            array
            + +`0.3` + +
            shadeClose + +是否点击遮罩时关闭弹层。当遮罩存在时有效。 + +boolean + +`false` + +
            time + +弹层自动关闭所需的毫秒数。 如 `time: 3000` ,即代表 3 秒后自动关闭。 提示框、加载层、Tips 层三种弹出模式默认开启。 + +number + +`0` + +
            id + +弹层的 ID 值。一般用于防止页面层或 iframe 层的重复弹出。 + +string-
            fixed + +弹层是否固定定位,即始终显示在页面可视区域。 + +boolean + +`true` + +
            zIndex + +弹层的初始层叠顺序值。 + +number + +`19891014` + +
            resize + +是否允许拖拽弹层右下角拉伸尺寸。 该属性对加载层和 tips 层无效。 + +boolean + +`true` + +
            scrollbar + +打开弹层时,是否允许浏览器出现滚动条。 + +boolean + +`true` + +
            minStack 2.6+ + +点击标题栏的最小化时,是否从页面左下角堆叠排列。 + +boolean + +`true` + +
            removeFocus 2.8+ + +是否移除弹层触发元素的焦点,避免按回车键时重复弹出。 + +boolean + +`true` + +
            move + +绑定弹层的拖拽元素。 默认为触发弹层的标题栏进行拖拽。也可以设置 `move: false` 禁止拖拽。 +用法参考:[#示例](#demo-page) + +string
            DOM
            boolean
            -
            moveOut + +否允许拖拽到窗口外 + +boolean + +`false` + +
            tips + +设置 tips 层的吸附位置和背景色,tips 层的私有属性。 + +- 若为 `number` 类型,则支持 `1-4` 的可选值,分别代表*上右下左*的吸附位置。如: `tips: 1` +- 若为 `array` 类型,则支持设置吸附位置和背景色,如: + +``` +tips: [1, '#000'] // 吸附在上的深色贴士层 +``` + +number
            array
            + +`2` + +
            tipsMore + +是否允许同时存在多个 tips 层,即不销毁上一个 tips。 + +boolean + +`false` + +
            + + +
            + +[回调函数](#options.callback) + +
            + +
            + +[success](#options.success) + + + +
            +打开弹层成功后的回调函数。返回的参数如下: +
            + +``` +layer.open({ + type: 1, + content: '内容', + success: function(layero, index, that){ + // 弹层的最外层元素的 jQuery 对象 + console.log(layero); + // 弹层的索引值 + console.log(index); + // 弹层内部原型链中的 this --- 2.8+ + console.log(that); + } +}); +``` + +
            + +[yes](#options.yes) + + + +
            + +点击「确定」按钮的回调函数。返回的参数同 `success` + +
            + +``` +layer.open({ + content: '内容', + yes: function(index, layero, that){ + // do something + layer.close(index); // 关闭弹层 + } +}); +``` + +
            + +[cancel](#options.cancel) + + + +
            +点击标题栏关闭按钮的回调函数。返回的参数同 `success` +
            + +``` +layer.open({ + content: '内容', + cancel: function(index, layero, that){ + if(confirm('确定要关闭么')){ + layer.close(index); + } + return false; // 阻止默认关闭行为 + } +}); +``` + +
            + +[end](#options.end) + + + +
            +弹层被关闭且销毁后的回调函数。 +
            + +``` +layer.open({ + content: '内容', + end: function(){ + console.log('弹层已被移除'); + } +}); +``` + +
            + +[moveEnd](#options.moveEnd) + + + +
            +弹层拖拽完毕后的回调函数。 +
            + +``` +layer.open({ + type: 1, + content: '内容', + moveEnd: function(layero){ + console.log('拖拽完毕'); + } +}); +``` + +
            + +[resizing](#options.resizing) + + + +
            +弹层拉伸过程中的回调函数 +
            + +``` +layer.open({ + type: 1, + content: '内容', + resizing: function(layero){ + console.log('拉伸中'); + } +}); +``` + +
            + +[full](#options.full) + + + +
            + +弹层最大化后的回调函数。返回的参数同 `success` + +
            + +``` +layer.open({ + type: 1, + content: '内容', + full: function(layero, index, that){ + console.log('弹层已最大化'); + } +}); +``` + +
            + +[min](#options.min) + + + +
            + +弹层最小化后的回调函数。返回的参数同 `success` + +
            + +``` +layer.open({ + type: 1, + content: '内容', + min: function(layero, index, that){ + // do something + // return false; // 阻止默认最小化 + } +}); +``` + +
            + +[restore](#options.restore) + + + +
            +弹层被还原后的回调函数。返回的参数同 `success` +
            + +``` +layer.open({ + type: 1, + content: '内容', + restore: function(layero, index, that){ + console.log('弹层已还原'); + } +}); +``` + +
            \ No newline at end of file diff --git a/docs/layer/detail/run.md b/docs/layer/detail/run.md new file mode 100644 index 00000000..3a41eb8b --- /dev/null +++ b/docs/layer/detail/run.md @@ -0,0 +1,35 @@ +
            +
            + <textarea class="layui-textarea ws-demo-editor" id="ID-demo-editor" > +// 在此处输入 layer 的任意代码 +layer.open({ + type: 1, // page 层类型 + area: ['500px', '300px'], + title: 'Hello layer', + shade: 0.6, // 遮罩透明度 + shadeClose: true, // 点击遮罩区域,关闭弹层 + maxmin: true, // 允许全屏最小化 + anim: 0, // 0-6 的动画形式,-1 不开启 + content: '
            一个普通的页面层,传入了自定义的 HTML
            ' +});</textarea> +
            +
            + +
            +
            + + \ No newline at end of file diff --git a/docs/layer/examples/alert.md b/docs/layer/examples/alert.md new file mode 100644 index 00000000..91b8f67d --- /dev/null +++ b/docs/layer/examples/alert.md @@ -0,0 +1,78 @@ +
            + + + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/direction.md b/docs/layer/examples/direction.md new file mode 100644 index 00000000..8b9277d1 --- /dev/null +++ b/docs/layer/examples/direction.md @@ -0,0 +1,68 @@ +从页面四个边缘弹出(抽屉效果): + +
            + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/iframe.md b/docs/layer/examples/iframe.md new file mode 100644 index 00000000..cddbce98 --- /dev/null +++ b/docs/layer/examples/iframe.md @@ -0,0 +1,74 @@ +
            + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/load.md b/docs/layer/examples/load.md new file mode 100644 index 00000000..a71d848c --- /dev/null +++ b/docs/layer/examples/load.md @@ -0,0 +1,48 @@ +
            + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/more.md b/docs/layer/examples/more.md new file mode 100644 index 00000000..d8abd312 --- /dev/null +++ b/docs/layer/examples/more.md @@ -0,0 +1,169 @@ +
            + + + + + +
            + + + + \ No newline at end of file diff --git a/docs/layer/examples/offset.md b/docs/layer/examples/offset.md new file mode 100644 index 00000000..61dc784a --- /dev/null +++ b/docs/layer/examples/offset.md @@ -0,0 +1,42 @@ +
            + + + + + + + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/other.md b/docs/layer/examples/other.md new file mode 100644 index 00000000..775d9870 --- /dev/null +++ b/docs/layer/examples/other.md @@ -0,0 +1,100 @@ +
            + + + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/page.md b/docs/layer/examples/page.md new file mode 100644 index 00000000..15656694 --- /dev/null +++ b/docs/layer/examples/page.md @@ -0,0 +1,150 @@ +
            + + + + + +
            + + + + \ No newline at end of file diff --git a/docs/layer/examples/skin.md b/docs/layer/examples/skin.md new file mode 100644 index 00000000..77d46944 --- /dev/null +++ b/docs/layer/examples/skin.md @@ -0,0 +1,76 @@ +
            + + + + +
            + + + + \ No newline at end of file diff --git a/docs/layer/examples/tips.md b/docs/layer/examples/tips.md new file mode 100644 index 00000000..478342db --- /dev/null +++ b/docs/layer/examples/tips.md @@ -0,0 +1,47 @@ +
            + + + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/examples/type.md b/docs/layer/examples/type.md new file mode 100644 index 00000000..f18286ea --- /dev/null +++ b/docs/layer/examples/type.md @@ -0,0 +1,104 @@ +
            + + + + + + + + + +
            + + \ No newline at end of file diff --git a/docs/layer/index.md b/docs/layer/index.md new file mode 100644 index 00000000..6b3072d5 --- /dev/null +++ b/docs/layer/index.md @@ -0,0 +1,606 @@ +--- +title: 通用弹出层组件 layer +toc: true +--- + +# 弹出层组件 🔥 + +> 弹出层组件 `layer` 是 `Layui` 最古老的组件,也是使用覆盖面最广泛的代表性组件。 `layer` 集众多弹层功能为一体,灵活而多样,是许多开发者的网页弹出层的首选交互方案,在各类业务场景都能发挥重要作用。 + + +

            示例

            + +点击下述按钮,查看每个示例对应的弹层效果。 + +
            +{{- d.include("docs/layer/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var layer = layui.layer | 获得 `layer` 模块。 | +| 弹出 : | - | +| [layer.open(options)](#open) | 打开弹层,核心方法。下述所有弹出方式均为该方法的二次封装 | +| [layer.alert(content, options, yes)](#alert) | 弹出 `dialog` 类型信息框。 | +| [layer.confirm(content, options, yes, cancel)](#confirm) | 弹出 `dialog` 类型询问框。 | +| [layer.msg(content, options, end)](#msg) | 弹出 `dialog` 类型提示框。 | +| [layer.load(icon, options)](#load) | 弹出 `loading` 类型加载层。 | +| [layer.tips(content, elem, options)](#tips) | 弹出 `tips` 类型贴士层。 | +| [layer.prompt(options, yes)](#prompt) | 弹出 `page` 类型输入框层。 | +| [layer.photos(options)](#photos) | 弹出 `page` 类型图片层。 | +| [layer.tab(options)](#tab) | 弹出 `page` 类型标签页层。 | +| 关闭 : | - | +| [layer.close(index)](#close) | 关闭对应的层,核心方法。 | +| [layer.closeAll(type)](#closeAll) | 关闭所有对应类型的层。 | +| [layer.closeLast(type)](#closeLast) 2.8+ | 关闭最近打开的对应类型的层。 | +| 其他 : | - | +| [layer.config(options)](#config) | 全局配置默认属性。 | +| [layer.ready(callback)](#ready) | 样式初始化就绪。 | +| [layer.style(index, css)](#set-style) | 重新设置弹层样式。 | +| [layer.title(title, index)](#set-title) | 设置弹层的标题。 | +| [layer.getChildFrame(selector, index)](#getChildFrame) | 获取 iframe 页中的元素。 | +| [layer.getFrameIndex(window.name)](#getFrameIndex) | 在 iframe 页中获取弹层索引。 | +| [layer.iframeAuto(index)](#iframeAuto) | 设置 iframe 层高度自适应。 | +| [layer.iframeSrc(index, url)](#iframeSrc) | 重新设置 iframe 层 URL。 | +| layer.index | 获取最新弹出层的索引 | +| layer.zIndex | 获取最新弹出层的层叠顺序 | +| [layer.setTop(layero)](#setTop) | 将对应弹层的层叠顺序为置顶。 | +| [layer.full(index)](#full) | 设置弹层最大化尺寸。 | +| [layer.min(index)](#min) | 设置弹层最小化尺寸。 | +| [layer.restore(index)](#restore) | 还原弹层尺寸。 | + + +

            打开弹层

            + +`layer.open(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +打开弹层的核心方法,其他不同类型的弹出方法均为该方法的二次封装。 + +``` +// 该方法返回当前层的唯一索引,以便其他方法对该弹层进行相关操作 +var index = layer.open({ + type: 1, // page 层类型,其他类型详见「基础属性」 + content: '
            test
            ' +}); +``` + +

            基础属性

            + +
            +{{- d.include("docs/layer/detail/options.md") }} +
            + +

            弹出信息框

            + +`layer.alert(content, options, yes);` + +- 参数 `content` : 弹出内容 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +- 参数 `yes` : 点击确定后的回调函数 + +该方法用于弹出 `dialog` 类型信息框(`type: 0`),参数自动向左补位。 + +``` +// eg1 +layer.alert('一个简单的信息框'); +// eg2 +layer.alert('开启图标', {icon: 1}, function(index){ + // do something + // … + layer.close(index); +}); +// eg3 +layer.alert('不开启图标', function(index){ + // do something + // … + layer.close(index); +}); +``` + +

            弹出询问框

            + +`layer.confirm(content, options, yes, cancel);` + +- 参数 `content` : 弹出内容 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +- 参数 `yes` : 点击确定后的回调函数 +- 参数 `cancel` : 点击第二个按钮(默认「取消」)后的回调函数 + +该方法用于弹出 `dialog` 类型询问框(`type: 0`),参数自动向左补位。 + +``` +// eg1 +layer.confirm('确定吗?', {icon: 3, title:'提示'}, function(index){ + // do something + // … + layer.close(index); +}); +// eg2 +layer.confirm('确定吗?', function(index){ + // do something + // … + layer.close(index); +}); +``` + + +

            弹出提示框

            + +`layer.msg(content, options, end);` + +- 参数 `content` : 弹出内容 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +- 参数 `end` : 提示框关闭后的回调函数 + +该方法用于弹出 `dialog` 类型提示框(`type: 0`),默认 `3` 秒后自动关闭。参数自动向左补位。 + +``` +// eg1 +layer.msg('普通提示'); +// eg2 +layer.msg('带 icon 的提示', {icon: 6}); +// eg3 +layer.msg('关闭后想做些什么', function(){ + // do something +}); +// eg +layer.msg('提示框', { + icon: 1, + time: 2000 // 设置 2 秒后自动关闭 +}, function(){ + // do something +}); +``` + + +

            弹出加载层

            + +`layer.load(icon, options);` + +- 参数 `icon` : 加载图标风格,支持 `0-2` 可选值 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法用于弹出 `load` 类型加载层(`type: 3`)。 + +``` +// eg1 +var index = layer.load(); // 默认加载图标风格 +// eg2 +var index = layer.load(1); // 加载图标风格 1 +// eg3 +var index = layer.load(2, {time: 10*1000}); // 加载图标风格,并设置最长等待 10 秒 + +// 关闭加载层 +layer.close(index); +``` + +

            弹出贴士层

            + +`layer.tips(content, elem, options);` + +- 参数 `content` : 弹出内容 +- 参数 `elem` : 吸附的目标元素选择器或对象 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法用于弹出 `tips` 类型贴士层(`type: 4`),默认 `3` 秒后自动关闭。 + +``` +// eg1 +layer.tips('小贴士', '#id'); +// eg2 +$('#id').on('click', function(){ + var elem = this; + layer.tips('小贴士', elem); //在元素的事件回调体中,follow直接赋予this即可 +}); +// eg3 +layer.tips('显示在目标元素上方', '#id', { + tips: 1 // 支持 1-4 可选值,更多详见基础属性中的 tips 介绍 +}); +``` + +

            弹出输入框

            + +`layer.prompt(options, yes);` + +- 参数 `options` : 基础属性配置项。除了支持 [基础属性](#options) 之外,还支持下表私有属性: + +| 私有属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| formType | 输入框类型。支持以下可选值:
            • `0` 文本输入框
            • `1` 密令输入框
            • `2` 多行文本输入框
            | number | `0` | +| value | 输入框初始值 | string | - | +| maxlength | 可输入的最大字符长度 | number | `500` | + + +- 参数 `yes` : 点击确定后的回调函数 + +该方法用于弹出输入框层,基于 `type: 1`(即 `page` 层)的自定义内容。 效果参考: [#示例](#demo-other) + +``` +// eg1 +layer.prompt(function(value, index, elem){ + alert(value); // 得到 value + layer.close(index); // 关闭层 +}); + +// eg2 +layer.prompt({ + formType: 2, + value: '初始值', + title: '请输入值', + area: ['800px', '350px'] // 自定义文本域宽高 +}, function(value, index, elem){ + alert(value); // 得到 value + layer.close(index); // 关闭层 +}); +``` + +

            弹出图片层

            + +`layer.photos(options);` + +- 参数 `options` : 基础属性配置项。除了支持 [基础属性](#options) 之外,还支持下表私有属性: + +| 私有属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| photos | 图片层的数据源,格式详见下述示例。 | object | - | +| tab | 图片层切换后的回调函数,返回的参数见下述示例 | function | - | + +该方法用于弹出图片层,基于 `type: 1`(即 `page` 层)的自定义内容。 + +**用法一:直接赋值图片数据**。 效果参考: [#示例](#demo-other) + +``` +layer.photos({ + photos: { // 图片层的数据源 + "title": "", // 相册标题 + "id": 123, // 相册 id + "start": 0, // 初始显示的图片序号,默认 0 + "data": [ // 相册包含的图片,数组格式 + { + "alt": "图片名", + "pid": 666, // 图片id + "src": "", // 原图地址 + "thumb": "" // 缩略图地址 + }, + // … + ] + }, + tab: function(data, layero){ // 图片层切换后的回调 + console.log(data); // 当前图片数据信息 + console.log(layero); // 图片层的容器对象 + } +}); +``` + +**用法二:绑定页面图片元素**。点击图片时,弹出对应的图片层。 + +
            +  
            +
            + + +

            弹出标签层

            + +`layer.tab(options);` + +- 参数 `options` : 基础属性配置项。除了支持 [基础属性](#options) 之外,还支持下表私有属性: + +| 私有属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| tab | 标签层的数据源,格式详见下述示例。 | array | - | + +该方法用于弹出标签层,基于 `type: 1`(即 `page` 层)的自定义内容。 效果参考: [#示例](#demo-other) + +``` +layer.tab({ + area: ['600px', '300px'], + tab: [{ // 标签层的数据源 + title: '标题 1', + content: '内容 1' + }, { + title: '标题 2', + content: '内容 2' + }, { + title: '标题 3', + content: '内容 3' + }] +}); +``` + + +

            关闭弹层

            + +`layer.close(index);` + +- 参数 `index` : 打开弹层时返回的唯一索引 + +该方法用于关闭对应的弹层。 + +``` +// 每一种弹层调用方式,都会返回一个 index +var index1 = layer.open(); +var index2 = layer.alert(); +var index3 = layer.load(); +var index4 = layer.tips(); + +// 关闭对应的弹层 +layer.close(index1); +``` + +在 iframe 弹层页面中关闭自身 + +``` +var index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe 层的索引 +parent.layer.close(index); // 再执行关闭 +``` + + +

            关闭所有层

            + +`layer.closeAll(type);` + +- 参数 `type` : 弹层的类型。可选值:`dialog,page,iframe,loading,tips` + +该方法用于关闭所有同类型的弹层。 + +``` +layer.closeAll(); // 关闭所有类型的层 +layer.closeAll('dialog'); // 关闭所有的信息框 +layer.closeAll('page'); // 关闭所有的页面层 +layer.closeAll('iframe'); // 关闭所有的 iframe 层 +layer.closeAll('loading'); // 关闭所有的加载层 +layer.closeAll('tips'); // 关闭所有的 tips 层 +``` + +

            关闭最近一次打开的层 2.8+

            + +`layer.closeLast(type);` + +- 参数 `type` : 弹层的类型。可选值:`dialog,page,iframe,loading,tips` + +该方法用于关闭最近一次打开的对应类型的层。 + +``` +layer.closeLast('dialog'); // 关闭最近一次打开的信息框 +layer.closeLast('page'); // 关闭最近一次打开的页面层 +layer.closeLast('iframe'); // 关闭最近一次打开的 iframe 层 +layer.closeLast('loading'); // 关闭最近一次打开的加载层 +layer.closeLast('tips'); // 关闭最近一次打开的 tips 层 +``` + +

            全局配置默认属性

            + +`layer.config(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法用于全局设置弹层的默认基础属性。 + +``` +layer.config({ + title: '默认标题', + skin: '', // 设置默认主题 + // … 其他任意基础属性 +}) +``` + +

            样式初始化就绪

            + +`layer.ready(callback);` + +- 参数 `callback` : 初始化完毕后的回调函数 + +该方法一般是在源码方式引入 `layui.js`,且要在页面初始即弹出层时使用,以确保弹层所依赖的样式文件先行加载。 而引入 release 版的 `layui.js` 则无需使用该方法,因为弹层样式已经统一合并到 `layui.css` 中。 + +``` +// 页面初始弹出层 +layer.ready(function(){ + layer.alert('对话框内容'); +}); +``` + +

            重新设置弹层样式

            + +`layer.style(index, css);` + +- 参数 `index` : 打开弹层时返回的唯一索引 +- 参数 `css` : 要设置的 `css` 属性 + +该方法对 `loading` 层和 `tips` 层无效。 + +``` +// 打开弹层 +var index = layer.open({ + type: 1, + content: '内容' +}); + +// 重新给对应层设定 width、top 等 +layer.style(index, { + width: '1000px', + top: '10px' +}); +``` + +

            设置弹层的标题

            + +`layer.title(title, index);` + +- 参数 `title` : 标题 +- 参数 `index` : 打开弹层时返回的唯一索引 + +``` +// 打开弹层 +var index = layer.open({ + type: 1, + content: '内容' +}); + +// 重新设置标题 +layer.title('新标题', index) +``` + +

            获取 iframe 页中的元素

            + +`layer.getChildFrame(selector, index);` + +- 参数 `selector` : iframe 子页面的选择器或元素对象 +- 参数 `index` : 打开弹层时返回的唯一索引 + +该方法用于在父页面获取 iframe 子页面中的元素 + +``` +layer.open({ + type: 2, // iframe 层 + content: '/layer/test/iframe.html', + success: function(layero, index){ + // 获取 iframe 中 body 元素的 jQuery 对象 + var body = layer.getChildFrame('body', index); + // 给 iframe 页中的某个输入框赋值 + body.find('input').val('Hello layer.'); + } +}); +``` + +

            在 iframe 页中获取弹层索引

            + +`layer.getFrameIndex(window.name);` + +- 参数 `window.name` : 当前 iframe 窗口的 `name` 属性值 + +该方法用于在 iframe 页面内部获取当前 iframe 弹层的索引,以便关闭自身。 + +``` +var index = parent.layer.getFrameIndex(window.name); // 获取当前 iframe 层的索引 +parent.layer.close(index); // 关闭当前 iframe 弹层 +``` + +

            设置 iframe 层高度自适应

            + +`layer.iframeAuto(index);` + +- 参数 `index` : 打开弹层时返回的唯一索引 + +该方法可让 iframe 高度跟随内容自适应 + +``` +layer.open({ + type: 2, // iframe 层 + content: '/layer/test/iframe.html', + area: '600px', // 弹层初始宽度 + success: function(layero, index, that){ + layer.iframeAuto(index); // 让 iframe 高度自适应 + that.offset(); // 重新自适应弹层坐标 + } +}); +``` + +

            重新设置 iframe 层 URL

            + +`layer.iframeSrc(index, url);` + +- 参数 `index` : 打开弹层时返回的唯一索引 +- 参数 `url` : URL 地址 + +``` +// 打开弹层 +var index = layer.open({ + type: 2, // iframe 层 + content: '/layer/test/iframe.html' +}); +// 重置 iframe 页面 URL +layer.iframeSrc(index, 'https://cn.bing.com/'); +``` + +

            置顶弹层

            + +`layer.setTop(layero);` + +- 参数 `layero` : layer 最外层容器的元素对象,一般可通过各个回调函数返回的参数获取。 + +该方法一般用于多弹层模式时,实现点击某个弹层让其层叠顺序置顶。效果参考:[#示例](#demo-more) + +``` +// 多弹层模式的层叠顺序置顶 +layer.open({ + type: 1, // 页面层 + shade: false, + area: ['520px', '320px'], + maxmin: true, + content: '
            多弹层模式的层叠顺序置顶
            ', + zIndex: layer.zIndex, // 重点 1 --- 初始设置当前最高层叠顺序, + success: function(layero){ + layer.setTop(layero); // 重点 2 --- 保持选中窗口置顶 + } +}); +``` + +

            设置弹层最大化

            + +`layer.full(index);` + +- 参数 `index` : 打开弹层时返回的唯一索引 + +``` +// 打开弹窗 +var index = layer.open({ + type: 1, // 页面层 + content: '弹层内容' +}); +// 设置弹层最大化 +layer.full(index); +``` + +

            设置弹层最小化

            + +`layer.min(index);` + +- 参数 `index` : 打开弹层时返回的唯一索引 + +``` +// 打开弹窗 +var index = layer.open({ + type: 1, // 页面层 + content: '弹层内容' +}); +// 设置弹层最大化 +layer.min(index); +``` + +

            还原弹层

            + +`layer.restore(index);` + +- 参数 `index` : 打开弹层时返回的唯一索引 + +当弹层最大化或最小化状态时,执行该方法可还原弹层。 + + +## 贴士 + +> layer 曾经可作为单独组件使用,鉴于维护成本的考量,目前 layer 组件已完全集成到 Layui 中,而单独版本已不做同步维护。 因此,建议直接使用 layui 中 layer 即可。 \ No newline at end of file diff --git a/docs/layout/grid.md b/docs/layout/grid.md new file mode 100644 index 00000000..28b48903 --- /dev/null +++ b/docs/layout/grid.md @@ -0,0 +1,541 @@ +--- +title: 栅格布局 +toc: true +--- + +# 栅格布局 + +> Layui 栅格系统是一套具备响应式能力的布局方案,采用业界比较常用的容器横向 `12` 等分规则,预设了 `5*12` 种 CSS 排列类,内置多种大小尺寸的多终端适配,能很好地实现响应式布局,这意味着一套系统,能同时适配于电脑的不同大小屏幕和手机、平板等移动屏幕,使得网页布局变得更加灵活,同时也极大地降低了 `HTML/CSS` 代码的耦合。 + +

            示例

            + +> 贴士:以下示例中的*背景色*仅仅只是为了让布局效果显得更加直观,实际使用时并不需要背景色。 + + + +- 始终等比例水平排列: + +
            +  
            +
            + +- 移动设备、桌面端的组合响应式展现: + +
            +  
            +
            + +- 移动设备、平板、桌面端的复杂组合响应式展现: + +
            +  
            +
            + +- 常规布局:从小屏幕堆叠到桌面水平排列: + +
            +  
            +
            + +- 列间隔: + +
            +  
            +
            + +- 列偏移 + +
            +  
            +
            + +- 栅格嵌套: + +> 理论上,你可以对栅格进行无穷层次的嵌套,这更加增强了栅格的表现能力 + +
            +  
            +
            + +- 流体容器(宽度自适应,不固定): + +
            +  
            +
            + +
            + +

            栅格布局规则

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            1.采用 layui-row 来定义行,如:<div class="layui-row"></div>
            2. + 采用类似 layui-col-md* 这样的预设类来定义一组列(column),且放在行(row)内。其中: +
            +
              +
            • 变量md 代表的是不同屏幕下的标记(可选值见下文)
            • +
            • 变量* 代表的是该列所占用的 12 等分数(如 6/12),可选值为 1 - 12
            • +
            • 如果多个列的“等分数值”总和等于 12,则刚好满行排列。如果大于12,多余的列将自动另起一行。
            • +
            +
            +
            3.列可以同时出现最多 5 种不同的组合,分别是:xs / sm / md / lg / xl 2.8+,以在不同尺寸屏幕下进行自动适配。
            4.可对列追加类似 layui-col-space5layui-col-md-offset3 这样的预设类来定义列的间距和偏移。
            5.最后,在列(column)元素中放入你自己的任意元素填充内容,完成布局!
            + +

            响应式规则

            + +栅格的响应式能力,得益于 `CSS3` 媒体查询(`Media Queries`),针对不同尺寸的屏幕进行相应的适配处理。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            超小屏幕
            (手机<768px)
            小屏幕
            (平板≥768px)
            中等屏幕
            (桌面≥992px)
            大型屏幕
            (桌面≥1200px)
            超大屏幕
            (桌面≥1400px)
            layui-containerauto750px970px1170px1330px
            标记xssmmdlgxl 2.8+
            列对应类layui-col-xs*layui-col-sm*layui-col-md*layui-col-lg*layui-col-xl*
            总列数12
            响应行为始终按比例水平排列在当前屏幕下水平排列,如果屏幕大小低于临界值则堆叠排列
            + +

            响应式公共类

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            类名(class)说明
            layui-show-*-block定义不同设备下的 display: block; * 可选值有:xs、sm、md、lg、xl
            layui-show-*-inline定义不同设备下的 display: inline; * 可选值同上
            layui-show-*-inline-block定义不同设备下的 display: inline-block; * 可选值同上
            layui-hide-*定义不同设备下的隐藏类,即: display: none; * 可选值同上
            + +

            布局容器

            + +将栅格放入一个带有 `class="layui-container"` 的特定容器中,以便在小屏幕以上的设备中固定宽度,让列可控。 + +``` +
            +
            + …… +
            +
            +``` + +当然,你还可以不固定容器宽度。将栅格或其它元素放入一个带有 `class="layui-fluid"`的容器中,那么宽度将不会固定,而是 100% 适应 + +``` +
            + …… +
            +``` + +

            列间距

            + + + + + + + + + + + + + + +
            通过“列间距”的预设类,来设定列之间的间距。且一行中最左的列不会出现左边距,最右的列不会出现右边距。列间距在保证排版美观的同时,还可以进一步保证分列的宽度精细程度。我们结合网页常用的边距,预设了 12 种不同尺寸的边距,分别是:
            +
            +layui-col-space1
            +layui-col-space2
            +layui-col-space4
            +layui-col-space5
            +layui-col-space6
            +layui-col-space8
            +layui-col-space10
            +layui-col-space12
            +layui-col-space14
            +layui-col-space15
            +layui-col-space16
            +layui-col-space18
            +layui-col-space20
            +layui-col-space22
            +layui-col-space24
            +layui-col-space25
            +layui-col-space26
            +layui-col-space28
            +layui-col-space30
            +layui-col-space32
            +
            +即:支持列之间为 1px-32px 区间的所有双数间隔,以及 1px、5px、15px、25px 的单数间隔
            +
            + +下面是一个简单的例子,列间距为 `16px`: + +``` +
            +
            + 1/3 +
            +
            + 1/3 +
            +
            + 1/3 +
            +
            +``` + +

            列偏移

            + +对列追加类似 `layui-col-md-offset*` 的预设类,从而让列向右偏移。如:`layui-col-md-offset3`,即代表在“中型桌面屏幕”下,让该列向右偏移 3 个列宽度。下面是一个采用「列偏移」机制让两个列左右对齐的实例 + +``` +div class="layui-row"> +
            + 4/12 +
            +
            + 偏移4列,从而在最右 +
            +
            +``` + +> 请注意,列偏移可针对不同屏幕的标准进行设定,比如上述的例子,只会在桌面屏幕下有效,当低于桌面屏幕的规定的临界值,就会堆叠排列。 + +

            IE8/9 兼容方案

            + +事实上 `IE8/IE9` 并不支持 `Media Queries`,但你可以使用下面的补丁进行兼容(补丁来自于开源社区): + +``` + + +``` + +将上述代码放入你页面 `` 标签内的任意位置即可。 \ No newline at end of file diff --git a/docs/layout/index.md b/docs/layout/index.md new file mode 100644 index 00000000..f31c2e13 --- /dev/null +++ b/docs/layout/index.md @@ -0,0 +1,153 @@ +--- +title: Admin UI 框体布局 +toc: true +--- + +# 框体布局 + +> Layui 的主要应用场景是面向中后台的界面搭建,因此也提供了大框体布局方案。 + +

            示例

            + +
            +  
            +
            + +
            + +> 小贴士:以上是一个基础的框体布局方案,若要实现诸如 `iframe` 跳转、侧边菜单收缩等功能,还需按照实际的业务需求自主实现。当然,也可以采用社区已有的 AdminUI 主题方案,如:layuiAdmin 等。 + +

            Admin UI

            + +layuiAdmin 是一套用于开发通用型管理系统的纯静态的 `HTML` 网页界面主题,基于开源的 Layui Web 组件库制作而成,没有任何后端程序及数据库存储等服务端代码。开发者使用该网页模板,可省去前端的大量工作,从而更高效地开发 Web 应用系统。 diff --git a/docs/laypage/detail/demo.md b/docs/laypage/detail/demo.md new file mode 100644 index 00000000..7c7e97cb --- /dev/null +++ b/docs/laypage/detail/demo.md @@ -0,0 +1,258 @@ +
            +  
            +
            + +

            自定义主题

            + +
            +  
            +
            + +

            自定义文本

            + +
            +  
            +
            + +

            不显示上一页、下一页

            + +
            +  
            +
            + +

            只显示上一页、下一页、当前页

            + +
            +  
            +
            + +

            自定义排版

            + +
            +  
            +
            + +

            自定义每页条数的选择项

            + +
            +  
            +
            + +

            完整显示

            + +
            +  
            +
            + +

            高级 - 开启 HASH

            + +
            +  
            +
            + +

            高级 - 将一段已知数组分页展示

            + +
            +  
            +
            \ No newline at end of file diff --git a/docs/laypage/detail/options.md b/docs/laypage/detail/options.md new file mode 100644 index 00000000..35951478 --- /dev/null +++ b/docs/laypage/detail/options.md @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            属性名描述类型默认值
            elem + +绑定分页容器。值可以是容器 `id` 或 DOM 对象。如: + +- `elem: 'id'` 注意:这里不能加 `#` 号 +- `elem: document.getElementById('id')` + +string
            DOM
            -
            count + +数据总数。一般通过后端得到 + +number-
            limit + +每页显示的条数。 + +number + +`10` + +
            limits + +每页条数的选择项。 若 `layout` 参数开启了 `limit` ,则会出现每页条数的 select 选择框 + +array + +`[10,…,50]` + +
            curr + +初始化当前页码。 + +number + +`1` + +
            groups + +连续出现的页码数量 + +number + +`5` + +
            prev + +自定义“上一页”的内容,支持传入普通文本和 HTML + +string + +`上一页` + +
            next + +自定义“下一页”的内容,用法同上。 + +string + +`下一页` + +
            first + +自定义“首页”的内容,用法同上。 + +string + +`1` + +
            last + +自定义“尾页”的内容,用法同上。 + +string + +*自动获得* + +
            layout + +自定义分页功能区域排版。可自由排列,可选值有: + +- `count` 数据总数区域 +- `prev` 上一页区域 +- `page` 分页区域 +- `next` 下一页区 +- `limit` 条目选项区域 +- `refresh` 页面刷新区 +- `skip` 快捷跳页区 + +array + + + +
            theme + +自定义主题。支持传入:颜色值或任意普通字符。如: + +- `theme: '#c00'` 直接设置当前页按钮背景色 +- `theme: 'xxx'` 会生成 `class="layui-laypage-xxx"` 的 CSS 类,以便自定义主题 + +string-
            hash + +设置 `hash` 名称。设置该属性后,点击分页将会自动对当前 `url` 追加:`#{hash}={curr}`,从而在页面刷新时初始化当前页码。[#详细用法参考示例](#demo-hash) + +string-
            + + +
            + +[回调函数](#options.callback) + +
            + +
            + +[jump](#options.jump) + + + +
            分页跳转后的回调函数。函数返回两个参数:
            + +- 参数 `obj` : 当前分页相关的所有选项值 +- 参数 `first` : 是否首次渲染,一般用于初始加载的判断 + +``` +laypage.render({ + elem: 'id', + count: 70, // 数据总数,从后端得到 + jump: function(obj, first){ + console.log(obj.curr); // 得到当前页,以便向服务端请求对应页的数据。 + console.log(obj.limit); // 得到每页显示的条数 + + // 首次不执行 + if(!first){ + // do something + } + } +}); +``` + +
            + diff --git a/docs/laypage/index.md b/docs/laypage/index.md new file mode 100644 index 00000000..90ec6522 --- /dev/null +++ b/docs/laypage/index.md @@ -0,0 +1,37 @@ +--- +title: 分页组件 laypage +toc: true +--- + +# 分页组件 + +> 分页组件 `laypage` 提供了前端的分页逻辑,使得我们可以很灵活处理不同量级的数据,从而提升渲染效率。 + +

            示例

            + +
            +{{- d.include("docs/laypage/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var laypage = layui.laypage | 获得 `laypage` 模块。 | +| [laypage.render(options)](#render) | laypage 组件渲染,核心方法。 | + +

            渲染

            + +`laypage.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +

            属性

            + +
            +{{- d.include("docs/laypage/detail/options.md") }} +
            + +## 小贴士 + +laypage 组件只负责分页本身的逻辑,具体的数据请求及对应的视图渲染需要另外去完成。laypage 不仅能应用在一般的异步分页上,还可直接对一段已知数据进行分页展现,如 table 组件的分页就是采用的 laypage。 \ No newline at end of file diff --git a/docs/laytpl/detail/demo.md b/docs/laytpl/detail/demo.md new file mode 100644 index 00000000..271fba8e --- /dev/null +++ b/docs/laytpl/detail/demo.md @@ -0,0 +1,135 @@ + + +
            +  
            +
            \ No newline at end of file diff --git a/docs/laytpl/detail/options.md b/docs/laytpl/detail/options.md new file mode 100644 index 00000000..b26499cc --- /dev/null +++ b/docs/laytpl/detail/options.md @@ -0,0 +1,78 @@ + + + + + + + + + + + + {{! + + + + + + + + + + + + !}} + + + + + +
            标签描述
            {{= }} + +转义输出。若字段存在 HTML,将进行转义。 + +``` +

            {{= d.title }}

            +``` + +
            {{- }} 2.8+ + +原始输出。若字段存在 HTML,将正常渲染。 + +``` +
            {{- d.content }}
            +``` + +该语句一般在需要正常渲染 HTML 时用到,但若字段存在 script 等标签,为防止 xss 问题,可采用 `{{= }}` 进行转义输出。 + +> ### 注意 +> 由于 `2.6.11` 版本对 laytpl 语句进行了重要调整,原 `{{ }}` 语法即等同 `{{- }}`,升级版本时,请进行相应调整。可参考:https://gitee.com/layui/layui/issues/I5AXSP + +
            {{# }} + + JavaScript 语句。一般用于逻辑处理。 + + ``` +
            +{{# + var fn = function(){ + return '2017-08-18'; + }; +}} +{{# if(true){ }} + 开始日期:{{= fn() }} +{{# } else { }} + 已截止 +{{# } }} +
            + ``` + +
            {{!{{! !}}!}} + +对一段指定的模板区域进行过滤,即不解析该区域的模板。 + +``` +{{! {{! 这里面的模板不会被解析 !}} !}} +``` + +
            diff --git a/docs/laytpl/index.md b/docs/laytpl/index.md new file mode 100644 index 00000000..3cfa243f --- /dev/null +++ b/docs/laytpl/index.md @@ -0,0 +1,151 @@ +--- +title: 模板引擎 laytpl +toc: true +--- + +# 模板引擎 + +> `laytpl` 是 Layui 的一款轻量 JavaScript 模板引擎,在字符解析上有着比较出色的表现。 + +

            在线测试

            + +在以下*模板*或*数据*中进行编辑,下方*视图*将呈现对应结果。 + +
            +{{- d.include("docs/laytpl/detail/demo.md") }} +
            + +

            API

            + +| API | 描述 | +| --- | --- | +| var laytpl = layui.laytpl | 获得 `laytpl` 模块。 | +| [laytpl(str, options).render(data, callback)](#render) | laytpl 组件渲染,核心方法。 | +| [laytpl.config(options)](#config) | 配置 laytpl 全局属性 | + +

            模板解析和渲染

            + +`laytpl(str, options).render(data, callback);` + +- 参数 `str` : 模板原始字符 +- 参数 `options` 2.8+ : 当前模板实例的属性配置项。可选项详见:[#属性配置](#config) +- 参数 `data` : 模板数据 +- 参数 `callback` : 模板渲染完毕的回调函数,并返回渲染后的字符 + +{{! + +``` +layui.use('laytpl', function(){ + var laytpl = layui.laytpl; + + // 直接解析字符 + laytpl('{{= d.name }}是一名前端工程师').render({ + name: '张三' + }, function(str){ + console.log(str); // 张三是一名前端工程师 + }); + + // 同步写法 + var str = laytpl('{{= d.name }}是一名前端工程师').render({ + name: '张三' + }); + console.log(str); // 张三是一名前端工程师 +}); +``` + +若模板字符较大,可存放在页面某个标签中,如: + +``` + + +
            + + +``` + +!}} + +在实际使用时,若模板通用,而数据不同,为减少模板解析的开销,可将语句分开书写,如。 + +``` +var compile = laytpl(str); // 模板解析 +compile.render(data, callback); // 模板渲染 +``` + +

            标签语法

            + +
            +{{- d.include("docs/laytpl/detail/options.md") }} +
            + + +

            属性配置

            + +`laytpl.config(options);` + +- 参数 `options` : 属性配置项。可选项详见下表 + +| 属性 | 描述 | +| --- | --- | +| open | 标签符前缀 | +| close | 标签符后缀 | + +### 全局配置 + +若模板默认的标签符与其他模板存在冲突,可通过该方法重新设置标签符,如: + +``` +laytpl.config({ + open: '<%', + close: '%>' +}); + +// 模板语法将默认采用上述定义的标签符书写 +laytpl(` + <%# var job = ["前端工程师"]; %> + <%= d.name %>是一名<%= job[d.type] %>。 +`).render({ + name: '张三', + type: 0 +}, function(string){ + console.log(string); // 张三是一名前端工程师。 +}); +``` + +### 局部配置 2.8+ + +若不想受到上述全局配置的影响,可在 `laytpl(str, options)` 方法的第二个参数中设置当前模板的局部属性,如: + +``` +laytpl('<%= d.name %>是一名前端工程师', { + open: '<%', + close: '%>' +}).render({name: '张三'}, function(string){ + console.log(string); // 张三是一名前端工程师。 +}); +``` + + +## 贴士 + +> Layui table 等组件的动态模板功能,均采用 laytpl 驱动。 laytpl 亦可承载单页面应用开发中的视图模板。 + diff --git a/docs/menu/examples/demo.md b/docs/menu/examples/demo.md new file mode 100644 index 00000000..9ee3e92a --- /dev/null +++ b/docs/menu/examples/demo.md @@ -0,0 +1,117 @@ + + + + + 基础菜单 - Layui + + + + + + +
            +
              +
            • + +
            • +
            • + +
            • +
            • +
            • +
              + menu group +
              +
                +
              • +
                menu item 3-1
                +
              • +
              • +
                menu group 2
                +
                  +
                • +
                  menu item 3-2-1
                  +
                • +
                • menu item 3-2-2
                • +
                +
              • +
              • menu item 3-3
              • +
              +
            • +
            • +
            • menu item 4 1
            • +
            • menu item 5
            • +
            • menu item 6
            • +
            • +
              + menu item 7 Children + +
              +
              +
                +
              • +
                + menu item 7-1 + +
                +
                +
                  +
                • menu item 7-2-1
                • +
                • menu item 7-2-2
                • +
                • menu item 7-2-3
                • +
                • menu item 7-2-4
                • +
                +
                +
              • +
              • menu item 7-2
              • +
              • menu item 7-3
              • +
              +
              +
            • +
            • menu item 8
            • +
            • +
            • +
              menu group 9
              +
                +
              • menu item 9-1
              • +
              • +
                + menu item 9-2 + +
                +
                +
                  +
                • menu item 9-2-1
                • +
                • menu item 9-2-2
                • +
                • menu item 9-2-3
                • +
                +
                +
              • +
              • menu item 9-31
              • +
              +
            • +
            • +
            • menu item 10
            • +
            +
            + + + + + \ No newline at end of file diff --git a/docs/menu/index.md b/docs/menu/index.md new file mode 100644 index 00000000..456bb4b2 --- /dev/null +++ b/docs/menu/index.md @@ -0,0 +1,62 @@ +--- +title: 基础菜单 menu +toc: true +--- + +# 基础菜单 + +> 基础菜单 `menu` 是垂直导航菜单的另一个替代方案,它是基于 `dropdown` 组件驱动的静态元素结构。 + +

            示例

            + +
            +  
            +
            + +

            结构

            + +基础菜单层级与样式结构如下: + +- 通过 `
              ` 命名基础菜单容器 + - 追加 `className` 为 `layui-menu-lg` 可设置基础菜单的大尺寸风格 + - 通过 `
            • ` 放置菜单列表项 + - 属性: + - 追加 `className` 为 `layui-menu-item-group` 可设置当前菜单为菜单组,即子菜单为纵向层级。 + - 或追加 `className` 为 `layui-menu-item-parent` 可这支当前菜单为父级菜单,即子菜单为横向层级。 + - 追加 `className` 为 `layui-menu-item-divider` 可设置分隔线。 + - 追加 `className` 为 `layui-menu-item-up` 或 `layui-menu-item-down` 可设置子菜单默认收缩或展开。 + - 追加 `className` 为 `layui-menu-item-checked` 可设置当前菜单为选中状态 + - 添加 `lay-options="{}"` 可设置对应菜单列表的基础属性 + - 内容: + - 通过 `
              ` 放置菜单标题容器 + - 通过 `
              ` 放置横向子菜单外层面板 + - 通过 `
              ` 放置子菜单列表,其中 `
            • ` 中的规则同父级。 +- 再将基础菜单放置在一个面板容器中,以更好地定义尺寸、边框或阴影等外观,详细可参考上述示例。 + + +

              属性

              + +属性即命名在基础菜单列表元素 `
            • ` 中的 `lay-options` 属性值,如:`
            • `,其支持的属性如下: + +| 属性 | 描述 | +| --- | --- | +| title | 设置菜单标题。默认读取标题容器内容中的文本。 | +| type | 设置菜单类型。可选值如下:
              • 若不设定,则表示为常规菜单项
              • `type:'group` 菜单组,子菜单为纵向层级
              • `type:'parent'` 父级菜单,子菜单为横向层级
              | +| isAllowSpread | 子菜单是否允许展开收缩操作。默认 `true` | + +

              事件

              + +`dropdown.on('click(filter)', callback)` + +- 参数 `click(filter)` 是一个特定结构。 + - `click` 为基础菜单项点击事件固定值; + - `filter` 为基础菜单容器属性 `lay-filter` 对应的值。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个 object 类型的参数。 + +点击菜单列表项时触发。用法:[#详见示例](#examples) + +## 贴士 + +基础菜单相当于是 `dropdown` 组件的一种静态化呈现,因此在事件等动态操作上需借助 `dropdown` 组件的 API 来完成。 \ No newline at end of file diff --git a/docs/modules.md b/docs/modules.md new file mode 100644 index 00000000..55126a9a --- /dev/null +++ b/docs/modules.md @@ -0,0 +1,264 @@ +--- +title: 模块系统 +toc: true +--- + +

              模块系统

              + +> Layui 制定了一套适合自身应用场景的轻量级模块规范,以便在不同规模的项目中,也能对前端代码进行很好的管理或维护。 Layui 的轻量级模块系统,并非有意违背 CommonJS 和 ES Module ,而是试图以更简单的方式去诠释高效,这种对*返璞归真*的执念源于在主流标准尚未完全普及的前 ES5 时代,后来也成为 Layui 独特的表达方式,而沿用至今。 + +如下是一个关于模块的简单示例: + +``` +// 定义模块(通常单独作为一个 JS 文件) +layui.define([mods], function(exports){ + // … + + exports('mod1', api); // 输出模块 +}); + +// 使用模块 +layui.use(['mod1'], function(args){ + var mod1 = layui.mod1; + + // … +}); +``` + +我们可以将其视为「像使用普通 API 一样来管理模块」,在此前提下,组件的承载也变得轻松自如,我们完全可以游刃在以浏览器为宿主的原生态的 HTML/CSS/JavaScript 的开发模式中,而不必卷入层出不穷的主流框架的浪潮之中,给心灵一个栖息之所。 + +当然,Layui 自然也不是一个模块加载器,而是一套相对完整的 UI 解决方案,但与 Bootstrap 又并不相同,除了 HTML+CSS 本身的静态化处理,Layui 的组件更倾向于 JavaScript 的动态化渲染,并为之提供了相对丰富和统一的 API,使用时,只需稍加熟悉,便可在各种交互中应付自如。 + + +

              定义模块

              + +`layui.define([mods], callback);` + +- 参数 `mods` 可选,用于声明该模块所依赖的模块; +- 参数 `callback` 即为模块加载完毕的回调函数,它返回一个 `exports` 参数,用于输出该模块的接口。 + +``` +/** demo.js **/ +layui.define(function(exports){ + // do something + + // 输出 demo 模块 + exports('demo', { + msg: 'Hello Demo' + }); +}); + +// 若该模块需要依赖别的模块,则在 `mods` 参数中声明即可: +// layui.define(['layer', 'form'], callback); +``` + +如上所示,`callback` 返回的 `exports` 参数是一个函数,它接受两个参数:参数一为*模块名*,参数二为*模块接口*。 + +另外, `callback` 将会在初次加载该模块时被自动执行。而有时,在某些特殊场景中可能需要再次执行该 `callback`,那么可以通过 `layui.factory(mod)` 方法获得。如: + +``` +var demoCallback = layui.factory('demo'); // 得到定义 demo 模块时的 `callback` +``` + +- **模块命名空间** + +Layui 定义的模块将会被绑定在 `layui` 对象下,如:`var demo = layui.demo;` 每个模块都有一个特定命名,且无法被占用,所以你无需担心模块的命名空间被污染,除非通过 `layui.disuse([mods])` 方法弃用已定义的模块。 + +以下是定义一个「依赖 Layui 内置模块」的模块示例: + +``` +layui.define(['layer', 'laydate'], function(exports){ + var layer = layui.layer // 获得 layer 模块 + var laydate = layui.laydate; // 获得 laydate 模块 + + // 输出模块 + exports('demo', {}); // 模块名 demo 未被占用,此时模块定义成功 + // exports('layer', {}); // 模块名 layer 已经存在,此时模块定义失败 +}); +``` + +同样的,在「扩展模块」时,也同样不能命名已经存在的模块名。 + + +

              使用模块

              + +`layui.use([mods], callback);` + +- 参数 `mods` 若填写,必须是已被成功定义的模块名; +
              2.6+:若 mods 不填,即只传一个 callback 参数时,则表示引用所有内置模块。 +- 参数 `callback` 即为使用模块成功后回调函数。 +
              2.6+:该回调会在 html 文档加载完毕后再执行,确保你的代码在任何地方都能对元素进行操作。 + +``` +// 使用指定模块 +layui.use(['layer', 'table'], function(){ + var layer = layui.layer; + var table = layui.table; + + // do something +}); + +// 使用所有内置模块(layui v2.6 开始支持) +layui.use(function(){ + var layer = layui.layer; + var table = layui.table; + var laydate = layui.laydate; + // … + + // do something +}); +``` + +你还可以通过 `callback` 返回的参数得到模块对象,如: + +``` +layui.use(['layer', 'table'], function(layer, table){ + // 使用 layer + layer.msg('test'); + + // 使用 table + table.render({}); +}); +``` + +- **执行「定义模块」时的回调函数** + +在上文的定义模块中,我们提到一个特殊场景,即重新获取定义模块时的 `callback` 函数, 譬如在*单页面应用*开发中,我们在视图碎片中使用某个模块,由于定义模块时的 `callback` 只会在模块初次加载中被调用,而当视图碎片在每次被渲染时,又往往需要该 `callback` 被再次执行,那么则可以通过以下方式实现: + +``` +// 在单页面视图碎片渲染时,再次调用「定义模块」时的 `callback` +layui.use('demo', layui.factory('demo')); +``` + +

              扩展模块

              + +`layui.extend(obj);` + +- 参数 `obj` 是一个对象,必选,用于声明模块别名。 + +除了 Layui 的内置模块,在实际项目开发时,必不可少也需要扩展模块(可以简单理解为符合 layui 模块规范的 JS 文件)。 现在,让我们尝试着扩展一个 Layui 第三方模块: + +1. **创建模块** + +我们在前文的「模块命名空间」提到,模块名具有唯一性,即不可被占用,因此我们扩展的模块必须是一个未被定义过的模块名。假设为:`firstMod`,然后新建一个 `firstMod.js` 文件并放入项目的任意目录中(最好不要放入到 Layui 原始目录) + +2. **编写模块** + +接下来我们开始定义 `firstMod` 模块,并编写改模块主体代码。 + +``` +/** + * 编写一个 firstMod 模块 + **/ +layui.define(function(exports){ // 也可以依赖其他模块 + var obj = { + hello: function(str){ + alert('Hello '+ (str || 'firstMod')); + } + }; + + // 输出 firstMod 接口 + exports('firstMod', obj); +}); +``` + +3. **声明模块** + +现在,我们只需声明模块名及模块文件路径,即完成模块扩展。 + +``` +// 假设 firstMod 模块文件所在路径在: /js/layui_exts/firstMod.js +layui.config({ + base: '/js/layui_exts/' // 配置 Layui 第三方扩展模块存放的基础目录 +}).extend({ + firstMod: 'firstMod', // 定义模块名和模块文件路径,继承 layui.config 的 base 路径 + // mod2: 'mod2' // 可同时声明其他更多模块 +}); + +// 也可以不继承 layui.config 的 base 路径,即单独指定路径 +layui.extend({ + firstMod: '{/}/js/layui_exts/firstMod' // 开头特定符 {/} 即代表采用单独路径 +}); + +// 然后我们就可以像使用内置模块一样使用扩展模块 +layui.use(['firstMod'], function(){ + var firstMod = layui.firstMod; + + firstMod.hello('World'); +}); +``` + +> 扩展模块是项目开发的重要环节,它既可以是工具性组件,也可以是纯业务组件,是 Layui 的延伸,也是项目的支撑。 + + +

              建立模块入口

              + +在不同的页面中,可能需要用到不同的业务模块。以首页为例: + +``` + + +``` + +上述的 `index` 模块即对应的模块文件 `/js/modules/index.js`,它同样也必须符合 Layui 模块规范。如: + +``` +/** + * index.js 首页业务模块 + */ +layui.define(['layer', 'form'], function(exports){ + var layer = layui.layer; + var form = layui.form; + + layer.msg('Hello Index'); + + exports('index', {}); // 输出模块名需和 use 和 extend 时的模块名一致 +}); +``` + +**合并模块入口** + +当项目存在许多不同的业务模块(且存在一定的依赖关系),我们又希望在页面中建立统一的入口模块。如: + +``` +// mod1.js +layui.define('layer', function(exports){ + // … + exports('mod1', {}); +}); + +// mod2.js,假设依赖 mod1 和 form +layui.define(['mod1', 'form'], function(exports){ + // … + exports('mod2', {}); +}); + +// mod3.js +// … + +// index.js 主入口模块 +layui.define('mod2', function(exports){ + // … + exports('main', {}); +}); +``` + +我们可以将上述模块合并为一个文件来加载,即借助构建工具(如 Gulp)将上述的 mod1、mod2、mod3、index 等业务模块合并到一个模块文件:`index.js`,此时只需在页面统一加载该模块即可。这样我们最多只需要加载两个 JS 文件:`layui.js、index.js`,这将大幅度减少静态资源的请求。 + + + +
              + +## 小贴士 + +> 综上: Layui 轻量级模块系统,无非就是:定义模块、使用模块、弃用模块、扩展模块的相互呼应,翻译成 API 即: +> - `layui.define();` +> - `layui.use();` +> - `layui.disuse();` +> - `layui.extend();` +> --- +> 熟练运用,可让您的项目更利于维护。 diff --git a/docs/nav/examples/side.md b/docs/nav/examples/side.md new file mode 100644 index 00000000..f111f1d9 --- /dev/null +++ b/docs/nav/examples/side.md @@ -0,0 +1,41 @@ + + + + + 侧边垂直导航 - Layui + + + + + + + + + + + \ No newline at end of file diff --git a/docs/nav/index.md b/docs/nav/index.md new file mode 100644 index 00000000..9f3efa31 --- /dev/null +++ b/docs/nav/index.md @@ -0,0 +1,333 @@ +--- +title: 导航菜单 nav +toc: true +--- + +# 导航菜单 + +> 导航菜单包含水平导航和垂直导航, 在 `2.x` 版本中,`nav` 组件属于 `element` 模块的子集。 + +

              水平导航

              + +一般用于页面头部菜单。样式规则如下: + +- 通过 `class="layui-nav"` 设置导航容器 +- 通过 `class="layui-nav-item"` 设置导航菜单项 + - 追加 `className` 为 `layui-this` 可设置菜单选中项 +- 通过 `class="layui-nav-child"` 设置导航子菜单项 + - 追加 `className` 为 `layui-nav-child-c` 和 `layui-nav-child-r` 可设置子菜单居中和向右对齐 + + +

              常规用法

              + +
              +  
              +
              + +备注:滑块效果仅跟随不存在子菜单的菜单项。 + +

              加入徽章等元素

              + +
              +  
              +
              + +

              导航主题

              + +给导航容器追加任意背景色 `class`,内置背景色参考:[#背景色公共类](../class.html) + +
              +  
              +
              + + +

              垂直导航

              + +一般用于左侧侧边菜单。样式规则如下: + +- 在水平导航的 `class` 规则上,通过设置 `class="layui-nav layui-nav-tree"` 定义垂直导航容器。 +- 通过 `class="layui-nav-itemed"` 设置父菜单项为展开状态 +- 通过给导航容器追加 `class="layui-nav-side"` 可设置侧边垂直导航 +- 其余结构及填充内容与水平导航完全相同 + +
              +  
              +
              + +

              侧边垂直导航

              + +
              +  
              +
              + +

              API

              + +| API | 描述 | +| --- | --- | +| var element = layui.element | 获得 `element` 模块。 | +| [element.render(\'nav\', \'filter\')](#render) | 导航菜单 `nav` 组件渲染。 | + +

              渲染

              + +`element.render('nav', filter);` + +- 参数 `'nav'` 是渲染导航的固定值 +- 参数 `filter` : 对应导航容器 `lay-filter` 的属性值 + +`nav` 组件会在元素加载完毕后,自动对导航完成一次渲染,因此该方法主要用于对动态插入的导航元素的初始化渲染。 + +``` +
              + +``` + +

              属性

              + +| 属性 | 描述 | +| --- | --- | +| lay-shrink | 导航容器属性。展开子菜单时,是否收缩兄弟节点已展开的子菜单。可选值:
              • `lay-shrink=""` 不收缩兄弟菜单子菜单,默认;
              • `lay-shrink="all"` 收缩全部兄弟菜单子菜单
              | +| lay-bar | 导航容器属性。用于禁用滑块跟随功能。如:
              `
              ` | +| lay-unselect | 导航菜单项属性。 设置后,点击对应菜单项时,不会出现选中效果。 | + + +

              事件

              + +`element.on('nav(filter)', callback)` + +- 参数 `nav(filter)` 是一个特定结构。 + - `nav` 为导航事件固定值; + - `filter` 为导航容器属性 `lay-filter` 对应的值。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。 + +当点击导航父级菜单和二级菜单时触发。示例: + +
              +  
              +
              + +

              面包屑导航

              + +面包屑导航主要用于指示当前页面所处的位置,并能返回到上级页面。 + +
              +  
              +
              + +### **面包屑导航渲染** + +`element.render('breadcrumb', filter);` + +- 参数 `'breadcrumb'` 是渲染面包屑导航的固定值 +- 参数 `filter` : 对应面包屑导航容器 `lay-filter` 的属性值 + +该方法主要用于对动态插入的面包屑导航的初始化渲染,用法同上述导航菜单。 \ No newline at end of file diff --git a/docs/panel/index.md b/docs/panel/index.md new file mode 100644 index 00000000..522de2eb --- /dev/null +++ b/docs/panel/index.md @@ -0,0 +1,281 @@ +--- +title: 面板 panel,card,collapse +toc: true +--- + +# 面板 + +> 面板是一个包含普通面板(panel)、卡片面板(card)、折叠面板(collapse)的集合 + +

              常规面板

              + +常规面板通常作为包裹其他元素的形式存在,如与基础菜单 `menu` 经常搭配使用。 + +
              +  
              +
              + +

              卡片面板

              + +
              +  
              +
              + +

              折叠面板

              + +
              +  
              +
              + + +

              开启手风琴

              + +在折叠面板容器上追加 `lay-accordion` 属性,开启手风琴效果,即点击展开当前面板的同时,折叠其他面板。 + +
              +  
              +
              + +

              折叠面板嵌套

              + +折叠面板内部支持无限嵌套,即折叠面板中再放置无限层级的折叠面板,以实现树形折叠结构。如: + +
              +  
              +
              + + +

              折叠面板渲染

              + + +`element.render('collapse', filter);` + +- 参数 `'collapse'` : 渲染折叠面板的固定值 +- 参数 `filter` : 对应折叠面板容器 `lay-filter` 的属性值 + +在元素加载完毕后,`element` 模块会自动对元素进行一次渲染。而当元素为动态插入时,需通过该方法完成初始化渲染。 + + +

              折叠面板事件

              + +`element.on('collapse(filter)', callback)` + +- 参数 `collapse(filter)` 是一个特定结构。 + - `collapse` 为折叠面板点击事件固定值; + - `filter` 为导航容器属性 `lay-filter` 对应的值。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。 + +
              +  
              +
              + + diff --git a/docs/progress/index.md b/docs/progress/index.md new file mode 100644 index 00000000..9b188e36 --- /dev/null +++ b/docs/progress/index.md @@ -0,0 +1,224 @@ +--- +title: 进度条 progress +toc: true +--- + +# 进度条 + +> 进度条 `progress` 可应用于许多业务场景,如任务完成进度、loading 等等。 + +

              示例

              + +
              +  
              +
              + +进度条宽度是 100% 适配于它的父级元素,如上面的进度条是在一个 300px 的父容器中。 + + +

              进度条主题

              + +
              +  
              +
              + + +

              大号进度条

              + +通过对进度条容器追加 `className` 为 `layui-progress-big` 可设置大尺寸风格的进度条。 + +
              +  
              +
              + + +

              显示进度值

              + +
              +  
              +
              + + +

              API

              + +| API | 描述 | +| --- | --- | +| var element = layui.element | 获得 `element` 模块。 | +| [element.render(\'progress\', filter)](#render) | 进度条 `progress` 组件渲染。 | +| [element.progress(filter, percent)](#progress) | 设置进度值 | + +

              渲染

              + +`element.render('progress', filter);` + +- 参数 `'progress'` : 渲染进度条的固定值 +- 参数 `filter` : 对应进度条容器 `lay-filter` 的属性值 + +在元素加载完毕后,element 模块会自动对元素进行一次渲染。而当元素为动态插入时,需通过该方法完成初始化渲染。 + +``` +
              + +``` + + +

              属性

              + +| 属性 | 描述 | +| --- | --- | +| lay-percent | 用于设置进度条的值,进度条内层容器属性。支持 *百分比* 和 *分数* 形式。用法详见:[#示例](#examples) | +| lay-showpercent | 是否显示进度值,进度条外层容器属性,默认不显示。用法详见:[#示例](#showpercent) | + + +

              设置进度值

              + +`element.progress(filter, percent);` + +- 参数 `filter` : 对应进度条容器 `lay-filter` 的属性值 +- 参数 `'percent'` : 进度条的值 + +该方法用于动态改变进度条的值。示例: + +
              +  
              +
              + diff --git a/docs/rate/detail/demo.md b/docs/rate/detail/demo.md new file mode 100644 index 00000000..00e61190 --- /dev/null +++ b/docs/rate/detail/demo.md @@ -0,0 +1,174 @@ +
              +  
              +
              + +

              显示文字

              + +
              +  
              +
              + +

              半星效果

              + +
              +  
              +
              + +

              自定义文本

              + +
              +  
              +
              + +

              自定义长度

              + +
              +  
              +
              + +

              只读

              + +
              +  
              +
              + +

              自定义主题色

              + +
              +  
              +
              \ No newline at end of file diff --git a/docs/rate/detail/options.md b/docs/rate/detail/options.md new file mode 100644 index 00000000..ebdf3b54 --- /dev/null +++ b/docs/rate/detail/options.md @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              属性名描述类型默认值
              elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
              length + +评分的最大长度值,即星星的数量。 + +number + +`5` + +
              value + +评分的初始值 + +number + +`0` + +
              half + +是否可以选择半星。若开启,则 `value` 支持小数点,如: + +``` +value: '3.5' +``` + +boolean + +`false` + +
              theme + +主题色 + +string + +`#FFB800` + +
              text + +是否显示评分对应的文本 + +boolean + +`false` + +
              readonly + +是否只读,即只用于展示,而不可点击 + +boolean + +`false` + +
              setText + +初始设置自定义文本的回调函数。 并返回当前 `value` 参数。用法详见:[#自定义文本](#demo-setText) + +
              choose + +选择评分后的回调函数。并返回当前 `value` 参数 + +``` +rate.render({ + elem: '#id', + choose: function(value){ + console.log(value); // 获得选中的评分值 + } +}); +``` + +
              \ No newline at end of file diff --git a/docs/rate/index.md b/docs/rate/index.md new file mode 100644 index 00000000..efd24caf --- /dev/null +++ b/docs/rate/index.md @@ -0,0 +1,56 @@ +--- +title: 评分组件 rate +toc: true +--- + +# 评分组件 + +> 评分组件 `rate` 一般用于等级展示或评价类操作。 + +

              示例

              + +
              +{{- d.include("docs/rate/detail/demo.md") }} +
              + +

              + +

              API

              + +| API | 描述 | +| --- | --- | +| var rate = layui.rate | 获得 `rate` 模块。 | +| [rate.render(options)](#render) | rate 组件渲染,核心方法。 | + +

              渲染

              + +`rate.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +
              2.8+ : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 + +``` +
              +
              +
              + + +``` + +

              属性

              + +
              +{{- d.include("docs/rate/detail/options.md") }} +
              \ No newline at end of file diff --git a/docs/slider/detail/demo.md b/docs/slider/detail/demo.md new file mode 100644 index 00000000..7d4343e5 --- /dev/null +++ b/docs/slider/detail/demo.md @@ -0,0 +1,259 @@ +
              +  
              +
              + +

              定义初始值

              + +
              +  
              +
              + +

              设置最大和最小值

              + +
              +  
              +
              + +

              设置步长

              + +
              +  
              +
              + +

              设置提示文本

              + +
              +  
              +
              + +

              开启输入框

              + +
              +  
              +
              + +

              开启范围选择

              + +
              +  
              +
              + +

              垂直滑块

              + +
              +  
              +
              + +

              自定义主题色

              + +
              +  
              +
              + +

              禁用滑块

              + +
              +  
              +
              \ No newline at end of file diff --git a/docs/slider/detail/options.md b/docs/slider/detail/options.md new file mode 100644 index 00000000..a4fc7bdc --- /dev/null +++ b/docs/slider/detail/options.md @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              属性名描述类型默认值
              elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
              type + +滑块类型,可选值有: + +- `default` 水平滑块(默认) +- `vertical`垂直滑块 + +string + +`default` + +
              value + +滑块初始值。 + +- 默认可直接设置数值,如: `value: 50` +- 若滑块开启 `range: true` 区间选择,则值为数组,异表示开始和结尾的区间,如: `value: [30, 60]` + +number
              array
              -
              range + +是否开启滑块的区间选择。若开启,则滑块将出现两个可拖拽的点。 + +boolean + +`false` + +
              min + +滑块的最小值 + +number + +`0` + +
              max + +滑块的最大值 + +number + +`100` + +
              step + +滑块单次拖动的步长 + +number + +`1` + +
              showstep + +是否显示间断点 + +boolean + +`false` + +
              tips + +鼠标移入当前圆点,是否显示当前值 + +boolean + +`true` + +
              input + +是否显示滑块的数字输入框。 注:若设置 `range: true` 则该属性强制无效。 + +boolean + +`false` + +
              height + +滑动条高度。 必须设置 `type: 'vertical'` 属性,即垂直滑块时有效。 + +number + +`200` + +
              theme + +滑块的主题色。 + +string-
              disabled + +是否禁用滑块 + +boolean + +`false` + +
              setTips + +滑块拖拽时设置提示文本的回调函数。并返回当前的 `value` 参数。用法详见:[#设置提示文本](#demo-setTips) + +
              + + +
              + +[回调函数](#options.callback) + +
              + +
              change + +滑块数值发生改变的回调函数。并返回当前的 `value` 参数。 + +``` +slider.render({ + elem: '#id', + change: function(value){ + console.log(value) // 滑块当前值 + // do something + } +}); +``` + +一般可在该回调中将 `value` 同步给表单隐藏域,或者进行一些其它操作。 + +
              done 2.8+ + +滑块拖拽完毕的回调函数。并返回当前的 `value` 参数。滑块拖动过程中不会触发。 + +``` +slider.render({ + elem: '#id', + done: function(value){ + console.log(value) // 滑块当前值 + // do something + } +}); +``` + +若需将 `value` 异步发送给后端,一般采用 `done` 回调,而非 `change` 回调。 + +
              \ No newline at end of file diff --git a/docs/slider/index.md b/docs/slider/index.md new file mode 100644 index 00000000..3582ebad --- /dev/null +++ b/docs/slider/index.md @@ -0,0 +1,92 @@ +--- +title: 滑块组件 slider +toc: true +--- + +# 滑块组件 + +> 滑块组件 `slider` 是一个拖拽选值的交互性组件,常与 `form` 元素结合使用。 + +

              示例

              + + +
              +{{- d.include("docs/slider/detail/demo.md") }} +
              + +

              API

              + +| API | 描述 | +| --- | --- | +| var slider = layui.slider | 获得 `slider` 模块。 | +| [var inst = slider.render(options)](#render) | slider 组件渲染,核心方法。 | +| [inst.setValue(value)](#setValue) | 设置滑块值 | +| inst.config | 获得当前实例的属性配置项 | + +

              渲染

              + +`slider.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +
              2.8+ : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 + +``` +
              +
              +
              + + +``` + + +该方法返回一个实例对象,包含操作当前实例的相关方法成员。 + +``` +var inst = slider.render(options); +console.log(inst); // 得到当前实例对象 +``` + +

              设置滑块值

              + +`inst.setValue(value, index)` + +- 参数 `value` : 要设置的滑块数值 +- 参数 `index` : 滑块所在的区间开始值或结尾值的索引,开始值:`0` ; 结尾值:`1` + +``` +var slider = layui.slider; + +// 渲染 +var inst = slider.render({ + elem: '#id' + // … +}); + +// 设置滑块值 +inst.setValue(20); + +// 若滑块开启了范围,即: `range: true` +ins1.setValue(20, 0) // 设置开始值 +ins1.setValue(60, 1) // 设置结尾值 +``` + +

              属性

              + +
              +{{- d.include("docs/slider/detail/options.md") }} +
              \ No newline at end of file diff --git a/docs/tab/detail/demo.md b/docs/tab/detail/demo.md new file mode 100644 index 00000000..bbcde2ae --- /dev/null +++ b/docs/tab/detail/demo.md @@ -0,0 +1,95 @@ +
              +  
              +
              + +

              hash 状态匹配

              + +切换 tab 标签项后,地址栏同步 `hash` 值,当页面刷新时,tab 仍保持对应的切换状态。 + +
              +  
              +
              \ No newline at end of file diff --git a/docs/tab/index.md b/docs/tab/index.md new file mode 100644 index 00000000..e8332ac4 --- /dev/null +++ b/docs/tab/index.md @@ -0,0 +1,304 @@ +--- +title: 选项卡组件 tab +toc: true +--- + +# 选项卡组件 + +> 选项卡组件 `tab` 是指可进行标签页切换的一段容器,常广泛应用于 Web 页面。由于为了向下兼容等诸多历史原因,在 2.x 版本中,`tab` 组件属于 `element` 模块的子集。 + + +

              示例

              + +
              +{{- d.include("docs/tab/detail/demo.md") }} +
              + +

              风格

              + +tab 组件提供了三种 UI 风格,分别为: + +| 风格 | className | +| --- | --- | +| [默认风格](#default) | `class="layui-tab"` | +| [简约风格](#brief) | `class="layui-tab layui-tab-brief"` | +| [卡片风格](#card) | `class="layui-tab layui-tab-card"` | + +

              默认风格

              + +
              +  
              +
              + +

              简约风格

              + +
              +  
              +
              + +

              卡片风格

              + +
              +  
              +
              + + +

              API

              + +| API | 描述 | +| --- | --- | +| var element = layui.element | 获得 `element` 模块。 | +| [element.render(\'tab\', filter)](#element.render) | 渲染 tab 组件 | +| [element.tabAdd(filter, options)](#element.tabAdd) | 添加 tab 选项 | +| [element.tabDelete(filter, layid)](#element.tabDelete) | 删除 tab 选项 | +| [element.tabChange(filter, layid)](#element.tabChange) | 切换 tab 选项 | +| [element.tab(options)](#element.tab) | 绑定自定义 tab 元素 | + +

              元素属性

              + +| 属性 | 描述 | +| --- | --- | +| lay-allowclose | 是否开启删除图标。设置在 tab 容器 `
                ` 上。 | +| lay-id | tab 选项唯一 ID,一般用于外部对 tab 的删除和切换等操作。设置在 tab 中的 `
              • ` 元素上 | + +

                开启删除

                + +
                +  
                +
                + +

                渲染 tab

                + +`element.render('tab', filter);` + +- 参数 `'tab'` 是渲染 tab 的固定值 +- 参数 `filter` : 对应 tab 容器 `lay-filter` 的属性值 + +tab 组件会在元素加载完毕后,自动对 tab 元素完成一次渲染,因此该方法主要用于对动态插入的 tab 元素的初始化渲染。 + +``` +
                + +``` + + +

                添加 tab

                + +`element.tabAdd(filter, options);` + +- 参数 `filter` : tab 容器(`class="layui-tab"`)的 `lay-filter` 属性值 +- 参数 `options` : 添加 tab 时的属性可选项,见下表: + +| options | 描述 | 类型 | +| --- | --- | --- | +| title | 选项卡的标题 | string | +| content | 选项卡的内容,支持传入 `html` | string | +| id | 选项卡标题元素的 `lay-id` 属性值 | string | + +该方法用于添加 tab 选项。用法详见 : [#示例](#examples) + +

                删除 tab

                + +`element.tabDelete(filter, layid);` + +- 参数 `filter` : tab 容器(`class="layui-tab"`)的 `lay-filter` 属性值 +- 参数 `layid` : 选项卡标题元素的 `lay-id` 属性值 + +该方法用于删除 tab 选项。用法详见 : [#示例](#examples) + + +

                切换 tab

                + +`element.tabChange(filter, layid);` + +- 参数 `filter` : tab 容器(`class="layui-tab"`)的 `lay-filter` 属性值 +- 参数 `layid` : 选项卡标题元素的 `lay-id` 属性值 + +该方法用于切换到对应的 tab 选项。用法详见 : [#示例](#examples) + + +

                自定义 tab

                + +`element.tab(options);` + +- 参数 `options` : 属性可选项,见下表: + +| options | 描述 | 类型 | +| --- | --- | --- | +| headerElem | 指定自定义的 tab 头元素项选择器 | string / DOM | +| bodyElem | 指定自定义的 tab 主题内容元素项选择器 | string / DOM | + + +该方法用于绑定自定义 tab 元素(即非 `class="layui-tab` 定义的结构)。示例如下: + +
                +  
                +
                + +

                事件

                + + +

                tab 切换事件

                + +`element.on('tab(filter)', callback);` + +- 参数 `tab(filter)` 是一个特定结构。 + - `tab` 为 tab 切换事件固定值; + - `filter` 为 tab 容器属性 `lay-filter` 对应的值。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。 + +点击 tab 选项切换时触发。[#参考示例](#hash-match) + +``` +var element = layui.element; + +// tab 切换事件 +element.on('tab(filter)', function(data){ + console.log(this); // 当前 tab 标题所在的原始 DOM 元素 + console.log(data.index); // 得到当前 tab 项的所在下标 + console.log(data.elem); // 得到当前的 tab 容器 +}); +``` + + +

                tab 删除事件

                + +`element.on('tabDelete(filter)', callback);` + +- 参数 `tabDelete(filter)` 是一个特定结构。 + - `tabDelete` 为 tab 删除事件固定值; + - `filter` 为 tab 容器属性 `lay-filter` 对应的值。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。 + +点击 tab 选项删除时触发。 + +``` +var element = layui.element; + +// tab 删除事件 +element.on('tabDelete(filter)', function(data){ + console.log(data.index); // 得到被删除的 tab 项的所在下标 + console.log(data.elem); // 得到当前的 tab 容器 +}); +``` + + diff --git a/docs/table/detail/demo.md b/docs/table/detail/demo.md new file mode 100644 index 00000000..75e982f5 --- /dev/null +++ b/docs/table/detail/demo.md @@ -0,0 +1,200 @@ +

                综合演示 🔥

                + +
                +  
                +
                + +

                静态表格

                + +静态表格是指内容已经存在于页面中的 `` 元素,且可通过一些*特定属性*设定不同风格。 + +
                +  
                +
                + +

                模板配置渲染

                + +在上文「[综合演示](#examples)」中,是通过组件核心方法完成的渲染。除此,还可以在模板上直接配置相关属性,让其自动完成渲染。 + +
                +  
                +
                + +

                静态表格转换

                + +
                +  
                +
                + +

                已知数据渲染

                + +
                +  
                +
                + +

                自定义模板

                + +
                +  
                +
                + +

                自定义样式 2.7+

                + +
                +  
                +
                + +

                自定义分页

                + +
                +  
                +
                + + + +
                +  
                +
                + +

                编辑的权限控制 2.7+

                + +以下演示一个根据返回数据中某个字段来判断是否开启该行的编辑,*单击对应行*可进入单元格编辑。 + +
                +  
                +
                + +

                实现多样化编辑

                + +
                +  
                +
                + +

                转换数据格式

                + +
                +  
                +
                + +

                筛选列记忆功能

                + +即点击当前表格右上角筛选图标后,对表头进行显示隐藏勾选,再刷新页面依然保留当前筛选状态。 + +
                +  
                +
                + +

                选中行操作

                + +
                +  
                +
                + +

                多级表头

                + +
                +  
                +
                + + +

                更多示例

                + +> - [🎉 分享:在 table 组件中使用 select/dropdown/laydate 等组件实现多样化编辑](https://gitee.com/layui/layui/issues/I5JBUE) +> - 不定期分享在 [Gitee Issues](https://gitee.com/layui/layui/issues) \ No newline at end of file diff --git a/docs/table/detail/options.ajax.md b/docs/table/detail/options.ajax.md new file mode 100644 index 00000000..e7a64b59 --- /dev/null +++ b/docs/table/detail/options.ajax.md @@ -0,0 +1,181 @@ +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述
                url + +发送异步请求的 URL。默认会自动传递两个参数:`?page=1&limit=30`(该参数可通过 `request` 属性自定义) +
                `page` 代表当前页码、`limit` 代表每页数据条数。 + +
                method + +请求的方式,默认:`get` + +
                where + +请求的其他参数。如:`where: {token: 'sasasas', id: 123}` + +
                headers + +请求的数据头参数。如:`headers: {token: 'sasasas'}` + +
                contentType + +请求的内容编码类型。若要发送 `json` 内容,可设置:
                +`contentType: 'application/json'` + +
                dataType 2.7+ + +请求的数据类型,默认 `json`。 + +
                jsonpCallback 2.7+ + +设置当 `dataType: 'jsonp'` 时的回调函数名。 + +
                request + +用于对默认的分页相关的请求参数 `page,limit` 重新设定名称。如: + +``` +request: { + pageName: 'curr', // 页码的参数名称,默认:page + limitName: 'nums' // 每页数据条数的参数名,默认:limit +} +``` + +那么请求数据时的参数将会变为 `?curr=1&nums=30` + +
                + +[**parseData**](#options.parseData) + + + +
                + 数据格式解析的回调函数,用于将返回的任意数据格式解析成 table 组件规定的数据格式: +
                + +``` +{ + "code": 0, + "msg": "", + "count": 1000, + "data": [{}, {}] +} +``` + +很多时候,您接口返回的数据格式并不一定都符合 table 默认规定的格式,比如: + +``` +{ + "status": 0, + "message": "", + "total": 180, + "data": { + "item": [{}, {}] + } +} +``` + +此时我们可以借助 `parseData` 回调函数将数据解析并转换为默认规定的格式: + +``` +table.render({ + elem: '', + url: '', + parseData: function(res){ // res 即为原始返回的数据 + return { + "code": res.status, // 解析接口状态 + "msg": res.message, // 解析提示文本 + "count": res.total, // 解析数据长度 + "data": res.data.item // 解析数据列表 + }; + }, + // … //其他参数 +}); +``` + +该函数非常实用 + + +
                + +

                返回数据中的特定字段

                + +在返回的数据中,允许规定某些特定字段,以便 table 组件进行相应的特定解析。 + +| 特定字段名 | 描述 | 读写状态 | +| --- | --- | --- | +| LAY_CHECKED | 当前行的选中状态 | 可读可写 | +| LAY_DISABLED | 当前行是否禁止选择 | 可读可写 | +| LAY_INDEX | 当前行下标。每页重新从零开始计算 | 只读 | +| LAY_NUM | 当前行序号 | 只读 | +| LAY_COL | 当前列的表头属性配置项 | 只读 | + +示例一: 在返回的数据中设置特定字段: + +``` +{ + "code": 0, + "count": 1000, + "data": [{},{ + LAY_DISABLED: true + }] +} +``` + +示例二: 在模板中读取特定字段示例: + +{{! +``` + +``` +!}} diff --git a/docs/table/detail/options.cols.md b/docs/table/detail/options.cols.md new file mode 100644 index 00000000..ab5df1ea --- /dev/null +++ b/docs/table/detail/options.cols.md @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                field + +设置字段名。通常是表格数据列的唯一标识 + +string-
                title + +设置列的标题。 + +string-
                fieldTitle 2.8+ + +设置列的字段标题。该属性在筛选列和导出场景中优先级高于 `title` 属性 + +string-
                width + +设置列宽。若不填写,则自动分配;若填写,则支持值为:*数字、百分比*。如: +`width: 200` / `width: '30%'` + +number/string-
                minWidth + +设置当前列的最小宽度,一般用于列宽自动分配的情况。其优先级高于基础属性中的 `cellMinWidth` + +number + +`60` + +
                maxWidth 2.8+ + +设置当前列的最大宽度。其优先级高于基础属性中的 `cellMaxWidth` + +number-
                type + +设置列类型。可选值有: +- `normal` 常规列,无需设定 +- `checkbox` 复选框列 +- `radio` 单选框列 +- `numbers` 序号列 +- `space` 空列 + +string + +`normal` + +
                LAY_CHECKED + +设置全选状态,当列设置 `type: 'checkbox'` 时才有效。 + +boolean + +`false` + +
                fixed + +设置固定列,即不跟随 table 横向滚动条而滚动。可选值有: +- `left` 固定在左 +- `right` 固定在右 + +string-
                + +[templet](#cols.templet) + + + +
                + 设置列的自定义模板,核心属性。模板遵循 laytpl 组件语法。 +
                + + `templet` 提供了三种使用方式,选择任一用法即可: + +- **设置模版选择器** + +{{! +``` + + + +``` + +``` +table.render({ + cols: [[ + {field: 'title', templet: '#TPL-demo-title'} + // … + ]], + // … +}); +``` +!}} + +- **设置模板内容** + +该方式必须在内容中包裹一层 `
                `,否则无法读取模板。 + +{{! +``` +table.render({ + cols: [[ + {field: 'title', templet: ''} + // … + ]], + // … +}); +``` +!}} + +- **设置模板函数** + +函数将返回一个 `d` 参数,包含当前行数据及特定的额外字段。 +``` +table.render({ + cols: [[ + {field: 'title', templet: function(d){ + console.log(d); // 得到当前行数据 + console.log(this); // 得到表头当前列配置项 + console.log(d.LAY_NUM); // 得到序号。或其他特定字段 + + // 返回模板内容 + return ''+ d.title +'' + }} + // … + ]], + // … +}); +``` + +
                exportTemplet 2.6.9+ + +
                + +设置表格导出时的模板,用法同 `templet` 属性。当 `templet` 指向的模板内容较复杂时建议使用,如下以模板存在 `select` 元素为例: + +
                + +``` +exportTemplet: function(d, obj){ + // 当前 td + var td = obj.td(this.field); + // 返回 select 选中值 + return td.find('select').val(); +} +``` + +
                string
                function
                -
                + + [totalRow](#cols.totalRow) + + + +
                + 是否开启该列的自动合计功能。 +
                + +- 前端合计 + +``` +totalRow: true // 开启合计行,并默认对当前所有行数据进行前端合计 +``` + +- 后端合计 + +前端合计的数据有限,因此常常需要后端直接返回合计行结果,此时将优先读取后端的合计行返回结果,其格式如下: + +``` +{ + "code": 0, + "totalRow": { + "score": "777", + "experience": "999" + }, + "data": [{}, {}], + "msg": "", + "count": 1000 +} +``` + +如上,在 `totalRow` 中返回所需统计的列字段名和值即可。 +
                `totalRow` 字段同样可以通过 `parseData` 回调来解析成为 table 组件所规定的数据格式。 + + +- 合计行模板 + +{{! +``` +totalRow: '{{= d.TOTAL_NUMS }} 单位' // 还比如只取整:'{{= parseInt(d.TOTAL_NUMS) }}' +``` +!}} + +
                boolean
                string
                + +`false` + +
                + +[edit](#cols.edit) + + + +
                + 用于对列所在的单元格开启编辑功能。可选值有: +
                + +- `edit: 'text'` 单行输入模式 +- `edit: 'textarea'` 多行输入模式 2.7+ + +**函数写法** 2.7+ + +``` +edit: function(d){ + // d 即为当前行数据,此时可根据行相关字段来开启该行是否编辑的权限 + if(d.editable){ // editable 为任意字段名 + return 'text'; // 编辑模式 + } +} +``` + + +
                string
                function
                + +`false` + +
                hide + +是否初始隐藏列 + +boolean + +`false` + +
                escape + +是否对当前列进行内容编码(转义 html),优先级大于基础属性中的 `escape`。 + +boolean + +`true` + +
                sort + +是否开启列的排序功能。
                +注意:不推荐对值同时存在“数字和普通字符”的列开启排序,因为会进入字典序排序计算中,如:`'张三' > '2' > '100'`,这可能并不是你想要的结果,但字典序排列采用的是 `ASCII` 码比对。 + +
                boolean + +`false` + +
                unresize + +是否禁用拖拽列宽。默认情况下会根据列类型 `type` 属性来决定是否禁用,如复选框列,会自动禁用。而其它普通列,默认允许拖拽列宽,当然你也可以设置 true 来禁用该功能。 + +boolean + +`false` + +
                event + +自定义单元格点击事件名,以便在 [单元格工具事件](#on-tool) 中完成对该单元格的事件处理。 + +string-
                style + +自定义单元格样式。可传入任意的 CSS 内容,如:`style: 'font-size: 13px; color: red;'` + +string-
                align + +单元格排列方式。可选值有:`left` | `center` | `right` + +string + +`left` + +
                colspan + +单元格所占列数。一般用于多级表头 + +number + +`1` + +
                rowspan + +单元格所占行数。一般用于多级表头 + +number + +`1` + +
                \ No newline at end of file diff --git a/docs/table/detail/options.md b/docs/table/detail/options.md new file mode 100644 index 00000000..3785e958 --- /dev/null +++ b/docs/table/detail/options.md @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                elem绑定原始 table 元素,方法渲染方式必填。string/DOM-
                + +[url](#options.ajax) + + + +发送异步请求的 URL。更多异步相关属性见 : [#异步属性](#options.ajax) + +--
                + +[cols](#options.cols) + + + +表头属性集,通过二维数组定义多级表头。方法渲染时必填。 更多表头属性见 : [#表头属性](#options.cols) + +array-
                data + +直接赋值数据。既适用于只展示一页数据,也能对一段已知数据进行多页展示。该属性与 `url` 属性只能二选一。 + +array-
                id + +设定实例唯一索引,以便用于其他方法对 table 实例进行相关操作。若该属性未设置,则默认从 `elem` 属性绑定的原始 table 元素中的 `id` 属性值中获取。 + +string-
                toolbar + +开启表格头部工具栏。支持以下几种值写法: + +- `toolbar: '#template-id'` 自定义工具栏模板选择器 +- `toolbar: '
                xxx
                ` 直接传入模板字符 +- `toolbar: true` 仅开启工具栏右侧,不显示左侧模板 +- `toolbar: 'default'` 开启工具栏并显示默认模板 + +
                string
                boolean
                + +`false` + +
                defaultToolbar + +设置头部工具栏右侧图标。值是一个数组,可选成员有: `filter,exports,print` (分别代表:筛选图标、导出图标、打印图标)。图标可根据数组值的顺序排列,如:`defaultToolbar: ['filter','print','exports']`
                支持自定义图标及事件,用法详见示例: [#综合演示](#examples) + +
                array-
                width设置容器宽度,默认自适应。number-
                + +[height](#options.height) + + + +
                + 设置表格容器高度,默认自适应。其他可选值的规则如下: +
                + +- `height: 315` 设置固定高度 +- `height: 'full-30'` 设置自适应高度。这是一个特定的语法格式:`full` 表示铺满;后面的数字表示当前 table 之外的元素占用的高度,如:表格头部到页面最顶部*加*表格底部距离页面最底部的“距离和” +- `height: '#id-30'` 设置相对父元素的高度自适应,其中 `#id` 即父元素的 ID 选择器,其计算原理和上述 `full` 相同。 + +
                number
                string
                -
                maxHeight 2.8+ + +设置表格容器的最大高度,设置该属性后,`height` 属性将被认定为默认的自适应值。 + +number-
                cellMinWidth + +设置所有普通单元格的最小宽度,一般用于列宽自动分配的情况。其优先级低于表头属性中的 `minWidth` + +number + +`60` + +
                cellMaxWidth 2.8+ + +设置所有普通单元格的最大宽度。其优先级低于表头属性中的 `maxWidth` + +number-
                lineStyle 2.7+ + +用于定义表格的多行样式,如每行的高度等。该参数一旦设置,单元格将会开启多行模式,且鼠标 hover 时会通过显示滚动条的方式查看到更多内容。 请按实际场景使用。
                示例:`lineStyle: 'height: 95px;'` + +
                string-
                className 2.7+用于给表格主容器追加 css 类名,以便更好地扩展表格样式string-
                css 2.7+ + +用于给当前表格主容器直接设定 css 样式,样式值只会对所在容器有效,不会影响其他表格实例。如:`css: '.layui-table-page{text-align: right;}'` + +string-
                escape 2.6+是否开启对内容的编码(转义 html)boolean + +`true` + +
                totalRow是否开启合计行区域string + +`false` + +
                page + +用于开启分页。
                +支持传入 [laypage](../laypage/#options) 组件的基础属性(jump,elem 除外) + +
                boolean
                object
                + +`false` + +
                pagebar 2.7+ + +用于开启分页区域的自定义模板,用法同 `toolbar` 属性。 + +string-
                limit + +每页显示的条数。值需对应 limits 参数的选项。优先级低于 `page` 属性中的 `limit` 属性。 + +number + +`10` + +
                limits每页条数的选择项。array + +`[10,…,90]` + +
                loading + +是否显示加载条。若为 `false`,则在切换分页时,不会出现加载条。必须设置了 `url` 属性才生效。 + +boolean + +`true` + +
                scrollPos 2.7+ + +用于设置重载数据或切换分页时的滚动条位置状态。可选值: +- `fixed` 重载数据时,保持滚动条位置不变 +- `reset` 重载数据时,滚动条位置恢复置顶 +- `default` 默认方式,无需设置。即重载数据或切换分页时,纵向滚动条置顶,横向滚动条位置不变。 + +string-
                editTrigger 2.7+ + +是用于设定单元格编辑的事件触发方式。如双击: `dblclick` + +string + +`click` + +
                title定义 table 的大标题(在文件导出等地方会用到)string-
                text自定义文本,如空数据时的异常提示等。object + +
                `text: {none: '无数据'}`
                +
                autoSort + +是否由组件自动进行前端排序。若为 `false`,则需自主排序,即由后端直接返回排序好的数据。[#详细用法](#on-sort) + +boolean + +`true` + +
                initSort + +初始排序状态。用于在数据表格渲染完毕时,按某个字段排序显示。它接受一个 `object` 类型的值,包含属性有: +- `field` 排序字段。对应 `cols` 设定的各字段名 +- `type` 排序方式。可选值 : `'asc','desc',null`,即:`升序、降序、默认` + +``` +initSort: { + field: 'id', // 按 id 字段排序 + type: 'desc' // 降序排序 +} +``` + +object-
                skin + +设置表格边框风格。可选值:`grid`\|`line`\|`row`\|`nob` + +string + +`grid` + +
                size + +设置表格其他尺寸。可选值:`sm`\|`md`|`lg` + +string + +`md` + +
                even + +是否开启隔行背景。 + +string + +`false` + +
                before 2.7+数据渲染之前的回调函数。function-
                + +[done](#options.done) + + + +
                + 数据渲染完毕的回调函数。返回的参数如下: +
                + +``` +table.render({ + done: function(res, curr, count){ + console.log(res); // 得到当前渲染的数据 + console.log(curr); // 得到当前页码 + console.log(count); // 得到数据总量 + } + // … // 其它属性 +}); +``` + +
                function-
                error 2.6+ 数据请求失败的回调函数。返回两个参数:错误对象、内容。function-
                \ No newline at end of file diff --git a/docs/table/examples/autoRender.md b/docs/table/examples/autoRender.md new file mode 100644 index 00000000..cca0656c --- /dev/null +++ b/docs/table/examples/autoRender.md @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
                ID用户名性别城市签名积分评分职业
                \ No newline at end of file diff --git a/docs/table/examples/css.md b/docs/table/examples/css.md new file mode 100644 index 00000000..b45eb097 --- /dev/null +++ b/docs/table/examples/css.md @@ -0,0 +1,83 @@ + + + + + table 自定义样式 - Layui + + + + + + + +
                +
                +
                + + + + + + + \ No newline at end of file diff --git a/docs/table/examples/data.md b/docs/table/examples/data.md new file mode 100644 index 00000000..eec563b5 --- /dev/null +++ b/docs/table/examples/data.md @@ -0,0 +1,84 @@ +
                + + \ No newline at end of file diff --git a/docs/table/examples/demo.md b/docs/table/examples/demo.md new file mode 100644 index 00000000..6b8c9b8f --- /dev/null +++ b/docs/table/examples/demo.md @@ -0,0 +1,375 @@ + + + + + table 组件综合演示 - Layui + + + + + + + + +
                +
                +
                + + + + + + + + + + + \ No newline at end of file diff --git a/docs/table/examples/editModes.md b/docs/table/examples/editModes.md new file mode 100644 index 00000000..7cdccb4e --- /dev/null +++ b/docs/table/examples/editModes.md @@ -0,0 +1,160 @@ +
                +{{! + + + + + + + + +!}} + + \ No newline at end of file diff --git a/docs/table/examples/editable.md b/docs/table/examples/editable.md new file mode 100644 index 00000000..e8ca5a53 --- /dev/null +++ b/docs/table/examples/editable.md @@ -0,0 +1,57 @@ +
                + + \ No newline at end of file diff --git a/docs/table/examples/filter.md b/docs/table/examples/filter.md new file mode 100644 index 00000000..28dcaa9f --- /dev/null +++ b/docs/table/examples/filter.md @@ -0,0 +1,47 @@ +
                + + \ No newline at end of file diff --git a/docs/table/examples/init.md b/docs/table/examples/init.md new file mode 100644 index 00000000..a7ac34e2 --- /dev/null +++ b/docs/table/examples/init.md @@ -0,0 +1,47 @@ +
                + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                庄子华夏朴素而天下莫能与之争美
                + + \ No newline at end of file diff --git a/docs/table/examples/onrowContextmenu.md b/docs/table/examples/onrowContextmenu.md new file mode 100644 index 00000000..cb6261d1 --- /dev/null +++ b/docs/table/examples/onrowContextmenu.md @@ -0,0 +1,55 @@ +
                + + \ No newline at end of file diff --git a/docs/table/examples/page.md b/docs/table/examples/page.md new file mode 100644 index 00000000..06cbb825 --- /dev/null +++ b/docs/table/examples/page.md @@ -0,0 +1,41 @@ +
                + + + \ No newline at end of file diff --git a/docs/table/examples/parse.md b/docs/table/examples/parse.md new file mode 100644 index 00000000..90454b60 --- /dev/null +++ b/docs/table/examples/parse.md @@ -0,0 +1,39 @@ +> 假设这是一段数据源:{{d.root}}/static/json/table/demo3.json
                + 尽管它并不符合 table 组件默认规定的数据格式([#详见](#options-async-data)),但可以通过 parseData 回调将其进行转换。 + +
                + + diff --git a/docs/table/examples/search.md b/docs/table/examples/search.md new file mode 100644 index 00000000..7c6fc5b7 --- /dev/null +++ b/docs/table/examples/search.md @@ -0,0 +1,76 @@ +
                +
                +
                +
                + +
                + +
                +
                +
                +
                + +
                +
                +
                +
                +
                + +
                + +
                +
                +
                + + +
                +
                + + + + \ No newline at end of file diff --git a/docs/table/examples/setRowChecked.md b/docs/table/examples/setRowChecked.md new file mode 100644 index 00000000..c0cfb8d5 --- /dev/null +++ b/docs/table/examples/setRowChecked.md @@ -0,0 +1,58 @@ +
                + + + \ No newline at end of file diff --git a/docs/table/examples/static.md b/docs/table/examples/static.md new file mode 100644 index 00000000..f0867b27 --- /dev/null +++ b/docs/table/examples/static.md @@ -0,0 +1,207 @@ +默认风格: + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                + +行边框表格: + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                + +列边框表格: + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                + +无边框表格: + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                + +小尺寸表格: + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                + +大尺寸表格: + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                + +开启偶数行背景色: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                人物民族格言
                孔子华夏有朋至远方来,不亦乐乎
                孟子华夏穷则独善其身,达则兼济天下
                庄子华夏朴素而天下莫能与之争美
                \ No newline at end of file diff --git a/docs/table/examples/templet.md b/docs/table/examples/templet.md new file mode 100644 index 00000000..d313dcf6 --- /dev/null +++ b/docs/table/examples/templet.md @@ -0,0 +1,62 @@ +
                + + + + + + + + \ No newline at end of file diff --git a/docs/table/examples/theads.md b/docs/table/examples/theads.md new file mode 100644 index 00000000..0d4d8b92 --- /dev/null +++ b/docs/table/examples/theads.md @@ -0,0 +1,51 @@ +常用两级表头: + + + + + + + + + + + + + + + + +
                联系人地址数量操作
                + +更多级表头(支持无限极): + + + + + + + + + + + + + + + + + + + + + + + +
                联系人数量地址1地址2操作
                详细
                街道小区单元
                + + \ No newline at end of file diff --git a/docs/table/index.md b/docs/table/index.md new file mode 100644 index 00000000..a66831d4 --- /dev/null +++ b/docs/table/index.md @@ -0,0 +1,860 @@ +--- +title: 表格组件 table +toc: true +--- + +# 表格组件 🔥 + +> 表格组件 `table` 是 Layui 中使用率极高的一个组件,它以表格的承载方式对数据进行渲染、重载、排序、统计、分页等等一系列交互操作,并提供了丰富的 API 用于扩展,基本涵盖了日常业务所涉及的大部分需求。 + +

                示例

                + +以下所有示例中演示的数据均为「静态模拟数据」,实际使用时换成您的真实接口即可。 + +
                +{{- d.include("docs/table/detail/demo.md") }} +
                + +

                API

                + +| API | 描述 | +| --- | --- | +| var table = layui.table | 获得 `table` 模块。 | +| [table.render(options)](#render) | table 组件渲染,核心方法。 | +| [table.init(filter, options)](#table.init) | 初始化渲染静态表格。 | +| [table.reload(id, options, deep)](#table.reload) | 表格完整重载。 | +| [table.reloadData(id, options, deep)](#table.reloadData) 2.7+ | 表格数据重载。 | +| [table.checkStatus(id)](#table.checkStatus) | 获取选中行相关数据。 | +| [table.setRowChecked(id, opts)](#table.setRowChecked) 2.8+ | 设置行选中状态。 | +| [table.getData(id)](#table.getData) | 获取当前页所有行表格数据。 | +| [table.cache](#table.cache) | 获取表格缓存数据集(包含特定字段)。 | +| [table.resize(id)](#table.resize) | 重置表格尺寸。 | +| [table.exportFile(id, data, opts)](#table.exportFile) | 导出表格数据到本地文件。 | +| [table.getOptions(id)](#table.getOptions) 2.8+ | 获取表格实例配置项。 | +| [table.hideCol(id, cols)](#table.hideCol) 2.8+ | 设置表格列的显示隐藏属性。 | +| [table.on(\'event(filter)\', callback)](#table.on) | table 相关事件。 | + + +

                渲染

                + +table 提供了以下三种渲染模式,在实际使用时,一般按情况选择其中一种即可。 + +| 渲染方式 | 描述 | +| --- | --- | +| [方法配置渲染](#table.render) | 通过 table 组件提供的核心方法 `table.render(options)` 完成的渲染。推荐 | +| [模板配置渲染](#view-render) | 通过 `` 标签的 `lay-options="{}"` 属性定义模板,组件自动对其进行解析并完成渲染。 | +| [静态表格渲染](#table.init) | 对一段已经包含数据内容的静态表格进行动态化转换,使其具备 table 组件的相关功能。 | + + +

                方法配置渲染

                + +`table.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法返回当前实例对象,包含可操作当前表格的一些成员方法。 + +``` +
                + + +``` + +

                模板配置渲染

                + +在 `` 元素中直接书写 `lay-options="{}"` 属性,组件将自动对其进行解析并完成渲染。 + +``` + +
                + + + + + + +
                Title
                +``` + +> 2.8 之前版本通过 `lay-data="{}"` 定义属性配置项;
                +> 2.8+ 版本推荐采用 `lay-options`,但同时兼容 `lay-data`。 + + +

                静态表格渲染

                + +`table.init(filter, options);` + +- 参数 `filter` : `` 元素对应的 `lay-filter` 属性值 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法用于将已输出在页面中的静态表格内容转换为动态 table 组件。[#参考相关示例](demo-init) + +``` +
                + 表格内容 +
                + + +``` + +

                属性 🔥

                + +属性是指 table *渲染、重载* 时的配置选项(`options`),它本身是一个 `object` 参数。如: + +``` +// 渲染 +table.render({ + // options + elem: '', + cols: [[]], + // … +}); +// 重载 +table.reload(id, { + // options +}); + +若为模板配置渲染,则 lay-options 或 lay-data 的属性值即为属性的配置选项(: + …
                +``` + +table 的属性众多,我们大致分为以下几种: + +| 属性类别 | 描述 | +| --- | --- | +| [基础属性](#options) | - | +| [异步属性](#options.ajax) | 用于和异步数据请求相关的基础属性,由于相关属性成员较多,所以单独提取介绍。 | +| [表头属性](#options.cols) | 基础属性 `cols` 的子属性集。 | + +

                基础属性

                + +
                +{{- d.include("docs/table/detail/options.md") }} +
                + +

                异步属性

                + +异步属性本质也是基础属性,当开启 `url` 属性时才有效,由于相关属性成员较多,所以单独提取介绍。 + +
                +{{- d.include("docs/table/detail/options.ajax.md") }} +
                + +

                表头属性

                + +表头属性是基础属性 `cols` 的子集,其使用频率甚至超过基础属性本身。 + +
                +{{- d.include("docs/table/detail/options.cols.md") }} +
                + +

                重载

                + +即对一段已经渲染好的表格重新设置属性并渲染,可分为以下几种重载方式: + +| 重载方式 | API | +| --- | --- | +| [完整重载](#table.reload) | [table.reload(id, options, deep)](#table.reload) | +| [仅数据重载](#table.reloadData) | [table.reloadData(id, options, deep)](#table.reloadData) | + +重载的使用方式完全相同,区别只是在于参与重载时的属性差异及其对应的效果差异。一般按照实际需求选择使用。 + + +

                完整重载

                + +`table.reload(id, options, deep);` + +- 参数 `id` : table 渲染时的 `id` 属性值 +- 参数 `options` : 为基础属性配置项 +- 参数 `deep` 2.6+ : 是否采用深度重载(即重载时始终携带初始时及上一次重载时的参数),默认 false。
                + + + +该方法用于对表格的视图和数据在内的全部重载,所有属性均会参与到重载中,对应的表格会有一个直观的刷新效果。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 完整重载 - 所有属性属性(options)均可参与到重载中 +table.reload('test', { + where: { // 传递数据异步请求时携带的字段 + aaa: '111', + bbb: '222' + //… + }, + height: 1000 // 重设高度 +}); +``` + + +

                仅数据重载 2.7+

                + +`table.reloadData(id, options, deep);` + +- 参数同 `table.reload(id, options, deep)` 参数 + +该方法用于对表格的数据重载,与数据无关的属性不会参与到重载中。因此若只是更新数据,该方法可大幅提升体验。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 数据重载 - 仅与数据相关的属性(options)能参与到重载中 +table.reloadData('test', { + where: {}, // 数据异步请求时携带的字段集 --- 属性设置有效,因属于数据相关属性 + scrollPos: true, // 设定重载数据或切换分页时的滚动条的位置状态 --- 属性设置有效 + // … + height: 2000 // 高度 --- 属性设置无效,因不属于数据相关属性 +}); +``` + +

                获取选中行

                + +`table.checkStatus(id);` +- 参数 `id` : table 渲染时的 `id` 属性值 + +该方法用于获取表格当前选中行相关数据 + +```js +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 获取选中行相关数据 +var tableStatus = table.checkStatus('test'); +console.log(checkStatus.data) // 选中行的数据 +console.log(checkStatus.data.length) // 选中行数量,可作为是否有选中行的条件 +console.log(checkStatus.isAll ) // 表格是否全选 +``` + +

                设置行选中状态 2.8+

                + +`table.setRowChecked(id, opts);` +- 参数 `id` : table 渲染时的 `id` 属性值 +- 参数 `opts` : 设置行选中时的可选属性,详见下表 + +| opts | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| type | 选中方式。可选值: `checkbox,radio` | string | `checkbox` | +| index | 选中行的下标。即数据的所在数组下标(`0` 开头)。
                可设置 `all` 表示全选。 | number
                string | - | +| checked | 选中状态值。 若为 `false` 可取消选中。 | boolean | `true` | +| selectedStyle | 是否仅设置样式状态。若为 `true` 则只标注选中样式,不对数据中的 `LAY_CHECKED` 属性赋值。 | boolean | `false` | + +该方法用于设置行的选中样式及相关的特定属性值 `LAY_CHECKED`。 + +```js +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 设置某行选中 +table.setRowChecked('test', { + index: 0, // 选中行的下标。 0 表示第一行 +}); + +// 取消选中行 +table.setRowChecked('test', { + index: 'all', // 所有行 + checked: false +}); +``` + + +

                获取当前页接口数据

                + +`table.getData(id);` +- 参数 `id` : table 渲染时的 `id` 属性值 + +该方法用于获取表格当前页的数据,它对应的是接口返回的原始数据,不包含 table 组件内部的特定字段。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 获取当前页接口数据 +var data = table.getData('test'); +console.log(data); +``` + + +

                获取表格缓存数据集

                + +`var tableCache = table.cache;` + +`table.cache` 是一段存储当前页表格所有实例的当前页的临时数据,通过 id 作为索引,它包含接口返回的原始数据和组件内部的特定字段。 使用该静态属性可对表格数据进行*读写*操作。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 获取对应 table 的临时数据 +var thisCache = table.cache['test'] || {}; + +// 变更对应 table 的临时数据中的某个字段值 +thisCache.fieldName = 123; +``` + + +

                重置尺寸

                + +`table.resize(id);` +- 参数 `id` : table 渲染时的 `id` 属性值 + +该方法用于重置表格尺寸和结构,其内部完成了*固定列高度平铺、动态分配列宽、容器滚动条宽高补丁* 等适配。它一般用于修复特殊情况下导致的列宽适配异常(如浏览器窗口尺寸改变导致的表格父容器宽度变化),以保证表格尺寸依旧能友好展示。 + + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 重置对应 table 的尺寸,一般写在表格外部容器宽高发生变化后的段落 +table.resize('test'); +``` + + +

                导出数据

                + +`table.exportFile(id, data, opts);` +- 参数 `id` : table 渲染时的 `id` **或** 要导出的数据表头(当 `id` 为 `array` 类型时)。 +- 参数 `data` : 要导出的自定义数据,参数可选。 +- 参数 `opts` 2.7+: 导出数据时的属性可选项,支持: `type,title`。 + +该方法用于外部导出对应 table 的数据和任意自定义数据。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 外部导出对应 table 的数据 +table.exportFile('test'); + +// 导出自定义数据 +table.exportFile(['名字','性别','年龄'], [ + ['张三','男','20'], + ['李四','女','18'], + ['王五','女','19'] +], { + type: 'csv', // 导出的文件格式,支持: csv,xls + title: '导出的文件标题' +}); +``` + +

                获取配置项 2.8+

                + +`table.getOptions(id);` +- 参数 `id` : table 渲染时的 `id` 属性值 + +该方法用于外部获取对应 table 实例的属性配置项。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 获取配置项 +var thisOptions = table.getOptions('test'); +console.log(thisOptions); +``` + +

                设置列显示或隐藏 2.8+

                + +`table.hideCol(id, cols);` +- 参数 `id` : table 渲染时的 `id` 属性值 +- 参数 `cols` : 设置列(表头)显示或隐藏状态 + +该方法用于外部设置对应 table 列的显示与隐藏状态。 + +``` +// 渲染 +table.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 设置对应列的显示或隐藏 +table.hideCol('test', { + field: 'title', // 对应表头的 field 属性值 + hide: true // `true` or `false` +}); +``` + +

                事件

                + +`table.on('event(filter)', callback);` + +- 参数 `event(filter)` 是事件的特定结构。 `event` 为事件名,支持的事件见下表。`filter` 为元素属性 `lay-filter` 对应的值。 +- 参数 `callback` 为事件执行时的回调函数,并返回一个包含各项成员的 `object` 类型的参数。 + +| event | 描述 | +| --- | --- | +| [toolbar](#on-toolbar) | 头部工具栏事件 | +| [sort](#on-sort) | 排序切换事件 | +| [colResized](#on-colResized) 2.8+ | 列拖拽宽度后的事件 | +| [colToggled](#on-colToggled) 2.8+ | 列筛选(显示或隐藏)后的事件 | +| [row / rowDouble](#on-row) | 行单击和双击事件 | +| [rowContextmenu](#on-rowContextmenu) 2.8+ | 行右键菜单事件 | +| [edit](#on-edit) | 单元格编辑事件 | +| [tool](#on-tool) 🔥 | 单元格工具事件。可在该事件中实现行的更新与删除操作。 | +| [checkbox](#on-checkbox) | 复选框事件 | +| [radio](#on-radio) | 单选框事件 | +| [pagebar](#on-pagebar) 2.7+ | 尾部分页栏事件 | + + +

                头部工具栏事件

                + +`table.on('toolbar(filter)', callback);` + +点击头部工具栏区域设定了属性为 `lay-event=""` 的元素时触发。如: + +```html + +
                + + + + + +``` + +

                排序切换事件

                + +`table.on('sort(filter)', callback);` + +点击表头排序时触发,它通常在设置 `autoSort: false ` 基础属性时使用,以呈现后端的排序,而不是默认的前端排序。 + +```js +var table = layui.table; + +// 禁用前端自动排序,以便由服务端直接返回排序好的数据 +table.render({ + elem: '#test', + autoSort: false, // 禁用前端自动排序。 + // … // 其他属性 +}); + +// 触发排序事件 +table.on('sort(test)', function(obj){ + console.log(obj.field); // 当前排序的字段名 + console.log(obj.type); // 当前排序类型:desc(降序)、asc(升序)、null(空对象,默认排序) + console.log(this); // 当前排序的 th 对象 + + // 尽管我们的 table 自带排序功能,但并没有请求服务端。 + // 有些时候,你可能需要根据当前排序的字段,重新向后端发送请求,从而实现服务端排序,如: + table.reload('test', { + initSort: obj, // 记录初始排序,如果不设的话,将无法标记表头的排序状态。 + where: { // 请求参数(注意:这里面的参数可任意定义,并非下面固定的格式) + field: obj.field, // 排序字段 + order: obj.type // 排序方式 + } + }); +}); +``` + + +

                列拖拽宽度后的事件 2.8+

                + +`table.on('colResized(filter)', callback);` + +在表头列分割线拖拽宽度后触发。 + +```js +var table = layui.table; + +// 渲染 +table.render({ + elem: '#test', + // … // 其他属性 +}); + +// 列拖拽宽度后的事件 +table.on('colResized(test)', function(obj){ + var col = obj.col; // 获取当前列属性配置项 + var options = obj.config; // 获取当前表格基础属性配置项 + console.log(obj); // 查看对象所有成员 +}); +``` + +

                列筛选(显示或隐藏)后的事件 2.8+

                + +`table.on('colToggled(filter)', callback);` + +点击头部工具栏右上角的字段筛选列表时触发。 + +```js +var table = layui.table; + +// 渲染 +table.render({ + elem: '#test', + // … // 其他属性 +}); + +// 列筛选(显示或隐藏)后的事件 +table.on('colToggled(test)', function(obj){ + var col = obj.col; // 获取当前列属性配置项 + var options = obj.config; // 获取当前表格基础属性配置项 + console.log(obj); // 查看对象所有成员 +}); +``` + + +

                行单击和双击事件

                + +- 行单击事件:`table.on('row(filter)', callback);` +- 行双击事件:`table.on('rowDouble(filter)', callback);` + +单击或双击 table 行任意区域触发,两者用法相同。 + +```js +var table = layui.table; + +// 渲染 +table.render({ + elem: '#test', + // … // 其他属性 +}); + +// 行单击事件 +table.on('row(test)', function(obj){ + var data = obj.data; // 得到当前行数据 + var index = obj.index; // 得到当前行索引 + var tr = obj.tr; // 得到当前行 元素的 jQuery 对象 + var options = obj.config; // 获取当前表格基础属性配置项 + console.log(obj); // 查看对象所有成员 + + // obj.del() // 删除当前行 + // obj.update(fields, related); // 修改行数据 + // obj.setRowChecked(opts); // 设置行选中状态 +}); +``` + +

                行右键菜单事件 2.8+

                + +`table.on('rowContextmenu(filter)', callback);` + +右键单击行时触发。 + +
                +  
                +
                + +

                单元格编辑事件

                + +`table.on('edit(filter)', callback);` + +单元格被编辑,且值发生改变时触发。 + +```js +var table = layui.table; +var layer = layui.layer; + +// 单元格编辑事件 +table.on('edit(test)', function(obj){ + var field = obj.field; // 得到修改的字段 + var value = obj.value // 得到修改后的值 + var oldValue = obj.oldValue // 得到修改前的值 -- v2.8.0 新增 + var data = obj.data // 得到所在行所有键值 + var col = obj.getCol(); // 得到当前列的表头配置属性 -- v2.8.0 新增 + console.log(obj); // 查看对象所有成员 + + // 值的校验 + if(value.replace(/\s/g, '') === ''){ + layer.tips('值不能为空', this, {tips: 1}); + return obj.reedit(); // 重新编辑 -- v2.8.0 新增 + } + + // 编辑后续操作,如提交更新请求,以完成真实的数据更新 + // … + + // 更新当前缓存数据 + var update = {}; + update[field] = value; + obj.update(update, true); // 参数 true 为 v2.7 新增功能,即同步更新其他包含自定义模板并可能存在关联的列视图 +}); + +``` + + +

                单元格工具事件

                + +- 单元格工具事件「单击触发」: `table.on('tool(filter)', callback);` +- 单元格工具事件「双击触发」: `table.on('toolDouble(filter)', callback);` + +单击或双击单元格中带有 `lay-event=""` 属性的元素时触发。在表格主体的单元格中,经常需要进行很多的动态操作,比如编辑、删除等操作,这些均可以在单元格工具事件中完成。 + +{{! +```html + + + +
                + + +``` +!}} + +

                复选框事件

                + +`table.on('checkbox(filter)', callback);` + +当 table 开启复选框,且点击复选框时触发。 + +```js +var table = layui.table; + +// 复选框事件 +table.on('checkbox(test)', function(obj){ + console.log(obj); // 查看对象所有成员 + console.log(obj.checked); // 当前是否选中状态 + console.log(obj.data); // 选中行的相关数据 + console.log(obj.type); // 若触发的是全选,则为:all;若触发的是单选,则为:one +}); +``` + + +

                单选框事件

                + +`table.on('radio(filter)', callback);` + +当 table 开启单选框,且点击单选框时触发。 + +```js +var table = layui.table; + +// 单选框事件 +table.on('radio(test)', function(obj){ + console.log(obj); // 当前行的一些常用操作集合 + console.log(obj.checked); // 当前是否选中状态 + console.log(obj.data); // 选中行的相关数据 +}); +``` + + +

                尾部分页栏事件 2.7+

                + +`table.on('pagebar(filter)', callback);` + +点击尾部分页栏自定义模板中属性为 `lay-event=""` 的元素时触发。用法跟 toolbar 完全一致。 + +```js +var table = layui.table; + +// 渲染 +table.render({ + elem: '#demo', + pagebar: '#pagebarDemo' // 分页栏模板所在的选择器 + // … // 其他参数 +}); + +// 分页栏事件 +table.on('pagebar(test)', function(obj){ + console.log(obj); // 查看对象所有成员 + console.log(obj.config); // 当前实例的配置信息 + console.log(obj.event); // 属性 lay-event 对应的值 +}); +``` + +## 小贴士 + +若表头数量太多及每页呈现的数据量太大,为了性能考虑,建议采用 [静态表格](#demo-static) 渲染,配合 [laypage](../laypage/#options) 组件实现分页。 + + + + + diff --git a/docs/timeline/index.md b/docs/timeline/index.md new file mode 100644 index 00000000..841fcc04 --- /dev/null +++ b/docs/timeline/index.md @@ -0,0 +1,99 @@ +--- +title: 时间线 timeline +toc: true +--- + +# 时间线 + +> 时间线 `timeline` 用于将时间抽象到二维平面,垂直呈现一段从过去到现在的故事。 + +

                常规时间线

                + +
                +  
                +
                + +时间线上的图标可任意定义,右侧内容区域可自由填充。 + +

                简约时间线

                + +
                +  
                +
                + +透过这示例,见证 Layui 的起起伏伏。 \ No newline at end of file diff --git a/docs/transfer/detail/demo.md b/docs/transfer/detail/demo.md new file mode 100644 index 00000000..6406f4a5 --- /dev/null +++ b/docs/transfer/detail/demo.md @@ -0,0 +1,262 @@ +
                +  
                +
                + +

                定义标题及数据源

                + +
                +  
                +
                + +

                初始右侧数据

                + +
                +  
                +
                + +

                显示搜索框

                + +
                +  
                +
                + +

                数据格式解析

                + +
                +  
                +
                + +

                穿梭时的回调

                + +
                +  
                +
                + +

                实例调用

                + +
                +  
                +
                \ No newline at end of file diff --git a/docs/transfer/detail/options.data.md b/docs/transfer/detail/options.data.md new file mode 100644 index 00000000..a67f2e2e --- /dev/null +++ b/docs/transfer/detail/options.data.md @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                title + +数据标题 + +string-
                value + +数据值 + +string-
                checked + +是否选中状态 + +boolean + +`false` + +
                disabled + +是否禁用状态 + +boolean + +`false` + +
                \ No newline at end of file diff --git a/docs/transfer/detail/options.md b/docs/transfer/detail/options.md new file mode 100644 index 00000000..356ab04f --- /dev/null +++ b/docs/transfer/detail/options.md @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
                title + +穿梭框左右面板头部标题 + +array + + + +
                data + +穿梭框的数据源。格式详见:[#data 格式](#options.data) + +array-
                value + +初始选中的数据(右侧列表) + +array-
                id + +设置实例唯一索引,用于其他方法传参使用。 + +string-
                showSearch + +是否开启搜索。支持以下可选值: + +- `false` 不开启搜索(默认) +- `true` 开启搜索,且匹配时不区分大小写 +- `cs` 开启搜索,且匹配时区分大小写 2.7+ + +boolean
                string
                + +`false` + +
                width + +定义左右穿梭框宽度 + +number + +`200` + +
                height + +定义左右穿梭框高度 + +number + +`340` + +
                text + +自定义默认文本, `object` 类型。支持以下属性: + +``` +text: { + none: '无数据', // 没有数据时的文案 + searchNone: '无匹配数据' // 搜索无匹配数据时的文案 +} +``` + +
                + + +
                + +[回调函数](#options.callback) + +
                + +
                onchange + +左右穿梭时的回调函数。返回的参数如下: + +``` +onchange: function(data, index){ + console.log(data); // 得到当前被穿梭的数据 + console.log(index); // 如果数据来自左边,index 为 0,否则为 1 +} +``` + +boolean + +`false` + +
                + +[parseData](#options.parseData) + + + +
                +数据格式解析的回调函数,用于将返回的任意数据格式解析成 transfer 组件规定的 data 格式 +
                + +``` +transfer.render({ + elem: '', + data: [ // 任意数据 + {"id": "1", "name": "李白"} + ,{"id": "2", "name": "杜甫"} + ,{"id": "3", "name": "贤心"} + ], + parseData: function(res){ // 解析成规定的 data 格式 + return { + "value": res.id, // 数据值 + "title": res.name, // 数据标题 + "disabled": res.disabled, // 是否禁用 + "checked": res.checked // 是否选中 + }; + } +}); +``` + +
                \ No newline at end of file diff --git a/docs/transfer/index.md b/docs/transfer/index.md new file mode 100644 index 00000000..4a76178d --- /dev/null +++ b/docs/transfer/index.md @@ -0,0 +1,102 @@ +--- +title: 穿梭框组件 transfer +toc: true +--- + +# 穿梭框组件 + +> 穿梭框组件 `transfer` 以左右栏 `checkbox` 列表为表现形式,可对列表进行选择并移动到另一栏。 + +

                示例

                + +
                +{{- d.include("docs/transfer/detail/demo.md") }} +
                + +

                API

                + +| API | 描述 | +| --- | --- | +| var transfer = layui.transfer | 获得 `transfer` 模块。 | +| [transfer.render(options)](#render) | transfer 组件渲染,核心方法。 | +| [transfer.reload(id, options)](#reload) | 重载实例 | +| [transfer.getData(id)](#getData) | 获得右侧数据 | +| [transfer.set(options)](#set) | 设定全局默认属性 | + +

                渲染

                + +`transfer.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +

                属性

                + +
                +{{- d.include("docs/transfer/detail/options.md") }} +
                + +

                data 格式

                + +
                +{{- d.include("docs/transfer/detail/options.data.md") }} +
                + +

                重载

                + +`transfer.reload(id, options);` + +- 参数 `id` : 对应渲染时定义的 `id` 属性值 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +``` +var transfer = layui.transfer; + +// 渲染 +transfer.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 重载 +transfer.reload('test', { // options + title: ['title 1', 'title 2'] +}); +``` + +

                获得右侧数据

                + +`transfer.getData(id);` + +- 参数 `id` : 对应渲染时定义的 `id` 属性值 + +穿梭框的右侧数据通常被认为是选中数据,因此你需要得到它,并进行提交等操作。 + +``` +var transfer = layui.transfer; + +// 渲染 +transfer.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 获得右侧数据 +var getData = transfer.getData('test'); +``` + + +

                设置全局默认属性

                + +`transfer.set(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法对所有的 `transfer` 实例有效,设置的属性优先级低于 `transfer.render(options)` + +``` +// 设置 transfer 全局默认属性 +transfer.set({ + height: 'auto', // 所有穿梭框默认高度为自动 + // … +}); +``` \ No newline at end of file diff --git a/docs/tree/detail/demo.md b/docs/tree/detail/demo.md new file mode 100644 index 00000000..e7ae8489 --- /dev/null +++ b/docs/tree/detail/demo.md @@ -0,0 +1,169 @@ +

                综合演示

                + + +
                +  
                +
                + +

                无连接线风格

                + +
                +  
                +
                + +

                仅图标控制伸缩

                + +
                +  
                +
                + +

                手风琴模式

                + +
                +  
                +
                + +

                开启复选框

                + +
                +  
                +
                \ No newline at end of file diff --git a/docs/tree/detail/options.data.md b/docs/tree/detail/options.data.md new file mode 100644 index 00000000..a7fce954 --- /dev/null +++ b/docs/tree/detail/options.data.md @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                title + +节点标题 + +string-
                id + +节点唯一索引值,用于对指定节点进行各类操作 + +string-
                field + +节点字段名 + +string-
                children + +子节点。支持设定属性选项同父节点 + +array-
                href + +点击节点弹出新窗口对应的 url。需开启 isJump 基础属性才有效。 + +string-
                spread + +节点是否初始展开 + +boolean + +`false` + +
                checked + +节点是否初始为选中状态。需开启 `showCheckbox` 基础属性时有效。 + +boolean + +`false` + +
                disabled + +节点是否为禁用状态 + +boolean + +`false` + +
                \ No newline at end of file diff --git a/docs/tree/detail/options.md b/docs/tree/detail/options.md new file mode 100644 index 00000000..6c1cbc1a --- /dev/null +++ b/docs/tree/detail/options.md @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                elem + +绑定元素选择器 + +string/DOM-
                data + +`tree` 的数据源。其格式详见:[#data 格式](#options.data) + +array-
                id + +设置实例唯一索引,用于其他方法传参使用。 + +string-
                showCheckbox + +是否显示复选框 + +boolean + +`false` + +
                edit + +是否开启节点的右侧操作图标。支持以下可选值: + +- 若为 `true`,则默认显示「改删」图标 +- 若为 数组,则可自由配置操作图标,如:`edit:['add', 'update', 'del']` ,且图标将按照数组的顺序显示。 + +boolean
                array
                + +`false` + +
                accordion + +是否开启手风琴模式 + +boolean + +`false` + +
                onlyIconControl + +是否仅允许节点左侧图标控制展开伸缩。 + +- 默认为 `false`,即点击节点本身也可控制伸缩 +- 若值为 `true`,则只能通过节点左侧图标来展开收缩 + +boolean + +`false` + +
                isJump + +是否允许点击节点时弹出新窗口跳转。若为 `true`,则需在对应的 data 中设定 href 属性(url 格式) + +boolean + +`false` + +
                showLine + +是否开启节点连接线。若设为 `false`,则节点左侧出现三角图标。 + +boolean + +`true` + +
                text + +自定义默认文本,`object` 类型。支持以下属性: + +``` +text: { + defaultNodeName: '未命名', // 节点默认名称 + none: '无数据' // 数据为空时的提示文本 +} +``` + +
                + + +
                + +[回调函数](#options.callback) + +
                + +
                click + +
                + 节点被点击的回调函数。返回的参数如下: +
                + +``` +click: function(obj){ + console.log(obj.data); // 得到当前点击的节点数据 + console.log(obj.state); // 得到当前节点的展开状态:open、close、normal + console.log(obj.elem); // 得到当前节点元素 + + console.log(obj.data.children); // 当前节点下是否有子节点 +} +``` + +
                oncheck + +
                + 点击复选框时的回调函数,返回的参数如下: +
                + +``` +oncheck: function(obj){ + console.log(obj.data); // 得到当前点击的节点数据 + console.log(obj.checked); // 节点是否被选中 + console.log(obj.elem); // 得到当前节点元素 +} +``` + +
                operate + +
                + 点击节点的右侧操作图标的回调函数,返回的参数如下: +
                + +``` +operate: function(obj){ + var type = obj.type; // 得到操作类型:add、edit、del + var data = obj.data; // 得到当前节点的数据 + var elem = obj.elem; // 得到当前节点元素 + + // Ajax 操作 + var id = data.id; // 得到节点索引 + if(type === 'add'){ // 增加节点 + //返回 key 值 + return 123; + } else if(type === 'update'){ // 修改节点 + console.log(elem.find('.layui-tree-txt').html()); // 得到修改后的内容 + } else if(type === 'del'){ // 删除节点 + // … + }; +} +``` + +
                \ No newline at end of file diff --git a/docs/tree/index.md b/docs/tree/index.md new file mode 100644 index 00000000..bd8b8a41 --- /dev/null +++ b/docs/tree/index.md @@ -0,0 +1,107 @@ +--- +title: 树组件 tree +toc: true +--- + +# 树组件 + +> 树组件 `tree` 是以树形为结构的菜单伸缩型组件,*当前版本中,`tree`主要用于树菜单展示,交互性相对较弱。* + +

                示例

                + +
                +{{- d.include("docs/tree/detail/demo.md") }} +
                + +

                API

                + +| API | 描述 | +| --- | --- | +| var tree = layui.tree | 获得 `tree` 模块。 | +| [tree.render(options)](#render) | tree 组件渲染,核心方法。 | +| [tree.getChecked(id)](#getChecked) | 获取选中的节点数据 | +| [tree.setChecked(id, idArr)](#setChecked) | 设置对应 id 的节点选中 | +| [tree.reload(id, options)](#reload) | tree 实例重载 | + +

                渲染

                + +`tree.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +

                属性

                + +
                +{{- d.include("docs/tree/detail/options.md") }} +
                + +

                data 格式

                + +
                +{{- d.include("docs/tree/detail/options.data.md") }} +
                + + +

                获取选中的节点数据

                + +`tree.getChecked(id);` + +- 参数 `id` : 对应 tree 渲染时定义的 id 属性值 + +``` +var tree = layui.tree; + +// 渲染 +tree.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 获取选中的节点数据 +var checkData = tree.getChecked('test'); +``` + +

                设置对应 id 的节点选中

                + +`tree.setChecked(id, idArr);` + +- 参数 `id` : 对应 tree 渲染时定义的 id 属性值 +- 参数 `idArr` : 对应 tree 渲染时的 data 中的 id 属性值。数组格式,可设置多个。 + +``` +var tree = layui.tree; + +// 渲染 +tree.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 设置对应 id 的节点选中 +tree.setChecked('test', [1, 3]); // 批量勾选 id 为 1,3 的节点 +``` + +

                重载

                + +`tree.reload(id, idArr);` + +- 参数 `id` : 对应 tree 渲染时定义的 id 属性值 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +``` +var tree = layui.tree; + +// 渲染 +tree.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); + +// 重载 +tree.reload('test', { // options + data: [] +}); +``` \ No newline at end of file diff --git a/docs/treeTable/detail/demo.md b/docs/treeTable/detail/demo.md new file mode 100644 index 00000000..564a954e --- /dev/null +++ b/docs/treeTable/detail/demo.md @@ -0,0 +1,17 @@ +

                综合演示

                + +
                +  
                +
                + + + + diff --git a/docs/treeTable/detail/options.md b/docs/treeTable/detail/options.md new file mode 100644 index 00000000..28032243 --- /dev/null +++ b/docs/treeTable/detail/options.md @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述
                tree + +treeTable 组件的特定属性集,包含以下「子成员集」: + +| 属性 | 描述 | +| --- | --- | +| [customName](#options.tree.customName) | AAA | +| [view](#options.tree.view) | AAA | +| [data](#options.tree.data) | AAA | +| [async](#options.tree.async) | AAA | +| [callback](#options.tree.callback) | AAA | + +用法如下: + +```js +treeTable.render({ + elem: '', + tree: { // treeTable 特定属性集 + customName: {}, + data: {}, + view: {}, + async: {}, + callback: {} + }, + // 其他 table 属性 +}); +```` + +
                tree.customName + +
                + +自定义属性名的集合,包含以下成员: + +
                + +| 属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| children | 自定义「子节点集合」的属性名 | string | `children` | +| isParent | 自定义「是否属于父节点」的属性名 | string | `isParent` | +| name | 自定义「节点」属性名 | string | `name` | +| id | 自定义「节点索引」属性名 | string | `id` | +| pid | 自定义「父节点索引」属性名 | string | `pid` | +| rootIid | 自定义「根节点索引」属性名 | string | - | + +
                tree.view + +
                + +视图相关的属性集合,包含以下成员: + +
                + +| 属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| indent | 层级缩进量 | number | `14` | +| flexIconClose | 关闭时的折叠图标 | string | - | +| flexIconOpen | 打开时的折叠图标 | string | - | +| showIcon | 是否显示节点图标 | boolean | `true` | +| icon | 自定义节点图标。若设置了该属性或数据中有该字段信息,不管打开还是关闭都以这个图标的值为准 | string | - | +| iconClose | 自定义关闭时的节点图标 | string | - | +| iconOpen | 自定义打开时的节点图标 | string | - | +| iconLeaf | 叶子节点的图标 | string | - | +| showFlexIconIfNotParent | 若非父节点时,是否显示折叠图标 | boolean | `false` | +| dblClickExpand | 双击节点时,是否自动展开父节点 | boolean | `true` | + +
                tree.data + +
                + +数据相关的属性集合,包含以下成员: + +
                + +| 属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| isSimpleData | 是否简单数据模式 | boolean | `false` | + +
                tree.async + +
                + +异步相关的属性集合,包含以下成员: + +
                + +| 属性 | 描述 | 类型 | 默认值 | +| --- | --- | --- | --- | +| enable | 是否开启异步加载模式。只有开启时 `async` 的其他属性配置才有效。 **注意:** 异步加载子节点不应跟 `simpleData` 同时开启,可以是 `url+simpleData` 的方式,获取完整的简单数据进行转换。若开启异步加载模式,即表示按需异步加载子节点。 | boolean | `false` | +| url | 异步加载的接口,可以根据需要设置与顶层接口不同的接口,若相同可不设置该属性 | string | - | +| type | 请求的接口类型,设置可缺省同上 | string | - | +| contentType | 提交参数的数据类型,设置可缺省同上 | string | - | +| headers | 提交请求头,设置可缺省同上 | object | - | +| where | 提交参数的数据,设置可缺省同 | object | - | +| autoParam | 自动参数,可以根据配置项以及当前节点的数据传参,如: `['type', 'age=age', 'pId=id']` ,那么其请求参数将包含: `{type: '父节点 type', age: '父节点 age', pId: '父节点 id'}` | array | - | + +
                tree.callback + +
                + +事件回调相关的属性集合,包含以下成员: + +
                + +| 属性 | 描述 | +| --- | --- | +| beforeExpand | 展开前回调函数。可以在展开或者关闭之前调用,传入当前表格 `id` ,当前操作的行数据以及要展开或关闭的状态,若回调返回 `false` 则取消该次操作。 返回的参数包含: `function(tableId, trData, expandFlag){ console.log(arguments); }` | +| onExpand | 展开或关闭后的回调函数,返回参数同 `beforeExpand` | + +
                \ No newline at end of file diff --git a/docs/treeTable/examples/demo.md b/docs/treeTable/examples/demo.md new file mode 100644 index 00000000..13db4580 --- /dev/null +++ b/docs/treeTable/examples/demo.md @@ -0,0 +1,120 @@ +
                + + + + + + \ No newline at end of file diff --git a/docs/treeTable/index.md b/docs/treeTable/index.md new file mode 100644 index 00000000..6aff54ea --- /dev/null +++ b/docs/treeTable/index.md @@ -0,0 +1,294 @@ +--- +title: 树表组件 treeTable +toc: true +--- + +# 树表组件 2.8+ + +> 树表组件 `treeTable` 是基于 `table` 组件延伸的树形表格组件,支持常见的树组件功能。 + +

                示例

                + +以下所有示例中演示的数据均为「静态模拟数据」,实际使用时换成您的真实接口即可。 + +
                +{{- d.include("docs/treeTable/detail/demo.md") }} +
                + +

                + +

                API

                + +`table` 组件的所有 `API` 均适用于 `treeTable` 组件。在此基础上,`treeTable` 还专门提供了以下方法: + +| API | 描述 | +| --- | --- | +| var treeTable = layui.treeTable; | 获得 `treeTable` 模块。 | +| [treeTable.render(options)](#render) | treeTable 组件渲染,核心方法。 | +| [treeTable.reload(id, options)](#reload) | 树表完整重载。 | +| [treeTable.reloadData(id, options)](#reload) | 树表数据重载。 | +| [treeTable.getData(id, isSimpleData)](#getData) | 获取树表数据。 | +| [treeTable.getNodeDataByIndex(id, index)](#getNodeDataByIndex) | 通过行元素对应的 `data-index` 属性获取对应行数据。 | +| [treeTable.updateNode(id, index, data)](#updateNode) | 更新行数据。 | +| [treeTable.removeNode(id, index)](#removeNode) | 删除行记录。 | +| [treeTable.addNodes(id, opts)](#addNodes) | 新增行记录。 | +| [treeTable.expandNode(id, opts)](#expandNode) | 展开或关闭节点。 | +| [treeTable.expandAll(id, expandFlag)](#expandAll) | 展开或关闭全部节点(目前只支持关闭全部)。 | +| [treeTable.setRowChecked(id, opts)](#setRowChecked) | 设置行选中状态 | +| [treeTable.checkAllNodes(id, checked)](#checkAllNodes) | 全选或取消全选 | +| [treeTable.on('event(filter)', callback)](#on) | treeTable 相关事件 | + +

                渲染

                + +`treeTable.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该组件渲染的使用方式与 `table` 组件完全相同。 + +

                属性

                + +`table` 组件的所有基础属性均适用于 `treeTable` 组件。在此基础上,`treeTable` 还专门提供了 `tree` 属性集: + +
                +{{- d.include("docs/treeTable/detail/options.md") }} +
                + +

                重载

                + +即对一段已经渲染好的表格重新设置属性并渲染,可分为以下几种重载方式: + +| 重载方式 | API | +| --- | --- | +| 完整重载 | treeTable.reload(id, options) | +| 仅数据重载 | treeTable.reloadData(id, options) | + +- 参数 `id` : treeTable 渲染时的 id 属性值 +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +使用方式与 `table` 组件完全相同,具体用法可参考:[table 重载](../table/#reload) + + +

                获取树表数据

                + +`treeTable.getData(id, isSimpleData);` + +- 参数 `id` : treeTable 渲染时的 id 属性值 +- 参数 `isSimpleData` : 是否为简单数据,为 `true` 时返回简单数据结构的数据,否则则为带层级的数据 + +该方法用于获取表格当前页的全部数据,它对应的是接口返回的原始数据,不包含 `treeTable` 组件内部的特定字段。 + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 获取当前页接口的树表数据 +var data = treeTable.getData('test'); // 获取第一行的数据 +console.log(data); +``` + + +

                获取树表对应下标的数据

                + +`treeTable.getNodeDataByIndex(id, index);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `index` : 节点对应的行下标,一般可通过 `` 元素的 `data-index` 属性获得 + +该方法用于获取表格当前页对应下表的数据,返回的数据格式同 `treeTable.getData()` 方法。 + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 获取当前页接口数据 +var data = treeTable.getNodeDataByIndex('test', 0); // 获取第一行的数据 +console.log(data); +``` + +

                更新行数据

                + +`treeTable.updateNode(id, index, data);` + +- 参数 `id` : treeTable 渲染时的 id 属性值 +- 参数 `index` : 节点对应的行下标,一般可通过 `` 元素的 `data-index` 属性获得 +- 参数 `data` : 更新的数据项,可包含要更新的各种字段 + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 更新行数据 +var data = treeTable.updateNode('test', 0, { // 更新第一行的数据 + title: '123' +}); +``` + +

                删除行记录

                + +`treeTable.removeNode(id, index);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `index/node` : 要删除的节点数据,也可以是节点对应的行下标( `data-index`) + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 删除行记录 +treeTable.removeNode('test', 0); // 删除第一行 +``` + + +

                新增行数据

                + +`treeTable.addNodes(id, opts);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `opts` : 该方法可支持的可选属性项,详见下表: + +| opts | 描述 | 类型 | 默认值 | +| --- | --- | -- | --- | +| parentIndex | 父节点数据下标 | number | - | +| index | 节点对应的行下标。若为 `-1` 表示插入到最后,否则则插入到对应下标。 | number | `-1`| +| data | 新增的节点数据项。若新增的是多个节点,则用数组的形式。若只有一个节点可以是普通对象形式 | object | - | +| focus | 是否聚焦到新增的节点。若存在多个,则聚焦到第一个新增的节点 | boolean | `false` | + +该方法可返回新增后的数据项。详细用法可参考:[#示例](#examples) + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 新增行数据 +treeTable.addNodes('test', { + parentIndex: 0, // 一般在 tool 事件中,可通过对应数据项中的 `LAY_DATA_INDEX` 特定属性获得 + index: 1, + data: { + title: '新节点-1' + } +}); +``` + + +

                展开或关闭节点

                + +`treeTable.expandNode(id, opts);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `opts` : 该方法可支持的可选属性项,详见下表: + +| opts | 描述 | 类型 | 默认值 | +| --- | --- | -- | --- | +| index | 节点对应的行下标,一般可通过 `` 元素的 `data-index` 属性获得 | number | - | +| expandFlag | 设置展开或关闭状态,若为 `true` 则表示展开;`false` 则为关闭;`null` 则表示切换 | boolean/null | - | +| inherit | 子节点是否继承父节点的展开或关闭状态,`expandFlag` 属性必须为 `boolean` 型时才有效。 | boolean | `false` | +| callbackFlag | 是否触发事件(`beforeExpand,onExpand`) | boolean | `false` | + +若操作的节点不是一个父节点,则返回 `null` ,否则返回操作之后的折叠状态。 + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 展开或关闭对应节点 +treeTable.expandNode('test', { + index: 0, // 第一行 + expandFlag: true // 展开 +}); +``` + +

                展开或关闭全部节点

                + +`treeTable.expandAll(id, expandFlag);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `expandFlag` : 折叠状态。 `true` 展开;`false` 关闭 + +目前只支持关闭全部节点 + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 展开或关闭全部节点 +treeTable.expandAll('test', false); // 关闭全部节点 +``` + +

                设置行选中状态

                + +`treeTable.setRowChecked(id, opts);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `opts` : 该方法可支持的可选属性项,详见下表: + +| opts | 描述 | 类型 | 默认值 | +| --- | --- | -- | --- | +| index | 要设置选中状态的行下标或行数据 | number/object | - | +| checked | 选中状态。`true` 选中;`false` 取消选中;`null` 切换。 其中,所为 `radio` 框,则不支持 `null`(切换)。 | boolean | DDD | +| callbackFlag | 是否触发事件,若为 `true`,则 `checked: false` 无效。其对应的事件跟 `table` 的 `radio,checkbox` 事件用法一样 | boolean | DDD | + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 勾选或取消勾选单个节点 +treeTable.setRowChecked('test', { + index: 0, + checked: true // 选中 +}); +``` + +

                设置全选或取消全选

                + +`treeTable.checkAllNodes(id, checked);` + +- 参数 `id` : treeTable 渲染时的 `id` 属性值 +- 参数 `checked` : 选中状态。`true` 选中;`false` 取消选中;`null` 复选框模式时的切换。 + +```js +// 渲染 +treeTable.render({ + elem: '', // 绑定元素选择器 + id: 'test', // 自定义 id 索引 + // 其他属性 … +}); +// 勾选或取消勾选单个节点 +treeTable.checkAllNodes('test', true); // 全选 +``` + + +

                事件

                + +`treeTable.on('event(filter)', callback);` + +`treeTable` 事件继承于 `table` 事件,具体使用方法可参考:[#table 事件](../table/#table.on) + + +## 贴士 + +> `treeTable` 基于 `table` 组件扩展而来,因此,熟练运用 `treeTable` 的前提是熟悉 `table` 组件。 亦可通过 `table` 提供的基础 `API` 操作 `treeTable` 组件,但 `treeTable` 无法操作 `table`。 \ No newline at end of file diff --git a/docs/upload/detail/demo.md b/docs/upload/detail/demo.md new file mode 100644 index 00000000..681ed60f --- /dev/null +++ b/docs/upload/detail/demo.md @@ -0,0 +1,62 @@ +

                图片上传

                + +
                +  
                +
                + +

                制作多文件上传表格

                + +
                +  
                +
                + + +

                过滤文件类型

                + +
                +  
                +
                + + +

                限制文件大小

                + +
                +  
                +
                + +

                选择后手动上传

                + +
                +  
                +
                + + +

                拖拽上传

                + +
                +  
                +
                + + +

                绑定原始文件域

                + +
                +  
                +
                \ No newline at end of file diff --git a/docs/upload/detail/options.md b/docs/upload/detail/options.md new file mode 100644 index 00000000..315d264c --- /dev/null +++ b/docs/upload/detail/options.md @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                属性名描述类型默认值
                elem + +绑定元素选择器或 DOM 对象 + +string/DOM-
                url + +上传接口 + +string-
                field + +文件域的字段名 + +string + +`file` + +
                + +[data](#options.data) + + + +
                +传递给上传接口的额外参数,支持静态赋值和动态赋值两种写法。 +
                + +- 静态赋值 : + +``` +data: { + id: '123' +} +``` + +- 动态赋值 : + +``` +data: { + id: function(){ + return $('#id').val(); + } +} +``` + +
                object-
                headers + +上传接口的请求头。如 `headers: {token: 'abc123'}` + +object-
                + +[accept](#options.accept) + + + +
                +指定允许上传时校验的文件类型。可选值有: +
                + +- `images` 图片类型 +- `file` 所有文件类型 +- `video` 视频类型 +- `audio` 音频类型 + +
                string + +`images` + +
                acceptMime + +规定打开系统的文件选择框时,筛选出的文件类型,多个 `MIME` 类型可用逗号隔开。示例: + +``` +acceptMime: 'image/*'` // 筛选所有图片类型 +acceptMime: 'image/jpeg, image/png` // 只筛选 jpg,png 格式图片 +``` + +更多可选值参考: MIME 类型 + +string-
                + +[exts](#options.exts) + + + +
                +允许上传的文件后缀。一般结合 `accept` 属性来设定。 +
                + +- 假设 `accept: 'file'` 类型时,那么设置 `exts: 'zip|rar|7z'` 即代表只允许上传压缩格式的文件。 +- 默认为常见图片后缀,即 `exts: 'jpg|png|gif|bmp|jpeg'` + +
                string + +见左 + +
                auto + +是否选完文件后自动上传。若为 `false`,则需设置 `bindAction` 属性来指向其它按钮提交上传。参考:[#示例](#demo-auto) + +boolean + +`true` + +
                bindAction + +设置触发上传的元素选择器或 DOM 对象。 +
                一般配合 `auto: false` 来使用。详细用法参考:[#示例](#demo-auto) + +
                string/DOM-
                force 2.6.9+ + +规定强制返回的数据格式。 + +- 若值为 'json',则强制校验 JSON 数据格式 + +string + +`null` + +
                size + +设置文件最大可允许上传的大小,单位 `KB` 。默认不限制。 +
                不支持 `ie8/9` + +
                number + +`0` + +
                multiple + +是否允许多文件上传。不支持 `ie8/9` + +boolean + +`false` + +
                number + +同时可上传的文件数量,一般当 `multiple: true` 时使用。 + +number-
                drag + +是否接受拖拽的文件上传。 + +boolean + +`true` + +
                + + +
                + +[回调函数](#options.callback) + +
                + +
                + +[choose](#options.choose) + + + +
                +选择文件后的回调函数。返回的参数如下 +
                + +``` +choose: function(obj){ + // 将每次选择的文件追加到文件队列 + var files = obj.pushFile(); + + // 预读本地文件,如果是多文件,则会遍历。(不支持ie8/9) + obj.preview(function(index, file, result){ + console.log(index); // 得到文件索引 + console.log(file); // 得到文件对象 + console.log(result); // 得到文件base64编码,比如图片 + + // obj.resetFile(index, file, '123.jpg'); // 重命名文件名 + + // 这里还可以做一些 append 文件列表 DOM 的操作 + + // obj.upload(index, file); // 对上传失败的单个文件重新上传,一般在某个事件中使用 + // delete files[index]; //删除列表中对应的文件,一般在某个事件中使用 + }); +} +``` + +详细用法参考:[#示例](#demo-files-table) + +
                + +[before](#options.before) + + + +
                +文件提交上传前的回调函数。返回的参数同 choose +
                + +``` +before: function(obj){ // obj 参数同 choose + layer.load(); // 上传 loading + + // 若返回 false,则表明阻止上传 + /* + if(true){ + return false; + } + */ +} +``` + +
                + +[progress](#option.progress) + + + +
                +执行上传请求后的回调函数。返回的参数如下: +
                + +``` +progress: progress: function(n, elem, res, index){ + var percent = n + '%' // 获取进度百分比 + element.progress('demo', percent); // 可配合 layui 进度条元素使用 + + // 得到当前触发的元素 DOM 对象 + console.log(elem); // 可通过该元素定义的属性值匹配到对应的进度条。 + console.log(res); // 得到 progress 响应信息 + + console.log(index); // 得到当前上传文件的索引,多文件上传时的进度条控制 + element.progress('demo-'+ index, n + '%'); // 进度条 +} +``` + +详细用法参考:[#示例](#examples) +
                + +[done](#option.done) + + + +
                +执行单次文件上传请求后的回调函数。返回的参数如下: +
                + +``` +done: function(res, index, upload){ + // 假设 `code: 0` 代表上传成功 + if(res.code == 0){ + // do something // 比如将 res 返回的图片链接保存到隐藏域 + } + + // 获取当前触发上传的元素,一般用于 elem 绑定 class 的情况 + var item = this.item; + + // … +} +``` + +详细用法参考:[#示例](#examples) + +
                + +[allDone](#option.allDone) + + + +
                + +当开启多文件 (`multiple: true` ) 且所有文件均上传完毕后的状态回调函数。 + +
                + +``` +allDone: function(obj){ + console.log(obj.total); // 上传的文件总数 + console.log(obj.successful); // 上传成功的文件数 + console.log(obj.failed); // 上传失败的文件数 +} +``` + +
                error + +执行上传请求出现异常的回调(一般为网络异常、URL 404等)。返回两个参数如下: + +``` +error: function(index, upload){ + console.log(index); // 当前文件的索引 + // upload(); 重新上传的方法 +} +``` + +
                \ No newline at end of file diff --git a/docs/upload/examples/accept.md b/docs/upload/examples/accept.md new file mode 100644 index 00000000..797f68af --- /dev/null +++ b/docs/upload/examples/accept.md @@ -0,0 +1,39 @@ +
                + + + + +
                + + \ No newline at end of file diff --git a/docs/upload/examples/auto.md b/docs/upload/examples/auto.md new file mode 100644 index 00000000..1ad5d74d --- /dev/null +++ b/docs/upload/examples/auto.md @@ -0,0 +1,23 @@ +
                + + +
                + + \ No newline at end of file diff --git a/docs/upload/examples/drag.md b/docs/upload/examples/drag.md new file mode 100644 index 00000000..24e39971 --- /dev/null +++ b/docs/upload/examples/drag.md @@ -0,0 +1,26 @@ +
                + +
                点击上传,或将文件拖拽到此处
                +
                +
                上传成功后渲染 +
                +
                + + \ No newline at end of file diff --git a/docs/upload/examples/files.table.md b/docs/upload/examples/files.table.md new file mode 100644 index 00000000..2654801e --- /dev/null +++ b/docs/upload/examples/files.table.md @@ -0,0 +1,98 @@ +
                + +
                + + + + + + + + + + + + + + +
                文件名大小上传进度操作
                +
                + +
                + + \ No newline at end of file diff --git a/docs/upload/examples/form.file.md b/docs/upload/examples/form.file.md new file mode 100644 index 00000000..91d791a6 --- /dev/null +++ b/docs/upload/examples/form.file.md @@ -0,0 +1,18 @@ + + + \ No newline at end of file diff --git a/docs/upload/examples/image.md b/docs/upload/examples/image.md new file mode 100644 index 00000000..20f67bf1 --- /dev/null +++ b/docs/upload/examples/image.md @@ -0,0 +1,86 @@ + +
                +
                + +
                +
                +
                +
                +
                +
                +
                +
                + +
                + 预览图: +
                +
                +
                + + \ No newline at end of file diff --git a/docs/upload/index.md b/docs/upload/index.md new file mode 100644 index 00000000..e3bfd364 --- /dev/null +++ b/docs/upload/index.md @@ -0,0 +1,124 @@ +--- +title: 上传组件 upload +toc: true +--- + +# 上传组件 + +> 上传组件 `upload` 是用于处理文件上传的前端交互逻辑,可以更好地协助后端实现文件从本地到服务端上传的对接。 + +

                示例

                + +以下示例的部分上传接口由第三方网站 `https://httpbin.org` 提供,它可以模拟各类 HTTP 请求。若未配置上传接口的,每次上传都会报「请求上传接口出现异常」的提示,这属于正常现象。 + +
                +{{- d.include("docs/upload/detail/demo.md") }} +
                + +

                + +

                API

                + +| API | 描述 | +| --- | --- | +| var upload = layui.upload | 获得 `upload` 模块。 | +| [var inst = upload.render(options)](#render) | upload 组件渲染,核心方法。 | +| [inst.upload()](#upload) | 对当前实例提交上传 | +| [inst.reload(options)](#reload) | 对当前实例进行重载 | +| inst.config | 获得当前实例的属性配置项 | + +

                渲染

                + +`upload.render(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) +
                注 : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 + +``` + + + + + +``` + +该方法返回一个实例对象,包含操作当前实例的相关方法成员。 + +``` +var inst = upload.render(options); +console.log(inst); // 得到当前实例对象 +``` + +

                提交上传

                + +`inst.upload();` + +- 无需传递参数 + +文件在进行选择后,会自动提交上传。而若文件*上传失败*,则可以使用该方法来重新上传, + +``` +// 渲染 +var inst = upload.render({ + elem: '#id', + error: function(){ // 上传失败的回调 + // 当上传失败时,可在此处生成「重新上传」按钮,并执行该方法重新触发上传提交 + /* + $('#btn').on('click', function(){ + inst.upload(); + }) + */ + } + // … +}); +``` + +

                重载

                + +`inst.reload(options);` + +- 参数 `options` : 基础属性配置项。[#详见属性](#options) + +该方法用于对当前的上传实例进行完整重载,所有属性均可参与到重载中。 + +``` +// 渲染 +var inst = upload.render({ + elem: '#id', + // … +}); + +// 重载 +inst.reload({ + field: 'AAA', + // … +}) +``` + +

                属性

                + +
                +{{- d.include("docs/upload/detail/options.md") }} +
                + +

                跨域方案

                + +`upload` 组件支持跨域上传,一般有以下两种场景 + +- 自建上传服务。在服务端配置 `CORS` 开启跨资源共享。 即对接口所在的服务器设置 `Access-Control-Allow-Origin ` 相关 `header` 信息。 + +- 第三方上传服务。如:阿里云、腾讯云等,只需按照不同平台对应的上传 SDK 进行操作即可。 \ No newline at end of file diff --git a/docs/util/detail/demo.md b/docs/util/detail/demo.md new file mode 100644 index 00000000..1473f493 --- /dev/null +++ b/docs/util/detail/demo.md @@ -0,0 +1,127 @@ +
                +  
                +
                \ No newline at end of file diff --git a/docs/util/index.md b/docs/util/index.md new file mode 100644 index 00000000..cda5260b --- /dev/null +++ b/docs/util/index.md @@ -0,0 +1,180 @@ +--- +title: 工具模块 util +toc: true +--- + +# 工具模块 + +> 工具模块 `util` 是由工具类方法和小组件组成的集合。 + +

                示例

                + +
                +{{- d.include("docs/util/detail/demo.md") }} +
                + +

                + +

                API

                + +| API | 描述 | +| --- | --- | +| var util = layui.util | 获得 `util` 模块。 | +| util.fixbar(options) | `fixbar` 固定条组件,用法:[#详见](../fixbar/) | +| [util.countdown(endTime, serverTime, callback)](#countdown) | 倒计时 | +| [util.timeAgo(time, onlyDate)](#timeAgo) | 某个时间在多久前 | +| [util.toDateString(time, format)](#toDateString) | 将毫秒数或日期对象转换成日期格式字符 | +| [util.digit(num, length)](#digit) | 数字前置补零 | +| [util.escape(str)](#escape) | 转义 HTML 字符 | +| [util.unescape(str)](#escape) | 还原 HTML 字符 | +| [util.openWin(options)](#openWin) 2.8+ | 打开浏览器新标签页 | +| [util.on(attr, obj, eventType)](#on) | 批量事件处理 | + +

                倒计时

                + +`util.countdown(endTime, serverTime, callback);` + +- 参数 `endTime` : 结束时间毫秒数或 `Date` 对象 +- 参数 `serverTime` : 服务器当前时间毫秒数 或 `Date` 对象 +- 参数 `callback` : 倒计时回调函数。若倒计时正在运行,则每一秒都会执行一次。并且返回以下三个参数。 + - `date` 包含天/时/分/秒的对象 + - `serverTime` 当前服务器时间毫秒数或 `Date` 对象 + - `timer` 计时器返回的索引,用于 `clearTimeout` + +该方法并不负责视图的呈现,而仅返回倒计时数值。 相关用法见:[#示例](#examples) + +``` +layui.use('util', function(){ + var util = layui.util; + // 示例 + var endTime = new Date(2099,1,1).getTime() // 假设为结束日期 + var serverTime = new Date().getTime(); // 这里采用的是本地时间,实际使用一般是取服务端时间 + + util.countdown(endTime, serverTime, function(date, serverTime, timer){ + console.log(date, serverTime, timer) + }); +}); +``` + +

                某个时间在多久前

                + +`var result = util.timeAgo(time, onlyDate);` + +- 参数 `time` : 某个时间的毫秒数或日期对象 +- 参数 `onlyDate` : 是否在超过 30 天后,只返回日期字符,而不返回时分秒 + +返回结果 + +- 若 `time` 在 3 分钟以内,返回: 刚刚 +- 若 `time` 在 30 天以内,返回: 若干分钟前、若干小时前、若干天前,如:5 分钟前 +- 若 `time` 在 30 天以上,返回: 日期字符,如: 2023-01-01 + +``` +var result = util.timeAgo(1672531200000); // 2023-01-01 00:00:00 +``` + +相关效果见:[#示例](#examples) + + +

                转换日期格式字符

                + +`var result = util.toDateString(time, format);` + +- 参数 `time` : 毫秒数或日期对象 +- 参数 `format` : 日期字符格式。默认格式:`yyyy-MM-dd HH:mm:ss` 。可自定义,如: `yyyy年MM月dd日` + +``` +var result = util.toDateString(1672531200000, 'yyyy-MM-dd'); // 2023-01-01 +``` + +

                数字前置补零

                + +`util.digit(num, length);` + +- 参数 `num` : 原始数字 +- 参数 `length` : 数字长度,如果原始数字长度小于 length,则前面补零 + +该方法返回一个 `string` 类型的结果,如: + +``` +var rs1 = util.digit(6, 2); // "06" +var rs2 = util.digit(7, 3); // "007" +``` + + +

                转义和还原 HTML

                + +- `util.escape(str);` 转义 HTML +- `util.unescape(str);` 还原被转义的 HTML + +参数 `str` : 任意 HTML 字符 + +``` +var str1 = util.escape('
                123
                '); // 返回: <div>123</div> +var str2 = util.unescape('<div>123</div>'); // 返回:
                123
                +``` + +

                打开浏览器新标签页 2.8+

                + +`util.openWin(options);` + +- 参数 `options` : 属性配置项。可选项详见下表 + +| 属性 | 描述 | +| --- | --- | +| url | 要打开页面 `URL` | +| target | 打开页面的方式或窗口 `name` | +| content | 打开的页面内容。若设置了 `url` 属性,则该属性无效 | +| specs | 窗口的相关配置,同 `window.open()` 的 `specs` | +| window | 当前所在的窗口对象,默认 `self` | + +该方法基于原生 `window.open()` 的二次封装,以提升打开浏览器窗口的灵活性。 + +``` +// 打开一个 url +util.openWin({ + url: 'https://cn.bing.com' +}); +// 打开一个自定义内容窗口 +util.openWin({ + content: 'Hello World.' +}); +``` + +

                批量事件处理

                + +`util.on(attr, obj, eventType);` + +- 参数 `attr` : 触发事件的元素属性名 +- 参数 `obj` : 事件回调函数集合 +- 参数 `eventType` : 事件类型。默认 `click` + +
                +  
                +
                diff --git a/docs/versions.md b/docs/versions.md new file mode 100644 index 00000000..2bce28f3 --- /dev/null +++ b/docs/versions.md @@ -0,0 +1,192 @@ +--- +title: 更新日志 +toc: true +--- + +# 更新日志 + +

                + 2.8.0 + 2023-04-24 +

                + +从 `2.8.0-beta.1` 到 `rc.16`,经二十个预览版的持续迭代,Layui 终于迎来了:`2.8.0` 正式版。 +
                同时,新域名下的 [新官网](https://layui.dev) 也正式上线(导读:[Layui 新版文档站上线初衷](https://gitee.com/layui/layui/issues/)),新版文档亦开源在 [Github](https://github.com/layui/layui/tree/main/docs) 以供协同维护。 + +正是开发者们依然坚持的热爱,促使了 `Layui` 这一朴实的归来。 + +- #### 基础 + - 优化 css 的构建,将原先 layer/laydate/code 的 css 统一构建到 layui.css,以尽量减少请求 + - 变更*主色调*为:`#16baaa` *在原有的墨绿基础上赋予了清新* + - 新增 `18` 个字体图标 + - 新增 grid 布局的超大屏 `xl` 响应式支持 + - 调整 `layui.event()` 方法,当组件事件中未设定 `filter` 时则可重复执行该事件 # 1135 + - ~~剔除 layer 等部分组件的图片资源~~,全部采用字体图标和纯 css 替代实现 + - ~~剔除 layedit 内置组件~~,详见:[关于将在 v2.8.0 版本中正式剔除 layedit 组件的公告](https://gitee.com/layui/layui/issues/I5JSE3) + - lay: 优化 `lay.options()` 方法,以提供更直观的异常提示 +- #### layer + - 新增 `anim` 属性的四个弹出方向的动画类,可实现边缘抽屉弹出,同时关闭时自动匹配对应的动画 + - 新增 `skin` 属性可选值 `layui-layer-win10` ,可设置为 Windows 10 主题风格 + - 新增 `success` 等回调的第三个参数:即当前弹层实例对象,以便操作内部方法 + - 新增 `photos` 层的私有属性 `hideFooter`,用于控制是否隐藏图片底部栏 + - 新增 `photos` 层底部栏的「查看原图」功能 + - 新增 `photos` 层对 `lay-src` 属性的支持 + - 新增 `prompt` 层的 `placeholder` 属性 # 1136 + - 新增 `removeFocus` 属性,用于是否移除弹层触发元素的焦点,避免按回车键时重复弹出 # 1143 + - 新增 `layer.closeLast(type)` 方法,用于根据弹层类型关闭最近打开的层 # I66WI2 + - 优化 document 相关事件机制,避免全局事件叠加,以及大量弹出时可能存在的内存溢出 + - 优化 window resize 事件机制,避免事件不断叠加 # I38C2O + - 优化 所有图标, 由原来的图片改为纯 css 和字体图标 + - 优化 创建弹层的初始化逻辑,以兼容 tampermonkey 等特殊应用场景 + - 优化 内部按钮标签,避免页面设置 `` 时,点击按钮导致的打开新页面 # 830 + - 修复 多次调用` min/max` 方法后再执行 `restore` 出现的异常问题 # 1135/I5QP66 + - 修复 最大化后再调整窗口大小出现的异常问题 # 1135/I5ROMW + - 修复 最大/小后若浏览器窗口尺寸变化,再恢复状态后可能出现的不居中或大小异常问题 # 1135 + - 修复 最小化后再恢复后执行窗口 resize 时弹层的位置异常问题 # 1135 + - 修复 鼠标右键点击弹层可以区域时导致的弹层位置大小异常的问题 # 1143 + - 调整 `prompt` 层的确认回调,支持输入空值 # 1143/I5UO7N + - 调整 除 `msg/load/tips` 层之外的弹出触发时的焦点,默认移除触发元素失去焦点 # 1143 +- #### table + - 新增 `cellMaxWidth` 属性和表头 `maxWidth` 属性,以设定列的最大宽度 + - 新增 `colResized` 列拖拽宽度后的事件,并返回当前列的相关信息 # I3URH8/I3QDBI + - 新增 `colToggled` 列筛选(显示或隐藏)后的事件,并返回当前列的相关信息 # I3URH8 + - 新增 返回数据中的 data 成员为非对象时的渲染支持,如 `data: ["a","b","c"]` + - 新增 `maxHeight` 属性,用于定义表格的最大高度 # 1135/I5R6F6 + - 新增 `fieldTitle` 表头属性,用于定义表头字段标题,该属性在筛选列和导出场景中优先级高于 `title` 属性 # 1170 + - 新增 `table.setRowChecked(id, opts)` 方法,用于设置行选中状态 # I6CRL7 + - 新增 `table.getOptions(id)` 方法,用于获取指定 id 对应的表格实例配置项 # 1135 + - 新增 `table.hideCol(id, cols)` 方法,用于外部设置列的显示隐藏 # 1135/I5RUAJ + - 新增 `rowContextmenu` 事件,用于显示行的右键菜单,需设置属性 `defaultContextmenu:false` 才生效 # 1188 + - 新增 事件返回的 `obj.setRowChecked(opts)` 方法,用于设置当前行选中状态 + - 加强 `height` 属性,可设置对父元素的高度自适应,如:`height: '#父元素id-差值'` # 1111 + - 修复 多级表头模式下的头部工具栏的筛选在重载并还原勾选后,表格存在错位问题 # 1107 # I5L0B4 + - 修复 `size: 'sm'` 时,设置 `align: 'center'` 单元格内容未完全居中的问题 # 1107 + - 修复 document 全局事件中对当前实例引用错误的问题 # 1107 + - 修复 表头 `title` 属性存在 html 标签时,头工具栏筛选栏列表中存在的异常问题 # 1107 + - 修复 `width` 属性小于 `minWidth` 时,通过拖拽列调整宽度却以 `minWidth` 为起点宽度的问题 # 1107 + - 修复 当开启 `even:true` 后,多行表头也会跟着变色的问题 # 1113 + - 修复 头工具栏筛选下拉面板被下方表格遮挡的问题,并重新优化了表格内部层级关系 # 763 + - 修复 列宽值为百分比时,其分配的宽度超出最大和最小宽度的异常问题 # 1128 I5LM4S + - 修复 转换静态表格时,若为特殊的多级表头且存在初始主体数据时出现的错列问题 # 1135/I5QAZM + - 修复 `table.exportFile()` 方法导出任意数据时的某些异常问题 # 1135/I5S17X + - 修复 统计行在重载后可能出现滚动条补丁丢失,并导致跟主体对应不上的问题 # 1150 + - 修复 多级表头操作筛选列后可能出现的固定列高度异常问题 # 1170/I60WQ4 + - 修复 `edit` 事件中返回的 `obj.data` 中的对应字段未同步更新值的问题 # I6A6SL + - 修复 点击排序后导致 `scrollPos:'fixed'` 失效的问题 # I68MBC + - 修复 设置 `align: 'center'` 表头属性时,打印时的合计行未能跟随居中的问题 + - 修复 `table.resize()` 方法导致的在无数据或请求异常时的右侧固定列显示异常问题 # I6F72U + - 优化 事件的回调参数,可返回当前实例配置项:`config` + - 优化 `edit` 事件的核心逻辑,新增返回 `obj.reedit()` 方法,可实现编辑内容校验不通过时重新显示编辑 + - 优化 `edit` 事件的返回参数,新增返回 `obj.oldValue` 属性,用于获取字段修改前的旧值: #1107 + - 优化 `edit` 事件的返回参数,新增返回 `obj.getCol()` 方法,用于获取当前列表头配置信息 + - 优化 `edit` 开启后的对应单元格在鼠标 hover 时显示可编辑样式 + - 优化 `radio` 事件,当返回数据中存在 `LAY_DISABLED` 状态时不触发 + - 优化 `templet` 表头属性函数时返回的数据可包含 `LAY_COL` 特定字段 + - 优化 复杂表头细节,避免当组合表头的父级表头内容过长引起的错位问题 #1107 + - 优化 表头内容超长时可通过鼠标 hover 显示其完整内容 #1107 + - 优化 无数据时若列超出最大宽度,也显示横向滚动条,以便能查看到所有表头字段 #1110 + - 优化 过滤器,若目标元素未设 `lay-filter` 属性值,则自动取实例 `id` 值,以减少冗余的属性设置 + - 优化 导出文件功能,避免内容中存在某些特殊符导致的 excel/csv 表格错位,及避免内容被强制转换格式 + - 优化 内部模板标签符,避免 laytpl 全局设置的影响 + - 优化 UI 细节,以便整体视觉更为清爽。 + - **调整** `page,limit` 属性,当 `page` 未开启时,则默认不再向后端传递这两个参数 # I6G5BO + - **调整** 特定字段名称。序号: `LAY_INDEX` → `LAY_NUM`;下标: `LAY_TABLE_INDEX` → `LAY_INDEX` +- #### treeTable new + - 新增「树形表格」组件。可视为 table 组件的树形结构的延伸 + - 详细用法可参考文档(/docs/treeTable/) +- #### form + - 新增 输入框的动静态点缀,可在前后缀添加图标等任意内容。其中动态点缀内置:清空、密码显隐功能 + - 优化 `form.render()` 方法,若参数一传入的 jQuery 对象指向表单域容器,则渲染该表单域中的所有表单项 + - 优化 `select` 选中时的样式 + - 优化 `select` 开启搜索时,在清空搜索框文本后重置选中项(而非保留上次选中的值) + - 优化 `checkbox、radio` 对 `title` 属性值为 HTML 内容的转义 + - 优化 `checkbox` 的内置风格,以支持半选效果 # 1224 + - 优化 `radio` 的 `checked` 机制,可通过 `form.val()` 方法取消单选框的选中 # 1224 + - 修复 `select` 子元素中以 `` 标签开头出现的异常问题 # I5MV17 + - **调整** `checkbox` 的 `lay-skin` 属性默认为原始风格,标签风格值为 `tag` + - **调整** `checkbox` 的私有属性 `lay-text`,采用统一的 `title` 属性替代 +- #### laydate + - 新增 `shortcuts` 属性,用于开启面板左侧的快捷选择功能 # 1135 + - 新增 `fullPanel` 属性,当 `datetime` 类型且非 range 模式,可开启日期和时间在同一面板操作 #1128 + - 新增 `theme` 属性的多主题支持 + - 新增 `circle` 圆圈高亮的内置主题 + - 新增 `autoConfirm` 属性,用于开启选中目标值时即自动确认(默认 true) # 1138/I5T3GW + - 新增 `shade` 属性,用于开启弹出日期面板时的遮罩,其用法同 layer 的 shade 参数 # 1149 + - 新增 `rangeLinked` 属性,用于是否开启日期范围选择时的区间联动标注模式,默认不开启 # 1172 + - 新增 对目标元素重新 render 覆盖的支持 #1128 + - 新增 对目标元素上的 `lay-options` 属性识别,可覆盖 render 方法中的 options # 1128 + - 新增 `laydate.getInst()` 方法,可返回指定 `id` 或绑定节点上的 `lay-key` 属性值对应的实例 # 1128 + - 新增 `laydate.unbind()` 方法,可对目标元素解除当前实例的绑定 # 1128 + - 新增 `onConfirm/onNow/onClear` 三个属性,分别用于确认、现在、清空三个事件的回调 # I65ZQ6 + - 修复 当设置 `min/max` 后,年和月列表面板中对应的最小/大的年月值无法选中的问题 # 1128 I442FW + - 修复 当前日期未在 `min/max` 设定的范围内,仍能点击现在按钮的问题 # 573 + - 修复 当开启 `range` 属性,并在浏览器缩放后面板出现换行的问题 # 1156 +- #### colorpicker + - 新增 `cancel` 和 `close` 回调,分别用于在取消选择和面板关闭后触发 # I3SJC7 + - 优化 事件处理机制,避免 document 的事件重复绑定 + - 优化 组件选择块的尺寸(lg/md/sm/xs),以更好地应用于其他组件内(如 table) + - 修复 rgba 值在 input 框中修改时会自动变成 16 进制的问题 # I5QPZZ +- #### dropdown + - 新增 `clickScope` 属性,用于设置触发点击事件的菜单范围(如 `all` 即代表父子菜单均可触发事件) # 3NRJD + - 新增 `shade` 属性,用于开启弹出面板时的遮罩 + - 新增 `data` 中 `disabled` 属性的支持,以禁用某一菜单项 # I6GSCD + - 新增 对绑定元素的 `lay-options` 属性识别,可与渲染方法的 `options` 属性合并 + - 新增 `dropdown.reloadData(id, options)` 方法,用于仅重载数据或内容 # 1224 + - 新增 `dropdown.close(id)` 方法,用于关闭对应的实例面板 # 1138 + - 优化 `templet` 属性,支持函数写法 + - 优化 `click` 回调函数,当其返回 `return false` 时,点击选项可不关闭面板 # I6DUMY + - 优化 过滤器,若目标元素未设 `lay-filter` 属性值,则自动取实例 `id` 值,以减少冗余的属性设置 + - 修正 搜索框所在 input 元素的 type 值 # 1168 + - 修复 在移动设备下,点击其他元素无法关闭面板的问题 # 1189 + - 修复 `show: true` 时,`ready` 回调未执行的问题 +- #### element + - 新增 nav 导航菜单浅色背景主题 + - 优化 nav 导航当前选中菜单样式 + - 修复 `element.progress()` 方法不支持更新分数值的问题 #622 +- #### upload + - 调整 表单域 file 字段的顺序,以适应阿里云/腾讯云中的对象存储上传规则 # 1147 + - 修复 多上传设置文件大小限制时,删除超出大小的文件仍然校验不通过的问题 # I6LR5O +- #### carousel + - 新增 `goto` 方法,用于轮播跳转。可通过 `var inst = carousel.render()` 的实例获取 # 1128 I5LIWJ + - 新增 对绑定元素的 `lay-options` 属性识别,可与渲染方法的 `options` 属性合并 + - 优化 `elem` 属性,可传入 `class` 选择器同时绑定多个实例 +- #### tree + - 修复 `id` 属性为长数字时的初始选中状态在某些情况存在异常的问题 #1115 +- #### slider + - 新增 `done` 属性,用于值完成选中时触发的回调,与 change 不同的是滑块拖动过程中不会触发 # I3PZBT + - 新增 对绑定元素的 `lay-options` 属性识别,可与渲染方法的 `options` 属性合并 + - 优化 `elem` 属性,可传入 `class` 选择器同时绑定多个实例 + - 修复 `min` 非 0 时调用 setValue 设置值结果异常的问题 # 1174/I6446N +- #### rate + - 新增 对绑定元素的 `lay-options` 属性识别,可与渲染方法的 `options` 属性合并 + - 优化 `elem` 属性,可传入 `class` 选择器同时绑定多个实例 + - 优化 部分代码存在的冗余逻辑 # 1169 +- #### code + - 新增 `preview` 属性,用于开启 Code 预览功能 + - 新增 `previewStyle/codeStyle` 属性,用于设 Code 区域、预览区域的样式 + - 新增 `text` 属性,用于自定义默认文本 + - 新增 `header` 属性,用于是否开启 Code 区域的头部栏 + - 新增 `layout` 属性,用于设定开启预览时的标签排列方式 + - 新增 `tools` 属性,用于开启头部右侧区域工具栏(内置:全屏) + - 新增 `toolsEvent` 属性,用于自定义工具栏事件 + - 新增 `done` 属性,即执行 Code 预览后的回调函数 +- #### laytpl + - 新增 模板局部自定义标签符功能,可在 `laytpl(str, options)` 的第二个参数中设置 +- #### util + - 重构 `util.fixbar` 组件 + - 新增 `bars` 属性,用于定义任意数量的 bar 列表信息 + - 新增 `default` 属性,用于是否显示默认的 bar 列表 + - 新增 `target` 属性,用于定义插入 fixbar 节点的目标元素选择器(默认 body) + - 新增 `scroll` 属性,用于设定 fixbar 最外层容器滚动条所在的元素,若不设置则取 target + - 新增 `duration` 属性,用于设定 top bar 等动画时长 + - 新增 `on` 属性,用于定义列表的任意事件 + - **调整** `showHeight` 属性名称为 `margin` + - 新增 `util.openWin(options)` 方法,用于打开浏览器新标签页 + +### 下载: [layui-v2.8.0.zip](https://gitee.com/layui/layui/attach_files/) + +--- + +

                2.7.x

                + +[前往查看](/2.7/docs/base/changelog.html) `2.7.x` 及更早前版本更新日志 \ No newline at end of file diff --git a/examples/colorpicker.html b/examples/colorpicker.html index 2243ca83..6a8d8954 100644 --- a/examples/colorpicker.html +++ b/examples/colorpicker.html @@ -88,7 +88,7 @@ body{padding:20px;} colorpicker.render({ elem: '#test3' - ,color: 'rgba(0,0,0)' + ,color: '#000' //,alpha: true //,format: 'rgb' //设置输入显示格式为rgb }); diff --git a/package.json b/package.json index aa9d0ddc..c2f63e1f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "layui", - "version": "2.8.0-rc.16", + "version": "2.8.0", "description": "Classic modular Front-End UI library", "main": "dist/layui.js", "license": "MIT", diff --git a/src/css/layui.css b/src/css/layui.css index b803d73e..44f2f84a 100644 --- a/src/css/layui.css +++ b/src/css/layui.css @@ -11,8 +11,8 @@ 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{font-weight: 700;} -h4,h5,h6{font-weight: 500; font-size: 100%;} +h1,h2,h3,h4{font-weight: 700;} +h5,h6{font-weight: 500; font-size: 100%;} button,input,select,textarea{font-size: 100%; } input,button,textarea,select,optgroup,option{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;} @@ -838,8 +838,8 @@ a cite{font-style: normal; *cursor:pointer;} .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"] > i.layui-icon-subtraction, -.layui-form-checkbox[lay-skin="primary"]:hover i.layui-icon-subtraction {color: darkgray;} +.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: #d2d2d2;} +.layui-form-checkbox[lay-skin="primary"]:hover .layui-icon-indeterminate:before{background-color: #16b777;} /* 复选框-开关风格 */.layui-form-switch{position: relative; display: inline-block; vertical-align: middle; height: 22px; line-height: 22px; min-width: 35px; padding: 0 5px; margin-top: 8px; border: 1px solid #d2d2d2; border-radius: 20px; cursor: pointer; 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;} diff --git a/src/layui.js b/src/layui.js index c55105c3..79e28711 100644 --- a/src/layui.js +++ b/src/layui.js @@ -15,7 +15,7 @@ } ,Layui = function(){ - this.v = '2.8.0-rc.16'; // Layui 版本号 + this.v = '2.8.0'; // Layui 版本号 } //识别预先可能定义的指定全局对象 diff --git a/src/modules/colorpicker.js b/src/modules/colorpicker.js index 03752acd..7d1f90c5 100644 --- a/src/modules/colorpicker.js +++ b/src/modules/colorpicker.js @@ -359,16 +359,13 @@ layui.define(['jquery', 'lay'], function(exports){ //同步滑块的位置及颜色选择器的选择 that.select(hsb.h, hsb.s, hsb.b); - //如果格式要求为rgb + // 若格式要求为rgb if(type === 'torgb'){ elemPickerInput.find('input').val(bgcolor); - } - - //如果格式要求为rgba - if(type === 'rgba'){ + } else if(type === 'rgba'){ // 若格式要求为 rgba var rgb = RGBSTo(bgcolor); - //如果开启透明度而没有设置,则给默认值 + // 若开启透明度而没有设置,则给默认值 if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){ elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)'); that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css("left", 280); @@ -378,12 +375,13 @@ layui.define(['jquery', 'lay'], function(exports){ that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css("left", left); } - //设置span背景色 + // 设置 span 背景色 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 +'))'; + } else { + elemPickerInput.find('input').val('#'+ HSBToHEX(hsb)); } - - }else{ - //如果没有背景颜色则默认到最初始的状态 + } else { + // 若没有背景颜色则默认到最初始的状态 that.select(0,100,100); elemPickerInput.find('input').val(""); that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = ''; diff --git a/src/modules/dropdown.js b/src/modules/dropdown.js index 60425d65..247e9bee 100644 --- a/src/modules/dropdown.js +++ b/src/modules/dropdown.js @@ -130,36 +130,42 @@ layui.define(['jquery', 'laytpl', 'lay'], function(exports){ that.events(); // 事件 }; - //渲染 + // 渲染 Class.prototype.render = function(rerender, type){ - var that = this - ,options = that.config - ,elemBody = $('body') + var that = this; + var options = that.config; + var elemBody = $('body'); - //默认菜单内容 - ,getDefaultView = function(){ + // 默认菜单内容 + var getDefaultView = function(){ var elemUl = $('
                  '); if(options.data.length > 0 ){ eachItemView(elemUl, options.data) } else { - elemUl.html('
                • no menu
                • '); + elemUl.html('
                • No data
                • '); } return elemUl; - } + }; - //遍历菜单项 - ,eachItemView = function(views, data){ - //var views = []; + // 遍历菜单项 + var eachItemView = function(views, data){ + // var views = []; layui.each(data, function(index, item){ - //是否存在子级 - var isChild = item.child && item.child.length > 0 - ,isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem - ,title = item.templet - ? laytpl(item.templet).render(item) - : (options.templet ? laytpl(options.templet).render(item) : item.title) + // 是否存在子级 + var isChild = item.child && item.child.length > 0; + var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem + var title = function(title){ + var templet = item.templet || options.templet; + if(templet){ + title = typeof templet === 'function' + ? templet(item) + : laytpl(templet).render(item); + } + return title; + }(item.title); - //初始类型 - ,type = function(){ + // 初始类型 + var type = function(){ if(isChild){ item.type = item.type || 'parent'; } diff --git a/src/modules/form.js b/src/modules/form.js index 778dde2e..c8b2aa5c 100644 --- a/src/modules/form.js +++ b/src/modules/form.js @@ -623,7 +623,8 @@ layui.define(['lay', 'layer', 'util'], function(exports){ ,checkbox: function(elem){ var CLASS = { "checkbox": ['layui-form-checkbox', 'layui-form-checked', 'checkbox'], - "switch": ['layui-form-switch', 'layui-form-onswitch', 'switch'] + "switch": ['layui-form-switch', 'layui-form-onswitch', 'switch'], + SUBTRA: 'layui-icon-indeterminate' }; var checks = elem || elemForm.find('input[type=checkbox]'); // 风格 @@ -642,9 +643,10 @@ layui.define(['lay', 'layer', 'util'], function(exports){ var title = (check.attr('title')||'').split('|'); if(check[0].disabled) return; + if (check[0].indeterminate) { check[0].indeterminate = false; - reElem.find('.layui-icon-subtraction').removeClass('layui-icon-subtraction').addClass('layui-icon-ok') + reElem.find(CLASS.SUBTRA).removeClass(CLASS.SUBTRA).addClass('layui-icon-ok') } @@ -670,9 +672,12 @@ layui.define(['lay', 'layer', 'util'], function(exports){ var skin = othis.attr('lay-skin') || 'primary'; var title = $.trim(check.title || function(){ // 向下兼容 lay-text 属性 return check.title = othis.attr('lay-text') || ''; - }()).split('|'); + }()); var disabled = this.disabled; + // 若为开关,则对 title 进行分隔解析 + title = skin === 'switch' ? title.split('|') : [title]; + if(!skins[skin]) skin = 'primary'; // 若非内置风格,则强制为默认风格 var RE_CLASS = CLASS[skin] || CLASS.checkbox; @@ -691,7 +696,7 @@ layui.define(['lay', 'layer', 'util'], function(exports){ // 复选框 "checkbox": [ (title[0] ? (''+ util.escape(title[0]) +'') : '') - ,'' + ,'' ].join(''), // 开关 diff --git a/src/modules/treeTable.js b/src/modules/treeTable.js index ee88e6f8..1623354c 100644 --- a/src/modules/treeTable.js +++ b/src/modules/treeTable.js @@ -126,8 +126,9 @@ layui.define(['table'], function (exports) { that.tableIns = tableIns; var treeOptions = options.tree; - var isParentKey = treeOptions.data.key.isParent; - var childrenKey = treeOptions.data.key.children; + var customName = treeOptions.customName; + var isParentKey = customName.isParent; + var childrenKey = customName.children; // 处理属性 var parseData = options.parseData; @@ -143,8 +144,8 @@ layui.define(['table'], function (exports) { retData = parseData.apply(parseDataThat, args) || args[0]; } var dataName = parseDataThat.response.dataName; - // 处理simpleData - if (treeOptions.data.simpleData.enable && !treeOptions.async.enable) { // 异步加载和simpleData不应该一起使用 + // 处理 isSimpleData + if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用 retData[dataName] = that.flatToTree(retData[dataName]); } @@ -154,8 +155,8 @@ layui.define(['table'], function (exports) { } } else { options.data = options.data || []; - // 处理simpleData - if (treeOptions.data.simpleData.enable) { + // 处理 isSimpleData + if (treeOptions.data.isSimpleData) { options.data = that.flatToTree(options.data); } if (options.initSort && options.initSort.type) { @@ -195,6 +196,14 @@ layui.define(['table'], function (exports) { // 初始默认配置 Class.prototype.config = { tree: { + customName: { + children: "children", // 节点数据中保存子节点数据的属性名称 + isParent: "isParent", // 节点数据保存节点是否为父节点的属性名称 + name: "name", // 节点数据保存节点名称的属性名称 + id: "id", // 唯一标识的属性名称 + pid: "parentId", + rootId: null + }, view: { indent: 14, // 层级缩进量 flexIconClose: '', // 关闭时候的折叠图标 @@ -208,21 +217,7 @@ layui.define(['table'], function (exports) { dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识 }, data: { - key: { - checked: 'LAY_CHECKED', // 节点数据中保存 check 状态的属性名称 - children: "children", // 节点数据中保存子节点数据的属性名称 - isParent: "isParent", // 节点数据保存节点是否为父节点的属性名称 - isHidden: "hidden", // 节点数据保存节点是否隐藏的属性名称 - name: "name", // 节点数据保存节点名称的属性名称 - title: "", // 节点数据保存节点提示信息的属性名称 - url: "url", // 节点数据保存节点链接的目标 URL 的属性名称 - }, - simpleData: { - enable: false, // 是否简单数据模式 - idKey: "id", // 唯一标识的属性名称 - pIdKey: "parentId", - rootPId: null - } + isSimpleData: false // 是否简单数据模式 }, async: { enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用 @@ -277,20 +272,21 @@ layui.define(['table'], function (exports) { var that = this; var options = that.getOptions(); var treeOptions = options.tree; - var simpleDataOptions = treeOptions.data.simpleData; + var customName = treeOptions.customName; var tableId = options.id; tableData = tableData || table.cache[tableId]; - return flatToTree(tableData, simpleDataOptions.idKey, simpleDataOptions.pIdKey, treeOptions.data.key.children, simpleDataOptions.rootPId) + return flatToTree(tableData, customName.id, customName.pid, customName.children, customName.rootId) } Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) { var that = this; var options = that.getOptions(); var treeOptions = options.tree; - var childrenKey = treeOptions.data.key.children; - var pIdKey = treeOptions.data.simpleData.pIdKey; + var customName = treeOptions.customName; + var childrenKey = customName.children; + var pIdKey = customName.pid; var flat = []; layui.each(tableData, function (i1, item1) { @@ -299,7 +295,7 @@ layui.define(['table'], function (exports) { dataNew[childrenKey] = null; dataNew[pIdKey] = item1[pIdKey] || parentId; flat.push(dataNew); - flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[treeOptions.data.simpleData.idKey], dataIndex)); + flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex)); }); return flat; @@ -323,7 +319,7 @@ layui.define(['table'], function (exports) { var dataRet = tableData; var tableCache = (options.url || indexArr.length > 1) ? null : table.cache[tableId]; // 只有在删除根节点的时候才需要处理 - for (var i = 0, childrenKey = treeOptions.data.key.children; i < indexArr.length; i++) { + for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) { if (newValue && i === indexArr.length - 1) { if (newValue === 'delete') { // 删除 @@ -373,9 +369,12 @@ layui.define(['table'], function (exports) { var options = that.getOptions(); var treeOptions = options.tree; var tableId = options.id; + data = data || that.getTableData(); - var isParentKey = treeOptions.data.key.isParent; - var childrenKey = treeOptions.data.key.children; + + var customName = treeOptions.customName; + var isParentKey = customName.isParent; + var childrenKey = customName.children; layui.each(data, function (i1, item1) { if (!(isParentKey in item1)) { @@ -400,7 +399,8 @@ layui.define(['table'], function (exports) { var tableId = tableViewElem.attr('lay-id'); var options = table.getOptions(tableId); var treeOptions = options.tree || {}; - var isParentKey = treeOptions.data.key.isParent; + var customName = treeOptions.customName || {}; + var isParentKey = customName.isParent; var trIndex = trElem.attr('lay-data-index'); // 可能出现多层 var treeTableThat = getThisTable(tableId); var tableData = treeTableThat.getTableData(); @@ -438,7 +438,7 @@ layui.define(['table'], function (exports) { nodeIconElem.html(trExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose); } - var childNodes = trData[treeOptions.data.key.children] || []; // 测试用后续需要改成子节点的字段名称 + var childNodes = trData[customName.children] || []; // 测试用后续需要改成子节点的字段名称 // 处理子节点展示与否 if (trExpand) { // 展开 @@ -506,8 +506,8 @@ layui.define(['table'], function (exports) { flexIconElem.html(''); // 事件 } else { - trData[treeOptions.data.key.children] = res[asyncResponse.dataName]; - treeTableThat.initData(trData[treeOptions.data.key.children], trData[LAY_DATA_INDEX]) + trData[customName.children] = res[asyncResponse.dataName]; + treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]) // 正常返回 expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag); } @@ -527,13 +527,13 @@ layui.define(['table'], function (exports) { if (options.initSort && !options.url) { var initSort = options.initSort; if (initSort.type) { - childNodes = trData[treeOptions.data.key.children] = layui.sort(childNodes, initSort.field, initSort.type === 'desc'); + childNodes = trData[customName.children] = layui.sort(childNodes, initSort.field, initSort.type === 'desc'); } else { // 恢复默认 - childNodes = trData[treeOptions.data.key.children] = layui.sort(childNodes, table.config.indexName); + childNodes = trData[customName.children] = layui.sort(childNodes, table.config.indexName); } } - treeTableThat.initData(trData[treeOptions.data.key.children], trData[LAY_DATA_INDEX]); + treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]); // 将数据通过模板得出节点的html代码 var str2 = table.getTrHtml(tableId, childNodes, null, null, trIndex); @@ -588,7 +588,7 @@ layui.define(['table'], function (exports) { return 'tr[lay-data-index="' + value[LAY_DATA_INDEX] + '"]' }).join(',')).addClass('layui-hide'); } else { - var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[treeOptions.data.simpleData.idKey], trIndex); + var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], trIndex); tableViewElem.find(childNodesFlat.map(function (value, index, array) { return 'tr[lay-data-index="' + value[LAY_DATA_INDEX] + '"]' }).join(',')).addClass('layui-hide'); @@ -613,7 +613,7 @@ layui.define(['table'], function (exports) { var index = opts.index; var expandFlag = opts.expandFlag; - var sonSign = opts.sonSign; + var sonSign = opts.inherit; var callbackFlag = opts.callbackFlag; @@ -700,7 +700,8 @@ layui.define(['table'], function (exports) { var treeOptions = options.tree || {}; var treeOptionsData = treeOptions.data || {}; var treeOptionsView = treeOptions.view || {}; - var isParentKey = treeOptionsData.key.isParent; + var customName = treeOptions.customName || {}; + var isParentKey = customName.isParent; var tableFilterId = tableViewElem.attr('lay-filter'); var treeTableThat = that; // var tableData = treeTableThat.getTableData(); @@ -718,7 +719,7 @@ layui.define(['table'], function (exports) { } var dataExpand = {}; // 记录需要展开的数据 - var nameKey = treeOptions.data.key.name; + var nameKey = customName.name; var indent = treeOptions.view.indent || 14; layui.each(tableView.find('td[data-field="' + nameKey + '"]'), function (index, item) { item = $(item); @@ -854,7 +855,7 @@ layui.define(['table'], function (exports) { var treeOptions = options.tree; data = data || table.cache[options.id]; - return updateStatus(data, statusObj, treeOptions.data.key.children); + return updateStatus(data, statusObj, treeOptions.customName.children); } Class.prototype.getTableData = function () { @@ -922,8 +923,8 @@ layui.define(['table'], function (exports) { // 处理setRowChecked obj.setRowChecked = function (checked) { - treeTable.checkNode(tableId, { - node: trData, + treeTable.setRowChecked(tableId, { + index: trData, checked: checked }); } @@ -971,7 +972,7 @@ layui.define(['table'], function (exports) { delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete'); var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]); that.updateCheckStatus(nodeP, true); - var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.data.simpleData.pIdKey], delNode[LAY_PARENT_INDEX]); + var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]); layui.each(delNodesFlat, function (i2, item2) { indexArr.push('tr[lay-data-index="' + item2[LAY_DATA_INDEX] + '"]'); }) @@ -1001,7 +1002,7 @@ layui.define(['table'], function (exports) { * @param {String} id 树表id * @param {String|Number} parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可 * @param {Number} index:Number 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后 - * @param {Object|Array} newNodes 新增的节点,单个或者多个 + * @param {Object|Array} data 新增的节点,单个或者多个 * @param {Boolean} focus 新增的节点,单个或者多个 * @return {Array} 新增的节点 * */ @@ -1017,7 +1018,7 @@ layui.define(['table'], function (exports) { var parentIndex = opts.parentIndex; var index = opts.index; - var newNodes = opts.newNodes; + var newNodes = opts.data; var focus = opts.focus; parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex; @@ -1101,8 +1102,8 @@ layui.define(['table'], function (exports) { return 'tr[lay-data-index="' + value[LAY_DATA_INDEX] + '"]' }).join(','))); } else { - var isParentKey = treeOptions.data.key.isParent; - var childKey = treeOptions.data.key.children; + var isParentKey = treeOptions.customName.isParent; + var childKey = treeOptions.customName.children; parentNode[isParentKey] = true; var childrenNodes = parentNode[childKey]; @@ -1220,7 +1221,7 @@ layui.define(['table'], function (exports) { if (tableView.hasClass('layui-table-tree')) { updateObjParams(obj); - if (obj.field === options.tree.data.key.name) { + if (obj.field === options.tree.customName.name) { obj.tr.find('td[data-field="' + obj.field + '"]').children('div.layui-table-cell').removeClass('layui-table-tree-item') obj.update({}); // 通过update调用执行tr节点的更新 } @@ -1288,7 +1289,7 @@ layui.define(['table'], function (exports) { var treeOptions = options.tree; var tableId = options.id; var checkName = table.config.checkName; - var childrenKey = treeOptions.data.key.children; + var childrenKey = treeOptions.customName.children; var dataRet = []; dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断 @@ -1378,7 +1379,7 @@ layui.define(['table'], function (exports) { trData[checkName] = checked; form.render(trElem.find('input[type="radio"][lay-type="layTableRadio"]').prop('checked', checked)); } else { - var isParentKey = options.tree.data.key.isParent; + var isParentKey = options.tree.customName.isParent; // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态 checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态 @@ -1424,13 +1425,13 @@ layui.define(['table'], function (exports) { /** - * 勾选或取消勾选单个节点 + * 设置行选中状态 * @param {String} id 树表id - * @param {Object|String} node 节点 + * @param {Object|String} index 节点下标 * @param {Boolean} checked 选中或取消 * @param {Boolean} [callbackFlag] 是否触发事件回调 * */ - treeTable.checkNode = function (id, opts) { + treeTable.setRowChecked = function (id, opts) { var that = getThisTable(id); if(!that) return; @@ -1439,7 +1440,7 @@ layui.define(['table'], function (exports) { opts = opts || {}; - var node = opts.node; + var node = opts.index; var checked = opts.checked; var callbackFlag = opts.callbackFlag; @@ -1476,16 +1477,16 @@ layui.define(['table'], function (exports) { /** * 获得数据 * @param {String} id 表格id - * @param {Boolean} simpleData 是否返回平铺结构的数据 + * @param {Boolean} isSimpleData 是否返回平铺结构的数据 * @return {Array} 表格数据 * */ - treeTable.getData = function (id, simpleData) { + treeTable.getData = function (id, isSimpleData) { var tableData = []; layui.each($.extend(true, [], table.cache[id] || []), function (index, item) { // 遍历排除掉临时的数据 tableData.push(item); }) - return simpleData ? getThisTable(id).treeToFlat(tableData) : tableData; + return isSimpleData ? getThisTable(id).treeToFlat(tableData) : tableData; } // 记录所有实例