From 8f7389acdf0cc991a158403fe823f62e525b09d6 Mon Sep 17 00:00:00 2001 From: Anyon Date: Sat, 6 Jul 2019 18:56:02 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=9B=B4=E6=96=B0]=E5=8D=87=E7=BA=A7=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=A1=86=E6=9E=B6=EF=BC=88=E5=90=8C=E6=AD=A5=E8=87=AA?= =?UTF-8?q?framework2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 21 + README.md | 18 +- admin_v4.sql => admin_v4_1.sql | 295 +--- application/admin/controller/Auth.php | 66 +- application/admin/controller/Config.php | 143 +- application/admin/controller/Index.php | 114 +- application/admin/controller/Login.php | 146 +- application/admin/controller/Menu.php | 45 +- application/admin/controller/Message.php | 93 -- application/admin/controller/Node.php | 88 -- application/admin/controller/Oplog.php | 14 +- application/admin/controller/Queue.php | 21 +- application/admin/controller/User.php | 48 +- application/admin/controller/api/Message.php | 64 - application/admin/controller/api/Plugs.php | 99 +- application/admin/queue/JobsQueue.php | 16 +- application/admin/service/AuthService.php | 176 --- application/admin/service/MessageService.php | 72 - application/admin/service/NodeService.php | 322 ++++ application/admin/service/OplogService.php | 22 +- application/admin/service/QueueService.php | 12 +- application/admin/sys.php | 74 +- application/admin/view/api/plugs/icon.html | 4 +- application/admin/view/api/plugs/upfile.html | 432 ------ application/admin/view/auth/apply.html | 8 + application/admin/view/auth/form.html | 2 +- application/admin/view/auth/index.html | 33 +- application/admin/view/auth/index_search.html | 2 +- application/admin/view/config/file.html | 44 - application/admin/view/config/file_local.html | 19 - application/admin/view/config/file_oss.html | 77 - application/admin/view/config/file_qiniu.html | 78 - .../admin/view/config/info-storage-local.html | 21 + .../admin/view/config/info-storage-oss.html | 79 + .../admin/view/config/info-storage-qiniu.html | 80 + .../admin/view/config/info-storage.html | 32 + .../admin/view/config/info-website.html | 54 + application/admin/view/config/info.html | 74 +- application/admin/view/index/command.html | 8 - application/admin/view/index/index.html | 41 +- application/admin/view/login/index.html | 14 +- application/admin/view/menu/form.html | 5 +- application/admin/view/menu/index.html | 10 +- application/admin/view/message/index.html | 98 -- .../admin/view/message/index_search.html | 57 - application/admin/view/node/index.html | 238 --- application/admin/view/oplog/index.html | 10 +- .../admin/view/oplog/index_search.html | 2 +- application/admin/view/queue/index.html | 25 +- .../admin/view/queue/index_search.html | 6 +- application/admin/view/user/auth.html | 40 - application/admin/view/user/index.html | 41 +- application/admin/view/user/index_search.html | 2 +- application/index/controller/Index.php | 8 +- application/service/controller/Config.php | 35 +- application/service/controller/Index.php | 19 +- application/service/controller/api/Client.php | 9 +- application/service/controller/api/Push.php | 7 +- .../service/handler/PublishHandler.php | 7 +- .../service/handler/ReceiveHandler.php | 7 +- application/service/handler/WechatHandler.php | 9 +- application/service/service/BuildService.php | 9 +- application/service/service/WechatService.php | 7 +- application/service/view/config/index.html | 2 +- application/service/view/index/index.html | 15 +- .../service/view/index/index_search.html | 2 +- application/store/command/AutoRun.php | 9 +- application/store/controller/Config.php | 35 +- .../store/controller/ExpressCompany.php | 19 +- .../store/controller/ExpressProvince.php | 92 -- .../store/controller/ExpressTemplate.php | 35 +- application/store/controller/Goods.php | 59 +- application/store/controller/GoodsCate.php | 30 +- application/store/controller/Member.php | 11 +- application/store/controller/Message.php | 12 +- application/store/controller/Order.php | 18 +- application/store/controller/api/Express.php | 9 +- application/store/controller/api/Goods.php | 20 +- application/store/controller/api/Member.php | 19 +- application/store/controller/api/Notify.php | 13 +- application/store/controller/api/Wechat.php | 20 +- .../store/controller/api/member/Address.php | 9 +- .../store/controller/api/member/Center.php | 24 +- .../store/controller/api/member/Order.php | 48 +- application/store/service/ExpressService.php | 15 +- application/store/service/ExtendService.php | 289 +++- application/store/service/GoodsService.php | 9 +- application/store/service/OrderService.php | 9 +- application/store/sys.php | 9 +- .../store/view/config/index-store-config.html | 32 + .../view/config/index-store-message.html | 46 + application/store/view/config/index.html | 56 +- application/store/view/config/sms.html | 51 - .../store/view/express_company/form.html | 5 +- .../store/view/express_company/index.html | 9 +- .../store/view/express_province/form.html | 22 - .../store/view/express_province/index.html | 71 - .../view/express_province/index_search.html | 35 - .../store/view/express_template/index.html | 4 +- .../view/express_template/index_item.html | 29 +- application/store/view/goods/index.html | 6 +- application/store/view/goods_cate/index.html | 6 +- application/store/view/member/index.html | 10 +- application/store/view/message/index.html | 6 +- application/store/view/order/index.html | 6 +- application/wechat/command/Fans.php | 2 +- application/wechat/controller/Config.php | 23 +- application/wechat/controller/Fans.php | 9 +- application/wechat/controller/Index.php | 44 + application/wechat/controller/Keys.php | 44 +- application/wechat/controller/Menu.php | 48 +- application/wechat/controller/News.php | 28 +- application/wechat/controller/api/Js.php | 4 +- application/wechat/controller/api/Push.php | 8 +- application/wechat/controller/api/Review.php | 6 +- application/wechat/controller/api/Tools.php | 50 +- application/wechat/service/FansService.php | 2 +- application/wechat/service/WechatService.php | 32 +- application/wechat/sys.php | 7 +- application/wechat/view/api/tools/jssdk.html | 19 +- application/wechat/view/config/options.html | 2 +- application/wechat/view/config/payment.html | 6 +- application/wechat/view/fans/index.html | 24 +- .../wechat/view/fans/index_search.html | 2 +- application/wechat/view/index/index.html | 127 ++ application/wechat/view/keys/index.html | 20 +- .../wechat/view/keys/index_search.html | 2 +- .../news/{form_style.html => form-style.html} | 29 +- application/wechat/view/news/form.html | 29 +- application/wechat/view/news/index.html | 99 +- composer.json | 2 +- config/app.php | 5 +- config/cookie.php | 9 +- config/database.php | 9 +- config/log.php | 9 +- config/queue.php | 7 +- config/session.php | 7 +- config/template.php | 9 +- config/wechat.php | 7 +- public/index.php | 7 +- public/router.php | 5 +- public/static/admin.js | 88 +- public/static/plugs/echarts/echarts.min.js | 22 + public/static/plugs/jquery/area/area.json | 7 + public/static/plugs/jquery/less.min.js | 18 + public/static/plugs/jquery/pcasunzips.js | 2 +- public/static/plugs/layui/css/layui.css | 4 +- .../static/plugs/layui/css/layui.mobile.css | 2 +- .../static/plugs/layui/css/modules/code.css | 2 +- .../css/modules/laydate/default/laydate.css | 2 +- .../layui/css/modules/layer/default/layer.css | 2 +- public/static/plugs/layui/font/iconfont.eot | Bin 40844 -> 41712 bytes public/static/plugs/layui/font/iconfont.svg | 12 + public/static/plugs/layui/font/iconfont.ttf | Bin 40668 -> 41536 bytes public/static/plugs/layui/font/iconfont.woff | Bin 26744 -> 27256 bytes public/static/plugs/layui/font/iconfont.woff2 | Bin 0 -> 23140 bytes .../plugs/layui/lay/modules/carousel.js | 4 +- public/static/plugs/layui/lay/modules/code.js | 2 +- .../plugs/layui/lay/modules/colorpicker.js | 2 +- .../static/plugs/layui/lay/modules/element.js | 2 +- public/static/plugs/layui/lay/modules/flow.js | 2 +- public/static/plugs/layui/lay/modules/form.js | 4 +- .../static/plugs/layui/lay/modules/jquery.js | 2 +- .../static/plugs/layui/lay/modules/laydate.js | 2 +- .../static/plugs/layui/lay/modules/layedit.js | 2 +- .../static/plugs/layui/lay/modules/layer.js | 2 +- .../static/plugs/layui/lay/modules/laypage.js | 2 +- .../static/plugs/layui/lay/modules/laytpl.js | 2 +- .../static/plugs/layui/lay/modules/mobile.js | 2 +- public/static/plugs/layui/lay/modules/rate.js | 2 +- .../static/plugs/layui/lay/modules/slider.js | 2 +- .../static/plugs/layui/lay/modules/table.js | 4 +- .../plugs/layui/lay/modules/transfer.js | 2 + public/static/plugs/layui/lay/modules/tree.js | 4 +- .../static/plugs/layui/lay/modules/upload.js | 4 +- public/static/plugs/layui/lay/modules/util.js | 4 +- public/static/plugs/layui/layui.all.js | 6 +- public/static/plugs/layui/layui.js | 4 +- public/static/theme/css/console.css | 1293 ++++++++++++++--- public/static/theme/css/console.css.map | 1 + public/static/theme/css/console.less | 75 + .../static/theme/css/less.console/custom.less | 680 +++++++++ .../static/theme/css/less.console/form.less | 177 +++ .../static/theme/css/less.console/layout.less | 208 +++ .../static/theme/css/less.console/layui.less | 133 ++ .../static/theme/css/less.console/mobile.less | 195 +++ .../static/theme/css/less.console/page.less | 53 + public/static/theme/css/login.css | 246 +++- public/static/theme/css/login.css.map | 1 + public/static/theme/css/login.less | 239 +++ route/demo.php | 5 +- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 2 + vendor/composer/autoload_real.php | 14 +- vendor/composer/autoload_static.php | 10 +- vendor/composer/installed.json | 58 +- vendor/qiniu/php-sdk/.travis.yml | 6 + vendor/qiniu/php-sdk/composer.json | 2 +- vendor/qiniu/php-sdk/docs/sms/example.php | 70 + .../php-sdk/examples/bucket_lifecycleRule.php | 30 + .../qiniu/php-sdk/examples/delete_bucket.php | 20 + .../php-sdk/examples/delete_bucketEvent.php | 21 + .../examples/delete_bucketLifecycleRule.php | 21 + .../php-sdk/examples/get_bucketEvents.php | 20 + .../examples/get_bucketLifecycleRules.php | 20 + .../qiniu/php-sdk/examples/get_bucketList.php | 20 + .../php-sdk/examples/get_bucketQuota.php | 20 + .../qiniu/php-sdk/examples/get_bucketinfo.php | 20 + .../php-sdk/examples/get_bucketinfos.php | 20 + .../qiniu/php-sdk/examples/get_corsRules.php | 20 + .../php-sdk/examples/put_bucketAccessMode.php | 21 + .../examples/put_bucketAccessStyleMode.php | 21 + .../php-sdk/examples/put_bucketEvent.php | 25 + .../php-sdk/examples/put_bucketMaxAge.php | 21 + .../php-sdk/examples/put_bucketQuota.php | 22 + .../php-sdk/examples/put_referAntiLeech.php | 23 + .../qiniu/php-sdk/examples/rs_pub_domain.php | 19 + .../php-sdk/examples/rsf_v2list_bucket.php | 33 + .../php-sdk/examples/update_bucketEvent.php | 25 + .../examples/update_bucketLifecycleRule.php | 30 + .../php-sdk/examples/upload_and_callback.php | 8 +- vendor/qiniu/php-sdk/phpunit.xml.dist | 1 - .../php-sdk/src/Qiniu/Cdn/CdnManager.php | 9 +- vendor/qiniu/php-sdk/src/Qiniu/Config.php | 61 +- .../qiniu/php-sdk/src/Qiniu/Http/Client.php | 10 +- vendor/qiniu/php-sdk/src/Qiniu/Region.php | 196 +++ .../qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php | 11 +- vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php | 337 +++++ .../src/Qiniu/Storage/BucketManager.php | 653 ++++++++- .../src/Qiniu/Storage/FormUploader.php | 5 +- .../src/Qiniu/Storage/UploadManager.php | 9 +- vendor/qiniu/php-sdk/src/Qiniu/Zone.php | 200 +-- .../php-sdk/tests/Qiniu/Tests/AuthTest.php | 23 +- .../php-sdk/tests/Qiniu/Tests/Base64Test.php | 3 +- .../php-sdk/tests/Qiniu/Tests/BucketTest.php | 5 +- .../tests/Qiniu/Tests/CdnManagerTest.php | 5 +- .../php-sdk/tests/Qiniu/Tests/Crc32Test.php | 3 +- .../tests/Qiniu/Tests/DownloadTest.php | 7 +- .../php-sdk/tests/Qiniu/Tests/EtagTest.php | 3 +- .../php-sdk/tests/Qiniu/Tests/FopTest.php | 17 +- .../php-sdk/tests/Qiniu/Tests/FormUpTest.php | 22 +- .../php-sdk/tests/Qiniu/Tests/HttpTest.php | 3 +- .../tests/Qiniu/Tests/ImageUrlBuilderTest.php | 4 +- .../php-sdk/tests/Qiniu/Tests/PfopTest.php | 3 +- .../tests/Qiniu/Tests/ResumeUpTest.php | 5 +- .../php-sdk/tests/Qiniu/Tests/ZoneTest.php | 5 +- vendor/qiniu/php-sdk/tests/bootstrap.php | 6 +- .../think-library/src/Controller.php | 18 +- vendor/zoujingli/think-library/src/File.php | 44 +- vendor/zoujingli/think-library/src/common.php | 66 +- .../think-library/src/driver/Oss.php | 100 +- .../think-library/src/driver/Qiniu.php | 54 +- .../think-library/src/logic/Input.php | 3 +- .../think-library/src/logic/Page.php | 6 +- .../think-library/src/tools/Csrf.php | 4 +- .../think-library/src/tools/Data.php | 9 +- .../think-library/src/tools/Node.php | 121 +- .../weopen-developer/WeMini/User.php | 2 +- .../weopen-developer/WeOpen/Login.php | 4 + .../weopen-developer/WeOpen/Service.php | 2 + 260 files changed, 7853 insertions(+), 4049 deletions(-) create mode 100644 LICENSE rename admin_v4.sql => admin_v4_1.sql (73%) delete mode 100644 application/admin/controller/Message.php delete mode 100644 application/admin/controller/Node.php delete mode 100644 application/admin/controller/api/Message.php delete mode 100644 application/admin/service/AuthService.php delete mode 100644 application/admin/service/MessageService.php create mode 100644 application/admin/service/NodeService.php delete mode 100644 application/admin/view/api/plugs/upfile.html delete mode 100644 application/admin/view/config/file.html delete mode 100644 application/admin/view/config/file_local.html delete mode 100644 application/admin/view/config/file_oss.html delete mode 100644 application/admin/view/config/file_qiniu.html create mode 100644 application/admin/view/config/info-storage-local.html create mode 100644 application/admin/view/config/info-storage-oss.html create mode 100644 application/admin/view/config/info-storage-qiniu.html create mode 100644 application/admin/view/config/info-storage.html create mode 100644 application/admin/view/config/info-website.html delete mode 100644 application/admin/view/index/command.html delete mode 100644 application/admin/view/message/index.html delete mode 100644 application/admin/view/message/index_search.html delete mode 100644 application/admin/view/node/index.html delete mode 100644 application/admin/view/user/auth.html delete mode 100644 application/store/controller/ExpressProvince.php create mode 100644 application/store/view/config/index-store-config.html create mode 100644 application/store/view/config/index-store-message.html delete mode 100644 application/store/view/config/sms.html delete mode 100644 application/store/view/express_province/form.html delete mode 100644 application/store/view/express_province/index.html delete mode 100644 application/store/view/express_province/index_search.html create mode 100644 application/wechat/controller/Index.php create mode 100644 application/wechat/view/index/index.html rename application/wechat/view/news/{form_style.html => form-style.html} (71%) create mode 100644 public/static/plugs/echarts/echarts.min.js create mode 100644 public/static/plugs/jquery/less.min.js create mode 100644 public/static/plugs/layui/font/iconfont.woff2 create mode 100644 public/static/plugs/layui/lay/modules/transfer.js create mode 100644 public/static/theme/css/console.css.map create mode 100644 public/static/theme/css/console.less create mode 100644 public/static/theme/css/less.console/custom.less create mode 100644 public/static/theme/css/less.console/form.less create mode 100644 public/static/theme/css/less.console/layout.less create mode 100644 public/static/theme/css/less.console/layui.less create mode 100644 public/static/theme/css/less.console/mobile.less create mode 100644 public/static/theme/css/less.console/page.less create mode 100644 public/static/theme/css/login.css.map create mode 100644 public/static/theme/css/login.less create mode 100644 vendor/qiniu/php-sdk/docs/sms/example.php create mode 100644 vendor/qiniu/php-sdk/examples/bucket_lifecycleRule.php create mode 100644 vendor/qiniu/php-sdk/examples/delete_bucket.php create mode 100644 vendor/qiniu/php-sdk/examples/delete_bucketEvent.php create mode 100644 vendor/qiniu/php-sdk/examples/delete_bucketLifecycleRule.php create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketEvents.php create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketLifecycleRules.php create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketList.php create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketQuota.php create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketinfo.php create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketinfos.php create mode 100644 vendor/qiniu/php-sdk/examples/get_corsRules.php create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketAccessMode.php create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketAccessStyleMode.php create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketEvent.php create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketMaxAge.php create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketQuota.php create mode 100644 vendor/qiniu/php-sdk/examples/put_referAntiLeech.php create mode 100644 vendor/qiniu/php-sdk/examples/rs_pub_domain.php create mode 100644 vendor/qiniu/php-sdk/examples/rsf_v2list_bucket.php create mode 100644 vendor/qiniu/php-sdk/examples/update_bucketEvent.php create mode 100644 vendor/qiniu/php-sdk/examples/update_bucketLifecycleRule.php create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Region.php create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..e19cbbdf9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 邹景立 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index ff55d7198..ae9a77617 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ 大道至简 · 原生框架 -- -ThinkAdmin V4.0 是一个基于 ThinkPHP5.1 开发的后台管理系统。 +ThinkAdmin V4.1 是一个基于 ThinkPHP5.1 开发的后台管理系统。 我们致力于二次开发底层框架,提供完整的组件及API,基于此框架可以快速开发应用。 @@ -26,6 +26,22 @@ PHP 开发技术交流( QQ 群 513350915) [![PHP微信开发群 (SDK)](http://pub.idqqimg.com/wpa/images/group.png)](http://shang.qq.com/wpa/qunwpa?idkey=ae25cf789dafbef62e50a980ffc31242f150bc61a61164458216dd98c411832a) +#### 权限管理 +* 此版本的权限使用注解实现管理 +* 注释必需使用标准的块注释,如: +```php +/** +* 操作的名称 +* @auth true # 表示需要验证权限 +* @menu true # 在菜单编辑的节点可选项 +*/ +public function index(){ + // @todo +} +``` +* 其中`@auth true`表示需要权限验证 +* 其中`@menu true`显示在菜单编辑的节点可选项 + 代码仓库 -- framework 为 MIT 协议开源项目,安装使用或二次开发不受约束,欢迎 fork 项目。 diff --git a/admin_v4.sql b/admin_v4_1.sql similarity index 73% rename from admin_v4.sql rename to admin_v4_1.sql index 62c944e8d..6c33ce9de 100644 --- a/admin_v4.sql +++ b/admin_v4_1.sql @@ -11,7 +11,7 @@ Target Server Version : 50562 File Encoding : 65001 - Date: 14/06/2019 16:55:44 + Date: 04/07/2019 17:51:38 */ SET NAMES utf8mb4; @@ -45,7 +45,7 @@ INSERT INTO `store_express_company` VALUES (10, '百福东方国际物流', 'bai INSERT INTO `store_express_company` VALUES (11, '中国东方(COE)', 'coe', NULL, 0, 0, 0, '2017-09-13 16:05:48'); INSERT INTO `store_express_company` VALUES (12, '长宇物流', 'changyuwuliu', NULL, 0, 0, 0, '2017-09-13 16:05:58'); INSERT INTO `store_express_company` VALUES (13, '大田物流', 'datianwuliu', NULL, 0, 0, 0, '2017-09-13 16:06:06'); -INSERT INTO `store_express_company` VALUES (14, '德邦物流', 'debangwuliu', '', 1, 1, 0, '2017-09-13 16:06:14'); +INSERT INTO `store_express_company` VALUES (14, '德邦物流', 'debangwuliu', '', 0, 1, 0, '2017-09-13 16:06:14'); INSERT INTO `store_express_company` VALUES (15, 'DHL', 'dhl', NULL, 0, 0, 0, '2017-09-13 16:06:24'); INSERT INTO `store_express_company` VALUES (16, 'DPEX', 'dpex', NULL, 0, 0, 0, '2017-09-13 16:06:29'); INSERT INTO `store_express_company` VALUES (17, 'd速快递', 'dsukuaidi', NULL, 0, 0, 0, '2017-09-13 16:06:34'); @@ -125,57 +125,7 @@ INSERT INTO `store_express_company` VALUES (90, '中铁快运', 'zhongtiekuaiyun INSERT INTO `store_express_company` VALUES (91, '中通速递', 'zhongtong', '', 0, 0, 0, '2017-09-13 16:17:16'); INSERT INTO `store_express_company` VALUES (92, '中邮物流', 'zhongyouwuliu', NULL, 0, 0, 0, '2017-09-13 16:17:27'); INSERT INTO `store_express_company` VALUES (93, '忠信达', 'zhongxinda', NULL, 0, 0, 0, '2017-09-13 16:17:34'); -INSERT INTO `store_express_company` VALUES (94, '芝麻开门', 'zhimakaimen', '', 0, 0, 0, '2017-09-13 16:17:41'); - --- ---------------------------- --- Table structure for store_express_province --- ---------------------------- -DROP TABLE IF EXISTS `store_express_province`; -CREATE TABLE `store_express_province` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '地区名称', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权限', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '数据状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_store_express_province_title`(`title`) USING BTREE, - INDEX `index_store_express_province_status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3109 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商城-快递-省份'; - --- ---------------------------- --- Records of store_express_province --- ---------------------------- -INSERT INTO `store_express_province` VALUES (1, '北京市', 1, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (19, '天津市', 2, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (37, '河北省', 3, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (217, '山西省', 4, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (348, '内蒙古自治区', 5, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (464, '辽宁省', 6, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (579, '吉林省', 7, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (649, '黑龙江省', 8, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (792, '上海市', 9, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (810, '江苏省', 10, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (920, '浙江省', 11, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1021, '安徽省', 12, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1143, '福建省', 13, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1238, '江西省', 14, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1350, '山东省', 15, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1505, '河南省', 16, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1681, '湖北省', 17, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1798, '湖南省', 18, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (1935, '广东省', 19, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2079, '广西壮族自治区', 20, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2205, '海南省', 21, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2236, '重庆市', 22, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2277, '四川省', 23, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2482, '贵州省', 24, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2580, '云南省', 25, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2726, '西藏自治区', 26, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2808, '陕西省', 27, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (2926, '甘肃省', 28, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (3027, '青海省', 29, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (3080, '宁夏回族自治区', 30, 1, '2017-09-12 11:53:40'); -INSERT INTO `store_express_province` VALUES (3108, '新疆维吾尔自治区', 31, 1, '2017-09-12 11:53:40'); +INSERT INTO `store_express_company` VALUES (94, '芝麻开门', 'zhimakaimen', '', 1, 0, 0, '2017-09-13 16:17:41'); -- ---------------------------- -- Table structure for store_express_template @@ -463,11 +413,11 @@ CREATE TABLE `system_config` ( -- ---------------------------- -- Records of system_config -- ---------------------------- -INSERT INTO `system_config` VALUES (1, 'app_name', 'ThinkAdmin'); -INSERT INTO `system_config` VALUES (2, 'site_name', 'ThinkAdmin'); -INSERT INTO `system_config` VALUES (3, 'app_version', 'v4.1'); +INSERT INTO `system_config` VALUES (1, 'app_name', 'framework'); +INSERT INTO `system_config` VALUES (2, 'site_name', 'framework'); +INSERT INTO `system_config` VALUES (3, 'app_version', 'v2.0'); INSERT INTO `system_config` VALUES (4, 'site_copy', '©版权所有 2014-2018 楚才科技'); -INSERT INTO `system_config` VALUES (5, 'site_icon', 'http://127.0.0.1:8000/upload/f47b8fe06e38ae99/08e8398da45583b9.png'); +INSERT INTO `system_config` VALUES (5, 'site_icon', '/upload/decb0fe26fa3f486/b3f6521bf29403c8.png'); INSERT INTO `system_config` VALUES (7, 'miitbeian', '粤ICP备16006642号-2'); INSERT INTO `system_config` VALUES (8, 'storage_type', 'local'); INSERT INTO `system_config` VALUES (9, 'storage_local_exts', 'doc,gif,icon,jpg,mp3,mp4,p12,pem,png,rar'); @@ -496,7 +446,7 @@ INSERT INTO `system_config` VALUES (54, 'wechat_encodingaeskey', ''); INSERT INTO `system_config` VALUES (55, 'wechat_push_url', '消息推送地址:http://127.0.0.1:8000/wechat/api.push'); INSERT INTO `system_config` VALUES (56, 'wechat_type', 'thr'); INSERT INTO `system_config` VALUES (57, 'wechat_thr_appid', 'wx60a43dd8161666d4'); -INSERT INTO `system_config` VALUES (58, 'wechat_thr_appkey', '6d1116ba978018ceb84d24d6dda4fed0'); +INSERT INTO `system_config` VALUES (58, 'wechat_thr_appkey', 'd2c0139213d7a27898ca047d81a617be'); INSERT INTO `system_config` VALUES (60, 'wechat_thr_appurl', '消息推送地址:http://127.0.0.1:8000/wechat/api.push'); INSERT INTO `system_config` VALUES (61, 'component_appid', 'wx28b58798480874f9'); INSERT INTO `system_config` VALUES (62, 'component_appsecret', '87ddce1cc24e4cd691039f926febd942'); @@ -527,7 +477,7 @@ CREATE TABLE `system_data` ( -- ---------------------------- -- Records of system_data -- ---------------------------- -INSERT INTO `system_data` VALUES (1, 'menudata', '[]'); +INSERT INTO `system_data` VALUES (1, 'menudata', '[{\"name\":\"请输入名称\",\"type\":\"view\",\"url\":\"https:\\/\\/baidu.com\"}]'); -- ---------------------------- -- Table structure for system_jobs @@ -605,200 +555,48 @@ CREATE TABLE `system_menu` ( PRIMARY KEY (`id`) USING BTREE, INDEX `index_system_menu_node`(`node`(191)) USING BTREE, INDEX `index_system_menu_status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 55 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-菜单'; +) ENGINE = InnoDB AUTO_INCREMENT = 56 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-菜单'; -- ---------------------------- -- Records of system_menu -- ---------------------------- -INSERT INTO `system_menu` VALUES (1, 0, '后台首页', '', '', 'admin/index/main', '', '_self', 100, 1, '2018-09-05 17:59:38'); -INSERT INTO `system_menu` VALUES (2, 0, '系统管理', '', '', '#', '', '_self', 300, 1, '2018-09-05 18:04:52'); -INSERT INTO `system_menu` VALUES (3, 12, '系统菜单管理', '', 'layui-icon layui-icon-layouts', 'admin/menu/index', '', '_self', 2, 1, '2018-09-05 18:05:26'); -INSERT INTO `system_menu` VALUES (4, 2, '系统配置', '', '', '#', '', '_self', 10, 1, '2018-09-05 18:07:17'); -INSERT INTO `system_menu` VALUES (5, 12, '系统用户管理', '', 'layui-icon layui-icon-username', 'admin/user/index', '', '_self', 4, 1, '2018-09-06 11:10:42'); -INSERT INTO `system_menu` VALUES (6, 12, '功能节点管理', '', 'layui-icon layui-icon-template', 'admin/node/index', '', '_self', 1, 1, '2018-09-06 14:16:13'); -INSERT INTO `system_menu` VALUES (7, 12, '访问权限管理', '', 'layui-icon layui-icon-vercode', 'admin/auth/index', '', '_self', 3, 1, '2018-09-06 15:17:14'); -INSERT INTO `system_menu` VALUES (10, 4, '文件存储配置', '', 'layui-icon layui-icon-template-1', 'admin/config/file', '', '_self', 2, 1, '2018-09-06 16:43:19'); -INSERT INTO `system_menu` VALUES (11, 4, '系统参数配置', '', 'layui-icon layui-icon-set', 'admin/config/info', '', '_self', 1, 1, '2018-09-06 16:43:47'); -INSERT INTO `system_menu` VALUES (12, 2, '权限管理', '', '', '#', '', '_self', 20, 1, '2018-09-06 18:01:31'); -INSERT INTO `system_menu` VALUES (13, 0, '商城管理', '', '', '#', '', '_self', 200, 1, '2018-10-12 13:56:29'); -INSERT INTO `system_menu` VALUES (14, 48, '商品信息管理', '', 'layui-icon layui-icon-component', 'store/goods/index', '', '_self', 30, 1, '2018-10-12 13:56:48'); -INSERT INTO `system_menu` VALUES (16, 0, '微信管理', '', '', '#', '', '_self', 210, 1, '2018-10-31 15:15:27'); -INSERT INTO `system_menu` VALUES (17, 16, '微信管理', '', '', '#', '', '_self', 10, 1, '2018-10-31 15:16:46'); -INSERT INTO `system_menu` VALUES (18, 17, '微信授权配置', '', 'layui-icon layui-icon-set', 'wechat/config/options', '', '_self', 1, 1, '2018-10-31 15:17:11'); -INSERT INTO `system_menu` VALUES (19, 17, '微信支付配置', '', 'layui-icon layui-icon-rmb', 'wechat/config/payment', '', '_self', 2, 1, '2018-10-31 18:28:09'); -INSERT INTO `system_menu` VALUES (20, 16, '微信定制', '', '', '#', '', '_self', 20, 1, '2018-11-13 11:46:27'); -INSERT INTO `system_menu` VALUES (21, 20, '图文素材管理', '', 'layui-icon layui-icon-template', 'wechat/news/index', '', '_self', 1, 1, '2018-11-13 11:46:55'); -INSERT INTO `system_menu` VALUES (22, 20, '粉丝信息管理', '', 'layui-icon layui-icon-user', 'wechat/fans/index', '', '_self', 2, 1, '2018-11-15 09:51:13'); -INSERT INTO `system_menu` VALUES (23, 20, '回复规则管理', '', 'layui-icon layui-icon-engine', 'wechat/keys/index', '', '_self', 3, 1, '2018-11-22 11:29:08'); -INSERT INTO `system_menu` VALUES (24, 20, '关注回复配置', '', 'layui-icon layui-icon-senior', 'wechat/keys/subscribe', '', '_self', 4, 1, '2018-11-27 11:45:28'); -INSERT INTO `system_menu` VALUES (25, 20, '默认回复配置', '', 'layui-icon layui-icon-survey', 'wechat/keys/defaults', '', '_self', 5, 1, '2018-11-27 11:45:58'); -INSERT INTO `system_menu` VALUES (26, 20, '微信菜单管理', '', 'layui-icon layui-icon-cellphone', 'wechat/menu/index', '', '_self', 6, 1, '2018-11-27 17:56:56'); +INSERT INTO `system_menu` VALUES (1, 0, '后台首页', '', '', 'admin/index/main', '', '_self', 500, 1, '2018-09-05 17:59:38'); +INSERT INTO `system_menu` VALUES (2, 0, '系统管理', '', '', '#', '', '_self', 100, 1, '2018-09-05 18:04:52'); +INSERT INTO `system_menu` VALUES (3, 4, '系统菜单管理', '', 'layui-icon layui-icon-layouts', 'admin/menu/index', '', '_self', 1, 1, '2018-09-05 18:05:26'); +INSERT INTO `system_menu` VALUES (4, 2, '系统配置', '', '', '#', '', '_self', 20, 1, '2018-09-05 18:07:17'); +INSERT INTO `system_menu` VALUES (5, 12, '系统用户管理', '', 'layui-icon layui-icon-username', 'admin/user/index', '', '_self', 1, 1, '2018-09-06 11:10:42'); +INSERT INTO `system_menu` VALUES (7, 12, '访问权限管理', '', 'layui-icon layui-icon-vercode', 'admin/auth/index', '', '_self', 2, 1, '2018-09-06 15:17:14'); +INSERT INTO `system_menu` VALUES (11, 4, '系统参数配置', '', 'layui-icon layui-icon-set', 'admin/config/info', '', '_self', 4, 1, '2018-09-06 16:43:47'); +INSERT INTO `system_menu` VALUES (12, 2, '权限管理', '', '', '#', '', '_self', 10, 1, '2018-09-06 18:01:31'); +INSERT INTO `system_menu` VALUES (13, 0, '商城管理', '', '', '#', '', '_self', 400, 1, '2018-10-12 13:56:29'); +INSERT INTO `system_menu` VALUES (14, 48, '商品信息管理', '', 'layui-icon layui-icon-component', 'store/goods/index', '', '_self', 3, 1, '2018-10-12 13:56:48'); +INSERT INTO `system_menu` VALUES (16, 0, '微信管理', '', '', '#', '', '_self', 300, 1, '2018-10-31 15:15:27'); +INSERT INTO `system_menu` VALUES (17, 16, '微信管理', '', '', '#', '', '_self', 20, 1, '2018-10-31 15:16:46'); +INSERT INTO `system_menu` VALUES (18, 17, '微信授权配置', '', 'layui-icon layui-icon-set', 'wechat/config/options', '', '_self', 2, 1, '2018-10-31 15:17:11'); +INSERT INTO `system_menu` VALUES (19, 17, '微信支付配置', '', 'layui-icon layui-icon-rmb', 'wechat/config/payment', '', '_self', 1, 1, '2018-10-31 18:28:09'); +INSERT INTO `system_menu` VALUES (20, 16, '微信定制', '', '', '#', '', '_self', 10, 1, '2018-11-13 11:46:27'); +INSERT INTO `system_menu` VALUES (21, 20, '图文素材管理', '', 'layui-icon layui-icon-template', 'wechat/news/index', '', '_self', 6, 1, '2018-11-13 11:46:55'); +INSERT INTO `system_menu` VALUES (22, 20, '粉丝信息管理', '', 'layui-icon layui-icon-user', 'wechat/fans/index', '', '_self', 5, 1, '2018-11-15 09:51:13'); +INSERT INTO `system_menu` VALUES (23, 20, '回复规则管理', '', 'layui-icon layui-icon-engine', 'wechat/keys/index', '', '_self', 4, 1, '2018-11-22 11:29:08'); +INSERT INTO `system_menu` VALUES (24, 20, '关注回复配置', '', 'layui-icon layui-icon-senior', 'wechat/keys/subscribe', '', '_self', 3, 1, '2018-11-27 11:45:28'); +INSERT INTO `system_menu` VALUES (25, 20, '默认回复配置', '', 'layui-icon layui-icon-survey', 'wechat/keys/defaults', '', '_self', 2, 1, '2018-11-27 11:45:58'); +INSERT INTO `system_menu` VALUES (26, 20, '微信菜单管理', '', 'layui-icon layui-icon-cellphone', 'wechat/menu/index', '', '_self', 1, 1, '2018-11-27 17:56:56'); INSERT INTO `system_menu` VALUES (27, 4, '系统任务管理', '', 'layui-icon layui-icon-log', 'admin/queue/index', '', '_self', 3, 1, '2018-11-29 11:13:34'); -INSERT INTO `system_menu` VALUES (35, 4, '系统消息管理', '', 'layui-icon layui-icon-notice', 'admin/message/index', '', '_self', 4, 1, '2018-12-24 14:03:52'); -INSERT INTO `system_menu` VALUES (37, 0, '开放平台', '', '', '#', '', '_self', 220, 1, '2018-12-28 13:29:25'); +INSERT INTO `system_menu` VALUES (37, 0, '开放平台', '', '', '#', '', '_self', 200, 1, '2018-12-28 13:29:25'); INSERT INTO `system_menu` VALUES (38, 40, '开放平台配置', '', 'layui-icon layui-icon-set', 'service/config/index', '', '_self', 0, 1, '2018-12-28 13:29:44'); INSERT INTO `system_menu` VALUES (39, 40, '公众授权管理', '', 'layui-icon layui-icon-template-1', 'service/index/index', '', '_self', 0, 1, '2018-12-28 13:30:07'); -INSERT INTO `system_menu` VALUES (40, 37, '开放平台管理', '', '', '#', '', '_self', 0, 1, '2018-12-28 16:05:46'); -INSERT INTO `system_menu` VALUES (42, 48, '会员信息管理', '', 'layui-icon layui-icon-user', 'store/member/index', '', '_self', 50, 1, '2019-01-22 14:24:23'); -INSERT INTO `system_menu` VALUES (43, 48, '订单记录管理', '', 'layui-icon layui-icon-template-1', 'store/order/index', '', '_self', 40, 1, '2019-01-22 14:46:22'); -INSERT INTO `system_menu` VALUES (44, 48, '商品分类管理', '', 'layui-icon layui-icon-app', 'store/goods_cate/index', '', '_self', 20, 1, '2019-01-23 10:41:06'); -INSERT INTO `system_menu` VALUES (45, 47, '商城参数配置', '', 'layui-icon layui-icon-set', 'store/config/index', '', '_self', 10, 1, '2019-01-24 16:47:33'); -INSERT INTO `system_menu` VALUES (46, 47, '短信发送记录', '', 'layui-icon layui-icon-console', 'store/message/index', '', '_self', 30, 1, '2019-01-24 18:09:58'); -INSERT INTO `system_menu` VALUES (47, 13, '商城配置', '', '', '#', '', '_self', 10, 1, '2019-01-25 16:47:49'); -INSERT INTO `system_menu` VALUES (48, 13, '数据管理', '', '', '#', '', '_self', 20, 1, '2019-01-25 16:48:35'); -INSERT INTO `system_menu` VALUES (49, 4, '系统日志管理', '', 'layui-icon layui-icon-form', 'admin/oplog/index', '', '_self', 5, 1, '2019-02-18 12:56:56'); -INSERT INTO `system_menu` VALUES (50, 47, '快递公司管理', '', 'layui-icon layui-icon-form', 'store/express_company/index', '', '_self', 40, 1, '2019-04-01 17:10:59'); -INSERT INTO `system_menu` VALUES (52, 47, '邮费模板管理', '', 'layui-icon layui-icon-fonts-clear', 'store/express_template/index', '', '_self', 60, 1, '2019-04-23 13:17:10'); -INSERT INTO `system_menu` VALUES (53, 47, '配送省份管理', '', 'layui-icon layui-icon-location', 'store/express_province/index', '', '_self', 55, 1, '2019-04-24 14:47:27'); -INSERT INTO `system_menu` VALUES (54, 47, '商城短信配置', '', 'layui-icon layui-icon-dialogue', 'store/config/sms', '', '_self', 0, 1, '2019-06-14 14:21:19'); - --- ---------------------------- --- Table structure for system_message --- ---------------------------- -DROP TABLE IF EXISTS `system_message`; -CREATE TABLE `system_message` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '消息编号', - `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '消息名称', - `url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '跳转地址', - `desc` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '消息描述', - `node` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '消息授权', - `read_state` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '读取状态', - `read_uid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '读取用户', - `read_at` datetime NULL DEFAULT NULL COMMENT '读取时间', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '消息状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_system_message_code`(`code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-消息'; - --- ---------------------------- --- Table structure for system_node --- ---------------------------- -DROP TABLE IF EXISTS `system_node`; -CREATE TABLE `system_node` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `node` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '节点代码', - `title` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '节点标题', - `is_menu` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否可设置为菜单', - `is_auth` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '是否启动RBAC权限控制', - `is_login` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '是否启动登录控制', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_system_node_node`(`node`) USING BTREE, - INDEX `index_system_node_is_menu`(`is_menu`) USING BTREE, - INDEX `index_system_node_is_auth`(`is_auth`) USING BTREE, - INDEX `index_system_node_is_login`(`is_login`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-节点'; - --- ---------------------------- --- Records of system_node --- ---------------------------- -INSERT INTO `system_node` VALUES (1, 'admin', '系统管理', 0, 1, 1, '2019-06-14 16:51:00'); -INSERT INTO `system_node` VALUES (2, 'admin/auth/index', '系统权限管理', 1, 1, 1, '2019-06-14 16:51:01'); -INSERT INTO `system_node` VALUES (3, 'admin/auth/apply', '权限配置节点', 0, 1, 1, '2019-06-14 16:51:01'); -INSERT INTO `system_node` VALUES (4, 'admin/auth/add', '添加系统权限', 0, 1, 1, '2019-06-14 16:51:01'); -INSERT INTO `system_node` VALUES (5, 'admin/auth/edit', '编辑系统权限', 0, 1, 1, '2019-06-14 16:51:02'); -INSERT INTO `system_node` VALUES (6, 'admin/auth/forbid', '禁用系统权限', 0, 1, 1, '2019-06-14 16:51:02'); -INSERT INTO `system_node` VALUES (7, 'admin/auth/resume', '启用系统权限', 0, 1, 1, '2019-06-14 16:51:02'); -INSERT INTO `system_node` VALUES (8, 'admin/auth/remove', '删除系统权限', 0, 1, 1, '2019-06-14 16:51:02'); -INSERT INTO `system_node` VALUES (9, 'admin/config/info', '系统参数配置', 1, 1, 1, '2019-06-14 16:51:03'); -INSERT INTO `system_node` VALUES (10, 'admin/config/file', '文件存储配置', 1, 1, 1, '2019-06-14 16:51:04'); -INSERT INTO `system_node` VALUES (11, 'admin/menu/index', '系统菜单管理', 1, 1, 1, '2019-06-14 16:51:07'); -INSERT INTO `system_node` VALUES (12, 'admin/menu/add', '添加系统菜单', 0, 1, 1, '2019-06-14 16:51:07'); -INSERT INTO `system_node` VALUES (13, 'admin/menu/edit', '编辑系统菜单', 0, 1, 1, '2019-06-14 16:51:07'); -INSERT INTO `system_node` VALUES (14, 'admin/menu/resume', '启用系统菜单', 0, 1, 1, '2019-06-14 16:51:07'); -INSERT INTO `system_node` VALUES (15, 'admin/menu/forbid', '禁用系统菜单', 0, 1, 1, '2019-06-14 16:51:07'); -INSERT INTO `system_node` VALUES (16, 'admin/menu/remove', '删除系统菜单', 0, 1, 1, '2019-06-14 16:51:07'); -INSERT INTO `system_node` VALUES (17, 'admin/message/index', '系统消息管理', 1, 1, 1, '2019-06-14 16:51:10'); -INSERT INTO `system_node` VALUES (18, 'admin/message/read', '设置消息状态', 0, 1, 1, '2019-06-14 16:51:10'); -INSERT INTO `system_node` VALUES (19, 'admin/message/clear', '清理所有消息', 0, 1, 1, '2019-06-14 16:51:10'); -INSERT INTO `system_node` VALUES (20, 'admin/message/state', '设置消息开关', 0, 1, 1, '2019-06-14 16:51:10'); -INSERT INTO `system_node` VALUES (21, 'admin/message/remove', '删除系统消息', 0, 1, 1, '2019-06-14 16:51:11'); -INSERT INTO `system_node` VALUES (22, 'admin/node/index', '系统节点管理', 1, 1, 1, '2019-06-14 16:51:12'); -INSERT INTO `system_node` VALUES (23, 'admin/node/clear', '清理无效的节点', 0, 1, 1, '2019-06-14 16:51:13'); -INSERT INTO `system_node` VALUES (24, 'admin/node/save', '更新节点数据', 0, 1, 1, '2019-06-14 16:51:13'); -INSERT INTO `system_node` VALUES (25, 'admin/oplog/index', '系统操作日志', 1, 1, 1, '2019-06-14 16:51:16'); -INSERT INTO `system_node` VALUES (26, 'admin/oplog/clear', '清理系统日志', 0, 1, 1, '2019-06-14 16:51:16'); -INSERT INTO `system_node` VALUES (27, 'admin/oplog/remove', '删除系统日志', 0, 1, 1, '2019-06-14 16:51:16'); -INSERT INTO `system_node` VALUES (28, 'admin/queue/index', '系统消息任务', 1, 1, 1, '2019-06-14 16:51:19'); -INSERT INTO `system_node` VALUES (29, 'admin/queue/redo', '重置失败的任务', 0, 1, 1, '2019-06-14 16:51:19'); -INSERT INTO `system_node` VALUES (30, 'admin/queue/remove', '删除消息任务', 0, 1, 1, '2019-06-14 16:51:19'); -INSERT INTO `system_node` VALUES (31, 'admin/user/index', '系统用户管理', 1, 1, 1, '2019-06-14 16:51:22'); -INSERT INTO `system_node` VALUES (32, 'admin/user/auth', '用户授权管理', 0, 1, 1, '2019-06-14 16:51:22'); -INSERT INTO `system_node` VALUES (33, 'admin/user/add', '添加系统用户', 0, 1, 1, '2019-06-14 16:51:22'); -INSERT INTO `system_node` VALUES (34, 'admin/user/edit', '编辑系统用户', 0, 1, 1, '2019-06-14 16:51:22'); -INSERT INTO `system_node` VALUES (35, 'admin/user/pass', '修改用户密码', 0, 1, 1, '2019-06-14 16:51:23'); -INSERT INTO `system_node` VALUES (36, 'admin/user/forbid', '禁用系统用户', 0, 1, 1, '2019-06-14 16:51:23'); -INSERT INTO `system_node` VALUES (37, 'admin/user/resume', '启用系统用户', 0, 1, 1, '2019-06-14 16:51:23'); -INSERT INTO `system_node` VALUES (38, 'admin/user/remove', '删除系统用户', 0, 1, 1, '2019-06-14 16:51:23'); -INSERT INTO `system_node` VALUES (39, 'service', '开放平台', 0, 1, 1, '2019-06-14 16:51:33'); -INSERT INTO `system_node` VALUES (40, 'service/config/index', '开放平台参数配置', 1, 1, 1, '2019-06-14 16:51:34'); -INSERT INTO `system_node` VALUES (41, 'service/index/index', '公众授权管理', 1, 1, 1, '2019-06-14 16:51:34'); -INSERT INTO `system_node` VALUES (42, 'service/index/clearquota', '清理调用次数', 0, 1, 1, '2019-06-14 16:51:34'); -INSERT INTO `system_node` VALUES (43, 'service/index/sync', '同步指定授权公众号', 0, 1, 1, '2019-06-14 16:51:34'); -INSERT INTO `system_node` VALUES (44, 'service/index/syncall', '同步所有授权公众号', 0, 1, 1, '2019-06-14 16:51:34'); -INSERT INTO `system_node` VALUES (45, 'service/index/del', '删除公众号授权', 0, 1, 1, '2019-06-14 16:51:35'); -INSERT INTO `system_node` VALUES (46, 'service/index/forbid', '禁用公众号授权', 0, 1, 1, '2019-06-14 16:51:35'); -INSERT INTO `system_node` VALUES (47, 'service/index/resume', '启用公众号授权', 0, 1, 1, '2019-06-14 16:51:35'); -INSERT INTO `system_node` VALUES (48, 'store/config/index', '商城参数配置', 1, 1, 1, '2019-06-14 16:51:39'); -INSERT INTO `system_node` VALUES (49, 'store/config/sms', '商城短信配置', 1, 1, 1, '2019-06-14 16:51:40'); -INSERT INTO `system_node` VALUES (50, 'store/express_company/index', '快递公司管理', 1, 1, 1, '2019-06-14 16:51:42'); -INSERT INTO `system_node` VALUES (51, 'store/express_company/add', '添加快递公司', 0, 1, 1, '2019-06-14 16:51:43'); -INSERT INTO `system_node` VALUES (52, 'store/express_company/edit', '编辑快递公司', 0, 1, 1, '2019-06-14 16:51:43'); -INSERT INTO `system_node` VALUES (53, 'store/express_company/forbid', '禁用快递公司', 0, 1, 1, '2019-06-14 16:51:43'); -INSERT INTO `system_node` VALUES (54, 'store/express_company/resume', '启用快递公司', 0, 1, 1, '2019-06-14 16:51:43'); -INSERT INTO `system_node` VALUES (55, 'store/express_company/remove', '删除快递公司', 0, 1, 1, '2019-06-14 16:51:43'); -INSERT INTO `system_node` VALUES (56, 'store/express_province/index', '配送省份管理', 1, 1, 1, '2019-06-14 16:51:43'); -INSERT INTO `system_node` VALUES (57, 'store/express_province/add', '添加配送省份', 0, 1, 1, '2019-06-14 16:51:44'); -INSERT INTO `system_node` VALUES (58, 'store/express_province/edit', '编辑配送省份', 0, 1, 1, '2019-06-14 16:51:44'); -INSERT INTO `system_node` VALUES (59, 'store/express_province/resume', '启用配送省份', 0, 1, 1, '2019-06-14 16:51:44'); -INSERT INTO `system_node` VALUES (60, 'store/express_province/forbid', '禁用配送省份', 0, 1, 1, '2019-06-14 16:51:44'); -INSERT INTO `system_node` VALUES (61, 'store/express_province/remove', '删除配送省份', 0, 1, 1, '2019-06-14 16:51:44'); -INSERT INTO `system_node` VALUES (62, 'store/express_template/index', '邮费模板管理', 1, 1, 1, '2019-06-14 16:51:46'); -INSERT INTO `system_node` VALUES (63, 'store/goods/index', '商品信息管理', 1, 1, 1, '2019-06-14 16:51:46'); -INSERT INTO `system_node` VALUES (64, 'store/goods/stock', '商品库存入库', 0, 1, 1, '2019-06-14 16:51:46'); -INSERT INTO `system_node` VALUES (65, 'store/goods/add', '添加商品信息', 0, 1, 1, '2019-06-14 16:51:47'); -INSERT INTO `system_node` VALUES (66, 'store/goods/edit', '编辑商品信息', 0, 1, 1, '2019-06-14 16:51:47'); -INSERT INTO `system_node` VALUES (67, 'store/goods/forbid', '禁用商品信息', 0, 1, 1, '2019-06-14 16:51:47'); -INSERT INTO `system_node` VALUES (68, 'store/goods/resume', '启用商品信息', 0, 1, 1, '2019-06-14 16:51:47'); -INSERT INTO `system_node` VALUES (69, 'store/goods/remove', '删除商品信息', 0, 1, 1, '2019-06-14 16:51:47'); -INSERT INTO `system_node` VALUES (70, 'store/goods_cate/index', '商品分类管理', 1, 1, 1, '2019-06-14 16:51:48'); -INSERT INTO `system_node` VALUES (71, 'store/goods_cate/add', '添加商品分类', 0, 1, 1, '2019-06-14 16:51:48'); -INSERT INTO `system_node` VALUES (72, 'store/goods_cate/edit', '编辑添加商品分类', 0, 1, 1, '2019-06-14 16:51:48'); -INSERT INTO `system_node` VALUES (73, 'store/goods_cate/forbid', '禁用添加商品分类', 0, 1, 1, '2019-06-14 16:51:48'); -INSERT INTO `system_node` VALUES (74, 'store/goods_cate/resume', '启用商品分类', 0, 1, 1, '2019-06-14 16:51:48'); -INSERT INTO `system_node` VALUES (75, 'store/goods_cate/remove', '删除商品分类', 0, 1, 1, '2019-06-14 16:51:49'); -INSERT INTO `system_node` VALUES (76, 'store/member/index', '会员信息管理', 1, 1, 1, '2019-06-14 16:51:49'); -INSERT INTO `system_node` VALUES (77, 'store/message/index', '短信发送管理', 1, 1, 1, '2019-06-14 16:51:49'); -INSERT INTO `system_node` VALUES (78, 'store/order/index', '订单记录管理', 1, 1, 1, '2019-06-14 16:51:49'); -INSERT INTO `system_node` VALUES (79, 'store/order/express', '修改快递管理', 0, 1, 1, '2019-06-14 16:51:49'); -INSERT INTO `system_node` VALUES (80, 'store/order/expressquery', '快递追踪查询', 0, 1, 1, '2019-06-14 16:51:50'); -INSERT INTO `system_node` VALUES (81, 'store', '商城管理', 0, 1, 1, '2019-06-14 16:52:11'); -INSERT INTO `system_node` VALUES (82, 'wechat', '微信管理', 0, 1, 1, '2019-06-14 16:52:17'); -INSERT INTO `system_node` VALUES (83, 'wechat/config/options', '公众号授权绑定', 1, 1, 1, '2019-06-14 16:52:18'); -INSERT INTO `system_node` VALUES (84, 'wechat/config/payment', '公众号支付配置', 1, 1, 1, '2019-06-14 16:52:18'); -INSERT INTO `system_node` VALUES (85, 'wechat/fans/index', '微信粉丝管理', 1, 1, 1, '2019-06-14 16:52:20'); -INSERT INTO `system_node` VALUES (86, 'wechat/fans/setblack', '批量拉黑粉丝', 0, 1, 1, '2019-06-14 16:52:20'); -INSERT INTO `system_node` VALUES (87, 'wechat/fans/delblack', '取消拉黑粉丝', 0, 1, 1, '2019-06-14 16:52:20'); -INSERT INTO `system_node` VALUES (88, 'wechat/fans/sync', '同步粉丝列表', 0, 1, 1, '2019-06-14 16:52:20'); -INSERT INTO `system_node` VALUES (89, 'wechat/fans/del', '删除粉丝信息', 0, 1, 1, '2019-06-14 16:52:21'); -INSERT INTO `system_node` VALUES (90, 'wechat/keys/index', '回复规则管理', 1, 1, 1, '2019-06-14 16:52:22'); -INSERT INTO `system_node` VALUES (91, 'wechat/keys/add', '添加关键字', 0, 1, 1, '2019-06-14 16:52:22'); -INSERT INTO `system_node` VALUES (92, 'wechat/keys/edit', '编辑关键字', 0, 1, 1, '2019-06-14 16:52:22'); -INSERT INTO `system_node` VALUES (93, 'wechat/keys/del', '删除关键字', 0, 1, 1, '2019-06-14 16:52:22'); -INSERT INTO `system_node` VALUES (94, 'wechat/keys/forbid', '禁用关键字', 0, 1, 1, '2019-06-14 16:52:22'); -INSERT INTO `system_node` VALUES (95, 'wechat/keys/resume', '启用关键字', 0, 1, 1, '2019-06-14 16:52:23'); -INSERT INTO `system_node` VALUES (96, 'wechat/keys/subscribe', '配置关注回复', 0, 1, 1, '2019-06-14 16:52:23'); -INSERT INTO `system_node` VALUES (97, 'wechat/keys/defaults', '配置默认回复', 0, 1, 1, '2019-06-14 16:52:23'); -INSERT INTO `system_node` VALUES (98, 'wechat/menu/index', '微信菜单管理', 1, 1, 1, '2019-06-14 16:52:25'); -INSERT INTO `system_node` VALUES (99, 'wechat/menu/edit', '编辑微信菜单', 0, 1, 1, '2019-06-14 16:52:25'); -INSERT INTO `system_node` VALUES (100, 'wechat/menu/cancel', '取消微信菜单', 0, 1, 1, '2019-06-14 16:52:25'); -INSERT INTO `system_node` VALUES (101, 'wechat/news/index', '微信图文管理', 1, 1, 1, '2019-06-14 16:52:27'); -INSERT INTO `system_node` VALUES (102, 'wechat/news/select', '图文选择器', 0, 1, 1, '2019-06-14 16:52:27'); -INSERT INTO `system_node` VALUES (103, 'wechat/news/add', '添加微信图文', 0, 1, 1, '2019-06-14 16:52:27'); -INSERT INTO `system_node` VALUES (104, 'wechat/news/edit', '编辑微信图文', 0, 1, 1, '2019-06-14 16:52:27'); -INSERT INTO `system_node` VALUES (105, 'wechat/news/del', '删除微信图文', 0, 1, 1, '2019-06-14 16:52:28'); +INSERT INTO `system_menu` VALUES (40, 37, '平台管理', '', '', '#', '', '_self', 0, 1, '2018-12-28 16:05:46'); +INSERT INTO `system_menu` VALUES (42, 48, '会员信息管理', '', 'layui-icon layui-icon-user', 'store/member/index', '', '_self', 1, 1, '2019-01-22 14:24:23'); +INSERT INTO `system_menu` VALUES (43, 48, '订单记录管理', '', 'layui-icon layui-icon-template-1', 'store/order/index', '', '_self', 2, 1, '2019-01-22 14:46:22'); +INSERT INTO `system_menu` VALUES (44, 48, '商品分类管理', '', 'layui-icon layui-icon-app', 'store/goods_cate/index', '', '_self', 4, 1, '2019-01-23 10:41:06'); +INSERT INTO `system_menu` VALUES (45, 47, '商城参数配置', '', 'layui-icon layui-icon-set', 'store/config/index', '', '_self', 5, 1, '2019-01-24 16:47:33'); +INSERT INTO `system_menu` VALUES (46, 47, '短信发送记录', '', 'layui-icon layui-icon-console', 'store/message/index', '', '_self', 4, 1, '2019-01-24 18:09:58'); +INSERT INTO `system_menu` VALUES (47, 13, '商城配置', '', '', '#', '', '_self', 20, 1, '2019-01-25 16:47:49'); +INSERT INTO `system_menu` VALUES (48, 13, '数据管理', '', '', '#', '', '_self', 10, 1, '2019-01-25 16:48:35'); +INSERT INTO `system_menu` VALUES (49, 4, '系统日志管理', '', 'layui-icon layui-icon-form', 'admin/oplog/index', '', '_self', 2, 1, '2019-02-18 12:56:56'); +INSERT INTO `system_menu` VALUES (50, 47, '快递公司管理', '', 'layui-icon layui-icon-form', 'store/express_company/index', '', '_self', 3, 1, '2019-04-01 17:10:59'); +INSERT INTO `system_menu` VALUES (52, 47, '邮费模板管理', '', 'layui-icon layui-icon-fonts-clear', 'store/express_template/index', '', '_self', 1, 1, '2019-04-23 13:17:10'); +INSERT INTO `system_menu` VALUES (55, 17, '微信数据统计', '', 'layui-icon layui-icon-chart-screen', 'wechat/index/index', '', '_self', 3, 1, '2019-06-15 15:03:51'); -- ---------------------------- -- Table structure for system_user @@ -823,12 +621,13 @@ CREATE TABLE `system_user` ( UNIQUE INDEX `index_system_user_username`(`username`) USING BTREE, INDEX `index_system_user_status`(`status`) USING BTREE, INDEX `index_system_user_deleted`(`is_deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-用户'; +) ENGINE = InnoDB AUTO_INCREMENT = 10002 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-用户'; -- ---------------------------- -- Records of system_user -- ---------------------------- -INSERT INTO `system_user` VALUES (10000, 'admin', '21232f297a57a5a743894a0e4a801fc3', '22222222', '', '', '2019-06-14 10:19:46', '127.0.0.1', 569, '', '', 1, 0, '2015-11-13 15:14:22'); +INSERT INTO `system_user` VALUES (10000, 'admin', '21232f297a57a5a743894a0e4a801fc3', '22222222', '', '', '2019-07-04 17:43:24', '127.0.0.1', 608, '', '', 1, 0, '2015-11-13 15:14:22'); +INSERT INTO `system_user` VALUES (10001, 'tests', '0aad729995c6eb64866dbfc08a9858c9', '', '', '', '2019-07-02 11:11:08', '127.0.0.1', 9, '1', '', 1, 0, '2019-06-27 17:58:14'); -- ---------------------------- -- Table structure for wechat_fans diff --git a/application/admin/controller/Auth.php b/application/admin/controller/Auth.php index 642229812..a78d0686a 100644 --- a/application/admin/controller/Auth.php +++ b/application/admin/controller/Auth.php @@ -1,21 +1,24 @@ title = '系统权限管理'; $query = $this->_query($this->table)->dateBetween('create_at'); - $query->like('title,desc')->equal('status')->order('sort asc,id desc')->page(); + $query->like('title,desc')->equal('status')->order('sort desc,id desc')->page(); } /** * 权限配置节点 - * @return mixed + * @auth true * @throws \ReflectionException * @throws \think\Exception * @throws \think\exception\PDOException @@ -58,11 +63,8 @@ class Auth extends Controller $auth = $this->request->post('id', '0'); switch (strtolower($this->request->post('action'))) { case 'get': // 获取权限配置 - $nodes = \app\admin\service\AuthService::get(); - $checked = Db::name('SystemAuthNode')->where(['auth' => $auth])->column('node'); - foreach ($nodes as &$node) $node['checked'] = in_array($node['node'], $checked); - $data = $this->_apply_filter(\library\tools\Data::arr2tree($nodes, 'node', 'pnode', '_sub_')); - return $this->success('获取权限节点成功!', $data); + $checks = Db::name('SystemAuthNode')->where(['auth' => $auth])->column('node'); + return $this->success('获取权限节点成功!', NodeService::getAuthTree($checks)); case 'save': // 保存权限配置 list($post, $data) = [$this->request->post(), []]; foreach (isset($post['nodes']) ? $post['nodes'] : [] as $node) { @@ -70,29 +72,16 @@ class Auth extends Controller } Db::name('SystemAuthNode')->where(['auth' => $auth])->delete(); Db::name('SystemAuthNode')->insertAll($data); + NodeService::applyUserAuth(); return $this->success('权限授权更新成功!'); default: return $this->_form($this->table, 'apply'); } } - /** - * 节点数据拼装 - * @param array $nodes - * @param integer $level - * @return array - */ - private function _apply_filter($nodes, $level = 1) - { - foreach ($nodes as $key => $node) if (!empty($node['_sub_']) && is_array($node['_sub_'])) { - $node[$key]['_sub_'] = $this->_apply_filter($node['_sub_'], $level + 1); - } - return $nodes; - } - /** * 添加系统权限 - * @return array|string + * @auth true */ public function add() { @@ -102,7 +91,7 @@ class Auth extends Controller /** * 编辑系统权限 - * @return array|string + * @auth true */ public function edit() { @@ -110,8 +99,25 @@ class Auth extends Controller $this->_form($this->table, 'form'); } + /** + * 刷新系统权限 + * @auth true + */ + public function refresh() + { + try { + NodeService::applyUserAuth(true); + $this->success('刷新系统授权成功!'); + } catch (HttpResponseException $exception) { + throw $exception; + } catch (\Exception $e) { + $this->error("刷新系统授权失败
{$e->getMessage()}"); + } + } + /** * 禁用系统权限 + * @auth true */ public function forbid() { @@ -121,6 +127,7 @@ class Auth extends Controller /** * 启用系统权限 + * @auth true */ public function resume() { @@ -130,6 +137,7 @@ class Auth extends Controller /** * 删除系统权限 + * @auth true */ public function remove() { @@ -146,12 +154,12 @@ class Auth extends Controller protected function _remove_delete_result($result) { if ($result) { - $where = ['auth' => $this->request->post('id')]; - Db::name('SystemAuthNode')->where($where)->delete(); + $map = ['auth' => $this->request->post('id')]; + Db::name('SystemAuthNode')->where($map)->delete(); $this->success("权限删除成功!", ''); } else { $this->error("权限删除失败,请稍候再试!"); } } -} \ No newline at end of file +} diff --git a/application/admin/controller/Config.php b/application/admin/controller/Config.php index 4af77ff3f..91b4cdfab 100644 --- a/application/admin/controller/Config.php +++ b/application/admin/controller/Config.php @@ -1,20 +1,22 @@ '华东 1 杭州', + 'oss-cn-shanghai.aliyuncs.com' => '华东 2 上海', + 'oss-cn-qingdao.aliyuncs.com' => '华北 1 青岛', + 'oss-cn-beijing.aliyuncs.com' => '华北 2 北京', + 'oss-cn-zhangjiakou.aliyuncs.com' => '华北 3 张家口', + 'oss-cn-huhehaote.aliyuncs.com' => '华北 5 呼和浩特', + 'oss-cn-shenzhen.aliyuncs.com' => '华南 1 深圳', + 'oss-cn-hongkong.aliyuncs.com' => '香港 1', + 'oss-us-west-1.aliyuncs.com' => '美国西部 1 硅谷', + 'oss-us-east-1.aliyuncs.com' => '美国东部 1 弗吉尼亚', + 'oss-ap-southeast-1.aliyuncs.com' => '亚太东南 1 新加坡', + 'oss-ap-southeast-2.aliyuncs.com' => '亚太东南 2 悉尼', + 'oss-ap-southeast-3.aliyuncs.com' => '亚太东南 3 吉隆坡', + 'oss-ap-southeast-5.aliyuncs.com' => '亚太东南 5 雅加达', + 'oss-ap-northeast-1.aliyuncs.com' => '亚太东北 1 日本', + 'oss-ap-south-1.aliyuncs.com' => '亚太南部 1 孟买', + 'oss-eu-central-1.aliyuncs.com' => '欧洲中部 1 法兰克福', + 'oss-eu-west-1.aliyuncs.com' => '英国 1 伦敦', + 'oss-me-east-1.aliyuncs.com' => '中东东部 1 迪拜', + ]; + /** * 系统参数配置 - * @throws \think\Exception - * @throws \think\exception\PDOException + * @auth true + * @menu true */ public function info() { - $this->applyCsrfToken(); - if ($this->request->isGet()) { - $this->title = '系统参数配置'; - $this->fetch(); + $this->title = '系统参数配置'; + $this->applyCsrfToken('save'); + $this->fetch(); + } + + /** + * 保存参数到服务器 + * @auth true + * @throws \think\Exception + * @throws \think\exception\PDOException + */ + public function save() + { + $this->applyCsrfToken('save'); + $post = $this->request->post(); + if (isset($post['storage_type']) && isset($post['storage_local_exts'])) { + $exts = array_unique(explode(',', strtolower($post['storage_local_exts']))); + sort($exts); + if (in_array('php', $exts)) $this->error('禁止上传可执行文件到本地服务器!'); + $post['storage_local_exts'] = join(',', $exts); + } + foreach ($post as $key => $value) sysconf($key, $value); + if (isset($post['storage_type']) && $post['storage_type'] === 'oss') { + try { + $local = sysconf('storage_oss_domain'); + $bucket = $this->request->post('storage_oss_bucket'); + $domain = \library\File::instance('oss')->setBucket($bucket); + if (empty($local) || stripos($local, '.aliyuncs.com') !== false) { + sysconf('storage_oss_domain', $domain); + } + $this->success('阿里云OSS存储动态配置成功!'); + } catch (HttpResponseException $exception) { + throw $exception; + } catch (\Exception $e) { + $this->error("阿里云OSS存储配置失效,{$e->getMessage()}"); + } } else { - foreach ($this->request->post() as $k => $v) sysconf($k, $v); $this->success('系统参数配置成功!'); } } - /** - * 文件存储配置 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function file() - { - $this->applyCsrfToken(); - if ($this->request->isGet()) { - $this->fetch('file', [ - 'title' => '文件存储配置', - 'point' => [ - 'oss-cn-hangzhou.aliyuncs.com' => '华东 1 杭州', - 'oss-cn-shanghai.aliyuncs.com' => '华东 2 上海', - 'oss-cn-qingdao.aliyuncs.com' => '华北 1 青岛', - 'oss-cn-beijing.aliyuncs.com' => '华北 2 北京', - 'oss-cn-zhangjiakou.aliyuncs.com' => '华北 3 张家口', - 'oss-cn-huhehaote.aliyuncs.com' => '华北 5 呼和浩特', - 'oss-cn-shenzhen.aliyuncs.com' => '华南 1 深圳', - 'oss-cn-hongkong.aliyuncs.com' => '香港 1', - 'oss-us-west-1.aliyuncs.com' => '美国西部 1 硅谷', - 'oss-us-east-1.aliyuncs.com' => '美国东部 1 弗吉尼亚', - 'oss-ap-southeast-1.aliyuncs.com' => '亚太东南 1 新加坡', - 'oss-ap-southeast-2.aliyuncs.com' => '亚太东南 2 悉尼', - 'oss-ap-southeast-3.aliyuncs.com' => '亚太东南 3 吉隆坡', - 'oss-ap-southeast-5.aliyuncs.com' => '亚太东南 5 雅加达', - 'oss-ap-northeast-1.aliyuncs.com' => '亚太东北 1 日本', - 'oss-ap-south-1.aliyuncs.com' => '亚太南部 1 孟买', - 'oss-eu-central-1.aliyuncs.com' => '欧洲中部 1 法兰克福', - 'oss-eu-west-1.aliyuncs.com' => '英国 1 伦敦', - 'oss-me-east-1.aliyuncs.com' => '中东东部 1 迪拜', - ], - ]); - } else { - $post = $this->request->post(); - if (isset($post['storage_type']) && $post['storage_type'] === 'local') { - $exts = array_unique(explode(',', $post['storage_local_exts'])); - if (in_array('php', $exts)) $this->error('禁止上传可执行文件到本地服务器!'); - sort($exts); - $post['storage_local_exts'] = join(',', $exts); - } - foreach ($post as $key => $value) sysconf($key, $value); - if (isset($post['storage_type']) && $post['storage_type'] === 'oss') { - try { - $local = sysconf('storage_oss_domain'); - $bucket = $this->request->post('storage_oss_bucket'); - $domain = \library\File::instance('oss')->setBucket($bucket); - if (empty($local) || stripos($local, '.aliyuncs.com') !== false) { - sysconf('storage_oss_domain', $domain); - } - $this->success('阿里云OSS存储动态配置成功!'); - } catch (\think\exception\HttpResponseException $exception) { - throw $exception; - } catch (\Exception $e) { - $this->error("阿里云OSS存储配置失效,{$e->getMessage()}"); - } - } else { - $this->success('文件存储配置成功!'); - } - } - } - -} \ No newline at end of file +} diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php index fdf8beb13..6ef2a1c34 100644 --- a/application/admin/controller/Index.php +++ b/application/admin/controller/Index.php @@ -1,27 +1,29 @@ title = '系统管理后台'; - $this->menus = AuthService::getAuthMenu(); - if (empty($this->menus) && !session('user.id')) { + NodeService::applyUserAuth(true); + $this->menus = NodeService::getMenuNodeTree(); + if (empty($this->menus) && !NodeService::islogin()) { $this->redirect('@admin/login'); } else { $this->fetch(); @@ -48,7 +51,6 @@ class Index extends Controller /** * 后台环境信息 - * @return mixed */ public function main() { @@ -57,52 +59,6 @@ class Index extends Controller $this->fetch(); } - /** - * 清理系统运行缓存 - */ - public function clearRuntime() - { - if (!AuthService::isLogin()) { - $this->error('需要登录才能操作哦!'); - } - $this->list = [ - [ - 'title' => 'Clean up running cached files', - 'message' => nl2br(Console::call('clear')->fetch()), - ], [ - 'title' => 'Clean up invalid session files', - 'message' => nl2br(Console::call('xclean:session')->fetch()), - ], - ]; - $this->fetch('admin@index/command'); - } - - /** - * 压缩发布系统 - */ - public function buildOptimize() - { - if (!AuthService::isLogin()) { - $this->error('需要登录才能操作哦!'); - } - $this->list = [ - [ - 'title' => 'Build route cache', - 'message' => nl2br(Console::call('optimize:route')->fetch()), - ], [ - 'title' => 'Build database schema cache', - 'message' => nl2br(Console::call('optimize:schema')->fetch()), - ], [ - 'title' => 'Optimizes PSR0 and PSR4 packages', - 'message' => nl2br(Console::call('optimize:autoload')->fetch()), - ], [ - 'title' => 'Build config and common file cache', - 'message' => nl2br(Console::call('optimize:config')->fetch()), - ], - ]; - $this->fetch('admin@index/command'); - } - /** * 修改密码 * @param integer $id @@ -115,9 +71,12 @@ class Index extends Controller public function pass($id) { $this->applyCsrfToken(); - if (intval($id) !== intval(session('user.id'))) { + if (intval($id) !== intval(session('admin_user.id'))) { $this->error('只能修改当前用户的密码!'); } + if (!NodeService::islogin()) { + $this->error('需要登录才能操作哦!'); + } if ($this->request->isGet()) { $this->verify = true; $this->_form('SystemUser', 'admin@user/pass', 'id', [], ['id' => $id]); @@ -141,7 +100,7 @@ class Index extends Controller if (md5($data['oldpassword']) !== $user['password']) { $this->error('旧密码验证失败,请重新输入!'); } - $result = AuthService::checkPassword($data['password']); + $result = NodeService::checkpwd($data['password']); if (empty($result['code'])) $this->error($result['msg']); if (Data::save('SystemUser', ['id' => $user['id'], 'password' => md5($data['password'])])) { $this->success('密码修改成功,下次请使用新密码登录!', ''); @@ -157,12 +116,51 @@ class Index extends Controller */ public function info($id = 0) { + if (!NodeService::islogin()) { + $this->error('需要登录才能操作哦!'); + } $this->applyCsrfToken(); - if (intval($id) === intval(session('user.id'))) { + if (intval($id) === intval(session('admin_user.id'))) { $this->_form('SystemUser', 'admin@user/form', 'id', [], ['id' => $id]); } else { $this->error('只能修改登录用户的资料!'); } } -} \ No newline at end of file + /** + * 清理运行缓存 + * @auth true + */ + public function clearRuntime() + { + try { + Console::call('clear'); + Console::call('xclean:session'); + $this->success('清理运行缓存成功!'); + } catch (HttpResponseException $exception) { + throw $exception; + } catch (\Exception $e) { + $this->error("清理运行缓存失败,{$e->getMessage()}"); + } + } + + /** + * 压缩发布系统 + * @auth true + */ + public function buildOptimize() + { + try { + Console::call('optimize:route'); + Console::call('optimize:schema'); + Console::call('optimize:autoload'); + Console::call('optimize:config'); + $this->success('压缩发布成功!'); + } catch (HttpResponseException $exception) { + throw $exception; + } catch (\Exception $e) { + $this->error("压缩发布失败,{$e->getMessage()}"); + } + } + +} diff --git a/application/admin/controller/Login.php b/application/admin/controller/Login.php index afdf76900..efc8992af 100644 --- a/application/admin/controller/Login.php +++ b/application/admin/controller/Login.php @@ -1,20 +1,21 @@ title = '系统登录'; - } - - /** - * 后台登录页面显示 - */ - protected function _index_get() - { - if (AuthService::isLogin()) { - $this->redirect('@admin'); - } else { - $this->loginskey = session('loginskey'); - if (empty($this->loginskey)) { - $this->loginskey = uniqid(); - session('loginskey', $this->loginskey); - } - $this->fetch(); - } - } - - /** - * 后台登录数据处理 * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ - protected function _index_post() + public function index() { - $data = $this->_input([ - 'username' => $this->request->post('username'), - 'password' => $this->request->post('password'), - ], [ - 'username' => 'require|min:4', - 'password' => 'require|min:4', - ], [ - 'username.require' => '登录账号不能为空!', - 'password.require' => '登录密码不能为空!', - 'username.min' => '登录账号长度不能少于4位有效字符!', - 'password.min' => '登录密码长度不能少于4位有效字符!', - ]); - // 用户信息验证 - $map = ['is_deleted' => '0', 'username' => $data['username']]; - $user = Db::name('SystemUser')->where($map)->order('id desc')->find(); - if (empty($user)) $this->error('登录账号或密码错误,请重新输入!'); - if (empty($user['status'])) $this->error('账号已经被禁用,请联系管理员!'); - // 账号锁定消息 - $cache = cache("user_login_{$user['username']}"); - if (is_array($cache) && !empty($cache['number']) && !empty($cache['time'])) { - if ($cache['number'] >= 10 && ($diff = $cache['time'] + 3600 - time()) > 0) { - list($m, $s, $info) = [floor($diff / 60), floor($diff % 60), '']; - if ($m > 0) $info = "{$m} 分"; - $this->error("抱歉,该账号已经被锁定!

连续 10 次登录错误,请 {$info} {$s} 秒后再登录!

"); - } - } - if (md5($user['password'] . session('loginskey')) !== $data['password']) { - if (empty($cache) || empty($cache['time']) || empty($cache['number']) || $cache['time'] + 3600 < time()) { - $cache = ['time' => time(), 'number' => 1, 'geoip' => $this->request->ip()]; - } elseif ($cache['number'] + 1 <= 10) { - $cache = ['time' => time(), 'number' => $cache['number'] + 1, 'geoip' => $this->request->ip()]; - } - cache("user_login_{$user['username']}", $cache); - if (($diff = 10 - $cache['number']) > 0) { - $this->error("登录账号或密码错误!

还有 {$diff} 次尝试机会,将锁定一小时内禁止登录!

"); + $this->title = '系统登录'; + if ($this->request->isGet()) { + if (NodeService::islogin()) { + $this->redirect('@admin'); } else { - _syslog('系统管理', "账号{$user['username']}连续10次登录密码错误,请注意账号安全!"); - $this->error("登录账号或密码错误!

尝试次数达到上限,锁定一小时内禁止登录!

"); + $this->loginskey = session('loginskey'); + if (empty($this->loginskey)) { + $this->loginskey = uniqid(); + session('loginskey', $this->loginskey); + } + $this->fetch(); } + } else { + $data = $this->_input([ + 'username' => $this->request->post('username'), + 'password' => $this->request->post('password'), + ], [ + 'username' => 'require|min:4', + 'password' => 'require|min:4', + ], [ + 'username.require' => '登录账号不能为空!', + 'password.require' => '登录密码不能为空!', + 'username.min' => '登录账号长度不能少于4位有效字符!', + 'password.min' => '登录密码长度不能少于4位有效字符!', + ]); + // 用户信息验证 + $map = ['is_deleted' => '0', 'username' => $data['username']]; + $user = Db::name('SystemUser')->where($map)->order('id desc')->find(); + if (empty($user)) $this->error('登录账号或密码错误,请重新输入!'); + if (empty($user['status'])) $this->error('账号已经被禁用,请联系管理员!'); + // 账号锁定消息 + $cache = cache("user_login_{$user['username']}"); + if (is_array($cache) && !empty($cache['number']) && !empty($cache['time'])) { + if ($cache['number'] >= 10 && ($diff = $cache['time'] + 3600 - time()) > 0) { + list($m, $s, $info) = [floor($diff / 60), floor($diff % 60), '']; + if ($m > 0) $info = "{$m} 分"; + $this->error("抱歉,该账号已经被锁定!

连续 10 次登录错误,请 {$info} {$s} 秒后再登录!

"); + } + } + if (md5($user['password'] . session('loginskey')) !== $data['password']) { + if (empty($cache) || empty($cache['time']) || empty($cache['number']) || $cache['time'] + 3600 < time()) { + $cache = ['time' => time(), 'number' => 1, 'geoip' => $this->request->ip()]; + } elseif ($cache['number'] + 1 <= 10) { + $cache = ['time' => time(), 'number' => $cache['number'] + 1, 'geoip' => $this->request->ip()]; + } + cache("user_login_{$user['username']}", $cache); + if (($diff = 10 - $cache['number']) > 0) { + $this->error("登录账号或密码错误!

还有 {$diff} 次尝试机会,将锁定一小时内禁止登录!

"); + } else { + sysoplog('系统管理', "账号{$user['username']}连续10次登录密码错误,请注意账号安全!"); + $this->error("登录账号或密码错误!

尝试次数达到上限,锁定一小时内禁止登录!

"); + } + } + // 登录成功并更新账号 + cache("user_login_{$user['username']}", null); + Db::name('SystemUser')->where(['id' => $user['id']])->update([ + 'login_at' => Db::raw('now()'), 'login_ip' => $this->request->ip(), 'login_num' => Db::raw('login_num+1'), + ]); + session('loginskey', null); + session('admin_user', $user); + NodeService::applyUserAuth(); + sysoplog('系统管理', '用户登录系统成功'); + $this->success('登录成功,正在进入系统...', url('@admin')); } - // 登录成功并更新账号 - cache("user_login_{$user['username']}", null); - Db::name('SystemUser')->where(['id' => $user['id']])->update([ - 'login_at' => Db::raw('now()'), 'login_ip' => $this->request->ip(), 'login_num' => Db::raw('login_num+1'), - ]); - session('user', $user); - session('loginskey', null); - _syslog('系统管理', '用户登录系统成功'); - empty($user['authorize']) || AuthService::applyNode(); - $this->success('登录成功,正在进入系统...', url('@admin')); } /** @@ -123,4 +113,4 @@ class Login extends Controller $this->success('退出登录成功!', url('@admin/login')); } -} \ No newline at end of file +} diff --git a/application/admin/controller/Menu.php b/application/admin/controller/Menu.php index 14ee3fa14..7de80557a 100644 --- a/application/admin/controller/Menu.php +++ b/application/admin/controller/Menu.php @@ -1,19 +1,21 @@ request->isGet()) { - // 上级菜单处理 - $_menus = Db::name($this->table)->where(['status' => '1'])->order('sort asc,id asc')->select(); - $_menus[] = ['title' => '顶级菜单', 'id' => '0', 'pid' => '-1']; - $menus = Data::arr2table($_menus); - foreach ($menus as $key => &$menu) if (substr_count($menu['path'], '-') > 3) unset($menus[$key]); # 移除三级以下的菜单 - elseif (isset($vo['pid']) && $vo['pid'] !== '' && $cur = "-{$vo['pid']}-{$vo['id']}") - if (stripos("{$menu['path']}-", "{$cur}-") !== false || $menu['path'] === $cur) unset($menus[$key]); # 移除与自己相关联的菜单 - // 选择自己的上级菜单 - if (!isset($vo['pid']) && $this->request->get('pid', '0')) $vo['pid'] = $this->request->get('pid', '0'); - // 读取系统功能节点 - $nodes = \app\admin\service\AuthService::get(); - foreach ($nodes as $key => $node) { - if (empty($node['is_menu'])) unset($nodes[$key]); - unset($nodes[$key]['pnode'], $nodes[$key]['is_login'], $nodes[$key]['is_menu'], $nodes[$key]['is_auth']); + $menus = Db::name($this->table)->where(['status' => '1'])->order('sort desc,id asc')->select(); + $menus[] = ['title' => '顶级菜单', 'id' => '0', 'pid' => '-1']; + foreach ($this->menus = Data::arr2table($menus) as $key => &$menu) { + if (substr_count($menu['path'], '-') > 3) unset($this->menus[$key]); # 移除三级以下的菜单 + elseif (isset($vo['pid']) && $vo['pid'] !== '' && $cur = "-{$vo['pid']}-{$vo['id']}") { + if (stripos("{$menu['path']}-", "{$cur}-") !== false || $menu['path'] === $cur) unset($this->menus[$key]); # 移除与自己相关联的菜单 + } } - list($this->menus, $this->nodes) = [$menus, array_values($nodes)]; + // 选择自己的上级菜单 + if (empty($vo['pid']) && $this->request->get('pid', '0')) { + $vo['pid'] = $this->request->get('pid', '0'); + } + // 读取系统功能节点 + $this->nodes = NodeService::getMenuNodeList(); } } /** * 启用系统菜单 + * @auth true */ public function resume() { @@ -115,6 +120,7 @@ class Menu extends Controller /** * 禁用系统菜单 + * @auth true */ public function forbid() { @@ -124,6 +130,7 @@ class Menu extends Controller /** * 删除系统菜单 + * @auth true */ public function remove() { @@ -131,4 +138,4 @@ class Menu extends Controller $this->_delete($this->table); } -} \ No newline at end of file +} diff --git a/application/admin/controller/Message.php b/application/admin/controller/Message.php deleted file mode 100644 index 6913ed5d8..000000000 --- a/application/admin/controller/Message.php +++ /dev/null @@ -1,93 +0,0 @@ -title = '系统消息管理'; - $query = $this->_query($this->table)->like('title,desc')->equal('read_state'); - $query->dateBetween('create_at,read_at')->order('id desc')->page(); - } - - /** - * 设置消息状态 - */ - public function read() - { - $this->_save($this->table, ['read_state' => '1', 'read_at' => date('Y-m-d H:i:s')]); - } - - /** - * 清理所有消息 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function clear() - { - if (Db::name($this->table)->whereRaw('1=1')->delete() !== false) { - $this->success('系统消息清理成功!'); - } else { - $this->error('系统消息清理失败,请稍候再试!'); - } - } - - /** - * 设置消息开关 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function state() - { - sysconf('system_message_state', sysconf('system_message_state') ? 0 : 1); - if (sysconf('system_message_state')) { - $this->success('系统消息提示开启成功!'); - } else { - $this->success('系统消息提示关闭成功!'); - } - } - - /** - * 删除系统消息 - */ - public function remove() - { - $this->_delete($this->table); - } - -} \ No newline at end of file diff --git a/application/admin/controller/Node.php b/application/admin/controller/Node.php deleted file mode 100644 index 6dceab9d6..000000000 --- a/application/admin/controller/Node.php +++ /dev/null @@ -1,88 +0,0 @@ -title = '系统节点管理'; - list($nodes, $groups) = [\app\admin\service\AuthService::get(), []]; - $this->nodes = Data::arr2table($nodes, 'node', 'pnode'); - foreach ($this->nodes as $node) { - $pnode = explode('/', $node['node'])[0]; - if ($node['node'] === $pnode) $groups[$pnode]['node'] = $node; - $groups[$pnode]['list'][] = $node; - } - $this->groups = $groups; - $this->fetch(); - } - - /** - * 清理无效的节点 - * @throws \ReflectionException - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function clear() - { - $nodes = array_unique(array_column(\app\admin\service\AuthService::get(), 'node')); - if (false !== Db::name($this->table)->whereNotIn('node', $nodes)->delete()) { - $this->success('清理无效的节点配置成功!', ''); - } else { - $this->error('清理无效的节点配置,请稍候再试!'); - } - } - - /** - * 更新节点数据 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function save() - { - if ($this->request->isPost()) { - list($post, $data) = [$this->request->post(), []]; - foreach ($post['list'] as $vo) if (!empty($vo['node'])) { - $data['node'] = $vo['node']; - $data[$vo['name']] = $vo['value']; - } - empty($data) || data_save($this->table, $data, 'node'); - $this->success('节点配置保存成功!', ''); - } else { - $this->error('访问异常,请重新进入...'); - } - } - -} \ No newline at end of file diff --git a/application/admin/controller/Oplog.php b/application/admin/controller/Oplog.php index 8a9c25086..fd67f32e1 100644 --- a/application/admin/controller/Oplog.php +++ b/application/admin/controller/Oplog.php @@ -1,15 +1,16 @@ _delete($this->table); } -} \ No newline at end of file +} diff --git a/application/admin/controller/Queue.php b/application/admin/controller/Queue.php index 914a29ffb..8fe48e1a7 100644 --- a/application/admin/controller/Queue.php +++ b/application/admin/controller/Queue.php @@ -1,15 +1,16 @@ title = '消息任务管理'; - $this->cmd = 'php ' . env('root_path') . 'think xtask:start'; - $this->message = Console::call('xtask:state')->fetch(); + if (session('admin_user.username') === 'admin') { + $this->cmd = 'php ' . env('root_path') . 'think xtask:start'; + $this->message = Console::call('xtask:state')->fetch(); + } $this->uris = Db::name($this->table)->distinct(true)->column('uri'); $query = $this->_query($this->table)->dateBetween('create_at,status_at'); $query->equal('status,title,uri')->order('id desc')->page(); } /** - * 重置失败的任务 + * 重置失败任务 + * @auth true */ public function redo() { @@ -70,6 +76,7 @@ class Queue extends Controller /** * 删除消息任务 + * @auth true */ public function remove() { @@ -87,4 +94,4 @@ class Queue extends Controller } } -} \ No newline at end of file +} diff --git a/application/admin/controller/User.php b/application/admin/controller/User.php index 8c526051e..0eddad424 100644 --- a/application/admin/controller/User.php +++ b/application/admin/controller/User.php @@ -1,19 +1,21 @@ - * @date 2017/02/15 18:12 */ class User extends Controller { @@ -36,6 +36,8 @@ class User extends Controller /** * 系统用户管理 + * @auth true + * @menu true * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException @@ -45,23 +47,13 @@ class User extends Controller public function index() { $this->title = '系统用户管理'; - $query = $this->_query($this->table)->like('username,phone,mail')->dateBetween('login_at'); - $query->equal('status')->where(['is_deleted' => '0'])->order('id desc')->page(); - } - - /** - * 用户授权管理 - * @return mixed - */ - public function auth() - { - $this->applyCsrfToken(); - $this->_form($this->table, 'auth'); + $query = $this->_query($this->table)->like('username,phone,mail')->equal('status'); + $query->dateBetween('login_at')->where(['is_deleted' => '0'])->order('id desc')->page(); } /** * 添加系统用户 - * @return mixed + * @auth true */ public function add() { @@ -71,7 +63,7 @@ class User extends Controller /** * 编辑系统用户 - * @return mixed + * @auth true */ public function edit() { @@ -81,7 +73,7 @@ class User extends Controller /** * 修改用户密码 - * @return mixed + * @auth true * @throws \think\Exception * @throws \think\exception\PDOException */ @@ -96,10 +88,9 @@ class User extends Controller if ($post['password'] !== $post['repassword']) { $this->error('两次输入的密码不一致!'); } - $result = \app\admin\service\AuthService::checkPassword($post['password']); + $result = NodeService::checkpwd($post['password']); if (empty($result['code'])) $this->error($result['msg']); - $data = ['id' => $post['id'], 'password' => md5($post['password'])]; - if (Data::save($this->table, $data, 'id')) { + if (Data::save($this->table, ['id' => $post['id'], 'password' => md5($post['password'])], 'id')) { $this->success('密码修改成功,下次请使用新密码登录!', ''); } else { $this->error('密码修改失败,请稍候再试!'); @@ -117,19 +108,22 @@ class User extends Controller public function _form_filter(&$data) { if ($this->request->isPost()) { + NodeService::applyUserAuth(); $data['authorize'] = (isset($data['authorize']) && is_array($data['authorize'])) ? join(',', $data['authorize']) : ''; - if (isset($data['id'])) unset($data['username']); - elseif (Db::name($this->table)->where(['username' => $data['username']])->count() > 0) { + if (isset($data['id'])) { + unset($data['username']); + } elseif (Db::name($this->table)->where(['username' => $data['username']])->count() > 0) { $this->error('用户账号已经存在,请使用其它账号!'); } } else { $data['authorize'] = explode(',', isset($data['authorize']) ? $data['authorize'] : ''); - $this->assign('authorizes', Db::name('SystemAuth')->where(['status' => '1'])->select()); + $this->authorizes = Db::name('SystemAuth')->where(['status' => '1'])->order('sort desc,id desc')->select(); } } /** * 禁用系统用户 + * @auth true */ public function forbid() { @@ -142,6 +136,7 @@ class User extends Controller /** * 启用系统用户 + * @auth true */ public function resume() { @@ -151,6 +146,7 @@ class User extends Controller /** * 删除系统用户 + * @auth true */ public function remove() { diff --git a/application/admin/controller/api/Message.php b/application/admin/controller/api/Message.php deleted file mode 100644 index 9e8bd9c2e..000000000 --- a/application/admin/controller/api/Message.php +++ /dev/null @@ -1,64 +0,0 @@ -error('访问授权失败,请重新登录授权再试!'); - } - } - - /** - * 获取系统消息列表 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\ModelNotFoundException - * @throws \think\exception\DbException - */ - public function gets() - { - $list = \app\admin\service\MessageService::gets(); - $this->success('获取系统消息成功!', $list); - } - - /** - * 系统消息状态更新 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function set() - { - $code = $this->request->post('code'); - if (\app\admin\service\MessageService::set($code)) { - $this->success('系统消息状态更新成功!'); - } else { - $this->error('系统消息状态更新失败,请稍候再试!'); - } - } - -} \ No newline at end of file diff --git a/application/admin/controller/api/Plugs.php b/application/admin/controller/api/Plugs.php index f29c599ca..facbad7fa 100644 --- a/application/admin/controller/api/Plugs.php +++ b/application/admin/controller/api/Plugs.php @@ -14,6 +14,7 @@ namespace app\admin\controller\api; +use app\admin\service\NodeService; use library\Controller; use library\File; @@ -27,103 +28,15 @@ class Plugs extends Controller /** * Plugs constructor. - * @throws \think\Exception */ public function __construct() { parent::__construct(); - if (!\app\admin\service\AuthService::isLogin()) { + if (!NodeService::islogin()) { $this->error('访问授权失败,请重新登录授权再试!'); } } - /** - * 文件状态检查 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function upstate() - { - $ext = strtolower(pathinfo($this->request->post('filename', ''), PATHINFO_EXTENSION)); - $name = File::name($this->request->post('md5'), $ext, '', 'strtolower'); - // 检查文件是否已上传 - $this->safe = $this->getUploadSafe(); - if (is_string($siteUrl = File::url($name))) { - $this->success('检测到该文件已经存在,无需再次上传!', [ - 'site_url' => $this->safe ? $name : $siteUrl, - ]); - } - // 文件驱动 - $file = File::instance($this->getUploadType()); - // 生成上传授权参数 - $param = [ - 'file_url' => $name, 'uptype' => $this->uptype, 'token' => md5($name . session_id()), - 'site_url' => $file->base($name), 'server' => $file->upload(), 'safe' => $this->safe, - ]; - if (strtolower($this->uptype) === 'qiniu') { - $auth = new \Qiniu\Auth(sysconf('storage_qiniu_access_key'), sysconf('storage_qiniu_secret_key')); - $param['token'] = $auth->uploadToken(sysconf('storage_qiniu_bucket'), $name, 3600, [ - 'returnBody' => json_encode(['code' => 1, 'data' => ['site_url' => $file->base($name)]], JSON_UNESCAPED_UNICODE), - ]); - } elseif (strtolower($this->uptype) === 'oss') { - $param['OSSAccessKeyId'] = sysconf('storage_oss_keyid'); - $param['policy'] = base64_encode(json_encode(['conditions' => [['content-length-range', 0, 1048576000]], 'expiration' => gmdate("Y-m-d\TH:i:s\Z", time() + 3600)])); - $param['signature'] = base64_encode(hash_hmac('sha1', $param['policy'], sysconf('storage_oss_secret'), true)); - } - $this->error('未检测到文件,需要上传完整的文件!', $param); - } - - /** - * 文件上传 - * @return mixed - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function upfile() - { - $this->safe = $this->getUploadSafe(); - $this->uptype = $this->getUploadType(); - $this->mode = $this->request->get('mode', 'one'); - $this->field = $this->request->get('field', 'file'); - $this->types = $this->request->get('type', 'jpg,png'); - $this->mimes = File::mine($this->types); - $this->fetch(); - } - - /** - * WebUpload 文件上传 - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public function upload() - { - // 文件接收 - if (!($file = $this->getUploadFile()) || empty($file)) { - $this->error('文件上传异常,文件可能过大或未上传!'); - } - if (!$file->checkExt(strtolower(sysconf('storage_local_exts')))) { - $this->error('文件上传类型受限,请在后台配置!'); - } - if ($file->checkExt('php')) { - $this->error('可执行文件禁止上传到本地服务器!'); - } - // 唯一名称 - $ext = strtolower(pathinfo($file->getInfo('name'), PATHINFO_EXTENSION)); - $name = File::name($this->request->post('md5'), $ext, '', 'strtolower'); - // Token 验证 - if ($this->request->post('token') !== md5($name . session_id())) { - $this->error('文件上传验证失败,请刷新页面重新上传!'); - } - $this->safe = $this->getUploadSafe(); - $pathinfo = pathinfo(File::instance('local')->path($name, $this->safe)); - if ($file->move($pathinfo['dirname'], $pathinfo['basename'], true)) { - if (is_array($info = File::instance('local')->info($name, $this->safe)) && isset($info['url'])) { - $this->success('文件上传成功!', ['site_url' => $this->safe ? $name : $info['url']]); - } - } - $this->error('文件上传失败,请稍候再试!'); - } - /** * Plupload 插件上传文件 * @return \think\response\Json @@ -143,13 +56,14 @@ class Plugs extends Controller } $this->safe = $this->getUploadSafe(); $this->uptype = $this->getUploadType(); - $this->ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION); - $name = File::name($file->getPathname(), $this->ext, '', 'md5_file'); + $this->extend = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION); + $name = File::name($file->getPathname(), $this->extend, '', 'md5_file'); $info = File::instance($this->uptype)->save($name, file_get_contents($file->getRealPath()), $this->safe); if (is_array($info) && isset($info['url'])) { return json(['uploaded' => true, 'filename' => $name, 'url' => $this->safe ? $name : $info['url']]); + } else { + return json(['uploaded' => false, 'error' => ['message' => '文件处理失败,请稍候再试!']]); } - return json(['uploaded' => false, 'error' => ['message' => '文件处理失败,请稍候再试!']]); } /** @@ -191,7 +105,6 @@ class Plugs extends Controller /** * 系统选择器图标 - * @return mixed */ public function icon() { diff --git a/application/admin/queue/JobsQueue.php b/application/admin/queue/JobsQueue.php index 32ef24016..022c34e19 100644 --- a/application/admin/queue/JobsQueue.php +++ b/application/admin/queue/JobsQueue.php @@ -1,24 +1,26 @@ data = $data; - $this->output = new \think\console\Output(); + $this->output = new Output(); $this->id = isset($data['_job_id_']) ? $data['_job_id_'] : ''; $this->title = isset($data['_job_title_']) ? $data['_job_title_'] : ''; $this->output->newLine(); @@ -119,4 +121,4 @@ class JobsQueue return true; } -} \ No newline at end of file +} diff --git a/application/admin/service/AuthService.php b/application/admin/service/AuthService.php deleted file mode 100644 index 24ea7a48e..000000000 --- a/application/admin/service/AuthService.php +++ /dev/null @@ -1,176 +0,0 @@ -column('node,is_menu,is_auth,is_login,title'); - foreach (Node::getMethodTreeNode(env('app_path')) as $thr => $title) { - foreach ($ignore as $str) if (stripos($thr, $str) === 0) continue 2; - $tmp = explode('/', $thr); - list($one, $two) = ["{$tmp[0]}", "{$tmp[0]}/{$tmp[1]}"]; - $nodes[$one] = array_merge(isset($alias[$one]) ? $alias[$one] : ['node' => $one, 'title' => '', 'is_menu' => 0, 'is_auth' => 0, 'is_login' => 0], ['pnode' => '']); - $nodes[$two] = array_merge(isset($alias[$two]) ? $alias[$two] : ['node' => $two, 'title' => isset($map[$two]) ? $map[$two] : '', 'is_menu' => 0, 'is_auth' => 0, 'is_login' => 0], ['pnode' => $one]); - $nodes[$thr] = array_merge(isset($alias[$thr]) ? $alias[$thr] : ['node' => $thr, 'title' => $title, 'is_menu' => 0, 'is_auth' => 0, 'is_login' => 0], ['pnode' => $two]); - } - foreach ($nodes as &$node) list($node['is_auth'], $node['is_menu'], $node['is_login']) = [intval($node['is_auth']), intval($node['is_menu']), empty($node['is_auth']) ? intval($node['is_login']) : 1]; - return $nodes; - } - - /** - * 检查用户节点权限 - * @param string $node 节点 - * @return boolean - */ - public static function checkAuthNode($node) - { - list($module, $controller, $action) = explode('/', str_replace(['?', '=', '&'], '/', "{$node}///")); - $current = Node::parseString("{$module}/{$controller}") . strtolower("/{$action}"); - // 后台入口无需要验证权限 - if (stripos($node, 'admin/index') === 0) return true; - // 超级管理员无需要验证权限 - if (session('user.username') === 'admin') return true; - // 未配置权限的节点默认放行 - if (!in_array($current, self::getAuthNode())) return true; - // 用户指定角色授权放行 - return in_array($current, (array)session('user.nodes')); - } - - /** - * 获取授权节点 - * @return array - */ - public static function getAuthNode() - { - $nodes = cache('need_access_node'); - if (empty($nodes)) { - $nodes = Db::name('SystemNode')->where(['is_auth' => '1'])->column('node'); - cache('need_access_node', $nodes); - } - return $nodes; - } - - /** - * 应用用户权限节点 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\ModelNotFoundException - * @throws \think\exception\DbException - */ - public static function applyNode() - { - cache('need_access_node', null); - if (($uid = session('user.id'))) session('user', Db::name('SystemUser')->where('id', $uid)->find()); - if (session('user.authorize') && ($ids = explode(',', session('user.authorize')))) { - $auths = Db::name('SystemAuth')->whereIn('id', $ids)->where('status', '1')->column('id'); - if (empty($auths)) return session('user.nodes', []); - return session('user.nodes', Db::name('SystemAuthNode')->whereIn('auth', $auths)->column('node')); - } - return false; - } - - /** - * 判断用户登录状态 - * @return boolean - */ - public static function isLogin() - { - return !!session('user'); - } - - /** - * 获取授权后的菜单 - * @return array - * @throws \ReflectionException - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\ModelNotFoundException - * @throws \think\exception\DbException - */ - public static function getAuthMenu() - { - self::applyNode(); - $list = Db::name('SystemMenu')->where('status', '1')->order('sort asc,id asc')->select(); - return self::buildMenuData(Data::arr2tree($list), self::get(), self::isLogin()); - } - - /** - * 后台主菜单权限过滤 - * @param array $menus 当前菜单列表 - * @param array $nodes 系统权限节点数据 - * @param bool $isLogin 是否已经登录 - * @return array - */ - private static function buildMenuData($menus, $nodes, $isLogin) - { - foreach ($menus as $key => &$menu) { - if (!empty($menu['sub'])) $menu['sub'] = self::buildMenuData($menu['sub'], $nodes, $isLogin); - if (!empty($menu['sub'])) $menu['url'] = '#'; - elseif (preg_match('/^https?\:/i', $menu['url'])) continue; - elseif ($menu['url'] !== '#') { - $node = join('/', array_slice(explode('/', preg_replace('/[\W]/', '/', $menu['url'])), 0, 3)); - $menu['url'] = url($menu['url']) . (empty($menu['params']) ? '' : "?{$menu['params']}"); - if (isset($nodes[$node]) && $nodes[$node]['is_login'] && empty($isLogin)) unset($menus[$key]); - elseif (isset($nodes[$node]) && $nodes[$node]['is_auth'] && $isLogin && !self::checkAuthNode($node)) unset($menus[$key]); - } else unset($menus[$key]); - } - return $menus; - } - - /** - * 检查密码是否合法 - * @param string $password - * @return array - */ - public static function checkPassword($password) - { - $password = trim($password); - if (!strlen($password) >= 6) { - return ['code' => 0, 'msg' => '密码必须大于6字符!']; - } - if (!preg_match("/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,32}$/", $password)) { - return ['code' => 0, 'msg' => '密码必需包含大小写字母、数字、符号任意两者组合!']; - } - return ['code' => 1, 'msg' => '密码复杂度通过验证!']; - } - -} diff --git a/application/admin/service/MessageService.php b/application/admin/service/MessageService.php deleted file mode 100644 index 452e9fa8c..000000000 --- a/application/admin/service/MessageService.php +++ /dev/null @@ -1,72 +0,0 @@ - $title, 'desc' => $desc, 'url' => $url, 'code' => $code, 'node' => $node]; - return Db::name('SystemMessage')->insert($data) !== false; - } - - /** - * 系统消息状态更新 - * @param integer $code - * @return boolean - * @throws \think\Exception - * @throws \think\exception\PDOException - */ - public static function set($code) - { - $result = Db::name('SystemMessage')->where(['code' => $code, 'read_state' => '0'])->update([ - 'read_state' => '1', 'read_at' => date('Y-m-d H:i:s'), 'read_uid' => session('user.id'), - ]); - return $result !== false; - } - - /** - * 获取消息列表成功 - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\ModelNotFoundException - * @throws \think\exception\DbException - */ - public static function gets() - { - $where = ['read_state' => '0']; - $list = Db::name('SystemMessage')->where($where)->order('id desc')->select(); - foreach ($list as $key => $vo) if (!empty($vo['node']) && !auth($vo['node'])) unset($list[$key]); - return $list; - } - -} \ No newline at end of file diff --git a/application/admin/service/NodeService.php b/application/admin/service/NodeService.php new file mode 100644 index 000000000..51c670593 --- /dev/null +++ b/application/admin/service/NodeService.php @@ -0,0 +1,322 @@ += 6) { + return ['code' => 0, 'msg' => '密码必须大于6字符!']; + } + if (!preg_match("/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,32}$/", $password)) { + return ['code' => 0, 'msg' => '密码必需包含大小写字母、数字、符号任意两者组合!']; + } else { + return ['code' => 1, 'msg' => '密码复杂度通过验证!']; + } + } + + /** + * 获取可选菜单节点 + * @return array + * @throws \ReflectionException + */ + public static function getMenuNodeList() + { + static $nodes = []; + if (count($nodes) > 0) return $nodes; + foreach (self::getMethodList() as $node => $method) if ($method['menu']) { + $nodes[] = ['node' => $node, 'title' => $method['title']]; + } + return $nodes; + } + + /** + * 获取系统菜单树数据 + * @return array + * @throws \ReflectionException + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getMenuNodeTree() + { + $list = Db::name('SystemMenu')->where(['status' => '1'])->order('sort desc,id asc')->select(); + return self::buildMenuData(Data::arr2tree($list), self::getMethodList()); + } + + /** + * 后台主菜单权限过滤 + * @param array $menus 当前菜单列表 + * @param array $nodes 系统权限节点 + * @return array + * @throws \ReflectionException + */ + private static function buildMenuData($menus, $nodes) + { + foreach ($menus as $key => &$menu) { + if (!empty($menu['sub'])) $menu['sub'] = self::buildMenuData($menu['sub'], $nodes); + if (!empty($menu['sub'])) $menu['url'] = '#'; + elseif (preg_match('/^https?\:/i', $menu['url'])) continue; + elseif ($menu['url'] === '#') unset($menus[$key]); + else { + $node = join('/', array_slice(explode('/', preg_replace('/[\W]/', '/', $menu['url'])), 0, 3)); + $menu['url'] = url($menu['url']) . (empty($menu['params']) ? '' : "?{$menu['params']}"); + if (!self::checkAuth($node)) unset($menus[$key]); + } + } + return $menus; + } + + /** + * 获取授权节点列表 + * @return array + * @throws \ReflectionException + */ + public static function getAuthList() + { + static $nodes = []; + if (count($nodes) > 0) return $nodes; + $nodes = Cache::tag('system')->get('NodeAuthList', []); + if (count($nodes) > 0) return $nodes; + foreach (self::getMethodList() as $key => $node) { + if ($node['auth']) $nodes[$key] = $node['title']; + } + Cache::tag('system')->set('NodeAuthList', $nodes); + return $nodes; + } + + /** + * 检查节点授权 + * @param null|string $node + * @return boolean + * @throws \ReflectionException + */ + public static function checkAuth($node = null) + { + if (session('admin_user.username') === 'admin') return true; + $real = is_null($node) ? self::current() : self::full($node); + if (isset(self::getAuthList()[$real])) { + return in_array($real, (array)session('admin_user.nodes')); + } else { + return true; + } + } + + /** + * 获取授权节点列表 + * @param array $checkeds + * @return array + * @throws \ReflectionException + */ + public static function getAuthTree($checkeds = []) + { + static $nodes = []; + if (count($nodes) > 0) return $nodes; + foreach (self::getAuthList() as $node => $title) { + $pnode = substr($node, 0, strripos($node, '/')); + $nodes[$node] = ['node' => $node, 'title' => $title, 'pnode' => $pnode, 'checked' => in_array($node, $checkeds)]; + } + foreach (self::getClassList() as $node => $title) foreach (array_keys($nodes) as $key) { + if (stripos($key, "{$node}/") !== false) { + $pnode = substr($node, 0, strripos($node, '/')); + $nodes[$node] = ['node' => $node, 'title' => $title, 'pnode' => $pnode, 'checked' => in_array($node, $checkeds)]; + $nodes[$pnode] = ['node' => $pnode, 'title' => ucfirst($pnode), 'checked' => in_array($pnode, $checkeds)]; + } + } + return $nodes = Data::arr2tree($nodes, 'node', 'pnode', '_sub_'); + } + + /** + * 初始化用户权限 + * @param boolean $force 是否重置系统权限 + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function applyUserAuth($force = false) + { + if ($force) { + Cache::tag('system')->rm('NodeAuthList'); + Cache::tag('system')->rm('NodeClassData'); + Cache::tag('system')->rm('NodeMethodData'); + } + if (($uid = session('admin_user.id'))) { + session('admin_user', Db::name('SystemUser')->where(['id' => $uid])->find()); + } + $authorize = session('admin_user.authorize'); + if (!empty($authorize) && $authids = explode(',', $authorize)) { + $auths = Db::name('SystemAuth')->where(['status' => '1'])->whereIn('id', $authids)->column('id'); + if (empty($auths)) { + session('admin_user.nodes', []); + } else { + session('admin_user.nodes', array_unique(Db::name('SystemAuthNode')->whereIn('auth', $auths)->column('node'))); + } + } else { + session('admin_user.nodes', []); + } + } + + /** + * 获取控制器节点列表 + * @return array + * @throws \ReflectionException + */ + public static function getClassList() + { + static $nodes = []; + if (count($nodes) > 0) return $nodes; + $nodes = Cache::tag('system')->get('NodeClassData', []); + if (count($nodes) > 0) return $nodes; + self::eachController(function (\ReflectionClass $reflection, $prenode) use (&$nodes) { + list($node, $comment) = [trim($prenode, ' / '), $reflection->getDocComment()]; + $nodes[$node] = preg_replace('/^\/\*\*\*(.*?)\*.*?$/', '$1', preg_replace("/\s/", '', $comment)); + if (stripos($nodes[$node], '@') !== false) $nodes[$node] = ''; + }); + Cache::tag('system')->set('NodeClassData', $nodes); + return $nodes; + } + + /** + * 获取方法节点列表 + * @return array + * @throws \ReflectionException + */ + public static function getMethodList() + { + static $nodes = []; + if (count($nodes) > 0) return $nodes; + $nodes = Cache::tag('system')->get('NodeMethodData', []); + if (count($nodes) > 0) return $nodes; + self::eachController(function (\ReflectionClass $reflection, $prenode) use (&$nodes) { + foreach ($reflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { + $action = strtolower($method->getName()); + list($node, $comment) = ["{$prenode}{$action}", preg_replace("/\s/", '', $method->getDocComment())]; + $nodes[$node] = [ + 'auth' => stripos($comment, '@authtrue') !== false, + 'menu' => stripos($comment, '@menutrue') !== false, + 'title' => preg_replace('/^\/\*\*\*(.*?)\*.*?$/', '$1', $comment), + ]; + if (stripos($nodes[$node]['title'], '@') !== false) $nodes[$node]['title'] = ''; + } + }); + Cache::tag('system')->set('NodeMethodData', $nodes); + return $nodes; + } + + /** + * 控制器扫描回调 + * @param callable $callable + * @throws \ReflectionException + */ + public static function eachController($callable) + { + foreach (self::scanPath(env('app_path') . "*/controller/") as $file) { + if (!preg_match("|/(\w+)/controller/(.+)\.php$|", $file, $matches)) continue; + list($module, $controller) = [$matches[1], strtr($matches[2], '/', '.')]; + if (class_exists($class = substr(strtr(env('app_namespace') . $matches[0], '/', '\\'), 0, -4))) { + call_user_func($callable, new \ReflectionClass($class), Node::parseString("{$module}/{$controller}/")); + } + } + } + + /** + * 驼峰转下划线规则 + * @param string $node 节点名称 + * @return string + */ + public static function parseString($node) + { + if (count($nodes = explode('/', $node)) > 1) { + $dots = []; + foreach (explode('.', $nodes[1]) as $dot) { + $dots[] = trim(preg_replace("/[A-Z]/", "_\\0", $dot), "_"); + } + $nodes[1] = join('.', $dots); + } + return strtolower(join('/', $nodes)); + } + + /** + * 获取所有PHP文件 + * @param string $dirname 扫描目录 + * @param array $data 额外数据 + * @param string $ext 有文件后缀 + * @return array + */ + private static function scanPath($dirname, $data = [], $ext = 'php') + { + foreach (glob("{$dirname}*") as $file) { + if (is_dir($file)) { + $data = array_merge($data, self::scanPath("{$file}/")); + } elseif (is_file($file) && pathinfo($file, 4) === $ext) { + $data[] = str_replace('\\', '/', $file); + } + } + return $data; + } + +} diff --git a/application/admin/service/OplogService.php b/application/admin/service/OplogService.php index f03695d05..247d1898e 100644 --- a/application/admin/service/OplogService.php +++ b/application/admin/service/OplogService.php @@ -1,15 +1,16 @@ Node::current(), + return Db::name('SystemLog')->insert([ + 'node' => Node::current(), 'action' => $action, 'content' => $content, 'geoip' => PHP_SAPI === 'cli' ? '127.0.0.1' : request()->ip(), - 'action' => $action, - 'content' => $content, - 'username' => PHP_SAPI === 'cli' ? 'cli' : (string)session('user.username'), - ]; - return Db::name('SystemLog')->insert($data) !== false; + 'username' => PHP_SAPI === 'cli' ? 'cli' : (string)session('admin_user.username'), + ]); } /** - * 清理系统日志数据 + * 清理系统日志 * @return boolean * @throws \think\Exception * @throws \think\exception\PDOException @@ -52,4 +50,4 @@ class OplogService { return Db::name('SystemLog')->where('1=1')->delete() !== false; } -} \ No newline at end of file +} diff --git a/application/admin/service/QueueService.php b/application/admin/service/QueueService.php index ae41eda04..02f0441bb 100644 --- a/application/admin/service/QueueService.php +++ b/application/admin/service/QueueService.php @@ -1,15 +1,16 @@ where($where)->delete() > 0) { Db::name('SystemJobs')->whereLike('payload', '%"_job_id_":"' . $jobId . '"%')->delete(); return true; + } else { + return false; } - return false; } -} \ No newline at end of file +} diff --git a/application/admin/sys.php b/application/admin/sys.php index 77e37c3d7..f6f86ebd2 100644 --- a/application/admin/sys.php +++ b/application/admin/sys.php @@ -1,27 +1,35 @@ where(['name' => $name])->value('value'), true); + $data = json_decode(Db::name('SystemData')->where(['name' => $name])->value('value'), true); return empty($data) ? [] : $data; } else { return data_save('SystemData', ['name' => $name, 'value' => json_encode($value, JSON_UNESCAPED_UNICODE)], 'name'); @@ -45,31 +53,16 @@ if (!function_exists('sysdata')) { } } -if (!function_exists('_sysmsg')) { - /** - * 增加系统消息 - * @param string $title 消息标题 - * @param string $desc 消息描述 - * @param string $url 访问链接 - * @param string $node 权限节点 - * @return boolean - */ - function _sysmsg($title, $desc, $url, $node) - { - return \app\admin\service\MessageService::add($title, $desc, $url, $node); - } -} - -if (!function_exists('_syslog')) { +if (!function_exists('sysoplog')) { /** * 写入系统日志 * @param string $action 日志行为 * @param string $content 日志内容 * @return boolean */ - function _syslog($action, $content) + function sysoplog($action, $content) { - return \app\admin\service\OplogService::write($action, $content); + return OplogService::write($action, $content); } } @@ -81,7 +74,7 @@ if (!function_exists('local_image')) { */ function local_image($url) { - $result = \library\File::down($url); + $result = File::down($url); if (isset($result['url'])) { return $result['url']; } else { @@ -102,7 +95,7 @@ if (!function_exists('base64_image')) { try { if (preg_match('|^data:image/(.*?);base64,|i', $content)) { list($ext, $base) = explode('|||', preg_replace('|^data:image/(.*?);base64,|i', '$1|||', $content)); - $info = \library\File::save($predir . md5($base) . '.' . (empty($ext) ? 'tmp' : $ext), base64_decode($base)); + $info = File::save($predir . md5($base) . '.' . (empty($ext) ? 'tmp' : $ext), base64_decode($base)); return $info['url']; } else { return $content; @@ -113,25 +106,16 @@ if (!function_exists('base64_image')) { } } -// 系统权限检查中间键 -\think\facade\Middleware::add(function (\think\Request $request, \Closure $next) { - // 系统消息处理 - if (($code = $request->get('messagecode')) > 0) \app\admin\service\MessageService::set($code); - // 节点忽略跳过 - $node = \library\tools\Node::current(); - foreach (\app\admin\service\AuthService::getIgnore() as $str) if (stripos($node, $str) === 0) return $next($request); - // 节点权限查询 - $auth = \think\Db::name('SystemNode')->cache(true, 60)->field('is_auth,is_login')->where(['node' => $node])->find(); - $info = ['is_auth' => $auth['is_auth'], 'is_login' => $auth['is_auth'] ? 1 : $auth['is_login']]; - // 登录状态检查 - if (!empty($info['is_login']) && !\app\admin\service\AuthService::isLogin()) { - $message = ['code' => 0, 'msg' => '抱歉,您还没有登录获取访问权限!', 'url' => url('@admin/login')]; - return $request->isAjax() ? json($message) : redirect($message['url']); - } +// 访问权限检查中间键 +Middleware::add(function (Request $request, \Closure $next) { // 访问权限检查 - if (!empty($info['is_auth']) && !\app\admin\service\AuthService::checkAuthNode($node)) { - return json(['code' => 0, 'msg' => '抱歉,您没有访问该模块的权限!']); - } else { + if (NodeService::checkAuth()) { return $next($request); + } else { + if (NodeService::islogin()) { + return json(['code' => 0, 'msg' => '抱歉,没有访问该操作的权限!']); + } else { + return json(['code' => 0, 'msg' => '抱歉,您还没有登录获取访问权限!', 'url' => url('@admin/login')]); + } } -}); \ No newline at end of file +}); diff --git a/application/admin/view/api/plugs/icon.html b/application/admin/view/api/plugs/icon.html index f5e691282..d7dd5f261 100644 --- a/application/admin/view/api/plugs/icon.html +++ b/application/admin/view/api/plugs/icon.html @@ -3645,8 +3645,8 @@ - - - - -
-
-
-
-
-
- -
- - - diff --git a/application/admin/view/auth/apply.html b/application/admin/view/auth/apply.html index a15f865db..1fa49e874 100644 --- a/application/admin/view/auth/apply.html +++ b/application/admin/view/auth/apply.html @@ -1,5 +1,13 @@ {extend name='main'} +{block name="button"} + +{if auth("admin/auth/refresh")} + +{/if} + +{/block} + {block name="content"}
diff --git a/application/admin/view/auth/form.html b/application/admin/view/auth/form.html index 705ddd2af..3f1759db6 100644 --- a/application/admin/view/auth/form.html +++ b/application/admin/view/auth/form.html @@ -14,8 +14,8 @@
+ {notempty name='vo.id'}{/notempty}
- {notempty name='vo.id'}{/notempty}
diff --git a/application/admin/view/auth/index.html b/application/admin/view/auth/index.html index 5c5a28e49..b6ce7699c 100644 --- a/application/admin/view/auth/index.html +++ b/application/admin/view/auth/index.html @@ -1,30 +1,31 @@ {extend name='main'} {block name="button"} - - - - +{if auth("admin/auth/add")} + +{/if} + +{if auth("admin/auth/remove")} - +{/if} + {/block} {block name="content"}
- - - + {include file='auth/index_search'} +
{include file='auth/index_search'}
{notempty name='list'} - + @@ -32,13 +33,15 @@ {foreach $list as $key=>$vo} - + "].join("");o.push(v),r.fixed&&"right"!==r.fixed&&u.push(v),"right"===r.fixed&&f.push(v)}}),h.push(''+o.join("")+""),p.push(''+u.join("")+""),v.push(''+f.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+f).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(p.join("")),c.layFixRight.find("tbody").html(v.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return c.key=s.id||s.index,d.cache[c.key]=u,c.layPage[0==o||0===u.length&&1==n?"addClass":"removeClass"](y),r?m():0===u.length?(c.renderForm(),c.layFixed.remove(),c.layMain.find("tbody").html(""),c.layMain.find("."+f).remove(),c.layMain.append('
'+s.text.none+"
")):(m(),c.renderTotal(u),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.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||(c.page=e.curr,s.limit=e.limit,c.loading(),c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},F.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})});var l=[];t.eachCols(function(e,t){var n=t.field||e,o=['"].join("");l.push(o)}),t.layTotal.find("tbody").html(""+l.join("")+"")}},F.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},F.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},F.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},F.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},h=c.config,y=h.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},h.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[h.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,u,"sort("+y+")",{field:n,type:i})},F.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(g).remove()):(i.layInit=t(['
','',"
"].join("")),i.layBox.append(i.layInit)))},F.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},F.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},F.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},F.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=H.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e=e-(t.layPage.outerHeight()||41)-2),t.layMain.css("height",e))},F.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},F.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(x).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](y),e.layFixRight.css("right",a-1)},F.prototype.events=function(){var e,a=this,o=a.config,c=t("body"),s={},h=a.layHeader.find("th"),f=".layui-table-cell",p=o.elem.attr("lay-filter");a.layTool.on("click","*[lay-event]",function(e){var i=t(this),c=i.attr("lay-event"),s=function(e){var l=t(e.list),n=t('');n.html(l),o.height&&n.css("max-height",o.height-(a.layTool.outerHeight()||50)),i.find(".layui-table-tool-panel")[0]||i.append(n),a.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),R.trigger("table.tool.panel.remove"),l.close(a.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return a.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
  • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var i=t(e.elem),l=this.checked,n=i.data("key"),r=i.data("parentkey");layui.each(o.cols,function(e,t){layui.each(t,function(t,i){if(e+"-"+t===n){var d=i.hide;i.hide=!l,a.elem.find('*[data-key="'+o.index+"-"+n+'"]')[l?"removeClass":"addClass"](y),d!=i.hide&&a.setParentCol(!l,r),a.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
  • 导出到 Csv 文件
  • ','
  • 导出到 Excel 文件
  • '].join("")}(),done:function(e,i){i.on("click",function(){var e=t(this).data("type");d.exportFile(o.id,null,e)})}});break;case"LAYTABLE_PRINT":var h=window.open("打印窗口","_blank"),f=[""].join(""),v=t(a.layHeader.html());v.append(a.layMain.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),h.document.write(f+v.prop("outerHTML")),h.document.close(),h.print(),h.close()}layui.event.call(this,u,"toolbar("+p+")",t.extend({event:c,config:o},{}))}),h.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||s.resizeStart||(s.allowResize=i.width()-l<=10,c.css("cursor",s.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);s.resizeStart||c.css("cursor","")}).on("mousedown",function(e){var i=t(this);if(s.allowResize){var l=i.data("key");e.preventDefault(),s.resizeStart=!0,s.offset=[e.clientX,e.clientY],a.getCssRule(l,function(e){var t=e.style.width||i.outerWidth();s.rule=e,s.ruleWidth=parseFloat(t),s.minWidth=i.data("minwidth")||o.cellMinWidth})}}),R.on("mousemove",function(t){if(s.resizeStart){if(t.preventDefault(),s.rule){var i=s.ruleWidth+t.clientX-s.offset[0];i');return n[0].value=i.data("content")||l.text(),i.find("."+N)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(f);if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
    ')}};a.layBody.on("click","."+g,function(e){var i=t(this),n=i.parent(),d=n.children(f);a.tipsIndex=l.tips(['
    ',d.html(),"
    ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:a.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),a.layBody.on("click","*[lay-event]",function(){var e=t(this),i=e.parents("tr").eq(0).data("index");layui.event.call(this,u,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),a.setThisRowChecked(i)}),a.layMain.on("scroll",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layTotal.scrollLeft(i),a.layFixed.find(x).scrollTop(n),l.close(a.tipsIndex)}),R.on("click",function(){R.trigger("table.remove.tool.panel")}),R.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()}),H.on("resize",function(){a.resize()})},d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var a=c.config[e]||{},l={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],n=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(n.href="data:"+l+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],a=[];return layui.each(t,function(t,l){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(l),function(e,t){n.push(t)})):d.eachCols(e,function(e,a){a.field&&"normal"==a.type&&!a.hide&&(0==t&&i.push(a.title||""),n.push(l[a.field]))}),a.push(n.join(","))}),i.join(",")+"\r\n"+a.join("\r\n")}()),n.download=(a.title||"table_"+(a.index||""))+"."+i,document.body.appendChild(n),n.click(),void document.body.removeChild(n))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,i){i=i||{};var a=s(e);if(a)return i.data&&i.data.constructor===Array&&delete a.data,d.render(t.extend(!0,{},a,i))},d.render=function(e){var t=new F(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(u,d)}); \ No newline at end of file +/** layui-v2.5.4 MIT License By https://www.layui.com */ + ;layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
    "+o+"
    ").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",A=".layui-table-fixed-r",L=".layui-table-total",N=".layui-table-page",S=".layui-table-sort",W="layui-table-edit",_="layui-table-hover",E=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['
    - + 权限信息 创建时间状态使用状态
    + + 权限名称:{$vo.title|default='-'}
    - 权限描述:{$vo.desc|default="没有写描述哦!"} +

    权限描述:{$vo.desc|default="没有写描述哦!"}

    - 日期:{$vo.create_at|format_datetime|str_replace=' ','
    时间:',###|raw} + 日期:{$vo.create_at|format_datetime|str_replace=' ','
    时间:',###|raw}
    {eq name='vo.status' value='0'}已禁用{else}使用中{/eq} @@ -56,7 +59,7 @@ {if $vo.status eq 1 and auth("admin/auth/forbid")} 禁 用 - {elseif auth("admin/auth/resume")} + {elseif $vo.status eq 0 and auth("admin/auth/resume")} 启 用 {/if} @@ -74,4 +77,4 @@ -{/block} \ No newline at end of file +{/block} diff --git a/application/admin/view/auth/index_search.html b/application/admin/view/auth/index_search.html index 84a9c232c..2547555c4 100644 --- a/application/admin/view/auth/index_search.html +++ b/application/admin/view/auth/index_search.html @@ -1,5 +1,5 @@
    - 条件搜索 + 条件搜索
    ','
    '+function(){var n=t.extend(!0,{LAY_INDEX:m},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return m}return r.toolbar?i(t(r.toolbar).html()||"").render(n):r.templet?function(){return"function"==typeof r.templet?r.templet(n):i(t(r.templet).html()||String(p)).render(n)}():p}(),"
    ','
    '+function(){var e=t.totalRowText||"";return t.totalRow?parseFloat(a[n]).toFixed(2)||e:e}(),"
    ',"","{{# 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; } }}',function(){return 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("")},z=['',"","
    "].join(""),H=['
    ',"{{# if(d.data.toolbar){ }}",'
    ','
    ','
    ',"
    ","{{# } }}",'
    ',"{{# if(d.data.loading){ }}",'
    ','',"
    ","{{# } }}","{{# var left, right; }}",'
    ',E(),"
    ",'
    ',z,"
    ","{{# if(left){ }}",'
    ','
    ',E({fixed:!0}),"
    ",'
    ',z,"
    ","
    ","{{# }; }}","{{# if(right){ }}",'
    ','
    ',E({fixed:"right"}),'
    ',"
    ",'
    ',z,"
    ","
    ","{{# }; }}","
    ","{{# if(d.data.totalRow){ }}",'
    ','','',"
    ","
    ","{{# } }}","{{# if(d.data.page){ }}",'
    ','
    ',"
    ","{{# } }}","","
    "].join(""),R=t(window),F=t(document),I=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};I.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},I.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=R.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(H).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},I.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});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||i[e.type])},I.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},I.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
    ','
    ','
    '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i=r[t];i&&d.push('
    ')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},I.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},I.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},I.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},I.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},I.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},I.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('
    '+(e||"Error")+"
    ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},I.prototype.page=1,I.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},I.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},I.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=[],v=[],m=[],g=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],p=[],g=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,v=l[c];if(void 0!==v&&null!==v||(v=""),!r.colGroup){var m=['','
    '+function(){var n=t.extend(!0,{LAY_INDEX:g},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return g}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,v,n)}(),"
    "].join("");o.push(m),r.fixed&&"right"!==r.fixed&&y.push(m),"right"===r.fixed&&p.push(m)}}),h.push(''+o.join("")+""),v.push(''+y.join("")+""),m.push(''+p.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(v.join("")),c.layFixRight.find("tbody").html(m.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),r?g():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),g(),c.renderTotal(y),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.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||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},I.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})});var l=[];t.eachCols(function(e,t){var n=t.field||e,o=['','
    '+function(){var e=t.totalRowText||"";return t.totalRow?parseFloat(a[n]).toFixed(2)||e:e}(),"
    "].join("");l.push(o)}),t.layTotal.find("tbody").html(""+l.join("")+"")}},I.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},I.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},I.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},I.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},I.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['
    ','',"
    "].join("")),i.layBox.append(i.layInit)))},I.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},I.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},I.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},I.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=R.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},I.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},I.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
    ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},I.prototype.events=function(){var e,a=this,o=a.config,c=t("body"),s={},u=a.layHeader.find("th"),h=".layui-table-cell",p=o.elem.attr("lay-filter");a.layTool.on("click","*[lay-event]",function(e){var i=t(this),c=i.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
      ');n.html(l),o.height&&n.css("max-height",o.height-(a.layTool.outerHeight()||50)),i.find(".layui-table-tool-panel")[0]||i.append(n),a.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(a.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return a.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
    • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var i=t(e.elem),l=this.checked,n=i.data("key"),r=i.data("parentkey");layui.each(o.cols,function(e,t){layui.each(t,function(t,i){if(e+"-"+t===n){var d=i.hide;i.hide=!l,a.elem.find('*[data-key="'+o.index+"-"+n+'"]')[l?"removeClass":"addClass"](f),d!=i.hide&&a.setParentCol(!l,r),a.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
    • 导出到 Csv 文件
    • ','
    • 导出到 Excel 文件
    • '].join("")}(),done:function(e,i){i.on("click",function(){var e=t(this).data("type");d.exportFile(o.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=[""].join(""),v=t(a.layHeader.html());v.append(a.layMain.find("table").html()),v.append(a.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:o},{}))}),u.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||s.resizeStart||(s.allowResize=i.width()-l<=10,c.css("cursor",s.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);s.resizeStart||c.css("cursor","")}).on("mousedown",function(e){var i=t(this);if(s.allowResize){var l=i.data("key");e.preventDefault(),s.resizeStart=!0,s.offset=[e.clientX,e.clientY],a.getCssRule(l,function(e){var t=e.style.width||i.outerWidth();s.rule=e,s.ruleWidth=parseFloat(t),s.minWidth=i.data("minwidth")||o.cellMinWidth})}}),F.on("mousemove",function(t){if(s.resizeStart){if(t.preventDefault(),s.rule){var i=s.ruleWidth+t.clientX-s.offset[0];i');return n[0].value=i.data("content")||l.text(),i.find("."+W)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
      ')}};a.layBody.on("click","."+g,function(e){var i=t(this),n=i.parent(),d=n.children(h);a.tipsIndex=l.tips(['
      ',d.html(),"
      ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:a.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),a.layBody.on("click","*[lay-event]",function(){var e=t(this),i=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),a.setThisRowChecked(i)}),a.layMain.on("scroll",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layTotal.scrollLeft(i),a.layFixed.find(k).scrollTop(n),l.close(a.tipsIndex)}),F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()}),R.on("resize",function(){a.resize()})},d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var a=c.config[e]||{},l={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],n=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(n.href="data:"+l+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],a=[];return layui.each(t,function(t,l){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(l),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,a){a.field&&"normal"==a.type&&!a.hide&&(0==t&&i.push(a.title||""),n.push('"'+u(a,l[a.field],l,"text")+'"'))}),a.push(n.join(","))}),i.join(",")+"\r\n"+a.join("\r\n")}()),n.download=(a.title||"table_"+(a.index||""))+"."+i,document.body.appendChild(n),n.click(),void document.body.removeChild(n))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new I(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)}); \ No newline at end of file diff --git a/public/static/plugs/layui/lay/modules/transfer.js b/public/static/plugs/layui/lay/modules/transfer.js new file mode 100644 index 000000000..3d1901241 --- /dev/null +++ b/public/static/plugs/layui/lay/modules/transfer.js @@ -0,0 +1,2 @@ +/** layui-v2.5.4 MIT License By https://www.layui.com */ + ;layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,n=layui.form,i="transfer",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},v=['
        ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=i.find("."+y),e.layBtn=i.find("."+f+" .layui-btn"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=["
      • ",'',"
      • "].join("");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(i)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":n.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var n=a('

        '+(t||"")+"

        ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=("function"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&i.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var n=a(this),i=n.data("index"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find("."+y);i.children("li").each(function(){var t=a(this),n=t.find('input[type="checkbox"]'),i=n.data("hide");n[0].checked&&!i&&(n[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find("input").on("keyup",function(){var n=this.value,i=a(this).parents("."+h).eq(0).siblings("."+y),l=i.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),i=t[0].title.indexOf(n)!==-1;e[i?"removeClass":"addClass"](c),t.data("hide",!i)}),e.renderCheckBtn();var r=l.length===i.children("li."+c).length;e.noneView(i,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)}); \ No newline at end of file diff --git a/public/static/plugs/layui/lay/modules/tree.js b/public/static/plugs/layui/lay/modules/tree.js index e8c053d33..07d3a9f94 100644 --- a/public/static/plugs/layui/lay/modules/tree.js +++ b/public/static/plugs/layui/lay/modules/tree.js @@ -1,2 +1,2 @@ -/** layui-v2.4.5 MIT License By https://www.layui.com */ - ;layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
          '),s=o(["
        • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
        • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
          '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})}); \ No newline at end of file +/** layui-v2.5.4 MIT License By https://www.layui.com */ + ;layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n="tree",r={config:{},index:layui[n]?layui[n].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,n,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},t="layui-hide",d="layui-disabled",s="layui-tree-set",c="layui-tree-iconClick",o="layui-icon-addition",h="layui-icon-subtraction",u="layui-tree-entry",f="layui-tree-main",p="layui-tree-txt",y="layui-tree-pack",v="layui-tree-spread",C="layui-tree-setLineShort",m="layui-tree-showLine",k="layui-tree-lineExtend",g=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};g.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},g.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},g.prototype.render=function(){var e=this,a=e.config,n=i('
          ');e.tree(n);var r=a.elem=i(a.elem);if(r[0]){if(a.showSearch&&n.prepend(''),e.key=a.id||e.index,e.elem=n,e.elemNone=i('
          '+a.text.none+"
          "),r.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.drag&&e.drag(),a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(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(C),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(C)}),e.events()}},g.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},g.prototype.tree=function(e,a){var n=this,r=n.config,l=a||r.data;layui.each(l,function(a,l){var c=l.children&&l.children.length>0,o=i('
          '),h=i(['
          ',"
          ','
          ',function(){return r.showLine?c?'':'':''}(),function(){return r.showCheckbox?'':""}(),function(){return r.isJump&&l.href?''+(l.title||l.label||r.text.defaultNodeName)+"":''+(l.title||l.label||r.text.defaultNodeName)+""}(),"
          ",function(){if(!r.edit)return"";var e={add:'',update:'',del:''},i=['
          '];return r.edit===!0&&(r.edit=["update","del"]),"object"==typeof r.edit?(layui.each(r.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
          "):void 0}(),"
          "].join(""));c&&(h.append(o),n.tree(o,l.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),c||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,l),r.showCheckbox&&n.checkClick(h,l),r.edit&&n.operate(h,l)})},g.prototype.spread=function(e,a){var n=this,r=n.config,l=e.children("."+u),t=l.children("."+f),C=l.find("."+c),m=l.find("."+p),k=r.onlyIconControl?C:t,g="";k.on("click",function(i){var a=e.children("."+y),n=k.children(".layui-icon")[0]?k.children(".layui-icon"):k.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(v))e.removeClass(v),a.slideUp(200),n.removeClass(h).addClass(o);else if(e.addClass(v),a.slideDown(200),n.addClass(h).removeClass(o),r.accordion){var l=e.siblings("."+s);l.removeClass(v),l.children("."+y).slideUp(200),l.find(".layui-tree-icon").children(".layui-icon").removeClass(h).addClass(o)}}else g="normal"}),m.on("click",function(){var n=i(this);n.hasClass(d)||(g=e.hasClass(v)?r.onlyIconControl?"open":"close":r.onlyIconControl?"close":"open",r.click&&r.click({elem:e,state:g,data:a}))})},g.prototype.setCheckbox=function(e,i,a){var n=this,r=(n.config,a.prop("checked"));if("object"==typeof i.children||e.find("."+y)[0]){var l=e.find("."+y).find('input[name="layuiTreeCheck"]');l.each(function(){this.disabled||(this.checked=r)})}var t=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+y),n=a.parent(),l=a.prev().find('input[name="layuiTreeCheck"]');r?l.prop("checked",r):(a.find('input[name="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||l.prop("checked",!1)),t(n)}};t(e),n.renderForm("checkbox")},g.prototype.checkClick=function(e,a){var n=this,r=n.config,l=e.children("."+u),t=l.children("."+f);t.on("click",'input[name="layuiTreeCheck"]+',function(l){layui.stope(l);var t=i(this).prev(),d=t.prop("checked");t.prop("disabled")||(n.setCheckbox(e,a,t),r.oncheck&&r.oncheck({elem:e,checked:d,data:a}))})},g.prototype.operate=function(e,a){var n=this,r=n.config,l=e.children("."+u),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),g=e.children("."+y),x={data:a,type:f,elem:e};if("add"==f){g[0]||(r.showLine?(d.find("."+c).addClass("layui-tree-icon"),d.find("."+c).children(".layui-icon").addClass(o).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(t),e.append('
          '));var b=r.operate&&r.operate(x),w={};if(w.title=r.text.defaultNodeName,w.id=b,n.tree(e.children("."+y),[w]),r.showLine)if(g[0])g.hasClass(k)||g.addClass(k),e.find("."+y).each(function(){i(this).children("."+s).last().addClass(C)}),g.children("."+s).last().prev().hasClass(C)?g.children("."+s).last().prev().removeClass(C):g.children("."+s).last().removeClass(C),!e.parent("."+y)[0]&&e.next()[0]&&g.children("."+s).last().removeClass(C);else{var T=e.siblings("."+s),L=1,N=e.parent("."+y);layui.each(T,function(e,a){i(a).children("."+y)[0]||(L=0)}),1==L?(T.children("."+y).addClass(m),T.children("."+y).children("."+s).removeClass(C),e.children("."+y).addClass(m),N.removeClass(k),N.children("."+s).last().children("."+y).children("."+s).last().addClass(C)):e.children("."+y).children("."+s).addClass(C)}if(!r.showCheckbox)return;if(d.find('input[name="layuiTreeCheck"]')[0].checked){var A=e.children("."+y).children("."+s).last();A.find('input[name="layuiTreeCheck"]')[0].checked=!0}n.renderForm("checkbox")}else if("update"==f){var q=d.children("."+p).html();d.children("."+p).html(""),d.append(''),d.children(".layui-tree-editInput").val(q).focus();var F=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+p).html(i),x.data.title=i,r.operate&&r.operate(x)};d.children(".layui-tree-editInput").blur(function(){F(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),F(i(this)))})}else{if(r.operate&&r.operate(x),x.status="remove",!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+y)[0])return e.remove(),void n.elem.append(n.elemNone);if(e.siblings("."+s).children("."+u)[0]){if(r.showCheckbox){var I=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+u),r=e.parent("."+y).prev(),l=r.find('input[name="layuiTreeCheck"]')[0],t=1,d=0;0==l.checked&&(a.each(function(e,a){var n=i(a).find('input[name="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(t=0),n.disabled||(d=1)}),1==t&&1==d&&(l.checked=!0,n.renderForm("checkbox"),I(r.parent("."+s))))}};I(e)}if(r.showLine){var T=e.siblings("."+s),L=1,N=e.parent("."+y);layui.each(T,function(e,a){i(a).children("."+y)[0]||(L=0)}),1==L?(g[0]||(N.removeClass(k),T.children("."+y).addClass(m),T.children("."+y).children("."+s).removeClass(C)),e.next()[0]?N.children("."+s).last().children("."+y).children("."+s).last().addClass(C):e.prev().children("."+y).children("."+s).last().addClass(C),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(C)):!e.next()[0]&&e.hasClass(C)&&e.prev().addClass(C)}}else{var H=e.parent("."+y).prev();if(r.showLine){H.find("."+c).removeClass("layui-tree-icon"),H.find("."+c).children(".layui-icon").removeClass(h).addClass("layui-icon-file");var S=H.parents("."+y).eq(0);S.addClass(k),S.children("."+s).each(function(){i(this).children("."+y).children("."+s).last().addClass(C)})}else H.find(".layui-tree-iconArrow").addClass(t);e.parents("."+s).eq(0).removeClass(v),e.parent("."+y).remove()}e.remove()}})},g.prototype.drag=function(){var e=this,a=e.config;e.elem.on("dragstart","."+u,function(){var e=i(this).parent("."+s),n=e.parents("."+s)[0]?e.parents("."+s).eq(0):"未找到父节点";a.dragstart&&a.dragstart(e,n)}),e.elem.on("dragend","."+u,function(n){var n=n||event,r=n.clientY,l=i(this),d=l.parent("."+s),f=d.height(),p=d.offset().top,g=e.elem.find("."+s),x=e.elem.height(),b=e.elem.offset().top,w=x+b-13,T=d.parents("."+s)[0],L=d.next()[0];if(T)var N=d.parent("."+y),A=d.parents("."+s).eq(0),q=A.parent("."+y),F=A.offset().top,I=d.siblings(),H=A.children("."+y).children("."+s).length;var S=function(n){if(T||L||e.elem.children("."+s).last().children("."+y).children("."+s).last().addClass(C),!T)return void d.removeClass("layui-tree-setHide");if(1==H)a.showLine?(n.find("."+c).removeClass("layui-tree-icon"),n.find("."+c).children(".layui-icon").removeClass(h).addClass("layui-icon-file"),q.addClass(k),q.children("."+s).children("."+y).each(function(){i(this).children("."+s).last().addClass(C)})):n.find(".layui-tree-iconArrow").addClass(t),n.children("."+y).remove(),n.removeClass(v);else{if(a.showLine){var r=1;layui.each(I,function(e,a){i(a).children("."+y)[0]||(r=0)}),1==r?(d.children("."+y)[0]||(N.removeClass(k),I.children("."+y).addClass(m),I.children("."+y).children("."+s).removeClass(C)),N.children("."+s).last().children("."+y).children("."+s).last().addClass(C),L||n.parents("."+s)[0]||n.next()[0]||N.children("."+s).last().addClass(C)):!L&&d.hasClass(C)&&N.children("."+s).last().addClass(C)}if(a.showCheckbox){var l=function(a){if(a){if(!a.parents("."+s)[0])return}else if(!n[0])return;var r=a?a.siblings().children("."+u):I.children("."+u),t=a?a.parent("."+y).prev():N.prev(),d=t.find('input[name="layuiTreeCheck"]')[0],c=1,o=0;0==d.checked&&(r.each(function(e,a){var n=i(a).find('input[name="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(o=1)}),1==c&&1==o&&(d.checked=!0,e.renderForm("checkbox"),l(t.parent("."+s)||n)))};l()}}};g.each(function(){if(0!=i(this).height()){if(r>p&&rF&&rn&&r
          ')),i(this).children("."+y).append(d),S(A),a.showLine){var l=i(this).children("."+y).children("."+s);if(d.children("."+y).children("."+s).last().addClass(C),1==l.length){var h=i(this).siblings("."+s),v=1,g=i(this).parent("."+y);layui.each(h,function(e,a){i(a).children("."+y)[0]||(v=0)}),1==v?(h.children("."+y).addClass(m),h.children("."+y).children("."+s).removeClass(C),i(this).children("."+y).addClass(m),g.removeClass(k),g.children("."+s).last().children("."+y).children("."+s).last().addClass(C).removeClass("layui-tree-setHide")):i(this).children("."+y).children("."+s).addClass(C).removeClass("layui-tree-setHide")}else d.prev("."+s).hasClass(C)?(d.prev("."+s).removeClass(C),d.addClass(C)):(d.removeClass("layui-tree-setLineShort layui-tree-setHide"),d.children("."+y)[0]?d.prev("."+s).children("."+y).children("."+s).last().removeClass(C):d.siblings("."+s).find("."+y).each(function(){i(this).children("."+s).last().addClass(C)})),i(this).next()[0]||d.addClass(C)}if(a.showCheckbox&&i(this).children("."+u).find('input[name="layuiTreeCheck"]')[0].checked){var x=d.children("."+u);x.find('input[name="layuiTreeCheck"]+').click()}return a.dragend&&a.dragend("drag success",d,i(this)),!1}if(rw)return e.elem.children("."+s).last().children("."+y).addClass(m),e.elem.append(d),S(A),d.prev().children("."+y).children("."+s).last().removeClass(C),d.addClass("layui-tree-setHide"),d.children("."+y).children("."+s).last().addClass(C),a.dragend&&a.dragend("拖拽成功,插入最外层节点",d,e.elem),!1}})})},g.prototype.events=function(){var e=this,a=e.config,n=e.elem.find(".layui-tree-checkedFirst");layui.each(n,function(e,a){i(a).children("."+u).find('input[name="layuiTreeCheck"]+').trigger("click")}),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),r=n.val(),l=n.nextAll(),d=[];l.find("."+p).each(function(){var e=i(this).parents("."+u);if(i(this).html().indexOf(r)!=-1){d.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+y)[0]&&a(e.parent("."+y).parent("."+s))};a(e.parent("."+s))}}),l.find("."+u).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(t)}),0==l.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:d})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+u).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+t)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},g.prototype.getChecked=function(){var e=this,a=e.config,n=[],r=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var l=function(e,a){layui.each(e,function(e,r){layui.each(n,function(e,n){if(r.id==n){var t=i.extend({},r);return delete t.children,a.push(t),r.children&&(t.children=[],l(r.children,t.children)),!0}})})};return l(i.extend({},a.data),r),r},g.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var r=i(this).data("id"),l=i(n).children("."+u).find('input[name="layuiTreeCheck"]'),t=l.next();if("number"==typeof e){if(r==e)return l[0].checked||t.click(),!1}else i.inArray(r,e)!=-1&&(l[0].checked||t.click())})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new g(e);return l.call(i)},e(n,r)}); \ No newline at end of file diff --git a/public/static/plugs/layui/lay/modules/upload.js b/public/static/plugs/layui/lay/modules/upload.js index 404d534d9..4dee81bd1 100644 --- a/public/static/plugs/layui/lay/modules/upload.js +++ b/public/static/plugs/layui/lay/modules/upload.js @@ -1,2 +1,2 @@ -/** layui-v2.4.5 MIT License By https://www.layui.com */ - ;layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,r,e,i)}},l=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},p.prototype.file=function(){var e=this,t=e.config,n=e.elemFile=i(['"].join("")),o=t.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&t.elem.wrap('
          '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,t=e.config,n=i(''),a=i(['
          ',"
          "].join(""));i("#"+f)[0]||i("body").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(a),t.elem.next("."+c).append(function(){var e=[];return layui.each(t.data,function(i,t){t="function"==typeof t?t():t,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},p.prototype.upload=function(e,t){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var t=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&t+n===o.fileLength&&"function"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:t,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,i){i="function"==typeof i?i():i,r.append(e,i)}),i.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(i){t++,d(e,i),u()},error:function(){n++,o.msg("请求上传接口出现异常"),m(e),u()}})})},c=function(){var e=i("#"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var i,t=e.contents().find("body");try{i=t.text()}catch(n){o.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}i&&(clearInterval(p.timer),t.html(""),d(0,i))},30)},d=function(e,i){if(o.elemFile.next("."+s).remove(),r.value="","object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},o.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(i,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var i=[];return layui.each(e||o.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){o.preview(e)},upload:function(e,i){var t={};t[e]=i,o.upload(t)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,i){o.files[e]=i}),o.files},resetFile:function(e,i,t){var n=new File([i],t);o.files=o.files||{},o.files[e]=n}},y=function(){if("choose"!==t&&!l.auto||(l.choose&&l.choose(g),"choose"!==t))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return o.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return o.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return o.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,i){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(i))||(n=!0)}),n)return o.msg("选择的图片中包含不支持的格式"),r.value=""}if(o.fileLength=function(){var i=0,t=e||o.files||o.chooseFiles||r.files;return layui.each(t,function(){i++}),i}(),l.number&&o.fileLength>l.number)return o.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;t=t>=1?t.toFixed(2)+"MB":l.size+"KB",r.value="",F=t}}),F)return o.msg("文件不能超过"+F)}y()}},p.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+"-"+i]=t})},l=function(i,n){var a=e.elemFile,o=i.length>1?i.length+"个文件":(i[0]||{}).name||a[0].value.match(/[^\/\\]+\..+/g)||[]||"";a.next().hasClass(s)&&a.next().remove(),e.upload(null,"choose"),e.isFile()||t.choose||a.after(''+o+"")};t.elem.off("upload.start").on("upload.start",function(){var a=i(this),o=a.attr("lay-data");if(o)try{o=new Function("return "+o)(),e.config=i.extend({},t,o)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||t.elem.off("upload.over").on("upload.over",function(){var e=i(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=i(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,a){var r=i(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),t.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var i=this.files||[];o(i),t.auto?e.upload():l(i)}),t.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),t.elem.data("haveEvents")||(e.elemFile.on("change",function(){i(this).trigger("upload.change")}),t.elem.on("click",function(){e.isFile()||i(this).trigger("upload.start")}),t.drag&&t.elem.on("dragover",function(e){e.preventDefault(),i(this).trigger("upload.over")}).on("dragleave",function(e){i(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),i(this).trigger("upload.drop",e)}),t.bindAction.on("click",function(){i(this).trigger("upload.action")}),t.elem.data("haveEvents",!0))},o.render=function(e){var i=new p(e);return l.call(i)},e(r,o)}); \ No newline at end of file +/** layui-v2.5.4 MIT License By https://www.layui.com */ + ;layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,o.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['"].join("")),o=i.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&i.elem.wrap('
          '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),a=t(['
          ',"
          "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(a),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var i=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&i+n===o.fileLength&&"function"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:i,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)}),t.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,o.msg("请求上传接口出现异常"),m(e),u()}})})},c=function(){var e=t("#"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){o.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(o.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},o.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||o.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){o.preview(e)},upload:function(e,t){var i={};i[e]=t,o.upload(i)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,t){o.files[e]=t}),o.files},resetFile:function(e,t,i){var n=new File([t],i);o.files=o.files||{},o.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return o.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return o.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return o.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return o.msg("选择的图片中包含不支持的格式"),r.value=""}if(o.fileLength=function(){var t=0,i=e||o.files||o.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&o.fileLength>l.number)return o.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return o.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,o.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,o=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var a=e.elemFile,o=t.length>1?t.length+"个文件":(t[0]||{}).name||a[0].value.match(/[^\/\\]+\..+/g)||[]||"";a.next().hasClass(s)&&a.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||a.after(''+o+"")};i.elem.off("upload.start").on("upload.start",function(){var a=t(this),o=a.attr("lay-data");if(o)try{o=new Function("return "+o)(),e.config=t.extend({},i,o)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,a){var r=t(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];o(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},o.render=function(e){var t=new p(e);return l.call(t)},e(r,o)}); \ No newline at end of file diff --git a/public/static/plugs/layui/lay/modules/util.js b/public/static/plugs/layui/lay/modules/util.js index 8d38508c4..4148c2cab 100644 --- a/public/static/plugs/layui/lay/modules/util.js +++ b/public/static/plugs/layui/lay/modules/util.js @@ -1,2 +1,2 @@ -/** layui-v2.4.5 MIT License By https://www.layui.com */ - ;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,a,n="layui-fixbar",r="layui-fixbar-top",o=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['"].join("")),s=g.find("."+r),u=function(){var e=o.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+n)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),a=i.attr("lay-type");"top"===a&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,a)}),o.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var a=this,n="function"==typeof e,r=new Date(t).getTime(),o=new Date(!e||n?(new Date).getTime():e).getTime(),l=r-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=e);var g=setTimeout(function(){a.countdown(t,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(t).getTime();return n>6912e5?(n=new Date(t),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),e||(a[1][0]=i.digit(n.getHours()),a[1][1]=i.digit(n.getMinutes()),a[1][2]=i.digit(n.getSeconds())),a[0].join("-")+" "+a[1].join(":")):n>=864e5?(n/1e3/60/60/24|0)+"天前":n>=36e5?(n/1e3/60/60|0)+"小时前":n>=12e4?(n/1e3/60|0)+"分钟前":n<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var a=t.length;a/g,">").replace(/'/g,"'").replace(/"/g,""")}};!function(t,e,i){"$:nomunge";function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width(),a=e.height(),n=t.data(this,g);(i!==n.w||a!==n.h)&&e.trigger(c,[n.w=i,n.h=a])}),a()},o[s])}var n,r=t([]),o=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";o[s]=250,o[u]=!0,t.event.special[c]={setup:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===r.length&&a()},teardown:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.not(e),e.removeData(g),r.length||clearTimeout(n)},add:function(e){function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width(),l.h=r!==i?r:o.height(),n.apply(this,arguments)}if(!o[u]&&this[l])return!1;var n;return t.isFunction(e)?(n=e,a):(n=e.handler,void(e.handler=a))}}}(e,window),t("util",i)}); \ No newline at end of file +/** layui-v2.5.4 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['
            ',t.bar1?'
          • '+c[0]+"
          • ":"",t.bar2?'
          • '+c[1]+"
          • ":"",'
          • '+c[2]+"
          • ","
          "].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)}); \ No newline at end of file diff --git a/public/static/plugs/layui/layui.all.js b/public/static/plugs/layui/layui.all.js index 7abf3a349..8c19e71e0 100644 --- a/public/static/plugs/layui/layui.all.js +++ b/public/static/plugs/layui/layui.all.js @@ -1,5 +1,5 @@ -/** layui-v2.4.5 MIT License By https://www.layui.com */ - ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.4.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),layui["layui.all"]||!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
          ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
          "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期
          建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},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"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+n.timeTips+""),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push(''+o+""))}),e.push('"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));t.elem&&(n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length必须遵循下述格式:
          "+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"
          已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html(''+n+""),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.nowl.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.yeard[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e=t&&e=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["

          "+r.time[e]+"

            "];w.each(new Array(t),function(t){i.push(""+w.digit(t,2)+"")}),a.innerHTML=i.join("")+"
          ",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.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)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(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(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}), +/** layui-v2.5.4 MIT License By https://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.5.4"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
          ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
          "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期
          建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},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"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+n.timeTips+""),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push(''+o+""))}),e.push('"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));t.elem&&(n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length必须遵循下述格式:
          "+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"
          已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html(''+n+""),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.nowl.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.yeard[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e=t&&e=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["

          "+r.time[e]+"

            "];w.each(new Array(t),function(t){i.push(""+w.digit(t,2)+"")}),a.innerHTML=i.join("")+"
          ",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.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)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(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(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}), l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length
          a",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,""],legend:[1,"
          ","
          "],area:[1,"",""],param:[1,"",""],thead:[1,"","
          "],tr:[2,"","
          "],col:[2,"","
          "],td:[3,"","
          "],_default:fe.htmlSerialize?[0,"",""]:[1,"X
          ","
          "]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(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&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.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 pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;nt",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r
          a",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("
          ").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){ -for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
          '+(f?r.title[0]:r.title)+"
          ":"";return r.zIndex=s,t([r.shade?'
          ':"",'
          '+(e&&2!=r.type?"":u)+'
          '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
          '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
          '+e+"
          "}():"")+(r.resize?'':"")+"
          "],u,i('
          ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(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=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(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"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
            '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
          • '+(t[0].content||"no content")+"
          • ";i'+(t[i].content||"no content")+"";return a}()+"
          ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
          '+(u.length>1?'':"")+'
          '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
          ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
          是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);layui.define("jquery",function(t){"use strict";var a=layui.$,i=(layui.hint(),layui.device()),e="element",l="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.children(".layui-tab-bar"),o=l.children(".layui-tab-content"),r='
        • "+(i.title||"unnaming")+"
        • ";return s[0]?s.before(r):n.append(r),o.append('
          '+(i.content||"")+"
          "),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on("click",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e="layui-progress",l=a("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",i),s.text(i),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-more",h="layui-anim layui-anim-upbit",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),d=r.find("a"),y=c.attr("lay-filter");"javascript:;"!==d.attr("href")&&"_blank"===d.attr("target")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=a('');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=a(this);if(!t.find("."+l)[0]){var i=a('');i.on("click",f.tabDelete),t.append(i)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(a){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"收缩"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var i=a(".layui-tab-title");t!==!0&&"tabmore"===a(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr("lay-filter"),s=t.parent(),c=t.siblings("."+d),y="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||y||c[0]||(i.find("."+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===i.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=a(this),i=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),i.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find("."+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children("a").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),"block"===f.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find("."+y).addClass(y+"d")},300))};a(o+l).each(function(i){var l=a(this),o=a(''),h=l.find("."+r);l.find("."+c)[0]||(l.append(o),h.on("mouseenter",function(){b.call(this,o,l,i)}).on("mouseleave",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+y).removeClass(y+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find("a").each(function(){var t=a(this),i=(t.parent(),t.siblings("."+d));i[0]&&!t.children("."+y)[0]&&t.append(''),t.off("click",f.clickThis).on("click",f.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";a(t+l).each(function(){var t=a(this),i="lay-separator",e=t.attr(i)||"/",l=t.find("a");l.next("span["+i+"]")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";a("."+t+l).each(function(){var i=a(this),e=i.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),i.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";a("."+t+l).each(function(){var t=a(this).find(".layui-colla-item");t.each(function(){var t=a(this),i=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");i.find(".layui-colla-icon").remove(),i.append(''+(l?"":"")+""),i.off("click",f.collapse).on("click",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=".layui-tab-title li";b.on("click",v,f.tabClick),b.on("click",f.hideTabMore),a(window).on("resize",f.tabAuto),t(e,p)});layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,r,e,i)}},l=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},p.prototype.file=function(){var e=this,t=e.config,n=e.elemFile=i(['"].join("")),o=t.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&t.elem.wrap('
          '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,t=e.config,n=i(''),a=i(['
          ',"
          "].join(""));i("#"+f)[0]||i("body").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(a),t.elem.next("."+c).append(function(){var e=[];return layui.each(t.data,function(i,t){t="function"==typeof t?t():t,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},p.prototype.upload=function(e,t){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var t=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&t+n===o.fileLength&&"function"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:t,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,i){i="function"==typeof i?i():i,r.append(e,i)}),i.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(i){t++,d(e,i),u()},error:function(){n++,o.msg("请求上传接口出现异常"),m(e),u()}})})},c=function(){var e=i("#"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var i,t=e.contents().find("body");try{i=t.text()}catch(n){o.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}i&&(clearInterval(p.timer),t.html(""),d(0,i))},30)},d=function(e,i){if(o.elemFile.next("."+s).remove(),r.value="","object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},o.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(i,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var i=[];return layui.each(e||o.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){o.preview(e)},upload:function(e,i){var t={};t[e]=i,o.upload(t)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,i){o.files[e]=i}),o.files},resetFile:function(e,i,t){var n=new File([i],t);o.files=o.files||{},o.files[e]=n}},y=function(){if("choose"!==t&&!l.auto||(l.choose&&l.choose(g),"choose"!==t))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return o.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return o.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return o.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,i){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(i))||(n=!0)}),n)return o.msg("选择的图片中包含不支持的格式"),r.value=""}if(o.fileLength=function(){var i=0,t=e||o.files||o.chooseFiles||r.files;return layui.each(t,function(){i++}),i}(),l.number&&o.fileLength>l.number)return o.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;t=t>=1?t.toFixed(2)+"MB":l.size+"KB",r.value="",F=t}}),F)return o.msg("文件不能超过"+F)}y()}},p.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+"-"+i]=t})},l=function(i,n){var a=e.elemFile,o=i.length>1?i.length+"个文件":(i[0]||{}).name||a[0].value.match(/[^\/\\]+\..+/g)||[]||"";a.next().hasClass(s)&&a.next().remove(),e.upload(null,"choose"),e.isFile()||t.choose||a.after(''+o+"")};t.elem.off("upload.start").on("upload.start",function(){var a=i(this),o=a.attr("lay-data");if(o)try{o=new Function("return "+o)(),e.config=i.extend({},t,o)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||t.elem.off("upload.over").on("upload.over",function(){var e=i(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=i(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,a){var r=i(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),t.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var i=this.files||[];o(i),t.auto?e.upload():l(i)}),t.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),t.elem.data("haveEvents")||(e.elemFile.on("change",function(){i(this).trigger("upload.change")}),t.elem.on("click",function(){e.isFile()||i(this).trigger("upload.start")}),t.drag&&t.elem.on("dragover",function(e){e.preventDefault(),i(this).trigger("upload.over")}).on("dragleave",function(e){i(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),i(this).trigger("upload.drop",e)}),t.bindAction.on("click",function(){i(this).trigger("upload.action")}),t.elem.data("haveEvents",!0))},o.render=function(e){var i=new p(e);return l.call(i)},e(r,o)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide("set",i,t||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",m="layui-slider-input-btn",p="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.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:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var p=t.disabled?"#c2c2c2":t.theme,f='
          '+(t.tips?'
          ':"")+'
          '+(t.range?'
          ':"")+"
          ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
          ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),u=l.setTips?l.setTips(u):u,s.find("."+d).html(u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
          f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children("."+m).fadeIn("fast")},function(){var e=i(this);e.children("."+m).fadeOut("fast")}),y.children("."+m).children("i").each(function(e){i(this).on("click",function(){g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t="colorpicker",n="layui-show",l="layui-colorpicker",c=".layui-colorpicker-main",a="layui-icon-down",s="layui-icon-close",f="layui-colorpicker-trigger-span",d="layui-colorpicker-trigger-i",u="layui-colorpicker-side",p="layui-colorpicker-side-slider",g="layui-colorpicker-basis",v="layui-colorpicker-alpha-bgcolor",h="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",b="layui-colorpicker-main-input",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]="0"+i)}),r.join("")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['
          ',"",'3&&(o.alpha&&"rgb"==o.format||(e="#"+C(k(P(o.color))))),"background: "+e):e}()+'">','',"","","
          "].join("")),t=i(o.elem);o.size&&r.addClass("layui-colorpicker-"+o.size),t.addClass("layui-inline").html(e.elemColorBox=r),e.color=e.elemColorBox.find("."+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['
          ','
          ','
          ','
          ','
          ','
          ',"
          ",'
          ','
          ',"
          ","
          ",'
          ','
          ','
          ',"
          ","
          ",function(){if(o.predefine){var e=['
          '];return layui.each(o.colors,function(i,o){e.push(['
          ','
          ',"
          "].join(""))}),e.push("
          "),e.join("")}return""}(),'
          ','
          ','',"
          ",'
          ','','',"","
          "].join(""));e.elemColorBox.find("."+f)[0];i(c)[0]&&i(c).data("index")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i("body").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i("#layui-colorpicker"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a("width")?f=a("width")-n-s:fa()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+("fixed"===i.position?0:c(1))+"px",r.style.top=d+("fixed"===i.position?0:c())+"px"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+f)),o=e.elemPicker.find("."+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr("lay-type");if(e.select(n.h,n.s,n.b),"torgb"===l&&o.find("input").val(t),"rgba"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+h).css("left",280);else{o.find("input").val(t);var a=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+h).css("left",a)}e.elemPicker.find("."+v)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),o.find("input").val(""),e.elemPicker.find("."+v)[0].style.background="",e.elemPicker.find("."+h).css("left",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=r.attr("lay-type"),n=e.elemPicker.find("."+u),l=e.elemPicker.find("."+p),c=e.elemPicker.find("."+g),y=e.elemPicker.find("."+m),C=e.elemPicker.find("."+v),w=e.elemPicker.find("."+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find("."+d),F=e.elemPicker.find(".layui-colorpicker-pre").children("div"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background="rgb("+f.r+", "+f.g+", "+f.b+")","torgb"===t&&e.elemPicker.find("."+b).find("input").val("rgb("+f.r+", "+f.g+", "+f.b+")"),"rgba"===t){var d=0;d=280*c,w.css("left",d),e.elemPicker.find("."+b).find("input").val("rgba("+f.r+", "+f.g+", "+f.b+", "+c+")"),r[0].style.background="rgba("+f.r+", "+f.g+", "+f.b+", "+c+")",C[0].style.background="linear-gradient(to right, rgba("+f.r+", "+f.g+", "+f.b+", 0), rgb("+f.r+", "+f.g+", "+f.b+"))"}o.change&&o.change(e.elemPicker.find("."+b).find("input").val())},M=i(['
          t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on("click",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on("mousedown",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on("mousedown",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,"mousedown")}),w.on("mousedown",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on("click",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(",")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find("."+p).css("top",c),t.elemPicker.find("."+g)[0].style.background="#"+n,t.elemPicker.find("."+m).css({top:a,left:s}),"change"!==r&&t.elemPicker.find("."+b).find("input").val("#"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=e.elemPicker.find("."+b+" input"),n={clear:function(i){r[0].style.background="",e.elemColorBox.find("."+d).removeClass(a).addClass(s),e.color="",o.done&&o.done(""),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(",")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c="#"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===r.attr("lay-type")){var u=280*l.slice(l.lastIndexOf(",")+1,l.length-1);e.elemPicker.find("."+h).css("left",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c="#"+C(f),e.elemColorBox.find("."+d).removeClass(s).addClass(a);return"change"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),o=e.attr("colorpicker-events");n[o]&&n[o].call(this,e)}),t.on("keyup",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:"change")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f);e.elemColorBox.on("click",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on("click",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents("."+l)[0]&&!i(o.target).hasClass(c.replace(/\./g,""))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find("."+d).removeClass(a).addClass(s);r[0].style.background=e.color||"",e.removePicker()}}),B.on("resize",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",s="layui-this",o="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:function(e){if(!e||isNaN(e))return"只能填写数字"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};u.prototype.set=function(e){var t=this;return i.extend(!0,t.config,e),t},u.prototype.verify=function(e){var t=this;return i.extend(!0,t.config.verify,e),t},u.prototype.on=function(e,i){return layui.onevent.call(this,l,e,i)},u.prototype.val=function(e,t){var a=i(r+'[lay-filter="'+e+'"]');a.each(function(e,a){var n=i(this);layui.each(t,function(e,i){var t,a=n.find('[name="'+e+'"]');a[0]&&(t=a[0].type,"checkbox"===t?a[0].checked=i:"radio"===t?a.each(function(){this.value===i&&(this.checked=!0)}):a.val(i))})}),f.render(null,e)},u.prototype.render=function(e,t){var n=this,u=i(r+function(){return t?'[lay-filter="'+t+'"]':""}()),d={select:function(){var e,t="请选择",a="layui-form-select",n="layui-select-title",r="layui-select-none",d="",f=u.find("select"),v=function(t,l){i(t.target).parent().hasClass(n)&&!l||(i("."+a).removeClass(a+"ed "+a+"up"),e&&d&&e.val(d)),e=null},y=function(t,u,f){var y,p=i(this),m=t.find("."+n),k=m.find("input"),x=t.find("dl"),g=x.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=t.offset().top+t.outerHeight()+5-h.scrollTop(),i=x.outerHeight();b=p[0].selectedIndex,t.addClass(a+"ed"),g.removeClass(o),y=null,g.eq(b).addClass(s).siblings().removeClass(s),e+i>h.height()&&e>=i&&t.addClass(a+"up"),$()},w=function(e){t.removeClass(a+"ed "+a+"up"),k.blur(),y=null,e||T(k.val(),function(e){var t=p[0].selectedIndex;e&&(d=i(p[0].options[t]).html(),d||k.val(""))})},$=function(){var e=x.children("dd."+s);if(e[0]){var i=e.position().top,t=x.height(),a=e.height();i>t&&x.scrollTop(i+x.scrollTop()-t+a-5),i<0&&x.scrollTop(i+x.scrollTop()-5)}};m.on("click",function(e){t.hasClass(a+"ed")?w():(v(e,!0),C()),x.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){k.focus()}),k.on("keyup",function(e){var i=e.keyCode;9===i&&C()}).on("keydown",function(e){var i=e.keyCode;9===i&&w();var t=function(i,a){var n,l;e.preventDefault();var r=function(){var e=x.children("dd."+s);if(x.children("dd."+o)[0]&&"next"===i){var t=x.children("dd:not(."+o+",."+c+")"),n=t.eq(0).index();if(n>=0&&n无匹配项

          '):x.find("."+r).remove()},"keyup"),""===i&&x.find("."+r).remove(),void $())};f&&k.on("keyup",j).on("blur",function(t){var a=p[0].selectedIndex;e=k,d=i(p[0].options[a]).html(),setTimeout(function(){T(k.val(),function(e){d||k.val("")},"blur")},200)}),g.on("click",function(){var e=i(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?k.val(""):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:t}),w(!0),!1)}),t.find("dl>dt").on("click",function(e){return!1}),i(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=i(this),o=r.next("."+a),u=this.disabled,d=l.value,f=i(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?t:v.innerHTML||t:t,m=i(['
          ','
          ','','
          ','
          ',function(e){var i=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?i.push("
          "+a.label+"
          "):i.push('
          '+a.innerHTML+"
          "):i.push('
          '+(a.innerHTML||t)+"
          ")}),0===i.length&&i.push('
          没有选项
          '),i.join("")}(r.find("*"))+"
          ","
          "].join(""));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},t=u.find("input[type=checkbox]"),a=function(e,t){var a=i(this);e.on("click",function(){var i=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(t[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(t[1]).find("em").text(n[0])),layui.event.call(a[0],l,t[2]+"("+i+")",{elem:a[0],value:a[0].value,othis:e}))})};t.each(function(t,n){var l=i(this),r=l.attr("lay-skin"),s=(l.attr("lay-text")||"").split("|"),o=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=i(['
          ",function(){var e=n.title.replace(/\s/g,""),i={checkbox:[e?""+n.title+"":"",''].join(""),_switch:""+((n.checked?s[0]:s[1])||"")+""};return i[r]||i.checkbox}(),"
          "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",t=["",""],a=u.find("input[type=radio]"),n=function(a){var n=i(this),s="layui-anim-scaleSpring";a.on("click",function(){var o=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+o.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=i(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(s).html(t[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(s).html(t[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=i(this),s=r.next("."+e),o=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();s[0]&&s.remove();var u=i(['
          ',''+t[l.checked?0:1]+"","
          "+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html(),r.next().remove()),e}()+"
          ","
          "].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,i){i()}),n};var d=function(){var e=i(this),a=f.config.verify,s=null,o="layui-form-danger",c={},u=e.parents(r),d=u.find("*[lay-verify]"),v=e.parents("form")[0],h=u.find("input,select,textarea"),y=e.attr("lay-filter");if(layui.each(d,function(e,l){var r=i(this),c=r.attr("lay-verify").split("|"),u=r.attr("lay-verType"),d=r.val();if(r.removeClass(o),layui.each(c,function(e,i){var c,f="",v="function"==typeof a[i];if(a[i]){var c=v?f=a[i](d,l):!a[i][0].test(d);if(f=f||a[i][1],c)return"tips"===u?t.tips(f,function(){return"string"==typeof r.attr("lay-ignore")||"select"!==l.tagName.toLowerCase()&&!/^checkbox|radio$/.test(l.type)?r:r.next()}(),{tips:1}):"alert"===u?t.alert(f,{title:"提示",shadeClose:!0}):t.msg(f,{icon:5,shift:6}),n.android||n.ios||l.focus(),r.addClass(o),s=!0}}),s)return s}),s)return!1;var p={};return layui.each(h,function(e,i){if(i.name=(i.name||"").replace(/^\s*|\s*&/,""),i.name){if(/^.*\[\]$/.test(i.name)){var t=i.name.match(/^(.*)\[\]$/g)[0];p[t]=0|p[t],i.name=i.name.replace(/^(.*)\[\]$/,"$1["+p[t]++ +"]")}/^checkbox|radio$/.test(i.type)&&!i.checked||(c[i.name]=i.value)}}),layui.event.call(this,l,"submit("+y+")",{elem:this,form:v,field:c})},f=new u,v=i(document),h=i(window);f.render(),v.on("reset",r,function(){var e=i(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
            '),s=o(["
          • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
          • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
            '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,u,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)},config:t}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u="table",h=".layui-table",y="layui-hide",f="layui-none",p="layui-table-view",v=".layui-table-tool",m=".layui-table-box",g=".layui-table-init",b=".layui-table-header",x=".layui-table-body",k=".layui-table-main",C=".layui-table-fixed",w=".layui-table-fixed-l",T=".layui-table-fixed-r",A=".layui-table-total",L=".layui-table-page",S=".layui-table-sort",N="layui-table-edit",W="layui-table-hover",_=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# 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; } }}',function(){return 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("")},E=['',"","
            "].join(""),z=['
            ',"{{# if(d.data.toolbar){ }}",'
            ','
            ','
            ',"
            ","{{# } }}",'
            ',"{{# if(d.loading){ }}",'
            ','',"
            ","{{# } }}","{{# var left, right; }}",'
            ',_(),"
            ",'
            ',E,"
            ","{{# if(left){ }}",'
            ','
            ',_({fixed:!0}),"
            ",'
            ',E,"
            ","
            ","{{# }; }}","{{# if(right){ }}",'
            ','
            ',_({fixed:"right"}),'
            ',"
            ",'
            ',E,"
            ","
            ","{{# }; }}","
            ","{{# if(d.data.totalRow){ }}",'
            ','','',"
            ","
            ","{{# } }}","{{# if(d.data.page){ }}",'
            ','
            ',"
            ","{{# } }}","","
            "].join(""),H=t(window),R=t(document),F=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};F.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},F.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=H.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+p),o=e.elem=t(i(z).render({VIEW_CLASS:p,data:a,index:e.index}));if(a.index=e.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(v),e.layBox=o.find(m),e.layHeader=o.find(b),e.layMain=o.find(k),e.layBody=o.find(x),e.layFixed=o.find(C),e.layFixLeft=o.find(w),e.layFixRight=o.find(T),e.layTotal=o.find(A),e.layPage=o.find(L),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(b).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},F.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});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||i[e.type])},F.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},F.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
            ','
            ','
            '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i=r[t];i&&d.push('
            ')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},F.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](y),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},F.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},F.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},F.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},F.prototype.reload=function(e){var i=this;i.config.data&&i.config.data.constructor===Array&&delete i.config.data,i.config=t.extend({},i.config,e),i.render()},F.prototype.page=1,F.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.layMain.html('
            '+(t[n.msgName]||"返回的数据不符合规范,正确的成功状态码 ("+n.statusName+") 应为:"+n.statusCode)+"
            ")):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.layMain.html('
            数据接口请求异常:'+t+"
            "),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,a.data.length),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},F.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},F.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,u=e[s.response.dataName]||[],h=[],p=[],v=[],m=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(u,function(a,l){var o=[],u=[],f=[],m=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,p=l[c];if(void 0!==p&&null!==p||(p=""),!r.colGroup){var v=['','
            '+function(){var n=t.extend(!0,{LAY_INDEX:m},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return m}return r.toolbar?i(t(r.toolbar).html()||"").render(n):r.templet?function(){return"function"==typeof r.templet?r.templet(n):i(t(r.templet).html()||String(p)).render(n)}():p}(),"
            "].join("");o.push(v),r.fixed&&"right"!==r.fixed&&u.push(v),"right"===r.fixed&&f.push(v)}}),h.push(''+o.join("")+""),p.push(''+u.join("")+""),v.push(''+f.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+f).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(p.join("")),c.layFixRight.find("tbody").html(v.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return c.key=s.id||s.index,d.cache[c.key]=u,c.layPage[0==o||0===u.length&&1==n?"addClass":"removeClass"](y),r?m():0===u.length?(c.renderForm(),c.layFixed.remove(),c.layMain.find("tbody").html(""),c.layMain.find("."+f).remove(),c.layMain.append('
            '+s.text.none+"
            ")):(m(),c.renderTotal(u),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.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||(c.page=e.curr,s.limit=e.limit,c.loading(),c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},F.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})});var l=[];t.eachCols(function(e,t){var n=t.field||e,o=['','
            '+function(){var e=t.totalRowText||"";return t.totalRow?parseFloat(a[n]).toFixed(2)||e:e}(),"
            "].join("");l.push(o)}),t.layTotal.find("tbody").html(""+l.join("")+"")}},F.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},F.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},F.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},F.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},h=c.config,y=h.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},h.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[h.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,u,"sort("+y+")",{field:n,type:i})},F.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(g).remove()):(i.layInit=t(['
            ','',"
            "].join("")),i.layBox.append(i.layInit)))},F.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},F.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},F.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},F.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=H.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e=e-(t.layPage.outerHeight()||41)-2),t.layMain.css("height",e))},F.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},F.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
            ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(x).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](y),e.layFixRight.css("right",a-1)},F.prototype.events=function(){var e,a=this,o=a.config,c=t("body"),s={},h=a.layHeader.find("th"),f=".layui-table-cell",p=o.elem.attr("lay-filter");a.layTool.on("click","*[lay-event]",function(e){var i=t(this),c=i.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
              ');n.html(l),o.height&&n.css("max-height",o.height-(a.layTool.outerHeight()||50)),i.find(".layui-table-tool-panel")[0]||i.append(n),a.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),R.trigger("table.tool.panel.remove"),l.close(a.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return a.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
            • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var i=t(e.elem),l=this.checked,n=i.data("key"),r=i.data("parentkey");layui.each(o.cols,function(e,t){layui.each(t,function(t,i){if(e+"-"+t===n){var d=i.hide;i.hide=!l,a.elem.find('*[data-key="'+o.index+"-"+n+'"]')[l?"removeClass":"addClass"](y),d!=i.hide&&a.setParentCol(!l,r),a.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
            • 导出到 Csv 文件
            • ','
            • 导出到 Excel 文件
            • '].join("")}(),done:function(e,i){i.on("click",function(){var e=t(this).data("type");d.exportFile(o.id,null,e)})}});break;case"LAYTABLE_PRINT":var h=window.open("打印窗口","_blank"),f=[""].join(""),v=t(a.layHeader.html());v.append(a.layMain.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),h.document.write(f+v.prop("outerHTML")),h.document.close(),h.print(),h.close()}layui.event.call(this,u,"toolbar("+p+")",t.extend({event:c,config:o},{}))}),h.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||s.resizeStart||(s.allowResize=i.width()-l<=10,c.css("cursor",s.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);s.resizeStart||c.css("cursor","")}).on("mousedown",function(e){var i=t(this);if(s.allowResize){var l=i.data("key");e.preventDefault(),s.resizeStart=!0,s.offset=[e.clientX,e.clientY],a.getCssRule(l,function(e){var t=e.style.width||i.outerWidth();s.rule=e,s.ruleWidth=parseFloat(t),s.minWidth=i.data("minwidth")||o.cellMinWidth})}}),R.on("mousemove",function(t){if(s.resizeStart){if(t.preventDefault(),s.rule){var i=s.ruleWidth+t.clientX-s.offset[0];i');return n[0].value=i.data("content")||l.text(),i.find("."+N)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(f);if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
              ')}};a.layBody.on("click","."+g,function(e){var i=t(this),n=i.parent(),d=n.children(f);a.tipsIndex=l.tips(['
              ',d.html(),"
              ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:a.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),a.layBody.on("click","*[lay-event]",function(){var e=t(this),i=e.parents("tr").eq(0).data("index");layui.event.call(this,u,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),a.setThisRowChecked(i)}),a.layMain.on("scroll",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layTotal.scrollLeft(i),a.layFixed.find(x).scrollTop(n),l.close(a.tipsIndex)}),R.on("click",function(){R.trigger("table.remove.tool.panel")}),R.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()}),H.on("resize",function(){a.resize()})},d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var a=c.config[e]||{},l={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],n=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(n.href="data:"+l+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],a=[];return layui.each(t,function(t,l){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(l),function(e,t){n.push(t)})):d.eachCols(e,function(e,a){a.field&&"normal"==a.type&&!a.hide&&(0==t&&i.push(a.title||""),n.push(l[a.field]))}),a.push(n.join(","))}),i.join(",")+"\r\n"+a.join("\r\n")}()),n.download=(a.title||"table_"+(a.index||""))+"."+i,document.body.appendChild(n),n.click(),void document.body.removeChild(n))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,i){i=i||{};var a=s(e);if(a)return i.data&&i.data.constructor===Array&&delete a.data,d.render(t.extend(!0,{},a,i))},d.render=function(e){var t=new F(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(u,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
                ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
              "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).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(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a",u=1;u<=i.length;u++){var r='
            • ";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'
            • ":n+=r}n+=""+(i.text?''+i.value+"星":"")+"";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,a,n="layui-fixbar",r="layui-fixbar-top",o=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['
                ',t.bar1?'
              • '+c[0]+"
              • ":"",t.bar2?'
              • '+c[1]+"
              • ":"",'
              • '+c[2]+"
              • ","
              "].join("")),s=g.find("."+r),u=function(){var e=o.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+n)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),a=i.attr("lay-type");"top"===a&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,a)}),o.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var a=this,n="function"==typeof e,r=new Date(t).getTime(),o=new Date(!e||n?(new Date).getTime():e).getTime(),l=r-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=e);var g=setTimeout(function(){a.countdown(t,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(t).getTime();return n>6912e5?(n=new Date(t),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),e||(a[1][0]=i.digit(n.getHours()),a[1][1]=i.digit(n.getMinutes()),a[1][2]=i.digit(n.getSeconds())),a[0].join("-")+" "+a[1].join(":")):n>=864e5?(n/1e3/60/60/24|0)+"天前":n>=36e5?(n/1e3/60/60|0)+"小时前":n>=12e4?(n/1e3/60|0)+"分钟前":n<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var a=t.length;a/g,">").replace(/'/g,"'").replace(/"/g,""")}};!function(t,e,i){"$:nomunge";function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width(),a=e.height(),n=t.data(this,g);(i!==n.w||a!==n.h)&&e.trigger(c,[n.w=i,n.h=a])}),a()},o[s])}var n,r=t([]),o=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";o[s]=250,o[u]=!0,t.event.special[c]={setup:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===r.length&&a()},teardown:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.not(e),e.removeData(g),r.length||clearTimeout(n)},add:function(e){function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width(),l.h=r!==i?r:o.height(),n.apply(this,arguments)}if(!o[u]&&this[l])return!1;var n;return t.isFunction(e)?(n=e,a):(n=e.handler,void(e.handler=a))}}}(e,window),t("util",i)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
              ','
              '+f+"
              ",'
              ','',"
              ","
              "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

              ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

              "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

              "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['

                ','
              • ','','
                ','',"
                ","
              • ",'
              • ','','
                ','",'","
                ","
              • ",'
              • ','','',"
              • ","
              "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
            • '+e+'
            • ')}),'
                '+t.join("")+"
              "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
                ','
              • ','','
                ','","
                ","
              • ",'
              • ','','
                ','',"
                ","
              • ",'
              • ','','',"
              • ","
              "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)});layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
              1. '+o.replace(/[\r\t\n]+/g,"
              2. ")+"
              "),c.find(">.layui-code-h3")[0]||c.prepend('

              '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

              ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file +for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
              '+(f?r.title[0]:r.title)+"
              ":"";return r.zIndex=s,t([r.shade?'
              ':"",'
              '+(e&&2!=r.type?"":u)+'
              '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
              '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
              '+e+"
              "}():"")+(r.resize?'':"")+"
              "],u,i('
              ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(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=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(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"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
                '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
              • '+(t[0].content||"no content")+"
              • ";i'+(t[i].content||"no content")+"";return a}()+"
              ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
              '+(u.length>1?'':"")+'
              '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
              ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
              是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);layui.define("jquery",function(t){"use strict";var a=layui.$,i=(layui.hint(),layui.device()),e="element",l="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.children(".layui-tab-bar"),o=l.children(".layui-tab-content"),r='
            • "+(i.title||"unnaming")+"
            • ";return s[0]?s.before(r):n.append(r),o.append('
              '+(i.content||"")+"
              "),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on("click",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e="layui-progress",l=a("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",i),s.text(i),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-more",h="layui-anim layui-anim-upbit",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),d=r.find("a"),y=c.attr("lay-filter");"javascript:;"!==d.attr("href")&&"_blank"===d.attr("target")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=a('');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=a(this);if(!t.find("."+l)[0]){var i=a('');i.on("click",f.tabDelete),t.append(i)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(a){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"收缩"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var i=a(".layui-tab-title");t!==!0&&"tabmore"===a(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr("lay-filter"),s=t.parent(),c=t.siblings("."+d),y="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||y||c[0]||(i.find("."+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===i.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=a(this),i=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),i.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find("."+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children("a").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),"block"===f.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find("."+y).addClass(y+"d")},300))};a(o+l).each(function(i){var l=a(this),o=a(''),h=l.find("."+r);l.find("."+c)[0]||(l.append(o),h.on("mouseenter",function(){b.call(this,o,l,i)}).on("mouseleave",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+y).removeClass(y+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find("a").each(function(){var t=a(this),i=(t.parent(),t.siblings("."+d));i[0]&&!t.children("."+y)[0]&&t.append(''),t.off("click",f.clickThis).on("click",f.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";a(t+l).each(function(){var t=a(this),i="lay-separator",e=t.attr(i)||"/",l=t.find("a");l.next("span["+i+"]")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";a("."+t+l).each(function(){var i=a(this),e=i.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),i.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";a("."+t+l).each(function(){var t=a(this).find(".layui-colla-item");t.each(function(){var t=a(this),i=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");i.find(".layui-colla-icon").remove(),i.append(''+(l?"":"")+""),i.off("click",f.collapse).on("click",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=".layui-tab-title li";b.on("click",v,f.tabClick),b.on("click",f.hideTabMore),a(window).on("resize",f.tabAuto),t(e,p)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,o.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['"].join("")),o=i.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&i.elem.wrap('
              '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),a=t(['
              ',"
              "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(a),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var i=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&i+n===o.fileLength&&"function"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:i,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)}),t.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,o.msg("请求上传接口出现异常"),m(e),u()}})})},c=function(){var e=t("#"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){o.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(o.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},o.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||o.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){o.preview(e)},upload:function(e,t){var i={};i[e]=t,o.upload(i)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,t){o.files[e]=t}),o.files},resetFile:function(e,t,i){var n=new File([t],i);o.files=o.files||{},o.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return o.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return o.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return o.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return o.msg("选择的图片中包含不支持的格式"),r.value=""}if(o.fileLength=function(){var t=0,i=e||o.files||o.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&o.fileLength>l.number)return o.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return o.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,o.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,o=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var a=e.elemFile,o=t.length>1?t.length+"个文件":(t[0]||{}).name||a[0].value.match(/[^\/\\]+\..+/g)||[]||"";a.next().hasClass(s)&&a.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||a.after(''+o+"")};i.elem.off("upload.start").on("upload.start",function(){var a=t(this),o=a.attr("lay-data");if(o)try{o=new Function("return "+o)(),e.config=t.extend({},i,o)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,a){var r=t(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];o(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},o.render=function(e){var t=new p(e);return l.call(t)},e(r,o)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide("set",i,t||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",m="layui-slider-input-btn",p="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.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:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var p=t.disabled?"#c2c2c2":t.theme,f='
              '+(t.tips?'
              ':"")+'
              '+(t.range?'
              ':"")+"
              ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x
              ')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
              ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),u=l.setTips?l.setTips(u):u,s.find("."+d).html(u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
              f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children("."+m).fadeIn("fast")},function(){var e=i(this);e.children("."+m).fadeOut("fast")}),y.children("."+m).children("i").each(function(e){i(this).on("click",function(){g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t="colorpicker",n="layui-show",l="layui-colorpicker",c=".layui-colorpicker-main",a="layui-icon-down",s="layui-icon-close",f="layui-colorpicker-trigger-span",d="layui-colorpicker-trigger-i",u="layui-colorpicker-side",p="layui-colorpicker-side-slider",g="layui-colorpicker-basis",v="layui-colorpicker-alpha-bgcolor",h="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",b="layui-colorpicker-main-input",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]="0"+i)}),r.join("")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['
              ',"",'3&&(o.alpha&&"rgb"==o.format||(e="#"+C(k(P(o.color))))),"background: "+e):e}()+'">','',"","","
              "].join("")),t=i(o.elem);o.size&&r.addClass("layui-colorpicker-"+o.size),t.addClass("layui-inline").html(e.elemColorBox=r),e.color=e.elemColorBox.find("."+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['
              ','
              ','
              ','
              ','
              ','
              ',"
              ",'
              ','
              ',"
              ","
              ",'
              ','
              ','
              ',"
              ","
              ",function(){if(o.predefine){var e=['
              '];return layui.each(o.colors,function(i,o){e.push(['
              ','
              ',"
              "].join(""))}),e.push("
              "),e.join("")}return""}(),'
              ','
              ','',"
              ",'
              ','','',"","
              "].join(""));e.elemColorBox.find("."+f)[0];i(c)[0]&&i(c).data("index")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i("body").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i("#layui-colorpicker"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a("width")?f=a("width")-n-s:fa()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+("fixed"===i.position?0:c(1))+"px",r.style.top=d+("fixed"===i.position?0:c())+"px"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+f)),o=e.elemPicker.find("."+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr("lay-type");if(e.select(n.h,n.s,n.b),"torgb"===l&&o.find("input").val(t),"rgba"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+h).css("left",280);else{o.find("input").val(t);var a=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+h).css("left",a)}e.elemPicker.find("."+v)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),o.find("input").val(""),e.elemPicker.find("."+v)[0].style.background="",e.elemPicker.find("."+h).css("left",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=r.attr("lay-type"),n=e.elemPicker.find("."+u),l=e.elemPicker.find("."+p),c=e.elemPicker.find("."+g),y=e.elemPicker.find("."+m),C=e.elemPicker.find("."+v),w=e.elemPicker.find("."+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find("."+d),F=e.elemPicker.find(".layui-colorpicker-pre").children("div"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background="rgb("+f.r+", "+f.g+", "+f.b+")","torgb"===t&&e.elemPicker.find("."+b).find("input").val("rgb("+f.r+", "+f.g+", "+f.b+")"),"rgba"===t){var d=0;d=280*c,w.css("left",d),e.elemPicker.find("."+b).find("input").val("rgba("+f.r+", "+f.g+", "+f.b+", "+c+")"),r[0].style.background="rgba("+f.r+", "+f.g+", "+f.b+", "+c+")",C[0].style.background="linear-gradient(to right, rgba("+f.r+", "+f.g+", "+f.b+", 0), rgb("+f.r+", "+f.g+", "+f.b+"))"}o.change&&o.change(e.elemPicker.find("."+b).find("input").val())},M=i(['
              t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on("click",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on("mousedown",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on("mousedown",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,"mousedown")}),w.on("mousedown",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on("click",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(",")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find("."+p).css("top",c),t.elemPicker.find("."+g)[0].style.background="#"+n,t.elemPicker.find("."+m).css({top:a,left:s}),"change"!==r&&t.elemPicker.find("."+b).find("input").val("#"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=e.elemPicker.find("."+b+" input"),n={clear:function(i){r[0].style.background="",e.elemColorBox.find("."+d).removeClass(a).addClass(s),e.color="",o.done&&o.done(""),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(",")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c="#"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===r.attr("lay-type")){var u=280*l.slice(l.lastIndexOf(",")+1,l.length-1);e.elemPicker.find("."+h).css("left",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c="#"+C(f),e.elemColorBox.find("."+d).removeClass(s).addClass(a);return"change"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),o=e.attr("colorpicker-events");n[o]&&n[o].call(this,e)}),t.on("keyup",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:"change")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f);e.elemColorBox.on("click",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on("click",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents("."+l)[0]&&!i(o.target).hasClass(c.replace(/\./g,""))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find("."+d).removeClass(a).addClass(s);r[0].style.background=e.color||"",e.removePicker()}}),B.on("resize",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",s="layui-this",o="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:function(e){if(!e||isNaN(e))return"只能填写数字"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=t(r+'[lay-filter="'+e+'"]');a.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name="'+e+'"]');a[0]&&(i=a[0].type,"checkbox"===i?a[0].checked=t:"radio"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e)},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),d={select:function(){var e,i="请选择",a="layui-form-select",n="layui-select-title",r="layui-select-none",d="",f=u.find("select"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t("."+a).removeClass(a+"ed "+a+"up"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find("."+n),k=m.find("input"),x=i.find("dl"),g=x.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=x.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),g.removeClass(o),y=null,g.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+"up"),T()},w=function(e){i.removeClass(a+"ed "+a+"up"),k.blur(),y=null,e||$(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr("placeholder")&&(d=""),k.val(d||""))})},T=function(){var e=x.children("dd."+s);if(e[0]){var t=e.position().top,i=x.height(),a=e.height();t>i&&x.scrollTop(t+x.scrollTop()-i+a-5),t<0&&x.scrollTop(t+x.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),x.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){k.focus()}),k.on("keyup",function(e){var t=e.keyCode;9===t&&C()}).on("keydown",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=x.children("dd."+s);if(x.children("dd."+o)[0]&&"next"===t){var i=x.children("dd:not(."+o+",."+c+")"),n=i.eq(0).index();if(n>=0&&n无匹配项

              '):x.find("."+r).remove()},"keyup"),""===t&&x.find("."+r).remove(),void T())};f&&k.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr("placeholder")&&(d=""),setTimeout(function(){$(k.val(),function(e){d||k.val("")},"blur")},200)}),g.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?k.val(""):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),o=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['
              ','
              ','','
              ','
              ',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?t.push("
              "+a.label+"
              "):t.push('
              '+a.innerHTML+"
              "):t.push('
              '+(a.innerHTML||i)+"
              ")}),0===t.length&&t.push('
              没有选项
              '),t.join("")}(r.find("*"))+"
              ","
              "].join(""));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=u.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),s=(l.attr("lay-text")||"").split("|"),o=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['
              ",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?""+n.title+"":"",''].join(""),_switch:""+((n.checked?s[0]:s[1])||"")+""};return t[r]||t.checkbox}(),"
              "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=u.find("input[type=radio]"),n=function(a){var n=t(this),s="layui-anim-scaleSpring";a.on("click",function(){var o=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+o.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(s).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next("."+e),o=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();s[0]&&s.remove();var u=t(['
              ',''+i[l.checked?0:1]+"","
              "+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html(),r.next().remove()),e}()+"
              ","
              "].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=t(this),a=f.config.verify,s=null,o="layui-form-danger",c={},u=e.parents(r),d=u.find("*[lay-verify]"),v=e.parents("form")[0],h=u.find("input,select,textarea"),y=e.attr("lay-filter");if(layui.each(d,function(e,l){var r=t(this),c=r.attr("lay-verify").split("|"),u=r.attr("lay-verType"),d=r.val();if(r.removeClass(o),layui.each(c,function(e,t){var c,f="",v="function"==typeof a[t];if(a[t]){var c=v?f=a[t](d,l):!a[t][0].test(d);if(f=f||a[t][1],"required"===t&&(f=r.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof r.attr("lay-ignore")||"select"!==l.tagName.toLowerCase()&&!/^checkbox|radio$/.test(l.type)?r:r.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"提示",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){l.focus()},7),r.addClass(o),s=!0}}),s)return s}),s)return!1;var p={};return layui.each(h,function(e,t){if(t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name){if(/^.*\[\]$/.test(t.name)){var i=t.name.match(/^(.*)\[\]$/g)[0];p[i]=0|p[i],t.name=t.name.replace(/^(.*)\[\]$/,"$1["+p[i]++ +"]")}/^checkbox|radio$/.test(t.type)&&!t.checked||(c[t.name]=t.value)}}),layui.event.call(this,l,"submit("+y+")",{elem:this,form:v,field:c})},f=new u,v=t(document),h=t(window);f.render(),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n="tree",r={config:{},index:layui[n]?layui[n].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,n,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},t="layui-hide",d="layui-disabled",s="layui-tree-set",c="layui-tree-iconClick",o="layui-icon-addition",h="layui-icon-subtraction",u="layui-tree-entry",f="layui-tree-main",p="layui-tree-txt",y="layui-tree-pack",v="layui-tree-spread",C="layui-tree-setLineShort",m="layui-tree-showLine",k="layui-tree-lineExtend",g=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};g.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},g.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},g.prototype.render=function(){var e=this,a=e.config,n=i('
              ');e.tree(n);var r=a.elem=i(a.elem);if(r[0]){if(a.showSearch&&n.prepend(''),e.key=a.id||e.index,e.elem=n,e.elemNone=i('
              '+a.text.none+"
              "),r.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.drag&&e.drag(),a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(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(C),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(C)}),e.events()}},g.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},g.prototype.tree=function(e,a){var n=this,r=n.config,l=a||r.data;layui.each(l,function(a,l){var c=l.children&&l.children.length>0,o=i('
              '),h=i(['
              ',"
              ','
              ',function(){return r.showLine?c?'':'':''}(),function(){return r.showCheckbox?'':""}(),function(){return r.isJump&&l.href?''+(l.title||l.label||r.text.defaultNodeName)+"":''+(l.title||l.label||r.text.defaultNodeName)+""}(),"
              ",function(){if(!r.edit)return"";var e={add:'',update:'',del:''},i=['
              '];return r.edit===!0&&(r.edit=["update","del"]),"object"==typeof r.edit?(layui.each(r.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
              "):void 0}(),"
              "].join(""));c&&(h.append(o),n.tree(o,l.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),c||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,l),r.showCheckbox&&n.checkClick(h,l),r.edit&&n.operate(h,l)})},g.prototype.spread=function(e,a){var n=this,r=n.config,l=e.children("."+u),t=l.children("."+f),C=l.find("."+c),m=l.find("."+p),k=r.onlyIconControl?C:t,g="";k.on("click",function(i){var a=e.children("."+y),n=k.children(".layui-icon")[0]?k.children(".layui-icon"):k.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(v))e.removeClass(v),a.slideUp(200),n.removeClass(h).addClass(o);else if(e.addClass(v),a.slideDown(200),n.addClass(h).removeClass(o),r.accordion){var l=e.siblings("."+s);l.removeClass(v),l.children("."+y).slideUp(200),l.find(".layui-tree-icon").children(".layui-icon").removeClass(h).addClass(o)}}else g="normal"}),m.on("click",function(){var n=i(this);n.hasClass(d)||(g=e.hasClass(v)?r.onlyIconControl?"open":"close":r.onlyIconControl?"close":"open",r.click&&r.click({elem:e,state:g,data:a}))})},g.prototype.setCheckbox=function(e,i,a){var n=this,r=(n.config,a.prop("checked"));if("object"==typeof i.children||e.find("."+y)[0]){var l=e.find("."+y).find('input[name="layuiTreeCheck"]');l.each(function(){this.disabled||(this.checked=r)})}var t=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+y),n=a.parent(),l=a.prev().find('input[name="layuiTreeCheck"]');r?l.prop("checked",r):(a.find('input[name="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||l.prop("checked",!1)),t(n)}};t(e),n.renderForm("checkbox")},g.prototype.checkClick=function(e,a){var n=this,r=n.config,l=e.children("."+u),t=l.children("."+f);t.on("click",'input[name="layuiTreeCheck"]+',function(l){layui.stope(l);var t=i(this).prev(),d=t.prop("checked");t.prop("disabled")||(n.setCheckbox(e,a,t),r.oncheck&&r.oncheck({elem:e,checked:d,data:a}))})},g.prototype.operate=function(e,a){var n=this,r=n.config,l=e.children("."+u),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),g=e.children("."+y),x={data:a,type:f,elem:e};if("add"==f){g[0]||(r.showLine?(d.find("."+c).addClass("layui-tree-icon"),d.find("."+c).children(".layui-icon").addClass(o).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(t),e.append('
              '));var b=r.operate&&r.operate(x),w={};if(w.title=r.text.defaultNodeName,w.id=b,n.tree(e.children("."+y),[w]),r.showLine)if(g[0])g.hasClass(k)||g.addClass(k),e.find("."+y).each(function(){i(this).children("."+s).last().addClass(C)}),g.children("."+s).last().prev().hasClass(C)?g.children("."+s).last().prev().removeClass(C):g.children("."+s).last().removeClass(C),!e.parent("."+y)[0]&&e.next()[0]&&g.children("."+s).last().removeClass(C);else{var T=e.siblings("."+s),L=1,N=e.parent("."+y);layui.each(T,function(e,a){i(a).children("."+y)[0]||(L=0)}),1==L?(T.children("."+y).addClass(m),T.children("."+y).children("."+s).removeClass(C),e.children("."+y).addClass(m),N.removeClass(k),N.children("."+s).last().children("."+y).children("."+s).last().addClass(C)):e.children("."+y).children("."+s).addClass(C)}if(!r.showCheckbox)return;if(d.find('input[name="layuiTreeCheck"]')[0].checked){var A=e.children("."+y).children("."+s).last();A.find('input[name="layuiTreeCheck"]')[0].checked=!0}n.renderForm("checkbox")}else if("update"==f){var q=d.children("."+p).html();d.children("."+p).html(""),d.append(''),d.children(".layui-tree-editInput").val(q).focus();var F=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+p).html(i),x.data.title=i,r.operate&&r.operate(x)};d.children(".layui-tree-editInput").blur(function(){F(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),F(i(this)))})}else{if(r.operate&&r.operate(x),x.status="remove",!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+y)[0])return e.remove(),void n.elem.append(n.elemNone);if(e.siblings("."+s).children("."+u)[0]){if(r.showCheckbox){var I=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+u),r=e.parent("."+y).prev(),l=r.find('input[name="layuiTreeCheck"]')[0],t=1,d=0;0==l.checked&&(a.each(function(e,a){var n=i(a).find('input[name="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(t=0),n.disabled||(d=1)}),1==t&&1==d&&(l.checked=!0,n.renderForm("checkbox"),I(r.parent("."+s))))}};I(e)}if(r.showLine){var T=e.siblings("."+s),L=1,N=e.parent("."+y);layui.each(T,function(e,a){i(a).children("."+y)[0]||(L=0)}),1==L?(g[0]||(N.removeClass(k),T.children("."+y).addClass(m),T.children("."+y).children("."+s).removeClass(C)),e.next()[0]?N.children("."+s).last().children("."+y).children("."+s).last().addClass(C):e.prev().children("."+y).children("."+s).last().addClass(C),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(C)):!e.next()[0]&&e.hasClass(C)&&e.prev().addClass(C)}}else{var H=e.parent("."+y).prev();if(r.showLine){H.find("."+c).removeClass("layui-tree-icon"),H.find("."+c).children(".layui-icon").removeClass(h).addClass("layui-icon-file");var S=H.parents("."+y).eq(0);S.addClass(k),S.children("."+s).each(function(){i(this).children("."+y).children("."+s).last().addClass(C)})}else H.find(".layui-tree-iconArrow").addClass(t);e.parents("."+s).eq(0).removeClass(v),e.parent("."+y).remove()}e.remove()}})},g.prototype.drag=function(){var e=this,a=e.config;e.elem.on("dragstart","."+u,function(){var e=i(this).parent("."+s),n=e.parents("."+s)[0]?e.parents("."+s).eq(0):"未找到父节点";a.dragstart&&a.dragstart(e,n)}),e.elem.on("dragend","."+u,function(n){var n=n||event,r=n.clientY,l=i(this),d=l.parent("."+s),f=d.height(),p=d.offset().top,g=e.elem.find("."+s),x=e.elem.height(),b=e.elem.offset().top,w=x+b-13,T=d.parents("."+s)[0],L=d.next()[0];if(T)var N=d.parent("."+y),A=d.parents("."+s).eq(0),q=A.parent("."+y),F=A.offset().top,I=d.siblings(),H=A.children("."+y).children("."+s).length;var S=function(n){if(T||L||e.elem.children("."+s).last().children("."+y).children("."+s).last().addClass(C),!T)return void d.removeClass("layui-tree-setHide");if(1==H)a.showLine?(n.find("."+c).removeClass("layui-tree-icon"),n.find("."+c).children(".layui-icon").removeClass(h).addClass("layui-icon-file"),q.addClass(k),q.children("."+s).children("."+y).each(function(){i(this).children("."+s).last().addClass(C)})):n.find(".layui-tree-iconArrow").addClass(t),n.children("."+y).remove(),n.removeClass(v);else{if(a.showLine){var r=1;layui.each(I,function(e,a){i(a).children("."+y)[0]||(r=0)}),1==r?(d.children("."+y)[0]||(N.removeClass(k),I.children("."+y).addClass(m),I.children("."+y).children("."+s).removeClass(C)),N.children("."+s).last().children("."+y).children("."+s).last().addClass(C),L||n.parents("."+s)[0]||n.next()[0]||N.children("."+s).last().addClass(C)):!L&&d.hasClass(C)&&N.children("."+s).last().addClass(C)}if(a.showCheckbox){var l=function(a){if(a){if(!a.parents("."+s)[0])return}else if(!n[0])return;var r=a?a.siblings().children("."+u):I.children("."+u),t=a?a.parent("."+y).prev():N.prev(),d=t.find('input[name="layuiTreeCheck"]')[0],c=1,o=0;0==d.checked&&(r.each(function(e,a){var n=i(a).find('input[name="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(o=1)}),1==c&&1==o&&(d.checked=!0,e.renderForm("checkbox"),l(t.parent("."+s)||n)))};l()}}};g.each(function(){if(0!=i(this).height()){if(r>p&&rF&&rn&&r
              ')),i(this).children("."+y).append(d),S(A),a.showLine){var l=i(this).children("."+y).children("."+s);if(d.children("."+y).children("."+s).last().addClass(C),1==l.length){var h=i(this).siblings("."+s),v=1,g=i(this).parent("."+y);layui.each(h,function(e,a){i(a).children("."+y)[0]||(v=0)}),1==v?(h.children("."+y).addClass(m),h.children("."+y).children("."+s).removeClass(C),i(this).children("."+y).addClass(m),g.removeClass(k),g.children("."+s).last().children("."+y).children("."+s).last().addClass(C).removeClass("layui-tree-setHide")):i(this).children("."+y).children("."+s).addClass(C).removeClass("layui-tree-setHide")}else d.prev("."+s).hasClass(C)?(d.prev("."+s).removeClass(C),d.addClass(C)):(d.removeClass("layui-tree-setLineShort layui-tree-setHide"),d.children("."+y)[0]?d.prev("."+s).children("."+y).children("."+s).last().removeClass(C):d.siblings("."+s).find("."+y).each(function(){i(this).children("."+s).last().addClass(C)})),i(this).next()[0]||d.addClass(C)}if(a.showCheckbox&&i(this).children("."+u).find('input[name="layuiTreeCheck"]')[0].checked){var x=d.children("."+u);x.find('input[name="layuiTreeCheck"]+').click()}return a.dragend&&a.dragend("drag success",d,i(this)),!1}if(rw)return e.elem.children("."+s).last().children("."+y).addClass(m),e.elem.append(d),S(A),d.prev().children("."+y).children("."+s).last().removeClass(C),d.addClass("layui-tree-setHide"),d.children("."+y).children("."+s).last().addClass(C),a.dragend&&a.dragend("拖拽成功,插入最外层节点",d,e.elem),!1}})})},g.prototype.events=function(){var e=this,a=e.config,n=e.elem.find(".layui-tree-checkedFirst");layui.each(n,function(e,a){i(a).children("."+u).find('input[name="layuiTreeCheck"]+').trigger("click")}),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),r=n.val(),l=n.nextAll(),d=[];l.find("."+p).each(function(){var e=i(this).parents("."+u);if(i(this).html().indexOf(r)!=-1){d.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+y)[0]&&a(e.parent("."+y).parent("."+s))};a(e.parent("."+s))}}),l.find("."+u).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(t)}),0==l.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:d})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+u).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+t)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},g.prototype.getChecked=function(){var e=this,a=e.config,n=[],r=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var l=function(e,a){layui.each(e,function(e,r){layui.each(n,function(e,n){if(r.id==n){var t=i.extend({},r);return delete t.children,a.push(t),r.children&&(t.children=[],l(r.children,t.children)),!0}})})};return l(i.extend({},a.data),r),r},g.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var r=i(this).data("id"),l=i(n).children("."+u).find('input[name="layuiTreeCheck"]'),t=l.next();if("number"==typeof e){if(r==e)return l[0].checked||t.click(),!1}else i.inArray(r,e)!=-1&&(l[0].checked||t.click())})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new g(e);return l.call(i)},e(n,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,n=layui.form,i="transfer",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
              ','
              ','","
              ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                ',"
                "].join("")},v=['
                ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                ','",'","
                ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
                "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=i.find("."+y),e.layBtn=i.find("."+f+" .layui-btn"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=["
              • ",'',"
              • "].join("");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(i)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":n.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var n=a('

                '+(t||"")+"

                ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=("function"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&i.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var n=a(this),i=n.data("index"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find("."+y);i.children("li").each(function(){var t=a(this),n=t.find('input[type="checkbox"]'),i=n.data("hide");n[0].checked&&!i&&(n[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find("input").on("keyup",function(){var n=this.value,i=a(this).parents("."+h).eq(0).siblings("."+y),l=i.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),i=t[0].title.indexOf(n)!==-1;e[i?"removeClass":"addClass"](c),t.data("hide",!i)}),e.renderCheckBtn();var r=l.length===i.children("li."+c).length;e.noneView(i,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
                "+o+"
                ").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",A=".layui-table-fixed-r",L=".layui-table-total",N=".layui-table-page",S=".layui-table-sort",W="layui-table-edit",_="layui-table-hover",E=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# 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; } }}',function(){return 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("")},z=['',"","
                "].join(""),H=['
                ',"{{# if(d.data.toolbar){ }}",'
                ','
                ','
                ',"
                ","{{# } }}",'
                ',"{{# if(d.data.loading){ }}",'
                ','',"
                ","{{# } }}","{{# var left, right; }}",'
                ',E(),"
                ",'
                ',z,"
                ","{{# if(left){ }}",'
                ','
                ',E({fixed:!0}),"
                ",'
                ',z,"
                ","
                ","{{# }; }}","{{# if(right){ }}",'
                ','
                ',E({fixed:"right"}),'
                ',"
                ",'
                ',z,"
                ","
                ","{{# }; }}","
                ","{{# if(d.data.totalRow){ }}",'
                ','','',"
                ","
                ","{{# } }}","{{# if(d.data.page){ }}",'
                ','
                ',"
                ","{{# } }}","","
                "].join(""),R=t(window),F=t(document),I=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};I.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},I.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=R.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(H).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},I.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});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||i[e.type])},I.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},I.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
                ','
                ','
                '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i=r[t];i&&d.push('
                ')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},I.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},I.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},I.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},I.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},I.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},I.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('
                '+(e||"Error")+"
                ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},I.prototype.page=1,I.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},I.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},I.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=[],v=[],m=[],g=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],p=[],g=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,v=l[c];if(void 0!==v&&null!==v||(v=""),!r.colGroup){var m=['','
                '+function(){var n=t.extend(!0,{LAY_INDEX:g},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return g}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,v,n)}(),"
                "].join("");o.push(m),r.fixed&&"right"!==r.fixed&&y.push(m),"right"===r.fixed&&p.push(m)}}),h.push(''+o.join("")+""),v.push(''+y.join("")+""),m.push(''+p.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(v.join("")),c.layFixRight.find("tbody").html(m.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),r?g():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),g(),c.renderTotal(y),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.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||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},I.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})});var l=[];t.eachCols(function(e,t){var n=t.field||e,o=['','
                '+function(){var e=t.totalRowText||"";return t.totalRow?parseFloat(a[n]).toFixed(2)||e:e}(),"
                "].join("");l.push(o)}),t.layTotal.find("tbody").html(""+l.join("")+"")}},I.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},I.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},I.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},I.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},I.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['
                ','',"
                "].join("")),i.layBox.append(i.layInit)))},I.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},I.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},I.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},I.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=R.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},I.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},I.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
                ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},I.prototype.events=function(){var e,a=this,o=a.config,c=t("body"),s={},u=a.layHeader.find("th"),h=".layui-table-cell",p=o.elem.attr("lay-filter");a.layTool.on("click","*[lay-event]",function(e){var i=t(this),c=i.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
                  ');n.html(l),o.height&&n.css("max-height",o.height-(a.layTool.outerHeight()||50)),i.find(".layui-table-tool-panel")[0]||i.append(n),a.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(a.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return a.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
                • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var i=t(e.elem),l=this.checked,n=i.data("key"),r=i.data("parentkey");layui.each(o.cols,function(e,t){layui.each(t,function(t,i){if(e+"-"+t===n){var d=i.hide;i.hide=!l,a.elem.find('*[data-key="'+o.index+"-"+n+'"]')[l?"removeClass":"addClass"](f),d!=i.hide&&a.setParentCol(!l,r),a.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
                • 导出到 Csv 文件
                • ','
                • 导出到 Excel 文件
                • '].join("")}(),done:function(e,i){i.on("click",function(){var e=t(this).data("type");d.exportFile(o.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=[""].join(""),v=t(a.layHeader.html());v.append(a.layMain.find("table").html()),v.append(a.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:o},{}))}),u.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||s.resizeStart||(s.allowResize=i.width()-l<=10,c.css("cursor",s.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);s.resizeStart||c.css("cursor","")}).on("mousedown",function(e){var i=t(this);if(s.allowResize){var l=i.data("key");e.preventDefault(),s.resizeStart=!0,s.offset=[e.clientX,e.clientY],a.getCssRule(l,function(e){var t=e.style.width||i.outerWidth();s.rule=e,s.ruleWidth=parseFloat(t),s.minWidth=i.data("minwidth")||o.cellMinWidth})}}),F.on("mousemove",function(t){if(s.resizeStart){if(t.preventDefault(),s.rule){var i=s.ruleWidth+t.clientX-s.offset[0];i');return n[0].value=i.data("content")||l.text(),i.find("."+W)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
                  ')}};a.layBody.on("click","."+g,function(e){var i=t(this),n=i.parent(),d=n.children(h);a.tipsIndex=l.tips(['
                  ',d.html(),"
                  ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:a.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),a.layBody.on("click","*[lay-event]",function(){var e=t(this),i=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),a.setThisRowChecked(i)}),a.layMain.on("scroll",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layTotal.scrollLeft(i),a.layFixed.find(k).scrollTop(n),l.close(a.tipsIndex)}),F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()}),R.on("resize",function(){a.resize()})},d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var a=c.config[e]||{},l={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],n=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(n.href="data:"+l+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],a=[];return layui.each(t,function(t,l){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(l),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,a){a.field&&"normal"==a.type&&!a.hide&&(0==t&&i.push(a.title||""),n.push('"'+u(a,l[a.field],l,"text")+'"'))}),a.push(n.join(","))}),i.join(",")+"\r\n"+a.join("\r\n")}()),n.download=(a.title||"table_"+(a.index||""))+"."+i,document.body.appendChild(n),n.click(),void document.body.removeChild(n))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new I(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
                    ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
                  "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).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(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a",u=1;u<=i.length;u++){var r='
                • ";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'
                • ":n+=r}n+=""+(i.text?''+i.value+"星":"")+"";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['
                    ',t.bar1?'
                  • '+c[0]+"
                  • ":"",t.bar2?'
                  • '+c[1]+"
                  • ":"",'
                  • '+c[2]+"
                  • ","
                  "].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
                  ','
                  '+f+"
                  ",'
                  ','',"
                  ","
                  "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

                  ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

                  "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

                  "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['

                    ','
                  • ','','
                    ','',"
                    ","
                  • ",'
                  • ','','
                    ','",'","
                    ","
                  • ",'
                  • ','','',"
                  • ","
                  "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
                • '+e+'
                • ')}),'
                    '+t.join("")+"
                  "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
                    ','
                  • ','','
                    ','","
                    ","
                  • ",'
                  • ','','
                    ','',"
                    ","
                  • ",'
                  • ','','',"
                  • ","
                  "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)});layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
                  1. '+o.replace(/[\r\t\n]+/g,"
                  2. ")+"
                  "),c.find(">.layui-code-h3")[0]||c.prepend('

                  '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

                  ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file diff --git a/public/static/plugs/layui/layui.js b/public/static/plugs/layui/layui.js index 3cd51c214..b6c4c4904 100644 --- a/public/static/plugs/layui/layui.js +++ b/public/static/plugs/layui/layui.js @@ -1,2 +1,2 @@ -/** layui-v2.4.5 MIT License By https://www.layui.com */ - ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.4.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),layui["layui.all"]||!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r.layui-body>.layui-card{box-shadow:none} -.layui-layout>.layui-body>.layui-card>.layui-card-body{padding:15px 15px} -.layui-layout>.layui-body,.layui-layout>.layui-side{top:50px;bottom:0;overflow:auto} -.layui-layout>.layui-body>.layui-card>.layui-card-header{height:50px;border:none;line-height:50px;box-shadow:0 2px 3px 0 rgba(0,0,0,.1);background:#fff} +.layui-layout > .layui-side { + top: 50px; + bottom: 0; + overflow: auto; +} +.layui-layout > .layui-body { + top: 50px; + bottom: 0; + overflow: auto; +} +.layui-layout > .layui-body > .layui-card { + box-shadow: none; +} +.layui-layout > .layui-body > .layui-card > .layui-card-body { + padding: 15px 15px; +} +.layui-layout > .layui-body > .layui-card > .layui-card-header { + height: 50px; + border: none; + line-height: 50px; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.1); + background: #fff; +} /* 页面布局 - 头部 */ -.layui-header{height:50px;background:#009688!important} -.layui-header .layui-layout-left,.layui-header .layui-layout-right{padding:0} -.layui-header .layui-logo{color:#fff;font-size:18px;line-height:50px;box-shadow:0 1px 3px 0 rgba(0,0,0,.15)} -.layui-header .layui-logo sup{font-size:9px;line-height:9px} -.layui-header .layui-nav-item{line-height:50px} -.layui-header .layui-nav-item>a{color:#fff!important} -.layui-header .layui-nav-item.layui-this{background:rgba(0,0,0,.1)} -.layui-header .layui-nav-bar,.layui-header .layui-nav-item:after{display:none!important} -.layui-header .layui-nav-item .layui-nav-child{top:49px;padding:0;border:none;line-height:45px;box-shadow:0 1px 2px 0 rgba(0,0,0,.2)} -.layui-header .layui-nav-item .layui-nav-child+a{padding-right:35px} -.layui-header .layui-nav-item .layui-nav-child.layui-show+a{background:#fff} -.layui-header .layui-nav-item .layui-nav-child.layui-show+a span{color:#333} -.layui-header .layui-nav-item .layui-nav-child dd a{padding:0;color:#333;text-align:center;border-top:1px solid #eaedf1} +.layui-header { + height: 50px; + background: #393D49 !important; +} +.layui-header [data-target-menu-type] { + border-left: 1px solid rgba(0, 0, 0, 0); + border-right: 1px solid rgba(0, 0, 0, 0.15); +} +.layui-header .layui-layout-left, +.layui-header .layui-layout-right { + padding: 0; +} +.layui-header .layui-logo { + color: #fff; + width: 199px; + height: auto; + font-size: 18px; + line-height: 49px; + border-right: 1px solid rgba(0, 0, 0, 0.15); + border-bottom: 1px solid rgba(0, 0, 0, 0.15); +} +.layui-header .layui-logo sup { + font-size: 9px; + line-height: 9px; +} +.layui-header .layui-nav-item { + line-height: 50px; +} +.layui-header .layui-nav-item.layui-this { + background: #009688; +} +.layui-header .layui-nav-item > a { + color: #fff !important; +} +.layui-header .layui-nav-item .layui-nav-child { + top: 49px; + padding: 0; + border: none; + line-height: 45px; +} +.layui-header .layui-nav-item .layui-nav-child + a { + padding-right: 35px; +} +.layui-header .layui-nav-item .layui-nav-child.layui-show + a { + background: #fff; +} +.layui-header .layui-nav-item .layui-nav-child.layui-show + a span { + color: #333; +} +.layui-header .layui-nav-item .layui-nav-child dd a { + padding: 0; + color: #333; + text-align: center; + border-top: 1px solid #eaedf1; +} +.layui-header .layui-nav-bar, +.layui-header .layui-nav-item:after { + display: none !important; +} +.layui-header .layui-layout-right > li > a { + border-left: 1px solid rgba(0, 0, 0, 0.15); + border-right: 1px solid rgba(0, 0, 0, 0); +} /* 页面布局 - 左则 */ -.layui-layout.layui-layout-left-mini>.layui-body{left:50px} -.layui-layout.layui-layout-left-hide>.layui-side{display:none} -.layui-layout.layui-layout-left-hide>.layui-body{left:0!important} -.layui-layout>.layui-side .layui-nav-bar{display:none!important} -.layui-layout>.layui-side .layui-side-scroll{width:100%!important} -.layui-layout>.layui-side .layui-nav-item{border-bottom:1px solid #333} -.layui-layout>.layui-side .layui-nav-itemed{border-bottom:none!important} -.layui-layout>.layui-side .layui-nav-item a{height:45px;display:block;color:#fff!important;line-height:45px} -.layui-layout>.layui-side .layui-nav-item a:hover{background:hsla(0,0%,39%,.2)!important} -.layui-layout>.layui-side .layui-nav-tree-top a{height:28px!important;line-height:28px!important} -.layui-layout.layui-layout-left-mini>.layui-side,.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-tree,.layui-layout.layui-layout-left-mini>.layui-side .layui-side-scroll{width:50px;text-align:center} -.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-item a{padding:0} -.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-item .nav-text{display:none} -.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-item .nav-icon{display:inline-block!important;padding:0!important} -.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-item .layui-nav-child{padding:0;display:block!important;background-color:rgba(0,0,0,.3)!important} -.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-tree-top i{display:inline-block;-webkit-transform:rotate(180deg);transform:rotate(180deg);-ms-transform:rotate(180deg)} -.layui-layout.layui-layout-left-mini>.layui-side .layui-nav-more{display:none!important} -/* 下拉样式 */ -.layui-nav .layui-nav-item .layui-nav-more{top:0;border:none;right:15px;width:auto;height:auto;margin-top:0;font-size:14px;font-style:normal;font-family:layui-icon!important;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} -.layui-nav .layui-nav-item .layui-nav-mored,.layui-nav .layui-nav-itemed .layui-nav-more{border:none;margin-top:0;transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);-moz-transform:rotate(180deg);-webkit-transform:rotate(180deg)} -.layui-nav .layui-nav-item .layui-nav-more::before{content:"\e619"} -/* 对齐及颜色 */ -.absolute{position:absolute!important}.relative{position:relative!important}.pull-left{float:left!important}.pull-right{float:right!important} -.text-top{vertical-align:top!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-middle{vertical-align:middle!important}.text-bottom{vertical-align:bottom!important} -.nowrap{white-space:nowrap!important}.help-block{color:#999;font-size:12px}.inline-block{display:inline-block!important}.block{display:block!important}.pointer{cursor:pointer!important} -.full-width{width:100%!important}.full-height{height:100%!important}.color-red{color:#ec494e!important}.color-blue{color:#2494f2!important}.color-desc{color:#999!important}.color-text{color:#333!important}.color-green{color:#090!important} -.notdata{display:block;padding:15px;border:1px solid #e6e6e6;border-radius:0 2px 2px 0;background-color:#f2f2f2;text-align:center;letter-spacing:8px;font-size:13px;line-height:22px} -[data-tips-image]{cursor:zoom-in!important}.notselect{user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}.transition{-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-o-transition:all .2s linear;transition:all .2s linear} -/* 文字大小 */ -.font-s10{font-size:10px!important}.font-s11{font-size:11px!important}.font-s12{font-size:12px!important}.font-s13{font-size:13px!important}.font-s14{font-size:14px!important}.font-s16{font-size:16px!important}.font-s18{font-size:18px!important}.font-s20{font-size:20px!important}.font-s30{font-size:30px!important} -.border-0{border:0!important}.border-radius-0{border-radius:0!important} -.padding-0{padding:0!important}.padding-5{padding:5px!important}.padding-10{padding:10px!important}.padding-15{padding:15px!important}.padding-20{padding:20px!important}.padding-25{padding:25px!important}.padding-30{padding:30px!important} -.padding-top-0{padding-top:0!important}.padding-top-5{padding-top:5px!important}.padding-top-10{padding-top:10px!important}.padding-top-15{padding-top:15px!important}.padding-top-20{padding-top:20px!important}.padding-top-30{padding-top:30px!important} -.padding-left-0{padding-left:0!important}.padding-left-5{padding-left:5px!important}.padding-left-10{padding-left:10px!important}.padding-left-15{padding-left:15px!important}.padding-left-20{padding-left:20px!important}.padding-left-40{padding-left:40px!important} -.padding-right-0{padding-right:0!important}.padding-right-5{padding-right:5px!important}.padding-right-10{padding-right:10px!important}.padding-right-15{padding-right:15px!important}.padding-right-20{padding-right:20px!important}.padding-right-30{padding-right:30px!important} -.padding-bottom-0{padding-bottom:0!important}.padding-bottom-5{padding-bottom:5px!important}.padding-bottom-10{padding-bottom:10px!important}.padding-bottom-15{padding-bottom:15px!important}.padding-bottom-20{padding-bottom:20px!important}.padding-bottom-30{padding-bottom:30px!important} -.margin-0{margin:0!important}.margin-5{margin:5px!important}.margin-10{margin:10px!important}.margin-15{margin:15px!important}.margin-20{margin:20px!important}.margin-25{margin:25px!important}.margin-30{margin:30px!important} -.margin-top-0{margin-top:0!important}.margin-top-5{margin-top:5px!important}.margin-top-10{margin-top:10px!important}.margin-top-15{margin-top:15px!important}.margin-top-20{margin-top:20px!important} -.margin-left-0{margin-left:0!important}.margin-left-5{margin-left:5px!important}.margin-left-10{margin-left:10px!important}.margin-left-15{margin-left:15px!important}.margin-left-20{margin-left:20px!important}.margin-left-40{margin-left:40px!important} -.margin-right-0{margin-right:0!important}.margin-right-5{margin-right:5px!important}.margin-right-10{margin-right:10px!important}.margin-right-15{margin-right:15px!important}.margin-right-20{margin-right:20px!important} -.margin-bottom-0{margin-bottom:0!important}.margin-bottom-5{margin-bottom:5px!important}.margin-bottom-10{margin-bottom:10px!important}.margin-bottom-15{margin-bottom:15px!important}.margin-bottom-20{margin-bottom:20px!important} +.layui-layout > .layui-side .layui-nav-bar { + display: none !important; +} +.layui-layout > .layui-side .layui-side-scroll { + width: 100% !important; +} +.layui-layout > .layui-side .layui-nav-item { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); +} +.layui-layout > .layui-side .layui-nav-item a { + height: 45px; + display: block; + line-height: 45px; + color: #fff !important; +} +.layui-layout > .layui-side .layui-nav-item a:hover { + background: hsla(0, 0%, 39%, 0.2) !important; +} +.layui-layout > .layui-side .layui-nav-itemed { + border-bottom: none !important; +} +.layui-layout > .layui-side .layui-nav-tree-top a { + height: 28px !important; + line-height: 28px !important; +} +.layui-layout.layui-layout-left-mini > .layui-body { + left: 50px; +} +.layui-layout.layui-layout-left-mini > .layui-side .layui-nav-more { + display: none !important; +} +.layui-layout.layui-layout-left-mini > .layui-side .layui-nav-item a { + padding: 0; +} +.layui-layout.layui-layout-left-mini > .layui-side .layui-nav-item .nav-text { + display: none; +} +.layui-layout.layui-layout-left-mini > .layui-side .layui-nav-item .nav-icon { + display: inline-block !important; + padding: 0 !important; +} +.layui-layout.layui-layout-left-mini > .layui-side .layui-nav-item .layui-nav-child { + padding: 0; + display: block !important; + background-color: rgba(0, 0, 0, 0.3) !important; +} +.layui-layout.layui-layout-left-mini > .layui-side, +.layui-layout.layui-layout-left-mini > .layui-side .layui-nav-tree, +.layui-layout.layui-layout-left-mini > .layui-side .layui-side-scroll { + width: 50px; + text-align: center; +} +.layui-layout.layui-layout-left-mini [data-target-menu-type] i { + display: inline-block; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + -ms-transform: rotate(180deg); +} +.layui-layout.layui-layout-left-hide > .layui-body { + left: 0 !important; +} +.layui-layout.layui-layout-left-hide > .layui-side { + display: none; +} +.layui-layout.layui-layout-left-hide [data-target-menu-type] { + display: none; +} /* 弹框层表单 */ -fieldset legend{color:#666;padding:0 10px;font-size:14px} -fieldset{margin:0;border:1px solid #e6e6e6;padding:10px 20px 5px 20px} -.layui-form.layui-card{box-shadow:none} -.layui-form.layui-card .layui-card-body{padding:20px 40px 0 0} -.layui-layer-dialog .layui-layer-content .layui-layer-ico{top:50%!important;margin-top:-15px!important} -.form-search .layui-btn{height:32px;line-height:28px;font-size:12px;padding:0 10px} -.form-search .layui-form-label{width:auto!important;padding:0 8px;height:32px;line-height:30px} -.form-search .layui-input-inline{width:170px} -.form-search .layui-input-inline input,.form-search .layui-input-inline select{width:100%;height:32px;padding:2px 8px;line-height:30px} -.form-search .layui-form-select dl{top:31px;padding:0} -/** 加载进度 */ -.pace-inactive{display:none} -.pace-progress{position:fixed;top:0;right:100%;width:100%;height:2px;z-index:2000;background:#22df80} -/* 分隔线条 */ -.hr-line-dashed{color:#fff;height:1px;margin:20px 0;background-color:#fff;border-top:1px dashed #e7eaec} -.hr-line-solid{margin-top:15px;margin-bottom:15px;border-bottom:1px solid #e7eaec;background-color:rgba(0,0,0,0)} -.label-required-prev:before{width:1em;margin-left:-0.8em;color:red;content:'*';display:inline-block;position:absolute;text-align:left;font-weight:700;line-height:1.6em} -.label-required:after,.label-required-next:after{top:6px;right:5px;color:red;content:'*';position:absolute;margin-left:4px;font-weight:700;line-height:1.8em} -.label-required-null:before,.label-required-null:before{content:none!important} -/* 通用分页 */ -.pagination-container{line-height:40px} -.pagination-container>span{color:#666;font-size:9pt} -.pagination-container>ul{float:right;display:inline-block;margin:0;padding:0} -.pagination-container>ul>li{z-index:1;display:inline-block} -.pagination-container>ul>li>a,.pagination-container>ul>li>span{color:#333;width:33px;height:30px;border:1px solid #dcdcdc;display:inline-block;margin-left:-1px;text-align:center;line-height:28px} -.pagination-container>ul>li>span{background:#dcdcdc;cursor:default} -.pagination-container>ul>li>a:hover{background:#dcdcdc;border-color:#dcdcdc} -.pagination-container>ul>li.active{z-index:2} -.pagination-container>ul>li.active>span{color:#fff;border-color:#098;padding-right:1px;background:#009688!important} -/* 图片上传 */ -.uploadimage{width:5pc;height:5pc;cursor:pointer;display:inline-block;background:url(../img/image.png) no-repeat center center;background-size:cover} -.uploadimagemtl{margin-right:8px} -.uploadimagemtl a{color:#fff;width:20px;height:20px;float:right;display:none;text-align:center;line-height:22px;background:rgba(0,0,0,.5)} -.uploadimagemtl:hover a{cursor:pointer;display:inline-block} -.uploadimagemtl:hover a:hover{color:#fff;text-decoration:none} -/** Layui样式调整 */ -.layui-input,.layui-select{line-height:38px} -.layui-table td,.layui-table th{font-size:12px} -.layui-btn-sm.layui-btn-primary{line-height:28px} -.layui-btn-xs.layui-btn-primary{line-height:20px} -.laydate-footer-btns span{line-height:24px!important} -.layui-table td .text-explode{color:#ccc!important;margin:0 4px!important} -.layui-table td .text-explode:first-child{display:none;opacity:0} -.layui-table td .background-image{float:left;width:40px;height:40px;display:inline-block;margin-right:5px;background:no-repeat center center;background-size:cover;vertical-align:middle} -.layui-table .list-table-image{width:22px;cursor:pointer} -.layui-table .list-table-sort-td{width:10px!important;text-align:center!important;padding-left:5px!important;padding-right:5px!important} -.layui-table .list-table-sort-td button{width:56px;background:#009688} -.layui-table .list-table-sort-td input{width:50px;color:#666;padding:2px;border:1px solid #e6e6e6;text-align:center;font-size:9pt;line-height:18px} -.layui-table .list-table-check-td{width:10px!important;text-align:center;padding-left:15px!important;padding-right:15px!important} -.layui-table .list-table-check-td input{margin:0!important;vertical-align:middle} +fieldset { + margin: 0; + border: 1px solid #e6e6e6; + padding: 10px 20px 5px 20px; +} +fieldset legend { + color: #666; + padding: 0 10px; + font-size: 14px; +} +.form-search .layui-btn { + height: 32px; + line-height: 28px; + font-size: 12px; + padding: 0 10px; +} +.form-search .layui-form-label { + width: auto !important; + padding: 0 8px; + height: 32px; + line-height: 30px; +} +.form-search .layui-input-inline { + width: 170px; +} +.form-search .layui-input-inline input, +.form-search .layui-input-inline select { + width: 100%; + height: 32px; + padding: 2px 8px; + line-height: 1em; +} +.form-search .layui-form-select dl { + top: 31px; + padding: 0; +} +.layui-form .layui-input, +.layui-form .layui-select { + line-height: 1em; +} +/* 表单验证异常提示 */ +.label-required-prev:before { + width: 1em; + color: red; + content: '*'; + display: inline-block; + position: absolute; + text-align: left; + font-weight: 700; + line-height: 1.6em; + margin-left: -0.8em; +} +.label-required:after, +.label-required-next:after { + top: 6px; + right: 5px; + color: red; + content: '*'; + position: absolute; + margin-left: 4px; + font-weight: 700; + line-height: 1.8em; +} +.label-required-null:before { + content: none !important; +} /** 自定义表单样式 */ -.think-form-label{padding:9px 15px;font-weight:400;line-height:20px;text-align:right} -.think-form-group-right{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none} -.think-form-group-left input{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none} -.think-box-shadow{box-shadow:0 2px 3px 0 rgba(0,0,0,.1);background:#fff;padding:20px 30px!important} +.think-form-label { + padding: 9px 15px; + font-weight: 400; + line-height: 20px; + text-align: right; +} +.think-form-group-right { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.think-form-group-left input { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.think-box-shadow { + background: #fff; + padding: 20px 20px !important; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.1); +} /** checkbox & radio */ -label.think-checkbox,label.think-radio{display:inline-block;margin-right:10px} -.think-checkbox,.think-radio{margin-top:10px;font-weight:400;line-height:17px;cursor:pointer} -.think-checkbox input[type=checkbox]{width:18px;height:18px;border:1px solid #dcdcdc;cursor:pointer;margin:0 5px 0 0;position:relative;display:inline-block!important;background:#fff;appearance:none;box-sizing:border-box!important;border-radius:1px;vertical-align:bottom;-webkit-appearance:none} -.think-checkbox input[type=checkbox]:checked:after{color:#666;padding:2px;display:block;content:"\e605";font-size:12px;font-style:normal;font-weight:700;position:absolute;font-family:layui-icon!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -.think-radio input[type=radio]{width:18px;height:18px;cursor:pointer;margin:0 5px 0 0;position:relative;border:1px solid #dcdcdc;display:inline-block!important;box-sizing:border-box!important;appearance:none;background:#fff;border-radius:1em;vertical-align:bottom;-webkit-appearance:none} -.think-radio input[type=radio]:checked:after{top:4px;left:4px;width:8px;height:8px;content:'';display:block;position:relative;background:#666;border-radius:1em} +label.think-checkbox, +label.think-radio { + margin-right: 10px; + display: inline-block; +} +.think-checkbox, +.think-radio { + cursor: pointer; + margin-top: 10px; + font-weight: 400; + line-height: 17px; +} +.think-checkbox input[type=checkbox] { + width: 18px; + height: 18px; + border: 1px solid #dcdcdc; + cursor: pointer; + margin: 0 5px 0 0; + position: relative; + display: inline-block !important; + background: #fff; + appearance: none; + box-sizing: border-box !important; + border-radius: 1px; + vertical-align: bottom; + -webkit-appearance: none; +} +.think-checkbox input[type=checkbox]:checked:after { + color: #666; + padding: 2px; + display: block; + content: "\e605"; + font-size: 12px; + font-style: normal; + font-weight: 700; + position: absolute; + font-family: layui-icon !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.think-radio input[type=radio] { + width: 18px; + height: 18px; + cursor: pointer; + margin: 0 5px 0 0; + position: relative; + border: 1px solid #dcdcdc; + display: inline-block !important; + box-sizing: border-box !important; + appearance: none; + background: #fff; + border-radius: 1em; + vertical-align: bottom; + -webkit-appearance: none; +} +.think-radio input[type=radio]:checked:after { + top: 4px; + left: 4px; + width: 8px; + height: 8px; + content: ''; + display: block; + position: relative; + background: #666; + border-radius: 1em; +} +.layui-form.layui-card { + box-shadow: none; +} +.layui-layer-content .layui-form.layui-card .layui-card-body { + padding: 20px 40px 0 0; +} +.layui-layer-dialog .layui-layer-content .layui-layer-ico { + top: 50% !important; + margin-top: -15px !important; +} +.laydate-footer-btns span { + line-height: 24px !important; +} +/** Layui样式调整 */ +.layui-input, +.layui-select { + line-height: 38px; +} +.layui-btn-primary.layui-btn-xs { + line-height: 20px; +} +.layui-btn-primary.layui-btn-sm { + line-height: 28px; +} +/* 下拉样式 */ +.layui-nav .layui-nav-item .layui-nav-more { + top: 0; + border: none; + right: 15px; + width: auto; + height: auto; + margin-top: 0; + font-size: 14px; + font-style: normal; + font-family: layui-icon !important; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} +.layui-nav .layui-nav-item .layui-nav-more::before { + content: "\e619"; +} +.layui-nav .layui-nav-item .layui-nav-mored, +.layui-nav .layui-nav-itemed .layui-nav-more { + border: none; + margin-top: 0; + transform: rotate(180deg); + -o-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -webkit-transform: rotate(180deg); +} +.layui-table td, +.layui-table th { + font-size: 12px; +} +.layui-table .list-table-image { + width: 22px; + cursor: pointer; +} +.layui-table .list-table-sort-td { + width: 10px !important; + text-align: center !important; + padding-left: 5px !important; + padding-right: 5px !important; +} +.layui-table .list-table-sort-td button { + width: 56px; + background: #009688; +} +.layui-table .list-table-sort-td input { + width: 50px; + color: #666; + padding: 2px; + border: 1px solid #e6e6e6; + text-align: center; + font-size: 9pt; + line-height: 18px; +} +.layui-table .list-table-check-td { + width: 10px !important; + text-align: center; + padding-left: 15px !important; + padding-right: 15px !important; +} +.layui-table .list-table-check-td input { + margin: 0 !important; + vertical-align: middle; +} +.layui-table td .text-explode { + color: #ccc !important; + margin: 0 4px !important; +} +.layui-table td .text-explode:first-child { + display: none; + opacity: 0; +} +.layui-table td .background-image { + float: left; + width: 40px; + height: 40px; + display: inline-block; + margin-right: 5px; + background: no-repeat center center; + background-size: cover; + vertical-align: middle; +} +[data-tips-image] { + cursor: zoom-in !important; +} +.notdata { + padding: 15px; + display: block; + font-size: 13px; + text-align: center; + line-height: 22px; + letter-spacing: 8px; + border: 1px solid #e6e6e6; + background-color: #f2f2f2; + border-radius: 0 2px 2px 0; +} +.notselect { + user-select: none; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} +.transition { + transition: all 0.2s linear; + -o-transition: all 0.2s linear; + -moz-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; +} +.absolute { + position: absolute !important; +} +.relative { + position: relative !important; +} +.block { + display: block !important; +} +.pointer { + cursor: pointer !important; +} +.nowrap { + white-space: nowrap !important; +} +.help-block { + color: #999; + font-size: 12px; +} +.inline-block { + display: inline-block !important; +} +.pull-left { + float: left !important; +} +.pull-right { + float: right !important; +} +.full-width { + width: 100% !important; +} +.full-height { + height: 100% !important; +} +.color-red { + color: #ec494e !important; +} +.color-blue { + color: #2494f2 !important; +} +.color-desc { + color: #999 !important; +} +.color-text { + color: #333 !important; +} +.color-green { + color: #090 !important; +} +.text-top { + vertical-align: top !important; +} +.text-left { + text-align: left !important; +} +.text-right { + text-align: right !important; +} +.text-center { + text-align: center !important; +} +.text-middle { + vertical-align: middle !important; +} +.text-bottom { + vertical-align: bottom !important; +} +.think-bg-white { + background: white !important; +} +.think-bg-blue { + background: linear-gradient(-125deg, #57bdbf, #2f9de2) !important; +} +.think-bg-orig { + background: linear-gradient(-141deg, #ecca1b, #f39526) !important; +} +.think-bg-red { + background: linear-gradient(-125deg, #ff7d7d, #fb2c95) !important; +} +.think-bg-violet { + background: linear-gradient(-113deg, #c543d8, #925cc3) !important; +} +/* 分隔线条 */ +.hr-line-dashed { + color: #fff; + height: 1px; + margin: 20px 0; + background-color: #fff; + border-top: 1px dashed #e7eaec; +} +.hr-line-solid { + margin-top: 15px; + margin-bottom: 15px; + border-bottom: 1px solid #e7eaec; + background-color: rgba(0, 0, 0, 0); +} +/* 文字大小 */ +.border-0 { + border: 0 !important; +} +.border-radius-0 { + border-radius: 0 !important; +} +.border-radius-left-0 { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.border-radius-right-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +.font-s10 { + font-size: 10px !important; +} +.font-s11 { + font-size: 11px !important; +} +.font-s12 { + font-size: 12px !important; +} +.font-s13 { + font-size: 13px !important; +} +.font-s14 { + font-size: 14px !important; +} +.font-s15 { + font-size: 15px !important; +} +.font-s16 { + font-size: 16px !important; +} +.font-s18 { + font-size: 18px !important; +} +.font-s20 { + font-size: 20px !important; +} +.font-s30 { + font-size: 30px !important; +} +.font-s40 { + font-size: 40px !important; +} +.padding-0 { + padding: 0 !important; +} +.padding-5 { + padding: 5px !important; +} +.padding-10 { + padding: 10px !important; +} +.padding-15 { + padding: 15px !important; +} +.padding-20 { + padding: 20px !important; +} +.padding-25 { + padding: 25px !important; +} +.padding-30 { + padding: 30px !important; +} +.padding-40 { + padding: 40px !important; +} +.padding-top-0 { + padding-top: 0 !important; +} +.padding-top-5 { + padding-top: 5px !important; +} +.padding-top-10 { + padding-top: 10px !important; +} +.padding-top-15 { + padding-top: 15px !important; +} +.padding-top-20 { + padding-top: 20px !important; +} +.padding-top-30 { + padding-top: 30px !important; +} +.padding-top-40 { + padding-top: 40px !important; +} +.padding-left-0 { + padding-left: 0 !important; +} +.padding-left-5 { + padding-left: 5px !important; +} +.padding-left-10 { + padding-left: 10px !important; +} +.padding-left-15 { + padding-left: 15px !important; +} +.padding-left-20 { + padding-left: 20px !important; +} +.padding-left-30 { + padding-left: 30px !important; +} +.padding-left-40 { + padding-left: 40px !important; +} +.padding-right-0 { + padding-right: 0 !important; +} +.padding-right-5 { + padding-right: 5px !important; +} +.padding-right-10 { + padding-right: 10px !important; +} +.padding-right-15 { + padding-right: 15px !important; +} +.padding-right-20 { + padding-right: 20px !important; +} +.padding-right-30 { + padding-right: 30px !important; +} +.padding-right-40 { + padding-right: 40px !important; +} +.padding-bottom-0 { + padding-bottom: 0 !important; +} +.padding-bottom-5 { + padding-bottom: 5px !important; +} +.padding-bottom-10 { + padding-bottom: 10px !important; +} +.padding-bottom-15 { + padding-bottom: 15px !important; +} +.padding-bottom-20 { + padding-bottom: 20px !important; +} +.padding-bottom-30 { + padding-bottom: 30px !important; +} +.padding-bottom-40 { + padding-bottom: 40px !important; +} +.margin-0 { + margin: 0 !important; +} +.margin-5 { + margin: 5px !important; +} +.margin-10 { + margin: 10px !important; +} +.margin-15 { + margin: 15px !important; +} +.margin-20 { + margin: 20px !important; +} +.margin-25 { + margin: 25px !important; +} +.margin-30 { + margin: 30px !important; +} +.margin-40 { + margin: 40px !important; +} +.margin-top-0 { + margin-top: 0 !important; +} +.margin-top-5 { + margin-top: 5px !important; +} +.margin-top-10 { + margin-top: 10px !important; +} +.margin-top-15 { + margin-top: 15px !important; +} +.margin-top-20 { + margin-top: 20px !important; +} +.margin-top-25 { + margin-top: 25px !important; +} +.margin-top-30 { + margin-top: 30px !important; +} +.margin-top-40 { + margin-top: 40px !important; +} +.margin-left-0 { + margin-left: 0 !important; +} +.margin-left-5 { + margin-left: 5px !important; +} +.margin-left-10 { + margin-left: 10px !important; +} +.margin-left-15 { + margin-left: 15px !important; +} +.margin-left-20 { + margin-left: 20px !important; +} +.margin-left-25 { + margin-left: 25px !important; +} +.margin-left-30 { + margin-left: 30px !important; +} +.margin-left-40 { + margin-left: 40px !important; +} +.margin-right-0 { + margin-right: 0 !important; +} +.margin-right-5 { + margin-right: 5px !important; +} +.margin-right-10 { + margin-right: 10px !important; +} +.margin-right-15 { + margin-right: 15px !important; +} +.margin-right-20 { + margin-right: 20px !important; +} +.margin-right-25 { + margin-right: 25px !important; +} +.margin-right-30 { + margin-right: 30px !important; +} +.margin-right-40 { + margin-right: 40px !important; +} +.margin-bottom-0 { + margin-bottom: 0 !important; +} +.margin-bottom-5 { + margin-bottom: 5px !important; +} +.margin-bottom-10 { + margin-bottom: 10px !important; +} +.margin-bottom-15 { + margin-bottom: 15px !important; +} +.margin-bottom-20 { + margin-bottom: 20px !important; +} +.margin-bottom-25 { + margin-bottom: 25px !important; +} +.margin-bottom-30 { + margin-bottom: 30px !important; +} +.margin-bottom-40 { + margin-bottom: 40px !important; +} +/* 浏览器DEBUG */ +.version-debug { + width: 100%; + color: #fff; + height: 100px; + font-size: 20px; + text-align: center; + line-height: 100px; + margin-bottom: 40px; + background-color: #E90D24; +} +/** 加载进度 */ +.pace-inactive { + display: none; +} +.pace-progress { + top: 0; + right: 100%; + width: 100%; + height: 2px; + z-index: 2000; + position: fixed; + background: #22df80; +} +/* 图片上传 */ +.moxie-shim { + display: none !important; +} +.uploadimage { + width: 5pc; + height: 5pc; + cursor: pointer; + display: inline-block; + background-size: cover; + background: url('../img/image.png') no-repeat center center; +} +.uploadimagemtl { + margin-right: 8px; +} +.uploadimagemtl a { + color: #fff; + width: 20px; + height: 20px; + float: right; + display: none; + text-align: center; + line-height: 22px; + background: rgba(0, 0, 0, 0.5); +} +.uploadimagemtl:hover a { + cursor: pointer; + display: inline-block; +} +.uploadimagemtl:hover a:hover { + color: #fff; + text-decoration: none; +} +/* 通用分页 */ +.pagination-container { + line-height: 40px; +} +.pagination-container > span { + color: #666; + font-size: 9pt; +} +.pagination-container > ul { + float: right; + display: inline-block; + margin: 0; + padding: 0; +} +.pagination-container > ul > li { + z-index: 1; + display: inline-block; +} +.pagination-container > ul > li.active { + z-index: 2; +} +.pagination-container > ul > li.active > span { + color: #fff; + border-color: #098; + padding-right: 1px; + background: #009688 !important; +} +.pagination-container > ul > li > a, +.pagination-container > ul > li > span { + color: #333; + width: 33px; + height: 30px; + border: 1px solid #dcdcdc; + display: inline-block; + margin-left: -1px; + text-align: center; + line-height: 28px; +} +.pagination-container > ul > li > span { + background: #dcdcdc; + cursor: default; +} +.pagination-container > ul > li > a:hover { + background: #dcdcdc; + border-color: #dcdcdc; +} /** 手机盒子及微信菜单 */ -.mobile-preview{width:317px;height:580px;position:relative;background:url(../img/wechat/mobile_head.png) no-repeat 0 0} -.mobile-preview .mobile-header{color:#fff;width:auto;margin:0 30px;overflow:hidden;font-size:15px;padding-top:30px;text-align:center;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal;user-select:none;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-webkit-pointer-events:none} -.mobile-body{top:60px;left:0;right:0;bottom:0;position:absolute;border:1px solid #ccc;background:#f5f5f5} -.mobile-body iframe{width:100%;height:100%} -.mobile-footer{left:0;right:0;bottom:0;margin:0;position:absolute;padding-left:43px;border:1px solid #ccc;list-style-type:none;background:url(../img/wechat/mobile_foot.png) no-repeat 0 0} -.mobile-footer li{float:left;width:33.33%;position:relative;text-align:center;line-height:50px} -.mobile-footer li a{width:auto;display:block;overflow:hidden;border:1px solid hsla(0,0%,100%,0);border-left:1px solid #e7e7eb;margin-top:-1px;margin-bottom:-1px;color:#616161;white-space:nowrap;text-decoration:none;text-overflow:ellipsis;word-wrap:normal} -.mobile-footer li a:hover{background:rgba(0,0,0,.02)} -.mobile-footer li a.active{border:1px solid #44b549!important;box-shadow:0 0 1px #44b549} -.mobile-footer li a span:before{width:1px;height:1px;content:'';display:inline-block} -.mobile-footer li>.close{top:1px;right:1px;width:18px;height:18px;display:none;cursor:pointer;position:absolute;text-align:center;line-height:18px} -.mobile-footer li:hover>.close{display:inline-block} -.mobile-footer li:hover>.close:hover{color:#fff!important;background:#999!important} -.mobile-footer .icon-add{width:14px;height:14px;border-bottom:none!important;background:url(../img/wechat/index.png) 0 0 no-repeat} -.mobile-footer .icon-add,.mobile-footer .icon-sub{display:inline-block;vertical-align:middle} -.mobile-footer .icon-sub{width:7px;height:7px;margin-right:2px;background:url(../img/wechat/index.png) 0 -3pc no-repeat} -.mobile-footer .sub-menu{width:100%;bottom:60px;margin:-1px;display:block;position:absolute;border:1px solid #d0d0d0;background-color:#fafafa} -.mobile-footer .sub-menu ul,.mobile-footer .sub-menu ul li{float:none;padding:0;z-index:11;display:block;width:100%} -.mobile-footer .sub-menu ul li a{padding:0 5px;border:1px solid hsla(0,0%,100%,0)} -.mobile-footer .sub-menu ul li a.bottom-border{margin:-1px -1px 0;border-bottom:1px solid #e7e7eb} -.mobile-footer .sub-menu ul li:last-child a.bottom-border{border-bottom-color:#fff} -.mobile-footer .arrow{left:50%;position:absolute;margin-left:-6px} -.mobile-footer .arrow_in,.mobile-footer .arrow_out{width:0;height:0;z-index:10;display:inline-block;border:6px dashed transparent;border-bottom-width:0;border-top-style:solid} -.mobile-footer .arrow_in{z-index:3;bottom:-5px;border-top-color:#fafafa} -.mobile-footer .arrow_out{z-index:2;bottom:-6px;border-top-color:#d0d0d0} \ No newline at end of file +.mobile-preview { + width: 317px; + height: 580px; + position: relative; + background: url(../img/wechat/mobile_head.png) no-repeat 0 0; +} +.mobile-preview .mobile-header { + color: #fff; + width: auto; + margin: 0 30px; + overflow: hidden; + font-size: 15px; + padding-top: 30px; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; + user-select: none; + pointer-events: none; + -moz-user-select: none; + -webkit-user-select: none; + -webkit-pointer-events: none; +} +.mobile-preview .mobile-body { + top: 60px; + left: 0; + right: 0; + bottom: 0; + position: absolute; + border: 1px solid #ccc; + background: #f5f5f5; +} +.mobile-preview .mobile-body iframe { + width: 100%; + height: 100%; +} +.mobile-preview .mobile-footer { + left: 0; + right: 0; + bottom: 0; + margin: 0; + position: absolute; + padding-left: 43px; + border: 1px solid #ccc; + list-style-type: none; + background: url(../img/wechat/mobile_foot.png) no-repeat 0 0; +} +.mobile-preview .mobile-footer li { + float: left; + width: 33.33%; + position: relative; + text-align: center; + line-height: 50px; +} +.mobile-preview .mobile-footer li a { + width: auto; + display: block; + overflow: hidden; + border: 1px solid hsla(0, 0%, 100%, 0); + border-left: 1px solid #e7e7eb; + margin-top: -1px; + margin-bottom: -1px; + color: #616161; + white-space: nowrap; + text-decoration: none; + text-overflow: ellipsis; + word-wrap: normal; +} +.mobile-preview .mobile-footer li a:hover { + background: rgba(0, 0, 0, 0.02); +} +.mobile-preview .mobile-footer li a.active { + border: 1px solid #44b549 !important; + box-shadow: 0 0 1px #44b549; +} +.mobile-preview .mobile-footer li a span:before { + width: 1px; + height: 1px; + content: ''; + display: inline-block; +} +.mobile-preview .mobile-footer li > .close { + top: 1px; + right: 1px; + width: 18px; + height: 18px; + display: none; + cursor: pointer; + position: absolute; + text-align: center; + line-height: 18px; +} +.mobile-preview .mobile-footer li:hover > .close { + display: inline-block; +} +.mobile-preview .mobile-footer li:hover > .close:hover { + color: #fff !important; + background: #999 !important; +} +.mobile-preview .mobile-footer .icon-add { + width: 14px; + height: 14px; + border-bottom: none !important; + background: url(../img/wechat/index.png) 0 0 no-repeat; +} +.mobile-preview .mobile-footer .icon-add, +.mobile-preview .mobile-footer .icon-sub { + display: inline-block; + vertical-align: middle; +} +.mobile-preview .mobile-footer .icon-sub { + width: 7px; + height: 7px; + margin-right: 2px; + background: url(../img/wechat/index.png) 0 -3pc no-repeat; +} +.mobile-preview .mobile-footer .sub-menu { + width: 100%; + bottom: 60px; + margin: -1px; + display: block; + position: absolute; + border: 1px solid #d0d0d0; + background-color: #fafafa; +} +.mobile-preview .mobile-footer .sub-menu ul, +.mobile-preview .mobile-footer .sub-menu ul li { + float: none; + padding: 0; + z-index: 11; + display: block; + width: 100%; +} +.mobile-preview .mobile-footer .sub-menu ul li a { + padding: 0 5px; + border: 1px solid hsla(0, 0%, 100%, 0); +} +.mobile-preview .mobile-footer .sub-menu ul li a.bottom-border { + margin: -1px -1px 0; + border-bottom: 1px solid #e7e7eb; +} +.mobile-preview .mobile-footer .sub-menu ul li:last-child a.bottom-border { + border-bottom-color: #fff; +} +.mobile-preview .mobile-footer .arrow { + left: 50%; + position: absolute; + margin-left: -6px; +} +.mobile-preview .mobile-footer .arrow_in, +.mobile-preview .mobile-footer .arrow_out { + width: 0; + height: 0; + z-index: 10; + display: inline-block; + border: 6px dashed transparent; + border-bottom-width: 0; + border-top-style: solid; +} +.mobile-preview .mobile-footer .arrow_in { + z-index: 3; + bottom: -5px; + border-top-color: #fafafa; +} +.mobile-preview .mobile-footer .arrow_out { + z-index: 2; + bottom: -6px; + border-top-color: #d0d0d0; +} +/*# sourceMappingURL=console.css.map */ \ No newline at end of file diff --git a/public/static/theme/css/console.css.map b/public/static/theme/css/console.css.map new file mode 100644 index 000000000..edfea1383 --- /dev/null +++ b/public/static/theme/css/console.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["console.less","less.console/layout.less","less.console/form.less","less.console/layui.less","less.console/custom.less","less.console/mobile.less"],"names":[],"mappings":"AAAA,SAAS;AAcT;EACE,WAAA;EACA,yBAAA;;AAGF;EACE,WAAA;EACA,yBAAA;;AAGF;EACE,WAAA;;AAGF;EACE,UAAA;EACA,WAAA;;AAEA,mBAAC;EACC,gBAAA;;AAGF,mBAAC;EACC,sBAAA;;AAKF;AAAG,iBAAC;AAAQ,iBAAC;AAAQ,iBAAC;EACpB,gDAAA;EACA,yEAAA;EACA,0CAAA;EACA,6BAAA;;AAIJ;EACE,WAAA;EACA,eAAA;EACA,aAAa,wBAAwB,mBAAmB,kBAAkB,aAAa,eAAe,yBAAtG;;AAHF,IAKE;EACE,WAAA;EACA,eAAA;;AAEA,IAJF,EAIG;EACC,WAAA;;AAVN,IAcE,MAAK;EACH,aAAA;;;AChEJ,aACE;EACE,SAAA;EACA,SAAA;EACA,cAAA;;AAJJ,aAOE;EACE,SAAA;EACA,SAAA;EACA,cAAA;;AAVJ,aAOE,cAKE;EACE,gBAAA;;AAbN,aAOE,cAKE,cAGE;EACE,kBAAA;;AAhBR,aAOE,cAKE,cAOE;EACE,YAAA;EACA,YAAA;EACA,iBAAA;EACA,0CAAA;EACA,gBAAA;;;AAOR;EACE,YAAA;EACA,mBAAA;;AAFF,aAIE;EAEE,uCAAA;EACA,2CAAA;;AAPJ,aAUE;AAVF,aAWE;EACE,UAAA;;AAZJ,aAeE;EACE,WAAA;EACA,YAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;EACA,2CAAA;EACA,4CAAA;;AAtBJ,aAeE,YASE;EACE,cAAA;EACA,gBAAA;;AA1BN,aA8BE;EACE,iBAAA;;AAEA,aAHF,gBAGG;EACC,mBAAA;;AAlCN,aA8BE,gBAOE;EACE,WAAA;;AAtCN,aA8BE,gBAWE;EACE,SAAA;EACA,UAAA;EACA,YAAA;EACA,iBAAA;;AA7CN,aA8BE,gBAWE,iBAME;EACE,mBAAA;;AAGF,aArBJ,gBAWE,iBAUG,WAAY;EACX,gBAAA;;AAGF,aAzBJ,gBAWE,iBAcG,WAAY,IAAI;EACf,WAAA;;AAxDR,aA8BE,gBAWE,iBAkBE,GAAG;EACD,UAAA;EACA,WAAA;EACA,kBAAA;EACA,6BAAA;;AA/DR,aAoEE;AApEF,aAoEkB,gBAAe;EAC7B,aAAA;;AArEJ,aAwEE,oBACE,KAAK;EACH,0CAAA;EACA,wCAAA;;;AAMN,aAEE,cACE;EACE,aAAA;;AAJN,aAEE,cAKE;EACE,WAAA;;AARN,aAEE,cASE;EACE,2CAAA;;AAZN,aAEE,cASE,gBAGE;EACE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,WAAA;;AAEA,aAlBN,cASE,gBAGE,EAMG;EACC,iCAAA;;AArBV,aAEE,cAwBE;EACE,mBAAA;;AA3BN,aAEE,cA4BE,oBAAoB;EAClB,uBAAA;EACA,iBAAA;;AAIJ,aAAC,uBACC;EACE,UAAA;;AAFJ,aAAC,uBAKC,cACE;EACE,aAAA;;AAPN,aAAC,uBAKC,cAKE,gBACE;EACE,UAAA;;AAZR,aAAC,uBAKC,cAKE,gBAKE;EACE,aAAA;;AAhBR,aAAC,uBAKC,cAKE,gBASE;EACE,qBAAA;EACA,UAAA;;AArBR,aAAC,uBAKC,cAKE,gBAcE;EACE,UAAA;EACA,yBAAA;EACA,oCAAA;;AAIJ,aA/BH,uBAKC;AALF,aAAC,uBAKC,cA0BK;AA/BP,aAAC,uBAKC,cA0BsB;EAClB,WAAA;EACA,kBAAA;;AAjCN,aAAC,uBAqCC,wBAAwB;EACtB,qBAAA;EACA,mBAAmB,cAAnB;EACA,WAAW,cAAX;EACA,eAAe,cAAf;;AAIJ,aAAC,uBACC;EACE,OAAA;;AAFJ,aAAC,uBAKC;EACE,aAAA;;AANJ,aAAC,uBASC;EACE,aAAA;;;AC3MN;EACE,SAAA;EACA,yBAAA;EACA,2BAAA;;AAHF,QAKE;EACE,WAAA;EACA,eAAA;EACA,eAAA;;AAIJ,YACE;EACE,YAAA;EACA,iBAAA;EACA,eAAA;EACA,eAAA;;AALJ,YAQE;EACE,sBAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;;AAZJ,YAeE;EACE,YAAA;;AAhBJ,YAeE,oBAGE;AAlBJ,YAeE,oBAGS;EACL,WAAA;EACA,YAAA;EACA,gBAAA;EACA,gBAAA;;AAtBN,YA0BE,mBAAmB;EACjB,SAAA;EACA,UAAA;;AAIJ,WACE;AADF,WACgB;EACZ,gBAAA;;;AAMF,eAAC,KAAK;EACJ,UAAA;EACA,UAAA;EACA,SAAS,GAAT;EACA,qBAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,mBAAA;;AAGF,eAAC;AAAQ,eAAC,KAAK;EACb,QAAA;EACA,UAAA;EACA,UAAA;EACA,SAAS,GAAT;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;;AAGF,eAAC,KAAK;EACJ,aAAA;;;AAKJ;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;;AAGF;EACE,iBAAA;EACA,yBAAA;EACA,4BAAA;;AAGF,sBAAuB;EACrB,kBAAA;EACA,0BAAA;EACA,6BAAA;;AAGF;EACE,gBAAA;EACA,6BAAA;EACA,0CAAA;;;AAIF,KAAK;AAAiB,KAAK;EACzB,kBAAA;EACA,qBAAA;;AAGF;AAAiB;EACf,eAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;;AAGF,eAAgB,MAAK;EACnB,WAAA;EACA,YAAA;EACA,yBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,qBAAA;EACA,gBAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;EACA,wBAAA;;AAEA,eAfc,MAAK,eAelB,QAAQ;EACP,WAAA;EACA,YAAA;EACA,cAAA;EACA,SAAS,OAAT;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,uBAAA;EACA,mCAAA;EACA,kCAAA;;AAIJ,YAAa,MAAK;EAChB,WAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,sBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,sBAAA;EACA,wBAAA;;AAEA,YAfW,MAAK,YAef,QAAQ;EACP,QAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,SAAS,EAAT;EACA,cAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;;AC9KJ,WAAW;EACT,gBAAA;;AAGF,oBAAqB,YAAW,WAAY;EAC1C,sBAAA;;AAGF,mBAAoB,qBAAqB;EACvC,mBAAA;EACA,iBAAA;;AAGF,oBAAqB;EACnB,iBAAA;;;AAIF;AAAc;EACZ,iBAAA;;AAIA,kBAAC;EACC,iBAAA;;AAGF,kBAAC;EACC,iBAAA;;;AAKJ,UACE,gBACE;EACE,MAAA;EACA,YAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,eAAA;EACA,kBAAA;EACA,uBAAA;EACA,kCAAA;EACA,mCAAA;;AAEA,UAdJ,gBACE,gBAaG;EACC,SAAS,OAAT;;AAIJ,UAnBF,gBAmBI;AAAkB,UAnBtB,gBAmBuB,EAAG;EACtB,YAAA;EACA,aAAA;EACA,WAAW,cAAX;EACA,cAAc,cAAd;EACA,eAAe,cAAf;EACA,gBAAgB,cAAhB;EACA,mBAAmB,cAAnB;;AAKN,YAEE;AAFF,YAEM;EACF,eAAA;;AAHJ,YAME;EACE,WAAA;EACA,eAAA;;AARJ,YAWE;EACE,sBAAA;EACA,6BAAA;EACA,4BAAA;EACA,6BAAA;;AAfJ,YAWE,oBAME;EACE,WAAA;EACA,mBAAA;;AAnBN,YAWE,oBAWE;EACE,WAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;;AA7BN,YAiCE;EACE,sBAAA;EACA,kBAAA;EACA,6BAAA;EACA,8BAAA;;AArCJ,YAiCE,qBAME;EACE,oBAAA;EACA,sBAAA;;AAzCN,YA6CE,GACE;EACE,WAAA;EACA,wBAAA;;AAEA,YALJ,GACE,cAIG;EACC,aAAA;EACA,UAAA;;AApDR,YA6CE,GAWE;EACE,WAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,iBAAA;EACA,mCAAA;EACA,sBAAA;EACA,sBAAA;;ACjIN;EACE,eAAA;;AAGF;EACE,aAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,yBAAA;EACA,yBAAA;EACA,0BAAA;;AAGF;EACE,iBAAA;EACA,qBAAA;EACA,sBAAA;EACA,yBAAA;;AAGF;EACE,2BAAA;EACA,8BAAA;EACA,gCAAA;EACA,mCAAA;;AAGF;EACE,kBAAA;;AAGF;EACE,kBAAA;;AAGF;EACE,cAAA;;AAGF;EACE,eAAA;;AAGF;EACE,mBAAA;;AAGF;EACE,WAAA;EACA,eAAA;;AAGF;EACE,qBAAA;;AAKA,MAAC;EACC,WAAA;;AAGF,MAAC;EACC,YAAA;;AAKF,MAAC;EACC,WAAA;;AAGF,MAAC;EACC,YAAA;;AAKF,OAAC;EACC,cAAA;;AAGF,OAAC;EACC,cAAA;;AAGF,OAAC;EACC,WAAA;;AAGF,OAAC;EACC,WAAA;;AAGF,OAAC;EACC,WAAA;;AAKF,MAAC;EACC,mBAAA;;AAGF,MAAC;EACC,gBAAA;;AAGF,MAAC;EACC,iBAAA;;AAGF,MAAC;EACC,kBAAA;;AAGF,MAAC;EACC,sBAAA;;AAGF,MAAC;EACC,sBAAA;;AAKF,UAAC;EACC,iBAAA;;AAGF,UAAC;EACC,YAAY,0CAAZ;;AAGF,UAAC;EACC,YAAY,0CAAZ;;AAGF,UAAC;EACC,YAAY,0CAAZ;;AAGF,UAAC;EACC,YAAY,0CAAZ;;;AAMF,SAAC;EACC,WAAA;EACA,WAAA;EACA,cAAA;EACA,sBAAA;EACA,8BAAA;;AAGF,SAAC;EACC,gBAAA;EACA,mBAAA;EACA,gCAAA;EACA,kCAAA;;;AAKJ;EACE,SAAA;;AAIA,cAAC;EACC,gBAAA;;AAGF,cAAC;EACC,oCAAA;EACA,4BAAA;;AAGF,cAAC;EACC,qCAAA;EACA,6BAAA;;AAKF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAGF,MAAC;EACC,eAAA;;AAKF,QAAC;EACC,UAAA;;AAGF,QAAC;EACC,YAAA;;AAGF,QAAC;EACC,aAAA;;AAGF,QAAC;EACC,aAAA;;AAGF,QAAC;EACC,aAAA;;AAGF,QAAC;EACC,aAAA;;AAGF,QAAC;EACC,aAAA;;AAGF,QAAC;EACC,aAAA;;AAIA,QADD,IACE;EACC,cAAA;;AAGF,QALD,IAKE;EACC,gBAAA;;AAGF,QATD,IASE;EACC,iBAAA;;AAGF,QAbD,IAaE;EACC,iBAAA;;AAGF,QAjBD,IAiBE;EACC,iBAAA;;AAGF,QArBD,IAqBE;EACC,iBAAA;;AAGF,QAzBD,IAyBE;EACC,iBAAA;;AAKF,QADD,KACE;EACC,eAAA;;AAGF,QALD,KAKE;EACC,iBAAA;;AAGF,QATD,KASE;EACC,kBAAA;;AAGF,QAbD,KAaE;EACC,kBAAA;;AAGF,QAjBD,KAiBE;EACC,kBAAA;;AAGF,QArBD,KAqBE;EACC,kBAAA;;AAGF,QAzBD,KAyBE;EACC,kBAAA;;AAKF,QADD,MACE;EACC,gBAAA;;AAGF,QALD,MAKE;EACC,kBAAA;;AAGF,QATD,MASE;EACC,mBAAA;;AAGF,QAbD,MAaE;EACC,mBAAA;;AAGF,QAjBD,MAiBE;EACC,mBAAA;;AAGF,QArBD,MAqBE;EACC,mBAAA;;AAGF,QAzBD,MAyBE;EACC,mBAAA;;AAKF,QADD,OACE;EACC,iBAAA;;AAGF,QALD,OAKE;EACC,mBAAA;;AAGF,QATD,OASE;EACC,oBAAA;;AAGF,QAbD,OAaE;EACC,oBAAA;;AAGF,QAjBD,OAiBE;EACC,oBAAA;;AAGF,QArBD,OAqBE;EACC,oBAAA;;AAGF,QAzBD,OAyBE;EACC,oBAAA;;AAOJ,OAAC;EACC,SAAA;;AAGF,OAAC;EACC,WAAA;;AAGF,OAAC;EACC,YAAA;;AAGF,OAAC;EACC,YAAA;;AAGF,OAAC;EACC,YAAA;;AAGF,OAAC;EACC,YAAA;;AAGF,OAAC;EACC,YAAA;;AAGF,OAAC;EACC,YAAA;;AAIA,OADD,IACE;EACC,aAAA;;AAGF,OALD,IAKE;EACC,eAAA;;AAGF,OATD,IASE;EACC,gBAAA;;AAGF,OAbD,IAaE;EACC,gBAAA;;AAGF,OAjBD,IAiBE;EACC,gBAAA;;AAGF,OArBD,IAqBE;EACC,gBAAA;;AAGF,OAzBD,IAyBE;EACC,gBAAA;;AAGF,OA7BD,IA6BE;EACC,2BAAA;;AAKF,OADD,KACE;EACC,cAAA;;AAGF,OALD,KAKE;EACC,gBAAA;;AAGF,OATD,KASE;EACC,iBAAA;;AAGF,OAbD,KAaE;EACC,iBAAA;;AAGF,OAjBD,KAiBE;EACC,iBAAA;;AAGF,OArBD,KAqBE;EACC,iBAAA;;AAGF,OAzBD,KAyBE;EACC,iBAAA;;AAGF,OA7BD,KA6BE;EACC,iBAAA;;AAKF,OADD,MACE;EACC,eAAA;;AAGF,OALD,MAKE;EACC,iBAAA;;AAGF,OATD,MASE;EACC,kBAAA;;AAGF,OAbD,MAaE;EACC,kBAAA;;AAGF,OAjBD,MAiBE;EACC,kBAAA;;AAGF,OArBD,MAqBE;EACC,kBAAA;;AAGF,OAzBD,MAyBE;EACC,kBAAA;;AAGF,OA7BD,MA6BE;EACC,kBAAA;;AAKF,OADD,OACE;EACC,gBAAA;;AAGF,OALD,OAKE;EACC,kBAAA;;AAGF,OATD,OASE;EACC,mBAAA;;AAGF,OAbD,OAaE;EACC,mBAAA;;AAGF,OAjBD,OAiBE;EACC,mBAAA;;AAGF,OArBD,OAqBE;EACC,mBAAA;;AAGF,OAzBD,OAyBE;EACC,mBAAA;;AAGF,OA7BD,OA6BE;EACC,mBAAA;;;AAON;EACE,WAAA;EACA,WAAA;EACA,aAAA;EACA,eAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;EACA,yBAAA;;;AAIF;EACE,aAAA;;AAGF;EACE,MAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;;;AAIF;EACE,aAAA;;AAGF;EACE,UAAA;EACA,WAAA;EACA,eAAA;EACA,qBAAA;EACA,sBAAA;EACA,gBAAgB,2CAAhB;;AAGF;EACE,iBAAA;;AADF,eAGE;EACE,WAAA;EACA,WAAA;EACA,YAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,iBAAA;EACA,8BAAA;;AAGF,eAAC,MAAO;EACN,eAAA;EACA,qBAAA;;AAEA,eAJD,MAAO,EAIL;EACC,WAAA;EACA,qBAAA;;;AAMN;EACE,iBAAA;;AADF,qBAGE;EACE,WAAA;EACA,cAAA;;AALJ,qBAQE;EACE,YAAA;EACA,qBAAA;EACA,SAAA;EACA,UAAA;;AAZJ,qBAQE,KAME;EACE,UAAA;EACA,qBAAA;;AAEA,qBAVJ,KAME,KAIG;EACC,UAAA;;AADF,qBAVJ,KAME,KAIG,OAGC;EACE,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;;AAzBV,qBAQE,KAME,KAeE;AA7BN,qBAQE,KAME,KAeO;EACH,WAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;EACA,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;;AArCR,qBAQE,KAME,KA0BE;EACE,mBAAA;EACA,eAAA;;AA1CR,qBAQE,KAME,KA+BE,IAAG;EACD,mBAAA;EACA,qBAAA;;;AClqBR;EACE,YAAA;EACA,aAAA;EACA,kBAAA;EACA,4DAAA;;AAJF,eAME;EACE,WAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;EACA,iBAAA;EACA,oBAAA;EACA,sBAAA;EACA,yBAAA;EACA,4BAAA;;AArBJ,eAwBE;EACE,SAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,kBAAA;EACA,sBAAA;EACA,mBAAA;;AA/BJ,eAwBE,aASE;EACE,WAAA;EACA,YAAA;;AAnCN,eAuCE;EACE,OAAA;EACA,QAAA;EACA,SAAA;EACA,SAAA;EACA,kBAAA;EACA,kBAAA;EACA,sBAAA;EACA,qBAAA;EACA,4DAAA;;AAhDJ,eAuCE,eAWE;EACE,WAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;;AAvDN,eAuCE,eAWE,GAOE;EACE,WAAA;EACA,cAAA;EACA,gBAAA;EACA,sCAAA;EACA,8BAAA;EACA,gBAAA;EACA,mBAAA;EACA,cAAA;EACA,mBAAA;EACA,qBAAA;EACA,uBAAA;EACA,iBAAA;;AAEA,eAhCN,eAWE,GAOE,EAcG;EACC,+BAAA;;AAGF,eApCN,eAWE,GAOE,EAkBG;EACC,yBAAA;EACA,2BAAA;;AA7EV,eAuCE,eAWE,GAOE,EAuBE,KAAI;EACF,UAAA;EACA,WAAA;EACA,SAAS,EAAT;EACA,qBAAA;;AApFV,eAuCE,eAWE,GAsCE;EACE,QAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,eAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;;AAGF,eA7DJ,eAWE,GAkDG,MAAO;EACN,qBAAA;;AAEA,eAhEN,eAWE,GAkDG,MAAO,SAGL;EACC,WAAA;EACA,gBAAA;;AAzGV,eAuCE,eAuEE;EACE,WAAA;EACA,YAAA;EACA,8BAAA;EACA,sDAAA;;AAlHN,eAuCE,eA8EE;AArHJ,eAuCE,eA8Ea;EACT,qBAAA;EACA,sBAAA;;AAvHN,eAuCE,eAmFE;EACE,UAAA;EACA,WAAA;EACA,iBAAA;EACA,yDAAA;;AA9HN,eAuCE,eA0FE;EACE,WAAA;EACA,YAAA;EACA,YAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EACA,yBAAA;;AAxIN,eAuCE,eA0FE,UASE;AA1IN,eAuCE,eA0FE,UASM,GAAG;EACL,WAAA;EACA,UAAA;EACA,WAAA;EACA,cAAA;EACA,WAAA;;AA/IR,eAuCE,eA0FE,UAiBE,GAAG,GACD;EACE,cAAA;EACA,sCAAA;;AAEA,eAhHR,eA0FE,UAiBE,GAAG,GACD,EAIG;EACC,mBAAA;EACA,gCAAA;;AAIJ,eAtHN,eA0FE,UAiBE,GAAG,GAWA,WAAY,EAAC;EACZ,yBAAA;;AA9JV,eAuCE,eA4HE;EACE,SAAA;EACA,kBAAA;EACA,iBAAA;;AAtKN,eAuCE,eAkIE;AAzKJ,eAuCE,eAkIa;EACT,QAAA;EACA,SAAA;EACA,WAAA;EACA,qBAAA;EACA,8BAAA;EACA,sBAAA;EACA,uBAAA;;AAhLN,eAuCE,eA4IE;EACE,UAAA;EACA,YAAA;EACA,yBAAA;;AAtLN,eAuCE,eAkJE;EACE,UAAA;EACA,YAAA;EACA,yBAAA","file":"console.css"} \ No newline at end of file diff --git a/public/static/theme/css/console.less b/public/static/theme/css/console.less new file mode 100644 index 000000000..c955fb7af --- /dev/null +++ b/public/static/theme/css/console.less @@ -0,0 +1,75 @@ +@charset "UTF-8"; + +// +---------------------------------------------------------------------- +// | ThinkAdmin +// +---------------------------------------------------------------------- +// | 版权所有 2014~2018 广州楚才信息科技有限公司 [ http://www.cuci.cc ] +// +---------------------------------------------------------------------- +// | 官方网站: http://demo.thinkadmin.top +// +---------------------------------------------------------------------- +// | 开源协议 ( https://mit-license.org ) +// +---------------------------------------------------------------------- +// | gitee 开源项目:https://gitee.com/zoujingli/ThinkAdmin +// | github开源项目:https://github.com/zoujingli/ThinkAdmin +// +---------------------------------------------------------------------- + +::selection { + color: #fff !important; + background-color: #ec494e !important +} + +::-moz-selection { + color: #fff !important; + background-color: #ec494e !important +} + +::-webkit-input-placeholder { + color: #aaa +} + +::-webkit-scrollbar { + width: 3px; + height: 3px; + + &-track { + background: #ccc !important + } + + &-thumb { + background-color: #666 !important + } +} + +:-webkit-autofill { + &, &:hover, &:focus, &:active { + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, .1) inset !important; + -webkit-transition: color 9999s ease-out, background-color 9999s ease-out !important; + -webkit-transition-delay: 9999s !important; + -webkit-text-fill-color: #333 !important + } +} + +body { + color: #333; + font-size: 12px; + font-family: '\5FAE\8F6F\96C5\9ED1', 'Microsoft YaHei', 'Helvetica Neue', 'Luxi Sans', 'DejaVu Sans', 'Hiragino Sans GB', serif; + + a { + color: #06C; + cursor: pointer; + + &:hover { + color: #039; + } + } + + input::-ms-clear { + display: none + } +} + +@import "less.console/layout"; +@import "less.console/form"; +@import "less.console/layui"; +@import "less.console/custom"; +@import "less.console/mobile"; diff --git a/public/static/theme/css/less.console/custom.less b/public/static/theme/css/less.console/custom.less new file mode 100644 index 000000000..2fa30796e --- /dev/null +++ b/public/static/theme/css/less.console/custom.less @@ -0,0 +1,680 @@ +[data-tips-image] { + cursor: zoom-in !important +} + +.notdata { + padding: 15px; + display: block; + font-size: 13px; + text-align: center; + line-height: 22px; + letter-spacing: 8px; + border: 1px solid #e6e6e6; + background-color: #f2f2f2; + border-radius: 0 2px 2px 0; +} + +.notselect { + user-select: none; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none +} + +.transition { + transition: all .2s linear; + -o-transition: all .2s linear; + -moz-transition: all .2s linear; + -webkit-transition: all .2s linear; +} + +.absolute { + position: absolute !important +} + +.relative { + position: relative !important +} + +.block { + display: block !important +} + +.pointer { + cursor: pointer !important +} + +.nowrap { + white-space: nowrap !important +} + +.help-block { + color: #999; + font-size: 12px +} + +.inline-block { + display: inline-block !important +} + + +.pull- { + &left { + float: left !important + } + + &right { + float: right !important + } +} + +.full- { + &width { + width: 100% !important + } + + &height { + height: 100% !important + } +} + +.color- { + &red { + color: #ec494e !important + } + + &blue { + color: #2494f2 !important + } + + &desc { + color: #999 !important + } + + &text { + color: #333 !important + } + + &green { + color: #090 !important + } +} + +.text- { + &top { + vertical-align: top !important + } + + &left { + text-align: left !important + } + + &right { + text-align: right !important + } + + ¢er { + text-align: center !important + } + + &middle { + vertical-align: middle !important + } + + &bottom { + vertical-align: bottom !important + } +} + +.think-bg- { + &white { + background: white !important + } + + &blue { + background: linear-gradient(-125deg, #57bdbf, #2f9de2) !important + } + + &orig { + background: linear-gradient(-141deg, #ecca1b, #f39526) !important + } + + &red { + background: linear-gradient(-125deg, #ff7d7d, #fb2c95) !important + } + + &violet { + background: linear-gradient(-113deg, #c543d8, #925cc3) !important + } +} + +/* 分隔线条 */ +.hr-line- { + &dashed { + color: #fff; + height: 1px; + margin: 20px 0; + background-color: #fff; + border-top: 1px dashed #e7eaec + } + + &solid { + margin-top: 15px; + margin-bottom: 15px; + border-bottom: 1px solid #e7eaec; + background-color: rgba(0, 0, 0, 0) + } +} + +/* 文字大小 */ +.border-0 { + border: 0 !important +} + +.border-radius { + &-0 { + border-radius: 0 !important + } + + &-left-0 { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important + } + + &-right-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important + } +} + +.font- { + &s10 { + font-size: 10px !important + } + + &s11 { + font-size: 11px !important + } + + &s12 { + font-size: 12px !important + } + + &s13 { + font-size: 13px !important + } + + &s14 { + font-size: 14px !important + } + + &s15 { + font-size: 15px !important + } + + &s16 { + font-size: 16px !important + } + + &s18 { + font-size: 18px !important + } + + &s20 { + font-size: 20px !important + } + + &s30 { + font-size: 30px !important + } + + &s40 { + font-size: 40px !important + } +} + +.padding { + &-0 { + padding: 0 !important + } + + &-5 { + padding: 5px !important + } + + &-10 { + padding: 10px !important + } + + &-15 { + padding: 15px !important + } + + &-20 { + padding: 20px !important + } + + &-25 { + padding: 25px !important + } + + &-30 { + padding: 30px !important + } + + &-40 { + padding: 40px !important + } + + &-top { + &-0 { + padding-top: 0 !important + } + + &-5 { + padding-top: 5px !important + } + + &-10 { + padding-top: 10px !important + } + + &-15 { + padding-top: 15px !important + } + + &-20 { + padding-top: 20px !important + } + + &-30 { + padding-top: 30px !important + } + + &-40 { + padding-top: 40px !important + } + } + + &-left { + &-0 { + padding-left: 0 !important + } + + &-5 { + padding-left: 5px !important + } + + &-10 { + padding-left: 10px !important + } + + &-15 { + padding-left: 15px !important + } + + &-20 { + padding-left: 20px !important + } + + &-30 { + padding-left: 30px !important + } + + &-40 { + padding-left: 40px !important + } + } + + &-right { + &-0 { + padding-right: 0 !important + } + + &-5 { + padding-right: 5px !important + } + + &-10 { + padding-right: 10px !important + } + + &-15 { + padding-right: 15px !important + } + + &-20 { + padding-right: 20px !important + } + + &-30 { + padding-right: 30px !important + } + + &-40 { + padding-right: 40px !important + } + } + + &-bottom { + &-0 { + padding-bottom: 0 !important + } + + &-5 { + padding-bottom: 5px !important + } + + &-10 { + padding-bottom: 10px !important + } + + &-15 { + padding-bottom: 15px !important + } + + &-20 { + padding-bottom: 20px !important + } + + &-30 { + padding-bottom: 30px !important + } + + &-40 { + padding-bottom: 40px !important + } + } +} + + +.margin { + &-0 { + margin: 0 !important + } + + &-5 { + margin: 5px !important + } + + &-10 { + margin: 10px !important + } + + &-15 { + margin: 15px !important + } + + &-20 { + margin: 20px !important + } + + &-25 { + margin: 25px !important + } + + &-30 { + margin: 30px !important + } + + &-40 { + margin: 40px !important + } + + &-top { + &-0 { + margin-top: 0 !important + } + + &-5 { + margin-top: 5px !important + } + + &-10 { + margin-top: 10px !important + } + + &-15 { + margin-top: 15px !important + } + + &-20 { + margin-top: 20px !important + } + + &-25 { + margin-top: 25px !important + } + + &-30 { + margin-top: 30px !important + } + + &-40 { + margin-top: 40px !important; + } + } + + &-left { + &-0 { + margin-left: 0 !important + } + + &-5 { + margin-left: 5px !important + } + + &-10 { + margin-left: 10px !important + } + + &-15 { + margin-left: 15px !important + } + + &-20 { + margin-left: 20px !important + } + + &-25 { + margin-left: 25px !important + } + + &-30 { + margin-left: 30px !important + } + + &-40 { + margin-left: 40px !important + } + } + + &-right { + &-0 { + margin-right: 0 !important + } + + &-5 { + margin-right: 5px !important + } + + &-10 { + margin-right: 10px !important + } + + &-15 { + margin-right: 15px !important + } + + &-20 { + margin-right: 20px !important + } + + &-25 { + margin-right: 25px !important + } + + &-30 { + margin-right: 30px !important + } + + &-40 { + margin-right: 40px !important + } + } + + &-bottom { + &-0 { + margin-bottom: 0 !important + } + + &-5 { + margin-bottom: 5px !important + } + + &-10 { + margin-bottom: 10px !important + } + + &-15 { + margin-bottom: 15px !important + } + + &-20 { + margin-bottom: 20px !important + } + + &-25 { + margin-bottom: 25px !important + } + + &-30 { + margin-bottom: 30px !important + } + + &-40 { + margin-bottom: 40px !important + } + } + +} + +/* 浏览器DEBUG */ +.version-debug { + width: 100%; + color: #fff; + height: 100px; + font-size: 20px; + text-align: center; + line-height: 100px; + margin-bottom: 40px; + background-color: #E90D24 +} + +/** 加载进度 */ +.pace-inactive { + display: none +} + +.pace-progress { + top: 0; + right: 100%; + width: 100%; + height: 2px; + z-index: 2000; + position: fixed; + background: #22df80 +} + +/* 图片上传 */ +.moxie-shim { + display: none !important +} + +.uploadimage { + width: 5pc; + height: 5pc; + cursor: pointer; + display: inline-block; + background-size: cover; + background: url('../img/image.png') no-repeat center center; +} + +.uploadimagemtl { + margin-right: 8px; + + a { + color: #fff; + width: 20px; + height: 20px; + float: right; + display: none; + text-align: center; + line-height: 22px; + background: rgba(0, 0, 0, .5) + } + + &:hover a { + cursor: pointer; + display: inline-block; + + &:hover { + color: #fff; + text-decoration: none + } + } +} + +/* 通用分页 */ +.pagination-container { + line-height: 40px; + + > span { + color: #666; + font-size: 9pt + } + + > ul { + float: right; + display: inline-block; + margin: 0; + padding: 0; + + > li { + z-index: 1; + display: inline-block; + + &.active { + z-index: 2; + + > span { + color: #fff; + border-color: #098; + padding-right: 1px; + background: #009688 !important + } + } + + > a, > span { + color: #333; + width: 33px; + height: 30px; + border: 1px solid #dcdcdc; + display: inline-block; + margin-left: -1px; + text-align: center; + line-height: 28px + } + + > span { + background: #dcdcdc; + cursor: default + } + + > a:hover { + background: #dcdcdc; + border-color: #dcdcdc + } + } + } +} \ No newline at end of file diff --git a/public/static/theme/css/less.console/form.less b/public/static/theme/css/less.console/form.less new file mode 100644 index 000000000..72fc9233a --- /dev/null +++ b/public/static/theme/css/less.console/form.less @@ -0,0 +1,177 @@ +/* 弹框层表单 */ +fieldset { + margin: 0; + border: 1px solid #e6e6e6; + padding: 10px 20px 5px 20px; + + legend { + color: #666; + padding: 0 10px; + font-size: 14px + } +} + +.form-search { + .layui-btn { + height: 32px; + line-height: 28px; + font-size: 12px; + padding: 0 10px + } + + .layui-form-label { + width: auto !important; + padding: 0 8px; + height: 32px; + line-height: 30px + } + + .layui-input-inline { + width: 170px; + + input, select { + width: 100%; + height: 32px; + padding: 2px 8px; + line-height: 1em + } + } + + .layui-form-select dl { + top: 31px; + padding: 0 + } +} + +.layui-form { + .layui-input, .layui-select { + line-height: 1em; + } +} + +/* 表单验证异常提示 */ +.label-required { + &-prev:before { + width: 1em; + color: red; + content: '*'; + display: inline-block; + position: absolute; + text-align: left; + font-weight: 700; + line-height: 1.6em; + margin-left: -0.8em; + } + + &:after, &-next:after { + top: 6px; + right: 5px; + color: red; + content: '*'; + position: absolute; + margin-left: 4px; + font-weight: 700; + line-height: 1.8em + } + + &-null:before { + content: none !important + } +} + +/** 自定义表单样式 */ +.think-form-label { + padding: 9px 15px; + font-weight: 400; + line-height: 20px; + text-align: right +} + +.think-form-group-right { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.think-form-group-left input { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.think-box-shadow { + background: #fff; + padding: 20px 20px !important; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, .1); +} + +/** checkbox & radio */ +label.think-checkbox, label.think-radio { + margin-right: 10px; + display: inline-block; +} + +.think-checkbox, .think-radio { + cursor: pointer; + margin-top: 10px; + font-weight: 400; + line-height: 17px; +} + +.think-checkbox input[type=checkbox] { + width: 18px; + height: 18px; + border: 1px solid #dcdcdc; + cursor: pointer; + margin: 0 5px 0 0; + position: relative; + display: inline-block !important; + background: #fff; + appearance: none; + box-sizing: border-box !important; + border-radius: 1px; + vertical-align: bottom; + -webkit-appearance: none; + + &:checked:after { + color: #666; + padding: 2px; + display: block; + content: "\e605"; + font-size: 12px; + font-style: normal; + font-weight: 700; + position: absolute; + font-family: layui-icon !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale + } +} + +.think-radio input[type=radio] { + width: 18px; + height: 18px; + cursor: pointer; + margin: 0 5px 0 0; + position: relative; + border: 1px solid #dcdcdc; + display: inline-block !important; + box-sizing: border-box !important; + appearance: none; + background: #fff; + border-radius: 1em; + vertical-align: bottom; + -webkit-appearance: none; + + &:checked:after { + top: 4px; + left: 4px; + width: 8px; + height: 8px; + content: ''; + display: block; + position: relative; + background: #666; + border-radius: 1em + } +} diff --git a/public/static/theme/css/less.console/layout.less b/public/static/theme/css/less.console/layout.less new file mode 100644 index 000000000..c770f24c3 --- /dev/null +++ b/public/static/theme/css/less.console/layout.less @@ -0,0 +1,208 @@ +/* 页面布局 - 全局 */ +.layui-layout { + > .layui-side { + top: 50px; + bottom: 0; + overflow: auto + } + + > .layui-body { + top: 50px; + bottom: 0; + overflow: auto; + + > .layui-card { + box-shadow: none; + + > .layui-card-body { + padding: 15px 15px + } + + > .layui-card-header { + height: 50px; + border: none; + line-height: 50px; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, .1); + background: #fff + } + } + } +} + +/* 页面布局 - 头部 */ +.layui-header { + height: 50px; + background: #393D49 !important; + + [data-target-menu-type] { + // box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .15); + border-left: 1px solid rgba(0, 0, 0, 0); + border-right: 1px solid rgba(0, 0, 0, .15); + } + + .layui-layout-left, + .layui-layout-right { + padding: 0 + } + + .layui-logo { + color: #fff; + width: 199px; + height: auto; + font-size: 18px; + line-height: 49px; + border-right: 1px solid rgba(0, 0, 0, .15); + border-bottom: 1px solid rgba(0, 0, 0, .15); + + sup { + font-size: 9px; + line-height: 9px + } + } + + .layui-nav-item { + line-height: 50px; + + &.layui-this { + background: #009688 + } + + > a { + color: #fff !important + } + + .layui-nav-child { + top: 49px; + padding: 0; + border: none; + line-height: 45px; + + + a { + padding-right: 35px + } + + &.layui-show + a { + background: #fff + } + + &.layui-show + a span { + color: #333 + } + + dd a { + padding: 0; + color: #333; + text-align: center; + border-top: 1px solid #eaedf1 + } + } + } + + .layui-nav-bar, .layui-nav-item:after { + display: none !important + } + + .layui-layout-right { + > li > a { + border-left: 1px solid rgba(0, 0, 0, .15); + border-right: 1px solid rgba(0, 0, 0, 0); + } + } +} + +/* 页面布局 - 左则 */ +.layui-layout { + + > .layui-side { + .layui-nav-bar { + display: none !important + } + + .layui-side-scroll { + width: 100% !important + } + + .layui-nav-item { + border-bottom: 1px solid rgba(0, 0, 0, .2); + + a { + height: 45px; + display: block; + line-height: 45px; + color: #fff !important; + + &:hover { + background: hsla(0, 0%, 39%, .2) !important + } + } + } + + .layui-nav-itemed { + border-bottom: none !important + } + + .layui-nav-tree-top a { + height: 28px !important; + line-height: 28px !important + } + } + + &.layui-layout-left-mini { + > .layui-body { + left: 50px + } + + > .layui-side { + .layui-nav-more { + display: none !important + } + + .layui-nav-item { + a { + padding: 0 + } + + .nav-text { + display: none + } + + .nav-icon { + display: inline-block !important; + padding: 0 !important + } + + .layui-nav-child { + padding: 0; + display: block !important; + background-color: rgba(0, 0, 0, .3) !important + } + } + + &, .layui-nav-tree, .layui-side-scroll { + width: 50px; + text-align: center + } + } + + [data-target-menu-type] i { + display: inline-block; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + } + + &.layui-layout-left-hide { + > .layui-body { + left: 0 !important + } + + > .layui-side { + display: none + } + + [data-target-menu-type] { + display: none; + } + } +} diff --git a/public/static/theme/css/less.console/layui.less b/public/static/theme/css/less.console/layui.less new file mode 100644 index 000000000..4d87958c7 --- /dev/null +++ b/public/static/theme/css/less.console/layui.less @@ -0,0 +1,133 @@ +.layui-form.layui-card { + box-shadow: none +} + +.layui-layer-content .layui-form.layui-card .layui-card-body { + padding: 20px 40px 0 0 +} + +.layui-layer-dialog .layui-layer-content .layui-layer-ico { + top: 50% !important; + margin-top: -15px !important +} + +.laydate-footer-btns span { + line-height: 24px !important +} + +/** Layui样式调整 */ +.layui-input, .layui-select { + line-height: 38px +} + +.layui-btn-primary { + &.layui-btn-xs { + line-height: 20px + } + + &.layui-btn-sm { + line-height: 28px + } +} + +/* 下拉样式 */ +.layui-nav { + .layui-nav-item { + .layui-nav-more { + top: 0; + border: none; + right: 15px; + width: auto; + height: auto; + margin-top: 0; + font-size: 14px; + font-style: normal; + font-family: layui-icon !important; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + + &::before { + content: "\e619" + } + } + + & .layui-nav-mored, &ed .layui-nav-more { + border: none; + margin-top: 0; + transform: rotate(180deg); + -o-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -webkit-transform: rotate(180deg) + } + } +} + +.layui-table { + + td, th { + font-size: 12px + } + + .list-table-image { + width: 22px; + cursor: pointer + } + + .list-table-sort-td { + width: 10px !important; + text-align: center !important; + padding-left: 5px !important; + padding-right: 5px !important; + + button { + width: 56px; + background: #009688 + } + + input { + width: 50px; + color: #666; + padding: 2px; + border: 1px solid #e6e6e6; + text-align: center; + font-size: 9pt; + line-height: 18px + } + } + + .list-table-check-td { + width: 10px !important; + text-align: center; + padding-left: 15px !important; + padding-right: 15px !important; + + input { + margin: 0 !important; + vertical-align: middle + } + } + + td { + .text-explode { + color: #ccc !important; + margin: 0 4px !important; + + &:first-child { + display: none; + opacity: 0 + } + } + + .background-image { + float: left; + width: 40px; + height: 40px; + display: inline-block; + margin-right: 5px; + background: no-repeat center center; + background-size: cover; + vertical-align: middle + } + } +} \ No newline at end of file diff --git a/public/static/theme/css/less.console/mobile.less b/public/static/theme/css/less.console/mobile.less new file mode 100644 index 000000000..aa800e583 --- /dev/null +++ b/public/static/theme/css/less.console/mobile.less @@ -0,0 +1,195 @@ +/** 手机盒子及微信菜单 */ +.mobile-preview { + width: 317px; + height: 580px; + position: relative; + background: url(../img/wechat/mobile_head.png) no-repeat 0 0; + + .mobile-header { + color: #fff; + width: auto; + margin: 0 30px; + overflow: hidden; + font-size: 15px; + padding-top: 30px; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; + user-select: none; + pointer-events: none; + -moz-user-select: none; + -webkit-user-select: none; + -webkit-pointer-events: none + } + + .mobile-body { + top: 60px; + left: 0; + right: 0; + bottom: 0; + position: absolute; + border: 1px solid #ccc; + background: #f5f5f5; + + iframe { + width: 100%; + height: 100% + } + } + + .mobile-footer { + left: 0; + right: 0; + bottom: 0; + margin: 0; + position: absolute; + padding-left: 43px; + border: 1px solid #ccc; + list-style-type: none; + background: url(../img/wechat/mobile_foot.png) no-repeat 0 0; + + li { + float: left; + width: 33.33%; + position: relative; + text-align: center; + line-height: 50px; + + a { + width: auto; + display: block; + overflow: hidden; + border: 1px solid hsla(0, 0%, 100%, 0); + border-left: 1px solid #e7e7eb; + margin-top: -1px; + margin-bottom: -1px; + color: #616161; + white-space: nowrap; + text-decoration: none; + text-overflow: ellipsis; + word-wrap: normal; + + &:hover { + background: rgba(0, 0, 0, .02) + } + + &.active { + border: 1px solid #44b549 !important; + box-shadow: 0 0 1px #44b549 + } + + span:before { + width: 1px; + height: 1px; + content: ''; + display: inline-block + } + } + + > .close { + top: 1px; + right: 1px; + width: 18px; + height: 18px; + display: none; + cursor: pointer; + position: absolute; + text-align: center; + line-height: 18px + } + + &:hover > .close { + display: inline-block; + + &:hover { + color: #fff !important; + background: #999 !important + } + } + } + + .icon-add { + width: 14px; + height: 14px; + border-bottom: none !important; + background: url(../img/wechat/index.png) 0 0 no-repeat + } + + .icon-add, .icon-sub { + display: inline-block; + vertical-align: middle + } + + .icon-sub { + width: 7px; + height: 7px; + margin-right: 2px; + background: url(../img/wechat/index.png) 0 -3pc no-repeat + } + + .sub-menu { + width: 100%; + bottom: 60px; + margin: -1px; + display: block; + position: absolute; + border: 1px solid #d0d0d0; + background-color: #fafafa; + + ul, ul li { + float: none; + padding: 0; + z-index: 11; + display: block; + width: 100% + } + + ul li { + a { + padding: 0 5px; + border: 1px solid hsla(0, 0%, 100%, 0); + + &.bottom-border { + margin: -1px -1px 0; + border-bottom: 1px solid #e7e7eb + } + } + + &:last-child a.bottom-border { + border-bottom-color: #fff + } + } + } + + .arrow { + left: 50%; + position: absolute; + margin-left: -6px + } + + .arrow_in, .arrow_out { + width: 0; + height: 0; + z-index: 10; + display: inline-block; + border: 6px dashed transparent; + border-bottom-width: 0; + border-top-style: solid + } + + .arrow_in { + z-index: 3; + bottom: -5px; + border-top-color: #fafafa + } + + .arrow_out { + z-index: 2; + bottom: -6px; + border-top-color: #d0d0d0 + } + + } + +} \ No newline at end of file diff --git a/public/static/theme/css/less.console/page.less b/public/static/theme/css/less.console/page.less new file mode 100644 index 000000000..e088d7b99 --- /dev/null +++ b/public/static/theme/css/less.console/page.less @@ -0,0 +1,53 @@ +/* 通用分页 */ +.pagination-container { + line-height: 40px; + + > span { + color: #666; + font-size: 9pt + } + + > ul { + float: right; + display: inline-block; + margin: 0; + padding: 0; + + > li { + z-index: 1; + display: inline-block; + + &.active { + z-index: 2; + + > span { + color: #fff; + border-color: #098; + padding-right: 1px; + background: #009688 !important + } + } + + > a, > span { + color: #333; + width: 33px; + height: 30px; + border: 1px solid #dcdcdc; + display: inline-block; + margin-left: -1px; + text-align: center; + line-height: 28px + } + + > span { + background: #dcdcdc; + cursor: default + } + + > a:hover { + background: #dcdcdc; + border-color: #dcdcdc + } + } + } +} \ No newline at end of file diff --git a/public/static/theme/css/login.css b/public/static/theme/css/login.css index f35be365d..fc324e4ff 100644 --- a/public/static/theme/css/login.css +++ b/public/static/theme/css/login.css @@ -1,49 +1,199 @@ @charset "UTF-8"; - -/* +---------------------------------------------------------------------- -// | framework -// +---------------------------------------------------------------------- -// | 版权所有 2014~2018 广州楚才信息科技有限公司 [ http://www.cuci.cc ] -// +---------------------------------------------------------------------- -// | 官方网站:http://think.ctolog.com -// +---------------------------------------------------------------------- -// | 开源协议 ( https://mit-license.org ) -// +---------------------------------------------------------------------- -// | github开源项目:https://github.com/zoujingli/framework -// +--------------------------------------------------------------------*/ - -body,html{height:100%} -body{background:url(../img/login/bg1.jpg) no-repeat center center;background-size:cover} - -.login-container form input,.login-container form input:-webkit-autofill,.login-container form input:-webkit-autofill:active,.login-container form input:-webkit-autofill:focus,.login-container form input:-webkit-autofill:hover{-webkit-transition:color 9999s ease-out,background-color 9999s ease-out!important;-webkit-text-fill-color:#fff!important;-webkit-transition-delay:9999s!important} -.login-container .header{position:absolute;top:0;left:0;width:100%;height:47px;text-shadow:#000 .1em .1em .1em} -.login-container .header a,.login-container .header a:focus,.login-container .header a:hover{color:#fff;text-decoration:none;letter-spacing:1px} -.login-container .header .title{float:left;color:#fff;text-indent:40px;letter-spacing:1px;font-size:18px;line-height:47px} -.login-container .header ul{float:right;padding-right:30px} -.login-container .header ul li{float:left;margin-left:20px;line-height:47px} -.login-container form{position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-150px;width:300px} -.login-container form h2{color:#fff;text-align:center;text-shadow:#000 .05em .05em .05em;letter-spacing:3px;font-weight:700;font-size:25px;padding:20px 0} -.login-container form ul li{position:relative;margin-top:20px;text-shadow:#000 .1em .1em .1em} -.login-container form ul li i.layui-icon{position:absolute;padding:13px 15px 13px 20px;color:#fff;font-size:18px} -.login-container form ul li input{padding:0 15px;letter-spacing:1px;height:45px;border-radius:6px;background:rgba(0,0,0,.1);box-shadow:0 2px 3px 0 rgba(0,0,0,.3) inset;color:#fff;text-indent:35px;font-size:14px;line-height:42px;text-shadow:#000 .1em .1em .1em} -.login-container form ul li input:focus,.login-container form ul li input:hover{border:1px solid #fff!important} -.login-container form ul li input::placeholder{color:rgba(255,255,255,.2)!important;letter-spacing:1px} -.login-container form ul li span{color:#ff0!important;letter-spacing:1px} -.login-container form ul li button{height:45px!important;border-radius:4px!important;background:#fff!important;box-shadow:0 15px 30px 0 hsla(0,0%,100%,.25) inset,0 2px 7px 0 rgba(0,0,0,.2);color:#333!important;letter-spacing:1px!important} -.login-container .footer{position:absolute;bottom:0;left:0;width:100%;height:50px;color:#fff;text-align:center;text-shadow:#000 .1em .1em .1em;letter-spacing:1px;line-height:50px} -.login-container .footer a,.login-container .footer span{color:#fff} -.login-container .footer a:hover{color:#ccc} - -#supersized{position:fixed;top:0;left:0;z-index:-999;display:block;overflow:hidden;width:100%;height:100%} -#supersized img{position:relative;display:none;width:auto;height:auto;outline:0;border:0} -#supersized.speed img{image-rendering:-moz-crisp-edges;-ms-interpolation-mode:nearest-neighbor} -#supersized.quality img{-ms-interpolation-mode:bicubic;image-rendering:optimizeQuality} -#supersized-loader{position:absolute;top:50%;left:50%;z-index:0;margin:-30px 0 0 -30px;width:60px;height:60px;background:url(../../plugs/supersized/progress.gif) no-repeat center center;text-indent:-999em} -#supersized li{position:fixed;top:0;left:0;z-index:-30;overflow:hidden;list-style:none} -#supersized a,#supersized li{display:block;width:100%;height:100%;cursor:default} -#supersized li.prevslide{z-index:-20} -#supersized li.activeslide{z-index:-10} -#supersized li.activeslide img,#supersized li.prevslide img{display:inline} -#supersized li.image-loading{width:100%;height:100%;background:url(../../plugs/supersized/progress.gif) no-repeat center center} -#supersized li.image-loading img{visibility:hidden} -#supersized img{max-width:none!important} \ No newline at end of file +body, +html { + height: 100%; + display: block; +} +body { + background: url("../img/login/bg1.jpg") no-repeat center center; + background-size: cover; +} +.login-container { + height: 100%; +} +.login-container form input, +.login-container form input:-webkit-autofill, +.login-container form input:-webkit-autofill:active, +.login-container form input:-webkit-autofill:focus, +.login-container form input:-webkit-autofill:hover { + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.3) inset; + -webkit-text-fill-color: #fff !important; + -webkit-transition-delay: 9999s !important; + -webkit-transition: color 9999s ease-out, background-color 9999s ease-out !important; +} +.login-container .header { + top: 0; + left: 0; + width: 100%; + height: 47px; + position: absolute; + text-shadow: #000 0.1em 0.1em 0.1em; +} +.login-container .header .title { + color: #fff; + float: left; + font-size: 18px; + line-height: 47px; + text-indent: 40px; + letter-spacing: 1px; +} +.login-container .header a, +.login-container .header a:focus, +.login-container .header a:hover { + color: #fff; + letter-spacing: 1px; + text-decoration: none; +} +.login-container .header ul { + float: right; +} +.login-container .header ul li { + float: left; + line-height: 47px; + margin-left: 10px; +} +.login-container form { + top: 50%; + left: 50%; + width: 300px; + position: absolute; + margin-top: -250px; + margin-left: -150px; +} +.login-container form h2 { + color: #fff; + padding: 20px 0; + font-size: 25px; + text-align: center; + font-weight: 700; + letter-spacing: 3px; + text-shadow: #000 0.05em 0.05em 0.05em; +} +.login-container form ul li { + position: relative; + margin-top: 20px; + text-shadow: #000 0.1em 0.1em 0.1em; +} +.login-container form ul li i.layui-icon { + color: #fff; + font-size: 18px; + position: absolute; + padding: 12px 15px 13px 20px; +} +.login-container form ul li span { + letter-spacing: 1px; + color: #ff0 !important; +} +.login-container form ul li input { + color: #fff; + height: 45px; + padding: 0 15px; + font-size: 14px; + text-indent: 35px; + line-height: 1em; + border-radius: 6px; + letter-spacing: 1px; + background: rgba(0, 0, 0, 0.1); + text-shadow: #000 0.1em 0.1em 0.1em; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.3) inset; +} +.login-container form ul li button { + color: #333 !important; + height: 45px !important; + background: #fff !important; + border-radius: 4px !important; + letter-spacing: 1px !important; + box-shadow: 0 15px 30px 0 hsla(0, 0%, 100%, 0.25) inset, 0 2px 7px 0 rgba(0, 0, 0, 0.2); +} +.login-container .footer { + left: 0; + bottom: 0; + width: 100%; + color: #fff; + position: absolute; + text-align: center; + line-height: 30px; + padding-bottom: 10px; + text-shadow: #000 0.1em 0.1em 0.1em; +} +.login-container .footer a, +.login-container .footer span { + color: #fff; +} +.login-container .footer a:hover { + color: #ccc; +} +#supersized { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -999; + display: block; + position: fixed; + overflow: hidden; +} +#supersized img { + border: 0; + width: auto; + height: auto; + display: none; + outline: 0; + position: relative; + max-width: none !important; +} +#supersized.speed img { + image-rendering: -moz-crisp-edges; + -ms-interpolation-mode: nearest-neighbor; +} +#supersized.quality img { + image-rendering: optimizeQuality; + -ms-interpolation-mode: bicubic; +} +#supersized a, +#supersized li { + width: 100%; + height: 100%; + display: block; + cursor: default; +} +#supersized li { + top: 0; + left: 0; + z-index: -30; + position: fixed; + overflow: hidden; + list-style: none; +} +#supersized li.prevslide { + z-index: -20; +} +#supersized li.prevslide img { + display: inline; +} +#supersized li.activeslide { + z-index: -10; +} +#supersized li.activeslide img { + display: inline; +} +#supersized li.image-loading { + width: 100%; + height: 100%; + background: url(../../plugs/supersized/progress.gif) no-repeat center center; +} +#supersized li.image-loading img { + visibility: hidden; +} +#supersized-loader { + top: 50%; + left: 50%; + z-index: 0; + width: 60px; + height: 60px; + position: absolute; + text-indent: -999em; + margin: -30px 0 0 -30px; + background: url(../../plugs/supersized/progress.gif) no-repeat center center; +} +/*# sourceMappingURL=login.css.map */ \ No newline at end of file diff --git a/public/static/theme/css/login.css.map b/public/static/theme/css/login.css.map new file mode 100644 index 000000000..de07c4e55 --- /dev/null +++ b/public/static/theme/css/login.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["login.less"],"names":[],"mappings":"AAAA,SAAS;AAcT;AAAM;EACJ,YAAA;EACA,cAAA;;AAGF;EACE,gBAAgB,+CAAhB;EACA,sBAAA;;AAGF;EACE,YAAA;;AAGE,gBADF,KAAK;AACA,gBADL,KAAK,MACC;AAAmB,gBADzB,KAAK,MACqB,iBAAiB;AACzC,gBAFF,KAAK,MAEF,iBAAiB;AAAQ,gBAF5B,KAAK,MAEwB,iBAAiB;EAC1C,gDAAA;EACA,6BAAA;EACA,0CAAA;EACA,yEAAA;;AATN,gBAaE;EACE,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mCAAA;;AAnBJ,gBAaE,QAQE;EACE,WAAA;EACA,WAAA;EACA,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,mBAAA;;AAIA,gBAlBJ,QAiBE;AACK,gBAlBP,QAiBE,EACM;AAAQ,gBAlBhB,QAiBE,EACe;EACX,WAAA;EACA,mBAAA;EACA,qBAAA;;AAlCR,gBAaE,QAyBE;EACE,YAAA;;AAvCN,gBAaE,QAyBE,GAGE;EACE,WAAA;EACA,iBAAA;EACA,iBAAA;;AA5CR,gBAiDE;EACE,QAAA;EACA,SAAA;EACA,YAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;;AAvDJ,gBAiDE,KAQE;EACE,WAAA;EACA,eAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,sCAAA;;AAhEN,gBAiDE,KAkBE,GAAG;EACD,kBAAA;EACA,gBAAA;EACA,mCAAA;;AAtEN,gBAiDE,KAkBE,GAAG,GAKD,EAAC;EACC,WAAA;EACA,eAAA;EACA,kBAAA;EACA,4BAAA;;AA5ER,gBAiDE,KAkBE,GAAG,GAYD;EACE,mBAAA;EACA,WAAA;;AAjFR,gBAiDE,KAkBE,GAAG,GAiBD;EACE,WAAA;EACA,YAAA;EACA,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,mBAAA;EACA,8BAAA;EACA,mCAAA;EACA,gDAAA;;AA/FR,gBAiDE,KAkBE,GAAG,GA+BD;EACE,WAAA;EACA,uBAAA;EACA,gBAAA;EACA,6BAAA;EACA,8BAAA;EACA,uFAAA;;AAxGR,gBA6GE;EACE,OAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mCAAA;;AAtHJ,gBA6GE,QAWE;AAxHJ,gBA6GE,QAWK;EACD,WAAA;;AAzHN,gBA6GE,QAeE,EAAC;EACC,WAAA;;AAKN;EACE,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,cAAA;EACA,eAAA;EACA,gBAAA;;AARF,WAUE;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,eAAA;;AAGF,WAAC,MAAO;EACN,iCAAA;EACA,wCAAA;;AAGF,WAAC,QAAS;EACR,gCAAA;EACA,+BAAA;;AA3BJ,WA8BE;AA9BF,WA8BK;EACD,WAAA;EACA,YAAA;EACA,cAAA;EACA,eAAA;;AAlCJ,WAqCE;EACE,MAAA;EACA,OAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;;AAEA,WARF,GAQG;EACC,YAAA;;AADF,WARF,GAQG,UAGC;EACE,eAAA;;AAIJ,WAhBF,GAgBG;EACC,YAAA;;AADF,WAhBF,GAgBG,YAGC;EACE,eAAA;;AAIJ,WAxBF,GAwBG;EACC,WAAA;EACA,YAAA;EACA,4EAAA;;AAHF,WAxBF,GAwBG,cAKC;EACE,kBAAA;;AAMR;EACE,QAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,uBAAA;EACA,4EAAA","file":"login.css"} \ No newline at end of file diff --git a/public/static/theme/css/login.less b/public/static/theme/css/login.less new file mode 100644 index 000000000..e03b03029 --- /dev/null +++ b/public/static/theme/css/login.less @@ -0,0 +1,239 @@ +@charset "UTF-8"; + +// +---------------------------------------------------------------------- +// | ThinkAdmin +// +---------------------------------------------------------------------- +// | 版权所有 2014~2018 广州楚才信息科技有限公司 [ http://www.cuci.cc ] +// +---------------------------------------------------------------------- +// | 官方网站: http://demo.thinkadmin.top +// +---------------------------------------------------------------------- +// | 开源协议 ( https://mit-license.org ) +// +---------------------------------------------------------------------- +// | gitee 开源项目:https://gitee.com/zoujingli/ThinkAdmin +// | github开源项目:https://github.com/zoujingli/ThinkAdmin +// +---------------------------------------------------------------------- + +body, html { + height: 100%; + display: block; +} + +body { + background: url("../img/login/bg1.jpg") no-repeat center center; + background-size: cover; +} + +.login-container { + height: 100%; + + form input { + &, &:-webkit-autofill, &:-webkit-autofill:active, + &:-webkit-autofill:focus, &:-webkit-autofill:hover { + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, .3) inset; + -webkit-text-fill-color: #fff !important; + -webkit-transition-delay: 9999s !important; + -webkit-transition: color 9999s ease-out, background-color 9999s ease-out !important; + } + } + + .header { + top: 0; + left: 0; + width: 100%; + height: 47px; + position: absolute; + text-shadow: #000 .1em .1em .1em; + + .title { + color: #fff; + float: left; + font-size: 18px; + line-height: 47px; + text-indent: 40px; + letter-spacing: 1px; + } + + a { + &, &:focus, &:hover { + color: #fff; + letter-spacing: 1px; + text-decoration: none; + } + } + + ul { + float: right; + + li { + float: left; + line-height: 47px; + margin-left: 10px; + } + } + } + + form { + top: 50%; + left: 50%; + width: 300px; + position: absolute; + margin-top: -250px; + margin-left: -150px; + + h2 { + color: #fff; + padding: 20px 0; + font-size: 25px; + text-align: center; + font-weight: 700; + letter-spacing: 3px; + text-shadow: #000 .05em .05em .05em; + } + + ul li { + position: relative; + margin-top: 20px; + text-shadow: #000 .1em .1em .1em; + + i.layui-icon { + color: #fff; + font-size: 18px; + position: absolute; + padding: 12px 15px 13px 20px; + } + + span { + letter-spacing: 1px; + color: #ff0 !important; + } + + input { + color: #fff; + height: 45px; + padding: 0 15px; + font-size: 14px; + text-indent: 35px; + line-height: 1em; + border-radius: 6px; + letter-spacing: 1px; + background: rgba(0, 0, 0, .1); + text-shadow: #000 .1em .1em .1em; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, .3) inset; + } + + button { + color: #333 !important; + height: 45px !important; + background: #fff !important; + border-radius: 4px !important; + letter-spacing: 1px !important; + box-shadow: 0 15px 30px 0 hsla(0, 0%, 100%, .25) inset, 0 2px 7px 0 rgba(0, 0, 0, .2); + } + } + } + + .footer { + left: 0; + bottom: 0; + width: 100%; + color: #fff; + position: absolute; + text-align: center; + line-height: 30px; + padding-bottom: 10px; + text-shadow: #000 .1em .1em .1em; + + a, span { + color: #fff; + } + + a:hover { + color: #ccc + } + } +} + +#supersized { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -999; + display: block; + position: fixed; + overflow: hidden; + + img { + border: 0; + width: auto; + height: auto; + display: none; + outline: 0; + position: relative; + max-width: none !important + } + + &.speed img { + image-rendering: -moz-crisp-edges; + -ms-interpolation-mode: nearest-neighbor + } + + &.quality img { + image-rendering: optimizeQuality; + -ms-interpolation-mode: bicubic; + } + + a, li { + width: 100%; + height: 100%; + display: block; + cursor: default; + } + + li { + top: 0; + left: 0; + z-index: -30; + position: fixed; + overflow: hidden; + list-style: none; + + &.prevslide { + z-index: -20; + + img { + display: inline + } + } + + &.activeslide { + z-index: -10; + + img { + display: inline + } + } + + &.image-loading { + width: 100%; + height: 100%; + background: url(../../plugs/supersized/progress.gif) no-repeat center center; + + img { + visibility: hidden + } + } + } +} + +#supersized-loader { + top: 50%; + left: 50%; + z-index: 0; + width: 60px; + height: 60px; + position: absolute; + text-indent: -999em; + margin: -30px 0 0 -30px; + background: url(../../plugs/supersized/progress.gif) no-repeat center center; +} diff --git a/route/demo.php b/route/demo.php index 25a3468a6..8912918ca 100644 --- a/route/demo.php +++ b/route/demo.php @@ -22,10 +22,7 @@ if (in_array(request()->rootDomain(), ['ctolog.com', 'thinkadmin.top'])) { Route::post('admin/index/pass', function () { return json(['code' => 0, 'info' => '测试环境禁修改用户密码!']); }); - Route::post('admin/config/info', function () { - return json(['code' => 0, 'info' => '测试环境禁修改系统配置操作!']); - }); - Route::post('admin/config/file', function () { + Route::post('admin/config/save', function () { return json(['code' => 0, 'info' => '测试环境禁修改文件配置操作!']); }); Route::post('admin/menu/index', function () { diff --git a/vendor/autoload.php b/vendor/autoload.php index 1c7d28307..81cce0e7a 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitbe3e9ba0155bdb933f2ae90b5ee37778::getLoader(); +return ComposerAutoloaderInit5d09d00655f54bcd9cc14ff32c48d456::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index dd2519005..ecb90e410 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -103,7 +103,9 @@ return array( 'Qiniu\\Processing\\ImageUrlBuilder' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Processing/ImageUrlBuilder.php', 'Qiniu\\Processing\\Operation' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Processing/Operation.php', 'Qiniu\\Processing\\PersistentFop' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Processing/PersistentFop.php', + 'Qiniu\\Region' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Region.php', 'Qiniu\\Rtc\\AppClient' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php', + 'Qiniu\\Sms\\Sms' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Sms/Sms.php', 'Qiniu\\Storage\\ArgusManager' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Storage/ArgusManager.php', 'Qiniu\\Storage\\BucketManager' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php', 'Qiniu\\Storage\\FormUploader' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 703c6bafc..a0eb726ac 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitbe3e9ba0155bdb933f2ae90b5ee37778 +class ComposerAutoloaderInit5d09d00655f54bcd9cc14ff32c48d456 { private static $loader; @@ -19,15 +19,15 @@ class ComposerAutoloaderInitbe3e9ba0155bdb933f2ae90b5ee37778 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitbe3e9ba0155bdb933f2ae90b5ee37778', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit5d09d00655f54bcd9cc14ff32c48d456', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInitbe3e9ba0155bdb933f2ae90b5ee37778', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit5d09d00655f54bcd9cc14ff32c48d456', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit5d09d00655f54bcd9cc14ff32c48d456::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -48,19 +48,19 @@ class ComposerAutoloaderInitbe3e9ba0155bdb933f2ae90b5ee37778 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit5d09d00655f54bcd9cc14ff32c48d456::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequirebe3e9ba0155bdb933f2ae90b5ee37778($fileIdentifier, $file); + composerRequire5d09d00655f54bcd9cc14ff32c48d456($fileIdentifier, $file); } return $loader; } } -function composerRequirebe3e9ba0155bdb933f2ae90b5ee37778($fileIdentifier, $file) +function composerRequire5d09d00655f54bcd9cc14ff32c48d456($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index ade0f4f5e..6918289ea 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778 +class ComposerStaticInit5d09d00655f54bcd9cc14ff32c48d456 { public static $files = array ( '841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php', @@ -208,7 +208,9 @@ class ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778 'Qiniu\\Processing\\ImageUrlBuilder' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Processing/ImageUrlBuilder.php', 'Qiniu\\Processing\\Operation' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Processing/Operation.php', 'Qiniu\\Processing\\PersistentFop' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Processing/PersistentFop.php', + 'Qiniu\\Region' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Region.php', 'Qiniu\\Rtc\\AppClient' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php', + 'Qiniu\\Sms\\Sms' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Sms/Sms.php', 'Qiniu\\Storage\\ArgusManager' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Storage/ArgusManager.php', 'Qiniu\\Storage\\BucketManager' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php', 'Qiniu\\Storage\\FormUploader' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php', @@ -346,9 +348,9 @@ class ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitbe3e9ba0155bdb933f2ae90b5ee37778::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit5d09d00655f54bcd9cc14ff32c48d456::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit5d09d00655f54bcd9cc14ff32c48d456::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit5d09d00655f54bcd9cc14ff32c48d456::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 62b56a876..2b38e8142 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -15,7 +15,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -64,7 +64,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -118,21 +118,21 @@ }, { "name": "qiniu/php-sdk", - "version": "v7.2.7", - "version_normalized": "7.2.7.0", + "version": "v7.2.8", + "version_normalized": "7.2.8.0", "source": { "type": "git", "url": "https://github.com/qiniu/php-sdk.git", - "reference": "88d11a5857ebc6871204e9be6ceec54bf5f381e6" + "reference": "464f3eb3b0f51586d274733aee67f372fc6276ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/88d11a5857ebc6871204e9be6ceec54bf5f381e6", - "reference": "88d11a5857ebc6871204e9be6ceec54bf5f381e6", + "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/464f3eb3b0f51586d274733aee67f372fc6276ef", + "reference": "464f3eb3b0f51586d274733aee67f372fc6276ef", "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -141,10 +141,10 @@ "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "~8.0", "squizlabs/php_codesniffer": "~2.3" }, - "time": "2018-11-06T13:34:32+00:00", + "time": "2019-06-21T06:22:05+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -177,8 +177,8 @@ }, { "name": "symfony/options-resolver", - "version": "v3.4.28", - "version_normalized": "3.4.28.0", + "version": "v3.4.29", + "version_normalized": "3.4.29.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", @@ -191,7 +191,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -253,7 +253,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -312,7 +312,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -356,7 +356,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -405,7 +405,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -459,7 +459,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -499,16 +499,16 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "d4366fa9d4f48400391f9983c9771494c75aba95" + "reference": "a7cfd1e203f88fb81c0a38ae20dcb643edbb82b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/d4366fa9d4f48400391f9983c9771494c75aba95", - "reference": "d4366fa9d4f48400391f9983c9771494c75aba95", + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/a7cfd1e203f88fb81c0a38ae20dcb643edbb82b4", + "reference": "a7cfd1e203f88fb81c0a38ae20dcb643edbb82b4", "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -523,7 +523,7 @@ "qiniu/php-sdk": "^7.2", "topthink/framework": "5.1.*" }, - "time": "2019-06-15T04:07:28+00:00", + "time": "2019-07-04T09:26:12+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -557,7 +557,7 @@ "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -614,16 +614,16 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/WeOpenDeveloper.git", - "reference": "ce6e66eb2531da89a4463f595797258ad2bae385" + "reference": "3adfc5140c3fb3310facbd6a44f3b52061918d1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/WeOpenDeveloper/zipball/ce6e66eb2531da89a4463f595797258ad2bae385", - "reference": "ce6e66eb2531da89a4463f595797258ad2bae385", + "url": "https://api.github.com/repos/zoujingli/WeOpenDeveloper/zipball/3adfc5140c3fb3310facbd6a44f3b52061918d1f", + "reference": "3adfc5140c3fb3310facbd6a44f3b52061918d1f", "shasum": "", "mirrors": [ { - "url": "https://dl.laravel-china.org/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -635,7 +635,7 @@ "php": ">=5.4", "zoujingli/wechat-developer": "^1.0" }, - "time": "2019-05-09T03:34:57+00:00", + "time": "2019-07-03T07:16:52+00:00", "type": "library", "installation-source": "dist", "autoload": { diff --git a/vendor/qiniu/php-sdk/.travis.yml b/vendor/qiniu/php-sdk/.travis.yml index 60951b15c..f5dbf7e58 100644 --- a/vendor/qiniu/php-sdk/.travis.yml +++ b/vendor/qiniu/php-sdk/.travis.yml @@ -6,6 +6,7 @@ php: - 5.5 - 5.6 - 7.0 + - 7.2 before_script: - export QINIU_TEST_ENV="travis" @@ -21,3 +22,8 @@ script: after_script: - wget https://scrutinizer-ci.com/ocular.phar - php ocular.phar code-coverage:upload --format=php-clover coverage.clover + +env: + global: + - secure: "V9BsntXQZwvO9EOD6itzaae2uq+GemzyTUTxMTJx1/jFoUNpCU2O2UAgjA2XSEr5sgci0KWDV4Krbzv3EBB4uplOFLMI3w32256UHbT9E0x3YjhfPJZk68MH1iS1be7X81LDHON7yveavK8987s3qzjeUcbfLSPgccT+cvf7+dc=" + - QINIU_ACCESS_KEY=vHg2e7nOh7Jsucv2Azr5FH6omPgX22zoJRWa0FN5 \ No newline at end of file diff --git a/vendor/qiniu/php-sdk/composer.json b/vendor/qiniu/php-sdk/composer.json index 52544fe7b..320783620 100644 --- a/vendor/qiniu/php-sdk/composer.json +++ b/vendor/qiniu/php-sdk/composer.json @@ -16,7 +16,7 @@ "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "~8.0", "squizlabs/php_codesniffer": "~2.3" }, "autoload": { diff --git a/vendor/qiniu/php-sdk/docs/sms/example.php b/vendor/qiniu/php-sdk/docs/sms/example.php new file mode 100644 index 000000000..541c0d6c2 --- /dev/null +++ b/vendor/qiniu/php-sdk/docs/sms/example.php @@ -0,0 +1,70 @@ + 'code' ); +try { + //发送短信 + $resp = $client->sendMessage($template_id, $mobiles, $code); + print_r($resp); +} catch (\Exception $e) { + echo "Error:", $e, "\n"; +}exit; +//模板模块 +$name="tstest001"; +$template="tesy001 ${code}"; +$type="notification"; +$description="tstest001"; +$signature_id="1131464448834277376"; +$id="1131810682442883072"; + +try { + //创建模板 + $resp = $client->createTemplate($name, $template, $type, $description, $signature_id); + print_r($resp); + //查询模板 + $resp = $client->queryTemplate(); + print_r($resp); + //修改模板 + $resp = $client->updateTemplate($id, $name, $template, $description, $signature_id); + print_r($resp); + //删除模板 + $resp = $client->deleteTemplate($id); + print_r($resp); +} catch (\Exception $e) { + echo "Error:", $e, "\n"; +} +//签名模块 +$signature = 'lfxlive2'; +$source = 'enterprises_and_institutions'; +$pic="/Users/Desktop/sss.jpg"; +$audit_status="passed"; +$page=1; +$page_size=1; +$id="1131464448834277376"; + +try { + //创建签名 + $resp = $client->createSignature($signature, $source, $pic); + print_r($resp); + //查询签名 + $resp = $client->checkSignature($audit_status); + //修改签名 + $resp = $client->updateSignature($id, $signature, $source, $pic); + print_r($resp); + //删除ID + $resp = $client->deleteSignature($id); + print_r($resp); +} catch (\Exception $e) { + echo "Error:", $e, "\n"; +} diff --git a/vendor/qiniu/php-sdk/examples/bucket_lifecycleRule.php b/vendor/qiniu/php-sdk/examples/bucket_lifecycleRule.php new file mode 100644 index 000000000..3f7fefd5b --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/bucket_lifecycleRule.php @@ -0,0 +1,30 @@ +bucketLifecycleRule( + $bucket, + $name, + $prefix, + $delete_after_days, + $to_line_after_days +); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/delete_bucket.php b/vendor/qiniu/php-sdk/examples/delete_bucket.php new file mode 100644 index 000000000..dc2e30505 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/delete_bucket.php @@ -0,0 +1,20 @@ +deleteBucket($name); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/delete_bucketEvent.php b/vendor/qiniu/php-sdk/examples/delete_bucketEvent.php new file mode 100644 index 000000000..00df6cae2 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/delete_bucketEvent.php @@ -0,0 +1,21 @@ +deleteBucketEvent($bucket, $name); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/delete_bucketLifecycleRule.php b/vendor/qiniu/php-sdk/examples/delete_bucketLifecycleRule.php new file mode 100644 index 000000000..a53699267 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/delete_bucketLifecycleRule.php @@ -0,0 +1,21 @@ +deleteBucketLifecycleRule($bucket, $name); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_bucketEvents.php b/vendor/qiniu/php-sdk/examples/get_bucketEvents.php new file mode 100644 index 000000000..53a5c88d2 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_bucketEvents.php @@ -0,0 +1,20 @@ +getBucketEvents($bucket); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_bucketLifecycleRules.php b/vendor/qiniu/php-sdk/examples/get_bucketLifecycleRules.php new file mode 100644 index 000000000..652bee8ce --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_bucketLifecycleRules.php @@ -0,0 +1,20 @@ +getBucketLifecycleRules($bucket); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_bucketList.php b/vendor/qiniu/php-sdk/examples/get_bucketList.php new file mode 100644 index 000000000..74aaa65f3 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_bucketList.php @@ -0,0 +1,20 @@ +listbuckets($region); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_bucketQuota.php b/vendor/qiniu/php-sdk/examples/get_bucketQuota.php new file mode 100644 index 000000000..563395d61 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_bucketQuota.php @@ -0,0 +1,20 @@ +getBucketQuota($bucket); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_bucketinfo.php b/vendor/qiniu/php-sdk/examples/get_bucketinfo.php new file mode 100644 index 000000000..ff052a436 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_bucketinfo.php @@ -0,0 +1,20 @@ +bucketInfo($bucket); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_bucketinfos.php b/vendor/qiniu/php-sdk/examples/get_bucketinfos.php new file mode 100644 index 000000000..0ad650325 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_bucketinfos.php @@ -0,0 +1,20 @@ +bucketInfos($region); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/get_corsRules.php b/vendor/qiniu/php-sdk/examples/get_corsRules.php new file mode 100644 index 000000000..fbfde2d21 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/get_corsRules.php @@ -0,0 +1,20 @@ +getCorsRules($bucket); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/put_bucketAccessMode.php b/vendor/qiniu/php-sdk/examples/put_bucketAccessMode.php new file mode 100644 index 000000000..b4539264a --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/put_bucketAccessMode.php @@ -0,0 +1,21 @@ +putBucketAccessMode($bucket, $private); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/put_bucketAccessStyleMode.php b/vendor/qiniu/php-sdk/examples/put_bucketAccessStyleMode.php new file mode 100644 index 000000000..2f7c27f2b --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/put_bucketAccessStyleMode.php @@ -0,0 +1,21 @@ +putBucketAccessStyleMode($bucket, $mode); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/put_bucketEvent.php b/vendor/qiniu/php-sdk/examples/put_bucketEvent.php new file mode 100644 index 000000000..33dbb44c0 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/put_bucketEvent.php @@ -0,0 +1,25 @@ +putBucketEvent($bucket, $name, $prefix, $suffix, $event, $callbackURL); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/put_bucketMaxAge.php b/vendor/qiniu/php-sdk/examples/put_bucketMaxAge.php new file mode 100644 index 000000000..77092e90a --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/put_bucketMaxAge.php @@ -0,0 +1,21 @@ +putBucketMaxAge($bucket, $maxAge); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/put_bucketQuota.php b/vendor/qiniu/php-sdk/examples/put_bucketQuota.php new file mode 100644 index 000000000..18082b631 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/put_bucketQuota.php @@ -0,0 +1,22 @@ +putBucketQuota($bucket, $size, $count); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/put_referAntiLeech.php b/vendor/qiniu/php-sdk/examples/put_referAntiLeech.php new file mode 100644 index 000000000..6828bc9ac --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/put_referAntiLeech.php @@ -0,0 +1,23 @@ +putReferAntiLeech($bucket, $mode, $norefer, $pattern); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/rs_pub_domain.php b/vendor/qiniu/php-sdk/examples/rs_pub_domain.php new file mode 100644 index 000000000..2e81922eb --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/rs_pub_domain.php @@ -0,0 +1,19 @@ +publishDomain($bucket, $domain); +if ($err) { + print_r($err); +} diff --git a/vendor/qiniu/php-sdk/examples/rsf_v2list_bucket.php b/vendor/qiniu/php-sdk/examples/rsf_v2list_bucket.php new file mode 100644 index 000000000..4dcf27096 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/rsf_v2list_bucket.php @@ -0,0 +1,33 @@ +listFilesv2($bucket, $prefix, $marker, $limit, $delimiter, true); + +if ($err) { + print_r($err); +} else { + print_r($ret); +} diff --git a/vendor/qiniu/php-sdk/examples/update_bucketEvent.php b/vendor/qiniu/php-sdk/examples/update_bucketEvent.php new file mode 100644 index 000000000..26347ac41 --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/update_bucketEvent.php @@ -0,0 +1,25 @@ +updateBucketEvent($bucket, $name, $prefix, $suffix, $event, $callbackURL); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/update_bucketLifecycleRule.php b/vendor/qiniu/php-sdk/examples/update_bucketLifecycleRule.php new file mode 100644 index 000000000..85eb07a6b --- /dev/null +++ b/vendor/qiniu/php-sdk/examples/update_bucketLifecycleRule.php @@ -0,0 +1,30 @@ +updateBucketLifecycleRule( + $bucket, + $name, + $prefix, + $delete_after_days, + $to_line_after_days +); +if ($err) { + print_r($err); +} else { + print_r($Info); +} diff --git a/vendor/qiniu/php-sdk/examples/upload_and_callback.php b/vendor/qiniu/php-sdk/examples/upload_and_callback.php index 4762bd330..1a7070557 100644 --- a/vendor/qiniu/php-sdk/examples/upload_and_callback.php +++ b/vendor/qiniu/php-sdk/examples/upload_and_callback.php @@ -1,6 +1,5 @@ 'filename=$(fname)&filesize=$(fsize)' ); $uptoken = $auth->uploadToken($bucket, null, 3600, $policy); - //上传文件的本地路径 $filePath = './php-logo.png'; - //指定 config // $uploadMgr = new UploadManager($config); $uploadMgr = new UploadManager(); - list($ret, $err) = $uploadMgr->putFile($uptoken, null, $filePath); echo "\n====> putFile result: \n"; if ($err !== null) { diff --git a/vendor/qiniu/php-sdk/phpunit.xml.dist b/vendor/qiniu/php-sdk/phpunit.xml.dist index 72ff67f97..840f6e568 100644 --- a/vendor/qiniu/php-sdk/phpunit.xml.dist +++ b/vendor/qiniu/php-sdk/phpunit.xml.dist @@ -8,7 +8,6 @@ convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" - syntaxCheck="true" > diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php index 0e6abac08..c32475793 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php @@ -169,21 +169,22 @@ final class CdnManager */ public static function createTimestampAntiLeechUrl($rawUrl, $encryptKey, $durationInSeconds) { - $parsedUrl = parse_url($rawUrl); $deadline = time() + $durationInSeconds; $expireHex = dechex($deadline); + $path = isset($parsedUrl['path']) ? $parsedUrl['path'] : ''; $path = implode('/', array_map('rawurlencode', explode('/', $path))); - $strToSign = $encryptKey . $path . $expireHex; $signStr = md5($strToSign); + $url = $parsedUrl['scheme'].'://'.$parsedUrl['host'].$path; + if (isset($parsedUrl['query'])) { - $signedUrl = $rawUrl . '&sign=' . $signStr . '&t=' . $expireHex; + $signedUrl = $url . '&sign=' . $signStr . '&t=' . $expireHex; } else { - $signedUrl = $rawUrl . '?sign=' . $signStr . '&t=' . $expireHex; + $signedUrl = $url . '?sign=' . $signStr . '&t=' . $expireHex; } return $signedUrl; diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Config.php b/vendor/qiniu/php-sdk/src/Qiniu/Config.php index b1f63674b..94c43f659 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Config.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Config.php @@ -3,48 +3,51 @@ namespace Qiniu; final class Config { - const SDK_VER = '7.2.7'; + const SDK_VER = '7.3.0'; const BLOCK_SIZE = 4194304; //4*1024*1024 分块上传块大小,该参数为接口规格,不能修改 const RSF_HOST = 'rsf.qiniu.com'; const API_HOST = 'api.qiniu.com'; const RS_HOST = 'rs.qiniu.com'; //RS Host - const UC_HOST = 'https://api.qiniu.com'; //UC Host + const UC_HOST = 'uc.qbox.me'; //UC Host const RTCAPI_HOST = 'http://rtc.qiniuapi.com'; const ARGUS_HOST = 'argus.atlab.ai'; + const CASTER_HOST = 'pili-caster.qiniuapi.com'; + const SMS_HOST="https://sms.qiniuapi.com"; const RTCAPI_VERSION = 'v3'; + const SMS_VERSION='v1'; - // Zone 空间对应的机房 - public $zone; + // Zone 空间对应的存储区域 + public $region; //BOOL 是否使用https域名 public $useHTTPS; //BOOL 是否使用CDN加速上传域名 public $useCdnDomains; // Zone Cache - private $zoneCache; + private $regionCache; // 构造函数 - public function __construct(Zone $z = null) + public function __construct(Region $z = null) { $this->zone = $z; $this->useHTTPS = false; $this->useCdnDomains = false; - $this->zoneCache = array(); + $this->regionCache = array(); } public function getUpHost($accessKey, $bucket) { - $zone = $this->getZone($accessKey, $bucket); + $region = $this->getRegion($accessKey, $bucket); if ($this->useHTTPS === true) { $scheme = "https://"; } else { $scheme = "http://"; } - $host = $zone->srcUpHosts[0]; + $host = $region->srcUpHosts[0]; if ($this->useCdnDomains === true) { - $host = $zone->cdnUpHosts[0]; + $host = $region->cdnUpHosts[0]; } return $scheme . $host; @@ -52,16 +55,16 @@ final class Config public function getUpBackupHost($accessKey, $bucket) { - $zone = $this->getZone($accessKey, $bucket); + $region = $this->getRegion($accessKey, $bucket); if ($this->useHTTPS === true) { $scheme = "https://"; } else { $scheme = "http://"; } - $host = $zone->cdnUpHosts[0]; + $host = $region->cdnUpHosts[0]; if ($this->useCdnDomains === true) { - $host = $zone->srcUpHosts[0]; + $host = $region->srcUpHosts[0]; } return $scheme . $host; @@ -69,7 +72,7 @@ final class Config public function getRsHost($accessKey, $bucket) { - $zone = $this->getZone($accessKey, $bucket); + $region = $this->getRegion($accessKey, $bucket); if ($this->useHTTPS === true) { $scheme = "https://"; @@ -77,12 +80,12 @@ final class Config $scheme = "http://"; } - return $scheme . $zone->rsHost; + return $scheme . $region->rsHost; } public function getRsfHost($accessKey, $bucket) { - $zone = $this->getZone($accessKey, $bucket); + $region = $this->getRegion($accessKey, $bucket); if ($this->useHTTPS === true) { $scheme = "https://"; @@ -90,12 +93,12 @@ final class Config $scheme = "http://"; } - return $scheme . $zone->rsfHost; + return $scheme . $region->rsfHost; } public function getIovipHost($accessKey, $bucket) { - $zone = $this->getZone($accessKey, $bucket); + $region = $this->getRegion($accessKey, $bucket); if ($this->useHTTPS === true) { $scheme = "https://"; @@ -103,12 +106,12 @@ final class Config $scheme = "http://"; } - return $scheme . $zone->iovipHost; + return $scheme . $region->iovipHost; } public function getApiHost($accessKey, $bucket) { - $zone = $this->getZone($accessKey, $bucket); + $region = $this->getRegion($accessKey, $bucket); if ($this->useHTTPS === true) { $scheme = "https://"; @@ -116,22 +119,22 @@ final class Config $scheme = "http://"; } - return $scheme . $zone->apiHost; + return $scheme . $region->apiHost; } - private function getZone($accessKey, $bucket) + private function getRegion($accessKey, $bucket) { $cacheId = "$accessKey:$bucket"; - if (isset($this->zoneCache[$cacheId])) { - $zone = $this->zoneCache[$cacheId]; + if (isset($this->regionCache[$cacheId])) { + $region = $this->regionCache[$cacheId]; } elseif (isset($this->zone)) { - $zone = $this->zone; - $this->zoneCache[$cacheId] = $zone; + $region = $this->zone; + $this->regionCache[$cacheId] = $region; } else { - $zone = Zone::queryZone($accessKey, $bucket); - $this->zoneCache[$cacheId] = $zone; + $region = Zone::queryZone($accessKey, $bucket); + $this->regionCache[$cacheId] = $region; } - return $zone; + return $region; } } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php b/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php index 425c314cf..0fe03ceed 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php @@ -25,6 +25,12 @@ final class Client return self::sendRequest($request); } + public static function PUT($url, $body, array $headers = array()) + { + $request = new Request('PUT', $url, $headers, $body); + return self::sendRequest($request); + } + public static function multipartPost( $url, $fields, @@ -56,6 +62,7 @@ final class Client array_push($data, ''); $body = implode("\r\n", $data); + // var_dump($data);exit; $contentType = 'multipart/form-data; boundary=' . $mimeBoundary; $headers['Content-Type'] = $contentType; $request = new Request('POST', $url, $headers, $body); @@ -91,12 +98,10 @@ final class Client CURLOPT_CUSTOMREQUEST => $request->method, CURLOPT_URL => $request->url, ); - // Handle open_basedir & safe mode if (!ini_get('safe_mode') && !ini_get('open_basedir')) { $options[CURLOPT_FOLLOWLOCATION] = true; } - if (!empty($request->headers)) { $headers = array(); foreach ($request->headers as $key => $val) { @@ -105,7 +110,6 @@ final class Client $options[CURLOPT_HTTPHEADER] = $headers; } curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); - if (!empty($request->body)) { $options[CURLOPT_POSTFIELDS] = $request->body; } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Region.php b/vendor/qiniu/php-sdk/src/Qiniu/Region.php new file mode 100644 index 000000000..eae21d199 --- /dev/null +++ b/vendor/qiniu/php-sdk/src/Qiniu/Region.php @@ -0,0 +1,196 @@ +srcUpHosts = $srcUpHosts; + $this->cdnUpHosts = $cdnUpHosts; + $this->rsHost = $rsHost; + $this->rsfHost = $rsfHost; + $this->apiHost = $apiHost; + $this->iovipHost = $iovipHost; + } + + //华东机房 + public static function regionHuadong() + { + $regionHuadong = new Region( + array("up.qiniup.com", 'up-jjh.qiniup.com', 'up-xs.qiniup.com'), + array('upload.qiniup.com', 'upload-jjh.qiniup.com', 'upload-xs.qiniup.com'), + 'rs.qbox.me', + 'rsf.qbox.me', + 'api.qiniu.com', + 'iovip.qbox.me' + ); + return $regionHuadong; + } + + //华东机房内网上传 + public static function qvmRegionHuadong() + { + $qvmRegionHuadong = new Region( + array("free-qvm-z0-xs.qiniup.com"), + 'rs.qbox.me', + 'rsf.qbox.me', + 'api.qiniu.com', + 'iovip.qbox.me' + ); + return $qvmRegionHuadong; + } + + //华北机房内网上传 + public static function qvmRegionHuabei() + { + $qvmRegionHuabei = new Region( + array("free-qvm-z1-zz.qiniup.com"), + "rs-z1.qbox.me", + "rsf-z1.qbox.me", + "api-z1.qiniu.com", + "iovip-z1.qbox.me" + ); + return $qvmRegionHuabei; + } + + //华北机房 + public static function regionHuabei() + { + $regionHuabei = new Region( + array('up-z1.qiniup.com'), + array('upload-z1.qiniup.com'), + "rs-z1.qbox.me", + "rsf-z1.qbox.me", + "api-z1.qiniu.com", + "iovip-z1.qbox.me" + ); + + return $regionHuabei; + } + + //华南机房 + public static function regionHuanan() + { + $regionHuanan = new Region( + array('up-z2.qiniup.com', 'up-dg.qiniup.com', 'up-fs.qiniup.com'), + array('upload-z2.qiniup.com', 'upload-dg.qiniup.com', 'upload-fs.qiniup.com'), + "rs-z2.qbox.me", + "rsf-z2.qbox.me", + "api-z2.qiniu.com", + "iovip-z2.qbox.me" + ); + return $regionHuanan; + } + + //北美机房 + public static function regionNorthAmerica() + { + //北美机房 + $regionNorthAmerica = new Region( + array('up-na0.qiniup.com'), + array('upload-na0.qiniup.com'), + "rs-na0.qbox.me", + "rsf-na0.qbox.me", + "api-na0.qiniu.com", + "iovip-na0.qbox.me" + ); + return $regionNorthAmerica; + } + + //新加坡机房 + public static function regionSingapore() + { + //新加坡机房 + $regionSingapore = new Region( + array('up-as0.qiniup.com'), + array('upload-as0.qiniup.com'), + "rs-as0.qbox.me", + "rsf-as0.qbox.me", + "api-as0.qiniu.com", + "iovip-as0.qbox.me" + ); + return $regionSingapore; + } + + /* + * GET /v2/query?ak=&&bucket= + **/ + public static function queryRegion($ak, $bucket) + { + $Region = new Region(); + $url = Config::API_HOST . '/v2/query' . "?ak=$ak&bucket=$bucket"; + $ret = Client::Get($url); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + $r = ($ret->body === null) ? array() : $ret->json(); + //parse Region; + + $iovipHost = $r['io']['src']['main'][0]; + $Region->iovipHost = $iovipHost; + $accMain = $r['up']['acc']['main'][0]; + array_push($Region->cdnUpHosts, $accMain); + if (isset($r['up']['acc']['backup'])) { + foreach ($r['up']['acc']['backup'] as $key => $value) { + array_push($Region->cdnUpHosts, $value); + } + } + $srcMain = $r['up']['src']['main'][0]; + array_push($Region->srcUpHosts, $srcMain); + if (isset($r['up']['src']['backup'])) { + foreach ($r['up']['src']['backup'] as $key => $value) { + array_push($Region->srcUpHosts, $value); + } + } + + //set specific hosts + if (strstr($Region->iovipHost, "z1") !== false) { + $Region->rsHost = "rs-z1.qbox.me"; + $Region->rsfHost = "rsf-z1.qbox.me"; + $Region->apiHost = "api-z1.qiniu.com"; + } elseif (strstr($Region->iovipHost, "z2") !== false) { + $Region->rsHost = "rs-z2.qbox.me"; + $Region->rsfHost = "rsf-z2.qbox.me"; + $Region->apiHost = "api-z2.qiniu.com"; + } elseif (strstr($Region->iovipHost, "na0") !== false) { + $Region->rsHost = "rs-na0.qbox.me"; + $Region->rsfHost = "rsf-na0.qbox.me"; + $Region->apiHost = "api-na0.qiniu.com"; + } elseif (strstr($Region->iovipHost, "as0") !== false) { + $Region->rsHost = "rs-as0.qbox.me"; + $Region->rsfHost = "rsf-as0.qbox.me"; + $Region->apiHost = "api-as0.qiniu.com"; + } else { + $Region->rsHost = "rs.qbox.me"; + $Region->rsfHost = "rsf.qbox.me"; + $Region->apiHost = "api.qiniu.com"; + } + + return $Region; + } +} diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php b/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php index c07ee72f3..0fd0019a4 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php @@ -19,6 +19,7 @@ class AppClient } /* + * 创建应用 * hub: 直播空间名 * title: app 的名称 注意,Title 不是唯一标识,重复 create 动作将生成多个 app * maxUsers:人数限制 @@ -41,6 +42,7 @@ class AppClient } /* + * 更新应用 * appId: app 的唯一标识,创建的时候由系统生成。 * Title: app 的名称, 可选。 * Hub: 绑定的直播 hub,可选,用于合流后 rtmp 推流。 @@ -75,6 +77,7 @@ class AppClient } /* + * 获取应用信息 * appId: app 的唯一标识,创建的时候由系统生成。 */ public function getApp($appId) @@ -85,6 +88,7 @@ class AppClient } /* + * 删除应用 * appId: app 的唯一标识,创建的时候由系统生成 */ public function deleteApp($appId) @@ -95,7 +99,7 @@ class AppClient } /* - * 获取房间的人数 + * 获取房间内用户列表 * appId: app 的唯一标识,创建的时候由系统生成。 * roomName: 操作所查询的连麦房间。 */ @@ -107,7 +111,7 @@ class AppClient } /* - * 踢出玩家 + * 踢出用户 * appId: app 的唯一标识,创建的时候由系统生成。 * roomName: 连麦房间 * userId: 请求加入房间的用户ID @@ -120,7 +124,7 @@ class AppClient } /* - * 获取房间的人数 + * 获取应用中活跃房间 * appId: app 的唯一标识,创建的时候由系统生成。 * prefix: 所查询房间名的前缀索引,可以为空。 * offset: int 类型,分页查询的位移标记。 @@ -149,6 +153,7 @@ class AppClient } /* + * 生成加入房间的令牌 * appId: app 的唯一标识,创建的时候由系统生成。 * roomName: 房间名称,需满足规格 ^[a-zA-Z0-9_-]{3,64}$ * userId: 请求加入房间的用户 ID,需满足规格 ^[a-zA-Z0-9_-]{3,50}$ diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php b/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php new file mode 100644 index 000000000..592d6ba70 --- /dev/null +++ b/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php @@ -0,0 +1,337 @@ +auth = $auth; + + $this->baseURL = sprintf("%s/%s/", Config::SMS_HOST, Config::SMS_VERSION); + } + + /* + * 创建签名 + * signature: string 类型,必填,【长度限制8个字符内】超过长度会报错 + * source: string 类型,必填,申请签名时必须指定签名来源。取值范围为: + nterprises_and_institutions 企事业单位的全称或简称 + website 工信部备案网站的全称或简称 + app APP应用的全称或简称 + public_number_or_small_program 公众号或小程序的全称或简称 + store_name 电商平台店铺名的全称或简称 + trade_name 商标名的全称或简称, + * pics: 本地的图片路径 string 类型,可选 + *@return: 类型array { + "signature_id": + } + */ + public function createSignature(string $signature, string $source, string $pics = null) + { + $params['signature'] = $signature; + $params['source'] = $source; + if (!empty($pics)) { + $params['pics'] = $this->imgToBase64($pics); + } + $body = json_encode($params); + $url =$this->baseURL.'signature'; + $ret = $this->post($url, $body); + return $ret; + } + + /* + * 编辑签名 + * id 签名id : string 类型,必填, + * signature: string 类型,必填, + * source: string 类型,必填,申请签名时必须指定签名来源。取值范围为: + enterprises_and_institutions 企事业单位的全称或简称 + website 工信部备案网站的全称或简称 + app APP应用的全称或简称 + public_number_or_small_program 公众号或小程序的全称或简称 + store_name 电商平台店铺名的全称或简称 + trade_name 商标名的全称或简称, + * pics: 本地的图片路径 string 类型,可选, + * @return: 类型array { + "signature": string + } + */ + public function updateSignature(string $id, string $signature, string $source, string $pics = null) + { + $params['signature'] = $signature; + $params['source'] = $source; + if (!empty($pics)) { + $params['pics'] = $this->imgToBase64($pics); + } + $body = json_encode($params); + $url =$this->baseURL.'signature/'.$id; + $ret = $this->PUT($url, $body); + return $ret; + } + + /* + * 查询签名 + * audit_status: 审核状态 string 类型,可选, + 取值范围为: "passed"(通过), "rejected"(未通过), "reviewing"(审核中) + * page:页码 int 类型, + * page_size: 分页大小 int 类型,可选, 默认为20 + *@return: 类型array { + "items": [{ + "id": string, + "signature": string, + "source": string, + "audit_status": string, + "reject_reason": string, + "created_at": int64, + "updated_at": int64 + }...], + "total": int, + "page": int, + "page_size": int, + } + */ + public function checkSignature(string $audit_status = null, int $page = 1, int $page_size = 20) + { + + $url = sprintf( + "%s?audit_status=%s&page=%s&page_size=%s", + $this->baseURL.'signature', + $audit_status, + $page, + $page_size + ); + $ret = $this->get($url); + return $ret; + } + + + /* + * 删除签名 + * id 签名id string 类型,必填, + * @retrun : 请求成功 HTTP 状态码为 200 + */ + public function deleteSignature(string $id) + { + $url = $this->baseURL . 'signature/' . $id; + list(, $err) = $this->delete($url); + return $err; + } + + + + + /* + * 创建模板 + * name : 模板名称 string 类型 ,必填 + * template: 模板内容 string 类型,必填 + * type: 模板类型 string 类型,必填, + 取值范围为: notification (通知类短信), verification (验证码短信), marketing (营销类短信) + * description: 申请理由简述 string 类型,必填 + * signature_id: 已经审核通过的签名 string 类型,必填 + * @return: 类型 array { + "template_id": string + } + */ + public function createTemplate( + string $name, + string $template, + string $type, + string $description, + string $signture_id + ) { + $params['name'] = $name; + $params['template'] = $template; + $params['type'] = $type; + $params['description'] = $description; + $params['signature_id'] = $signture_id; + + $body = json_encode($params); + $url =$this->baseURL.'template'; + $ret = $this->post($url, $body); + return $ret; + } + + /* + * 查询模板 + * audit_status: 审核状态 string 类型 ,可选, + 取值范围为: passed (通过), rejected (未通过), reviewing (审核中) + * page: 页码 int 类型,可选,默认为 1 + * page_size: 分页大小 int 类型,可选,默认为 20 + * @return: 类型array{ + "items": [{ + "id": string, + "name": string, + "template": string, + "audit_status": string, + "reject_reason": string, + "type": string, + "signature_id": string, // 模版绑定的签名ID + "signature_text": string, // 模版绑定的签名内容 + "created_at": int64, + "updated_at": int64 + }...], + "total": int, + "page": int, + "page_size": int + } + */ + public function queryTemplate(string $audit_status = null, int $page = 1, int $page_size = 20) + { + + $url = sprintf( + "%s?audit_status=%s&page=%s&page_size=%s", + $this->baseURL.'template', + $audit_status, + $page, + $page_size + ); + $ret = $this->get($url); + return $ret; + } + + /* + * 编辑模板 + * id :模板id + * name : 模板名称 string 类型 ,必填 + * template: 模板内容 string 类型,必填 + * description: 申请理由简述 string 类型,必填 + * signature_id: 已经审核通过的签名 string 类型,必填 + * @retrun : 请求成功 HTTP 状态码为 200 + */ + public function updateTemplate( + string $id, + string $name, + string $template, + string $description, + string $signature_id + ) { + $params['name'] = $name; + $params['template'] = $template; + $params['description'] = $description; + $params['signature_id'] = $signature_id; + $body = json_encode($params); + $url =$this->baseURL.'template/'.$id; + $ret = $this->PUT($url, $body); + return $ret; + } + + /* + * 删除模板 + * id :模板id string 类型,必填, + * @retrun : 请求成功 HTTP 状态码为 200 + */ + public function deleteTemplate(string $id) + { + $url = $this->baseURL . 'template/' . $id; + list(, $err) = $this->delete($url); + return $err; + } + + /* + * 发送短信 + * 编辑模板 + * template_id :模板id string类型,必填 + * mobiles : 手机号数组 []string 类型 ,必填 + * parameters: 模板内容 map[string]string 类型,可选 + * @return: 类型json { + "job_id": string + } + */ + public function sendMessage(string $template_id, array $mobiles, array $parameters = null) + { + $params['template_id'] = $template_id; + $params['mobiles'] = $mobiles; + if (!empty($parameters)) { + $params['parameters'] = $parameters; + } + $body = json_encode($params); + $url =$this->baseURL.'message'; + $ret = $this->post($url, $body); + return $ret; + } + + public function imgToBase64(string $img_file) + { + $img_base64 = ''; + if (file_exists($img_file)) { + $app_img_file = $img_file; // 图片路径 + $img_info = getimagesize($app_img_file); // 取得图片的大小,类型等 + $fp = fopen($app_img_file, "r"); // 图片是否可读权限 + if ($fp) { + $filesize = filesize($app_img_file); + if ($filesize > 5*1024*1024) { + die("pic size < 5M !"); + } + $content = fread($fp, $filesize); + $file_content = chunk_split(base64_encode($content)); // base64编码 + switch ($img_info[2]) { //判读图片类型 + case 1: + $img_type = 'gif'; + break; + case 2: + $img_type = 'jpg'; + break; + case 3: + $img_type = 'png'; + break; + } + //合成图片的base64编码 + $img_base64 = 'data:image/' . $img_type . ';base64,' . $file_content; + } + fclose($fp); + } + + return $img_base64; + } + + private function get($url, $cType = null) + { + $rtcToken = $this->auth->authorizationV2($url, "GET", null, $cType); + $rtcToken['Content-Type'] = $cType; + $ret = Client::get($url, $rtcToken); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + return array($ret->json(), null); + } + + private function delete($url, $contentType = 'application/json') + { + $rtcToken = $this->auth->authorizationV2($url, "DELETE", null, $contentType); + $rtcToken['Content-Type'] = $contentType; + $ret = Client::delete($url, $rtcToken); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + return array($ret->json(), null); + } + + private function post($url, $body, $contentType = 'application/json') + { + $rtcToken = $this->auth->authorizationV2($url, "POST", $body, $contentType); + $rtcToken['Content-Type'] = $contentType; + $ret = Client::post($url, $body, $rtcToken); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + $r = ($ret->body === null) ? array() : $ret->json(); + return array($r, null); + } + private function PUT($url, $body, $contentType = 'application/json') + { + $rtcToken = $this->auth->authorizationV2($url, "PUT", $body, $contentType); + $rtcToken['Content-Type'] = $contentType; + $ret = Client::put($url, $body, $rtcToken); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + $r = ($ret->body === null) ? array() : $ret->json(); + return array($r, null); + } +} diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php index 2e82a1477..e38f433ea 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php @@ -41,6 +41,56 @@ final class BucketManager return $this->rsGet('/buckets?shared=' . $includeShared); } + /** + * 列举空间,返回bucket列表 + * region 指定区域,global 指定全局空间。 + * 在指定了 region 参数时, + * 如果指定 global 为 true,那么忽略 region 参数指定的区域,返回所有区域的全局空间。 + * 如果没有指定 global 为 true,那么返回指定区域中非全局空间。 + * 在没有指定 region 参数时(包括指定为空""), + * 如果指定 global 为 true,那么返回所有区域的全局空间。 + * 如果没有指定 global 为 true,那么返回指定区域中所有的空间,包括全局空间。 + * 在指定了line为 true 时,只返回 Line 空间;否则,只返回非 Line 空间。 + * share 参数用于指定共享空间。 + */ + + public function listbuckets( + $region = null, + $line = 'false', + $shared = 'false' + ) { + $path = '/v3/buckets?region=' . $region . '&line=' . $line . '&shared=' . $share; + $info = $this->ucPost($path); + return $info; + } + + /** + * 创建空间 + * + * @param $name 创建的空间名 + * @param $region 创建的区域,默认华东 + * + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function createBucket($name, $region = 'z0') + { + $path = '/mkbucketv2/'.$name.'/region/' . $region; + return $this->rsPost($path, null); + } + + /** + * 删除空间 + * + * @param $name 删除的空间名 + * + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function deleteBucket($name) + { + $path = '/drop/'.$name; + return $this->rsPost($path, null); + } + /** * 获取指定空间绑定的所有的域名 * @@ -51,6 +101,34 @@ final class BucketManager return $this->apiGet('/v6/domain/list?tbl=' . $bucket); } + /** + * 获取指定空间的相关信息 + * + * @return string[] 包含空间信息 + */ + public function bucketInfo($bucket) + { + $path = '/v2/bucketInfo?bucket=' . $bucket; + $info = $this->ucPost($path); + return $info; + } + + /** + * 获取指定zone的空间信息列表 + * 在Region 未指定且Global 不为 true 时(包含未指定的情况,下同),返回用户的所有空间。 + * 在指定了 region 参数且 global 不为 true 时,只列举非全局空间。 + * shared 不指定shared参数或指定shared为rw或false时,返回包含具有读写权限空间, + * 指定shared为rd或true时,返回包含具有读权限空间。 + * fs:如果为 true,会返回每个空间当前的文件数和存储量(实时数据)。 + * @return string[] 包含空间信息 + */ + public function bucketInfos($region = null, $shared = 'false', $fs = 'false') + { + $path = '/v2/bucketInfos?region=' . $region . '&shared=' . $shared . '&fs=' . $fs; + $info = $this->ucPost($path); + return $info; + } + /** * 获取空间绑定的域名列表 * @return string[] 包含空间绑定的所有域名 @@ -66,18 +144,23 @@ final class BucketManager * @param $delimiter 指定目录分隔符 * * @return array 包含文件信息的数组,类似:[ - * { - * "hash" => "", - * "key" => "", - * "fsize" => "", - * "putTime" => "" - * }, - * ... - * ] +* { +* "hash" => "", +* "key" => "", +* "fsize" => "", +* "putTime" => "" +* }, +* ... +* ] * @link http://developer.qiniu.com/docs/v6/api/reference/rs/list.html */ - public function listFiles($bucket, $prefix = null, $marker = null, $limit = 1000, $delimiter = null) - { + public function listFiles( + $bucket, + $prefix = null, + $marker = null, + $limit = 1000, + $delimiter = null + ) { $query = array('bucket' => $bucket); \Qiniu\setWithoutEmpty($query, 'prefix', $prefix); \Qiniu\setWithoutEmpty($query, 'marker', $marker); @@ -87,6 +170,493 @@ final class BucketManager return $this->get($url); } + /** + * 列取空间的文件列表 + * + * @param $bucket 空间名 + * @param $prefix 列举前缀 + * @param $marker 列举标识符 + * @param $limit 单次列举个数限制 + * @param $delimiter 指定目录分隔符 + * @param $skipconfirm 是否跳过已删除条目的确认机制 + * + * @return array 包含文件信息的数组,类似:[ +* { +* "hash" => "", +* "key" => "", +* "fsize" => "", +* "putTime" => "" +* }, +* ... +* ] + * @link http://developer.qiniu.com/docs/v6/api/reference/rs/list.html + */ + public function listFilesv2( + $bucket, + $prefix = null, + $marker = null, + $limit = 1000, + $delimiter = null, + $skipconfirm = true + ) { + $query = array('bucket' => $bucket); + \Qiniu\setWithoutEmpty($query, 'prefix', $prefix); + \Qiniu\setWithoutEmpty($query, 'marker', $marker); + \Qiniu\setWithoutEmpty($query, 'limit', $limit); + \Qiniu\setWithoutEmpty($query, 'delimiter', $delimiter); + \Qiniu\setWithoutEmpty($query, 'skipconfirm', $skipconfirm); + $path = '/v2/list?' . http_build_query($query); + $url = $this->getRsfHost() . $path; + $headers = $this->auth->authorization($url, null, 'application/x-www-form-urlencoded'); + $ret = Client::post($url, null, $headers); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + $r = explode("\n", $ret->body); + $pop = array_pop($r); + return array($r, null); + } + + /** + * 设置Referer防盗链 + * + * @param $bucket 空间名 + * @param $mode 0: 表示关闭Referer(使用此选项将会忽略以下参数并将恢复默认值); + * 1: 表示设置Referer白名单; 2:表示设置Referer黑名单 + * @param $norefer 0: 表示不允许空 Refer 访问; 1: 表示允许空 Refer 访问 + * @param $pattern 规则字符串, 当前允许格式分为三种: 一种为空主机头域名, + * 比如 foo.com; 一种是泛域名,比如 *.bar.com; 一种是完全通配符, + * 即一个 *; 多个规则之间用;隔开, 比如: foo.com;*.bar.com;sub.foo.com;*.sub.bar.com + * @param $source_enabled 源站是否支持,默认为0只给CDN配置, 设置为1表示开启源站防盗链 + * + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + // public function referAntiLeech(){ + + // } + + /** + * 增加bucket生命规则 + * + * @param $bucket 空间名 + * @param $name 规则名称 bucket 内唯一,长度小于50,不能为空,只能为 + * 字母、数字、下划线 + * @param $prefix 同一个 bucket 里面前缀不能重复 + * @param $delete_after_days 指定上传文件多少天后删除,指定为0表示不删除, + * 大于0表示多少天后删除,需大于 to_line_after_days + * @param $to_line_after_days 指定文件上传多少天后转低频存储。指定为0表示 + * 不转低频存储,小于0表示上传的文件立即变低频存储 + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function bucketLifecycleRule( + $bucket, + $name, + $prefix, + $delete_after_days, + $to_line_after_days + ) { + $path = '/rules/add'; + if ($bucket) { + $params['bucket'] = $bucket; + } + if ($name) { + $params['name'] = $name; + } + if ($prefix) { + $params['prefix'] = $prefix; + } + if ($delete_after_days) { + $params['delete_after_days'] = $delete_after_days; + } + if ($to_line_after_days) { + $params['to_line_after_days'] = $to_line_after_days; + } + $data = http_build_query($params); + $info = $this->ucPost($path, $data); + return $info; + } + + /** + * 更新bucket生命规则 + * + * @param $bucket 空间名 + * @param $name 规则名称 bucket 内唯一,长度小于50,不能为空,只能为字母、 + * 数字、下划线 + * @param $prefix 同一个 bucket 里面前缀不能重复 + * @param $delete_after_days 指定上传文件多少天后删除,指定为0表示不删除, + * 大于0表示多少天后删除,需大于 to_line_after_days + * @param $to_line_after_days 指定文件上传多少天后转低频存储。指定为0表示不 + * 转低频存储,小于0表示上传的文件立即变低频存储 + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function updateBucketLifecycleRule( + $bucket, + $name, + $prefix, + $delete_after_days, + $to_line_after_days + ) { + $path = '/rules/update'; + if ($bucket) { + $params['bucket'] = $bucket; + } + if ($name) { + $params['name'] = $name; + } + if ($prefix) { + $params['prefix'] = $prefix; + } + if ($delete_after_days) { + $params['delete_after_days'] = $delete_after_days; + } + if ($to_line_after_days) { + $params['to_line_after_days'] = $to_line_after_days; + } + $data = http_build_query($params); + $info = $this->ucPost($path, $data); + return $info; + } + + /** + * 获取bucket生命规则 + * + * @param $bucket 空间名 + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function getBucketLifecycleRules($bucket) + { + $path = '/rules/get?bucket=' . $bucket; + $info = $this->ucGet($path); + return $info; + } + + /** + * 删除bucket生命规则 + * + * @param $bucket 空间名 + * @param $name 规则名称 bucket 内唯一,长度小于50,不能为空, + * 只能为字母、数字、下划线() + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function deleteBucketLifecycleRule($bucket, $name) + { + $path = '/rules/delete'; + if ($bucket) { + $params['bucket'] = $bucket; + } + if ($name) { + $params['name'] = $name; + } + $data = http_build_query($params); + $info = $this->ucPost($path, $data); + return $info; + } + + /** + * 增加bucket事件通知规则 + * + * @param $bucket 空间名 + * @param $name 规则名称 bucket 内唯一,长度小于50,不能为空, + * 只能为字母、数字、下划线() + * @param $prefix 同一个 bucket 里面前缀不能重复 + * @param $suffix 可选,文件配置的后缀 + * @param $event 事件类型,可以指定多个,包括 put,mkfile,delete,copy,move,append, + * disable,enable,deleteMarkerCreate + * @param $callbackURL 通知URL,可以指定多个,失败依次重试 + * @param $access_key 可选,设置的话会对通知请求用对应的ak、sk进行签名 + * @param $host 可选,通知请求的host + * + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function putBucketEvent( + $bucket, + $name, + $prefix, + $suffix, + $event, + $callbackURL, + $access_key = null, + $host = null + ) { + $path = '/events/add'; + if ($bucket) { + $params['bucket'] = $bucket; + } + if ($name) { + $params['name'] = $name; + } + if ($prefix) { + $params['prefix'] = $prefix; + } + if ($suffix) { + $params['suffix'] = $suffix; + } + if ($callbackURL) { + $params['callbackURL'] = $callbackURL; + } + if ($access_key) { + $params['access_key'] = $access_key; + } + if ($host) { + $params['host'] = $host; + } + $data = http_build_query($params); + if ($event) { + $eventpath = ""; + foreach ($event as $key => $value) { + $eventpath .= "&event=$value"; + } + $data .= $eventpath; + } + $info = $this->ucPost($path, $data); + return $info; + } + + /** + * 更新bucket事件通知规则 + * + * @param $bucket 空间名 + * @param $name 规则名称 bucket 内唯一,长度小于50,不能为空, + * 只能为字母、数字、下划线() + * @param $prefix 同一个 bucket 里面前缀不能重复 + * @param $suffix 可选,文件配置的后缀 + * @param $event 事件类型,可以指定多个,包括 put,mkfile,delete,copy,move,append,disable, + * enable,deleteMarkerCreate + * @param $callbackURL 通知URL,可以指定多个,失败依次重试 + * @param $access_key 可选,设置的话会对通知请求用对应的ak、sk进行签名 + * @param $host 可选,通知请求的host + * + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function updateBucketEvent( + $bucket, + $name, + $prefix, + $suffix, + $event, + $callbackURL, + $access_key = null, + $host = null + ) { + $path = '/events/update'; + if ($bucket) { + $params['bucket'] = $bucket; + } + if ($name) { + $params['name'] = $name; + } + if ($prefix) { + $params['prefix'] = $prefix; + } + if ($suffix) { + $params['suffix'] = $suffix; + } + if ($event) { + $params['event'] = $event; + } + if ($callbackURL) { + $params['callbackURL'] = $callbackURL; + } + if ($access_key) { + $params['access_key'] = $access_key; + } + if ($host) { + $params['host'] = $host; + } + $data = http_build_query($params); + $info = $this->ucPost($path, $data); + return $info; + } + + /** + * 获取bucket事件通知规则 + * + * @param $bucket 空间名 + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function getBucketEvents($bucket) + { + $path = '/events/get?bucket=' . $bucket; + $info = $this->ucGet($path); + return $info; + } + + /** + * 删除bucket事件通知规则 + * + * @param $bucket 空间名 + * @param $name 规则名称 bucket 内唯一,长度小于50,不能为空, + * 只能为字母、数字、下划线 + * @return mixed 成功返回NULL,失败返回对象Qiniu\Http\Error + */ + public function deleteBucketEvent($bucket, $name) + { + $path = '/events/delete'; + if ($bucket) { + $params['bucket'] = $bucket; + } + if ($name) { + $params['name'] = $name; + } + $data = http_build_query($params); + $info = $this->ucPost($path, $data); + return $info; + } + + /** + * 设置bucket的跨域信息,最多允许设置10条跨域规则。 + * 对于同一个域名如果设置了多条规则,那么按顺序使用第一条匹配的规则去生成返回值。 + * 对于简单跨域请求,只匹配 Origin; + * allowed_orgin: 允许的域名。必填;支持通配符*;*表示全部匹配;只有第一个*生效; + * 需要设置"Scheme";大小写敏感。例如 + * 规则:http://*.abc.*.com 请求:"http://test.abc.test.com" 结果:不通过 + * 规则:"http://abc.com" 请求:"https://abc.com"/"abc.com" 结果:不通过 + * 规则:"abc.com" 请求:"http://abc.com" 结果:不通过 + * allowed_method: 允许的方法。必填;不支持通配符;大小写不敏感; + * allowed_header: 允许的header。选填;支持通配符*, + * 但只能是单独的*,表示允许全部header,其他*不生效; + * 空则不允许任何header;大小写不敏感; + * exposed_header: 暴露的header。选填;不支持通配符; + * X-Log, X-Reqid是默认会暴露的两个header; + * 其他的header如果没有设置,则不会暴露;大小写不敏感; + * max_age: 结果可以缓存的时间。选填;空则不缓存; + * allowed_credentials:该配置不支持设置,默认为true。 + * 备注:如果没有设置任何corsRules,那么默认允许所有的跨域请求 + */ + // public function putCorsRules(string $bucket, array $params) + // { + // $path = '/corsRules/set/' . $bucket; + // $data = json_encode($params); + // $info = $this->ucPost($path, $data); + // return $info; + // } + + /** + * 获取bucket的跨域信息 + * $bucket 空间名 + */ + public function getCorsRules($bucket) + { + $path = '/corsRules/get/' . $bucket; + $info = $this->ucGet($path); + return $info; + } + + /** + * 设置回源规则 + * 使用该API设置源站优先级高于/image设置的源站,即IO优先读取source接口设置的源站配置, + * 如果存在会忽略/image设置的源站 + * Bucket 空间名 + * Host(可选)回源Host + * RetryCodes(可选),镜像回源时源站返回Code可以重试,最多指定3个,当前只支持4xx错误码重试 + * SourceQiniuAK,SourceQiniuSK(可选)如果存在将在回源时对URL进行签名,客户源站可以验证 + * 以保证请求来自Qiniu服务器 + * Expires(可选) 签名过期时间,如果不设置默认为1小时 + * Addr 回源地址,不可重复。 + * Weight 权重,范围限制1-100,不填默认为1,回源时会根据所有源的权重值进行源站选择, + * 主备源会分开计算. + * Backup 是否备用回源,回源优先尝试主源 + */ + // public function putBucktSourceConfig(array $params) + // { + // $path = '/mirrorConfig/set'; + // $data = json_encode($params); + // $info = $this->ucPostV2($path, $data); + // return $info; + // } + + /** + * 获取空间回源配置 + */ + public function getBucktSourceConfig(array $params) + { + $path = '/mirrorConfig/get'; + $data = json_encode($params); + $info = $this->ucPostV2($path, $data); + return $info; + } + + /** + * 开关原图保护 + * mode 为1表示开启原图保护,0表示关闭 + */ + public function putBucketAccessStyleMode($bucket, $mode) + { + $path = '/accessMode/' . $bucket . '/mode/' . $mode; + $info = $this->ucPost($path, null); + return $info; + } + + /** + * 设置私有属性 + * private为0表示公开,为1表示私有 + */ + public function putBucketAccessMode($bucket, $private) + { + $path = '/bucket/' . $bucket . '/private/' . $private; + $info = $this->ucPost($path, null); + return $info; + } + + /** + * 设置referer防盗链 + * bucket=: bucket 名 + * mode=: + * 0: 表示关闭Referer(使用此选项将会忽略以下参数并将恢复默认值); + * 1: 表示设置Referer白名单; 2: 表示设置Referer黑名单 + * norefer=: 0: 表示不允许空 Refer 访问; + * 1: 表示允许空 Refer 访问 + * pattern=: 规则字符串, 当前允许格式分为三种: + * 一种为空主机头域名, 比如 foo.com; + * 一种是泛域名, 比如 *.bar.com; 一种是完全通配符, 即一个 *; + * 多个规则之间用;隔开, 比如: foo.com;*.bar.com;sub.foo.com;*.sub.bar.com + * 空主机头域名可以是多级域名,比如 foo.bar.com。 + * 多个域名之间不允许夹带空白字符。 + * source_enabled=:1 + */ + public function putReferAntiLeech($bucket, $mode, $norefer, $pattern, $enabled = 1) + { + $path = "/referAntiLeech?bucket=$bucket&mode=$mode&norefer=$norefer&pattern=$pattern&source_enabled=$enabled"; + $info = $this->ucPost($path, null); + return $info; + } + + /** + * 设置Bucket的maxAge + * maxAge为0或者负数表示为默认值(31536000) + */ + public function putBucketMaxAge($bucket, $maxAge) + { + $path = '/maxAge?bucket=' . $bucket . '&maxAge=' . $maxAge; + $info = $this->ucPost($path, null); + return $info; + } + + /** + * 设置配额 + * : 空间名称,不支持授权空间 + * : 空间存储量配额,参数传入0或不传表示不更改当前配置,传入-1表示取消限额, + * 新创建的空间默认没有限额。 + * : 空间文件数配额,参数含义同 + */ + public function putBucketQuota($bucket, $size, $count) + { + $path = '/setbucketquota/' . $bucket . '/size/' . $size . '/count/' . $count; + $info = $this->apiPost($path, null); + return $info; + } + + /** + * 获取配额 + * bucket 空间名称 + */ + public function getBucketQuota($bucket) + { + $path = '/getbucketquota/' . $bucket; + $info = $this->apiPost($path, null); + return $info; + } + /** * 获取资源的元信息,但不返回文件内容 * @@ -94,13 +664,13 @@ final class BucketManager * @param $key 待获取资源的文件名 * * @return array 包含文件信息的数组,类似: - * [ - * "hash" => "", - * "key" => "", - * "fsize" => , - * "putTime" => "" - * "fileType" => - * ] +* [ +* "hash" => "", +* "key" => "", +* "fsize" => , +* "putTime" => "" +* "fileType" => +* ] * * @link http://developer.qiniu.com/docs/v6/api/reference/rs/stat.html */ @@ -142,7 +712,7 @@ final class BucketManager } /** - * 给资源进行重命名,本质为move操作。 + * 对资源进行复制。 * * @param $from_bucket 待操作资源所在空间 * @param $from_key 待操作资源文件名 @@ -188,7 +758,7 @@ final class BucketManager } /** - * 主动修改指定资源的文件类型 + * 主动修改指定资源的文件元信息 * * @param $bucket 待操作资源所在空间 * @param $key 待操作资源文件名 @@ -368,12 +938,39 @@ final class BucketManager return $scheme . Config::API_HOST; } + private function getUcHost() + { + $scheme = "http://"; + if ($this->config->useHTTPS == true) { + $scheme = "https://"; + } + return $scheme . Config::UC_HOST; + } + private function rsPost($path, $body = null) { $url = $this->getRsHost() . $path; return $this->post($url, $body); } + private function apiPost($path, $body = null) + { + $url = $this->getApiHost() . $path; + return $this->post($url, $body); + } + + private function ucPost($path, $body = null) + { + $url = $this->getUcHost() . $path; + return $this->post($url, $body); + } + + private function ucGet($path) + { + $url = $this->getUcHost() . $path; + return $this->get($url); + } + private function apiGet($path) { $url = $this->getApiHost() . $path; @@ -407,6 +1004,24 @@ final class BucketManager return array($r, null); } + private function ucPostV2($path, $body) + { + $url = $this->getUcHost() . $path; + return $this->postV2($url, $body); + } + + private function postV2($url, $body) + { + $headers = $this->auth->authorizationV2($url, 'POST', $body, 'application/json'); + $headers["Content-Type"] = 'application/json'; + $ret = Client::post($url, $body, $headers); + if (!$ret->ok()) { + return array(null, new Error($url, $ret)); + } + $r = ($ret->body === null) ? array() : $ret->json(); + return array($r, null); + } + public static function buildBatchCopy($source_bucket, $key_pairs, $target_bucket, $force) { return self::twoKeyBatch('/copy', $source_bucket, $key_pairs, $target_bucket, $force); diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php index 5c3361f96..40928df12 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php @@ -31,12 +31,11 @@ final class FormUploader $config, $params, $mime, - $fname + $fname, + $checkCrc ) { - $fields = array('token' => $upToken); if ($key === null) { - $fname='nullkey'; } else { $fields['key'] = $key; } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php index 209df11ad..293be3e9d 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php @@ -46,7 +46,8 @@ final class UploadManager $data, $params = null, $mime = 'application/octet-stream', - $fname = null + $fname = null, + $checkCrc = false ) { $params = self::trimParams($params); @@ -57,7 +58,8 @@ final class UploadManager $this->config, $params, $mime, - $fname + $fname, + $checkCrc ); } @@ -108,7 +110,8 @@ final class UploadManager $this->config, $params, $mime, - basename($filePath) + basename($filePath), + $checkCrc ); } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Zone.php b/vendor/qiniu/php-sdk/src/Qiniu/Zone.php index 9b142dcc7..7af0e3f54 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Zone.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Zone.php @@ -1,197 +1,47 @@ srcUpHosts = $srcUpHosts; - $this->cdnUpHosts = $cdnUpHosts; - $this->rsHost = $rsHost; - $this->rsfHost = $rsfHost; - $this->apiHost = $apiHost; - $this->iovipHost = $iovipHost; - } - - //华东机房 - public static function zone0() + public static function zonez0() { - $Zone_z0 = new Zone( - array("up.qiniup.com", 'up-jjh.qiniup.com', 'up-xs.qiniup.com'), - array('upload.qiniup.com', 'upload-jjh.qiniup.com', 'upload-xs.qiniup.com'), - 'rs.qbox.me', - 'rsf.qbox.me', - 'api.qiniu.com', - 'iovip.qbox.me' - ); - return $Zone_z0; + return parent::regionHuadong(); } - //华东机房内网上传 - public static function zoneZ0() + public static function zonez1() { - $Zone_z01 = new Zone( - array("free-qvm-z0-xs.qiniup.com"), - 'rs.qbox.me', - 'rsf.qbox.me', - 'api.qiniu.com', - 'iovip.qbox.me' - ); - return $Zone_z01; + return parent::regionHuabei(); } - //华北机房内网上传 - public static function zoneZ1() + public static function zonez2() { - $Zone_z12 = new Zone( - array("free-qvm-z1-zz.qiniup.com"), - "rs-z1.qbox.me", - "rsf-z1.qbox.me", - "api-z1.qiniu.com", - "iovip-z1.qbox.me" - ); - return $Zone_z12; + return parent::regionHuanan(); } - //华北机房 - public static function zone1() - { - $Zone_z1 = new Zone( - array('up-z1.qiniup.com'), - array('upload-z1.qiniup.com'), - "rs-z1.qbox.me", - "rsf-z1.qbox.me", - "api-z1.qiniu.com", - "iovip-z1.qbox.me" - ); - - return $Zone_z1; - } - - //华南机房 - public static function zone2() - { - $Zone_z2 = new Zone( - array('up-z2.qiniup.com', 'up-dg.qiniup.com', 'up-fs.qiniup.com'), - array('upload-z2.qiniup.com', 'upload-dg.qiniup.com', 'upload-fs.qiniup.com'), - "rs-z2.qbox.me", - "rsf-z2.qbox.me", - "api-z2.qiniu.com", - "iovip-z2.qbox.me" - ); - return $Zone_z2; - } - - //北美机房 - public static function zoneNa0() - { - //北美机房 - $Zone_na0 = new Zone( - array('up-na0.qiniup.com'), - array('upload-na0.qiniup.com'), - "rs-na0.qbox.me", - "rsf-na0.qbox.me", - "api-na0.qiniu.com", - "iovip-na0.qbox.me" - ); - return $Zone_na0; - } - - //新加坡机房 public static function zoneAs0() { - //新加坡机房 - $Zone_as0 = new Zone( - array('up-as0.qiniup.com'), - array('upload-as0.qiniup.com'), - "rs-as0.qbox.me", - "rsf-as0.qbox.me", - "api-as0.qiniu.com", - "iovip-as0.qbox.me" - ); - return $Zone_as0; + return parent::regionSingapore(); + } + + public static function zoneNa0() + { + return parent::regionNorthAmerica(); + } + + public static function qvmZonez0() + { + return parent::qvmRegionHuadong(); + } + + public static function qvmZonez1() + { + return parent::qvmRegionHuabei(); } - /* - * GET /v2/query?ak=&&bucket= - **/ public static function queryZone($ak, $bucket) { - $zone = new Zone(); - $url = Config::UC_HOST . '/v2/query' . "?ak=$ak&bucket=$bucket"; - $ret = Client::Get($url); - if (!$ret->ok()) { - return array(null, new Error($url, $ret)); - } - $r = ($ret->body === null) ? array() : $ret->json(); - //print_r($ret); - //parse zone; - - $iovipHost = $r['io']['src']['main'][0]; - $zone->iovipHost = $iovipHost; - $accMain = $r['up']['acc']['main'][0]; - array_push($zone->cdnUpHosts, $accMain); - if (isset($r['up']['acc']['backup'])) { - foreach ($r['up']['acc']['backup'] as $key => $value) { - array_push($zone->cdnUpHosts, $value); - } - } - $srcMain = $r['up']['src']['main'][0]; - array_push($zone->srcUpHosts, $srcMain); - if (isset($r['up']['src']['backup'])) { - foreach ($r['up']['src']['backup'] as $key => $value) { - array_push($zone->srcUpHosts, $value); - } - } - - //set specific hosts - if (strstr($zone->iovipHost, "z1") !== false) { - $zone->rsHost = "rs-z1.qbox.me"; - $zone->rsfHost = "rsf-z1.qbox.me"; - $zone->apiHost = "api-z1.qiniu.com"; - } elseif (strstr($zone->iovipHost, "z2") !== false) { - $zone->rsHost = "rs-z2.qbox.me"; - $zone->rsfHost = "rsf-z2.qbox.me"; - $zone->apiHost = "api-z2.qiniu.com"; - } elseif (strstr($zone->iovipHost, "na0") !== false) { - $zone->rsHost = "rs-na0.qbox.me"; - $zone->rsfHost = "rsf-na0.qbox.me"; - $zone->apiHost = "api-na0.qiniu.com"; - } elseif (strstr($zone->iovipHost, "as0") !== false) { - $zone->rsHost = "rs-as0.qbox.me"; - $zone->rsfHost = "rsf-as0.qbox.me"; - $zone->apiHost = "api-as0.qiniu.com"; - } else { - $zone->rsHost = "rs.qbox.me"; - $zone->rsfHost = "rsf.qbox.me"; - $zone->apiHost = "api.qiniu.com"; - } - - return $zone; + return parent::queryRegion($ak, $bucket); } } diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/AuthTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/AuthTest.php index 712cbd57a..f53b57f3b 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/AuthTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/AuthTest.php @@ -5,17 +5,18 @@ namespace Qiniu { function time() { return isset($_SERVER['override_qiniu_auth_time']) - ? 1234567890 + ? 2234567890 : \time(); } } namespace Qiniu\Tests { use Qiniu\Auth; + use PHPUnit\Framework\TestCase; // @codingStandardsIgnoreEnd - class AuthTest extends \PHPUnit_Framework_TestCase + class AuthTest extends TestCase { public function testSign() @@ -29,7 +30,10 @@ namespace Qiniu\Tests { { global $dummyAuth; $token = $dummyAuth->signWithData('test'); - $this->assertEquals('abcdefghklmnopq:-jP8eEV9v48MkYiBGs81aDxl60E=:dGVzdA==', $token); + $this->assertEquals( + 'abcdefghklmnopq:-jP8eEV9v48MkYiBGs81aDxl60E=:dGVzdA==', + $token + ); } public function testSignRequest() @@ -39,7 +43,10 @@ namespace Qiniu\Tests { $this->assertEquals('abcdefghklmnopq:cFyRVoWrE3IugPIMP5YJFTO-O-Y=', $token); $ctype = 'application/x-www-form-urlencoded'; $token = $dummyAuth->signRequest('http://www.qiniu.com?go=1', 'test', $ctype); - $this->assertEquals($token, 'abcdefghklmnopq:svWRNcacOE-YMsc70nuIYdaa1e4='); + $this->assertEquals( + $token, + 'abcdefghklmnopq:svWRNcacOE-YMsc70nuIYdaa1e4=' + ); } public function testPrivateDownloadUrl() @@ -47,7 +54,7 @@ namespace Qiniu\Tests { global $dummyAuth; $_SERVER['override_qiniu_auth_time'] = true; $url = $dummyAuth->privateDownloadUrl('http://www.qiniu.com?go=1'); - $expect = 'http://www.qiniu.com?go=1&e=1234571490&token=abcdefghklmnopq:8vzBeLZ9W3E4kbBLFLW0Xe0u7v4='; + $expect = 'http://www.qiniu.com?go=1&e=2234571490&token=abcdefghklmnopq:Hvi3R79Sl6wZy1c331nv0iIFoJk='; $this->assertEquals($expect, $url); unset($_SERVER['override_qiniu_auth_time']); } @@ -58,14 +65,10 @@ namespace Qiniu\Tests { $_SERVER['override_qiniu_auth_time'] = true; $token = $dummyAuth->uploadToken('1', '2', 3600, array('endUser' => 'y')); // @codingStandardsIgnoreStart - $exp = 'abcdefghklmnopq:yyeexeUkPOROoTGvwBjJ0F0VLEo=:eyJlbmRVc2VyIjoieSIsInNjb3BlIjoiMToyIiwiZGVhZGxpbmUiOjEyMzQ1NzE0OTB9'; + $exp = 'abcdefghklmnopq:GracWhW1iGwVL6haVH5dr4gjqeo=:eyJlbmRVc2VyIjoieSIsInNjb3BlIjoiMToyIiwiZGVhZGxpbmUiOjIyMzQ1NzE0OTB9'; // @codingStandardsIgnoreEnd $this->assertEquals($exp, $token); unset($_SERVER['override_qiniu_auth_time']); } - - public function testVerifyCallback() - { - } } } diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Base64Test.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Base64Test.php index 6d6335307..b2f372645 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Base64Test.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Base64Test.php @@ -2,8 +2,9 @@ namespace Qiniu\Tests; use Qiniu; +use PHPUnit\Framework\TestCase; -class Base64Test extends \PHPUnit_Framework_TestCase +class Base64Test extends TestCase { public function testUrlSafe() { diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/BucketTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/BucketTest.php index 534d8c2f7..7e8d64541 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/BucketTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/BucketTest.php @@ -2,8 +2,9 @@ namespace Qiniu\Tests; use Qiniu\Storage\BucketManager; +use PHPUnit\Framework\TestCase; -class BucketTest extends \PHPUnit_Framework_TestCase +class BucketTest extends TestCase { protected $bucketManager; protected $dummyBucketManager; @@ -11,7 +12,7 @@ class BucketTest extends \PHPUnit_Framework_TestCase protected $key; protected $key2; - protected function setUp() + protected function setUp(): void { global $bucketName; global $key; diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php index 5a858dfa2..020c868d7 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php @@ -10,14 +10,15 @@ namespace Qiniu\Tests; use Qiniu\Cdn\CdnManager; use Qiniu\Http\Client; +use PHPUnit\Framework\TestCase; -class CdnManagerTest extends \PHPUnit_Framework_TestCase +class CdnManagerTest extends TestCase { protected $cdnManager; protected $encryptKey; protected $imgUrl; - protected function setUp() + protected function setUp(): void { global $timestampAntiLeechEncryptKey; global $customDomain; diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Crc32Test.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Crc32Test.php index bfb36da87..3f1ba80ab 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Crc32Test.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/Crc32Test.php @@ -2,8 +2,9 @@ namespace Qiniu\Tests; use Qiniu; +use PHPUnit\Framework\TestCase; -class Crc32Test extends \PHPUnit_Framework_TestCase +class Crc32Test extends TestCase { public function testData() { diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php index 82990f2a1..7a34f45f5 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php @@ -2,13 +2,14 @@ namespace Qiniu\Tests; use Qiniu\Http\Client; +use PHPUnit\Framework\TestCase; -class DownloadTest extends \PHPUnit_Framework_TestCase +class DownloadTest extends TestCase { public function test() { global $testAuth; - $base_url = 'http://private-res.qiniudn.com/gogopher.jpg'; + $base_url = 'http://pojiwyou0.bkt.clouddn.com/demo.png'; $private_url = $testAuth->privateDownloadUrl($base_url); $response = Client::get($private_url); $this->assertEquals(200, $response->statusCode); @@ -17,7 +18,7 @@ class DownloadTest extends \PHPUnit_Framework_TestCase public function testFop() { global $testAuth; - $base_url = 'http://private-res.qiniudn.com/gogopher.jpg?exif'; + $base_url = 'http://pojiwyou0.bkt.clouddn.com/demo.png?imageInfo'; $private_url = $testAuth->privateDownloadUrl($base_url); $response = Client::get($private_url); $this->assertEquals(200, $response->statusCode); diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/EtagTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/EtagTest.php index 42a14993e..bee121be5 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/EtagTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/EtagTest.php @@ -2,8 +2,9 @@ namespace Qiniu\Tests; use Qiniu\Etag; +use PHPUnit\Framework\TestCase; -class EtagTest extends \PHPUnit_Framework_TestCase +class EtagTest extends TestCase { public function test0M() { diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php index e1ea730e8..8a4c5edb7 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php @@ -3,13 +3,14 @@ namespace Qiniu\Tests; use Qiniu\Processing\Operation; use Qiniu\Processing\PersistentFop; +use PHPUnit\Framework\TestCase; -class FopTest extends \PHPUnit_Framework_TestCase +class FopTest extends TestCase { public function testExifPub() { - $fop = new Operation('testres.qiniudn.com'); - list($exif, $error) = $fop->execute('gogopher.jpg', 'exif'); + $fop = new Operation('7xkv1q.com1.z0.glb.clouddn.com'); + list($exif, $error) = $fop->execute('grape.jpg', 'exif'); $this->assertNull($error); $this->assertNotNull($exif); } @@ -26,12 +27,12 @@ class FopTest extends \PHPUnit_Framework_TestCase public function testbuildUrl() { $fops = 'imageView2/2/h/200'; - $fop = new Operation('testres.qiniudn.com'); - $url = $fop->buildUrl('gogopher.jpg', $fops); - $this->assertEquals($url, 'http://testres.qiniudn.com/gogopher.jpg?imageView2/2/h/200'); + $fop = new Operation('7xkv1q.com1.z0.glb.clouddn.com'); + $url = $fop->buildUrl('grape.jpg', $fops); + $this->assertEquals($url, 'http://7xkv1q.com1.z0.glb.clouddn.com/grape.jpg?imageView2/2/h/200'); $fops = array('imageView2/2/h/200', 'imageInfo'); - $url = $fop->buildUrl('gogopher.jpg', $fops); - $this->assertEquals($url, 'http://testres.qiniudn.com/gogopher.jpg?imageView2/2/h/200|imageInfo'); + $url = $fop->buildUrl('grape.jpg', $fops); + $this->assertEquals($url, 'http://7xkv1q.com1.z0.glb.clouddn.com/grape.jpg?imageView2/2/h/200|imageInfo'); } } diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FormUpTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FormUpTest.php index 4813eed97..d3d0ecf51 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FormUpTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FormUpTest.php @@ -4,14 +4,15 @@ namespace Qiniu\Tests; use Qiniu\Storage\FormUploader; use Qiniu\Storage\UploadManager; use Qiniu\Config; +use PHPUnit\Framework\TestCase; -class FormUpTest extends \PHPUnit_Framework_TestCase +class FormUpTest extends TestCase { protected $bucketName; protected $auth; protected $cfg; - protected function setUp() + protected function setUp(): void { global $bucketName; $this->bucketName = $bucketName; @@ -24,7 +25,16 @@ class FormUpTest extends \PHPUnit_Framework_TestCase public function testData() { $token = $this->auth->uploadToken($this->bucketName); - list($ret, $error) = FormUploader::put($token, 'formput', 'hello world', $this->cfg, null, 'text/plain', null); + list($ret, $error) = FormUploader::put( + $token, + 'formput', + 'hello world', + $this->cfg, + null, + 'text/plain', + null, + false + ); $this->assertNull($error); $this->assertNotNull($ret['hash']); } @@ -33,7 +43,7 @@ class FormUpTest extends \PHPUnit_Framework_TestCase { $upManager = new UploadManager(); $token = $this->auth->uploadToken($this->bucketName); - list($ret, $error) = $upManager->put($token, 'formput', 'hello world', null, 'text/plain', null); + list($ret, $error) = $upManager->put($token, 'formput', 'hello world', null, 'text/plain', null, false); $this->assertNull($error); $this->assertNotNull($ret['hash']); } @@ -42,7 +52,7 @@ class FormUpTest extends \PHPUnit_Framework_TestCase { $key = 'formPutFile'; $token = $this->auth->uploadToken($this->bucketName, $key); - list($ret, $error) = FormUploader::putFile($token, $key, __file__, $this->cfg, null, 'text/plain', null); + list($ret, $error) = FormUploader::putFile($token, $key, __file__, $this->cfg, null, 'text/plain', null, false); $this->assertNull($error); $this->assertNotNull($ret['hash']); } @@ -52,7 +62,7 @@ class FormUpTest extends \PHPUnit_Framework_TestCase $key = 'formPutFile'; $token = $this->auth->uploadToken($this->bucketName, $key); $upManager = new UploadManager(); - list($ret, $error) = $upManager->putFile($token, $key, __file__, null, 'text/plain', null); + list($ret, $error) = $upManager->putFile($token, $key, __file__, null, 'text/plain', null, false); $this->assertNull($error); $this->assertNotNull($ret['hash']); } diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/HttpTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/HttpTest.php index e2ab5fc6d..4e4f157d6 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/HttpTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/HttpTest.php @@ -2,8 +2,9 @@ namespace Qiniu\Tests; use Qiniu\Http\Client; +use PHPUnit\Framework\TestCase; -class HttpTest extends \PHPUnit_Framework_TestCase +class HttpTest extends TestCase { public function testGet() { diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ImageUrlBuilderTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ImageUrlBuilderTest.php index fca87b6fe..486323cb3 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ImageUrlBuilderTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ImageUrlBuilderTest.php @@ -2,6 +2,8 @@ namespace Qiniu\Tests; +use PHPUnit\Framework\TestCase; + /** * imageprocess test * @@ -9,7 +11,7 @@ namespace Qiniu\Tests; * @subpackage test * @author Sherlock Ren */ -class ImageUrlBuilderTest extends \PHPUnit_Framework_TestCase +class ImageUrlBuilderTest extends TestCase { /** * 缩略图测试 diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/PfopTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/PfopTest.php index d03b3f6e9..adb123b68 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/PfopTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/PfopTest.php @@ -3,8 +3,9 @@ namespace Qiniu\Tests; use Qiniu\Processing\Operation; use Qiniu\Processing\PersistentFop; +use PHPUnit\Framework\TestCase; -class PfopTest extends \PHPUnit_Framework_TestCase +class PfopTest extends TestCase { public function testPfop() { diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ResumeUpTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ResumeUpTest.php index 00008d457..32828b971 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ResumeUpTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ResumeUpTest.php @@ -5,13 +5,14 @@ use Qiniu\Storage\ResumeUploader; use Qiniu\Storage\UploadManager; use Qiniu\Config; use Qiniu\Zone; +use PHPUnit\Framework\TestCase; -class ResumeUpTest extends \PHPUnit_Framework_TestCase +class ResumeUpTest extends TestCase { protected $bucketName; protected $auth; - protected function setUp() + protected function setUp(): void { global $bucketName; $this->bucketName = $bucketName; diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ZoneTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ZoneTest.php index d32875bd2..7e06c4479 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ZoneTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/ZoneTest.php @@ -3,8 +3,9 @@ namespace Qiniu\Tests; use Qiniu; use Qiniu\Zone; +use PHPUnit\Framework\TestCase; -class ZoneTest extends \PHPUnit_Framework_TestCase +class ZoneTest extends TestCase { protected $zone; protected $zoneHttps; @@ -15,7 +16,7 @@ class ZoneTest extends \PHPUnit_Framework_TestCase protected $bucketNameNA; - protected function setUp() + protected function setUp(): void { global $bucketName; $this->bucketName = $bucketName; diff --git a/vendor/qiniu/php-sdk/tests/bootstrap.php b/vendor/qiniu/php-sdk/tests/bootstrap.php index 5bd8b0569..5abb8c78f 100644 --- a/vendor/qiniu/php-sdk/tests/bootstrap.php +++ b/vendor/qiniu/php-sdk/tests/bootstrap.php @@ -9,8 +9,8 @@ $secretKey = getenv('QINIU_SECRET_KEY'); $testAuth = new Auth($accessKey, $secretKey); $bucketName = 'phpsdk'; -$key = 'php-logo.png'; -$key2 = 'niu.jpg'; +$key = '1503385451.png'; +$key2 = '1503385568.png'; $bucketNameBC = 'phpsdk-bc'; $bucketNameNA = 'phpsdk-na'; @@ -21,7 +21,7 @@ $dummyAuth = new Auth($dummyAccessKey, $dummySecretKey); //cdn $timestampAntiLeechEncryptKey = getenv('QINIU_TIMESTAMP_ENCRPTKEY'); -$customDomain = "http://phpsdk.qiniuts.com"; +$customDomain = "http://phpsdk.support2technical.me"; $tid = getenv('TRAVIS_JOB_NUMBER'); if (!empty($tid)) { diff --git a/vendor/zoujingli/think-library/src/Controller.php b/vendor/zoujingli/think-library/src/Controller.php index b4929ab1b..960496f83 100644 --- a/vendor/zoujingli/think-library/src/Controller.php +++ b/vendor/zoujingli/think-library/src/Controller.php @@ -15,6 +15,7 @@ namespace library; use library\tools\Csrf; +use think\exception\HttpResponseException; /** * 标准控制器基类 @@ -42,11 +43,10 @@ class Controller extends \stdClass * 表单CSRF验证状态 * @var boolean */ - private $_csrf = false; + private $csrf = false; /** * Controller constructor. - * @throws \think\Exception */ public function __construct() { @@ -94,7 +94,7 @@ class Controller extends \stdClass public function error($info, $data = [], $code = 0) { $result = ['code' => $code, 'info' => $info, 'data' => $data]; - throw new \think\exception\HttpResponseException(json($result)); + throw new HttpResponseException(json($result)); } /** @@ -106,8 +106,8 @@ class Controller extends \stdClass public function success($info, $data = [], $code = 1) { $result = ['code' => $code, 'info' => $info, 'data' => $data]; - if ($this->_csrf) Csrf::clearFormToken(Csrf::getToken()); - throw new \think\exception\HttpResponseException(json($result)); + if ($this->csrf) Csrf::clearFormToken(Csrf::getToken()); + throw new HttpResponseException(json($result)); } /** @@ -118,7 +118,7 @@ class Controller extends \stdClass */ public function redirect($url, $vars = [], $code = 301) { - throw new \think\exception\HttpResponseException(redirect($url, $vars, $code)); + throw new HttpResponseException(redirect($url, $vars, $code)); } /** @@ -130,10 +130,10 @@ class Controller extends \stdClass public function fetch($tpl = '', $vars = [], $node = null) { foreach ($this as $name => $value) $vars[$name] = $value; - if ($this->_csrf) { + if ($this->csrf) { Csrf::fetchTemplate($tpl, $vars, $node); } else { - throw new \think\exception\HttpResponseException(view($tpl, $vars)); + throw new HttpResponseException(view($tpl, $vars)); } } @@ -182,7 +182,7 @@ class Controller extends \stdClass */ protected function applyCsrfToken($return = false) { - $this->_csrf = true; + $this->csrf = true; if ($this->request->isPost() && !Csrf::checkFormToken()) { if ($return) return false; $this->error('表单令牌验证失败,请刷新页面再试!'); diff --git a/vendor/zoujingli/think-library/src/File.php b/vendor/zoujingli/think-library/src/File.php index 11716687c..5a9f684fd 100644 --- a/vendor/zoujingli/think-library/src/File.php +++ b/vendor/zoujingli/think-library/src/File.php @@ -15,22 +15,30 @@ namespace library; use library\tools\Options; +use think\Exception; +use think\facade\Log; /** * 文件管理逻辑 * Class File * @package library - * @method bool has($name) static 判断文件上否已经上传 - * @method array save($name, $content) static 保存二进制文件 - * @method string url($name) static 获取文件对应地址 - * @method string get($name) static 获取文件二进制内容 - * @method string base($name) static 获取文件存储基础目录 - * @method string remove($name) static 删除已经上传的文件 - * @method string upload($client) static 获取文件上传地址 - * @method string setBucket($name) static 动态创建指定空间名称 + * @method bool has($name, $safe = false) static 判断文件是否已经上传 + * @method array save($name, $content, $safe = false) static 保存二进制文件 + * @method array info($name, $safe = false) static 获取文件信息 + * @method string url($name, $safe = false) static 获取文件URL地址 + * @method string get($name, $safe = false) static 获取文件二进制内容 + * @method string base($name, $safe = false) static 获取文件存储根目录 + * @method string path($name, $safe = false) static 获取文件存储物理路径 + * @method string remove($name, $safe = false) static 删除已经上传的文件 + * @method string upload($client = false) static 获取文件上传目标地址 + * @method string setBucket($name) static 阿里云OSS专属创建Bucket空间 */ class File { + const DEVER_LOCAL = 'local'; + const DERVER_QINIU = 'qiniu'; + const DERVER_ALIOSS = 'oss'; + /** * 当前配置对象 * @var Options @@ -77,21 +85,21 @@ class File * @param string $name * @param array $arguments * @return mixed - * @throws \think\Exception + * @throws Exception */ public static function __callStatic($name, $arguments) { if (method_exists($class = self::instance(self::$config->get('storage_type')), $name)) { return call_user_func_array([$class, $name], $arguments); } - throw new \think\Exception("File driver method not exists: " . get_class($class) . "->{$name}"); + throw new Exception("File driver method not exists: " . get_class($class) . "->{$name}"); } /** * 设置文件驱动名称 * @param string $name * @return \library\driver\Local - * @throws \think\Exception + * @throws Exception */ public static function instance($name) { @@ -101,7 +109,7 @@ class File if (class_exists($object = __NAMESPACE__ . "\\driver\\{$class}")) { return self::$object[$class] = new $object; } - throw new \think\Exception("File driver [{$class}] does not exist."); + throw new Exception("File driver [{$class}] does not exist."); } /** @@ -167,7 +175,7 @@ class File if (empty($force) && $file->has($name)) return $file->info($name); return $file->save($name, file_get_contents($url)); } catch (\Exception $e) { - \think\facade\Log::error(__METHOD__ . " File download failed [ {$url} ] {$e->getMessage()}"); + Log::error(__METHOD__ . " File download failed [ {$url} ] {$e->getMessage()}"); return ['url' => $url, 'hash' => md5($url), 'key' => $url, 'file' => $url]; } } @@ -175,13 +183,17 @@ class File /** * 文件储存初始化 * @param array $data - * @throws \think\Exception + * @throws Exception * @throws \think\exception\PDOException */ public static function init($data = []) { if (empty(self::$config) && function_exists('sysconf')) { - foreach (self::$params as $arr) foreach (array_keys($arr) as $key) $data[$key] = sysconf($key); + foreach (self::$params as $arr) { + foreach (array_keys($arr) as $key) { + $data[$key] = sysconf($key); + } + } } self::$config = new Options($data); } @@ -193,5 +205,5 @@ try { File::init(); // \think\facade\Log::info(__METHOD__ . ' File storage initialization success'); } catch (\Exception $e) { - \think\facade\Log::error(__METHOD__ . " File storage initialization exception. [{$e->getMessage()}]"); + Log::error(__METHOD__ . " File storage initialization exception. [{$e->getMessage()}]"); } diff --git a/vendor/zoujingli/think-library/src/common.php b/vendor/zoujingli/think-library/src/common.php index c7205f56e..5ee356146 100644 --- a/vendor/zoujingli/think-library/src/common.php +++ b/vendor/zoujingli/think-library/src/common.php @@ -12,6 +12,18 @@ // | github 仓库地址 :https://github.com/zoujingli/ThinkLibrary // +---------------------------------------------------------------------- +use library\tools\Crypt; +use library\tools\Csrf; +use library\tools\Data; +use library\tools\Emoji; +use library\tools\Http; +use library\tools\Node; +use think\Db; +use think\facade\Cache; +use think\facade\Middleware; +use think\facade\Response; +use think\Request; + if (!function_exists('p')) { /** * 打印输出数据到文件 @@ -21,7 +33,7 @@ if (!function_exists('p')) { */ function p($data, $force = false, $file = null) { - is_null($file) && $file = env('runtime_path') . date('Ymd') . '.txt'; + if (is_null($file)) $file = env('runtime_path') . date('Ymd') . '.txt'; $str = (is_string($data) ? $data : (is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . PHP_EOL; $force ? file_put_contents($file, $str) : file_put_contents($file, $str, FILE_APPEND); } @@ -37,8 +49,11 @@ if (!function_exists('format_datetime')) { function format_datetime($datetime, $format = 'Y年m月d日 H:i:s') { if (empty($datetime)) return '-'; - if (is_numeric($datetime)) return date($format, $datetime); - return date($format, strtotime($datetime)); + if (is_numeric($datetime)) { + return date($format, $datetime); + } else { + return date($format, strtotime($datetime)); + } } } @@ -57,18 +72,26 @@ if (!function_exists('sysconf')) { list($field, $raw) = explode('|', "{$name}|"); $key = md5(config('database.hostname') . '#' . config('database.database')); if ($value !== null) { - \think\facade\Cache::tag('system')->rm("_sysconfig_{$key}"); + Cache::tag('system')->rm("_sysconfig_{$key}"); list($row, $data) = [['name' => $field, 'value' => $value], []]; - return \library\tools\Data::save('SystemConfig', $row, 'name'); + return Data::save('SystemConfig', $row, 'name'); } if (empty($data)) { - $data = \think\facade\Cache::tag('system')->get("_sysconfig_{$key}", []); + $data = Cache::tag('system')->get("_sysconfig_{$key}", []); if (empty($data)) { - $data = \think\Db::name('SystemConfig')->column('name,value'); - \think\facade\Cache::tag('system')->set("_sysconfig_{$key}", $data, 60); + $data = Db::name('SystemConfig')->column('name,value'); + Cache::tag('system')->set("_sysconfig_{$key}", $data, 60); } } - return isset($data[$field]) ? (strtolower($raw) === 'raw' ? $data[$field] : htmlspecialchars($data[$field])) : ''; + if (isset($data[$field])) { + if (strtolower($raw) === 'raw') { + return $data[$field]; + } else { + return htmlspecialchars($data[$field]); + } + } else { + return ''; + } } } @@ -80,8 +103,7 @@ if (!function_exists('systoken')) { */ function systoken($node = null) { - $real = \library\tools\Node::get($node); - $csrf = \library\tools\Csrf::buildFormToken($real); + $csrf = Csrf::buildFormToken(Node::get($node)); return $csrf['token']; } } @@ -96,7 +118,7 @@ if (!function_exists('http_get')) { */ function http_get($url, $query = [], $options = []) { - return \library\tools\Http::get($url, $query, $options); + return Http::get($url, $query, $options); } } @@ -110,7 +132,7 @@ if (!function_exists('http_post')) { */ function http_post($url, $data, $options = []) { - return \library\tools\Http::post($url, $data, $options); + return Http::post($url, $data, $options); } } @@ -127,7 +149,7 @@ if (!function_exists('data_save')) { */ function data_save($dbQuery, $data, $key = 'id', $where = []) { - return \library\tools\Data::save($dbQuery, $data, $key, $where); + return Data::save($dbQuery, $data, $key, $where); } } @@ -144,7 +166,7 @@ if (!function_exists('data_batch_save')) { */ function data_batch_save($dbQuery, $data, $key = 'id', $where = []) { - return \library\tools\Data::batchSave($dbQuery, $data, $key, $where); + return Data::batchSave($dbQuery, $data, $key, $where); } } @@ -156,7 +178,7 @@ if (!function_exists('encode')) { */ function encode($content) { - return \library\tools\Crypt::encode($content); + return Crypt::encode($content); } } @@ -168,7 +190,7 @@ if (!function_exists('decode')) { */ function decode($content) { - return \library\tools\Crypt::decode($content); + return Crypt::decode($content); } } @@ -180,7 +202,7 @@ if (!function_exists('emoji_encode')) { */ function emoji_encode($content) { - return \library\tools\Emoji::encode($content); + return Emoji::encode($content); } } @@ -192,7 +214,7 @@ if (!function_exists('emoji_decode')) { */ function emoji_decode($content) { - return \library\tools\Emoji::decode($content); + return Emoji::decode($content); } } @@ -204,12 +226,12 @@ if (!function_exists('emoji_clear')) { */ function emoji_clear($content) { - return \library\tools\Emoji::clear($content); + return Emoji::clear($content); } } // 注册跨域中间键 -\think\facade\Middleware::add(function (\think\Request $request, \Closure $next, $header = []) { +Middleware::add(function (Request $request, \Closure $next, $header = []) { if (($origin = $request->header('origin', '*')) !== '*') { $header['Access-Control-Allow-Origin'] = $origin; $header['Access-Control-Allow-Methods'] = 'GET,POST,PATCH,PUT,DELETE'; @@ -217,7 +239,7 @@ if (!function_exists('emoji_clear')) { $header['Access-Control-Expose-Headers'] = 'User-Token-Csrf'; } if ($request->isOptions()) { - return \think\Response::create()->code(204)->header($header); + return Response::create()->code(204)->header($header); } else { return $next($request)->header($header); } diff --git a/vendor/zoujingli/think-library/src/driver/Oss.php b/vendor/zoujingli/think-library/src/driver/Oss.php index 1d2ac468c..39f651bb2 100644 --- a/vendor/zoujingli/think-library/src/driver/Oss.php +++ b/vendor/zoujingli/think-library/src/driver/Oss.php @@ -29,7 +29,7 @@ class Oss extends File /** * 检查文件是否已经存在 - * @param string $name + * @param string $name 文件名称 * @return boolean * @throws \OSS\Core\OssException */ @@ -41,7 +41,7 @@ class Oss extends File /** * 根据Key读取文件内容 - * @param string $name + * @param string $name 文件名称 * @return string * @throws \OSS\Core\OssException */ @@ -53,7 +53,7 @@ class Oss extends File /** * 获取文件当前URL地址 - * @param string $name 文件HASH名称 + * @param string $name 文件名称 * @return boolean|string * @throws \OSS\Core\OssException * @throws \think\Exception @@ -75,7 +75,7 @@ class Oss extends File /** * 获取阿里云对象存储URL前缀 - * @param string $name + * @param string $name 文件名称 * @return string * @throws \think\Exception */ @@ -89,14 +89,15 @@ class Oss extends File return "http://{$domain}/{$name}"; case 'auto': return "//{$domain}/{$name}"; + default: + throw new \think\Exception('未设置阿里云文件地址协议'); } - throw new \think\Exception('未设置阿里云文件地址协议'); } /** - * 阿里云OSS - * @param string $name - * @param string $content + * 阿里云OSS保存文件 + * @param string $name 文件名称 + * @param string $content 文件内容 * @return array|null */ public function save($name, $content) @@ -111,6 +112,47 @@ class Oss extends File } } + /** + * 获取文件路径 + * @param string $name 文件名称 + * @return string + */ + public function path($name) + { + return $name; + } + + /** + * 获取文件信息 + * @param string $name 文件名称 + * @return array|null + * @throws \OSS\Core\OssException + * @throws \think\Exception + */ + public function info($name) + { + $bucket = self::$config->get('storage_oss_bucket'); + $result = $this->getOssClient()->getObjectMeta($bucket, $name); + if (empty($result) || !isset($result['content-md5'])) return null; + return ['file' => $name, 'hash' => $result['content-md5'], 'url' => $this->base($name), 'key' => $name]; + } + + /** + * 删除文件 + * @param string $name 文件名称 + * @return boolean + */ + public function remove($name) + { + try { + $bucket = self::$config->get('storage_oss_bucket'); + $this->getOssClient()->deleteObject($bucket, $name); + return true; + } catch (\Exception $e) { + return false; + } + } + /** * 创建OSS空间名称 * @param string $bucket OSS空间名称 @@ -143,48 +185,6 @@ class Oss extends File return pathinfo($result['oss-request-url'], PATHINFO_BASENAME); } - /** - * 获取文件路径 - * @param string $name - * @return string - */ - public function path($name) - { - return $name; - } - - /** - * 获取文件信息 - * @param string $name - * @return array|null - * @throws \OSS\Core\OssException - * @throws \think\Exception - */ - public function info($name) - { - $bucket = self::$config->get('storage_oss_bucket'); - $result = $this->getOssClient()->getObjectMeta($bucket, $name); - if (empty($result) || !isset($result['content-md5'])) return null; - return ['file' => $name, 'hash' => $result['content-md5'], 'url' => $this->base($name), 'key' => $name]; - } - - /** - * 删除文件 - * @param string $name - * @return boolean - * @throws \Exception - */ - public function remove($name) - { - try { - $bucket = self::$config->get('storage_oss_bucket'); - $this->getOssClient()->deleteObject($bucket, $name); - } catch (\Exception $e) { - return false; - } - return true; - } - /** * 获取OssClient对象 * @return OssClient diff --git a/vendor/zoujingli/think-library/src/driver/Qiniu.php b/vendor/zoujingli/think-library/src/driver/Qiniu.php index 6401381e6..2fecb8036 100644 --- a/vendor/zoujingli/think-library/src/driver/Qiniu.php +++ b/vendor/zoujingli/think-library/src/driver/Qiniu.php @@ -40,7 +40,7 @@ class Qiniu extends File /** * 根据Key读取文件内容 - * @param string $name + * @param string $name 文件名称 * @return string * @throws \think\Exception */ @@ -51,8 +51,8 @@ class Qiniu extends File /** * 获取文件当前URL地址 - * @param string $name - * @return boolean|string + * @param string $name 文件名称 + * @return boolean|string|null * @throws \think\Exception */ public function url($name) @@ -66,7 +66,7 @@ class Qiniu extends File * @return string * @throws \think\Exception */ - public function upload($client = true) + public function upload($client = false) { $isHttps = !!self::$config->get('storage_qiniu_is_https'); switch (self::$config->get('storage_qiniu_region')) { @@ -89,7 +89,7 @@ class Qiniu extends File /** * 获取七牛云URL前缀 - * @param string $name + * @param string $name 文件名称 * @return string * @throws \think\Exception */ @@ -103,14 +103,15 @@ class Qiniu extends File return "http://{$domain}/{$name}"; case 'auto': return "//{$domain}/{$name}"; + default: + throw new \think\Exception('未配置七牛云URL前缀'); } - throw new \think\Exception('未设置七牛云文件地址协议'); } /** - * 七牛云存储 - * @param string $name - * @param string $content + * 七牛云存储文件 + * @param string $name 文件名称 + * @param string $content 文件内容 * @return array|null * @throws \think\Exception */ @@ -125,7 +126,7 @@ class Qiniu extends File /** * 获取文件路径 - * @param string $name + * @param string $name 文件名称 * @return string */ public function path($name) @@ -135,7 +136,7 @@ class Qiniu extends File /** * 获取文件信息 - * @param string $name + * @param string $name 文件名称 * @return array|null * @throws \think\Exception */ @@ -150,7 +151,7 @@ class Qiniu extends File /** * 删除文件 - * @param string $name + * @param string $name 文件名称 * @return boolean */ public function remove($name) @@ -160,6 +161,35 @@ class Qiniu extends File return empty($err); } + /** + * 获取空间列表 + * @return array + */ + public function getBucketList() + { + list($list, $err) = (new BucketManager($this->getAuth()))->buckets(true); + if (!empty($err)) throw new \Exception($err); + foreach ($list as &$bucket) { + list($domain, $err) = $this->getDomainList($bucket); + if (empty($err)) { + $bucket = ['bucket' => $bucket, 'domain' => $domain]; + } else { + throw new \Exception($err); + } + } + return $list; + } + + /** + * 获取空间绑定的域名列表 + * @param string $bucket 空间名称 + * @return array + */ + public function getDomainList($bucket) + { + return (new BucketManager($this->getAuth()))->domains($bucket); + } + /** * 获取接口Auth对象 * @return \Qiniu\Auth diff --git a/vendor/zoujingli/think-library/src/logic/Input.php b/vendor/zoujingli/think-library/src/logic/Input.php index 749d07a05..71183d99d 100644 --- a/vendor/zoujingli/think-library/src/logic/Input.php +++ b/vendor/zoujingli/think-library/src/logic/Input.php @@ -15,6 +15,7 @@ namespace library\logic; use library\Controller; +use think\Validate; /** * 输入管理器 @@ -84,7 +85,7 @@ class Input extends Logic public function init(Controller $controller) { $this->controller = $controller; - $validate = \think\Validate::make($this->rule, $this->info); + $validate = Validate::make($this->rule, $this->info); if ($validate->check($this->data)) { return $this->data; } else { diff --git a/vendor/zoujingli/think-library/src/logic/Page.php b/vendor/zoujingli/think-library/src/logic/Page.php index 8ac81b943..c51611c49 100644 --- a/vendor/zoujingli/think-library/src/logic/Page.php +++ b/vendor/zoujingli/think-library/src/logic/Page.php @@ -49,7 +49,7 @@ class Page extends Logic protected $isDisplay; /** - * ViewList constructor. + * Page constructor. * @param string $dbQuery 数据库查询对象 * @param boolean $isPage 是否启用分页 * @param boolean $isDisplay 是否渲染模板 @@ -68,7 +68,7 @@ class Page extends Logic /** * 逻辑器初始化 * @param Controller $controller - * @return mixed + * @return array * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException @@ -82,7 +82,7 @@ class Page extends Logic if ($this->controller->request->isPost()) $this->_sort(); // 未配置 order 规则时自动按 sort 字段排序 if (!$this->query->getOptions('order') && method_exists($this->query, 'getTableFields')) { - if (in_array('sort', $this->query->getTableFields())) $this->query->order('sort asc'); + if (in_array('sort', $this->query->getTableFields())) $this->query->order('sort desc'); } // 列表分页及结果集处理 if ($this->isPage) { diff --git a/vendor/zoujingli/think-library/src/tools/Csrf.php b/vendor/zoujingli/think-library/src/tools/Csrf.php index f08862d48..9ffb65829 100644 --- a/vendor/zoujingli/think-library/src/tools/Csrf.php +++ b/vendor/zoujingli/think-library/src/tools/Csrf.php @@ -14,6 +14,8 @@ namespace library\tools; +use think\exception\HttpResponseException; + /** * 表单CSRF表单令牌 * Class Csrf @@ -81,7 +83,7 @@ class Csrf */ public static function fetchTemplate($tpl = '', $vars = [], $node = null) { - throw new \think\exception\HttpResponseException(view($tpl, $vars, 200, function ($html) use ($node) { + throw new HttpResponseException(view($tpl, $vars, 200, function ($html) use ($node) { return preg_replace_callback('/<\/form>/i', function () use ($node) { $csrf = self::buildFormToken($node); return ""; diff --git a/vendor/zoujingli/think-library/src/tools/Data.php b/vendor/zoujingli/think-library/src/tools/Data.php index 2d2aee8e0..ee1c927da 100644 --- a/vendor/zoujingli/think-library/src/tools/Data.php +++ b/vendor/zoujingli/think-library/src/tools/Data.php @@ -39,9 +39,14 @@ class Data list($table, $value) = [$db->getTable(), isset($data[$key]) ? $data[$key] : null]; $map = isset($where[$key]) ? [] : (is_string($value) ? [[$key, 'in', explode(',', $value)]] : [$key => $value]); if (is_array($info = Db::table($table)->master()->where($where)->where($map)->find()) && !empty($info)) { - return Db::table($table)->strict(false)->where($where)->where($map)->update($data) !== false ? $info[$key] : false; + if (Db::table($table)->strict(false)->where($where)->where($map)->update($data) !== false) { + return isset($info[$key]) ? $info[$key] : true; + } else { + return false; + } + } else { + return Db::table($table)->strict(false)->insertGetId($data); } - return Db::table($table)->strict(false)->insertGetId($data); } /** diff --git a/vendor/zoujingli/think-library/src/tools/Node.php b/vendor/zoujingli/think-library/src/tools/Node.php index e1c8a514d..fac383e65 100644 --- a/vendor/zoujingli/think-library/src/tools/Node.php +++ b/vendor/zoujingli/think-library/src/tools/Node.php @@ -25,10 +25,21 @@ class Node { /** - * 控制器忽略函数 + * 忽略控制名的前缀 * @var array */ - protected static $ignore = ['initialize', 'success', 'error', 'redirect', 'fetch', 'assign', 'callback']; + private static $ignoreController = [ + 'api.', 'wap.', 'web.', + ]; + + /** + * 忽略控制的方法名 + * @var array + */ + private static $ignoreAction = [ + '_', 'redirect', 'assign', 'callback', + 'initialize', 'success', 'error', 'fetch', + ]; /** * 获取标准访问节点 @@ -39,13 +50,9 @@ class Node { if (empty($node)) return self::current(); if (count(explode('/', $node)) === 1) { - $preNode = Request::module() . '/' . Request::controller(); - return self::parseString($preNode) . '/' . strtolower($node); + $node = Request::module() . '/' . Request::controller() . '/' . $node; } - if (count($attr = explode('/', $node)) >= 3) { - $attr[1] = self::parseString($attr[1]); - } - return strtolower(join('/', $attr)); + return self::parseString(trim($node)); } /** @@ -54,34 +61,25 @@ class Node */ public static function current() { - $preNode = Request::module() . '/' . Request::controller(); - return self::parseString($preNode) . '/' . strtolower(Request::action()); + return self::parseString(Request::module() . '/' . Request::controller() . '/' . Request::action()); } /** - * 获取方法节点列表 + * 获取节点列表 * @param string $dir 控制器根路径 * @param array $nodes 额外数据 * @return array * @throws \ReflectionException */ - public static function getMethodTreeNode($dir, $nodes = []) + public static function getTree($dir, $nodes = []) { - foreach (self::scanDir($dir) as $file) { - list($matches, $filename) = [[], str_replace(DIRECTORY_SEPARATOR, '/', $file)]; - if (!preg_match('|/(\w+)/controller/(.+)|', $filename, $matches)) continue; - if (class_exists($classname = env('app_namespace') . str_replace('/', '\\', substr($matches[0], 0, -4)))) { - foreach ((new \ReflectionClass($classname))->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { - list($function, $comment) = [$method->getName(), $method->getDocComment()]; - if (stripos($function, '_') === 0 || in_array($function, self::$ignore)) continue; - $controller = str_replace('/', '.', substr($matches[2], 0, -4)); - if (stripos($controller, 'api.') !== false || stripos($controller, 'wap.') !== false) continue; - $node = self::parseString("{$matches[1]}/{$controller}") . '/' . strtolower($function); - $nodes[$node] = preg_replace('/^\/\*\*\*(.*?)\*.*?$/', '$1', preg_replace("/\s/", '', $comment)); - if (stripos($nodes[$node], '@') !== false) $nodes[$node] = ''; - } - } - } + self::eachController($dir, function (\ReflectionClass $reflection, $prenode) use (&$nodes) { + foreach ($reflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { + $action = strtolower($method->getName()); + foreach (self::$ignoreAction as $ignore) if (stripos($action, $ignore) === 0) continue 2; + $nodes[] = $prenode . $action; + }; + }); return $nodes; } @@ -94,41 +92,51 @@ class Node */ public static function getClassTreeNode($dir, $nodes = []) { - foreach (self::scanDir($dir) as $file) { - list($matches, $filename) = [[], str_replace(DIRECTORY_SEPARATOR, '/', $file)]; - if (!preg_match('|/(\w+)/controller/(.+)|', $filename, $matches)) continue; - if (class_exists($classname = env('app_namespace') . str_replace('/', '\\', substr($matches[0], 0, -4)))) { - $controller = str_replace('/', '.', substr($matches[2], 0, -4)); - if (stripos($controller, 'api.') !== false || stripos($controller, 'wap.') !== false) continue; - $node = self::parseString("{$matches[1]}/{$controller}"); - $comment = (new \ReflectionClass($classname))->getDocComment(); - $nodes[$node] = preg_replace('/^\/\*\*\*(.*?)\*.*?$/', '$1', preg_replace("/\s/", '', $comment)); - if (stripos($nodes[$node], '@') !== false) $nodes[$node] = ''; - } - } + self::eachController($dir, function (\ReflectionClass $reflection, $prenode) use (&$nodes) { + list($node, $comment) = [trim($prenode, '/'), $reflection->getDocComment()]; + $nodes[$node] = preg_replace('/^\/\*\*\*(.*?)\*.*?$/', '$1', preg_replace("/\s/", '', $comment)); + if (stripos($nodes[$node], '@') !== false) $nodes[$node] = ''; + }); return $nodes; } /** - * 获取节点列表 + * 获取方法节点列表 * @param string $dir 控制器根路径 * @param array $nodes 额外数据 * @return array + * @throws \ReflectionException */ - public static function getTree($dir, $nodes = []) + public static function getMethodTreeNode($dir, $nodes = []) { - foreach (self::scanDir($dir) as $file) { - list($matches, $filename) = [[], str_replace(DIRECTORY_SEPARATOR, '/', $file)]; - if (!preg_match('|/(\w+)/controller/(.+)|', $filename, $matches)) continue; - $classname = env('app_namespace') . str_replace('/', '\\', substr($matches[0], 0, -4)); - if (class_exists($classname)) foreach (get_class_methods($classname) as $function) { - if (stripos($function, '_') === 0 || in_array($function, self::$ignore)) continue; - $controller = str_replace('/', '.', substr($matches[2], 0, -4)); - if (stripos($controller, 'api.') !== false || stripos($controller, 'wap.') !== false) continue; - $nodes[] = self::parseString("{$matches[1]}/{$controller}") . '/' . strtolower($function); + self::eachController($dir, function (\ReflectionClass $reflection, $prenode) use (&$nodes) { + foreach ($reflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { + $action = strtolower($method->getName()); + foreach (self::$ignoreAction as $ignore) if (stripos($action, $ignore) === 0) continue 2; + $node = $prenode . $action; + $nodes[$node] = preg_replace('/^\/\*\*\*(.*?)\*.*?$/', '$1', preg_replace("/\s/", '', $method->getDocComment())); + if (stripos($nodes[$node], '@') !== false) $nodes[$node] = ''; + } + }); + return $nodes; + } + + /** + * 控制器扫描回调 + * @param string $dir + * @param callable $callable + * @throws \ReflectionException + */ + public static function eachController($dir, $callable) + { + foreach (Node::scanDir($dir) as $file) { + if (!preg_match("|/(\w+)/controller/(.+)\.php$|", strtr($file, '\\', '/'), $matches)) continue; + list($module, $controller) = [$matches[1], strtr($matches[2], '/', '.')]; + foreach (self::$ignoreController as $ignore) if (stripos($controller, $ignore) === 0) continue 2; + if (class_exists($class = substr(strtr(env('app_namespace') . $matches[0], '/', '\\'), 0, -4))) { + call_user_func($callable, new \ReflectionClass($class), Node::parseString("{$module}/{$controller}/")); } } - return $nodes; } /** @@ -138,13 +146,14 @@ class Node */ public static function parseString($node) { - $nodes = []; - foreach (explode('/', $node) as $str) { + if (count($nodes = explode('/', $node)) > 1) { $dots = []; - foreach (explode('.', $str) as $dot) array_push($dots, strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $dot), "_"))); - $nodes[] = join('.', $dots); + foreach (explode('.', $nodes[1]) as $dot) { + $dots[] = trim(preg_replace("/[A-Z]/", "_\\0", $dot), "_"); + } + $nodes[1] = join('.', $dots); } - return trim(join('/', $nodes), '/'); + return strtolower(join('/', $nodes)); } /** diff --git a/vendor/zoujingli/weopen-developer/WeMini/User.php b/vendor/zoujingli/weopen-developer/WeMini/User.php index d75208a2a..d3a1f8ffe 100644 --- a/vendor/zoujingli/weopen-developer/WeMini/User.php +++ b/vendor/zoujingli/weopen-developer/WeMini/User.php @@ -76,7 +76,7 @@ class User extends BasicWeChat */ public function get($appid) { - $url = "https://api.weixin.qq.com/cgi-bin/open/unbind?access_token=ACCESS_TOKEN"; + $url = "https://api.weixin.qq.com/cgi-bin/open/get?access_token=ACCESS_TOKEN"; $this->registerApi($url, __FUNCTION__, func_get_args()); return $this->httpPostForJson($url, ['appid' => $appid]); } diff --git a/vendor/zoujingli/weopen-developer/WeOpen/Login.php b/vendor/zoujingli/weopen-developer/WeOpen/Login.php index 5e6c4609f..2c45101c5 100644 --- a/vendor/zoujingli/weopen-developer/WeOpen/Login.php +++ b/vendor/zoujingli/weopen-developer/WeOpen/Login.php @@ -61,6 +61,7 @@ class Login /** * 第二步:通过code获取access_token * @return mixed + * @throws \WeChat\Exceptions\LocalCacheException */ public function getAccessToken() { @@ -75,6 +76,7 @@ class Login * 刷新AccessToken有效期 * @param string $refreshToken * @return array + * @throws \WeChat\Exceptions\LocalCacheException */ public function refreshToken($refreshToken) { @@ -88,6 +90,7 @@ class Login * @param string $accessToken 调用凭证 * @param string $openid 普通用户的标识,对当前开发者帐号唯一 * @return array + * @throws \WeChat\Exceptions\LocalCacheException */ public function checkAccessToken($accessToken, $openid) { @@ -100,6 +103,7 @@ class Login * @param string $accessToken 调用凭证 * @param string $openid 普通用户的标识,对当前开发者帐号唯一 * @return array + * @throws \WeChat\Exceptions\LocalCacheException */ public function getUserinfo($accessToken, $openid) { diff --git a/vendor/zoujingli/weopen-developer/WeOpen/Service.php b/vendor/zoujingli/weopen-developer/WeOpen/Service.php index 78ef53919..5d8558f5c 100644 --- a/vendor/zoujingli/weopen-developer/WeOpen/Service.php +++ b/vendor/zoujingli/weopen-developer/WeOpen/Service.php @@ -375,6 +375,7 @@ class Service * @param array $data 请求数据 * @param bool $buildToJson * @return array + * @throws \WeChat\Exceptions\LocalCacheException */ protected function httpPostForJson($url, array $data, $buildToJson = true) { @@ -385,6 +386,7 @@ class Service * 以GET获取接口数据并转为数组 * @param string $url 接口地址 * @return array + * @throws \WeChat\Exceptions\LocalCacheException */ protected function httpGetForJson($url) {